add precommit hook for linting and automatic eslint fixes + update eslint packages (#2862)

* chore: add precommit hook for eslint fixes, fix linting issues
* chore: add eslint import sort plugin
This commit is contained in:
Dominik 2022-06-08 14:10:25 +02:00 committed by GitHub
parent 39f5e4c31e
commit 8c6751f0c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
394 changed files with 1328 additions and 1042 deletions

View File

@ -20,6 +20,7 @@ module.exports = {
'html',
'cypress',
'@typescript-eslint',
'simple-import-sort',
],
env: {
'cypress/globals': true,
@ -90,6 +91,8 @@ module.exports = {
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/comma-dangle': ['error', 'always-multiline'],
'@typescript-eslint/explicit-module-boundary-types': 'off',
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},
],

4
.husky/pre-commit Executable file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run lint:fix

View File

@ -87,6 +87,7 @@
<script>
import { getDebugJSON } from '@tiptap/core'
import DemoFrame from './DemoFrame.vue'
import Shiki from './Shiki.vue'

View File

@ -4,11 +4,12 @@
</template>
<script>
import Worker from './shiki.worker?worker'
// this import is a bugfix
// otherwise the `onig.wasm` file is missing in the dist folder
import 'shiki/dist/onig.wasm?url'
import Worker from './shiki.worker?worker'
export default {
props: {
code: {

View File

@ -1,11 +1,13 @@
import 'iframe-resizer/js/iframeResizer.contentWindow'
import './style.css'
import { demos } from '@demos'
import iframeResize from 'iframe-resizer/js/iframeResizer'
import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import App from './index.vue'
import Demo from './Demo.vue'
import { demos } from '@demos'
import 'iframe-resizer/js/iframeResizer.contentWindow'
import iframeResize from 'iframe-resizer/js/iframeResizer'
import './style.css'
import App from './index.vue'
const routes = demos
.map(({ name, tabs }) => {

View File

@ -1,15 +1,15 @@
import * as shiki from 'shiki'
import onigasm from 'shiki/dist/onig.wasm?url'
import theme from 'shiki/themes/material-darker.json'
import langCSS from 'shiki/languages/css.tmLanguage.json'
import langHTML from 'shiki/languages/html.tmLanguage.json'
import langJS from 'shiki/languages/javascript.tmLanguage.json'
import langJSX from 'shiki/languages/jsx.tmLanguage.json'
import langTS from 'shiki/languages/typescript.tmLanguage.json'
import langTSX from 'shiki/languages/tsx.tmLanguage.json'
import langVueHTML from 'shiki/languages/vue-html.tmLanguage.json'
import langVue from 'shiki/languages/vue.tmLanguage.json'
import langCSS from 'shiki/languages/css.tmLanguage.json'
import langSCSS from 'shiki/languages/scss.tmLanguage.json'
import langTSX from 'shiki/languages/tsx.tmLanguage.json'
import langTS from 'shiki/languages/typescript.tmLanguage.json'
import langVue from 'shiki/languages/vue.tmLanguage.json'
import langVueHTML from 'shiki/languages/vue-html.tmLanguage.json'
import theme from 'shiki/themes/material-darker.json'
let highlighter = null

View File

@ -1,7 +1,8 @@
import 'iframe-resizer/js/iframeResizer.contentWindow'
import { debug } from './helper'
import './style.scss'
import { debug } from './helper'
export default function init(name: string, source: any) {
// @ts-ignore
window.source = source

View File

@ -1,8 +1,10 @@
import 'iframe-resizer/js/iframeResizer.contentWindow'
import './style.scss'
import React from 'react'
import { createRoot } from 'react-dom/client'
import 'iframe-resizer/js/iframeResizer.contentWindow'
import { debug, splitName } from './helper'
import './style.scss'
export default function init(name: string, source: any) {
// @ts-ignore

View File

@ -1,8 +1,10 @@
import { createApp } from 'vue'
import 'iframe-resizer/js/iframeResizer.contentWindow'
import { debug, splitName } from './helper'
import './style.scss'
import { createApp } from 'vue'
import { debug, splitName } from './helper'
export default function init(name: string, source: any) {
// @ts-ignore
window.source = source

View File

@ -1,10 +1,9 @@
import './styles.scss'
import React from 'react'
import Link from '@tiptap/extension-link'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
export default () => {
const editor = useEditor({

View File

@ -3,9 +3,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import Link from '@tiptap/extension-link'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,9 +1,11 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import { content } from '../content.js'
import './styles.scss'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
import { content } from '../content.js'
const MenuBar = ({ editor }) => {
if (!editor) {
return null

View File

@ -68,8 +68,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { content } from '../content.js'
export default {

View File

@ -1,9 +1,8 @@
import './styles.scss'
import React from 'react'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
import styles from './index.module.css'

View File

@ -68,8 +68,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import styles from './index.module.css'
export default {

View File

@ -1,7 +1,8 @@
import React from 'react'
import { NodeViewWrapper, NodeViewContent } from '@tiptap/react'
import './CodeBlockComponent.scss'
import { NodeViewContent, NodeViewWrapper } from '@tiptap/react'
import React from 'react'
export default ({ node: { attrs: { language: defaultLanguage } }, updateAttributes, extension }) => (
<NodeViewWrapper className="code-block">
<select contentEditable={false} defaultValue={defaultLanguage} onChange={event => updateAttributes({ language: event.target.value })}>

View File

@ -1,20 +1,20 @@
import React from 'react'
import { useEditor, EditorContent, ReactNodeViewRenderer } from '@tiptap/react'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'
import CodeBlockComponent from './CodeBlockComponent'
// load all highlight.js languages
import lowlight from 'lowlight'
// load specific languages only
// import lowlight from 'lowlight/lib/core'
// import javascript from 'highlight.js/lib/languages/javascript'
// lowlight.registerLanguage('javascript', javascript)
import './styles.scss'
import CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import { EditorContent, ReactNodeViewRenderer, useEditor } from '@tiptap/react'
// load all highlight.js languages
import lowlight from 'lowlight'
import React from 'react'
import CodeBlockComponent from './CodeBlockComponent'
const MenuBar = ({ editor }) => {
if (!editor) {
return null

View File

@ -16,7 +16,7 @@
</template>
<script>
import { NodeViewWrapper, NodeViewContent, nodeViewProps } from '@tiptap/vue-3'
import { NodeViewContent, nodeViewProps, NodeViewWrapper } from '@tiptap/vue-3'
export default {
components: {

View File

@ -8,16 +8,16 @@
</template>
<script>
import { Editor, EditorContent, VueNodeViewRenderer } from '@tiptap/vue-3'
import CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'
import CodeBlockComponent from './CodeBlockComponent.vue'
import { Editor, EditorContent, VueNodeViewRenderer } from '@tiptap/vue-3'
// load all highlight.js languages
import lowlight from 'lowlight'
import CodeBlockComponent from './CodeBlockComponent.vue'
// load specific languages only
// import lowlight from 'lowlight/lib/core'
// import javascript from 'highlight.js/lib/languages/javascript'

View File

@ -1,7 +1,9 @@
import React, { Fragment } from 'react'
import MenuItem from './MenuItem'
import './MenuBar.scss'
import React, { Fragment } from 'react'
import MenuItem from './MenuItem'
export default ({ editor }) => {
const items = [
{

View File

@ -1,5 +1,6 @@
import React from 'react'
import './MenuItem.scss'
import React from 'react'
import remixiconUrl from 'remixicon/fonts/remixicon.symbol.svg'
export default ({

View File

@ -1,18 +1,21 @@
import React, {
useState, useCallback, useEffect,
} from 'react'
import * as Y from 'yjs'
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import TaskList from '@tiptap/extension-task-list'
import TaskItem from '@tiptap/extension-task-item'
import Highlight from '@tiptap/extension-highlight'
import './styles.scss'
import { HocuspocusProvider } from '@hocuspocus/provider'
import CharacterCount from '@tiptap/extension-character-count'
import Collaboration from '@tiptap/extension-collaboration'
import CollaborationCursor from '@tiptap/extension-collaboration-cursor'
import { HocuspocusProvider } from '@hocuspocus/provider'
import Highlight from '@tiptap/extension-highlight'
import TaskItem from '@tiptap/extension-task-item'
import TaskList from '@tiptap/extension-task-list'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React, {
useCallback, useEffect,
useState,
} from 'react'
import * as Y from 'yjs'
import MenuBar from './MenuBar'
import './styles.scss'
const colors = ['#958DF1', '#F98181', '#FBBC88', '#FAF594', '#70CFF8', '#94FADB', '#B9F18D']
const rooms = ['rooms.30', 'rooms.31', 'rooms.32']

View File

@ -21,16 +21,17 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { HocuspocusProvider } from '@hocuspocus/provider'
import CharacterCount from '@tiptap/extension-character-count'
import Collaboration from '@tiptap/extension-collaboration'
import CollaborationCursor from '@tiptap/extension-collaboration-cursor'
import TaskList from '@tiptap/extension-task-list'
import TaskItem from '@tiptap/extension-task-item'
import Highlight from '@tiptap/extension-highlight'
import CharacterCount from '@tiptap/extension-character-count'
import TaskItem from '@tiptap/extension-task-item'
import TaskList from '@tiptap/extension-task-list'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import * as Y from 'yjs'
import { HocuspocusProvider } from '@hocuspocus/provider'
import MenuBar from './MenuBar.vue'
const getRandomElement = list => {

View File

@ -1,11 +1,12 @@
import React, {
useState,
useEffect,
forwardRef,
useImperativeHandle,
} from 'react'
import './MentionList.scss'
import React, {
forwardRef,
useEffect,
useImperativeHandle,
useState,
} from 'react'
export const MentionList = forwardRef((props, ref) => {
const [selectedIndex, setSelectedIndex] = useState(0)

View File

@ -1,12 +1,14 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import './styles.scss'
import CharacterCount from '@tiptap/extension-character-count'
import Document from '@tiptap/extension-document'
import Mention from '@tiptap/extension-mention'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import CharacterCount from '@tiptap/extension-character-count'
import Mention from '@tiptap/extension-mention'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
import suggestion from './suggestion'
import './styles.scss'
export default () => {
const limit = 280

View File

@ -1,6 +1,5 @@
import tippy from 'tippy.js'
import { ReactRenderer } from '@tiptap/react'
import tippy from 'tippy.js'
import { MentionList } from './MentionList'

View File

@ -37,12 +37,13 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import CharacterCount from '@tiptap/extension-character-count'
import Document from '@tiptap/extension-document'
import Mention from '@tiptap/extension-mention'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import CharacterCount from '@tiptap/extension-character-count'
import Mention from '@tiptap/extension-mention'
import { Editor, EditorContent } from '@tiptap/vue-3'
import suggestion from './suggestion'
export default {

View File

@ -1,6 +1,5 @@
import tippy from 'tippy.js'
import { VueRenderer } from '@tiptap/vue-3'
import tippy from 'tippy.js'
import MentionList from './MentionList.vue'

View File

@ -1,9 +1,10 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import './styles.scss'
import Document from '@tiptap/extension-document'
import Placeholder from '@tiptap/extension-placeholder'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import './styles.scss'
import React from 'react'
const CustomDocument = Document.extend({
content: 'heading block*',

View File

@ -3,10 +3,10 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Document from '@tiptap/extension-document'
import Placeholder from '@tiptap/extension-placeholder'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
const CustomDocument = Document.extend({
content: 'heading block*',

View File

@ -1,8 +1,9 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import './styles.scss'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
const MenuBar = ({ editor }) => {
if (!editor) {
return null

View File

@ -68,8 +68,8 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
export default {
components: {

View File

@ -26,9 +26,9 @@
</template>
<script>
import { NodeViewWrapper, nodeViewProps } from '@tiptap/vue-3'
import { v4 as uuid } from 'uuid'
import { nodeViewProps, NodeViewWrapper } from '@tiptap/vue-3'
import * as d3 from 'd3'
import { v4 as uuid } from 'uuid'
const getRandomElement = list => {
return list[Math.floor(Math.random() * list.length)]

View File

@ -1,4 +1,5 @@
import { VueNodeViewRenderer, Node, mergeAttributes } from '@tiptap/vue-3'
import { mergeAttributes, Node, VueNodeViewRenderer } from '@tiptap/vue-3'
import Component from './Component.vue'
export default Node.create({

View File

@ -3,9 +3,10 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Document from '@tiptap/extension-document'
import Text from '@tiptap/extension-text'
import { Editor, EditorContent } from '@tiptap/vue-3'
import Paper from './Paper'
export default {

View File

@ -1,10 +1,11 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import TextAlign from '@tiptap/extension-text-align'
import Highlight from '@tiptap/extension-highlight'
import './styles.scss'
import Highlight from '@tiptap/extension-highlight'
import TextAlign from '@tiptap/extension-text-align'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
const MenuBar = ({ editor }) => {
if (!editor) {
return null

View File

@ -41,10 +41,10 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import TextAlign from '@tiptap/extension-text-align'
import Highlight from '@tiptap/extension-highlight'
import TextAlign from '@tiptap/extension-text-align'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,13 +1,12 @@
import './styles.scss'
import React from 'react'
import Document from '@tiptap/extension-document'
import Dropcursor from '@tiptap/extension-dropcursor'
import Image from '@tiptap/extension-image'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
export default () => {
const editor = useEditor({

View File

@ -6,12 +6,12 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Document from '@tiptap/extension-document'
import Dropcursor from '@tiptap/extension-dropcursor'
import Image from '@tiptap/extension-image'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Image from '@tiptap/extension-image'
import Dropcursor from '@tiptap/extension-dropcursor'
import { Editor, EditorContent } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,5 +1,5 @@
import React from 'react'
import { NodeViewWrapper } from '@tiptap/react'
import React from 'react'
export default props => {
const increase = () => {

View File

@ -1,5 +1,6 @@
import { Node, mergeAttributes } from '@tiptap/core'
import { mergeAttributes, Node } from '@tiptap/core'
import { ReactNodeViewRenderer } from '@tiptap/react'
import Component from './Component.jsx'
export default Node.create({

View File

@ -1,9 +1,11 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import ReactComponent from './Extension.js'
import './styles.scss'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
import ReactComponent from './Extension.js'
export default () => {
const editor = useEditor({
extensions: [

View File

@ -9,7 +9,7 @@
</template>
<script>
import { NodeViewWrapper, nodeViewProps } from '@tiptap/vue-3'
import { nodeViewProps, NodeViewWrapper } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,5 +1,6 @@
import { Node, mergeAttributes } from '@tiptap/core'
import { mergeAttributes, Node } from '@tiptap/core'
import { VueNodeViewRenderer } from '@tiptap/vue-3'
import Component from './Component.vue'
export default Node.create({

View File

@ -3,8 +3,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import VueComponent from './Extension.js'
export default {

View File

@ -1,5 +1,5 @@
import { NodeViewContent, NodeViewWrapper } from '@tiptap/react'
import React from 'react'
import { NodeViewWrapper, NodeViewContent } from '@tiptap/react'
export default () => {
return (

View File

@ -1,5 +1,6 @@
import { Node, mergeAttributes } from '@tiptap/core'
import { mergeAttributes, Node } from '@tiptap/core'
import { ReactNodeViewRenderer } from '@tiptap/react'
import Component from './Component.jsx'
export default Node.create({

View File

@ -1,9 +1,11 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import ReactComponent from './Extension.js'
import './styles.scss'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
import ReactComponent from './Extension.js'
export default () => {
const editor = useEditor({
extensions: [

View File

@ -6,7 +6,7 @@
</template>
<script>
import { NodeViewWrapper, NodeViewContent, nodeViewProps } from '@tiptap/vue-3'
import { NodeViewContent, nodeViewProps, NodeViewWrapper } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,5 +1,6 @@
import { Node, mergeAttributes } from '@tiptap/core'
import { mergeAttributes, Node } from '@tiptap/core'
import { VueNodeViewRenderer } from '@tiptap/vue-3'
import Component from './Component.vue'
export default Node.create({

View File

@ -3,8 +3,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import VueComponent from './Extension.js'
export default {

View File

@ -1,9 +1,10 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import './styles.scss'
import Highlight from '@tiptap/extension-highlight'
import Typography from '@tiptap/extension-typography'
import './styles.scss'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
export default () => {
const editor = useEditor({

View File

@ -3,10 +3,10 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import Highlight from '@tiptap/extension-highlight'
import Typography from '@tiptap/extension-typography'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,12 +1,13 @@
import React from 'react'
import './styles.scss'
import {
useEditor,
EditorContent,
BubbleMenu,
EditorContent,
FloatingMenu,
useEditor,
} from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import './styles.scss'
import React from 'react'
export default () => {
const editor = useEditor({

View File

@ -37,13 +37,13 @@
</template>
<script>
import StarterKit from '@tiptap/starter-kit'
import {
BubbleMenu,
Editor,
EditorContent,
BubbleMenu,
FloatingMenu,
} from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
export default {
components: {

View File

@ -1,9 +1,10 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import './styles.scss'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import './styles.scss'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
export default () => {
const editor = useEditor({

View File

@ -3,10 +3,10 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import { Editor, EditorContent } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,5 +1,6 @@
import { Extension } from '@tiptap/core'
import { Plugin } from 'prosemirror-state'
import findColors from './findColors'
export const ColorHighlighter = Extension.create({

View File

@ -1,5 +1,5 @@
import { Decoration, DecorationSet } from 'prosemirror-view'
import { Node } from 'prosemirror-model'
import { Decoration, DecorationSet } from 'prosemirror-view'
export default function (doc: Node): DecorationSet {
const hexColor = /(#[0-9a-f]{3,6})\b/gi

View File

@ -1,13 +1,15 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import './styles.scss'
import Code from '@tiptap/extension-code'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Code from '@tiptap/extension-code'
import Typography from '@tiptap/extension-typography'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
import { ColorHighlighter } from './ColorHighlighter'
import { SmilieReplacer } from './SmilieReplacer'
import './styles.scss'
export default () => {
const editor = useEditor({

View File

@ -1,5 +1,6 @@
import { Extension } from '@tiptap/core'
import { Plugin } from 'prosemirror-state'
import findColors from './findColors'
export const ColorHighlighter = Extension.create({

View File

@ -1,5 +1,5 @@
import { Decoration, DecorationSet } from 'prosemirror-view'
import { Node } from 'prosemirror-model'
import { Decoration, DecorationSet } from 'prosemirror-view'
export default function (doc: Node): DecorationSet {
const hexColor = /(#[0-9a-f]{3,6})\b/ig

View File

@ -3,12 +3,13 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Code from '@tiptap/extension-code'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Code from '@tiptap/extension-code'
import Typography from '@tiptap/extension-typography'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { ColorHighlighter } from './ColorHighlighter'
import { SmilieReplacer } from './SmilieReplacer'

View File

@ -1,11 +1,12 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import './styles.scss'
import Table from '@tiptap/extension-table'
import TableRow from '@tiptap/extension-table-row'
import TableCell from '@tiptap/extension-table-cell'
import TableHeader from '@tiptap/extension-table-header'
import './styles.scss'
import TableRow from '@tiptap/extension-table-row'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
const CustomTableCell = TableCell.extend({
addAttributes() {

View File

@ -59,12 +59,12 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import Table from '@tiptap/extension-table'
import TableRow from '@tiptap/extension-table-row'
import TableCell from '@tiptap/extension-table-cell'
import TableHeader from '@tiptap/extension-table-header'
import TableRow from '@tiptap/extension-table-row'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
const CustomTableCell = TableCell.extend({
addAttributes() {

View File

@ -1,11 +1,12 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import './styles.scss'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import TaskList from '@tiptap/extension-task-list'
import TaskItem from '@tiptap/extension-task-item'
import './styles.scss'
import TaskList from '@tiptap/extension-task-list'
import Text from '@tiptap/extension-text'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
const CustomDocument = Document.extend({
content: 'taskList',

View File

@ -3,12 +3,12 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import TaskList from '@tiptap/extension-task-list'
import TaskItem from '@tiptap/extension-task-item'
import TaskList from '@tiptap/extension-task-list'
import Text from '@tiptap/extension-text'
import { Editor, EditorContent } from '@tiptap/vue-3'
const CustomDocument = Document.extend({
content: 'taskList',

View File

@ -70,43 +70,42 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Blockquote from '@tiptap/extension-blockquote'
import Bold from '@tiptap/extension-bold'
import BulletList from '@tiptap/extension-bullet-list'
import Code from '@tiptap/extension-code'
import CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'
import Color from '@tiptap/extension-color'
import Document from '@tiptap/extension-document'
import Dropcursor from '@tiptap/extension-dropcursor'
import Gapcursor from '@tiptap/extension-gapcursor'
import HardBreak from '@tiptap/extension-hard-break'
import Heading from '@tiptap/extension-heading'
import Highlight from '@tiptap/extension-highlight'
import History from '@tiptap/extension-history'
import HorizontalRule from '@tiptap/extension-horizontal-rule'
import Image from '@tiptap/extension-image'
import Italic from '@tiptap/extension-italic'
import Link from '@tiptap/extension-link'
import ListItem from '@tiptap/extension-list-item'
import Mention from '@tiptap/extension-mention'
import OrderedList from '@tiptap/extension-ordered-list'
import Paragraph from '@tiptap/extension-paragraph'
import Placeholder from '@tiptap/extension-placeholder'
import Strike from '@tiptap/extension-strike'
import Text from '@tiptap/extension-text'
import Underline from '@tiptap/extension-underline'
import Superscript from '@tiptap/extension-superscript'
import Subscript from '@tiptap/extension-subscript'
import Link from '@tiptap/extension-link'
import Mention from '@tiptap/extension-mention'
import Superscript from '@tiptap/extension-superscript'
import Table from '@tiptap/extension-table'
import TableRow from '@tiptap/extension-table-row'
import TableCell from '@tiptap/extension-table-cell'
import TableHeader from '@tiptap/extension-table-header'
import Image from '@tiptap/extension-image'
import TaskList from '@tiptap/extension-task-list'
import TableRow from '@tiptap/extension-table-row'
import TaskItem from '@tiptap/extension-task-item'
import Placeholder from '@tiptap/extension-placeholder'
import TaskList from '@tiptap/extension-task-list'
import Text from '@tiptap/extension-text'
import TextAlign from '@tiptap/extension-text-align'
import TextStyle from '@tiptap/extension-text-style'
import Color from '@tiptap/extension-color'
import Highlight from '@tiptap/extension-highlight'
import Underline from '@tiptap/extension-underline'
import { Editor, EditorContent } from '@tiptap/vue-3'
import lowlight from 'lowlight'
export default {

View File

@ -1,5 +1,6 @@
import * as Y from 'yjs'
import { Plugin, PluginKey } from 'prosemirror-state'
import * as Y from 'yjs'
import { AnnotationState } from './AnnotationState'
export const AnnotationPluginKey = new PluginKey('annotation')

View File

@ -1,10 +1,11 @@
import * as Y from 'yjs'
import { EditorState, Transaction } from 'prosemirror-state'
import { Decoration, DecorationSet } from 'prosemirror-view'
import { ySyncPluginKey, relativePositionToAbsolutePosition, absolutePositionToRelativePosition } from 'y-prosemirror'
import { AddAnnotationAction, DeleteAnnotationAction, UpdateAnnotationAction } from './collaboration-annotation'
import { AnnotationPluginKey } from './AnnotationPlugin'
import { absolutePositionToRelativePosition, relativePositionToAbsolutePosition, ySyncPluginKey } from 'y-prosemirror'
import * as Y from 'yjs'
import { AnnotationItem } from './AnnotationItem'
import { AnnotationPluginKey } from './AnnotationPlugin'
import { AddAnnotationAction, DeleteAnnotationAction, UpdateAnnotationAction } from './collaboration-annotation'
export interface AnnotationStateOptions {
HTMLAttributes: {
@ -91,6 +92,7 @@ export class AnnotationState {
return
}
// eslint-disable-next-line
console.log(`[${this.options.instance}] Decoration.inline()`, from, to, HTMLAttributes, { id, data: annotation.data })
if (from === to) {
@ -110,6 +112,7 @@ export class AnnotationState {
const action = transaction.getMeta(AnnotationPluginKey) as AddAnnotationAction | UpdateAnnotationAction | DeleteAnnotationAction
if (action && action.type) {
// eslint-disable-next-line
console.log(`[${this.options.instance}] action: ${action.type}`)
if (action.type === 'addAnnotation') {
@ -136,6 +139,7 @@ export class AnnotationState {
const ystate = ySyncPluginKey.getState(state)
if (ystate.isChangeOrigin) {
// eslint-disable-next-line
console.log(`[${this.options.instance}] isChangeOrigin: true → createDecorations`)
this.createDecorations(state)
@ -143,6 +147,7 @@ export class AnnotationState {
}
// Use ProseMirror to update positions
// eslint-disable-next-line
console.log(`[${this.options.instance}] isChangeOrigin: false → ProseMirror mapping`)
this.decorations = this.decorations.map(transaction.mapping, transaction.doc)

View File

@ -1,5 +1,6 @@
import * as Y from 'yjs'
import { Extension } from '@tiptap/core'
import * as Y from 'yjs'
import { AnnotationPlugin, AnnotationPluginKey } from './AnnotationPlugin'
export interface AddAnnotationAction {
@ -81,6 +82,7 @@ export const CollaborationAnnotation = Extension.create<AnnotationOptions>({
const map = getMapFromOptions(this.options)
map.observe(() => {
// eslint-disable-next-line
console.log(`[${this.options.instance}] map updated → createDecorations`)
const transaction = this.editor.state.tr.setMeta(AnnotationPluginKey, {

View File

@ -32,14 +32,15 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Bold from '@tiptap/extension-bold'
import Collaboration from '@tiptap/extension-collaboration'
import Document from '@tiptap/extension-document'
import Heading from '@tiptap/extension-heading'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Collaboration from '@tiptap/extension-collaboration'
import Bold from '@tiptap/extension-bold'
import Heading from '@tiptap/extension-heading'
import { Editor, EditorContent } from '@tiptap/vue-3'
import * as Y from 'yjs'
import CollaborationAnnotation from './extension'
export default {

View File

@ -5,8 +5,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import Commands from './commands'
import suggestion from './suggestion'

View File

@ -1,6 +1,5 @@
import tippy from 'tippy.js'
import { VueRenderer } from '@tiptap/vue-3'
import tippy from 'tippy.js'
import CommandsList from './CommandsList.vue'

View File

@ -9,8 +9,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import Iframe from './iframe'
export default {

View File

@ -1,10 +1,12 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import './styles.scss'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
import { CustomExtension } from './CustomExtension'
import './styles.scss'
export default () => {
const editor = useEditor({

View File

@ -4,10 +4,11 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { CustomExtension } from './CustomExtension'
export default {

View File

@ -1,8 +1,8 @@
import {
findChildrenInRange,
mergeAttributes,
Node,
nodeInputRule,
mergeAttributes,
findChildrenInRange,
Tracker,
} from '@tiptap/core'

View File

@ -23,9 +23,10 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import Image from '@tiptap/extension-image'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { Figure } from './figure'
export default {

View File

@ -1,4 +1,4 @@
import { Node, mergeAttributes } from '@tiptap/core'
import { mergeAttributes, Node } from '@tiptap/core'
export const Figcaption = Node.create({
name: 'figcaption',

View File

@ -1,4 +1,4 @@
import { Node, mergeAttributes } from '@tiptap/core'
import { mergeAttributes, Node } from '@tiptap/core'
import { Plugin } from 'prosemirror-state'
export const Figure = Node.create({

View File

@ -17,15 +17,16 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import Image from '@tiptap/extension-image'
import Table from '@tiptap/extension-table'
import TableRow from '@tiptap/extension-table-row'
import TableCell from '@tiptap/extension-table-cell'
import TableHeader from '@tiptap/extension-table-header'
import { Figure } from './figure'
import TableRow from '@tiptap/extension-table-row'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { Figcaption } from './figcaption'
import { Figure } from './figure'
const ImageFigure = Figure.extend({
name: 'capturedImage',

View File

@ -5,8 +5,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import DragHandle from './DragHandle.js'
export default {
@ -37,6 +38,7 @@ export default {
<pre>code</pre>
`,
onUpdate: () => {
// eslint-disable-next-line
console.log(this.editor.getHTML())
},
})

View File

@ -1,7 +1,8 @@
import { Extension } from '@tiptap/core'
import { Decoration, DecorationSet } from 'prosemirror-view'
import { Plugin, PluginKey, TextSelection } from 'prosemirror-state'
import { Node as ProsemirrorNode } from 'prosemirror-model'
import { Plugin, PluginKey, TextSelection } from 'prosemirror-state'
import { Decoration, DecorationSet } from 'prosemirror-view'
import LinterPlugin, { Result as Issue } from './LinterPlugin'
interface IconDivElement extends HTMLDivElement {
@ -26,10 +27,12 @@ function runAllLinterPlugins(doc: ProsemirrorNode, plugins: Array<typeof LinterP
}).flat()
results.forEach(issue => {
decorations.push(Decoration.inline(issue.from, issue.to, {
class: 'problem',
}),
Decoration.widget(issue.from, renderIcon(issue)))
decorations.push(
Decoration.inline(issue.from, issue.to, {
class: 'problem',
}),
Decoration.widget(issue.from, renderIcon(issue)),
)
})
return DecorationSet.create(doc, decorations)

View File

@ -4,5 +4,5 @@ export * from './Linter'
export default Linter
export { BadWords } from './plugins/BadWords'
export { Punctuation } from './plugins/Punctuation'
export { HeadingLevel } from './plugins/HeadingLevel'
export { Punctuation } from './plugins/Punctuation'

View File

@ -15,7 +15,8 @@ export class BadWords extends LinterPlugin {
if (matches) {
this.record(
`Try not to say '${matches[0]}'`,
position + matches.index, position + matches.index + matches[0].length,
position + matches.index,
position + matches.index + matches[0].length,
)
}
})

View File

@ -1,4 +1,5 @@
import { EditorView } from 'prosemirror-view'
import LinterPlugin, { Result as Issue } from '../LinterPlugin'
export class HeadingLevel extends LinterPlugin {
@ -17,9 +18,12 @@ export class HeadingLevel extends LinterPlugin {
const { level } = node.attrs
if (lastHeadLevel != null && level > lastHeadLevel + 1) {
this.record(`Heading too small (${level} under ${lastHeadLevel})`,
position + 1, position + 1 + node.content.size,
this.fixHeader(lastHeadLevel + 1))
this.record(
`Heading too small (${level} under ${lastHeadLevel})`,
position + 1,
position + 1 + node.content.size,
this.fixHeader(lastHeadLevel + 1),
)
}
lastHeadLevel = level
}

View File

@ -1,4 +1,5 @@
import { EditorView } from 'prosemirror-view'
import LinterPlugin, { Result as Issue } from '../LinterPlugin'
export class Punctuation extends LinterPlugin {
@ -8,7 +9,8 @@ export class Punctuation extends LinterPlugin {
return function ({ state, dispatch }: EditorView, issue: Issue) {
dispatch(
state.tr.replaceWith(
issue.from, issue.to,
issue.from,
issue.to,
state.schema.text(replacement),
),
)
@ -30,7 +32,8 @@ export class Punctuation extends LinterPlugin {
if (matches) {
this.record(
'Suspicious spacing around punctuation',
position + matches.index, position + matches.index + matches[0].length,
position + matches.index,
position + matches.index + matches[0].length,
this.fix(`${matches[1]} `),
)
}

View File

@ -5,12 +5,13 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Document from '@tiptap/extension-document'
import Text from '@tiptap/extension-text'
import Paragraph from '@tiptap/extension-paragraph'
import Heading from '@tiptap/extension-heading'
import Linter, { BadWords, Punctuation, HeadingLevel } from './extension'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import { Editor, EditorContent } from '@tiptap/vue-3'
import Linter, { BadWords, HeadingLevel, Punctuation } from './extension'
export default {
components: {

View File

@ -28,16 +28,16 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Bold from '@tiptap/extension-bold'
import Collaboration from '@tiptap/extension-collaboration'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Bold from '@tiptap/extension-bold'
import TaskList from '@tiptap/extension-task-list'
import TaskItem from '@tiptap/extension-task-item'
import Collaboration from '@tiptap/extension-collaboration'
import * as Y from 'yjs'
import TaskList from '@tiptap/extension-task-list'
import Text from '@tiptap/extension-text'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { yDocToProsemirrorJSON } from 'y-prosemirror'
import * as Y from 'yjs'
const ParagraphDocument = Document.extend({
content: 'paragraph',

View File

@ -5,8 +5,9 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { TrailingNode } from './trailing-node'
export default {

View File

@ -1,5 +1,5 @@
import { Extension } from '@tiptap/core'
import { PluginKey, Plugin } from 'prosemirror-state'
import { Plugin, PluginKey } from 'prosemirror-state'
// @ts-ignore
function nodeEqualsType({ types, node }) {

View File

@ -1,8 +1,9 @@
import React from 'react'
import { useEditor, EditorContent, BubbleMenu } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import './styles.scss'
import { BubbleMenu, EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import React from 'react'
export default () => {
const editor = useEditor({
extensions: [

View File

@ -16,8 +16,8 @@
</template>
<script>
import { Editor, EditorContent, BubbleMenu } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
import { BubbleMenu, Editor, EditorContent } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,10 +1,11 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import './styles.scss'
import CharacterCount from '@tiptap/extension-character-count'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import CharacterCount from '@tiptap/extension-character-count'
import './styles.scss'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
const limit = 280

View File

@ -11,11 +11,11 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import CharacterCount from '@tiptap/extension-character-count'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import CharacterCount from '@tiptap/extension-character-count'
import { Editor, EditorContent } from '@tiptap/vue-3'
export default {
components: {

View File

@ -1,13 +1,14 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import './styles.scss'
import Collaboration from '@tiptap/extension-collaboration'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Collaboration from '@tiptap/extension-collaboration'
import Placeholder from '@tiptap/extension-placeholder'
import * as Y from 'yjs'
import Text from '@tiptap/extension-text'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
import { WebrtcProvider } from 'y-webrtc'
import './styles.scss'
import * as Y from 'yjs'
const ydoc = new Y.Doc()

View File

@ -3,14 +3,14 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Collaboration from '@tiptap/extension-collaboration'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Collaboration from '@tiptap/extension-collaboration'
import Placeholder from '@tiptap/extension-placeholder'
import * as Y from 'yjs'
import Text from '@tiptap/extension-text'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { WebrtcProvider } from 'y-webrtc'
import * as Y from 'yjs'
export default {
components: {

View File

@ -1,14 +1,15 @@
import React from 'react'
import { useEditor, EditorContent } from '@tiptap/react'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import './styles.scss'
import Collaboration from '@tiptap/extension-collaboration'
import CollaborationCursor from '@tiptap/extension-collaboration-cursor'
import * as Y from 'yjs'
import { WebrtcProvider } from 'y-webrtc'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Placeholder from '@tiptap/extension-placeholder'
import './styles.scss'
import Text from '@tiptap/extension-text'
import { EditorContent, useEditor } from '@tiptap/react'
import React from 'react'
import { WebrtcProvider } from 'y-webrtc'
import * as Y from 'yjs'
const ydoc = new Y.Doc()
const provider = new WebrtcProvider('tiptap-collaboration-cursor-extension', ydoc)

View File

@ -3,15 +3,15 @@
</template>
<script>
import { Editor, EditorContent } from '@tiptap/vue-3'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Collaboration from '@tiptap/extension-collaboration'
import CollaborationCursor from '@tiptap/extension-collaboration-cursor'
import * as Y from 'yjs'
import { WebrtcProvider } from 'y-webrtc'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Placeholder from '@tiptap/extension-placeholder'
import Text from '@tiptap/extension-text'
import { Editor, EditorContent } from '@tiptap/vue-3'
import { WebrtcProvider } from 'y-webrtc'
import * as Y from 'yjs'
export default {
components: {

Some files were not shown because too many files have changed in this diff Show More