From 1d0356d4f50ea5222440b7157a05381081bbe8fc Mon Sep 17 00:00:00 2001 From: fantasticit Date: Mon, 16 May 2022 17:23:59 +0800 Subject: [PATCH] root: fix eslint --- .eslintrc.server.js | 19 --- package.json | 18 +-- packages/client/.eslintignore | 7 + .../client/.eslintrc.js | 24 ++- packages/client/package.json | 9 ++ packages/client/src/components/author.tsx | 2 +- .../client/src/components/banner/index.tsx | 4 +- .../src/components/data-render/index.tsx | 3 +- .../src/components/data-render/loading.tsx | 2 +- .../src/components/document-creator/index.tsx | 6 +- .../src/components/document/actions/index.tsx | 10 +- .../src/components/document/card/index.tsx | 15 +- .../document/collaboration/index.tsx | 36 ++--- .../document/comments/comments/Item/index.tsx | 7 +- .../document/comments/comments/index.tsx | 3 +- .../components/document/comments/index.tsx | 11 +- .../src/components/document/create/index.tsx | 13 +- .../src/components/document/delete/index.tsx | 6 +- .../src/components/document/editor/editor.tsx | 13 +- .../src/components/document/editor/index.tsx | 27 ++-- .../src/components/document/editor/users.tsx | 4 +- .../src/components/document/link/index.tsx | 4 +- .../src/components/document/reader/author.tsx | 6 +- .../src/components/document/reader/index.tsx | 35 ++--- .../document/reader/public/index.tsx | 37 ++--- .../src/components/document/share/index.tsx | 10 +- .../src/components/document/star/index.tsx | 4 +- .../src/components/document/style/index.tsx | 7 +- .../src/components/document/version/index.tsx | 13 +- .../src/components/emoji-picker/index.tsx | 9 +- packages/client/src/components/empty.tsx | 2 +- .../components/grid-select/grid-select.tsx | 3 +- .../src/components/icons/IconDocument.tsx | 2 +- .../src/components/icons/IconDocumentFill.tsx | 2 +- .../src/components/icons/IconMessage.tsx | 2 +- .../src/components/icons/IconOverview.tsx | 2 +- .../src/components/icons/IconSearch.tsx | 2 +- .../src/components/icons/IconSetting.tsx | 2 +- .../client/src/components/icons/IconShare.tsx | 2 +- .../client/src/components/icons/index.tsx | 100 ++++++------- .../src/components/locale-time/index.tsx | 4 +- packages/client/src/components/logo/index.tsx | 3 +- .../client/src/components/message/index.tsx | 19 +-- .../src/components/resizeable/resizeable.tsx | 3 +- .../client/src/components/search/index.tsx | 27 ++-- .../src/components/template/card/index.tsx | 11 +- .../src/components/template/editor/editor.tsx | 13 +- .../src/components/template/editor/index.tsx | 17 ++- .../src/components/template/list/index.tsx | 4 +- .../src/components/template/reader/index.tsx | 6 +- .../client/src/components/theme/index.tsx | 6 +- .../client/src/components/tooltip/index.tsx | 2 +- .../client/src/components/upload/index.tsx | 4 +- packages/client/src/components/user/index.tsx | 5 +- .../src/components/user/setting/index.tsx | 2 +- .../src/components/wiki-creator/index.tsx | 4 +- .../wiki-or-document-creator/index.tsx | 12 +- .../client/src/components/wiki/card/index.tsx | 7 +- .../src/components/wiki/create/index.tsx | 6 +- .../src/components/wiki/delete/index.tsx | 6 +- .../components/wiki/documents-share/index.tsx | 9 +- .../src/components/wiki/pin-card/index.tsx | 7 +- .../src/components/wiki/placeholder/index.tsx | 2 +- .../components/wiki/setting/base/index.tsx | 7 +- .../src/components/wiki/setting/index.tsx | 7 +- .../components/wiki/setting/more/index.tsx | 2 +- .../src/components/wiki/setting/users/add.tsx | 4 +- .../components/wiki/setting/users/edit.tsx | 4 +- .../components/wiki/setting/users/index.tsx | 13 +- .../wiki/setting/users/placeholder.tsx | 2 +- .../client/src/components/wiki/star/index.tsx | 4 +- .../client/src/components/wiki/tocs/index.tsx | 19 +-- .../components/wiki/tocs/manager/index.tsx | 5 +- .../src/components/wiki/tocs/nav-item.tsx | 5 +- .../src/components/wiki/tocs/public.tsx | 17 ++- .../client/src/components/wiki/tocs/tree.tsx | 11 +- packages/client/src/data/comment.ts | 4 +- packages/client/src/data/document.ts | 8 +- packages/client/src/data/message.ts | 4 +- packages/client/src/data/template.ts | 2 +- packages/client/src/data/user.tsx | 10 +- packages/client/src/data/wiki.tsx | 2 +- packages/client/src/event/index.ts | 2 +- packages/client/src/helpers/copy.tsx | 3 +- packages/client/src/helpers/lru-cache.ts | 2 +- .../client/src/hooks/use-async-loading.tsx | 2 +- .../client/src/hooks/use-document-style.ts | 2 +- .../client/src/hooks/use-dragable-width.ts | 6 +- packages/client/src/hooks/use-window-size.tsx | 2 +- .../src/layouts/double-column/index.tsx | 9 +- .../layouts/public-double-column/index.tsx | 9 +- .../src/layouts/router-header/index.tsx | 17 ++- .../src/layouts/router-header/recent.tsx | 19 +-- .../client/src/layouts/router-header/wiki.tsx | 15 +- .../src/layouts/single-column/index.tsx | 3 +- packages/client/src/pages/_app.tsx | 9 +- .../client/src/pages/feature/editor/index.tsx | 8 +- packages/client/src/pages/find/index.tsx | 12 +- packages/client/src/pages/index.tsx | 27 ++-- packages/client/src/pages/login/index.tsx | 11 +- packages/client/src/pages/register/index.tsx | 13 +- .../share/document/[documentId]/index.tsx | 4 +- .../[wikiId]/document/[documentId]/index.tsx | 8 +- .../src/pages/share/wiki/[wikiId]/index.tsx | 10 +- packages/client/src/pages/star/index.tsx | 19 +-- .../src/pages/template/[templateId]/index.tsx | 2 +- packages/client/src/pages/template/index.tsx | 11 +- .../document/[documentId]/edit/index.tsx | 2 +- .../[wikiId]/document/[documentId]/index.tsx | 6 +- .../pages/wiki/[wikiId]/documents/index.tsx | 24 +-- .../client/src/pages/wiki/[wikiId]/index.tsx | 10 +- .../src/pages/wiki/[wikiId]/setting/index.tsx | 8 +- packages/client/src/pages/wiki/index.tsx | 16 +- packages/client/src/services/document.ts | 1 + packages/client/src/services/http-client.tsx | 2 +- packages/client/src/services/user.ts | 1 + .../tiptap/components/color-picker/index.tsx | 9 +- .../client/src/tiptap/components/size.tsx | 4 +- .../client/src/tiptap/components/skeleton.tsx | 2 +- .../src/tiptap/core/extensions/attachment.ts | 4 +- .../core/extensions/background-color.ts | 3 +- .../src/tiptap/core/extensions/blockquote.ts | 4 +- .../src/tiptap/core/extensions/callout.ts | 2 +- .../src/tiptap/core/extensions/code-block.ts | 6 +- .../cursor-plugin/index.ts | 7 +- .../extensions/collaboration-cursor/index.ts | 3 +- .../extensions/collaboration/collaboration.ts | 2 +- .../collaboration/helpers/is-change-origin.ts | 2 +- .../src/tiptap/core/extensions/countdown.ts | 2 +- .../core/extensions/document-children.ts | 2 +- .../core/extensions/document-reference.ts | 2 +- .../src/tiptap/core/extensions/emoji.ts | 2 +- .../client/src/tiptap/core/extensions/flow.ts | 2 +- .../src/tiptap/core/extensions/focus.ts | 2 +- .../src/tiptap/core/extensions/font-size.ts | 3 +- .../tiptap/core/extensions/horizontal-rule.ts | 2 +- .../src/tiptap/core/extensions/html-marks.ts | 4 +- .../src/tiptap/core/extensions/iframe.ts | 2 +- .../src/tiptap/core/extensions/indent.ts | 6 +- .../src/tiptap/core/extensions/katex.ts | 2 +- .../src/tiptap/core/extensions/mention.ts | 4 +- .../client/src/tiptap/core/extensions/mind.ts | 2 +- .../src/tiptap/core/extensions/paste.ts | 10 +- .../tiptap/core/extensions/quick-insert.tsx | 6 +- .../src/tiptap/core/extensions/search.ts | 4 +- .../src/tiptap/core/extensions/selection.ts | 4 +- .../src/tiptap/core/extensions/status.ts | 2 +- .../src/tiptap/core/extensions/table-cell.tsx | 2 +- .../core/extensions/table-of-contents.ts | 4 +- .../src/tiptap/core/extensions/table.ts | 4 +- .../src/tiptap/core/extensions/title.tsx | 2 +- .../tiptap/core/extensions/trailing-node.ts | 2 +- .../core/wrappers/attachment/file-icon.tsx | 2 +- .../tiptap/core/wrappers/attachment/index.tsx | 13 +- .../core/wrappers/attachment/player/index.tsx | 9 +- .../attachment/player/pdf-player/index.tsx | 3 +- .../tiptap/core/wrappers/callout/index.tsx | 5 +- .../tiptap/core/wrappers/code-block/index.tsx | 9 +- .../tiptap/core/wrappers/countdown/index.tsx | 3 +- .../core/wrappers/document-children/index.tsx | 13 +- .../wrappers/document-reference/index.tsx | 7 +- .../tiptap/core/wrappers/emoji-list/index.tsx | 3 +- .../src/tiptap/core/wrappers/flow/index.tsx | 9 +- .../src/tiptap/core/wrappers/iframe/index.tsx | 7 +- .../src/tiptap/core/wrappers/image/index.tsx | 9 +- .../src/tiptap/core/wrappers/katex/index.tsx | 13 +- .../src/tiptap/core/wrappers/loading.tsx | 2 +- .../core/wrappers/mention-list/index.tsx | 3 +- .../tiptap/core/wrappers/menu-list/index.tsx | 5 +- .../src/tiptap/core/wrappers/mind/index.tsx | 9 +- .../wrappers/mind/mind-elixir/customLink.ts | 2 +- .../core/wrappers/mind/mind-elixir/index.ts | 106 +++++++------- .../core/wrappers/mind/mind-elixir/linkDiv.ts | 6 +- .../mind/mind-elixir/nodeOperation.ts | 35 +++-- .../mind/mind-elixir/plugin/nodeDraggable.ts | 2 +- .../mind/mind-elixir/plugin/nodeMenu.tsx | 15 +- .../mind/mind-elixir/plugin/toolBar.tsx | 14 +- .../src/tiptap/core/wrappers/status/index.tsx | 5 +- .../core/wrappers/table-of-contents/index.tsx | 7 +- .../tiptap/core/wrappers/task-item/index.tsx | 3 +- .../collaboration/collaboration/editor.tsx | 17 ++- .../collaboration/collaboration/index.tsx | 13 +- .../collaboration/collaboration/menubar.tsx | 62 ++++---- .../src/tiptap/editor/collaboration/index.tsx | 4 +- .../src/tiptap/editor/collaboration/kit.ts | 44 +++--- .../tiptap/editor/collaboration/reader.tsx | 5 +- .../client/src/tiptap/editor/comment/kit.ts | 13 +- .../src/tiptap/editor/comment/menubar.tsx | 30 ++-- .../src/tiptap/editor/hooks/use-active.tsx | 2 +- .../tiptap/editor/hooks/use-attributes.tsx | 2 +- .../client/src/tiptap/editor/menus/_event.ts | 2 +- .../src/tiptap/editor/menus/align/index.tsx | 8 +- .../tiptap/editor/menus/attachment/bubble.tsx | 10 +- .../tiptap/editor/menus/attachment/index.tsx | 1 + .../editor/menus/background-color/index.tsx | 12 +- .../tiptap/editor/menus/blockquote/index.tsx | 10 +- .../src/tiptap/editor/menus/bold/index.tsx | 10 +- .../tiptap/editor/menus/bullet-list/index.tsx | 8 +- .../tiptap/editor/menus/callout/bubble.tsx | 11 +- .../src/tiptap/editor/menus/callout/index.tsx | 1 + .../menus/clear-node-and-marks/index.tsx | 4 +- .../tiptap/editor/menus/code-block/bubble.tsx | 10 +- .../tiptap/editor/menus/code-block/index.tsx | 1 + .../src/tiptap/editor/menus/code/index.tsx | 10 +- .../tiptap/editor/menus/countdown/bubble.tsx | 13 +- .../tiptap/editor/menus/countdown/index.tsx | 1 + .../tiptap/editor/menus/countdown/modal.tsx | 7 +- .../tiptap/editor/menus/countdown/service.ts | 1 + .../editor/menus/document-children/bubble.tsx | 10 +- .../editor/menus/document-children/index.tsx | 1 + .../menus/document-reference/bubble.tsx | 14 +- .../editor/menus/document-reference/index.tsx | 1 + .../src/tiptap/editor/menus/emoji/index.tsx | 8 +- .../src/tiptap/editor/menus/flow/bubble.tsx | 13 +- .../src/tiptap/editor/menus/flow/index.tsx | 1 + .../src/tiptap/editor/menus/flow/modal.tsx | 9 +- .../tiptap/editor/menus/fontsize/index.tsx | 4 +- .../src/tiptap/editor/menus/heading/index.tsx | 6 +- .../editor/menus/horizontal-rule/index.tsx | 8 +- .../src/tiptap/editor/menus/ident/index.tsx | 8 +- .../src/tiptap/editor/menus/iframe/bubble.tsx | 16 +- .../src/tiptap/editor/menus/iframe/index.tsx | 1 + .../src/tiptap/editor/menus/image/bubble.tsx | 16 +- .../src/tiptap/editor/menus/image/index.tsx | 1 + .../src/tiptap/editor/menus/insert/index.tsx | 43 +++--- .../src/tiptap/editor/menus/italic/index.tsx | 10 +- .../src/tiptap/editor/menus/link/bubble.tsx | 11 +- .../src/tiptap/editor/menus/link/index.tsx | 13 +- .../src/tiptap/editor/menus/link/modal.tsx | 7 +- .../src/tiptap/editor/menus/link/service.ts | 1 + .../src/tiptap/editor/menus/mind/bubble.tsx | 14 +- .../src/tiptap/editor/menus/mind/index.tsx | 1 + .../editor/menus/ordered-list/index.tsx | 8 +- .../src/tiptap/editor/menus/quick-insert.tsx | 29 ++-- .../src/tiptap/editor/menus/redo/index.tsx | 6 +- .../src/tiptap/editor/menus/search/index.tsx | 12 +- .../src/tiptap/editor/menus/strike/index.tsx | 10 +- .../tiptap/editor/menus/subscript/index.tsx | 6 +- .../tiptap/editor/menus/superscript/index.tsx | 6 +- .../src/tiptap/editor/menus/table/bubble.tsx | 18 +-- .../tiptap/editor/menus/table/col-bubble.tsx | 8 +- .../src/tiptap/editor/menus/table/index.tsx | 3 +- .../tiptap/editor/menus/table/row-bubble.tsx | 8 +- .../tiptap/editor/menus/task-list/index.tsx | 10 +- .../tiptap/editor/menus/text-color/index.tsx | 14 +- .../src/tiptap/editor/menus/text/index.tsx | 41 +++--- .../tiptap/editor/menus/underline/index.tsx | 8 +- .../src/tiptap/editor/menus/undo/index.tsx | 6 +- .../client/src/tiptap/editor/react/index.tsx | 7 +- .../src/tiptap/editor/react/useEditor.tsx | 2 +- .../views/bubble-menu/bubble-menu-plugin.tsx | 2 +- .../tiptap/editor/views/bubble-menu/index.tsx | 1 + .../html-to-prosemirror/all-kit.tsx | 36 ++--- .../html-to-prosemirror/renderer.ts | 67 +++++---- .../markdown-to-html/index.ts | 15 +- .../markdown-to-html/markdownItContainer.ts | 2 +- .../markdown/prosemirror-to-markdown/index.ts | 19 +-- .../client/src/tiptap/prose-utils/code.ts | 3 +- .../client/src/tiptap/prose-utils/color.ts | 2 +- .../src/tiptap/prose-utils/copy-node.ts | 2 +- .../client/src/tiptap/prose-utils/index.ts | 4 +- .../src/tiptap/prose-utils/lowlight-plugin.ts | 4 +- .../client/src/tiptap/prose-utils/table.ts | 2 +- .../client/src/tiptap/prose-utils/upload.ts | 3 +- packages/server/.eslintignore | 5 + packages/server/.eslintrc.js | 29 ++++ packages/server/package.json | 7 + packages/server/src/app.module.ts | 43 +++--- .../src/controllers/collector.controller.ts | 14 +- .../src/controllers/comment.controller.ts | 13 +- .../src/controllers/document.controller.ts | 30 ++-- .../server/src/controllers/file.controller.ts | 2 +- .../src/controllers/message.controller.ts | 10 +- .../src/controllers/template.controller.ts | 12 +- .../server/src/controllers/user.controller.ts | 30 ++-- .../server/src/controllers/wiki.controller.ts | 36 ++--- packages/server/src/dtos/collect.dto.ts | 2 +- .../server/src/dtos/create-document.dto.ts | 2 +- packages/server/src/dtos/doc-auth.dto.ts | 2 +- .../server/src/dtos/share-document.dto.ts | 2 +- packages/server/src/dtos/share-wiki.dto.ts | 2 +- packages/server/src/dtos/template.dto.ts | 2 +- .../server/src/dtos/update-document.dto.ts | 2 +- packages/server/src/dtos/wiki-user.dto.ts | 2 +- .../server/src/entities/collector.entity.ts | 2 +- .../server/src/entities/comment.entity.ts | 2 +- .../server/src/entities/document.entity.ts | 4 +- .../server/src/entities/message.entity.ts | 2 +- packages/server/src/entities/user.entity.ts | 6 +- packages/server/src/entities/view.entity.ts | 2 +- .../server/src/entities/wiki-user.entity.ts | 2 +- packages/server/src/entities/wiki.entity.ts | 4 +- .../src/exceptions/http-response.exception.ts | 4 +- .../server/src/guard/document-auth.guard.ts | 6 +- .../server/src/guard/document-status.guard.ts | 4 +- packages/server/src/guard/jwt.guard.ts | 2 +- .../server/src/guard/wiki-status.guard.ts | 4 +- packages/server/src/guard/wiki-user.guard.ts | 6 +- packages/server/src/helpers/aliyun.helper.ts | 2 +- .../server/src/helpers/date.helper.spec.ts | 8 + packages/server/src/helpers/date.helper.ts | 7 +- packages/server/src/helpers/tree.helper.ts | 8 +- packages/server/src/helpers/ua.helper.ts | 1 - packages/server/src/main.ts | 11 +- .../server/src/modules/collector.module.ts | 10 +- packages/server/src/modules/comment.module.ts | 12 +- .../server/src/modules/document.module.ts | 20 +-- packages/server/src/modules/file.module.ts | 2 +- packages/server/src/modules/message.module.ts | 10 +- .../server/src/modules/template.module.ts | 12 +- packages/server/src/modules/user.module.ts | 24 +-- packages/server/src/modules/view.module.ts | 4 +- packages/server/src/modules/wiki.module.ts | 16 +- packages/server/src/pipes/validation.pipe.ts | 4 +- .../src/services/collaboration.service.ts | 16 +- .../server/src/services/collector.service.ts | 12 +- .../server/src/services/comment.service.ts | 14 +- .../src/services/document-version.service.ts | 14 +- .../server/src/services/document.service.ts | 28 ++-- packages/server/src/services/file.service.ts | 6 +- .../server/src/services/message.service.ts | 8 +- .../server/src/services/template.service.ts | 21 +-- packages/server/src/services/user.service.ts | 22 +-- packages/server/src/services/view.service.ts | 6 +- packages/server/src/services/wiki.service.ts | 26 ++-- .../src/transforms/http-response.transform.ts | 6 +- packages/server/test/app.e2e-spec.ts | 3 +- pnpm-lock.yaml | 137 ++++++++---------- 328 files changed, 1650 insertions(+), 1541 deletions(-) delete mode 100644 .eslintrc.server.js create mode 100644 packages/client/.eslintignore rename .eslintrc.client.js => packages/client/.eslintrc.js (63%) create mode 100644 packages/server/.eslintignore create mode 100644 packages/server/.eslintrc.js create mode 100644 packages/server/src/helpers/date.helper.spec.ts diff --git a/.eslintrc.server.js b/.eslintrc.server.js deleted file mode 100644 index 93a5328d..00000000 --- a/.eslintrc.server.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - project: './packages/server/tsconfig.json', - sourceType: 'module', - }, - plugins: ['@typescript-eslint/eslint-plugin'], - extends: ['plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], - root: true, - env: { - node: true, - jest: true, - }, - rules: { - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/no-explicit-any': 'off', - }, -}; diff --git a/package.json b/package.json index 59f1c61e..dc12bcd5 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,8 @@ "pm2:server": "pnpm run --dir packages/server pm2", "pm2:client": "pnpm run --dir packages/client pm2", "lint": "concurrently 'pnpm:lint:*'", - "lint:client": "eslint --fix './packages/client/**/*.{ts,tsx,js,jsx}' -c '.eslintrc.client.js'", - "lint:server": "eslint --fix './packages/server/src/*.{ts,js}' -c '.eslintrc.server.js'", + "lint:client": "eslint --fix './packages/client/**/*.{ts,tsx,js,jsx}'", + "lint:server": "eslint --fix './packages/server/**/*.{ts,js}'", "format": "concurrently 'pnpm:format:*'", "format:ts": "prettier --write --parser typescript 'packages/**/*.{ts,tsx,js,jsx}'", "format:css": "stylelint --fix --formatter verbose --allow-empty-input 'packages/**/*.{css,scss,sass}'", @@ -39,16 +39,6 @@ "node": ">=16.5.0" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.21.0", - "@typescript-eslint/parser": "^5.21.0", - "eslint": "^8.14.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.29.4", - "eslint-plugin-react-hooks": "^4.5.0", - "eslint-plugin-simple-import-sort": "^7.0.0", "husky": "^7.0.4", "lint-staged": "^12.4.1", "prettier": "^2.3.2", @@ -64,10 +54,10 @@ "lint-staged": { "*.{ts,tsx,js,jsx}": "prettier --write", "./packages/client/**/*.{ts,tsx,js,jsx}": [ - "eslint --fix -c '.eslintrc.client.js'" + "eslint --fix" ], "./packages/server/src/*.{ts,js}": [ - "eslint --fix -c '.eslintrc.server.js'" + "eslint --fix" ], "*.{css,scss,sass}": " stylelint --fix --formatter verbose --allow-empty-input" } diff --git a/packages/client/.eslintignore b/packages/client/.eslintignore new file mode 100644 index 00000000..70095245 --- /dev/null +++ b/packages/client/.eslintignore @@ -0,0 +1,7 @@ +node_modules +**/.next/** +**/_next/** +**/dist/** +.eslintrc.js +./packages/client/src/tiptap/wrappers/mind/mind-elixir/iconfont/iconfont.js +./packages/client/public/viewer.min.js diff --git a/.eslintrc.client.js b/packages/client/.eslintrc.js similarity index 63% rename from .eslintrc.client.js rename to packages/client/.eslintrc.js index 3cc8f37e..11f4dc36 100644 --- a/.eslintrc.client.js +++ b/packages/client/.eslintrc.js @@ -1,19 +1,31 @@ module.exports = { parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint', 'react-hooks'], - extends: ['eslint:recommended', 'plugin:react/recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], + plugins: ['@typescript-eslint', 'react-hooks', 'simple-import-sort', 'prettier'], + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], overrides: [ { files: ['*.ts', '*.tsx', '.js', '.jsx'], parserOptions: { project: ['./packages/client/tsconfig.json'], + sourceType: 'module', }, }, ], settings: { - react: { + 'react': { version: 'detect', }, + 'import/resolver': { + node: { + paths: ['src'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + }, }, env: { es6: true, @@ -40,6 +52,12 @@ module.exports = { 'react/prop-types': 0, 'testing-library/no-unnecessary-act': 0, 'react/react-in-jsx-scope': 0, + 'prettier/prettier': ['error', {}, { usePrettierrc: true }], + 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', }, ignorePatterns: ['dist/', 'node_modules', 'scripts', 'examples'], }; diff --git a/packages/client/package.json b/packages/client/package.json index bfe92824..ac441af4 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -94,6 +94,15 @@ "devDependencies": { "@types/node": "17.0.13", "@types/react": "17.0.38", + "@typescript-eslint/eslint-plugin": "^5.21.0", + "@typescript-eslint/parser": "^5.21.0", + "eslint": "^8.14.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react-hooks": "^4.5.0", + "eslint-plugin-simple-import-sort": "^7.0.0", "tsconfig-paths-webpack-plugin": "^3.5.2", "typescript": "4.5.5" } diff --git a/packages/client/src/components/author.tsx b/packages/client/src/components/author.tsx index 2070fcad..112515d9 100644 --- a/packages/client/src/components/author.tsx +++ b/packages/client/src/components/author.tsx @@ -1,5 +1,5 @@ -import { Space, Typography } from '@douyinfe/semi-ui'; import { IconLikeHeart } from '@douyinfe/semi-icons'; +import { Space, Typography } from '@douyinfe/semi-ui'; const { Text } = Typography; diff --git a/packages/client/src/components/banner/index.tsx b/packages/client/src/components/banner/index.tsx index 4538cbab..bd56e8dd 100644 --- a/packages/client/src/components/banner/index.tsx +++ b/packages/client/src/components/banner/index.tsx @@ -1,8 +1,8 @@ -import React, { useEffect, useRef } from 'react'; -import { Banner as SemiBanner } from '@douyinfe/semi-ui'; import { IconClose } from '@douyinfe/semi-icons'; +import { Banner as SemiBanner } from '@douyinfe/semi-ui'; import { BannerProps } from '@douyinfe/semi-ui/banner'; import { useToggle } from 'hooks/use-toggle'; +import React, { useEffect, useRef } from 'react'; interface IProps extends BannerProps { duration?: number; diff --git a/packages/client/src/components/data-render/index.tsx b/packages/client/src/components/data-render/index.tsx index 78465e76..acf4575a 100644 --- a/packages/client/src/components/data-render/index.tsx +++ b/packages/client/src/components/data-render/index.tsx @@ -1,6 +1,7 @@ -import React from 'react'; import { Spin, Typography } from '@douyinfe/semi-ui'; import { Empty } from 'illustrations/empty'; +import React from 'react'; + import { LoadingWrap } from './loading'; type RenderProps = React.ReactNode | (() => React.ReactNode); diff --git a/packages/client/src/components/data-render/loading.tsx b/packages/client/src/components/data-render/loading.tsx index 480c6273..8940de68 100644 --- a/packages/client/src/components/data-render/loading.tsx +++ b/packages/client/src/components/data-render/loading.tsx @@ -1,5 +1,5 @@ -import React, { useEffect, useRef } from 'react'; import { useToggle } from 'hooks/use-toggle'; +import React, { useEffect, useRef } from 'react'; // interface IProps { // loading: boolean; diff --git a/packages/client/src/components/document-creator/index.tsx b/packages/client/src/components/document-creator/index.tsx index 7138487e..03b2bc81 100644 --- a/packages/client/src/components/document-creator/index.tsx +++ b/packages/client/src/components/document-creator/index.tsx @@ -1,8 +1,8 @@ -import React from 'react'; import { Button } from '@douyinfe/semi-ui'; -import { useToggle } from 'hooks/use-toggle'; -import { useQuery } from 'hooks/use-query'; import { DocumentCreator as DocumenCreatorForm } from 'components/document/create'; +import { useQuery } from 'hooks/use-query'; +import { useToggle } from 'hooks/use-toggle'; +import React from 'react'; interface IProps { onCreateDocument?: () => void; diff --git a/packages/client/src/components/document/actions/index.tsx b/packages/client/src/components/document/actions/index.tsx index 82a1443a..abee6b1b 100644 --- a/packages/client/src/components/document/actions/index.tsx +++ b/packages/client/src/components/document/actions/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Dropdown, Button, Typography, Space } from '@douyinfe/semi-ui'; -import { IconMore, IconStar, IconPlus } from '@douyinfe/semi-icons'; -import { DocumentLinkCopyer } from 'components/document/link'; -import { DocumentDeletor } from 'components/document/delete'; +import { IconMore, IconPlus, IconStar } from '@douyinfe/semi-icons'; +import { Button, Dropdown, Space, Typography } from '@douyinfe/semi-ui'; import { DocumentCreator } from 'components/document/create'; +import { DocumentDeletor } from 'components/document/delete'; +import { DocumentLinkCopyer } from 'components/document/link'; import { DocumentStar } from 'components/document/star'; import { useToggle } from 'hooks/use-toggle'; +import React, { useCallback } from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/document/card/index.tsx b/packages/client/src/components/document/card/index.tsx index 70617444..ebc5f45d 100644 --- a/packages/client/src/components/document/card/index.tsx +++ b/packages/client/src/components/document/card/index.tsx @@ -1,13 +1,14 @@ -import type { IDocument } from '@think/domains'; -import { useCallback } from 'react'; -import Router from 'next/router'; -import Link from 'next/link'; -import { Button, Space, Typography, Tooltip, Avatar, Skeleton } from '@douyinfe/semi-ui'; import { IconEdit, IconUser } from '@douyinfe/semi-icons'; -import { LocaleTime } from 'components/locale-time'; -import { IconDocument } from 'components/icons/IconDocument'; +import { Avatar, Button, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui'; +import type { IDocument } from '@think/domains'; import { DocumentShare } from 'components/document/share'; import { DocumentStar } from 'components/document/star'; +import { IconDocument } from 'components/icons/IconDocument'; +import { LocaleTime } from 'components/locale-time'; +import Link from 'next/link'; +import Router from 'next/router'; +import { useCallback } from 'react'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/components/document/collaboration/index.tsx b/packages/client/src/components/document/collaboration/index.tsx index 95c5b939..9d1a9635 100644 --- a/packages/client/src/components/document/collaboration/index.tsx +++ b/packages/client/src/components/document/collaboration/index.tsx @@ -1,27 +1,27 @@ -import React, { useEffect, useState } from 'react'; +import { IconDelete, IconUserAdd } from '@douyinfe/semi-icons'; import { - Button, - Modal, - Spin, - Input, - Typography, - Tooltip, - Table, - Tabs, - TabPane, - Checkbox, - Toast, - Popconfirm, - AvatarGroup, Avatar, + AvatarGroup, + Button, + Checkbox, + Input, + Modal, + Popconfirm, + Spin, + Table, + TabPane, + Tabs, + Toast, + Tooltip, + Typography, } from '@douyinfe/semi-ui'; -import { IconUserAdd, IconDelete } from '@douyinfe/semi-icons'; -import { useUser } from 'data/user'; -import { useToggle } from 'hooks/use-toggle'; -import { useCollaborationDocument } from 'data/document'; import { DataRender } from 'components/data-render'; import { DocumentLinkCopyer } from 'components/document/link'; +import { useCollaborationDocument } from 'data/document'; +import { useUser } from 'data/user'; import { event, JOIN_USER } from 'event'; +import { useToggle } from 'hooks/use-toggle'; +import React, { useEffect, useState } from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/document/comments/comments/Item/index.tsx b/packages/client/src/components/document/comments/comments/Item/index.tsx index dd469068..4e6525c4 100644 --- a/packages/client/src/components/document/comments/comments/Item/index.tsx +++ b/packages/client/src/components/document/comments/comments/Item/index.tsx @@ -1,9 +1,10 @@ -import React from 'react'; -import type { IComment, IUser } from '@think/domains'; -import { Avatar, Typography, Space, Popconfirm, Skeleton } from '@douyinfe/semi-ui'; import { IconUser } from '@douyinfe/semi-icons'; +import { Avatar, Popconfirm, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; +import type { IComment, IUser } from '@think/domains'; import { LocaleTime } from 'components/locale-time'; import { useUser } from 'data/user'; +import React from 'react'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/components/document/comments/comments/index.tsx b/packages/client/src/components/document/comments/comments/index.tsx index 273ce446..608e2687 100644 --- a/packages/client/src/components/document/comments/comments/index.tsx +++ b/packages/client/src/components/document/comments/comments/index.tsx @@ -1,5 +1,6 @@ -import React from 'react'; import type { IComment } from '@think/domains'; +import React from 'react'; + import { CommentItem } from './Item'; interface IProps { diff --git a/packages/client/src/components/document/comments/index.tsx b/packages/client/src/components/document/comments/index.tsx index 74912aa5..9bb812b1 100644 --- a/packages/client/src/components/document/comments/index.tsx +++ b/packages/client/src/components/document/comments/index.tsx @@ -1,10 +1,11 @@ -import React, { useRef, useState } from 'react'; -import { Avatar, Button, Space, Typography, Banner, Pagination } from '@douyinfe/semi-ui'; -import { useToggle } from 'hooks/use-toggle'; -import { CommentKit, CommentMenuBar, useEditor, EditorContent } from 'tiptap/editor'; +import { Avatar, Banner, Button, Pagination, Space, Typography } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; -import { useUser } from 'data/user'; import { useComments } from 'data/comment'; +import { useUser } from 'data/user'; +import { useToggle } from 'hooks/use-toggle'; +import React, { useRef, useState } from 'react'; +import { CommentKit, CommentMenuBar, EditorContent, useEditor } from 'tiptap/editor'; + import { Comments } from './comments'; import { CommentItemPlaceholder } from './comments/Item'; import styles from './index.module.scss'; diff --git a/packages/client/src/components/document/create/index.tsx b/packages/client/src/components/document/create/index.tsx index cd6a9e2c..e252a0ba 100644 --- a/packages/client/src/components/document/create/index.tsx +++ b/packages/client/src/components/document/create/index.tsx @@ -1,10 +1,11 @@ -import { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react'; -import Router from 'next/router'; -import { Modal, Tabs, TabPane, Checkbox } from '@douyinfe/semi-ui'; -import { useCreateDocument } from 'data/document'; -import { usePublicTemplates, useOwnTemplates } from 'data/template'; -import { TemplateList } from 'components/template/list'; +import { Checkbox, Modal, TabPane, Tabs } from '@douyinfe/semi-ui'; import { TemplateCardEmpty } from 'components/template/card'; +import { TemplateList } from 'components/template/list'; +import { useCreateDocument } from 'data/document'; +import { useOwnTemplates, usePublicTemplates } from 'data/template'; +import Router from 'next/router'; +import { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/components/document/delete/index.tsx b/packages/client/src/components/document/delete/index.tsx index ba933986..c149f350 100644 --- a/packages/client/src/components/document/delete/index.tsx +++ b/packages/client/src/components/document/delete/index.tsx @@ -1,9 +1,9 @@ -import React, { useCallback } from 'react'; -import Router from 'next/router'; -import { Typography, Space, Modal } from '@douyinfe/semi-ui'; import { IconDelete } from '@douyinfe/semi-icons'; +import { Modal, Space, Typography } from '@douyinfe/semi-ui'; import { useDeleteDocument } from 'data/document'; import { triggerRefreshTocs } from 'event'; +import Router from 'next/router'; +import React, { useCallback } from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/document/editor/editor.tsx b/packages/client/src/components/document/editor/editor.tsx index 160b3014..20da63e8 100644 --- a/packages/client/src/components/document/editor/editor.tsx +++ b/packages/client/src/components/document/editor/editor.tsx @@ -1,14 +1,15 @@ -import Router from 'next/router'; -import React, { useEffect, useState, useRef } from 'react'; +import { IAuthority, ILoginUser } from '@think/domains'; import cls from 'classnames'; -import { ILoginUser, IAuthority } from '@think/domains'; -import { useToggle } from 'hooks/use-toggle'; -import { findMentions } from 'tiptap/prose-utils'; import { useCollaborationDocument } from 'data/document'; import { event, triggerChangeDocumentTitle, triggerJoinUser, USE_DOCUMENT_VERSION } from 'event'; +import { useToggle } from 'hooks/use-toggle'; +import Router from 'next/router'; +import React, { useEffect, useRef, useState } from 'react'; import { CollaborationEditor, ICollaborationRefProps } from 'tiptap/editor'; -import { DocumentUserSetting } from './users'; +import { findMentions } from 'tiptap/prose-utils'; + import styles from './index.module.scss'; +import { DocumentUserSetting } from './users'; interface IProps { user: ILoginUser; diff --git a/packages/client/src/components/document/editor/index.tsx b/packages/client/src/components/document/editor/index.tsx index 5484f54d..56881e31 100644 --- a/packages/client/src/components/document/editor/index.tsx +++ b/packages/client/src/components/document/editor/index.tsx @@ -1,23 +1,24 @@ -import Router from 'next/router'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { Nav, Skeleton, Typography, Space, Button, Tooltip, Spin, Popover } from '@douyinfe/semi-ui'; -import { IconChevronLeft, IconArticle } from '@douyinfe/semi-icons'; -import { useUser } from 'data/user'; -import { useDocumentDetail } from 'data/document'; -import { useWindowSize } from 'hooks/use-window-size'; -import { SecureDocumentIllustration } from 'illustrations/secure-document'; -import { Seo } from 'components/seo'; -import { Theme } from 'components/theme'; +import { IconArticle, IconChevronLeft } from '@douyinfe/semi-icons'; +import { Button, Nav, Popover, Skeleton, Space, Spin, Tooltip, Typography } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; +import { Divider } from 'components/divider'; +import { DocumentCollaboration } from 'components/document/collaboration'; import { DocumentShare } from 'components/document/share'; import { DocumentStar } from 'components/document/star'; -import { DocumentCollaboration } from 'components/document/collaboration'; import { DocumentStyle } from 'components/document/style'; import { DocumentVersion } from 'components/document/version'; +import { Seo } from 'components/seo'; +import { Theme } from 'components/theme'; import { User } from 'components/user'; -import { Divider } from 'components/divider'; +import { useDocumentDetail } from 'data/document'; +import { useUser } from 'data/user'; +import { CHANGE_DOCUMENT_TITLE, event, triggerUseDocumentVersion } from 'event'; import { useDocumentStyle } from 'hooks/use-document-style'; -import { event, CHANGE_DOCUMENT_TITLE, triggerUseDocumentVersion } from 'event'; +import { useWindowSize } from 'hooks/use-window-size'; +import { SecureDocumentIllustration } from 'illustrations/secure-document'; +import Router from 'next/router'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; + import { Editor } from './editor'; import styles from './index.module.scss'; diff --git a/packages/client/src/components/document/editor/users.tsx b/packages/client/src/components/document/editor/users.tsx index 139222e8..bc936f7e 100644 --- a/packages/client/src/components/document/editor/users.tsx +++ b/packages/client/src/components/document/editor/users.tsx @@ -1,7 +1,7 @@ -import React, { useMemo } from 'react'; -import { Modal, Typography, Table, Checkbox } from '@douyinfe/semi-ui'; +import { Checkbox, Modal, Table, Typography } from '@douyinfe/semi-ui'; import { IAuthority, IUser } from '@think/domains'; import { DocAuth } from 'data/document'; +import React, { useMemo } from 'react'; interface IProps { visible: boolean; diff --git a/packages/client/src/components/document/link/index.tsx b/packages/client/src/components/document/link/index.tsx index bb6e2cd1..beb77294 100644 --- a/packages/client/src/components/document/link/index.tsx +++ b/packages/client/src/components/document/link/index.tsx @@ -1,8 +1,8 @@ -import React, { useCallback } from 'react'; -import { Typography, Space } from '@douyinfe/semi-ui'; import { IconLink } from '@douyinfe/semi-icons'; +import { Space, Typography } from '@douyinfe/semi-ui'; import { copy } from 'helpers/copy'; import { buildUrl } from 'helpers/url'; +import React, { useCallback } from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/document/reader/author.tsx b/packages/client/src/components/document/reader/author.tsx index c48c5981..779b01aa 100644 --- a/packages/client/src/components/document/reader/author.tsx +++ b/packages/client/src/components/document/reader/author.tsx @@ -1,8 +1,8 @@ -import React from 'react'; -import { Space, Avatar } from '@douyinfe/semi-ui'; -import { LocaleTime } from 'components/locale-time'; import { IconUser } from '@douyinfe/semi-icons'; +import { Avatar, Space } from '@douyinfe/semi-ui'; import { IDocument } from '@think/domains'; +import { LocaleTime } from 'components/locale-time'; +import React from 'react'; interface IProps { document: IDocument; diff --git a/packages/client/src/components/document/reader/index.tsx b/packages/client/src/components/document/reader/index.tsx index b77fe5ed..0af7f510 100644 --- a/packages/client/src/components/document/reader/index.tsx +++ b/packages/client/src/components/document/reader/index.tsx @@ -1,24 +1,25 @@ +import { IconArticle, IconEdit } from '@douyinfe/semi-icons'; +import { BackTop, Button, Layout, Nav, Popover, Skeleton, Space, Spin, Tooltip, Typography } from '@douyinfe/semi-ui'; +import cls from 'classnames'; +import { DataRender } from 'components/data-render'; +import { DocumentCollaboration } from 'components/document/collaboration'; +import { CommentEditor } from 'components/document/comments'; +import { DocumentShare } from 'components/document/share'; +import { DocumentStar } from 'components/document/star'; +import { DocumentStyle } from 'components/document/style'; +import { DocumentVersion } from 'components/document/version'; +import { ImageViewer } from 'components/image-viewer'; +import { Seo } from 'components/seo'; +import { useDocumentDetail } from 'data/document'; +import { useUser } from 'data/user'; +import { triggerJoinUser } from 'event'; +import { useDocumentStyle } from 'hooks/use-document-style'; +import { useWindowSize } from 'hooks/use-window-size'; import Router from 'next/router'; import React, { useCallback, useMemo, useState } from 'react'; import { createPortal } from 'react-dom'; -import cls from 'classnames'; -import { Layout, Nav, Space, Button, Typography, Skeleton, Tooltip, Popover, BackTop, Spin } from '@douyinfe/semi-ui'; -import { IconEdit, IconArticle } from '@douyinfe/semi-icons'; -import { ImageViewer } from 'components/image-viewer'; -import { Seo } from 'components/seo'; -import { DataRender } from 'components/data-render'; -import { DocumentShare } from 'components/document/share'; -import { DocumentStar } from 'components/document/star'; -import { DocumentCollaboration } from 'components/document/collaboration'; -import { DocumentStyle } from 'components/document/style'; -import { DocumentVersion } from 'components/document/version'; -import { CommentEditor } from 'components/document/comments'; -import { useDocumentStyle } from 'hooks/use-document-style'; -import { useWindowSize } from 'hooks/use-window-size'; -import { useUser } from 'data/user'; -import { useDocumentDetail } from 'data/document'; -import { triggerJoinUser } from 'event'; import { CollaborationEditor } from 'tiptap/editor'; + import { Author } from './author'; import styles from './index.module.scss'; diff --git a/packages/client/src/components/document/reader/public/index.tsx b/packages/client/src/components/document/reader/public/index.tsx index c29f5bd0..4438ea74 100644 --- a/packages/client/src/components/document/reader/public/index.tsx +++ b/packages/client/src/components/document/reader/public/index.tsx @@ -1,35 +1,36 @@ -import React, { useMemo, useRef, useCallback } from 'react'; -import { createPortal } from 'react-dom'; -import cls from 'classnames'; +import { IconArticle } from '@douyinfe/semi-icons'; import { + BackTop, + Breadcrumb, + Button, + Form, Layout, Nav, - Space, - Button, - Typography, - Skeleton, Popover, - Breadcrumb, - BackTop, - Form, + Skeleton, + Space, + Typography, } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; -import { IconArticle } from '@douyinfe/semi-icons'; -import Link from 'next/link'; -import { Seo } from 'components/seo'; -import { LogoImage, LogoText } from 'components/logo'; +import cls from 'classnames'; import { DataRender } from 'components/data-render'; import { DocumentStyle } from 'components/document/style'; -import { User } from 'components/user'; -import { Theme } from 'components/theme'; import { ImageViewer } from 'components/image-viewer'; -import { useDocumentStyle } from 'hooks/use-document-style'; +import { LogoImage, LogoText } from 'components/logo'; +import { Seo } from 'components/seo'; +import { Theme } from 'components/theme'; +import { User } from 'components/user'; import { usePublicDocument } from 'data/document'; +import { useDocumentStyle } from 'hooks/use-document-style'; +import { useWindowSize } from 'hooks/use-window-size'; +import Link from 'next/link'; +import React, { useCallback, useMemo, useRef } from 'react'; +import { createPortal } from 'react-dom'; import { DocumentSkeleton } from 'tiptap/components/skeleton'; import { CollaborationEditor } from 'tiptap/editor'; + import { Author } from '../author'; import styles from './index.module.scss'; -import { useWindowSize } from 'hooks/use-window-size'; const { Header, Content } = Layout; const { Text } = Typography; diff --git a/packages/client/src/components/document/share/index.tsx b/packages/client/src/components/document/share/index.tsx index c1787dab..61d3a6aa 100644 --- a/packages/client/src/components/document/share/index.tsx +++ b/packages/client/src/components/document/share/index.tsx @@ -1,12 +1,12 @@ -import React, { useMemo, useState, useEffect } from 'react'; -import { Button, Modal, Input, Typography, Toast } from '@douyinfe/semi-ui'; import { IconLink } from '@douyinfe/semi-icons'; +import { Button, Input, Modal, Toast, Typography } from '@douyinfe/semi-ui'; import { isPublicDocument } from '@think/domains'; -import { getDocumentShareURL } from 'helpers/url'; -import { ShareIllustration } from 'illustrations/share'; import { DataRender } from 'components/data-render'; -import { useToggle } from 'hooks/use-toggle'; import { useDocumentDetail } from 'data/document'; +import { getDocumentShareURL } from 'helpers/url'; +import { useToggle } from 'hooks/use-toggle'; +import { ShareIllustration } from 'illustrations/share'; +import React, { useEffect, useMemo, useState } from 'react'; interface IProps { documentId: string; diff --git a/packages/client/src/components/document/star/index.tsx b/packages/client/src/components/document/star/index.tsx index c2997684..39dc0946 100644 --- a/packages/client/src/components/document/star/index.tsx +++ b/packages/client/src/components/document/star/index.tsx @@ -1,7 +1,7 @@ -import React from 'react'; -import { Tooltip, Button } from '@douyinfe/semi-ui'; import { IconStar } from '@douyinfe/semi-icons'; +import { Button, Tooltip } from '@douyinfe/semi-ui'; import { useDocumentStar } from 'data/document'; +import React from 'react'; interface IProps { documentId: string; diff --git a/packages/client/src/components/document/style/index.tsx b/packages/client/src/components/document/style/index.tsx index e394e0bd..c3a638cc 100644 --- a/packages/client/src/components/document/style/index.tsx +++ b/packages/client/src/components/document/style/index.tsx @@ -1,9 +1,10 @@ -import React from 'react'; -import { RadioGroup, Radio, Typography, Slider, Popover, Button } from '@douyinfe/semi-ui'; import { IconArticle } from '@douyinfe/semi-icons'; -import { useWindowSize } from 'hooks/use-window-size'; +import { Button, Popover, Radio, RadioGroup, Slider, Typography } from '@douyinfe/semi-ui'; import { useDocumentStyle } from 'hooks/use-document-style'; import { useToggle } from 'hooks/use-toggle'; +import { useWindowSize } from 'hooks/use-window-size'; +import React from 'react'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/components/document/version/index.tsx b/packages/client/src/components/document/version/index.tsx index f8c07660..fe07e8aa 100644 --- a/packages/client/src/components/document/version/index.tsx +++ b/packages/client/src/components/document/version/index.tsx @@ -1,14 +1,15 @@ -import React, { useState, useEffect, useCallback } from 'react'; -import { Button, Modal, Typography, Layout, Nav } from '@douyinfe/semi-ui'; import { IconChevronLeft } from '@douyinfe/semi-icons'; -import { useEditor, EditorContent } from '@tiptap/react'; +import { Button, Layout, Modal, Nav, Typography } from '@douyinfe/semi-ui'; +import { EditorContent, useEditor } from '@tiptap/react'; import cls from 'classnames'; -import { CollaborationKit } from 'tiptap/editor'; -import { safeJSONParse } from 'helpers/json'; import { DataRender } from 'components/data-render'; import { LocaleTime } from 'components/locale-time'; -import { useToggle } from 'hooks/use-toggle'; import { useDocumentVersion } from 'data/document'; +import { safeJSONParse } from 'helpers/json'; +import { useToggle } from 'hooks/use-toggle'; +import React, { useCallback, useEffect, useState } from 'react'; +import { CollaborationKit } from 'tiptap/editor'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/components/emoji-picker/index.tsx b/packages/client/src/components/emoji-picker/index.tsx index 78ed70b2..b00e327b 100644 --- a/packages/client/src/components/emoji-picker/index.tsx +++ b/packages/client/src/components/emoji-picker/index.tsx @@ -1,10 +1,11 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { Popover, Typography, SideSheet } from '@douyinfe/semi-ui'; -import { EXPRESSIONES, GESTURES, SYMBOLS, OBJECTS, ACTIVITIES, SKY_WEATHER } from './constants'; +import { Popover, SideSheet, Typography } from '@douyinfe/semi-ui'; import { createKeysLocalStorageLRUCache } from 'helpers/lru-cache'; import { useToggle } from 'hooks/use-toggle'; -import styles from './index.module.scss'; import { useWindowSize } from 'hooks/use-window-size'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; + +import { ACTIVITIES, EXPRESSIONES, GESTURES, OBJECTS, SKY_WEATHER, SYMBOLS } from './constants'; +import styles from './index.module.scss'; const { Title } = Typography; diff --git a/packages/client/src/components/empty.tsx b/packages/client/src/components/empty.tsx index edca8d69..9cb26a6d 100644 --- a/packages/client/src/components/empty.tsx +++ b/packages/client/src/components/empty.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Typography } from '@douyinfe/semi-ui'; +import React from 'react'; interface IProps { illustration?: React.ReactNode; diff --git a/packages/client/src/components/grid-select/grid-select.tsx b/packages/client/src/components/grid-select/grid-select.tsx index 2ca58051..e2bdbdf0 100644 --- a/packages/client/src/components/grid-select/grid-select.tsx +++ b/packages/client/src/components/grid-select/grid-select.tsx @@ -1,6 +1,7 @@ -import React, { useMemo, useState, useCallback } from 'react'; import { Typography } from '@douyinfe/semi-ui'; import { debounce } from 'helpers/debounce'; +import React, { useCallback, useMemo, useState } from 'react'; + import { GridCell } from './grid-cell'; const { Text } = Typography; diff --git a/packages/client/src/components/icons/IconDocument.tsx b/packages/client/src/components/icons/IconDocument.tsx index cc8b159d..9df647e7 100644 --- a/packages/client/src/components/icons/IconDocument.tsx +++ b/packages/client/src/components/icons/IconDocument.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Icon } from '@douyinfe/semi-ui'; +import React from 'react'; export const IconDocument: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { return ( diff --git a/packages/client/src/components/icons/IconDocumentFill.tsx b/packages/client/src/components/icons/IconDocumentFill.tsx index 791c60ca..00171188 100644 --- a/packages/client/src/components/icons/IconDocumentFill.tsx +++ b/packages/client/src/components/icons/IconDocumentFill.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Icon } from '@douyinfe/semi-ui'; +import React from 'react'; export const IconDocumentFill: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { return ( diff --git a/packages/client/src/components/icons/IconMessage.tsx b/packages/client/src/components/icons/IconMessage.tsx index 72a98bae..6aebdf4d 100644 --- a/packages/client/src/components/icons/IconMessage.tsx +++ b/packages/client/src/components/icons/IconMessage.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Icon } from '@douyinfe/semi-ui'; +import React from 'react'; export const IconMessage: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { return ( diff --git a/packages/client/src/components/icons/IconOverview.tsx b/packages/client/src/components/icons/IconOverview.tsx index 35c3ed2b..f7cb6bf6 100644 --- a/packages/client/src/components/icons/IconOverview.tsx +++ b/packages/client/src/components/icons/IconOverview.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Icon } from '@douyinfe/semi-ui'; +import React from 'react'; export const IconOverview: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { return ( diff --git a/packages/client/src/components/icons/IconSearch.tsx b/packages/client/src/components/icons/IconSearch.tsx index 9010ed11..d537475e 100644 --- a/packages/client/src/components/icons/IconSearch.tsx +++ b/packages/client/src/components/icons/IconSearch.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Icon } from '@douyinfe/semi-ui'; +import React from 'react'; export const IconSearch: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { return ( diff --git a/packages/client/src/components/icons/IconSetting.tsx b/packages/client/src/components/icons/IconSetting.tsx index 04b3c501..4af85b78 100644 --- a/packages/client/src/components/icons/IconSetting.tsx +++ b/packages/client/src/components/icons/IconSetting.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Icon } from '@douyinfe/semi-ui'; +import React from 'react'; export const IconSetting: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { return ( diff --git a/packages/client/src/components/icons/IconShare.tsx b/packages/client/src/components/icons/IconShare.tsx index 55ce7418..a7f9ea01 100644 --- a/packages/client/src/components/icons/IconShare.tsx +++ b/packages/client/src/components/icons/IconShare.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Icon } from '@douyinfe/semi-ui'; +import React from 'react'; export const IconShare: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { return ( diff --git a/packages/client/src/components/icons/index.tsx b/packages/client/src/components/icons/index.tsx index b85e954d..61c32c75 100644 --- a/packages/client/src/components/icons/index.tsx +++ b/packages/client/src/components/icons/index.tsx @@ -1,61 +1,61 @@ -export * from './IconDocument'; -export * from './IconDocumentFill'; -export * from './IconMessage'; -export * from './IconOverview'; -export * from './IconSetting'; -export * from './IconShare'; -export * from './IconLeft'; -export * from './IconRight'; -export * from './IconFull'; -export * from './IconHalf'; -export * from './IconCenter'; -export * from './IconFont'; -export * from './IconTask'; -export * from './IconLink'; -export * from './IconClear'; -export * from './IconImage'; -export * from './IconMind'; -export * from './IconZoomIn'; -export * from './IconZoomOut'; -export * from './IconTable'; -export * from './IconCodeBlock'; -export * from './IconStatus'; -export * from './IconInfo'; -export * from './IconEmoji'; -export * from './IconAddColumnBefore'; export * from './IconAddColumnAfter'; -export * from './IconDeleteColumn'; -export * from './IconAddRowBefore'; +export * from './IconAddColumnBefore'; export * from './IconAddRowAfter'; +export * from './IconAddRowBefore'; +export * from './IconAttachment'; +export * from './IconCallout'; +export * from './IconCenter'; +export * from './IconClear'; +export * from './IconCodeBlock'; +export * from './IconCountdown'; +export * from './IconDeleteColumn'; export * from './IconDeleteRow'; export * from './IconDeleteTable'; -export * from './IconMergeCell'; -export * from './IconSplitCell'; -export * from './IconAttachment'; -export * from './IconMath'; -export * from './IconSearch'; -export * from './IconSearchReplace'; -export * from './IconQuote'; -export * from './IconHorizontalRule'; -export * from './IconOrderedList'; -export * from './IconList'; +export * from './IconDocument'; +export * from './IconDocumentFill'; +export * from './IconDrawBoard'; +export * from './IconEmoji'; +export * from './IconFlow'; +export * from './IconFont'; +export * from './IconFull'; +export * from './IconGlobe'; +export * from './IconHalf'; export * from './IconHeading1'; export * from './IconHeading2'; export * from './IconHeading3'; -export * from './IconTableHeaderRow'; -export * from './IconTableHeaderColumn'; -export * from './IconTableHeaderCell'; -export * from './IconSub'; -export * from './IconSup'; -export * from './IconGlobe'; -export * from './IconCountdown'; -export * from './IconDrawBoard'; -export * from './IconCallout'; -export * from './IconStructure'; +export * from './IconHorizontalRule'; +export * from './IconImage'; +export * from './IconInfo'; +export * from './IconLeft'; +export * from './IconLink'; +export * from './IconList'; +export * from './IconMath'; +export * from './IconMergeCell'; +export * from './IconMessage'; +export * from './IconMind'; +export * from './IconMindCenter'; +export * from './IconMindFull'; export * from './IconMindLeft'; export * from './IconMindRight'; export * from './IconMindSide'; -export * from './IconMindFull'; -export * from './IconMindCenter'; +export * from './IconOrderedList'; +export * from './IconOverview'; +export * from './IconQuote'; +export * from './IconRight'; +export * from './IconSearch'; +export * from './IconSearchReplace'; +export * from './IconSetting'; +export * from './IconShare'; +export * from './IconSplitCell'; +export * from './IconStatus'; +export * from './IconStructure'; +export * from './IconSub'; +export * from './IconSup'; +export * from './IconTable'; +export * from './IconTableHeaderCell'; +export * from './IconTableHeaderColumn'; +export * from './IconTableHeaderRow'; export * from './IconTableOfContents'; -export * from './IconFlow'; +export * from './IconTask'; +export * from './IconZoomIn'; +export * from './IconZoomOut'; diff --git a/packages/client/src/components/locale-time/index.tsx b/packages/client/src/components/locale-time/index.tsx index 18d872e2..16b40459 100644 --- a/packages/client/src/components/locale-time/index.tsx +++ b/packages/client/src/components/locale-time/index.tsx @@ -1,7 +1,7 @@ -import React, { useRef, useState, useEffect } from 'react'; -import distanceInWords from 'date-fns/formatDistance'; import dateFormat from 'date-fns/format'; +import distanceInWords from 'date-fns/formatDistance'; import zh from 'date-fns/locale/zh-CN'; +import React, { useEffect, useRef, useState } from 'react'; let callbacks: Array<() => void> = []; diff --git a/packages/client/src/components/logo/index.tsx b/packages/client/src/components/logo/index.tsx index 03dca94d..2cc0bc3c 100644 --- a/packages/client/src/components/logo/index.tsx +++ b/packages/client/src/components/logo/index.tsx @@ -1,5 +1,6 @@ -import Link from 'next/link'; import { Typography } from '@douyinfe/semi-ui'; +import Link from 'next/link'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/components/message/index.tsx b/packages/client/src/components/message/index.tsx index a4e577d3..36b52b7f 100644 --- a/packages/client/src/components/message/index.tsx +++ b/packages/client/src/components/message/index.tsx @@ -1,16 +1,17 @@ -import React, { useCallback, useEffect } from 'react'; -import Link from 'next/link'; -import { Typography, Dropdown, Badge, Button, Tabs, TabPane, Pagination, Notification, Modal } from '@douyinfe/semi-ui'; -import { IconMessage } from 'components/icons/IconMessage'; -import { useAllMessages, useReadMessages, useUnreadMessages } from 'data/message'; -import { EmptyBoxIllustration } from 'illustrations/empty-box'; +import { Badge, Button, Dropdown, Modal, Notification, Pagination, TabPane, Tabs, Typography } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; import { Empty } from 'components/empty'; -import { Placeholder } from './placeholder'; -import styles from './index.module.scss'; +import { IconMessage } from 'components/icons/IconMessage'; +import { useAllMessages, useReadMessages, useUnreadMessages } from 'data/message'; import { useUser } from 'data/user'; -import { useWindowSize } from 'hooks/use-window-size'; import { useToggle } from 'hooks/use-toggle'; +import { useWindowSize } from 'hooks/use-window-size'; +import { EmptyBoxIllustration } from 'illustrations/empty-box'; +import Link from 'next/link'; +import React, { useCallback, useEffect } from 'react'; + +import styles from './index.module.scss'; +import { Placeholder } from './placeholder'; const { Text } = Typography; const PAGE_SIZE = 6; diff --git a/packages/client/src/components/resizeable/resizeable.tsx b/packages/client/src/components/resizeable/resizeable.tsx index 0819ffcd..9e8e8471 100644 --- a/packages/client/src/components/resizeable/resizeable.tsx +++ b/packages/client/src/components/resizeable/resizeable.tsx @@ -1,7 +1,8 @@ -import React, { useRef, useEffect } from 'react'; import cls from 'classnames'; import { useClickOutside } from 'hooks/use-click-outside'; import interact from 'interactjs'; +import React, { useEffect, useRef } from 'react'; + import styles from './style.module.scss'; type ISize = { width: number; height: number }; diff --git a/packages/client/src/components/search/index.tsx b/packages/client/src/components/search/index.tsx index 701e2e65..5c0a4b9c 100644 --- a/packages/client/src/components/search/index.tsx +++ b/packages/client/src/components/search/index.tsx @@ -1,19 +1,20 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { IconSearch as SemiIconSearch } from '@douyinfe/semi-icons'; +import { Button, Input, Modal, Spin, Typography } from '@douyinfe/semi-ui'; +import { IDocument } from '@think/domains'; +import { DataRender } from 'components/data-render'; +import { DocumentStar } from 'components/document/star'; +import { Empty } from 'components/empty'; +import { IconSearch } from 'components/icons'; +import { IconDocumentFill } from 'components/icons/IconDocumentFill'; +import { LocaleTime } from 'components/locale-time'; +import { useRecentDocuments } from 'data/document'; +import { useAsyncLoading } from 'hooks/use-async-loading'; +import { useToggle } from 'hooks/use-toggle'; import Link from 'next/link'; import Router from 'next/router'; -import { Typography, Button, Modal, Input, Spin } from '@douyinfe/semi-ui'; -import { IconSearch as SemiIconSearch } from '@douyinfe/semi-icons'; -import { IconSearch } from 'components/icons'; -import { IDocument } from '@think/domains'; -import { useRecentDocuments } from 'data/document'; -import { useToggle } from 'hooks/use-toggle'; -import { useAsyncLoading } from 'hooks/use-async-loading'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { searchDocument } from 'services/document'; -import { Empty } from 'components/empty'; -import { DataRender } from 'components/data-render'; -import { LocaleTime } from 'components/locale-time'; -import { DocumentStar } from 'components/document/star'; -import { IconDocumentFill } from 'components/icons/IconDocumentFill'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/components/template/card/index.tsx b/packages/client/src/components/template/card/index.tsx index dfdd88f8..86b365ef 100644 --- a/packages/client/src/components/template/card/index.tsx +++ b/packages/client/src/components/template/card/index.tsx @@ -1,13 +1,14 @@ +import { IconEdit, IconPlus, IconUser } from '@douyinfe/semi-icons'; +import { Avatar, Button, Modal, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui'; import type { ITemplate } from '@think/domains'; -import { useCallback } from 'react'; import cls from 'classnames'; -import Router from 'next/router'; -import { Button, Space, Typography, Tooltip, Avatar, Skeleton, Modal } from '@douyinfe/semi-ui'; -import { IconEdit, IconUser, IconPlus } from '@douyinfe/semi-icons'; import { IconDocument } from 'components/icons/IconDocument'; import { TemplateReader } from 'components/template/reader'; -import { useToggle } from 'hooks/use-toggle'; import { useUser } from 'data/user'; +import { useToggle } from 'hooks/use-toggle'; +import Router from 'next/router'; +import { useCallback } from 'react'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/components/template/editor/editor.tsx b/packages/client/src/components/template/editor/editor.tsx index e42f2761..069b0bb2 100644 --- a/packages/client/src/components/template/editor/editor.tsx +++ b/packages/client/src/components/template/editor/editor.tsx @@ -1,15 +1,16 @@ -import React, { useMemo, useCallback, useState, useEffect } from 'react'; -import Router from 'next/router'; -import cls from 'classnames'; -import { Button, Nav, Space, Typography, Tooltip, Switch, Popover, Popconfirm } from '@douyinfe/semi-ui'; -import { IconChevronLeft, IconArticle } from '@douyinfe/semi-icons'; +import { IconArticle, IconChevronLeft } from '@douyinfe/semi-icons'; +import { Button, Nav, Popconfirm, Popover, Space, Switch, Tooltip, Typography } from '@douyinfe/semi-ui'; import { ILoginUser, ITemplate } from '@think/domains'; +import cls from 'classnames'; +import { DocumentStyle } from 'components/document/style'; import { Theme } from 'components/theme'; import { User } from 'components/user'; -import { DocumentStyle } from 'components/document/style'; import { useDocumentStyle } from 'hooks/use-document-style'; import { useWindowSize } from 'hooks/use-window-size'; +import Router from 'next/router'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { CollaborationEditor } from 'tiptap/editor'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/components/template/editor/index.tsx b/packages/client/src/components/template/editor/index.tsx index 00a22d46..f2cc8bef 100644 --- a/packages/client/src/components/template/editor/index.tsx +++ b/packages/client/src/components/template/editor/index.tsx @@ -1,18 +1,19 @@ -import React, { useState, useMemo, useCallback, useEffect } from 'react'; -import Router from 'next/router'; +import { IconArticle, IconChevronLeft } from '@douyinfe/semi-icons'; +import { Button, Nav, Popconfirm, Popover, Space, Spin, Switch, Tooltip, Typography } from '@douyinfe/semi-ui'; import cls from 'classnames'; -import { Spin, Button, Nav, Space, Typography, Tooltip, Switch, Popover, Popconfirm } from '@douyinfe/semi-ui'; -import { IconChevronLeft, IconArticle } from '@douyinfe/semi-icons'; -import { useUser } from 'data/user'; -import { useTemplate } from 'data/template'; -import { Seo } from 'components/seo'; import { DataRender } from 'components/data-render'; +import { DocumentStyle } from 'components/document/style'; +import { Seo } from 'components/seo'; import { Theme } from 'components/theme'; import { User } from 'components/user'; -import { DocumentStyle } from 'components/document/style'; +import { useTemplate } from 'data/template'; +import { useUser } from 'data/user'; import { useDocumentStyle } from 'hooks/use-document-style'; import { useWindowSize } from 'hooks/use-window-size'; +import Router from 'next/router'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { CollaborationEditor } from 'tiptap/editor'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/components/template/list/index.tsx b/packages/client/src/components/template/list/index.tsx index 0984320d..8f810e5d 100644 --- a/packages/client/src/components/template/list/index.tsx +++ b/packages/client/src/components/template/list/index.tsx @@ -1,8 +1,8 @@ -import React, { useState, useMemo } from 'react'; import { List, Pagination } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; -import { IProps as ITemplateCardProps, TemplateCardPlaceholder, TemplateCard } from 'components/template/card'; import { Empty } from 'components/empty'; +import { IProps as ITemplateCardProps, TemplateCard, TemplateCardPlaceholder } from 'components/template/card'; +import React, { useMemo, useState } from 'react'; const grid = { gutter: 16, diff --git a/packages/client/src/components/template/reader/index.tsx b/packages/client/src/components/template/reader/index.tsx index 645da9cc..f521c303 100644 --- a/packages/client/src/components/template/reader/index.tsx +++ b/packages/client/src/components/template/reader/index.tsx @@ -1,9 +1,9 @@ -import React from 'react'; import { Spin } from '@douyinfe/semi-ui'; -import { Seo } from 'components/seo'; import { DataRender } from 'components/data-render'; -import { useTemplate } from 'data/template'; import { ImageViewer } from 'components/image-viewer'; +import { Seo } from 'components/seo'; +import { useTemplate } from 'data/template'; +import React from 'react'; import { ReaderEditor } from 'tiptap/editor'; interface IProps { diff --git a/packages/client/src/components/theme/index.tsx b/packages/client/src/components/theme/index.tsx index 92750c45..272a6c03 100644 --- a/packages/client/src/components/theme/index.tsx +++ b/packages/client/src/components/theme/index.tsx @@ -1,8 +1,8 @@ -import React from 'react'; +import { IconMoon, IconSun } from '@douyinfe/semi-icons'; import { Button } from '@douyinfe/semi-ui'; -import { IconSun, IconMoon } from '@douyinfe/semi-icons'; -import { useTheme } from 'hooks/use-theme'; import { Tooltip } from 'components/tooltip'; +import { useTheme } from 'hooks/use-theme'; +import React from 'react'; export const Theme = () => { const { theme, toggle } = useTheme(); diff --git a/packages/client/src/components/tooltip/index.tsx b/packages/client/src/components/tooltip/index.tsx index a1cb24fb..7d4732f3 100644 --- a/packages/client/src/components/tooltip/index.tsx +++ b/packages/client/src/components/tooltip/index.tsx @@ -1,7 +1,7 @@ -import React from 'react'; import { Tooltip as SemiTooltip } from '@douyinfe/semi-ui'; import { Position } from '@douyinfe/semi-ui/tooltip'; import { useToggle } from 'hooks/use-toggle'; +import React from 'react'; interface IProps { content: React.ReactNode; diff --git a/packages/client/src/components/upload/index.tsx b/packages/client/src/components/upload/index.tsx index 4fbd23a0..5901a744 100644 --- a/packages/client/src/components/upload/index.tsx +++ b/packages/client/src/components/upload/index.tsx @@ -1,7 +1,7 @@ -import React from 'react'; -import { Upload as SemiUpload, Button, Toast } from '@douyinfe/semi-ui'; import { IconUpload } from '@douyinfe/semi-icons'; +import { Button, Toast, Upload as SemiUpload } from '@douyinfe/semi-ui'; import { useAsyncLoading } from 'hooks/use-async-loading'; +import React from 'react'; import { uploadFile } from 'services/file'; interface IProps { diff --git a/packages/client/src/components/user/index.tsx b/packages/client/src/components/user/index.tsx index d2a7df3c..eda58d5f 100644 --- a/packages/client/src/components/user/index.tsx +++ b/packages/client/src/components/user/index.tsx @@ -1,8 +1,9 @@ -import React from 'react'; -import { Dropdown, Typography, Avatar, Button } from '@douyinfe/semi-ui'; import { IconSpin } from '@douyinfe/semi-icons'; +import { Avatar, Button, Dropdown, Typography } from '@douyinfe/semi-ui'; import { useUser } from 'data/user'; import { useToggle } from 'hooks/use-toggle'; +import React from 'react'; + import { UserSetting } from './setting'; const { Text } = Typography; diff --git a/packages/client/src/components/user/setting/index.tsx b/packages/client/src/components/user/setting/index.tsx index 257f7da1..c4d967b0 100644 --- a/packages/client/src/components/user/setting/index.tsx +++ b/packages/client/src/components/user/setting/index.tsx @@ -1,8 +1,8 @@ -import { Dispatch, SetStateAction, useRef, useState, useEffect } from 'react'; import { Avatar, Form, Modal, Space } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; import { Upload } from 'components/upload'; import { useUser } from 'data/user'; +import { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react'; interface IProps { visible: boolean; diff --git a/packages/client/src/components/wiki-creator/index.tsx b/packages/client/src/components/wiki-creator/index.tsx index 826a00a5..2936d04c 100644 --- a/packages/client/src/components/wiki-creator/index.tsx +++ b/packages/client/src/components/wiki-creator/index.tsx @@ -1,7 +1,7 @@ -import React from 'react'; import { Button } from '@douyinfe/semi-ui'; -import { useToggle } from 'hooks/use-toggle'; import { WikiCreator as WikiCreatorForm } from 'components/wiki/create'; +import { useToggle } from 'hooks/use-toggle'; +import React from 'react'; export const WikiCreator: React.FC = ({ children }) => { const [visible, toggleVisible] = useToggle(false); diff --git a/packages/client/src/components/wiki-or-document-creator/index.tsx b/packages/client/src/components/wiki-or-document-creator/index.tsx index f2c3786d..1b399122 100644 --- a/packages/client/src/components/wiki-or-document-creator/index.tsx +++ b/packages/client/src/components/wiki-or-document-creator/index.tsx @@ -1,11 +1,11 @@ -import React from 'react'; -import { Dropdown, Button } from '@douyinfe/semi-ui'; import { IconChevronDown, IconPlus } from '@douyinfe/semi-icons'; -import { useWindowSize } from 'hooks/use-window-size'; -import { useToggle } from 'hooks/use-toggle'; -import { useQuery } from 'hooks/use-query'; -import { WikiCreator } from 'components/wiki/create'; +import { Button, Dropdown } from '@douyinfe/semi-ui'; import { DocumentCreator } from 'components/document/create'; +import { WikiCreator } from 'components/wiki/create'; +import { useQuery } from 'hooks/use-query'; +import { useToggle } from 'hooks/use-toggle'; +import { useWindowSize } from 'hooks/use-window-size'; +import React from 'react'; interface IProps { onCreateDocument?: () => void; diff --git a/packages/client/src/components/wiki/card/index.tsx b/packages/client/src/components/wiki/card/index.tsx index 12a4c8fb..270dd81a 100644 --- a/packages/client/src/components/wiki/card/index.tsx +++ b/packages/client/src/components/wiki/card/index.tsx @@ -1,10 +1,11 @@ -import Link from 'next/link'; -import { Space, Typography, Avatar, Skeleton } from '@douyinfe/semi-ui'; import { IconUser } from '@douyinfe/semi-icons'; +import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; import { IWiki } from '@think/domains'; -import { LocaleTime } from 'components/locale-time'; import { IconDocument } from 'components/icons/IconDocument'; +import { LocaleTime } from 'components/locale-time'; import { WikiStar } from 'components/wiki/star'; +import Link from 'next/link'; + import styles from './index.module.scss'; const { Text, Paragraph } = Typography; diff --git a/packages/client/src/components/wiki/create/index.tsx b/packages/client/src/components/wiki/create/index.tsx index c9c9a152..c794428b 100644 --- a/packages/client/src/components/wiki/create/index.tsx +++ b/packages/client/src/components/wiki/create/index.tsx @@ -1,9 +1,9 @@ -import type { IWiki } from '@think/domains'; -import { Dispatch, SetStateAction, useRef } from 'react'; -import Router from 'next/router'; import { Form, Modal } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; +import type { IWiki } from '@think/domains'; import { ICreateWiki, useOwnWikis } from 'data/wiki'; +import Router from 'next/router'; +import { Dispatch, SetStateAction, useRef } from 'react'; interface IProps { visible: boolean; diff --git a/packages/client/src/components/wiki/delete/index.tsx b/packages/client/src/components/wiki/delete/index.tsx index a3834c48..a24b001b 100644 --- a/packages/client/src/components/wiki/delete/index.tsx +++ b/packages/client/src/components/wiki/delete/index.tsx @@ -1,8 +1,8 @@ -import React, { useCallback } from 'react'; -import Router from 'next/router'; -import { Typography, Space, Modal } from '@douyinfe/semi-ui'; import { IconDelete } from '@douyinfe/semi-icons'; +import { Modal, Space, Typography } from '@douyinfe/semi-ui'; import { useOwnWikis } from 'data/wiki'; +import Router from 'next/router'; +import React, { useCallback } from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/wiki/documents-share/index.tsx b/packages/client/src/components/wiki/documents-share/index.tsx index 5de89bcf..3e1edd08 100644 --- a/packages/client/src/components/wiki/documents-share/index.tsx +++ b/packages/client/src/components/wiki/documents-share/index.tsx @@ -1,10 +1,11 @@ -import React, { useState, useMemo, useEffect, useCallback } from 'react'; -import { Transfer, Button, Banner, Typography, RadioGroup, Radio, Toast, Checkbox } from '@douyinfe/semi-ui'; import { IconClose } from '@douyinfe/semi-icons'; -import { WIKI_STATUS_LIST, isPublicDocument, isPublicWiki } from '@think/domains'; +import { Banner, Button, Checkbox, Radio, RadioGroup, Toast, Transfer, Typography } from '@douyinfe/semi-ui'; +import { isPublicDocument, isPublicWiki, WIKI_STATUS_LIST } from '@think/domains'; +import { flattenTree2Array } from 'components/wiki/tocs/utils'; import { useWikiDetail, useWikiTocs } from 'data/wiki'; import { buildUrl } from 'helpers/url'; -import { flattenTree2Array } from 'components/wiki/tocs/utils'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; + import styles from './index.module.scss'; const { Text, Title } = Typography; diff --git a/packages/client/src/components/wiki/pin-card/index.tsx b/packages/client/src/components/wiki/pin-card/index.tsx index 7a8946c6..b26f66f2 100644 --- a/packages/client/src/components/wiki/pin-card/index.tsx +++ b/packages/client/src/components/wiki/pin-card/index.tsx @@ -1,9 +1,10 @@ -import Link from 'next/link'; -import { Space, Typography, Avatar, Skeleton } from '@douyinfe/semi-ui'; +import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; import { IWiki } from '@think/domains'; -import { LocaleTime } from 'components/locale-time'; import { IconDocument } from 'components/icons/IconDocument'; +import { LocaleTime } from 'components/locale-time'; import { WikiStar } from 'components/wiki/star'; +import Link from 'next/link'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/components/wiki/placeholder/index.tsx b/packages/client/src/components/wiki/placeholder/index.tsx index 3896a6b1..d8211d01 100644 --- a/packages/client/src/components/wiki/placeholder/index.tsx +++ b/packages/client/src/components/wiki/placeholder/index.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Skeleton } from '@douyinfe/semi-ui'; +import React from 'react'; export const WorkspacePlaceholder = () => { const placeholder = ( diff --git a/packages/client/src/components/wiki/setting/base/index.tsx b/packages/client/src/components/wiki/setting/base/index.tsx index 6e23a9f7..45a9d722 100644 --- a/packages/client/src/components/wiki/setting/base/index.tsx +++ b/packages/client/src/components/wiki/setting/base/index.tsx @@ -1,9 +1,10 @@ -import { useRef, useEffect, useState } from 'react'; -import { Form, Button, Toast } from '@douyinfe/semi-ui'; +import { Button, Form, Toast } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; -import type { IWiki } from '@think/domains'; import { WIKI_AVATARS } from '@think/constants'; +import type { IWiki } from '@think/domains'; import { Upload } from 'components/upload'; +import { useEffect, useRef, useState } from 'react'; + import styles from './index.module.scss'; type IUpdateWIKI = Partial; diff --git a/packages/client/src/components/wiki/setting/index.tsx b/packages/client/src/components/wiki/setting/index.tsx index 2b9658a3..9e335dfb 100644 --- a/packages/client/src/components/wiki/setting/index.tsx +++ b/packages/client/src/components/wiki/setting/index.tsx @@ -1,10 +1,11 @@ -import React from 'react'; -import { Tabs, TabPane } from '@douyinfe/semi-ui'; +import { TabPane, Tabs } from '@douyinfe/semi-ui'; import { Seo } from 'components/seo'; import { useWikiDetail } from 'data/wiki'; +import React from 'react'; + import { Base } from './base'; -import { Users } from './users'; import { More } from './more'; +import { Users } from './users'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/wiki/setting/more/index.tsx b/packages/client/src/components/wiki/setting/more/index.tsx index 52589ed7..e699410b 100644 --- a/packages/client/src/components/wiki/setting/more/index.tsx +++ b/packages/client/src/components/wiki/setting/more/index.tsx @@ -1,4 +1,4 @@ -import { Button, Banner, Typography } from '@douyinfe/semi-ui'; +import { Banner, Button, Typography } from '@douyinfe/semi-ui'; import { WorkspaceDeletor } from 'components/wiki/delete'; interface IProps { diff --git a/packages/client/src/components/wiki/setting/users/add.tsx b/packages/client/src/components/wiki/setting/users/add.tsx index 052d3d33..ae502663 100644 --- a/packages/client/src/components/wiki/setting/users/add.tsx +++ b/packages/client/src/components/wiki/setting/users/add.tsx @@ -1,7 +1,7 @@ -import React, { useCallback, useState } from 'react'; -import { Modal, Typography, Button, Input, Space, Select, Banner } from '@douyinfe/semi-ui'; +import { Banner, Button, Input, Modal, Select, Space, Typography } from '@douyinfe/semi-ui'; import { WIKI_USER_ROLES, WikiUserRole } from '@think/domains'; import { IWikiUserOpeateData } from 'data/wiki'; +import React, { useCallback, useState } from 'react'; interface IProps { visible: boolean; diff --git a/packages/client/src/components/wiki/setting/users/edit.tsx b/packages/client/src/components/wiki/setting/users/edit.tsx index aec48d34..f68f98ab 100644 --- a/packages/client/src/components/wiki/setting/users/edit.tsx +++ b/packages/client/src/components/wiki/setting/users/edit.tsx @@ -1,6 +1,6 @@ -import React, { useCallback, useState } from 'react'; -import { Modal, Button, Select, Banner } from '@douyinfe/semi-ui'; +import { Banner, Button, Modal, Select } from '@douyinfe/semi-ui'; import { WIKI_USER_ROLES, WikiUserRole } from '@think/domains'; +import React, { useCallback, useState } from 'react'; interface IProps { visible: boolean; diff --git a/packages/client/src/components/wiki/setting/users/index.tsx b/packages/client/src/components/wiki/setting/users/index.tsx index 35b90cff..c3d1e860 100644 --- a/packages/client/src/components/wiki/setting/users/index.tsx +++ b/packages/client/src/components/wiki/setting/users/index.tsx @@ -1,14 +1,15 @@ -import React, { useState } from 'react'; -import { Table, Popconfirm, Button } from '@douyinfe/semi-ui'; -import { IconEdit, IconDelete } from '@douyinfe/semi-icons'; -import { useWikiUsers } from 'data/wiki'; +import { IconDelete, IconEdit } from '@douyinfe/semi-icons'; +import { Button, Popconfirm, Table } from '@douyinfe/semi-ui'; +import { getWikiUserRoleText } from '@think/domains'; import { DataRender } from 'components/data-render'; import { LocaleTime } from 'components/locale-time'; -import { getWikiUserRoleText } from '@think/domains'; +import { useWikiUsers } from 'data/wiki'; import { useToggle } from 'hooks/use-toggle'; -import { Placeholder } from './placeholder'; +import React, { useState } from 'react'; + import { AddUser } from './add'; import { EditUser } from './edit'; +import { Placeholder } from './placeholder'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/wiki/setting/users/placeholder.tsx b/packages/client/src/components/wiki/setting/users/placeholder.tsx index 6e90bdeb..2c0d27be 100644 --- a/packages/client/src/components/wiki/setting/users/placeholder.tsx +++ b/packages/client/src/components/wiki/setting/users/placeholder.tsx @@ -1,4 +1,4 @@ -import { Table, Skeleton } from '@douyinfe/semi-ui'; +import { Skeleton, Table } from '@douyinfe/semi-ui'; const columns = [ { diff --git a/packages/client/src/components/wiki/star/index.tsx b/packages/client/src/components/wiki/star/index.tsx index cf5aaa4f..4edf800a 100644 --- a/packages/client/src/components/wiki/star/index.tsx +++ b/packages/client/src/components/wiki/star/index.tsx @@ -1,7 +1,7 @@ -import React from 'react'; -import { Tooltip, Button } from '@douyinfe/semi-ui'; import { IconStar } from '@douyinfe/semi-icons'; +import { Button, Tooltip } from '@douyinfe/semi-ui'; import { useWikiStar } from 'data/wiki'; +import React from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/wiki/tocs/index.tsx b/packages/client/src/components/wiki/tocs/index.tsx index d48090fa..b841bffc 100644 --- a/packages/client/src/components/wiki/tocs/index.tsx +++ b/packages/client/src/components/wiki/tocs/index.tsx @@ -1,16 +1,17 @@ +import { IconPlus } from '@douyinfe/semi-icons'; +import { Avatar, Button, Skeleton, Tooltip, Typography } from '@douyinfe/semi-ui'; +import { isPublicWiki } from '@think/domains'; +import { DataRender } from 'components/data-render'; +import { IconDocument, IconGlobe, IconOverview, IconSetting } from 'components/icons'; +import { findParents } from 'components/wiki/tocs/utils'; +import { useWikiDetail, useWikiTocs } from 'data/wiki'; +import { event, REFRESH_TOCS, triggerCreateDocument } from 'event'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; -import { Avatar, Button, Typography, Skeleton, Tooltip } from '@douyinfe/semi-ui'; -import { IconPlus } from '@douyinfe/semi-icons'; -import { isPublicWiki } from '@think/domains'; -import { useWikiDetail, useWikiTocs } from 'data/wiki'; -import { findParents } from 'components/wiki/tocs/utils'; -import { IconDocument, IconSetting, IconOverview, IconGlobe } from 'components/icons'; -import { DataRender } from 'components/data-render'; -import { event, REFRESH_TOCS, triggerCreateDocument } from 'event'; + +import styles from './index.module.scss'; import { NavItem } from './nav-item'; import { Tree } from './tree'; -import styles from './index.module.scss'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/wiki/tocs/manager/index.tsx b/packages/client/src/components/wiki/tocs/manager/index.tsx index 70091c86..ffd90f18 100644 --- a/packages/client/src/components/wiki/tocs/manager/index.tsx +++ b/packages/client/src/components/wiki/tocs/manager/index.tsx @@ -1,8 +1,9 @@ -import React, { useCallback, useEffect, useState } from 'react'; -import { Banner, Tree, Button, Toast, Typography } from '@douyinfe/semi-ui'; +import { Banner, Button, Toast, Tree, Typography } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; import { Resizeable } from 'components/resizeable'; import { useWikiTocs } from 'data/wiki'; +import React, { useCallback, useEffect, useState } from 'react'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/components/wiki/tocs/nav-item.tsx b/packages/client/src/components/wiki/tocs/nav-item.tsx index c4a89e23..915a30fb 100644 --- a/packages/client/src/components/wiki/tocs/nav-item.tsx +++ b/packages/client/src/components/wiki/tocs/nav-item.tsx @@ -1,7 +1,8 @@ -import type { UrlObject } from 'url'; import cls from 'classnames'; -import React from 'react'; import Link from 'next/link'; +import React from 'react'; +import type { UrlObject } from 'url'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/components/wiki/tocs/public.tsx b/packages/client/src/components/wiki/tocs/public.tsx index 21ebf7a1..b77daa97 100644 --- a/packages/client/src/components/wiki/tocs/public.tsx +++ b/packages/client/src/components/wiki/tocs/public.tsx @@ -1,16 +1,17 @@ -import React, { useState, useEffect } from 'react'; -import { useRouter } from 'next/router'; -import { Avatar, Typography, Skeleton, Space } from '@douyinfe/semi-ui'; import { IconPlus } from '@douyinfe/semi-icons'; +import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; +import { DataRender } from 'components/data-render'; import { IconOverview } from 'components/icons'; -import { usePublicWikiDetail, usePublicWikiTocs } from 'data/wiki'; +import { LogoImage, LogoText } from 'components/logo'; import { Seo } from 'components/seo'; import { findParents } from 'components/wiki/tocs/utils'; -import { LogoImage, LogoText } from 'components/logo'; -import { DataRender } from 'components/data-render'; -import { Tree } from './tree'; -import { NavItem } from './nav-item'; +import { usePublicWikiDetail, usePublicWikiTocs } from 'data/wiki'; +import { useRouter } from 'next/router'; +import React, { useEffect, useState } from 'react'; + import styles from './index.module.scss'; +import { NavItem } from './nav-item'; +import { Tree } from './tree'; interface IProps { wikiId: string; diff --git a/packages/client/src/components/wiki/tocs/tree.tsx b/packages/client/src/components/wiki/tocs/tree.tsx index 31558ba1..c4ea03cd 100644 --- a/packages/client/src/components/wiki/tocs/tree.tsx +++ b/packages/client/src/components/wiki/tocs/tree.tsx @@ -1,11 +1,12 @@ -import React, { useEffect, useState, useCallback } from 'react'; -import Link from 'next/link'; -import { Tree as SemiTree, Button, Typography } from '@douyinfe/semi-ui'; import { IconMore, IconPlus } from '@douyinfe/semi-icons'; -import { useToggle } from 'hooks/use-toggle'; +import { Button, Tree as SemiTree, Typography } from '@douyinfe/semi-ui'; import { DocumentActions } from 'components/document/actions'; import { DocumentCreator as DocumenCreatorForm } from 'components/document/create'; -import { event, CREATE_DOCUMENT, triggerCreateDocument } from 'event'; +import { CREATE_DOCUMENT, event, triggerCreateDocument } from 'event'; +import { useToggle } from 'hooks/use-toggle'; +import Link from 'next/link'; +import React, { useCallback, useEffect, useState } from 'react'; + import styles from './index.module.scss'; const Actions = ({ node }) => { diff --git a/packages/client/src/data/comment.ts b/packages/client/src/data/comment.ts index 22b3ad2c..cf766bfc 100644 --- a/packages/client/src/data/comment.ts +++ b/packages/client/src/data/comment.ts @@ -1,7 +1,7 @@ import type { IComment } from '@think/domains'; -import React, { useState, useCallback } from 'react'; -import useSWR from 'swr'; +import React, { useCallback, useState } from 'react'; import { HttpClient } from 'services/http-client'; +import useSWR from 'swr'; export type CreateCommentDto = Pick; diff --git a/packages/client/src/data/document.ts b/packages/client/src/data/document.ts index e2e9667e..72cfe11e 100644 --- a/packages/client/src/data/document.ts +++ b/packages/client/src/data/document.ts @@ -1,9 +1,9 @@ -import type { IUser, IDocument, IWiki, IAuthority } from '@think/domains'; -import useSWR from 'swr'; -import { useState, useCallback, useEffect } from 'react'; +import type { IAuthority, IDocument, IUser, IWiki } from '@think/domains'; import { useAsyncLoading } from 'hooks/use-async-loading'; -import { HttpClient } from 'services/http-client'; +import { useCallback, useEffect, useState } from 'react'; import { getPublicDocumentDetail } from 'services/document'; +import { HttpClient } from 'services/http-client'; +import useSWR from 'swr'; type ICreateDocument = Partial>; type IDocumentWithAuth = { document: IDocument; authority: IAuthority }; diff --git a/packages/client/src/data/message.ts b/packages/client/src/data/message.ts index 92b25be6..aec57715 100644 --- a/packages/client/src/data/message.ts +++ b/packages/client/src/data/message.ts @@ -1,7 +1,7 @@ import type { IMessage } from '@think/domains'; -import React, { useState, useCallback } from 'react'; -import useSWR from 'swr'; +import React, { useCallback, useState } from 'react'; import { HttpClient } from 'services/http-client'; +import useSWR from 'swr'; /** * 所有消息 diff --git a/packages/client/src/data/template.ts b/packages/client/src/data/template.ts index 68d4d4ef..03101b1d 100644 --- a/packages/client/src/data/template.ts +++ b/packages/client/src/data/template.ts @@ -1,7 +1,7 @@ import type { ITemplate } from '@think/domains'; import { useCallback, useState } from 'react'; -import useSWR from 'swr'; import { HttpClient } from 'services/http-client'; +import useSWR from 'swr'; export const usePublicTemplates = () => { const [page, setPage] = useState(1); diff --git a/packages/client/src/data/user.tsx b/packages/client/src/data/user.tsx index 484e2f3e..3f0f7a62 100644 --- a/packages/client/src/data/user.tsx +++ b/packages/client/src/data/user.tsx @@ -1,9 +1,9 @@ -import type { IUser, ILoginUser } from '@think/domains'; -import useSWR from 'swr'; -import { useCallback, useEffect } from 'react'; -import Router, { useRouter } from 'next/router'; -import { HttpClient } from 'services/http-client'; +import type { ILoginUser, IUser } from '@think/domains'; import { getStorage, setStorage } from 'helpers/storage'; +import Router, { useRouter } from 'next/router'; +import { useCallback, useEffect } from 'react'; +import { HttpClient } from 'services/http-client'; +import useSWR from 'swr'; export const useUser = () => { const router = useRouter(); diff --git a/packages/client/src/data/wiki.tsx b/packages/client/src/data/wiki.tsx index cc4c955d..7d6e8c94 100644 --- a/packages/client/src/data/wiki.tsx +++ b/packages/client/src/data/wiki.tsx @@ -1,7 +1,7 @@ import { CollectType, IDocument, IUser, IWiki, IWikiUser } from '@think/domains'; -import useSWR from 'swr'; import { useCallback, useState } from 'react'; import { HttpClient } from 'services/http-client'; +import useSWR from 'swr'; export type ICreateWiki = Pick; export type IUpdateWiki = Partial; diff --git a/packages/client/src/event/index.ts b/packages/client/src/event/index.ts index 53954397..02f70995 100644 --- a/packages/client/src/event/index.ts +++ b/packages/client/src/event/index.ts @@ -1,4 +1,4 @@ -import { IUser, IDocument, IWiki } from '@think/domains'; +import { IDocument, IUser, IWiki } from '@think/domains'; import { EventEmitter } from 'helpers/event-emitter'; export const event = new EventEmitter(); diff --git a/packages/client/src/helpers/copy.tsx b/packages/client/src/helpers/copy.tsx index 9aa004a6..eda61d7e 100644 --- a/packages/client/src/helpers/copy.tsx +++ b/packages/client/src/helpers/copy.tsx @@ -1,6 +1,7 @@ -import _copy from './copy-to-clipboard'; import { Toast } from '@douyinfe/semi-ui'; +import _copy from './copy-to-clipboard'; + export function copy(text: string | { text: string; format: string }[]) { return _copy(text, () => Toast.success('复制成功')); } diff --git a/packages/client/src/helpers/lru-cache.ts b/packages/client/src/helpers/lru-cache.ts index 06c46ea5..9a11c3a8 100644 --- a/packages/client/src/helpers/lru-cache.ts +++ b/packages/client/src/helpers/lru-cache.ts @@ -1,5 +1,5 @@ import { safeJSONStringify } from './json'; -import { setStorage, getStorage } from './storage'; +import { getStorage, setStorage } from './storage'; class Node { public key: string; diff --git a/packages/client/src/hooks/use-async-loading.tsx b/packages/client/src/hooks/use-async-loading.tsx index 199da4a1..ba7290d3 100644 --- a/packages/client/src/hooks/use-async-loading.tsx +++ b/packages/client/src/hooks/use-async-loading.tsx @@ -1,4 +1,4 @@ -import { useState, useCallback, useEffect, useRef } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; type PromiseAction = (...args: any[]) => Promise; diff --git a/packages/client/src/hooks/use-document-style.ts b/packages/client/src/hooks/use-document-style.ts index 6468c67a..c8e1e718 100644 --- a/packages/client/src/hooks/use-document-style.ts +++ b/packages/client/src/hooks/use-document-style.ts @@ -1,6 +1,6 @@ +import { getStorage, setStorage } from 'helpers/storage'; import { useEffect } from 'react'; import useSWR from 'swr'; -import { setStorage, getStorage } from 'helpers/storage'; export enum Width { 'standardWidth' = 'standardWidth', diff --git a/packages/client/src/hooks/use-dragable-width.ts b/packages/client/src/hooks/use-dragable-width.ts index 78e0cd5b..e4a549f6 100644 --- a/packages/client/src/hooks/use-dragable-width.ts +++ b/packages/client/src/hooks/use-dragable-width.ts @@ -1,8 +1,8 @@ +import { clamp } from 'helpers/clamp'; +import { getStorage, setStorage } from 'helpers/storage'; +import { useWindowSize } from 'hooks/use-window-size'; import { useCallback, useEffect, useRef, useState } from 'react'; import useSWR from 'swr'; -import { useWindowSize } from 'hooks/use-window-size'; -import { setStorage, getStorage } from 'helpers/storage'; -import { clamp } from 'helpers/clamp'; const key = 'dragable-menu-width'; diff --git a/packages/client/src/hooks/use-window-size.tsx b/packages/client/src/hooks/use-window-size.tsx index 365c4d63..05eb971a 100644 --- a/packages/client/src/hooks/use-window-size.tsx +++ b/packages/client/src/hooks/use-window-size.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react'; +import { useEffect, useState } from 'react'; interface Size { width: number | undefined; diff --git a/packages/client/src/layouts/double-column/index.tsx b/packages/client/src/layouts/double-column/index.tsx index a7191f1c..39fca9be 100644 --- a/packages/client/src/layouts/double-column/index.tsx +++ b/packages/client/src/layouts/double-column/index.tsx @@ -1,9 +1,10 @@ -import React from 'react'; -import cls from 'classnames'; -import { Layout as SemiLayout, Button } from '@douyinfe/semi-ui'; import { IconChevronLeft, IconChevronRight } from '@douyinfe/semi-icons'; -import SplitPane from 'react-split-pane'; +import { Button, Layout as SemiLayout } from '@douyinfe/semi-ui'; +import cls from 'classnames'; import { useDragableWidth } from 'hooks/use-dragable-width'; +import React from 'react'; +import SplitPane from 'react-split-pane'; + import { RouterHeader } from '../router-header'; import styles from './index.module.scss'; diff --git a/packages/client/src/layouts/public-double-column/index.tsx b/packages/client/src/layouts/public-double-column/index.tsx index a18bc1d0..aa138698 100644 --- a/packages/client/src/layouts/public-double-column/index.tsx +++ b/packages/client/src/layouts/public-double-column/index.tsx @@ -1,9 +1,10 @@ -import React from 'react'; -import cls from 'classnames'; -import { Layout as SemiLayout, Button } from '@douyinfe/semi-ui'; import { IconChevronLeft, IconChevronRight } from '@douyinfe/semi-icons'; -import SplitPane from 'react-split-pane'; +import { Button, Layout as SemiLayout } from '@douyinfe/semi-ui'; +import cls from 'classnames'; import { useDragableWidth } from 'hooks/use-dragable-width'; +import React from 'react'; +import SplitPane from 'react-split-pane'; + import styles from './index.module.scss'; const { Sider, Content } = SemiLayout; diff --git a/packages/client/src/layouts/router-header/index.tsx b/packages/client/src/layouts/router-header/index.tsx index 7aba4f6a..a333f115 100644 --- a/packages/client/src/layouts/router-header/index.tsx +++ b/packages/client/src/layouts/router-header/index.tsx @@ -1,18 +1,19 @@ -import React from 'react'; -import { Layout as SemiLayout, Nav, Space, Typography, Dropdown, Button } from '@douyinfe/semi-ui'; import { IconMenu } from '@douyinfe/semi-icons'; -import Router, { useRouter } from 'next/router'; -import { User } from 'components/user'; -import { WikiOrDocumentCreator } from 'components/wiki-or-document-creator'; +import { Button, Dropdown, Layout as SemiLayout, Nav, Space, Typography } from '@douyinfe/semi-ui'; import { LogoImage, LogoText } from 'components/logo'; -import { Theme } from 'components/theme'; import { Message } from 'components/message'; import { Search } from 'components/search'; -import { useWindowSize } from 'hooks/use-window-size'; +import { Theme } from 'components/theme'; +import { User } from 'components/user'; +import { WikiOrDocumentCreator } from 'components/wiki-or-document-creator'; import { useToggle } from 'hooks/use-toggle'; +import { useWindowSize } from 'hooks/use-window-size'; +import Router, { useRouter } from 'next/router'; +import React from 'react'; + +import styles from './index.module.scss'; import { Recent, RecentModal } from './recent'; import { Wiki, WikiModal } from './wiki'; -import styles from './index.module.scss'; const { Header: SemiHeader } = SemiLayout; const { Text } = Typography; diff --git a/packages/client/src/layouts/router-header/recent.tsx b/packages/client/src/layouts/router-header/recent.tsx index 4d791595..eb636d06 100644 --- a/packages/client/src/layouts/router-header/recent.tsx +++ b/packages/client/src/layouts/router-header/recent.tsx @@ -1,16 +1,17 @@ -import React from 'react'; -import Link from 'next/link'; -import { Typography, Space, Dropdown, Tabs, TabPane, Modal } from '@douyinfe/semi-ui'; import { IconChevronDown } from '@douyinfe/semi-icons'; +import { Dropdown, Modal, Space, TabPane, Tabs, Typography } from '@douyinfe/semi-ui'; +import { DataRender } from 'components/data-render'; +import { DocumentStar } from 'components/document/star'; +import { Empty } from 'components/empty'; +import { IconDocumentFill } from 'components/icons/IconDocumentFill'; +import { LocaleTime } from 'components/locale-time'; import { useRecentDocuments } from 'data/document'; import { useToggle } from 'hooks/use-toggle'; -import { Empty } from 'components/empty'; -import { DataRender } from 'components/data-render'; -import { LocaleTime } from 'components/locale-time'; -import { DocumentStar } from 'components/document/star'; -import { IconDocumentFill } from 'components/icons/IconDocumentFill'; -import { Placeholder } from './placeholder'; +import Link from 'next/link'; +import React from 'react'; + import styles from './index.module.scss'; +import { Placeholder } from './placeholder'; const { Text } = Typography; diff --git a/packages/client/src/layouts/router-header/wiki.tsx b/packages/client/src/layouts/router-header/wiki.tsx index a58fead0..b8971d51 100644 --- a/packages/client/src/layouts/router-header/wiki.tsx +++ b/packages/client/src/layouts/router-header/wiki.tsx @@ -1,14 +1,15 @@ -import React from 'react'; -import { useRouter } from 'next/router'; -import Link from 'next/link'; -import { Avatar, Typography, Space, Dropdown, Modal } from '@douyinfe/semi-ui'; import { IconChevronDown } from '@douyinfe/semi-icons'; -import { useStaredWikis, useWikiDetail } from 'data/wiki'; -import { Empty } from 'components/empty'; +import { Avatar, Dropdown, Modal, Space, Typography } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; +import { Empty } from 'components/empty'; import { WikiStar } from 'components/wiki/star'; -import { Placeholder } from './placeholder'; +import { useStaredWikis, useWikiDetail } from 'data/wiki'; +import Link from 'next/link'; +import { useRouter } from 'next/router'; +import React from 'react'; + import styles from './index.module.scss'; +import { Placeholder } from './placeholder'; const { Text } = Typography; diff --git a/packages/client/src/layouts/single-column/index.tsx b/packages/client/src/layouts/single-column/index.tsx index 0399bb21..4bf5b8d7 100644 --- a/packages/client/src/layouts/single-column/index.tsx +++ b/packages/client/src/layouts/single-column/index.tsx @@ -1,5 +1,6 @@ -import React from 'react'; import { Layout as SemiLayout } from '@douyinfe/semi-ui'; +import React from 'react'; + import { RouterHeader } from '../router-header'; import styles from './index.module.scss'; diff --git a/packages/client/src/pages/_app.tsx b/packages/client/src/pages/_app.tsx index 57edb730..b6ac36e5 100644 --- a/packages/client/src/pages/_app.tsx +++ b/packages/client/src/pages/_app.tsx @@ -1,12 +1,13 @@ -import type { AppProps } from 'next/app'; -import Head from 'next/head'; -import React from 'react'; -import { useTheme } from 'hooks/use-theme'; import 'tiptap/fix-match-nodes'; import 'viewerjs/dist/viewer.css'; import 'styles/globals.scss'; import 'tiptap/core/styles/index.scss'; +import { useTheme } from 'hooks/use-theme'; +import type { AppProps } from 'next/app'; +import Head from 'next/head'; +import React from 'react'; + function MyApp({ Component, pageProps }: AppProps) { useTheme(); diff --git a/packages/client/src/pages/feature/editor/index.tsx b/packages/client/src/pages/feature/editor/index.tsx index b2a073f1..783cbd45 100644 --- a/packages/client/src/pages/feature/editor/index.tsx +++ b/packages/client/src/pages/feature/editor/index.tsx @@ -1,8 +1,8 @@ -import React, { useRef } from 'react'; -import { useRouter } from 'next/router'; -import { SingleColumnLayout } from 'layouts/single-column'; -import { ICollaborationEditorProps, CollaborationEditor, ICollaborationRefProps } from 'tiptap/editor'; import { useUser } from 'data/user'; +import { SingleColumnLayout } from 'layouts/single-column'; +import { useRouter } from 'next/router'; +import React, { useRef } from 'react'; +import { CollaborationEditor, ICollaborationEditorProps, ICollaborationRefProps } from 'tiptap/editor'; const Page = () => { const $container = useRef(); diff --git a/packages/client/src/pages/find/index.tsx b/packages/client/src/pages/find/index.tsx index 863f0442..31a28ae3 100644 --- a/packages/client/src/pages/find/index.tsx +++ b/packages/client/src/pages/find/index.tsx @@ -1,12 +1,12 @@ -import type { NextPage } from 'next'; -import React from 'react'; import { List, Pagination, Typography } from '@douyinfe/semi-ui'; -import { SingleColumnLayout } from 'layouts/single-column'; -import { useAllPublicWikis } from 'data/wiki'; +import { DataRender } from 'components/data-render'; import { Empty } from 'components/empty'; import { Seo } from 'components/seo'; -import { DataRender } from 'components/data-render'; -import { WikiCardPlaceholder, WikiCard } from 'components/wiki/card'; +import { WikiCard, WikiCardPlaceholder } from 'components/wiki/card'; +import { useAllPublicWikis } from 'data/wiki'; +import { SingleColumnLayout } from 'layouts/single-column'; +import type { NextPage } from 'next'; +import React from 'react'; const grid = { gutter: 16, diff --git a/packages/client/src/pages/index.tsx b/packages/client/src/pages/index.tsx index a20616a5..5dc878c7 100644 --- a/packages/client/src/pages/index.tsx +++ b/packages/client/src/pages/index.tsx @@ -1,19 +1,20 @@ -import type { NextPage } from 'next'; +import { Avatar, Button, List, Table, Typography } from '@douyinfe/semi-ui'; import type { IDocument } from '@think/domains'; +import { DataRender } from 'components/data-render'; +import { DocumentActions } from 'components/document/actions'; +import { Empty } from 'components/empty'; +import { LocaleTime } from 'components/locale-time'; +import { Seo } from 'components/seo'; +import { WikiCreator } from 'components/wiki/create'; +import { WikiPinCard, WikiPinCardPlaceholder } from 'components/wiki/pin-card'; +import { useRecentDocuments } from 'data/document'; +import { useStaredWikis } from 'data/wiki'; +import { useToggle } from 'hooks/use-toggle'; +import { SingleColumnLayout } from 'layouts/single-column'; +import type { NextPage } from 'next'; import Link from 'next/link'; import React, { useMemo } from 'react'; -import { Typography, Button, Table, List, Avatar } from '@douyinfe/semi-ui'; -import { useToggle } from 'hooks/use-toggle'; -import { Seo } from 'components/seo'; -import { DataRender } from 'components/data-render'; -import { SingleColumnLayout } from 'layouts/single-column'; -import { WikiCreator } from 'components/wiki/create'; -import { LocaleTime } from 'components/locale-time'; -import { DocumentActions } from 'components/document/actions'; -import { useStaredWikis } from 'data/wiki'; -import { useRecentDocuments } from 'data/document'; -import { WikiPinCardPlaceholder, WikiPinCard } from 'components/wiki/pin-card'; -import { Empty } from 'components/empty'; + import styles from './index.module.scss'; const { Title } = Typography; diff --git a/packages/client/src/pages/login/index.tsx b/packages/client/src/pages/login/index.tsx index e280f823..d9bf21b1 100644 --- a/packages/client/src/pages/login/index.tsx +++ b/packages/client/src/pages/login/index.tsx @@ -1,10 +1,11 @@ +import { Button, Form, Layout, Space, Typography } from '@douyinfe/semi-ui'; +import { Author } from 'components/author'; +import { LogoImage, LogoText } from 'components/logo'; +import { Seo } from 'components/seo'; +import { useUser } from 'data/user'; import Link from 'next/link'; import React from 'react'; -import { Form, Button, Layout, Space, Typography } from '@douyinfe/semi-ui'; -import { useUser } from 'data/user'; -import { Seo } from 'components/seo'; -import { LogoImage, LogoText } from 'components/logo'; -import { Author } from 'components/author'; + import styles from './index.module.scss'; const { Content, Footer } = Layout; diff --git a/packages/client/src/pages/register/index.tsx b/packages/client/src/pages/register/index.tsx index 4e6b033e..5867502f 100644 --- a/packages/client/src/pages/register/index.tsx +++ b/packages/client/src/pages/register/index.tsx @@ -1,12 +1,13 @@ -import React from 'react'; -import Router from 'next/router'; -import Link from 'next/link'; -import { Form, Button, Layout, Space, Typography, Modal } from '@douyinfe/semi-ui'; -import { Seo } from 'components/seo'; -import { LogoImage, LogoText } from 'components/logo'; +import { Button, Form, Layout, Modal, Space, Typography } from '@douyinfe/semi-ui'; import { Author } from 'components/author'; +import { LogoImage, LogoText } from 'components/logo'; +import { Seo } from 'components/seo'; import { useAsyncLoading } from 'hooks/use-async-loading'; +import Link from 'next/link'; +import Router from 'next/router'; +import React from 'react'; import { register as registerApi } from 'services/user'; + import styles from './index.module.scss'; const { Content, Footer } = Layout; diff --git a/packages/client/src/pages/share/document/[documentId]/index.tsx b/packages/client/src/pages/share/document/[documentId]/index.tsx index 537f52a8..e2d8b312 100644 --- a/packages/client/src/pages/share/document/[documentId]/index.tsx +++ b/packages/client/src/pages/share/document/[documentId]/index.tsx @@ -1,6 +1,6 @@ -import React from 'react'; -import { NextPage } from 'next'; import { DocumentPublicReader } from 'components/document/reader/public'; +import { NextPage } from 'next'; +import React from 'react'; interface IProps { documentId: string; diff --git a/packages/client/src/pages/share/wiki/[wikiId]/document/[documentId]/index.tsx b/packages/client/src/pages/share/wiki/[wikiId]/document/[documentId]/index.tsx index 29e31660..3bdcc9ca 100644 --- a/packages/client/src/pages/share/wiki/[wikiId]/document/[documentId]/index.tsx +++ b/packages/client/src/pages/share/wiki/[wikiId]/document/[documentId]/index.tsx @@ -1,8 +1,8 @@ -import React from 'react'; -import { NextPage } from 'next'; -import { PublicDoubleColumnLayout } from 'layouts/public-double-column'; -import { WikiPublicTocs } from 'components/wiki/tocs/public'; import { DocumentPublicReader } from 'components/document/reader/public'; +import { WikiPublicTocs } from 'components/wiki/tocs/public'; +import { PublicDoubleColumnLayout } from 'layouts/public-double-column'; +import { NextPage } from 'next'; +import React from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/pages/share/wiki/[wikiId]/index.tsx b/packages/client/src/pages/share/wiki/[wikiId]/index.tsx index f19a8aa4..9538e8ba 100644 --- a/packages/client/src/pages/share/wiki/[wikiId]/index.tsx +++ b/packages/client/src/pages/share/wiki/[wikiId]/index.tsx @@ -1,10 +1,10 @@ -import React from 'react'; -import { NextPage } from 'next'; -import { PublicDoubleColumnLayout } from 'layouts/public-double-column'; -import { usePublicWikiHomeDoc } from 'data/wiki'; import { DataRender } from 'components/data-render'; -import { WikiPublicTocs } from 'components/wiki/tocs/public'; import { DocumentPublicReader } from 'components/document/reader/public'; +import { WikiPublicTocs } from 'components/wiki/tocs/public'; +import { usePublicWikiHomeDoc } from 'data/wiki'; +import { PublicDoubleColumnLayout } from 'layouts/public-double-column'; +import { NextPage } from 'next'; +import React from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/pages/star/index.tsx b/packages/client/src/pages/star/index.tsx index 3062291e..1e208c96 100644 --- a/packages/client/src/pages/star/index.tsx +++ b/packages/client/src/pages/star/index.tsx @@ -1,14 +1,15 @@ +import { List, Typography } from '@douyinfe/semi-ui'; +import { DataRender } from 'components/data-render'; +import { DocumentCard, DocumentCardPlaceholder } from 'components/document/card'; +import { Empty } from 'components/empty'; +import { Seo } from 'components/seo'; +import { WikiCard, WikiCardPlaceholder } from 'components/wiki/card'; +import { useStaredDocuments } from 'data/document'; +import { useStaredWikis } from 'data/wiki'; +import { SingleColumnLayout } from 'layouts/single-column'; import type { NextPage } from 'next'; import React from 'react'; -import { Typography, List } from '@douyinfe/semi-ui'; -import { Seo } from 'components/seo'; -import { DataRender } from 'components/data-render'; -import { SingleColumnLayout } from 'layouts/single-column'; -import { useStaredWikis } from 'data/wiki'; -import { useStaredDocuments } from 'data/document'; -import { WikiCardPlaceholder, WikiCard } from 'components/wiki/card'; -import { DocumentCardPlaceholder, DocumentCard } from 'components/document/card'; -import { Empty } from 'components/empty'; + import styles from './index.module.scss'; const { Title } = Typography; diff --git a/packages/client/src/pages/template/[templateId]/index.tsx b/packages/client/src/pages/template/[templateId]/index.tsx index 75330a82..60706890 100644 --- a/packages/client/src/pages/template/[templateId]/index.tsx +++ b/packages/client/src/pages/template/[templateId]/index.tsx @@ -1,5 +1,5 @@ -import { NextPage } from 'next'; import { TemplateEditor } from 'components/template/editor'; +import { NextPage } from 'next'; interface IProps { templateId: string; diff --git a/packages/client/src/pages/template/index.tsx b/packages/client/src/pages/template/index.tsx index 38d190a0..520db141 100644 --- a/packages/client/src/pages/template/index.tsx +++ b/packages/client/src/pages/template/index.tsx @@ -1,11 +1,12 @@ +import { Button, TabPane, Tabs, Typography } from '@douyinfe/semi-ui'; +import { Seo } from 'components/seo'; +import { TemplateList } from 'components/template/list'; +import { useOwnTemplates, usePublicTemplates } from 'data/template'; +import { SingleColumnLayout } from 'layouts/single-column'; import type { NextPage } from 'next'; import Router, { useRouter } from 'next/router'; import React, { useCallback } from 'react'; -import { Typography, Button, Tabs, TabPane } from '@douyinfe/semi-ui'; -import { Seo } from 'components/seo'; -import { SingleColumnLayout } from 'layouts/single-column'; -import { usePublicTemplates, useOwnTemplates } from 'data/template'; -import { TemplateList } from 'components/template/list'; + import styles from './index.module.scss'; const { Title } = Typography; diff --git a/packages/client/src/pages/wiki/[wikiId]/document/[documentId]/edit/index.tsx b/packages/client/src/pages/wiki/[wikiId]/document/[documentId]/edit/index.tsx index b4e30312..254bc563 100644 --- a/packages/client/src/pages/wiki/[wikiId]/document/[documentId]/edit/index.tsx +++ b/packages/client/src/pages/wiki/[wikiId]/document/[documentId]/edit/index.tsx @@ -1,6 +1,6 @@ +import { DocumentEditor } from 'components/document/editor'; import { NextPage } from 'next'; import React from 'react'; -import { DocumentEditor } from 'components/document/editor'; interface IProps { wikiId: string; diff --git a/packages/client/src/pages/wiki/[wikiId]/document/[documentId]/index.tsx b/packages/client/src/pages/wiki/[wikiId]/document/[documentId]/index.tsx index 7f1a6411..150636c7 100644 --- a/packages/client/src/pages/wiki/[wikiId]/document/[documentId]/index.tsx +++ b/packages/client/src/pages/wiki/[wikiId]/document/[documentId]/index.tsx @@ -1,8 +1,8 @@ +import { DocumentReader } from 'components/document/reader'; +import { WikiTocs } from 'components/wiki/tocs'; +import { DoubleColumnLayout } from 'layouts/double-column'; import { NextPage } from 'next'; import React from 'react'; -import { DoubleColumnLayout } from 'layouts/double-column'; -import { WikiTocs } from 'components/wiki/tocs'; -import { DocumentReader } from 'components/document/reader'; interface IProps { wikiId: string; diff --git a/packages/client/src/pages/wiki/[wikiId]/documents/index.tsx b/packages/client/src/pages/wiki/[wikiId]/documents/index.tsx index 58374a5d..cec67b1d 100644 --- a/packages/client/src/pages/wiki/[wikiId]/documents/index.tsx +++ b/packages/client/src/pages/wiki/[wikiId]/documents/index.tsx @@ -1,18 +1,18 @@ +import { List, TabPane, Tabs, Typography } from '@douyinfe/semi-ui'; +import { DataRender } from 'components/data-render'; +import { DocumentCard, DocumentCardPlaceholder } from 'components/document/card'; +import { DocumentCreator } from 'components/document-creator'; +import { Empty } from 'components/empty'; +import { Seo } from 'components/seo'; +import { WikiDocumentsShare } from 'components/wiki/documents-share'; +import { WikiTocs } from 'components/wiki/tocs'; +import { WikiTocsManager } from 'components/wiki/tocs/manager'; +import { useWikiDocs } from 'data/wiki'; +import { CreateDocumentIllustration } from 'illustrations/create-document'; +import { DoubleColumnLayout } from 'layouts/double-column'; import { NextPage } from 'next'; import Router, { useRouter } from 'next/router'; import React, { useCallback } from 'react'; -import { Typography, List, Tabs, TabPane } from '@douyinfe/semi-ui'; -import { CreateDocumentIllustration } from 'illustrations/create-document'; -import { DoubleColumnLayout } from 'layouts/double-column'; -import { Seo } from 'components/seo'; -import { DataRender } from 'components/data-render'; -import { WikiTocs } from 'components/wiki/tocs'; -import { WikiTocsManager } from 'components/wiki/tocs/manager'; -import { DocumentCardPlaceholder, DocumentCard } from 'components/document/card'; -import { Empty } from 'components/empty'; -import { DocumentCreator } from 'components/document-creator'; -import { WikiDocumentsShare } from 'components/wiki/documents-share'; -import { useWikiDocs } from 'data/wiki'; interface IProps { wikiId: string; diff --git a/packages/client/src/pages/wiki/[wikiId]/index.tsx b/packages/client/src/pages/wiki/[wikiId]/index.tsx index e1c1f200..0e151488 100644 --- a/packages/client/src/pages/wiki/[wikiId]/index.tsx +++ b/packages/client/src/pages/wiki/[wikiId]/index.tsx @@ -1,10 +1,10 @@ +import { DataRender } from 'components/data-render'; +import { DocumentReader } from 'components/document/reader'; +import { WikiTocs } from 'components/wiki/tocs'; +import { useWikiHomeDoc } from 'data/wiki'; +import { DoubleColumnLayout } from 'layouts/double-column'; import { NextPage } from 'next'; import React from 'react'; -import { DoubleColumnLayout } from 'layouts/double-column'; -import { useWikiHomeDoc } from 'data/wiki'; -import { DataRender } from 'components/data-render'; -import { WikiTocs } from 'components/wiki/tocs'; -import { DocumentReader } from 'components/document/reader'; interface IProps { wikiId: string; diff --git a/packages/client/src/pages/wiki/[wikiId]/setting/index.tsx b/packages/client/src/pages/wiki/[wikiId]/setting/index.tsx index 94c945d6..9eeebd8f 100644 --- a/packages/client/src/pages/wiki/[wikiId]/setting/index.tsx +++ b/packages/client/src/pages/wiki/[wikiId]/setting/index.tsx @@ -1,9 +1,9 @@ -import React, { useCallback } from 'react'; +import { WikiSetting } from 'components/wiki/setting'; +import { WikiTocs } from 'components/wiki/tocs'; +import { DoubleColumnLayout } from 'layouts/double-column'; import { NextPage } from 'next'; import Router, { useRouter } from 'next/router'; -import { DoubleColumnLayout } from 'layouts/double-column'; -import { WikiTocs } from 'components/wiki/tocs'; -import { WikiSetting } from 'components/wiki/setting'; +import React, { useCallback } from 'react'; interface IProps { wikiId: string; diff --git a/packages/client/src/pages/wiki/index.tsx b/packages/client/src/pages/wiki/index.tsx index 49ec20ec..5d8940da 100644 --- a/packages/client/src/pages/wiki/index.tsx +++ b/packages/client/src/pages/wiki/index.tsx @@ -1,14 +1,14 @@ -import type { NextPage } from 'next'; -import React from 'react'; -import { Typography, Tabs, TabPane, List } from '@douyinfe/semi-ui'; -import { SingleColumnLayout } from 'layouts/single-column'; -import { useAllWikis, useOwnWikis, useJoinWikis } from 'data/wiki'; -import { CreateWikiIllustration } from 'illustrations/create-wiki'; +import { List, TabPane, Tabs, Typography } from '@douyinfe/semi-ui'; +import { DataRender } from 'components/data-render'; import { Empty } from 'components/empty'; import { Seo } from 'components/seo'; -import { DataRender } from 'components/data-render'; -import { WikiCardPlaceholder, WikiCard } from 'components/wiki/card'; +import { WikiCard, WikiCardPlaceholder } from 'components/wiki/card'; import { WikiCreator } from 'components/wiki-creator'; +import { useAllWikis, useJoinWikis, useOwnWikis } from 'data/wiki'; +import { CreateWikiIllustration } from 'illustrations/create-wiki'; +import { SingleColumnLayout } from 'layouts/single-column'; +import type { NextPage } from 'next'; +import React from 'react'; const grid = { gutter: 16, diff --git a/packages/client/src/services/document.ts b/packages/client/src/services/document.ts index 1aab461a..0322f27f 100644 --- a/packages/client/src/services/document.ts +++ b/packages/client/src/services/document.ts @@ -1,4 +1,5 @@ import { IDocument, IUser, IWiki } from '@think/domains'; + import { HttpClient } from './http-client'; /** diff --git a/packages/client/src/services/http-client.tsx b/packages/client/src/services/http-client.tsx index 6b4c7992..a0c6bc22 100644 --- a/packages/client/src/services/http-client.tsx +++ b/packages/client/src/services/http-client.tsx @@ -1,5 +1,5 @@ -import axios from 'axios'; import { Toast } from '@douyinfe/semi-ui'; +import axios from 'axios'; import Router from 'next/router'; export const HttpClient = axios.create({ diff --git a/packages/client/src/services/user.ts b/packages/client/src/services/user.ts index 51278a28..95bb8522 100644 --- a/packages/client/src/services/user.ts +++ b/packages/client/src/services/user.ts @@ -1,4 +1,5 @@ import type { IPagination, IUser } from '@think/domains'; + import { HttpClient } from './http-client'; export const register = (data: Partial): Promise => { diff --git a/packages/client/src/tiptap/components/color-picker/index.tsx b/packages/client/src/tiptap/components/color-picker/index.tsx index 5067080a..2b475cb1 100644 --- a/packages/client/src/tiptap/components/color-picker/index.tsx +++ b/packages/client/src/tiptap/components/color-picker/index.tsx @@ -1,8 +1,9 @@ -import React, { useMemo } from 'react'; -import { Dropdown, Typography, Modal, SideSheet, Row, Col } from '@douyinfe/semi-ui'; -import styles from './style.module.scss'; -import { useWindowSize } from 'hooks/use-window-size'; +import { Col, Dropdown, Modal, Row, SideSheet, Typography } from '@douyinfe/semi-ui'; import { useToggle } from 'hooks/use-toggle'; +import { useWindowSize } from 'hooks/use-window-size'; +import React, { useMemo } from 'react'; + +import styles from './style.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/components/size.tsx b/packages/client/src/tiptap/components/size.tsx index 0c5f1748..08a8d341 100644 --- a/packages/client/src/tiptap/components/size.tsx +++ b/packages/client/src/tiptap/components/size.tsx @@ -1,6 +1,6 @@ -import { useCallback, useRef } from 'react'; -import { Button, Form, Dropdown } from '@douyinfe/semi-ui'; +import { Button, Dropdown, Form } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; +import { useCallback, useRef } from 'react'; type ISize = { width: number; height: number }; diff --git a/packages/client/src/tiptap/components/skeleton.tsx b/packages/client/src/tiptap/components/skeleton.tsx index b35f12eb..ad941f13 100644 --- a/packages/client/src/tiptap/components/skeleton.tsx +++ b/packages/client/src/tiptap/components/skeleton.tsx @@ -1,5 +1,5 @@ -import React from 'react'; import { Skeleton } from '@douyinfe/semi-ui'; +import React from 'react'; export const DocumentSkeleton = () => { const placeholder = ( diff --git a/packages/client/src/tiptap/core/extensions/attachment.ts b/packages/client/src/tiptap/core/extensions/attachment.ts index 2f02970d..2105bf08 100644 --- a/packages/client/src/tiptap/core/extensions/attachment.ts +++ b/packages/client/src/tiptap/core/extensions/attachment.ts @@ -1,7 +1,7 @@ -import { Node, mergeAttributes } from '@tiptap/core'; +import { mergeAttributes, Node } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; -import { getDatasetAttribute } from 'tiptap/prose-utils'; import { AttachmentWrapper } from 'tiptap/core/wrappers/attachment'; +import { getDatasetAttribute } from 'tiptap/prose-utils'; declare module '@tiptap/core' { interface Commands { diff --git a/packages/client/src/tiptap/core/extensions/background-color.ts b/packages/client/src/tiptap/core/extensions/background-color.ts index 458bccef..ad8280a2 100644 --- a/packages/client/src/tiptap/core/extensions/background-color.ts +++ b/packages/client/src/tiptap/core/extensions/background-color.ts @@ -1,6 +1,7 @@ -import { Extension } from '@tiptap/core'; import '@tiptap/extension-text-style'; +import { Extension } from '@tiptap/core'; + export type ColorOptions = { types: string[]; }; diff --git a/packages/client/src/tiptap/core/extensions/blockquote.ts b/packages/client/src/tiptap/core/extensions/blockquote.ts index 31002b6a..05587a6a 100644 --- a/packages/client/src/tiptap/core/extensions/blockquote.ts +++ b/packages/client/src/tiptap/core/extensions/blockquote.ts @@ -1,6 +1,6 @@ -import { Blockquote as BuiltInBlockquote } from '@tiptap/extension-blockquote'; import { wrappingInputRule } from '@tiptap/core'; -import { getParents, getMarkdownSource } from 'tiptap/prose-utils'; +import { Blockquote as BuiltInBlockquote } from '@tiptap/extension-blockquote'; +import { getMarkdownSource, getParents } from 'tiptap/prose-utils'; export const Blockquote = BuiltInBlockquote.extend({ addAttributes() { diff --git a/packages/client/src/tiptap/core/extensions/callout.ts b/packages/client/src/tiptap/core/extensions/callout.ts index afa83c29..22020e63 100644 --- a/packages/client/src/tiptap/core/extensions/callout.ts +++ b/packages/client/src/tiptap/core/extensions/callout.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes, wrappingInputRule } from '@tiptap/core'; +import { mergeAttributes, Node, wrappingInputRule } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { CalloutWrapper } from 'tiptap/core/wrappers/callout'; diff --git a/packages/client/src/tiptap/core/extensions/code-block.ts b/packages/client/src/tiptap/core/extensions/code-block.ts index f5e146f7..3c9fb68b 100644 --- a/packages/client/src/tiptap/core/extensions/code-block.ts +++ b/packages/client/src/tiptap/core/extensions/code-block.ts @@ -1,9 +1,9 @@ -import { Node, textblockTypeInputRule, mergeAttributes } from '@tiptap/core'; -import { Plugin, PluginKey, TextSelection } from 'prosemirror-state'; +import { mergeAttributes, Node, textblockTypeInputRule } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { lowlight } from 'lowlight/lib/all'; -import { LowlightPlugin } from 'tiptap/prose-utils'; +import { Plugin, PluginKey, TextSelection } from 'prosemirror-state'; import { CodeBlockWrapper } from 'tiptap/core/wrappers/code-block'; +import { LowlightPlugin } from 'tiptap/prose-utils'; export interface CodeBlockOptions { /** diff --git a/packages/client/src/tiptap/core/extensions/collaboration-cursor/cursor-plugin/index.ts b/packages/client/src/tiptap/core/extensions/collaboration-cursor/cursor-plugin/index.ts index e38ae57d..cf7ec2e4 100644 --- a/packages/client/src/tiptap/core/extensions/collaboration-cursor/cursor-plugin/index.ts +++ b/packages/client/src/tiptap/core/extensions/collaboration-cursor/cursor-plugin/index.ts @@ -1,10 +1,9 @@ -import * as Y from 'yjs'; -import { Decoration, DecorationSet } from 'prosemirror-view'; // eslint-disable-line +import * as math from 'lib0/math'; import { Plugin } from 'prosemirror-state'; // eslint-disable-line +import { Decoration, DecorationSet } from 'prosemirror-view'; // eslint-disable-line import { absolutePositionToRelativePosition, relativePositionToAbsolutePosition, setMeta } from 'y-prosemirror'; import { yCursorPluginKey, ySyncPluginKey } from 'y-prosemirror'; - -import * as math from 'lib0/math'; +import * as Y from 'yjs'; /** * Default generator for a cursor element diff --git a/packages/client/src/tiptap/core/extensions/collaboration-cursor/index.ts b/packages/client/src/tiptap/core/extensions/collaboration-cursor/index.ts index 7ab00372..6bdd8f00 100644 --- a/packages/client/src/tiptap/core/extensions/collaboration-cursor/index.ts +++ b/packages/client/src/tiptap/core/extensions/collaboration-cursor/index.ts @@ -1,7 +1,8 @@ import { Extension } from '@tiptap/core'; -import { yCursorPlugin } from './cursor-plugin'; import { EditorState } from 'prosemirror-state'; +import { yCursorPlugin } from './cursor-plugin'; + type CollaborationCursorStorage = { users: { clientId: number; [key: string]: any }[]; }; diff --git a/packages/client/src/tiptap/core/extensions/collaboration/collaboration.ts b/packages/client/src/tiptap/core/extensions/collaboration/collaboration.ts index 82a53504..a9e7b76d 100644 --- a/packages/client/src/tiptap/core/extensions/collaboration/collaboration.ts +++ b/packages/client/src/tiptap/core/extensions/collaboration/collaboration.ts @@ -1,6 +1,6 @@ import { Extension } from '@tiptap/core'; -import { UndoManager } from 'yjs'; import { redo, undo, ySyncPlugin, yUndoPlugin, yUndoPluginKey } from 'y-prosemirror'; +import { UndoManager } from 'yjs'; declare module '@tiptap/core' { interface Commands { diff --git a/packages/client/src/tiptap/core/extensions/collaboration/helpers/is-change-origin.ts b/packages/client/src/tiptap/core/extensions/collaboration/helpers/is-change-origin.ts index 1bec993d..0325d666 100644 --- a/packages/client/src/tiptap/core/extensions/collaboration/helpers/is-change-origin.ts +++ b/packages/client/src/tiptap/core/extensions/collaboration/helpers/is-change-origin.ts @@ -1,5 +1,5 @@ -import { ySyncPluginKey } from 'y-prosemirror'; import { Transaction } from 'prosemirror-state'; +import { ySyncPluginKey } from 'y-prosemirror'; export function isChangeOrigin(transaction: Transaction): boolean { return !!transaction.getMeta(ySyncPluginKey); diff --git a/packages/client/src/tiptap/core/extensions/countdown.ts b/packages/client/src/tiptap/core/extensions/countdown.ts index 373a641a..8347d769 100644 --- a/packages/client/src/tiptap/core/extensions/countdown.ts +++ b/packages/client/src/tiptap/core/extensions/countdown.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes } from '@tiptap/core'; +import { mergeAttributes, Node } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { CountdownWrapper } from 'tiptap/core/wrappers/countdown'; import { getDatasetAttribute } from 'tiptap/prose-utils'; diff --git a/packages/client/src/tiptap/core/extensions/document-children.ts b/packages/client/src/tiptap/core/extensions/document-children.ts index 9bd3d99b..4acee279 100644 --- a/packages/client/src/tiptap/core/extensions/document-children.ts +++ b/packages/client/src/tiptap/core/extensions/document-children.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes, wrappingInputRule } from '@tiptap/core'; +import { mergeAttributes, Node, wrappingInputRule } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { DocumentChildrenWrapper } from 'tiptap/core/wrappers/document-children'; import { getDatasetAttribute } from 'tiptap/prose-utils'; diff --git a/packages/client/src/tiptap/core/extensions/document-reference.ts b/packages/client/src/tiptap/core/extensions/document-reference.ts index 2113906e..2e00641a 100644 --- a/packages/client/src/tiptap/core/extensions/document-reference.ts +++ b/packages/client/src/tiptap/core/extensions/document-reference.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes, wrappingInputRule } from '@tiptap/core'; +import { mergeAttributes, Node, wrappingInputRule } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { DocumentReferenceWrapper } from 'tiptap/core/wrappers/document-reference'; import { getDatasetAttribute } from 'tiptap/prose-utils'; diff --git a/packages/client/src/tiptap/core/extensions/emoji.ts b/packages/client/src/tiptap/core/extensions/emoji.ts index 9d0d8cb0..f0eb7a49 100644 --- a/packages/client/src/tiptap/core/extensions/emoji.ts +++ b/packages/client/src/tiptap/core/extensions/emoji.ts @@ -1,7 +1,7 @@ import { Node } from '@tiptap/core'; import { ReactRenderer } from '@tiptap/react'; -import { Plugin, PluginKey } from 'prosemirror-state'; import Suggestion from '@tiptap/suggestion'; +import { Plugin, PluginKey } from 'prosemirror-state'; import tippy from 'tippy.js'; import { EXTENSION_PRIORITY_HIGHEST } from 'tiptap/core/constants'; import { EmojiList } from 'tiptap/core/wrappers/emoji-list'; diff --git a/packages/client/src/tiptap/core/extensions/flow.ts b/packages/client/src/tiptap/core/extensions/flow.ts index 3265532e..c5250c86 100644 --- a/packages/client/src/tiptap/core/extensions/flow.ts +++ b/packages/client/src/tiptap/core/extensions/flow.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes, nodeInputRule } from '@tiptap/core'; +import { mergeAttributes, Node, nodeInputRule } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { FlowWrapper } from 'tiptap/core/wrappers/flow'; import { getDatasetAttribute } from 'tiptap/prose-utils'; diff --git a/packages/client/src/tiptap/core/extensions/focus.ts b/packages/client/src/tiptap/core/extensions/focus.ts index e32fdaa4..59fbe528 100644 --- a/packages/client/src/tiptap/core/extensions/focus.ts +++ b/packages/client/src/tiptap/core/extensions/focus.ts @@ -1,6 +1,6 @@ import { Extension } from '@tiptap/core'; import { Plugin, PluginKey } from 'prosemirror-state'; -import { DecorationSet, Decoration } from 'prosemirror-view'; +import { Decoration, DecorationSet } from 'prosemirror-view'; export interface FocusOptions { className: string; diff --git a/packages/client/src/tiptap/core/extensions/font-size.ts b/packages/client/src/tiptap/core/extensions/font-size.ts index 14dcdac1..f7df8b7c 100644 --- a/packages/client/src/tiptap/core/extensions/font-size.ts +++ b/packages/client/src/tiptap/core/extensions/font-size.ts @@ -1,6 +1,7 @@ -import { Extension } from '@tiptap/core'; import '@tiptap/extension-text-style'; +import { Extension } from '@tiptap/core'; + type FontSizeOptions = { types: string[]; }; diff --git a/packages/client/src/tiptap/core/extensions/horizontal-rule.ts b/packages/client/src/tiptap/core/extensions/horizontal-rule.ts index e588b1c1..6955be08 100644 --- a/packages/client/src/tiptap/core/extensions/horizontal-rule.ts +++ b/packages/client/src/tiptap/core/extensions/horizontal-rule.ts @@ -1,4 +1,4 @@ -import { Node, nodeInputRule, mergeAttributes } from '@tiptap/core'; +import { mergeAttributes, Node, nodeInputRule } from '@tiptap/core'; import { TextSelection } from 'prosemirror-state'; export interface HorizontalRuleOptions { diff --git a/packages/client/src/tiptap/core/extensions/html-marks.ts b/packages/client/src/tiptap/core/extensions/html-marks.ts index ffc637fe..3099e00c 100644 --- a/packages/client/src/tiptap/core/extensions/html-marks.ts +++ b/packages/client/src/tiptap/core/extensions/html-marks.ts @@ -1,6 +1,6 @@ -import { Mark, mergeAttributes, markInputRule } from '@tiptap/core'; +import { Mark, markInputRule, mergeAttributes } from '@tiptap/core'; import { PARSE_HTML_PRIORITY_LOWEST } from 'tiptap/core/constants'; -import { markInputRegex, extractMarkAttributesFromMatch } from 'tiptap/prose-utils'; +import { extractMarkAttributesFromMatch, markInputRegex } from 'tiptap/prose-utils'; export const marks = [{ name: 'underline', tag: 'u' }]; diff --git a/packages/client/src/tiptap/core/extensions/iframe.ts b/packages/client/src/tiptap/core/extensions/iframe.ts index f3949bda..45901659 100644 --- a/packages/client/src/tiptap/core/extensions/iframe.ts +++ b/packages/client/src/tiptap/core/extensions/iframe.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes } from '@tiptap/core'; +import { mergeAttributes, Node } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { IframeWrapper } from 'tiptap/core/wrappers/iframe'; import { getDatasetAttribute } from 'tiptap/prose-utils'; diff --git a/packages/client/src/tiptap/core/extensions/indent.ts b/packages/client/src/tiptap/core/extensions/indent.ts index 74d3393e..519c1f40 100644 --- a/packages/client/src/tiptap/core/extensions/indent.ts +++ b/packages/client/src/tiptap/core/extensions/indent.ts @@ -1,7 +1,7 @@ import { Command, Extension } from '@tiptap/core'; -import { sinkListItem, liftListItem } from 'prosemirror-schema-list'; -import { TextSelection, AllSelection, Transaction } from 'prosemirror-state'; -import { isListActive, isListNode, clamp, getNodeType } from 'tiptap/prose-utils'; +import { liftListItem, sinkListItem } from 'prosemirror-schema-list'; +import { AllSelection, TextSelection, Transaction } from 'prosemirror-state'; +import { clamp, getNodeType, isListActive, isListNode } from 'tiptap/prose-utils'; declare module '@tiptap/core' { interface Commands { diff --git a/packages/client/src/tiptap/core/extensions/katex.ts b/packages/client/src/tiptap/core/extensions/katex.ts index 959fc3ef..ab73d6bf 100644 --- a/packages/client/src/tiptap/core/extensions/katex.ts +++ b/packages/client/src/tiptap/core/extensions/katex.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes, nodeInputRule } from '@tiptap/core'; +import { mergeAttributes, Node, nodeInputRule } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { KatexWrapper } from 'tiptap/core/wrappers/katex'; diff --git a/packages/client/src/tiptap/core/extensions/mention.ts b/packages/client/src/tiptap/core/extensions/mention.ts index bd30c28c..f545b0db 100644 --- a/packages/client/src/tiptap/core/extensions/mention.ts +++ b/packages/client/src/tiptap/core/extensions/mention.ts @@ -1,9 +1,9 @@ import BulitInMention from '@tiptap/extension-mention'; import { ReactRenderer } from '@tiptap/react'; -import tippy from 'tippy.js'; import { getUsers } from 'services/user'; -import { getDatasetAttribute } from 'tiptap/prose-utils'; +import tippy from 'tippy.js'; import { MentionList } from 'tiptap/core/wrappers/mention-list'; +import { getDatasetAttribute } from 'tiptap/prose-utils'; const suggestion = { items: async ({ query }) => { diff --git a/packages/client/src/tiptap/core/extensions/mind.ts b/packages/client/src/tiptap/core/extensions/mind.ts index bf94f61d..639241eb 100644 --- a/packages/client/src/tiptap/core/extensions/mind.ts +++ b/packages/client/src/tiptap/core/extensions/mind.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes, nodeInputRule } from '@tiptap/core'; +import { mergeAttributes, Node, nodeInputRule } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { Plugin, PluginKey } from 'prosemirror-state'; import { MindWrapper } from 'tiptap/core/wrappers/mind'; diff --git a/packages/client/src/tiptap/core/extensions/paste.ts b/packages/client/src/tiptap/core/extensions/paste.ts index 85b7ee32..f381c8de 100644 --- a/packages/client/src/tiptap/core/extensions/paste.ts +++ b/packages/client/src/tiptap/core/extensions/paste.ts @@ -1,17 +1,17 @@ import { Extension } from '@tiptap/core'; +import { safeJSONParse } from 'helpers/json'; +import { Fragment, Schema } from 'prosemirror-model'; import { Plugin, PluginKey } from 'prosemirror-state'; -import { Schema, Fragment } from 'prosemirror-model'; import { EXTENSION_PRIORITY_HIGHEST } from 'tiptap/core/constants'; import { + copyNode, handleFileEvent, isInCode, - LANGUAGES, - isTitleNode, - copyNode, isMarkdown, + isTitleNode, + LANGUAGES, normalizeMarkdown, } from 'tiptap/prose-utils'; -import { safeJSONParse } from 'helpers/json'; interface IPasteOptions { /** diff --git a/packages/client/src/tiptap/core/extensions/quick-insert.tsx b/packages/client/src/tiptap/core/extensions/quick-insert.tsx index f1ea1bf8..0f4ba345 100644 --- a/packages/client/src/tiptap/core/extensions/quick-insert.tsx +++ b/packages/client/src/tiptap/core/extensions/quick-insert.tsx @@ -1,11 +1,11 @@ -import tippy from 'tippy.js'; import { Node } from '@tiptap/core'; import { ReactRenderer } from '@tiptap/react'; -import { Plugin, PluginKey } from 'prosemirror-state'; import Suggestion from '@tiptap/suggestion'; +import { Plugin, PluginKey } from 'prosemirror-state'; +import tippy from 'tippy.js'; +import { EXTENSION_PRIORITY_HIGHEST } from 'tiptap/core/constants'; import { MenuList } from 'tiptap/core/wrappers/menu-list'; import { QUICK_INSERT_ITEMS } from 'tiptap/editor/menus/quick-insert'; -import { EXTENSION_PRIORITY_HIGHEST } from 'tiptap/core/constants'; export const QuickInsertPluginKey = new PluginKey('quickInsert'); diff --git a/packages/client/src/tiptap/core/extensions/search.ts b/packages/client/src/tiptap/core/extensions/search.ts index 1419db37..37cb63d8 100644 --- a/packages/client/src/tiptap/core/extensions/search.ts +++ b/packages/client/src/tiptap/core/extensions/search.ts @@ -1,7 +1,7 @@ import { Extension } from '@tiptap/core'; -import { Decoration, DecorationSet } from 'prosemirror-view'; -import { EditorState, Plugin, PluginKey } from 'prosemirror-state'; import { Node as ProsemirrorNode } from 'prosemirror-model'; +import { EditorState, Plugin, PluginKey } from 'prosemirror-state'; +import { Decoration, DecorationSet } from 'prosemirror-view'; import scrollIntoView from 'scroll-into-view-if-needed'; declare module '@tiptap/core' { diff --git a/packages/client/src/tiptap/core/extensions/selection.ts b/packages/client/src/tiptap/core/extensions/selection.ts index b9dc1f77..5065fb07 100644 --- a/packages/client/src/tiptap/core/extensions/selection.ts +++ b/packages/client/src/tiptap/core/extensions/selection.ts @@ -1,8 +1,8 @@ import { Extension } from '@tiptap/core'; -import { Plugin, PluginKey, NodeSelection, TextSelection, Selection, AllSelection } from 'prosemirror-state'; +import { AllSelection, NodeSelection, Plugin, PluginKey, Selection, TextSelection } from 'prosemirror-state'; import { Decoration, DecorationSet } from 'prosemirror-view'; -import { getCurrentNode, isInCodeBlock, isInCallout, getNodeAtPos, isTodoListNode } from 'tiptap/prose-utils'; import { EXTENSION_PRIORITY_HIGHEST } from 'tiptap/core/constants'; +import { getCurrentNode, getNodeAtPos, isInCallout, isInCodeBlock, isTodoListNode } from 'tiptap/prose-utils'; export const selectionPluginKey = new PluginKey('selection'); diff --git a/packages/client/src/tiptap/core/extensions/status.ts b/packages/client/src/tiptap/core/extensions/status.ts index de5be4b9..0e74effa 100644 --- a/packages/client/src/tiptap/core/extensions/status.ts +++ b/packages/client/src/tiptap/core/extensions/status.ts @@ -1,4 +1,4 @@ -import { Node, mergeAttributes } from '@tiptap/core'; +import { mergeAttributes, Node } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { StatusWrapper } from 'tiptap/core/wrappers/status'; import { getDatasetAttribute } from 'tiptap/prose-utils'; diff --git a/packages/client/src/tiptap/core/extensions/table-cell.tsx b/packages/client/src/tiptap/core/extensions/table-cell.tsx index beb4d1b7..521b776a 100644 --- a/packages/client/src/tiptap/core/extensions/table-cell.tsx +++ b/packages/client/src/tiptap/core/extensions/table-cell.tsx @@ -1,7 +1,7 @@ import { TableCell as BuiltInTableCell } from '@tiptap/extension-table-cell'; import { Plugin } from 'prosemirror-state'; import { Decoration, DecorationSet } from 'prosemirror-view'; -import { getCellsInColumn, selectTable, isRowSelected, isTableSelected, selectRow } from 'tiptap/prose-utils'; +import { getCellsInColumn, isRowSelected, isTableSelected, selectRow, selectTable } from 'tiptap/prose-utils'; export const TableCell = BuiltInTableCell.extend({ addAttributes() { diff --git a/packages/client/src/tiptap/core/extensions/table-of-contents.ts b/packages/client/src/tiptap/core/extensions/table-of-contents.ts index 57a0e82c..0e621ba3 100644 --- a/packages/client/src/tiptap/core/extensions/table-of-contents.ts +++ b/packages/client/src/tiptap/core/extensions/table-of-contents.ts @@ -1,7 +1,7 @@ -import { Node, mergeAttributes } from '@tiptap/core'; +import { mergeAttributes, Node } from '@tiptap/core'; import { ReactNodeViewRenderer } from '@tiptap/react'; import { TableOfContentsWrapper } from 'tiptap/core/wrappers/table-of-contents'; -import { isTitleNode, findNode } from 'tiptap/prose-utils'; +import { findNode, isTitleNode } from 'tiptap/prose-utils'; declare module '@tiptap/core' { interface Commands { diff --git a/packages/client/src/tiptap/core/extensions/table.ts b/packages/client/src/tiptap/core/extensions/table.ts index 5fef9ccb..9ffe7b25 100644 --- a/packages/client/src/tiptap/core/extensions/table.ts +++ b/packages/client/src/tiptap/core/extensions/table.ts @@ -1,7 +1,7 @@ import BuiltInTable from '@tiptap/extension-table'; -import { Decoration, DecorationSet } from 'prosemirror-view'; -import { tableEditing } from 'prosemirror-tables'; import { Plugin } from 'prosemirror-state'; +import { tableEditing } from 'prosemirror-tables'; +import { Decoration, DecorationSet } from 'prosemirror-view'; export const Table = BuiltInTable.extend({ renderHTML() { diff --git a/packages/client/src/tiptap/core/extensions/title.tsx b/packages/client/src/tiptap/core/extensions/title.tsx index 17127c0f..c3b139d8 100644 --- a/packages/client/src/tiptap/core/extensions/title.tsx +++ b/packages/client/src/tiptap/core/extensions/title.tsx @@ -1,4 +1,4 @@ -import { Node, mergeAttributes } from '@tiptap/core'; +import { mergeAttributes, Node } from '@tiptap/core'; import { Plugin, PluginKey, TextSelection } from 'prosemirror-state'; import { isInTitle } from 'tiptap/prose-utils'; diff --git a/packages/client/src/tiptap/core/extensions/trailing-node.ts b/packages/client/src/tiptap/core/extensions/trailing-node.ts index 98c27306..57d26b05 100644 --- a/packages/client/src/tiptap/core/extensions/trailing-node.ts +++ b/packages/client/src/tiptap/core/extensions/trailing-node.ts @@ -1,5 +1,5 @@ import { Extension } from '@tiptap/core'; -import { PluginKey, Plugin } from 'prosemirror-state'; +import { Plugin, PluginKey } from 'prosemirror-state'; /** * @param {object} args Arguments as deconstructable object diff --git a/packages/client/src/tiptap/core/wrappers/attachment/file-icon.tsx b/packages/client/src/tiptap/core/wrappers/attachment/file-icon.tsx index 52ecc11d..28800f19 100644 --- a/packages/client/src/tiptap/core/wrappers/attachment/file-icon.tsx +++ b/packages/client/src/tiptap/core/wrappers/attachment/file-icon.tsx @@ -1,4 +1,4 @@ -import { IconFile, IconSong, IconVideo, IconImage } from '@douyinfe/semi-icons'; +import { IconFile, IconImage, IconSong, IconVideo } from '@douyinfe/semi-icons'; import { normalizeFileType } from 'tiptap/prose-utils'; export const getFileTypeIcon = (fileType: string) => { diff --git a/packages/client/src/tiptap/core/wrappers/attachment/index.tsx b/packages/client/src/tiptap/core/wrappers/attachment/index.tsx index 390c5abe..67910e32 100644 --- a/packages/client/src/tiptap/core/wrappers/attachment/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/attachment/index.tsx @@ -1,15 +1,16 @@ -import { useCallback, useEffect, useRef } from 'react'; -import cls from 'classnames'; +import { IconClose, IconDownload, IconPlayCircle } from '@douyinfe/semi-icons'; +import { Button, Collapsible, Space, Spin, Typography } from '@douyinfe/semi-ui'; import { NodeViewWrapper } from '@tiptap/react'; -import { Button, Typography, Spin, Collapsible, Space } from '@douyinfe/semi-ui'; -import { IconDownload, IconPlayCircle, IconClose } from '@douyinfe/semi-icons'; +import cls from 'classnames'; import { Tooltip } from 'components/tooltip'; import { useToggle } from 'hooks/use-toggle'; -import { download, normalizeFileSize, extractFileExtension, extractFilename } from 'tiptap/prose-utils'; +import { useCallback, useEffect, useRef } from 'react'; import { uploadFile } from 'services/file'; -import { Player } from './player'; +import { download, extractFileExtension, extractFilename, normalizeFileSize } from 'tiptap/prose-utils'; + import { getFileTypeIcon } from './file-icon'; import styles from './index.module.scss'; +import { Player } from './player'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/core/wrappers/attachment/player/index.tsx b/packages/client/src/tiptap/core/wrappers/attachment/player/index.tsx index c5d98e5c..cd8ea655 100644 --- a/packages/client/src/tiptap/core/wrappers/attachment/player/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/attachment/player/index.tsx @@ -1,15 +1,16 @@ -import React, { useMemo, useRef } from 'react'; import { Typography } from '@douyinfe/semi-ui'; import { ImageViewer } from 'components/image-viewer'; +import React, { useMemo, useRef } from 'react'; import { - normalizeFileSize, extractFileExtension, extractFilename, - normalizeFileType, FileType, + normalizeFileSize, + normalizeFileType, } from 'tiptap/prose-utils'; -import { PDFPlayer } from './pdf-player'; + import styles from './index.module.scss'; +import { PDFPlayer } from './pdf-player'; interface IProps { url: string; diff --git a/packages/client/src/tiptap/core/wrappers/attachment/player/pdf-player/index.tsx b/packages/client/src/tiptap/core/wrappers/attachment/player/pdf-player/index.tsx index d76ecd98..4c98e496 100644 --- a/packages/client/src/tiptap/core/wrappers/attachment/player/pdf-player/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/attachment/player/pdf-player/index.tsx @@ -1,6 +1,7 @@ +import { Pagination } from '@douyinfe/semi-ui'; import React, { useState } from 'react'; import { Document, Page, pdfjs } from 'react-pdf'; -import { Pagination } from '@douyinfe/semi-ui'; + import styles from './index.module.scss'; pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/legacy/build/pdf.worker.min.js`; diff --git a/packages/client/src/tiptap/core/wrappers/callout/index.tsx b/packages/client/src/tiptap/core/wrappers/callout/index.tsx index 4de2200a..97e3b274 100644 --- a/packages/client/src/tiptap/core/wrappers/callout/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/callout/index.tsx @@ -1,9 +1,10 @@ -import { useCallback, useMemo } from 'react'; -import { NodeViewWrapper, NodeViewContent } from '@tiptap/react'; +import { NodeViewContent, NodeViewWrapper } from '@tiptap/react'; import cls from 'classnames'; import { EmojiPicker } from 'components/emoji-picker'; import { convertColorToRGBA } from 'helpers/color'; import { Theme, useTheme } from 'hooks/use-theme'; +import { useCallback, useMemo } from 'react'; + import styles from './index.module.scss'; export const CalloutWrapper = ({ editor, node, updateAttributes }) => { diff --git a/packages/client/src/tiptap/core/wrappers/code-block/index.tsx b/packages/client/src/tiptap/core/wrappers/code-block/index.tsx index a1b166c3..a840c909 100644 --- a/packages/client/src/tiptap/core/wrappers/code-block/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/code-block/index.tsx @@ -1,9 +1,10 @@ -import React, { useRef } from 'react'; -import cls from 'classnames'; -import { NodeViewWrapper, NodeViewContent } from '@tiptap/react'; -import { Button, Select, Tooltip } from '@douyinfe/semi-ui'; import { IconCopy } from '@douyinfe/semi-icons'; +import { Button, Select, Tooltip } from '@douyinfe/semi-ui'; +import { NodeViewContent, NodeViewWrapper } from '@tiptap/react'; +import cls from 'classnames'; import { copy } from 'helpers/copy'; +import React, { useRef } from 'react'; + import styles from './index.module.scss'; export const CodeBlockWrapper = ({ editor, node: { attrs }, updateAttributes, extension }) => { diff --git a/packages/client/src/tiptap/core/wrappers/countdown/index.tsx b/packages/client/src/tiptap/core/wrappers/countdown/index.tsx index a07e7fd3..48bd9a96 100644 --- a/packages/client/src/tiptap/core/wrappers/countdown/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/countdown/index.tsx @@ -1,7 +1,8 @@ +import { Space, Typography } from '@douyinfe/semi-ui'; import { NodeViewWrapper } from '@tiptap/react'; import cls from 'classnames'; -import { Typography, Space } from '@douyinfe/semi-ui'; import Countdown from 'react-countdown'; + import styles from './index.module.scss'; const { Text, Title } = Typography; diff --git a/packages/client/src/tiptap/core/wrappers/document-children/index.tsx b/packages/client/src/tiptap/core/wrappers/document-children/index.tsx index b346e410..39323ed1 100644 --- a/packages/client/src/tiptap/core/wrappers/document-children/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/document-children/index.tsx @@ -1,15 +1,16 @@ -import { NodeViewWrapper } from '@tiptap/react'; -import { useRouter } from 'next/router'; -import Link from 'next/link'; -import cls from 'classnames'; import { Typography } from '@douyinfe/semi-ui'; -import { useChildrenDocument } from 'data/document'; +import { NodeViewWrapper } from '@tiptap/react'; +import cls from 'classnames'; import { DataRender } from 'components/data-render'; import { Empty } from 'components/empty'; import { IconDocument } from 'components/icons'; -import styles from './index.module.scss'; +import { useChildrenDocument } from 'data/document'; +import Link from 'next/link'; +import { useRouter } from 'next/router'; import { useEffect } from 'react'; +import styles from './index.module.scss'; + const { Text } = Typography; export const DocumentChildrenWrapper = ({ editor, node, updateAttributes }) => { diff --git a/packages/client/src/tiptap/core/wrappers/document-reference/index.tsx b/packages/client/src/tiptap/core/wrappers/document-reference/index.tsx index 72ddce67..b8a40bce 100644 --- a/packages/client/src/tiptap/core/wrappers/document-reference/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/document-reference/index.tsx @@ -1,9 +1,10 @@ -import { useMemo } from 'react'; import { NodeViewWrapper } from '@tiptap/react'; -import { useRouter } from 'next/router'; -import Link from 'next/link'; import cls from 'classnames'; import { IconDocument } from 'components/icons'; +import Link from 'next/link'; +import { useRouter } from 'next/router'; +import { useMemo } from 'react'; + import styles from './index.module.scss'; export const DocumentReferenceWrapper = ({ editor, node, updateAttributes }) => { diff --git a/packages/client/src/tiptap/core/wrappers/emoji-list/index.tsx b/packages/client/src/tiptap/core/wrappers/emoji-list/index.tsx index 0b0d4e6f..20192a77 100644 --- a/packages/client/src/tiptap/core/wrappers/emoji-list/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/emoji-list/index.tsx @@ -1,6 +1,7 @@ -import React, { useState, useEffect, forwardRef, useImperativeHandle, useRef } from 'react'; import cls from 'classnames'; +import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react'; import scrollIntoView from 'scroll-into-view-if-needed'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/tiptap/core/wrappers/flow/index.tsx b/packages/client/src/tiptap/core/wrappers/flow/index.tsx index 7ed23011..d71a9f99 100644 --- a/packages/client/src/tiptap/core/wrappers/flow/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/flow/index.tsx @@ -1,13 +1,14 @@ +import { Button, Space } from '@douyinfe/semi-ui'; import { NodeViewWrapper } from '@tiptap/react'; import cls from 'classnames'; -import { Button, Space } from '@douyinfe/semi-ui'; -import { IconMindCenter, IconZoomOut, IconZoomIn } from 'components/icons'; -import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { IconMindCenter, IconZoomIn, IconZoomOut } from 'components/icons'; import { Resizeable } from 'components/resizeable'; import { convertColorToRGBA } from 'helpers/color'; import { Theme, useTheme } from 'hooks/use-theme'; -import { getEditorContainerDOMSize } from 'tiptap/prose-utils'; +import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Flow } from 'tiptap/core/extensions/flow'; +import { getEditorContainerDOMSize } from 'tiptap/prose-utils'; + import styles from './index.module.scss'; const INHERIT_SIZE_STYLE = { width: '100%', height: '100%', maxWidth: '100%', overflow: 'hidden' }; diff --git a/packages/client/src/tiptap/core/wrappers/iframe/index.tsx b/packages/client/src/tiptap/core/wrappers/iframe/index.tsx index 5164c790..7a03f710 100644 --- a/packages/client/src/tiptap/core/wrappers/iframe/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/iframe/index.tsx @@ -1,9 +1,10 @@ -import { useCallback } from 'react'; -import cls from 'classnames'; -import { NodeViewWrapper } from '@tiptap/react'; import { Typography } from '@douyinfe/semi-ui'; +import { NodeViewWrapper } from '@tiptap/react'; +import cls from 'classnames'; import { Resizeable } from 'components/resizeable'; +import { useCallback } from 'react'; import { getEditorContainerDOMSize } from 'tiptap/prose-utils'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/core/wrappers/image/index.tsx b/packages/client/src/tiptap/core/wrappers/image/index.tsx index ed21fc1d..20206ba9 100644 --- a/packages/client/src/tiptap/core/wrappers/image/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/image/index.tsx @@ -1,16 +1,17 @@ -import { useCallback, useEffect, useRef } from 'react'; -import { Typography, Spin } from '@douyinfe/semi-ui'; +import { Spin, Typography } from '@douyinfe/semi-ui'; import { NodeViewWrapper } from '@tiptap/react'; -import { LazyLoadImage } from 'react-lazy-load-image-component'; import { Resizeable } from 'components/resizeable'; import { useToggle } from 'hooks/use-toggle'; +import { useCallback, useEffect, useRef } from 'react'; +import { LazyLoadImage } from 'react-lazy-load-image-component'; import { uploadFile } from 'services/file'; import { extractFileExtension, extractFilename, - getImageWidthHeight, getEditorContainerDOMSize, + getImageWidthHeight, } from 'tiptap/prose-utils'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/core/wrappers/katex/index.tsx b/packages/client/src/tiptap/core/wrappers/katex/index.tsx index dd0d1660..d4fd0005 100644 --- a/packages/client/src/tiptap/core/wrappers/katex/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/katex/index.tsx @@ -1,11 +1,12 @@ -import { NodeViewWrapper } from '@tiptap/react'; -import { useMemo, useCallback, useEffect, useRef } from 'react'; -import cls from 'classnames'; -import { Popover, TextArea, Typography, Space } from '@douyinfe/semi-ui'; import { IconHelpCircle } from '@douyinfe/semi-icons'; -import katex from 'katex'; -import { useToggle } from 'hooks/use-toggle'; +import { Popover, Space, TextArea, Typography } from '@douyinfe/semi-ui'; +import { NodeViewWrapper } from '@tiptap/react'; +import cls from 'classnames'; import { useUser } from 'data/user'; +import { useToggle } from 'hooks/use-toggle'; +import katex from 'katex'; +import { useCallback, useEffect, useMemo, useRef } from 'react'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/core/wrappers/loading.tsx b/packages/client/src/tiptap/core/wrappers/loading.tsx index 1261256a..dc4fb0f1 100644 --- a/packages/client/src/tiptap/core/wrappers/loading.tsx +++ b/packages/client/src/tiptap/core/wrappers/loading.tsx @@ -1,5 +1,5 @@ -import { NodeViewWrapper } from '@tiptap/react'; import { Spin } from '@douyinfe/semi-ui'; +import { NodeViewWrapper } from '@tiptap/react'; export const LoadingWrapper = ({ editor, node }) => { const isEditable = editor.isEditable; diff --git a/packages/client/src/tiptap/core/wrappers/mention-list/index.tsx b/packages/client/src/tiptap/core/wrappers/mention-list/index.tsx index cb59a226..ac9a840a 100644 --- a/packages/client/src/tiptap/core/wrappers/mention-list/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/mention-list/index.tsx @@ -1,7 +1,8 @@ -import React, { useState, useEffect, forwardRef, useImperativeHandle, useRef } from 'react'; import { Editor } from '@tiptap/core'; import cls from 'classnames'; +import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react'; import scrollIntoView from 'scroll-into-view-if-needed'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/tiptap/core/wrappers/menu-list/index.tsx b/packages/client/src/tiptap/core/wrappers/menu-list/index.tsx index 0332f416..c8b7c108 100644 --- a/packages/client/src/tiptap/core/wrappers/menu-list/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/menu-list/index.tsx @@ -1,8 +1,9 @@ import { Editor } from '@tiptap/core'; -import React, { useState, useEffect, forwardRef, useImperativeHandle, useRef } from 'react'; import cls from 'classnames'; -import scrollIntoView from 'scroll-into-view-if-needed'; import { useUser } from 'data/user'; +import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react'; +import scrollIntoView from 'scroll-into-view-if-needed'; + import styles from './index.module.scss'; interface IProps { diff --git a/packages/client/src/tiptap/core/wrappers/mind/index.tsx b/packages/client/src/tiptap/core/wrappers/mind/index.tsx index 7af48787..26c99933 100644 --- a/packages/client/src/tiptap/core/wrappers/mind/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/mind/index.tsx @@ -1,13 +1,14 @@ +import { Spin, Typography } from '@douyinfe/semi-ui'; import { NodeViewWrapper } from '@tiptap/react'; import cls from 'classnames'; import clone from 'clone'; -import deepEqual from 'deep-equal'; -import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { Spin, Typography } from '@douyinfe/semi-ui'; import { Resizeable } from 'components/resizeable'; +import deepEqual from 'deep-equal'; import { useToggle } from 'hooks/use-toggle'; -import { getEditorContainerDOMSize, uuid } from 'tiptap/prose-utils'; +import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Mind } from 'tiptap/core/extensions/mind'; +import { getEditorContainerDOMSize, uuid } from 'tiptap/prose-utils'; + import styles from './index.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/customLink.ts b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/customLink.ts index 9416de63..e9f22ee5 100644 --- a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/customLink.ts +++ b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/customLink.ts @@ -1,4 +1,4 @@ -import { LinkDragMoveHelper, generateUUID, getArrowPoints, calcP1, calcP4 } from './utils/index'; +import { calcP1, calcP4, generateUUID, getArrowPoints, LinkDragMoveHelper } from './utils/index'; import { createSvgGroup } from './utils/svg'; // TODO Link label diff --git a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/index.ts b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/index.ts index 4b1826f1..f5443105 100644 --- a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/index.ts +++ b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/index.ts @@ -1,71 +1,71 @@ +import './iconfont/iconfont.js'; + import { LEFT, RIGHT, SIDE } from './const'; -import { isMobile, addParentLink, getObjById, generateUUID, generateNewObj } from './utils/index'; +import { createLink, hideLinkController, removeLink, selectLink, showLinkController } from './customLink'; import { - findEle, - createInputDiv, - layout, - Topic, - createChildren, - createGroup, - createTop, - createTopic, -} from './utils/dom'; -import { createLinkSvg, createLine } from './utils/svg'; -import { - selectNode, - unselectNode, - selectNextSibling, - selectPrevSibling, - selectFirstChild, - selectParent, - getAllDataString, + cancelFocus, + disableEdit, + enableEdit, + expandNode, + focusNode, getAllData, getAllDataMd, - scale, - toCenter, - focusNode, - cancelFocus, + getAllDataString, initLeft, initRight, initSide, - setLocale, - enableEdit, - disableEdit, - expandNode, refresh, + scale, + selectFirstChild, + selectNextSibling, + selectNode, + selectParent, + selectPrevSibling, + setLocale, + toCenter, + unselectNode, } from './interact'; -import { - insertSibling, - insertBefore, - insertParent, - addChild, - copyNode, - moveNode, - removeNode, - moveUpNode, - moveDownNode, - beginEdit, - updateNodeStyle, - updateNodeTags, - updateNodeIcons, - updateNodeHyperLink, - processPrimaryNode, - setNodeTopic, - moveNodeBefore, - moveNodeAfter, -} from './nodeOperation'; -import { createLink, removeLink, selectLink, hideLinkController, showLinkController } from './customLink'; import linkDiv from './linkDiv'; import initMouseEvent from './mouse'; - +import { + addChild, + beginEdit, + copyNode, + insertBefore, + insertParent, + insertSibling, + moveDownNode, + moveNode, + moveNodeAfter, + moveNodeBefore, + moveUpNode, + processPrimaryNode, + removeNode, + setNodeTopic, + updateNodeHyperLink, + updateNodeIcons, + updateNodeStyle, + updateNodeTags, +} from './nodeOperation'; import contextMenu from './plugin/contextMenu'; -import toolBar from './plugin/toolBar'; -import nodeMenu from './plugin/nodeMenu'; -import nodeDraggable from './plugin/nodeDraggable'; import keypress from './plugin/keypress'; import mobileMenu from './plugin/mobileMenu'; +import nodeDraggable from './plugin/nodeDraggable'; +import nodeMenu from './plugin/nodeMenu'; +import toolBar from './plugin/toolBar'; +import { + createChildren, + createGroup, + createInputDiv, + createTop, + createTopic, + findEle, + layout, + Topic, +} from './utils/dom'; +import { addParentLink, generateNewObj, generateUUID, getObjById, isMobile } from './utils/index'; import Bus from './utils/pubsub'; -import './iconfont/iconfont.js'; +import { createLine, createLinkSvg } from './utils/svg'; // TODO show up animation export const E = findEle; diff --git a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/linkDiv.ts b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/linkDiv.ts index 30111db8..17705085 100644 --- a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/linkDiv.ts +++ b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/linkDiv.ts @@ -1,6 +1,6 @@ -import { createPath, createMainPath, createLinkSvg } from './utils/svg'; -import { findEle, Expander } from './utils/dom'; -import { SIDE, GAP, TURNPOINT_R, PRIMARY_NODE_HORIZONTAL_GAP, PRIMARY_NODE_VERTICAL_GAP } from './const'; +import { GAP, PRIMARY_NODE_HORIZONTAL_GAP, PRIMARY_NODE_VERTICAL_GAP, SIDE, TURNPOINT_R } from './const'; +import { Expander, findEle } from './utils/dom'; +import { createLinkSvg, createMainPath, createPath } from './utils/svg'; /** * Link nodes with svg, diff --git a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/nodeOperation.ts b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/nodeOperation.ts index 8affcc76..16f525f1 100644 --- a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/nodeOperation.ts +++ b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/nodeOperation.ts @@ -1,22 +1,21 @@ -import type { NodeElement, NodeObj } from './index'; - -import { - moveNodeObj, - removeNodeObj, - insertNodeObj, - insertBeforeNodeObj, - insertParentNodeObj, - checkMoveValid, - addParentLink, - moveUpObj, - moveDownObj, - moveNodeBeforeObj, - moveNodeAfterObj, - refreshIds, -} from './utils/index'; -import { findEle, createExpander, shapeTpc } from './utils/dom'; -import { rgbHex } from './utils/index'; import { LEFT, RIGHT, SIDE } from './const'; +import type { NodeElement, NodeObj } from './index'; +import { createExpander, findEle, shapeTpc } from './utils/dom'; +import { + addParentLink, + checkMoveValid, + insertBeforeNodeObj, + insertNodeObj, + insertParentNodeObj, + moveDownObj, + moveNodeAfterObj, + moveNodeBeforeObj, + moveNodeObj, + moveUpObj, + refreshIds, + removeNodeObj, +} from './utils/index'; +import { rgbHex } from './utils/index'; const $d = document; /** diff --git a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/nodeDraggable.ts b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/nodeDraggable.ts index ca3abd90..ca68fe7a 100644 --- a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/nodeDraggable.ts +++ b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/nodeDraggable.ts @@ -1,5 +1,5 @@ +import { findEle as E, Group, Topic } from '../utils/dom'; import { dragMoveHelper, throttle } from '../utils/index'; -import { findEle as E, Topic, Group } from '../utils/dom'; const $d = document; diff --git a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/nodeMenu.tsx b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/nodeMenu.tsx index 99b53db2..3d87996f 100644 --- a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/nodeMenu.tsx +++ b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/nodeMenu.tsx @@ -1,11 +1,12 @@ -import tippy from 'tippy.js'; -import ReactDOM from 'react-dom'; -import { useCallback, useEffect, useRef, useState } from 'react'; -import { Button, Tooltip, Space, Dropdown, Form } from '@douyinfe/semi-ui'; -import { IconBold, IconFont, IconMark, IconLink } from '@douyinfe/semi-icons'; -import { ColorPicker } from 'tiptap/components/color-picker'; -import { findEle } from '../utils/dom'; +import { IconBold, IconFont, IconLink, IconMark } from '@douyinfe/semi-icons'; +import { Button, Dropdown, Form, Space, Tooltip } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import ReactDOM from 'react-dom'; +import tippy from 'tippy.js'; +import { ColorPicker } from 'tiptap/components/color-picker'; + +import { findEle } from '../utils/dom'; export const Link = ({ mind, link, setLink }) => { const $form = useRef(); diff --git a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/toolBar.tsx b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/toolBar.tsx index 1f5739c5..37e444e7 100644 --- a/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/toolBar.tsx +++ b/packages/client/src/tiptap/core/wrappers/mind/mind-elixir/plugin/toolBar.tsx @@ -1,19 +1,19 @@ -import ReactDOM from 'react-dom'; -import cls from 'classnames'; +import { IconDoubleChevronLeft, IconDoubleChevronRight } from '@douyinfe/semi-icons'; import { Button, Space, Toast } from '@douyinfe/semi-ui'; -import { IconDoubleChevronRight, IconDoubleChevronLeft } from '@douyinfe/semi-icons'; +import cls from 'classnames'; import { + IconMindCenter, + IconMindFull, IconMindLeft, IconMindRight, IconMindSide, - IconMindFull, - IconMindCenter, - IconZoomOut, IconZoomIn, + IconZoomOut, } from 'components/icons'; -import { Divider } from 'tiptap/components/divider'; import { useToggle } from 'hooks/use-toggle'; import { useMemo } from 'react'; +import ReactDOM from 'react-dom'; +import { Divider } from 'tiptap/components/divider'; function Operation({ mind }) { const [visible, toggleVisible] = useToggle(true); diff --git a/packages/client/src/tiptap/core/wrappers/status/index.tsx b/packages/client/src/tiptap/core/wrappers/status/index.tsx index 82a4155c..dab9bfe9 100644 --- a/packages/client/src/tiptap/core/wrappers/status/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/status/index.tsx @@ -1,9 +1,10 @@ +import { Button, Collapsible, Input, Popover, Space, Tag } from '@douyinfe/semi-ui'; import { NodeViewWrapper } from '@tiptap/react'; -import { Button, Collapsible, Space, Popover, Tag, Input } from '@douyinfe/semi-ui'; import cls from 'classnames'; -import { useCallback, useEffect, useRef } from 'react'; import { useUser } from 'data/user'; import { useToggle } from 'hooks/use-toggle'; +import { useCallback, useEffect, useRef } from 'react'; + import styles from './index.module.scss'; const colors = [ diff --git a/packages/client/src/tiptap/core/wrappers/table-of-contents/index.tsx b/packages/client/src/tiptap/core/wrappers/table-of-contents/index.tsx index 5a54dc8b..e1d6d800 100644 --- a/packages/client/src/tiptap/core/wrappers/table-of-contents/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/table-of-contents/index.tsx @@ -1,8 +1,9 @@ +import { Button, Collapsible } from '@douyinfe/semi-ui'; import { NodeViewWrapper } from '@tiptap/react'; -import { useCallback, useEffect, useMemo, useState } from 'react'; -import { Collapsible, Button } from '@douyinfe/semi-ui'; -import styles from './index.module.scss'; import { useToggle } from 'hooks/use-toggle'; +import { useCallback, useEffect, useMemo, useState } from 'react'; + +import styles from './index.module.scss'; export const TableOfContentsWrapper = ({ editor }) => { const [items, setItems] = useState([]); diff --git a/packages/client/src/tiptap/core/wrappers/task-item/index.tsx b/packages/client/src/tiptap/core/wrappers/task-item/index.tsx index 0a4bf134..ae2dc692 100644 --- a/packages/client/src/tiptap/core/wrappers/task-item/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/task-item/index.tsx @@ -1,5 +1,6 @@ -import { NodeViewWrapper, NodeViewContent } from '@tiptap/react'; import { Checkbox } from '@douyinfe/semi-ui'; +import { NodeViewContent, NodeViewWrapper } from '@tiptap/react'; + import styles from './index.module.scss'; export const TaskItemWrapper = ({ editor, node, updateAttributes }) => { diff --git a/packages/client/src/tiptap/editor/collaboration/collaboration/editor.tsx b/packages/client/src/tiptap/editor/collaboration/collaboration/editor.tsx index d18e3284..43edd522 100644 --- a/packages/client/src/tiptap/editor/collaboration/collaboration/editor.tsx +++ b/packages/client/src/tiptap/editor/collaboration/collaboration/editor.tsx @@ -1,21 +1,22 @@ -import React, { useEffect, forwardRef, useImperativeHandle, useRef, useMemo } from 'react'; -import { Toast, BackTop } from '@douyinfe/semi-ui'; +import { BackTop, Toast } from '@douyinfe/semi-ui'; import { HocuspocusProvider } from '@hocuspocus/provider'; import cls from 'classnames'; +import { Banner } from 'components/banner'; +import { LogoName } from 'components/logo'; +import { getRandomColor } from 'helpers/color'; +import { isAndroid, isIOS } from 'helpers/env'; import { useNetwork } from 'hooks/use-network'; import { useToggle } from 'hooks/use-toggle'; import { useWindowSize } from 'hooks/use-window-size'; -import { LogoName } from 'components/logo'; -import { Banner } from 'components/banner'; +import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from 'react'; import { Collaboration } from 'tiptap/core/extensions/collaboration'; import { CollaborationCursor } from 'tiptap/core/extensions/collaboration-cursor'; -import { getRandomColor } from 'helpers/color'; -import { isAndroid, isIOS } from 'helpers/env'; -import { useEditor, EditorContent } from '../../react'; + +import { EditorContent, useEditor } from '../../react'; import { CollaborationKit } from '../kit'; +import styles from './index.module.scss'; import { MenuBar } from './menubar'; import { ICollaborationEditorProps, ProviderStatus } from './type'; -import styles from './index.module.scss'; type IProps = Pick< ICollaborationEditorProps, diff --git a/packages/client/src/tiptap/editor/collaboration/collaboration/index.tsx b/packages/client/src/tiptap/editor/collaboration/collaboration/index.tsx index 6c00d36d..85c9d0b8 100644 --- a/packages/client/src/tiptap/editor/collaboration/collaboration/index.tsx +++ b/packages/client/src/tiptap/editor/collaboration/collaboration/index.tsx @@ -1,15 +1,16 @@ -import React, { useMemo, useState, useEffect, forwardRef, useImperativeHandle, useRef } from 'react'; -import { Typography, Spin } from '@douyinfe/semi-ui'; -import { IndexeddbPersistence } from 'y-indexeddb'; +import { Spin, Typography } from '@douyinfe/semi-ui'; import { HocuspocusProvider } from '@hocuspocus/provider'; -import { useToggle } from 'hooks/use-toggle'; -import { SecureDocumentIllustration } from 'illustrations/secure-document'; import { DataRender } from 'components/data-render'; import { debounce } from 'helpers/debounce'; +import { useToggle } from 'hooks/use-toggle'; +import { SecureDocumentIllustration } from 'illustrations/secure-document'; +import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'; +import { IndexeddbPersistence } from 'y-indexeddb'; + import { Editor } from '../../react'; -import { ICollaborationEditorProps, ProviderStatus } from './type'; import { EditorInstance } from './editor'; import styles from './index.module.scss'; +import { ICollaborationEditorProps, ProviderStatus } from './type'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/editor/collaboration/collaboration/menubar.tsx b/packages/client/src/tiptap/editor/collaboration/collaboration/menubar.tsx index 89377b1c..f7d9890a 100644 --- a/packages/client/src/tiptap/editor/collaboration/collaboration/menubar.tsx +++ b/packages/client/src/tiptap/editor/collaboration/collaboration/menubar.tsx @@ -1,50 +1,44 @@ -import React, { useMemo } from 'react'; import { Space } from '@douyinfe/semi-ui'; +import React, { useMemo } from 'react'; import { Divider } from 'tiptap/components/divider'; import { Editor } from 'tiptap/editor'; - -import { Insert } from 'tiptap/editor/menus/insert'; -import { Undo } from 'tiptap/editor/menus/undo'; -import { Redo } from 'tiptap/editor/menus/redo'; -import { CleadrNodeAndMarks } from 'tiptap/editor/menus/clear-node-and-marks'; - -import { Heading } from 'tiptap/editor/menus/heading'; -import { FontSize } from 'tiptap/editor/menus/fontsize'; -import { Bold } from 'tiptap/editor/menus/bold'; -import { Italic } from 'tiptap/editor/menus/italic'; -import { Underline } from 'tiptap/editor/menus/underline'; -import { Strike } from 'tiptap/editor/menus/strike'; -import { Code } from 'tiptap/editor/menus/code'; -import { Superscript } from 'tiptap/editor/menus/superscript'; -import { Subscript } from 'tiptap/editor/menus/subscript'; -import { TextColor } from 'tiptap/editor/menus/text-color'; -import { BackgroundColor } from 'tiptap/editor/menus/background-color'; - import { Align } from 'tiptap/editor/menus/align'; - -import { BulletList } from 'tiptap/editor/menus/bullet-list'; -import { OrderedList } from 'tiptap/editor/menus/ordered-list'; -import { TaskList } from 'tiptap/editor/menus/task-list'; -import { Ident } from 'tiptap/editor/menus/ident'; - -import { Emoji } from 'tiptap/editor/menus/emoji'; -import { Link } from 'tiptap/editor/menus/link'; -import { Blockquote } from 'tiptap/editor/menus/blockquote'; -import { HorizontalRule } from 'tiptap/editor/menus/horizontal-rule'; -import { Search } from 'tiptap/editor/menus/search'; - import { Attachment } from 'tiptap/editor/menus/attachment'; +import { BackgroundColor } from 'tiptap/editor/menus/background-color'; +import { Blockquote } from 'tiptap/editor/menus/blockquote'; +import { Bold } from 'tiptap/editor/menus/bold'; +import { BulletList } from 'tiptap/editor/menus/bullet-list'; import { Callout } from 'tiptap/editor/menus/callout'; +import { CleadrNodeAndMarks } from 'tiptap/editor/menus/clear-node-and-marks'; +import { Code } from 'tiptap/editor/menus/code'; import { CodeBlock } from 'tiptap/editor/menus/code-block'; import { Countdonw } from 'tiptap/editor/menus/countdown'; import { DocumentChildren } from 'tiptap/editor/menus/document-children'; import { DocumentReference } from 'tiptap/editor/menus/document-reference'; +import { Emoji } from 'tiptap/editor/menus/emoji'; import { Flow } from 'tiptap/editor/menus/flow'; -import { Image } from 'tiptap/editor/menus/image'; +import { FontSize } from 'tiptap/editor/menus/fontsize'; +import { Heading } from 'tiptap/editor/menus/heading'; +import { HorizontalRule } from 'tiptap/editor/menus/horizontal-rule'; +import { Ident } from 'tiptap/editor/menus/ident'; import { Iframe } from 'tiptap/editor/menus/iframe'; -import { Table } from 'tiptap/editor/menus/table'; -import { Text } from 'tiptap/editor/menus/text'; +import { Image } from 'tiptap/editor/menus/image'; +import { Insert } from 'tiptap/editor/menus/insert'; +import { Italic } from 'tiptap/editor/menus/italic'; +import { Link } from 'tiptap/editor/menus/link'; import { Mind } from 'tiptap/editor/menus/mind'; +import { OrderedList } from 'tiptap/editor/menus/ordered-list'; +import { Redo } from 'tiptap/editor/menus/redo'; +import { Search } from 'tiptap/editor/menus/search'; +import { Strike } from 'tiptap/editor/menus/strike'; +import { Subscript } from 'tiptap/editor/menus/subscript'; +import { Superscript } from 'tiptap/editor/menus/superscript'; +import { Table } from 'tiptap/editor/menus/table'; +import { TaskList } from 'tiptap/editor/menus/task-list'; +import { Text } from 'tiptap/editor/menus/text'; +import { TextColor } from 'tiptap/editor/menus/text-color'; +import { Underline } from 'tiptap/editor/menus/underline'; +import { Undo } from 'tiptap/editor/menus/undo'; const _MenuBar: React.FC<{ editor: Editor }> = ({ editor }) => { const isEditable = useMemo(() => editor && editor.isEditable, [editor]); diff --git a/packages/client/src/tiptap/editor/collaboration/index.tsx b/packages/client/src/tiptap/editor/collaboration/index.tsx index 6224f37a..bd000c9b 100644 --- a/packages/client/src/tiptap/editor/collaboration/index.tsx +++ b/packages/client/src/tiptap/editor/collaboration/index.tsx @@ -1,4 +1,4 @@ export * from './collaboration'; -export * from './reader'; -export * from './kit'; export * from './collaboration/type'; +export * from './kit'; +export * from './reader'; diff --git a/packages/client/src/tiptap/editor/collaboration/kit.ts b/packages/client/src/tiptap/editor/collaboration/kit.ts index 57f542b7..605434fc 100644 --- a/packages/client/src/tiptap/editor/collaboration/kit.ts +++ b/packages/client/src/tiptap/editor/collaboration/kit.ts @@ -1,16 +1,24 @@ import { Toast } from '@douyinfe/semi-ui'; -// 基础扩展 -import { Document } from 'tiptap/core/extensions/document'; +// 自定义节点扩展 +import { Attachment } from 'tiptap/core/extensions/attachment'; import { BackgroundColor } from 'tiptap/core/extensions/background-color'; import { Blockquote } from 'tiptap/core/extensions/blockquote'; import { Bold } from 'tiptap/core/extensions/bold'; import { BulletList } from 'tiptap/core/extensions/bullet-list'; +import { Callout } from 'tiptap/core/extensions/callout'; import { Code } from 'tiptap/core/extensions/code'; import { CodeBlock } from 'tiptap/core/extensions/code-block'; import { Color } from 'tiptap/core/extensions/color'; import { ColorHighlighter } from 'tiptap/core/extensions/color-highlighter'; +import { Countdown } from 'tiptap/core/extensions/countdown'; +// 基础扩展 +import { Document } from 'tiptap/core/extensions/document'; +import { DocumentChildren } from 'tiptap/core/extensions/document-children'; +import { DocumentReference } from 'tiptap/core/extensions/document-reference'; import { Dropcursor } from 'tiptap/core/extensions/dropcursor'; +import { Emoji } from 'tiptap/core/extensions/emoji'; import { EventEmitter } from 'tiptap/core/extensions/event-emitter'; +import { Flow } from 'tiptap/core/extensions/flow'; import { Focus } from 'tiptap/core/extensions/focus'; import { FontSize } from 'tiptap/core/extensions/font-size'; import { Gapcursor } from 'tiptap/core/extensions/gapcursor'; @@ -18,49 +26,41 @@ import { HardBreak } from 'tiptap/core/extensions/hard-break'; import { Heading } from 'tiptap/core/extensions/heading'; import { HorizontalRule } from 'tiptap/core/extensions/horizontal-rule'; import { HTMLMarks } from 'tiptap/core/extensions/html-marks'; +import { Iframe } from 'tiptap/core/extensions/iframe'; import { Image } from 'tiptap/core/extensions/image'; import { Indent } from 'tiptap/core/extensions/indent'; import { Italic } from 'tiptap/core/extensions/italic'; +import { Katex } from 'tiptap/core/extensions/katex'; import { Link } from 'tiptap/core/extensions/link'; import { ListItem } from 'tiptap/core/extensions/listItem'; import { Loading } from 'tiptap/core/extensions/loading'; +import { Mention } from 'tiptap/core/extensions/mention'; +import { Mind } from 'tiptap/core/extensions/mind'; import { OrderedList } from 'tiptap/core/extensions/ordered-list'; import { Paragraph } from 'tiptap/core/extensions/paragraph'; +import { Paste } from 'tiptap/core/extensions/paste'; import { Placeholder } from 'tiptap/core/extensions/placeholder'; -import { SelectionExtension } from 'tiptap/core/extensions/selection'; +import { QuickInsert } from 'tiptap/core/extensions/quick-insert'; import { ScrollIntoView } from 'tiptap/core/extensions/scroll-into-view'; +import { SearchNReplace } from 'tiptap/core/extensions/search'; +import { SelectionExtension } from 'tiptap/core/extensions/selection'; +import { Status } from 'tiptap/core/extensions/status'; import { Strike } from 'tiptap/core/extensions/strike'; import { Subscript } from 'tiptap/core/extensions/subscript'; import { Superscript } from 'tiptap/core/extensions/superscript'; import { Table } from 'tiptap/core/extensions/table'; import { TableCell } from 'tiptap/core/extensions/table-cell'; import { TableHeader } from 'tiptap/core/extensions/table-header'; +import { TableOfContents } from 'tiptap/core/extensions/table-of-contents'; import { TableRow } from 'tiptap/core/extensions/table-row'; +import { TaskItem } from 'tiptap/core/extensions/task-item'; +import { TaskList } from 'tiptap/core/extensions/task-list'; import { Text } from 'tiptap/core/extensions/text'; import { TextAlign } from 'tiptap/core/extensions/text-align'; import { TextStyle } from 'tiptap/core/extensions/text-style'; -import { TaskItem } from 'tiptap/core/extensions/task-item'; -import { TaskList } from 'tiptap/core/extensions/task-list'; import { Title } from 'tiptap/core/extensions/title'; import { TrailingNode } from 'tiptap/core/extensions/trailing-node'; import { Underline } from 'tiptap/core/extensions/underline'; -import { Paste } from 'tiptap/core/extensions/paste'; -// 自定义节点扩展 -import { Attachment } from 'tiptap/core/extensions/attachment'; -import { Callout } from 'tiptap/core/extensions/callout'; -import { Countdown } from 'tiptap/core/extensions/countdown'; -import { DocumentChildren } from 'tiptap/core/extensions/document-children'; -import { DocumentReference } from 'tiptap/core/extensions/document-reference'; -import { Emoji } from 'tiptap/core/extensions/emoji'; -import { Flow } from 'tiptap/core/extensions/flow'; -import { Iframe } from 'tiptap/core/extensions/iframe'; -import { Katex } from 'tiptap/core/extensions/katex'; -import { Mention } from 'tiptap/core/extensions/mention'; -import { Mind } from 'tiptap/core/extensions/mind'; -import { QuickInsert } from 'tiptap/core/extensions/quick-insert'; -import { SearchNReplace } from 'tiptap/core/extensions/search'; -import { Status } from 'tiptap/core/extensions/status'; -import { TableOfContents } from 'tiptap/core/extensions/table-of-contents'; // markdown 支持 import { markdownToProsemirror } from 'tiptap/markdown/markdown-to-prosemirror'; import { markdownToHTML } from 'tiptap/markdown/markdown-to-prosemirror/markdown-to-html'; diff --git a/packages/client/src/tiptap/editor/collaboration/reader.tsx b/packages/client/src/tiptap/editor/collaboration/reader.tsx index 22e63dfd..b31963dd 100644 --- a/packages/client/src/tiptap/editor/collaboration/reader.tsx +++ b/packages/client/src/tiptap/editor/collaboration/reader.tsx @@ -1,6 +1,7 @@ -import React, { useMemo } from 'react'; import { safeJSONParse } from 'helpers/json'; -import { useEditor, EditorContent } from '../react'; +import React, { useMemo } from 'react'; + +import { EditorContent, useEditor } from '../react'; import { CollaborationKit } from './kit'; interface IProps { diff --git a/packages/client/src/tiptap/editor/comment/kit.ts b/packages/client/src/tiptap/editor/comment/kit.ts index 4886b666..20e7dd6d 100644 --- a/packages/client/src/tiptap/editor/comment/kit.ts +++ b/packages/client/src/tiptap/editor/comment/kit.ts @@ -1,4 +1,3 @@ -import { Document } from 'tiptap/core/extensions/document'; import History from '@tiptap/extension-history'; import { BackgroundColor } from 'tiptap/core/extensions/background-color'; import { Blockquote } from 'tiptap/core/extensions/blockquote'; @@ -8,9 +7,10 @@ import { Code } from 'tiptap/core/extensions/code'; import { CodeBlock } from 'tiptap/core/extensions/code-block'; import { Color } from 'tiptap/core/extensions/color'; import { ColorHighlighter } from 'tiptap/core/extensions/color-highlighter'; +import { Document } from 'tiptap/core/extensions/document'; import { Dropcursor } from 'tiptap/core/extensions/dropcursor'; -import { EventEmitter } from 'tiptap/core/extensions/event-emitter'; import { Emoji } from 'tiptap/core/extensions/emoji'; +import { EventEmitter } from 'tiptap/core/extensions/event-emitter'; import { Focus } from 'tiptap/core/extensions/focus'; import { FontSize } from 'tiptap/core/extensions/font-size'; import { Gapcursor } from 'tiptap/core/extensions/gapcursor'; @@ -26,24 +26,23 @@ import { ListItem } from 'tiptap/core/extensions/listItem'; import { Mention } from 'tiptap/core/extensions/mention'; import { OrderedList } from 'tiptap/core/extensions/ordered-list'; import { Paragraph } from 'tiptap/core/extensions/paragraph'; +import { Paste } from 'tiptap/core/extensions/paste'; import { Placeholder } from 'tiptap/core/extensions/placeholder'; -import { Strike } from 'tiptap/core/extensions/strike'; import { ScrollIntoView } from 'tiptap/core/extensions/scroll-into-view'; +import { Strike } from 'tiptap/core/extensions/strike'; import { Subscript } from 'tiptap/core/extensions/subscript'; import { Superscript } from 'tiptap/core/extensions/superscript'; import { Table } from 'tiptap/core/extensions/table'; import { TableCell } from 'tiptap/core/extensions/table-cell'; import { TableHeader } from 'tiptap/core/extensions/table-header'; import { TableRow } from 'tiptap/core/extensions/table-row'; +import { TaskItem } from 'tiptap/core/extensions/task-item'; +import { TaskList } from 'tiptap/core/extensions/task-list'; import { Text } from 'tiptap/core/extensions/text'; import { TextAlign } from 'tiptap/core/extensions/text-align'; import { TextStyle } from 'tiptap/core/extensions/text-style'; -import { TaskItem } from 'tiptap/core/extensions/task-item'; -import { TaskList } from 'tiptap/core/extensions/task-list'; import { TrailingNode } from 'tiptap/core/extensions/trailing-node'; import { Underline } from 'tiptap/core/extensions/underline'; -import { Paste } from 'tiptap/core/extensions/paste'; - // markdown 支持 import { markdownToProsemirror } from 'tiptap/markdown/markdown-to-prosemirror'; import { markdownToHTML } from 'tiptap/markdown/markdown-to-prosemirror/markdown-to-html'; diff --git a/packages/client/src/tiptap/editor/comment/menubar.tsx b/packages/client/src/tiptap/editor/comment/menubar.tsx index 0b7b5409..83843c9b 100644 --- a/packages/client/src/tiptap/editor/comment/menubar.tsx +++ b/packages/client/src/tiptap/editor/comment/menubar.tsx @@ -1,22 +1,20 @@ -import React from 'react'; -import { Editor } from 'tiptap/editor'; import { Space } from '@douyinfe/semi-ui'; +import React from 'react'; import { Divider } from 'tiptap/components/divider'; - -import { Undo } from 'tiptap/editor/menus/undo'; -import { Redo } from 'tiptap/editor/menus/redo'; -import { CleadrNodeAndMarks } from 'tiptap/editor/menus/clear-node-and-marks'; - -import { Heading } from 'tiptap/editor/menus/heading'; -import { Bold } from 'tiptap/editor/menus/bold'; -import { Italic } from 'tiptap/editor/menus/italic'; -import { Underline } from 'tiptap/editor/menus/underline'; -import { Strike } from 'tiptap/editor/menus/strike'; -import { Code } from 'tiptap/editor/menus/code'; -import { Superscript } from 'tiptap/editor/menus/superscript'; -import { Subscript } from 'tiptap/editor/menus/subscript'; -import { TextColor } from 'tiptap/editor/menus/text-color'; +import { Editor } from 'tiptap/editor'; import { BackgroundColor } from 'tiptap/editor/menus/background-color'; +import { Bold } from 'tiptap/editor/menus/bold'; +import { CleadrNodeAndMarks } from 'tiptap/editor/menus/clear-node-and-marks'; +import { Code } from 'tiptap/editor/menus/code'; +import { Heading } from 'tiptap/editor/menus/heading'; +import { Italic } from 'tiptap/editor/menus/italic'; +import { Redo } from 'tiptap/editor/menus/redo'; +import { Strike } from 'tiptap/editor/menus/strike'; +import { Subscript } from 'tiptap/editor/menus/subscript'; +import { Superscript } from 'tiptap/editor/menus/superscript'; +import { TextColor } from 'tiptap/editor/menus/text-color'; +import { Underline } from 'tiptap/editor/menus/underline'; +import { Undo } from 'tiptap/editor/menus/undo'; const _CommentMenuBar: React.FC<{ editor: Editor }> = ({ editor }) => { return ( diff --git a/packages/client/src/tiptap/editor/hooks/use-active.tsx b/packages/client/src/tiptap/editor/hooks/use-active.tsx index 8bae1519..65c7fb21 100644 --- a/packages/client/src/tiptap/editor/hooks/use-active.tsx +++ b/packages/client/src/tiptap/editor/hooks/use-active.tsx @@ -1,6 +1,6 @@ -import React, { useEffect } from 'react'; import { Editor } from '@tiptap/core'; import { useToggle } from 'hooks/use-toggle'; +import React, { useEffect } from 'react'; export const useActive = (editor: Editor, ...args) => { const [active, toggleActive] = useToggle(false); diff --git a/packages/client/src/tiptap/editor/hooks/use-attributes.tsx b/packages/client/src/tiptap/editor/hooks/use-attributes.tsx index 2238bfdc..6f5cae9f 100644 --- a/packages/client/src/tiptap/editor/hooks/use-attributes.tsx +++ b/packages/client/src/tiptap/editor/hooks/use-attributes.tsx @@ -1,6 +1,6 @@ -import React, { useEffect, useRef, useState } from 'react'; import { Editor } from '@tiptap/core'; import deepEqual from 'deep-equal'; +import React, { useEffect, useRef, useState } from 'react'; type MapFn = (arg: T) => R; diff --git a/packages/client/src/tiptap/editor/menus/_event.ts b/packages/client/src/tiptap/editor/menus/_event.ts index c3f46c44..7c031817 100644 --- a/packages/client/src/tiptap/editor/menus/_event.ts +++ b/packages/client/src/tiptap/editor/menus/_event.ts @@ -1,5 +1,5 @@ -import { Editor } from 'tiptap/editor'; import { EventEmitter } from 'helpers/event-emitter'; +import { Editor } from 'tiptap/editor'; const getEventEmitter = (editor: Editor): EventEmitter => { try { diff --git a/packages/client/src/tiptap/editor/menus/align/index.tsx b/packages/client/src/tiptap/editor/menus/align/index.tsx index 61e9ba17..f0b5eeab 100644 --- a/packages/client/src/tiptap/editor/menus/align/index.tsx +++ b/packages/client/src/tiptap/editor/menus/align/index.tsx @@ -1,9 +1,9 @@ -import React, { useCallback, useMemo } from 'react'; -import { Editor } from 'tiptap/editor'; +import { IconAlignCenter, IconAlignJustify, IconAlignLeft, IconAlignRight } from '@douyinfe/semi-icons'; import { Button, Dropdown, Tooltip } from '@douyinfe/semi-ui'; -import { IconAlignLeft, IconAlignCenter, IconAlignRight, IconAlignJustify } from '@douyinfe/semi-icons'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import React, { useCallback, useMemo } from 'react'; import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Align: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/attachment/bubble.tsx b/packages/client/src/tiptap/editor/menus/attachment/bubble.tsx index 365ac760..de0512c9 100644 --- a/packages/client/src/tiptap/editor/menus/attachment/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/attachment/bubble.tsx @@ -1,11 +1,11 @@ -import { Space, Button } from '@douyinfe/semi-ui'; import { IconCopy, IconDelete } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; -import { Attachment } from 'tiptap/core/extensions/attachment'; -import { copyNode, deleteNode } from 'tiptap/prose-utils'; -import { Divider } from 'tiptap/components/divider'; import { useCallback } from 'react'; +import { Divider } from 'tiptap/components/divider'; +import { Attachment } from 'tiptap/core/extensions/attachment'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { copyNode, deleteNode } from 'tiptap/prose-utils'; export const AttachmentBubbleMenu = ({ editor }) => { const copyMe = useCallback(() => copyNode(Attachment.name, editor), [editor]); diff --git a/packages/client/src/tiptap/editor/menus/attachment/index.tsx b/packages/client/src/tiptap/editor/menus/attachment/index.tsx index f39e72e3..a076c2ea 100644 --- a/packages/client/src/tiptap/editor/menus/attachment/index.tsx +++ b/packages/client/src/tiptap/editor/menus/attachment/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { AttachmentBubbleMenu } from './bubble'; export const Attachment: React.FC<{ editor: Editor }> = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/background-color/index.tsx b/packages/client/src/tiptap/editor/menus/background-color/index.tsx index 41ad50a8..97b354f9 100644 --- a/packages/client/src/tiptap/editor/menus/background-color/index.tsx +++ b/packages/client/src/tiptap/editor/menus/background-color/index.tsx @@ -1,12 +1,12 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; import { IconMark } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { ColorPicker } from 'tiptap/components/color-picker'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; const FlexStyle: React.CSSProperties = { display: 'inline-flex', diff --git a/packages/client/src/tiptap/editor/menus/blockquote/index.tsx b/packages/client/src/tiptap/editor/menus/blockquote/index.tsx index 4336684c..8fa22a09 100644 --- a/packages/client/src/tiptap/editor/menus/blockquote/index.tsx +++ b/packages/client/src/tiptap/editor/menus/blockquote/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; import { Button } from '@douyinfe/semi-ui'; -import { Tooltip } from 'components/tooltip'; import { IconQuote } from 'components/icons'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import { Tooltip } from 'components/tooltip'; +import React, { useCallback } from 'react'; import { Blockquote as BlockquoteExtension } from 'tiptap/core/extensions/blockquote'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Blockquote: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/bold/index.tsx b/packages/client/src/tiptap/editor/menus/bold/index.tsx index f24e9bef..ba0b1bd5 100644 --- a/packages/client/src/tiptap/editor/menus/bold/index.tsx +++ b/packages/client/src/tiptap/editor/menus/bold/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; import { IconBold } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { Bold as BoldExtension } from 'tiptap/core/extensions/bold'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Bold: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/bullet-list/index.tsx b/packages/client/src/tiptap/editor/menus/bullet-list/index.tsx index b1399446..6515de67 100644 --- a/packages/client/src/tiptap/editor/menus/bullet-list/index.tsx +++ b/packages/client/src/tiptap/editor/menus/bullet-list/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; import { Button } from '@douyinfe/semi-ui'; import { IconList } from 'components/icons'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { BulletList as BulletListExtension } from 'tiptap/core/extensions/bullet-list'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const BulletList: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/callout/bubble.tsx b/packages/client/src/tiptap/editor/menus/callout/bubble.tsx index 5ca7aa8e..7d3c1521 100644 --- a/packages/client/src/tiptap/editor/menus/callout/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/callout/bubble.tsx @@ -1,13 +1,14 @@ -import { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Space, Button, Popover, Typography } from '@douyinfe/semi-ui'; import { IconCopy, IconDelete } from '@douyinfe/semi-icons'; -import { Tooltip } from 'components/tooltip'; +import { Button, Popover, Space, Typography } from '@douyinfe/semi-ui'; import { IconDrawBoard } from 'components/icons'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { Tooltip } from 'components/tooltip'; +import { useCallback } from 'react'; import { Divider } from 'tiptap/components/divider'; import { Callout } from 'tiptap/core/extensions/callout'; +import { Editor } from 'tiptap/editor'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; + import styles from './bubble.module.scss'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/editor/menus/callout/index.tsx b/packages/client/src/tiptap/editor/menus/callout/index.tsx index 9cc9e116..5a89558a 100644 --- a/packages/client/src/tiptap/editor/menus/callout/index.tsx +++ b/packages/client/src/tiptap/editor/menus/callout/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { CalloutBubbleMenu } from './bubble'; export const Callout: React.FC<{ editor: Editor }> = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/clear-node-and-marks/index.tsx b/packages/client/src/tiptap/editor/menus/clear-node-and-marks/index.tsx index 5759bb17..4a6d86f5 100644 --- a/packages/client/src/tiptap/editor/menus/clear-node-and-marks/index.tsx +++ b/packages/client/src/tiptap/editor/menus/clear-node-and-marks/index.tsx @@ -1,8 +1,8 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; import { Button } from '@douyinfe/semi-ui'; import { IconClear } from 'components/icons'; import { Tooltip } from 'components/tooltip'; +import React, { useCallback } from 'react'; +import { Editor } from 'tiptap/editor'; export const CleadrNodeAndMarks: React.FC<{ editor: Editor }> = ({ editor }) => { const clear = useCallback(() => { diff --git a/packages/client/src/tiptap/editor/menus/code-block/bubble.tsx b/packages/client/src/tiptap/editor/menus/code-block/bubble.tsx index 1daa3732..79a9ca72 100644 --- a/packages/client/src/tiptap/editor/menus/code-block/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/code-block/bubble.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; import { IconCopy, IconDelete } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; -import { CodeBlock } from 'tiptap/core/extensions/code-block'; -import { copyNode, deleteNode } from 'tiptap/prose-utils'; +import React, { useCallback } from 'react'; import { Divider } from 'tiptap/components/divider'; +import { CodeBlock } from 'tiptap/core/extensions/code-block'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { copyNode, deleteNode } from 'tiptap/prose-utils'; export const CodeBlockBubbleMenu = ({ editor }) => { const shouldShow = useCallback(() => editor.isActive(CodeBlock.name), [editor]); diff --git a/packages/client/src/tiptap/editor/menus/code-block/index.tsx b/packages/client/src/tiptap/editor/menus/code-block/index.tsx index 83734082..cb6aefd2 100644 --- a/packages/client/src/tiptap/editor/menus/code-block/index.tsx +++ b/packages/client/src/tiptap/editor/menus/code-block/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { CodeBlockBubbleMenu } from './bubble'; export const CodeBlock: React.FC<{ editor: Editor }> = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/code/index.tsx b/packages/client/src/tiptap/editor/menus/code/index.tsx index 62489b31..70a03f9f 100644 --- a/packages/client/src/tiptap/editor/menus/code/index.tsx +++ b/packages/client/src/tiptap/editor/menus/code/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; import { IconCode } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { Code as InlineCode } from 'tiptap/core/extensions/code'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Code: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/countdown/bubble.tsx b/packages/client/src/tiptap/editor/menus/countdown/bubble.tsx index 0f0de0b4..cf13c716 100644 --- a/packages/client/src/tiptap/editor/menus/countdown/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/countdown/bubble.tsx @@ -1,12 +1,13 @@ -import { useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; -import { IconEdit, IconCopy, IconDelete } from '@douyinfe/semi-icons'; +import { IconCopy, IconDelete, IconEdit } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; -import { Countdown } from 'tiptap/core/extensions/countdown'; +import { useCallback } from 'react'; import { Divider } from 'tiptap/components/divider'; -import { copyNode, deleteNode } from 'tiptap/prose-utils'; +import { Countdown } from 'tiptap/core/extensions/countdown'; import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { copyNode, deleteNode } from 'tiptap/prose-utils'; + import { triggerOpenCountSettingModal } from '../_event'; export const CountdownBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/countdown/index.tsx b/packages/client/src/tiptap/editor/menus/countdown/index.tsx index b24dd680..c0dc4ec0 100644 --- a/packages/client/src/tiptap/editor/menus/countdown/index.tsx +++ b/packages/client/src/tiptap/editor/menus/countdown/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { CountdownBubbleMenu } from './bubble'; import { CountdownSettingModal } from './modal'; diff --git a/packages/client/src/tiptap/editor/menus/countdown/modal.tsx b/packages/client/src/tiptap/editor/menus/countdown/modal.tsx index ac2b2a00..9b6d547a 100644 --- a/packages/client/src/tiptap/editor/menus/countdown/modal.tsx +++ b/packages/client/src/tiptap/editor/menus/countdown/modal.tsx @@ -1,9 +1,10 @@ -import { useCallback, useEffect, useRef, useState } from 'react'; import { Form, Modal } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; -import { Editor } from 'tiptap/editor'; import { useToggle } from 'hooks/use-toggle'; -import { OPEN_COUNT_SETTING_MODAL, subject, cancelSubject } from '../_event'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import { Editor } from 'tiptap/editor'; + +import { cancelSubject, OPEN_COUNT_SETTING_MODAL, subject } from '../_event'; type IProps = { editor: Editor }; diff --git a/packages/client/src/tiptap/editor/menus/countdown/service.ts b/packages/client/src/tiptap/editor/menus/countdown/service.ts index e02f4043..3e14d4e7 100644 --- a/packages/client/src/tiptap/editor/menus/countdown/service.ts +++ b/packages/client/src/tiptap/editor/menus/countdown/service.ts @@ -1,4 +1,5 @@ import { Editor } from 'tiptap/editor'; + import { triggerOpenCountSettingModal } from '../_event'; /** diff --git a/packages/client/src/tiptap/editor/menus/document-children/bubble.tsx b/packages/client/src/tiptap/editor/menus/document-children/bubble.tsx index ae897d0f..2d73e911 100644 --- a/packages/client/src/tiptap/editor/menus/document-children/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/document-children/bubble.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; import { IconCopy, IconDelete } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; -import { DocumentChildren } from 'tiptap/core/extensions/document-children'; -import { copyNode, deleteNode } from 'tiptap/prose-utils'; +import React, { useCallback } from 'react'; import { Divider } from 'tiptap/components/divider'; +import { DocumentChildren } from 'tiptap/core/extensions/document-children'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { copyNode, deleteNode } from 'tiptap/prose-utils'; export const DocumentChildrenBubbleMenu = ({ editor }) => { const shouldShow = useCallback(() => editor.isActive(DocumentChildren.name), [editor]); diff --git a/packages/client/src/tiptap/editor/menus/document-children/index.tsx b/packages/client/src/tiptap/editor/menus/document-children/index.tsx index 9f54245a..dd491bb3 100644 --- a/packages/client/src/tiptap/editor/menus/document-children/index.tsx +++ b/packages/client/src/tiptap/editor/menus/document-children/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { DocumentChildrenBubbleMenu } from './bubble'; export const DocumentChildren: React.FC<{ editor: Editor }> = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/document-reference/bubble.tsx b/packages/client/src/tiptap/editor/menus/document-reference/bubble.tsx index be6f5e0f..c2241ba2 100644 --- a/packages/client/src/tiptap/editor/menus/document-reference/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/document-reference/bubble.tsx @@ -1,14 +1,14 @@ -import { useCallback } from 'react'; -import { useRouter } from 'next/router'; -import { Space, Button, List, Popover, Typography } from '@douyinfe/semi-ui'; -import { IconEdit, IconCopy, IconDelete } from '@douyinfe/semi-icons'; -import { Tooltip } from 'components/tooltip'; +import { IconCopy, IconDelete, IconEdit } from '@douyinfe/semi-icons'; +import { Button, List, Popover, Space, Typography } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; import { IconDocument } from 'components/icons'; +import { Tooltip } from 'components/tooltip'; import { useWikiTocs } from 'data/wiki'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; -import { DocumentReference } from 'tiptap/core/extensions/document-reference'; +import { useRouter } from 'next/router'; +import { useCallback } from 'react'; import { Divider } from 'tiptap/components/divider'; +import { DocumentReference } from 'tiptap/core/extensions/document-reference'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/editor/menus/document-reference/index.tsx b/packages/client/src/tiptap/editor/menus/document-reference/index.tsx index 0b69d3d2..3ea87d02 100644 --- a/packages/client/src/tiptap/editor/menus/document-reference/index.tsx +++ b/packages/client/src/tiptap/editor/menus/document-reference/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { DocumentReferenceBubbleMenu } from './bubble'; export const DocumentReference: React.FC<{ editor: Editor }> = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/emoji/index.tsx b/packages/client/src/tiptap/editor/menus/emoji/index.tsx index 4c28080f..1680ac3f 100644 --- a/packages/client/src/tiptap/editor/menus/emoji/index.tsx +++ b/packages/client/src/tiptap/editor/menus/emoji/index.tsx @@ -1,9 +1,9 @@ +import { Button } from '@douyinfe/semi-ui'; +import { EmojiPicker } from 'components/emoji-picker'; +import { IconEmoji } from 'components/icons'; +import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; -import { Tooltip } from 'components/tooltip'; -import { IconEmoji } from 'components/icons'; -import { EmojiPicker } from 'components/emoji-picker'; export const Emoji: React.FC<{ editor: Editor }> = ({ editor }) => { const setEmoji = useCallback( diff --git a/packages/client/src/tiptap/editor/menus/flow/bubble.tsx b/packages/client/src/tiptap/editor/menus/flow/bubble.tsx index 5bee435e..7bed994d 100644 --- a/packages/client/src/tiptap/editor/menus/flow/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/flow/bubble.tsx @@ -1,12 +1,13 @@ -import { useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; -import { IconEdit, IconCopy, IconDelete } from '@douyinfe/semi-icons'; +import { IconCopy, IconDelete, IconEdit } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; -import { Flow } from 'tiptap/core/extensions/flow'; +import { useCallback } from 'react'; import { Divider } from 'tiptap/components/divider'; -import { copyNode, deleteNode } from 'tiptap/prose-utils'; +import { Flow } from 'tiptap/core/extensions/flow'; import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { copyNode, deleteNode } from 'tiptap/prose-utils'; + import { triggerOpenFlowSettingModal } from '../_event'; export const FlowBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/flow/index.tsx b/packages/client/src/tiptap/editor/menus/flow/index.tsx index 3aecfc34..130e2bdb 100644 --- a/packages/client/src/tiptap/editor/menus/flow/index.tsx +++ b/packages/client/src/tiptap/editor/menus/flow/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { FlowBubbleMenu } from './bubble'; import { FlowSettingModal } from './modal'; diff --git a/packages/client/src/tiptap/editor/menus/flow/modal.tsx b/packages/client/src/tiptap/editor/menus/flow/modal.tsx index e1cd8fa5..673a9b9f 100644 --- a/packages/client/src/tiptap/editor/menus/flow/modal.tsx +++ b/packages/client/src/tiptap/editor/menus/flow/modal.tsx @@ -1,9 +1,10 @@ -import { useEffect, useRef, useState } from 'react'; import { Modal } from '@douyinfe/semi-ui'; -import { Editor } from 'tiptap/editor'; -import { useToggle } from 'hooks/use-toggle'; import { Theme, useTheme } from 'hooks/use-theme'; -import { OPEN_FLOW_SETTING_MODAL, subject, cancelSubject } from '../_event'; +import { useToggle } from 'hooks/use-toggle'; +import { useEffect, useRef, useState } from 'react'; +import { Editor } from 'tiptap/editor'; + +import { cancelSubject, OPEN_FLOW_SETTING_MODAL, subject } from '../_event'; type IProps = { editor: Editor }; diff --git a/packages/client/src/tiptap/editor/menus/fontsize/index.tsx b/packages/client/src/tiptap/editor/menus/fontsize/index.tsx index 97d5a9d5..a18e5889 100644 --- a/packages/client/src/tiptap/editor/menus/fontsize/index.tsx +++ b/packages/client/src/tiptap/editor/menus/fontsize/index.tsx @@ -1,8 +1,8 @@ -import React, { useCallback } from 'react'; import { Select } from '@douyinfe/semi-ui'; +import React, { useCallback } from 'react'; +import { Title } from 'tiptap/core/extensions/title'; import { Editor } from 'tiptap/editor'; import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; export const FONT_SIZES = [12, 13, 14, 15, 16, 19, 22, 24, 29, 32, 40, 48]; diff --git a/packages/client/src/tiptap/editor/menus/heading/index.tsx b/packages/client/src/tiptap/editor/menus/heading/index.tsx index 762b09db..d4ce2a1e 100644 --- a/packages/client/src/tiptap/editor/menus/heading/index.tsx +++ b/packages/client/src/tiptap/editor/menus/heading/index.tsx @@ -1,8 +1,8 @@ -import React, { useCallback, useMemo } from 'react'; -import { Editor } from 'tiptap/editor'; import { Select } from '@douyinfe/semi-ui'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import React, { useCallback, useMemo } from 'react'; import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Heading: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/horizontal-rule/index.tsx b/packages/client/src/tiptap/editor/menus/horizontal-rule/index.tsx index 54474991..cfb56cc6 100644 --- a/packages/client/src/tiptap/editor/menus/horizontal-rule/index.tsx +++ b/packages/client/src/tiptap/editor/menus/horizontal-rule/index.tsx @@ -1,10 +1,10 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; import { Button } from '@douyinfe/semi-ui'; -import { Tooltip } from 'components/tooltip'; import { IconHorizontalRule } from 'components/icons'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { Tooltip } from 'components/tooltip'; +import React, { useCallback } from 'react'; import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const HorizontalRule: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/ident/index.tsx b/packages/client/src/tiptap/editor/menus/ident/index.tsx index ddfcdcfa..0bb24039 100644 --- a/packages/client/src/tiptap/editor/menus/ident/index.tsx +++ b/packages/client/src/tiptap/editor/menus/ident/index.tsx @@ -1,10 +1,10 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; import { IconIndentLeft, IconIndentRight } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import React, { useCallback } from 'react'; import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Ident: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/iframe/bubble.tsx b/packages/client/src/tiptap/editor/menus/iframe/bubble.tsx index d0b4a70c..7e4e2ef0 100644 --- a/packages/client/src/tiptap/editor/menus/iframe/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/iframe/bubble.tsx @@ -1,15 +1,15 @@ -import { useCallback, useRef } from 'react'; -import { Space, Button, Modal, Form, Typography } from '@douyinfe/semi-ui'; +import { IconCopy, IconDelete, IconEdit, IconExternalOpen, IconLineHeight } from '@douyinfe/semi-icons'; +import { Button, Form, Modal, Space, Typography } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; -import { IconEdit, IconExternalOpen, IconLineHeight, IconCopy, IconDelete } from '@douyinfe/semi-icons'; -import { useToggle } from 'hooks/use-toggle'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; -import { Iframe } from 'tiptap/core/extensions/iframe'; -import { copyNode, deleteNode } from 'tiptap/prose-utils'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { useToggle } from 'hooks/use-toggle'; +import { useCallback, useRef } from 'react'; import { Divider } from 'tiptap/components/divider'; import { Size } from 'tiptap/components/size'; +import { Iframe } from 'tiptap/core/extensions/iframe'; +import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { copyNode, deleteNode } from 'tiptap/prose-utils'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/editor/menus/iframe/index.tsx b/packages/client/src/tiptap/editor/menus/iframe/index.tsx index 05f922e0..a1a0c77b 100644 --- a/packages/client/src/tiptap/editor/menus/iframe/index.tsx +++ b/packages/client/src/tiptap/editor/menus/iframe/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { IframeBubbleMenu } from './bubble'; export const Iframe: React.FC<{ editor: Editor }> = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/image/bubble.tsx b/packages/client/src/tiptap/editor/menus/image/bubble.tsx index e89df83d..ce1ac29b 100644 --- a/packages/client/src/tiptap/editor/menus/image/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/image/bubble.tsx @@ -1,20 +1,20 @@ -import React, { useCallback, useEffect, useState } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; import { - IconAlignLeft, IconAlignCenter, + IconAlignLeft, IconAlignRight, - IconLineHeight, IconCopy, IconDelete, + IconLineHeight, } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import React, { useCallback, useEffect, useState } from 'react'; import { Divider } from 'tiptap/components/divider'; -import { Image } from 'tiptap/core/extensions/image'; -import { getEditorContainerDOMSize, copyNode, deleteNode } from 'tiptap/prose-utils'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; import { Size } from 'tiptap/components/size'; +import { Image } from 'tiptap/core/extensions/image'; +import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { copyNode, deleteNode, getEditorContainerDOMSize } from 'tiptap/prose-utils'; export const ImageBubbleMenu = ({ editor }) => { const { width: maxWidth } = getEditorContainerDOMSize(editor); diff --git a/packages/client/src/tiptap/editor/menus/image/index.tsx b/packages/client/src/tiptap/editor/menus/image/index.tsx index 696b2084..7b1c29e3 100644 --- a/packages/client/src/tiptap/editor/menus/image/index.tsx +++ b/packages/client/src/tiptap/editor/menus/image/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { ImageBubbleMenu } from './bubble'; export const Image: React.FC<{ editor: Editor }> = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/insert/index.tsx b/packages/client/src/tiptap/editor/menus/insert/index.tsx index d522f809..f3f74f4f 100644 --- a/packages/client/src/tiptap/editor/menus/insert/index.tsx +++ b/packages/client/src/tiptap/editor/menus/insert/index.tsx @@ -1,29 +1,30 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button, Dropdown, Popover } from '@douyinfe/semi-ui'; import { IconPlus } from '@douyinfe/semi-icons'; -import { Tooltip } from 'components/tooltip'; -import { - IconDocument, - IconMind, - IconTable, - IconImage, - IconCodeBlock, - IconLink, - IconStatus, - IconAttachment, - IconMath, - IconCountdown, - IconCallout, - IconTableOfContents, - IconFlow, -} from 'components/icons'; +import { Button, Dropdown, Popover } from '@douyinfe/semi-ui'; import { GridSelect } from 'components/grid-select'; -import { useToggle } from 'hooks/use-toggle'; +import { + IconAttachment, + IconCallout, + IconCodeBlock, + IconCountdown, + IconDocument, + IconFlow, + IconImage, + IconLink, + IconMath, + IconMind, + IconStatus, + IconTable, + IconTableOfContents, +} from 'components/icons'; +import { Tooltip } from 'components/tooltip'; import { useUser } from 'data/user'; import { createKeysLocalStorageLRUCache } from 'helpers/lru-cache'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useToggle } from 'hooks/use-toggle'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; + import { createCountdown } from '../countdown/service'; const insertMenuLRUCache = createKeysLocalStorageLRUCache('TIPTAP_INSERT_MENU', 3); diff --git a/packages/client/src/tiptap/editor/menus/italic/index.tsx b/packages/client/src/tiptap/editor/menus/italic/index.tsx index e223df58..b2eb9809 100644 --- a/packages/client/src/tiptap/editor/menus/italic/index.tsx +++ b/packages/client/src/tiptap/editor/menus/italic/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; import { IconItalic } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { Italic as ItalicExtension } from 'tiptap/core/extensions/italic'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Italic: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/link/bubble.tsx b/packages/client/src/tiptap/editor/menus/link/bubble.tsx index e0cf53af..146bf819 100644 --- a/packages/client/src/tiptap/editor/menus/link/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/link/bubble.tsx @@ -1,12 +1,13 @@ -import { useEffect, useState, useRef, useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; -import { IconExternalOpen, IconUnlink, IconEdit } from '@douyinfe/semi-icons'; +import { IconEdit, IconExternalOpen, IconUnlink } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { Divider } from 'tiptap/components/divider'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { Link } from 'tiptap/core/extensions/link'; -import { isMarkActive, findMarkPosition } from 'tiptap/prose-utils'; import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { findMarkPosition, isMarkActive } from 'tiptap/prose-utils'; + import { triggerOpenLinkSettingModal } from '../_event'; export const LinkBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/link/index.tsx b/packages/client/src/tiptap/editor/menus/link/index.tsx index c36b1ca5..3cd63a11 100644 --- a/packages/client/src/tiptap/editor/menus/link/index.tsx +++ b/packages/client/src/tiptap/editor/menus/link/index.tsx @@ -1,14 +1,15 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; import { Button } from '@douyinfe/semi-ui'; -import { Tooltip } from 'components/tooltip'; import { IconLink } from 'components/icons'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import { Tooltip } from 'components/tooltip'; +import React, { useCallback } from 'react'; import { Link as LinkExtension } from 'tiptap/core/extensions/link'; -import { createOrToggleLink } from './service'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; + import { LinkBubbleMenu } from './bubble'; import { LinkSettingModal } from './modal'; +import { createOrToggleLink } from './service'; export const Link: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/link/modal.tsx b/packages/client/src/tiptap/editor/menus/link/modal.tsx index b5e37357..39ac53e5 100644 --- a/packages/client/src/tiptap/editor/menus/link/modal.tsx +++ b/packages/client/src/tiptap/editor/menus/link/modal.tsx @@ -1,10 +1,11 @@ -import { useCallback, useEffect, useRef, useState } from 'react'; import { Form, Modal } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; -import { Editor } from 'tiptap/editor'; import { useToggle } from 'hooks/use-toggle'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import { Editor } from 'tiptap/editor'; import { isValidURL } from 'tiptap/prose-utils'; -import { OPEN_LINK_SETTING_MODAL, subject, cancelSubject } from '../_event'; + +import { cancelSubject, OPEN_LINK_SETTING_MODAL, subject } from '../_event'; type IProps = { editor: Editor }; diff --git a/packages/client/src/tiptap/editor/menus/link/service.ts b/packages/client/src/tiptap/editor/menus/link/service.ts index e201a03b..e5cbfee5 100644 --- a/packages/client/src/tiptap/editor/menus/link/service.ts +++ b/packages/client/src/tiptap/editor/menus/link/service.ts @@ -1,5 +1,6 @@ import { Editor } from 'tiptap/editor/react'; import { isMarkActive } from 'tiptap/prose-utils'; + import { triggerOpenLinkSettingModal } from '../_event'; /** diff --git a/packages/client/src/tiptap/editor/menus/mind/bubble.tsx b/packages/client/src/tiptap/editor/menus/mind/bubble.tsx index 48af8849..ea4bd92a 100644 --- a/packages/client/src/tiptap/editor/menus/mind/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/mind/bubble.tsx @@ -1,13 +1,13 @@ -import { useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; -import { IconCopy, IconLineHeight, IconDelete } from '@douyinfe/semi-icons'; +import { IconCopy, IconDelete, IconLineHeight } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; -import { Mind } from 'tiptap/core/extensions/mind'; +import { useCallback } from 'react'; import { Divider } from 'tiptap/components/divider'; -import { getEditorContainerDOMSize, copyNode, deleteNode } from 'tiptap/prose-utils'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; import { Size } from 'tiptap/components/size'; +import { Mind } from 'tiptap/core/extensions/mind'; +import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { copyNode, deleteNode, getEditorContainerDOMSize } from 'tiptap/prose-utils'; export const MindBubbleMenu = ({ editor }) => { const { width: maxWidth } = getEditorContainerDOMSize(editor); diff --git a/packages/client/src/tiptap/editor/menus/mind/index.tsx b/packages/client/src/tiptap/editor/menus/mind/index.tsx index 1de00106..6d69a6c5 100644 --- a/packages/client/src/tiptap/editor/menus/mind/index.tsx +++ b/packages/client/src/tiptap/editor/menus/mind/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { MindBubbleMenu } from './bubble'; export const Mind: React.FC<{ editor: Editor }> = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/ordered-list/index.tsx b/packages/client/src/tiptap/editor/menus/ordered-list/index.tsx index 473e64ef..6371034e 100644 --- a/packages/client/src/tiptap/editor/menus/ordered-list/index.tsx +++ b/packages/client/src/tiptap/editor/menus/ordered-list/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; import { Button } from '@douyinfe/semi-ui'; import { IconOrderedList } from 'components/icons'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { OrderedList as OrderedListExtension } from 'tiptap/core/extensions/ordered-list'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const OrderedList: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/quick-insert.tsx b/packages/client/src/tiptap/editor/menus/quick-insert.tsx index cd1ebde4..3d7d71f3 100644 --- a/packages/client/src/tiptap/editor/menus/quick-insert.tsx +++ b/packages/client/src/tiptap/editor/menus/quick-insert.tsx @@ -1,27 +1,28 @@ -import { Editor } from 'tiptap/editor'; -import { Space } from '@douyinfe/semi-ui'; import { IconList, IconOrderedList } from '@douyinfe/semi-icons'; +import { Space } from '@douyinfe/semi-ui'; import { + IconAttachment, + IconCallout, + IconCodeBlock, + IconCountdown, + IconDocument, + IconFlow, IconHeading1, IconHeading2, IconHeading3, - IconLink, - IconQuote, IconHorizontalRule, - IconTask, - IconDocument, - IconMind, - IconTable, IconImage, - IconCodeBlock, - IconStatus, - IconAttachment, + IconLink, IconMath, - IconCountdown, - IconCallout, + IconMind, + IconQuote, + IconStatus, + IconTable, IconTableOfContents, - IconFlow, + IconTask, } from 'components/icons'; +import { Editor } from 'tiptap/editor'; + import { createCountdown } from './countdown/service'; import { createOrToggleLink } from './link/service'; diff --git a/packages/client/src/tiptap/editor/menus/redo/index.tsx b/packages/client/src/tiptap/editor/menus/redo/index.tsx index 6f2a60d6..31b9578c 100644 --- a/packages/client/src/tiptap/editor/menus/redo/index.tsx +++ b/packages/client/src/tiptap/editor/menus/redo/index.tsx @@ -1,8 +1,8 @@ +import { IconRedo } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; +import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; -import { IconRedo } from '@douyinfe/semi-icons'; -import { Tooltip } from 'components/tooltip'; export const Redo: React.FC<{ editor: Editor }> = ({ editor }) => { const redo = useCallback(() => editor.chain().focus().redo().run(), [editor]); diff --git a/packages/client/src/tiptap/editor/menus/search/index.tsx b/packages/client/src/tiptap/editor/menus/search/index.tsx index d1788891..dd725cf8 100644 --- a/packages/client/src/tiptap/editor/menus/search/index.tsx +++ b/packages/client/src/tiptap/editor/menus/search/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback, useEffect, useState } from 'react'; -import { Popover, Button, Typography, Input, Space, SideSheet } from '@douyinfe/semi-ui'; -import { Editor } from 'tiptap/editor'; -import { useWindowSize } from 'hooks/use-window-size'; -import { useToggle } from 'hooks/use-toggle'; -import { Tooltip } from 'components/tooltip'; +import { Button, Input, Popover, SideSheet, Space, Typography } from '@douyinfe/semi-ui'; import { IconSearchReplace } from 'components/icons'; +import { Tooltip } from 'components/tooltip'; +import { useToggle } from 'hooks/use-toggle'; +import { useWindowSize } from 'hooks/use-window-size'; +import React, { useCallback, useEffect, useState } from 'react'; import { SearchNReplace } from 'tiptap/core/extensions/search'; +import { Editor } from 'tiptap/editor'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/editor/menus/strike/index.tsx b/packages/client/src/tiptap/editor/menus/strike/index.tsx index e4a9f49e..01ed7ce4 100644 --- a/packages/client/src/tiptap/editor/menus/strike/index.tsx +++ b/packages/client/src/tiptap/editor/menus/strike/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; import { IconStrikeThrough } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { Strike as StrikeExtension } from 'tiptap/core/extensions/strike'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Strike: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/subscript/index.tsx b/packages/client/src/tiptap/editor/menus/subscript/index.tsx index 01401e7b..d8c975eb 100644 --- a/packages/client/src/tiptap/editor/menus/subscript/index.tsx +++ b/packages/client/src/tiptap/editor/menus/subscript/index.tsx @@ -1,10 +1,10 @@ -import React, { useCallback } from 'react'; import { Button } from '@douyinfe/semi-ui'; import { IconSub } from 'components/icons'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { Subscript as SubscriptExtension } from 'tiptap/core/extensions/subscript'; +import { Title } from 'tiptap/core/extensions/title'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Subscript: React.FC<{ editor: any }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/superscript/index.tsx b/packages/client/src/tiptap/editor/menus/superscript/index.tsx index 89a149f1..35aa048d 100644 --- a/packages/client/src/tiptap/editor/menus/superscript/index.tsx +++ b/packages/client/src/tiptap/editor/menus/superscript/index.tsx @@ -1,10 +1,10 @@ -import React, { useCallback } from 'react'; import { Button } from '@douyinfe/semi-ui'; import { IconSup } from 'components/icons'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import React, { useCallback } from 'react'; import { Superscript as SuperscriptExtension } from 'tiptap/core/extensions/superscript'; +import { Title } from 'tiptap/core/extensions/title'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Superscript: React.FC<{ editor: any }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/table/bubble.tsx b/packages/client/src/tiptap/editor/menus/table/bubble.tsx index 63407fde..d1cdcdd6 100644 --- a/packages/client/src/tiptap/editor/menus/table/bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/table/bubble.tsx @@ -1,24 +1,24 @@ -import React, { useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; import { IconCopy } from '@douyinfe/semi-icons'; +import { Button, Space } from '@douyinfe/semi-ui'; import { - IconAddColumnBefore, IconAddColumnAfter, - IconDeleteColumn, - IconAddRowBefore, + IconAddColumnBefore, IconAddRowAfter, + IconAddRowBefore, + IconDeleteColumn, IconDeleteRow, + IconDeleteTable, IconMergeCell, IconSplitCell, - IconDeleteTable, - IconTableHeaderRow, - IconTableHeaderColumn, IconTableHeaderCell, + IconTableHeaderColumn, + IconTableHeaderRow, } from 'components/icons'; import { Tooltip } from 'components/tooltip'; +import React, { useCallback } from 'react'; import { Divider } from 'tiptap/components/divider'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { Table } from 'tiptap/core/extensions/table'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; export const TableBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/table/col-bubble.tsx b/packages/client/src/tiptap/editor/menus/table/col-bubble.tsx index 9fbe7b92..fafcbfa2 100644 --- a/packages/client/src/tiptap/editor/menus/table/col-bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/table/col-bubble.tsx @@ -1,9 +1,9 @@ -import React, { useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; -import { IconAddColumnBefore, IconAddColumnAfter, IconDeleteColumn } from 'components/icons'; +import { Button, Space } from '@douyinfe/semi-ui'; +import { IconAddColumnAfter, IconAddColumnBefore, IconDeleteColumn } from 'components/icons'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import React, { useCallback } from 'react'; import { Table } from 'tiptap/core/extensions/table'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { isTableSelected } from 'tiptap/prose-utils'; export const TableColBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/table/index.tsx b/packages/client/src/tiptap/editor/menus/table/index.tsx index e4fc42a3..4905e041 100644 --- a/packages/client/src/tiptap/editor/menus/table/index.tsx +++ b/packages/client/src/tiptap/editor/menus/table/index.tsx @@ -1,8 +1,9 @@ import React from 'react'; import { Editor } from 'tiptap/editor'; + import { TableBubbleMenu } from './bubble'; -import { TableRowBubbleMenu } from './row-bubble'; import { TableColBubbleMenu } from './col-bubble'; +import { TableRowBubbleMenu } from './row-bubble'; export const Table: React.FC<{ editor: Editor }> = ({ editor }) => { return ( diff --git a/packages/client/src/tiptap/editor/menus/table/row-bubble.tsx b/packages/client/src/tiptap/editor/menus/table/row-bubble.tsx index abb4aba9..f600268c 100644 --- a/packages/client/src/tiptap/editor/menus/table/row-bubble.tsx +++ b/packages/client/src/tiptap/editor/menus/table/row-bubble.tsx @@ -1,9 +1,9 @@ -import React, { useCallback } from 'react'; -import { Space, Button } from '@douyinfe/semi-ui'; -import { IconAddRowBefore, IconAddRowAfter, IconDeleteRow } from 'components/icons'; +import { Button, Space } from '@douyinfe/semi-ui'; +import { IconAddRowAfter, IconAddRowBefore, IconDeleteRow } from 'components/icons'; import { Tooltip } from 'components/tooltip'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import React, { useCallback } from 'react'; import { Table } from 'tiptap/core/extensions/table'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { isTableSelected } from 'tiptap/prose-utils'; export const TableRowBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/task-list/index.tsx b/packages/client/src/tiptap/editor/menus/task-list/index.tsx index cce3eaae..207af62c 100644 --- a/packages/client/src/tiptap/editor/menus/task-list/index.tsx +++ b/packages/client/src/tiptap/editor/menus/task-list/index.tsx @@ -1,11 +1,11 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; import { Button } from '@douyinfe/semi-ui'; -import { Tooltip } from 'components/tooltip'; import { IconTask } from 'components/icons'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; +import { Tooltip } from 'components/tooltip'; +import React, { useCallback } from 'react'; import { TaskList as TaskListExtension } from 'tiptap/core/extensions/task-list'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const TaskList: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/text-color/index.tsx b/packages/client/src/tiptap/editor/menus/text-color/index.tsx index e98fcc62..72161e16 100644 --- a/packages/client/src/tiptap/editor/menus/text-color/index.tsx +++ b/packages/client/src/tiptap/editor/menus/text-color/index.tsx @@ -1,13 +1,13 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; import { IconFont } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { Title } from 'tiptap/core/extensions/title'; -import { TextStyle } from 'tiptap/core/extensions/text-style'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import React, { useCallback } from 'react'; import { ColorPicker } from 'tiptap/components/color-picker'; +import { TextStyle } from 'tiptap/core/extensions/text-style'; +import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; type Color = { color: string }; diff --git a/packages/client/src/tiptap/editor/menus/text/index.tsx b/packages/client/src/tiptap/editor/menus/text/index.tsx index b3d57307..b8c3683c 100644 --- a/packages/client/src/tiptap/editor/menus/text/index.tsx +++ b/packages/client/src/tiptap/editor/menus/text/index.tsx @@ -1,32 +1,31 @@ -import React, { useCallback } from 'react'; import { Space } from '@douyinfe/semi-ui'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; - -import { Bold } from '../bold'; -import { Italic } from '../italic'; -import { Underline } from '../underline'; -import { Strike } from '../strike'; -import { Code } from '../code'; -import { Superscript } from '../superscript'; -import { Subscript } from '../subscript'; -import { TextColor } from '../text-color'; -import { BackgroundColor } from '../background-color'; - -import { Title } from 'tiptap/core/extensions/title'; -import { Link } from 'tiptap/core/extensions/link'; +import React, { useCallback } from 'react'; import { Attachment } from 'tiptap/core/extensions/attachment'; -import { Image } from 'tiptap/core/extensions/image'; import { Callout } from 'tiptap/core/extensions/callout'; import { CodeBlock } from 'tiptap/core/extensions/code-block'; -import { Iframe } from 'tiptap/core/extensions/iframe'; +import { DocumentChildren } from 'tiptap/core/extensions/document-children'; +import { DocumentReference } from 'tiptap/core/extensions/document-reference'; import { Flow } from 'tiptap/core/extensions/flow'; +import { HorizontalRule } from 'tiptap/core/extensions/horizontal-rule'; +import { Iframe } from 'tiptap/core/extensions/iframe'; +import { Image } from 'tiptap/core/extensions/image'; +import { Katex } from 'tiptap/core/extensions/katex'; +import { Link } from 'tiptap/core/extensions/link'; import { Mind } from 'tiptap/core/extensions/mind'; import { Table } from 'tiptap/core/extensions/table'; import { TableOfContents } from 'tiptap/core/extensions/table-of-contents'; -import { Katex } from 'tiptap/core/extensions/katex'; -import { DocumentReference } from 'tiptap/core/extensions/document-reference'; -import { DocumentChildren } from 'tiptap/core/extensions/document-children'; -import { HorizontalRule } from 'tiptap/core/extensions/horizontal-rule'; +import { Title } from 'tiptap/core/extensions/title'; +import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; + +import { BackgroundColor } from '../background-color'; +import { Bold } from '../bold'; +import { Code } from '../code'; +import { Italic } from '../italic'; +import { Strike } from '../strike'; +import { Subscript } from '../subscript'; +import { Superscript } from '../superscript'; +import { TextColor } from '../text-color'; +import { Underline } from '../underline'; const OTHER_BUBBLE_MENU_TYPES = [ Title.name, diff --git a/packages/client/src/tiptap/editor/menus/underline/index.tsx b/packages/client/src/tiptap/editor/menus/underline/index.tsx index 05baee29..e5b760d0 100644 --- a/packages/client/src/tiptap/editor/menus/underline/index.tsx +++ b/packages/client/src/tiptap/editor/menus/underline/index.tsx @@ -1,10 +1,10 @@ -import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; import { IconUnderline } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import React, { useCallback } from 'react'; import { Title } from 'tiptap/core/extensions/title'; +import { Editor } from 'tiptap/editor'; +import { useActive } from 'tiptap/editor/hooks/use-active'; export const Underline: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/undo/index.tsx b/packages/client/src/tiptap/editor/menus/undo/index.tsx index 3f2f9b2b..1dd39139 100644 --- a/packages/client/src/tiptap/editor/menus/undo/index.tsx +++ b/packages/client/src/tiptap/editor/menus/undo/index.tsx @@ -1,8 +1,8 @@ +import { IconUndo } from '@douyinfe/semi-icons'; +import { Button } from '@douyinfe/semi-ui'; +import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; import { Editor } from 'tiptap/editor'; -import { Button } from '@douyinfe/semi-ui'; -import { IconUndo } from '@douyinfe/semi-icons'; -import { Tooltip } from 'components/tooltip'; export const Undo: React.FC<{ editor: Editor }> = ({ editor }) => { const undo = useCallback(() => editor.chain().focus().undo().run(), [editor]); diff --git a/packages/client/src/tiptap/editor/react/index.tsx b/packages/client/src/tiptap/editor/react/index.tsx index e2a551b0..c04c4e67 100644 --- a/packages/client/src/tiptap/editor/react/index.tsx +++ b/packages/client/src/tiptap/editor/react/index.tsx @@ -1,4 +1,5 @@ -import { EditorContent, NodeViewWrapper, NodeViewContent } from '@tiptap/react'; -import { useEditor, Editor } from './useEditor'; +import { EditorContent, NodeViewContent, NodeViewWrapper } from '@tiptap/react'; -export { Editor, EditorContent, NodeViewWrapper, NodeViewContent, useEditor }; +import { Editor, useEditor } from './useEditor'; + +export { Editor, EditorContent, NodeViewContent, NodeViewWrapper, useEditor }; diff --git a/packages/client/src/tiptap/editor/react/useEditor.tsx b/packages/client/src/tiptap/editor/react/useEditor.tsx index a3f26625..cc844dc7 100644 --- a/packages/client/src/tiptap/editor/react/useEditor.tsx +++ b/packages/client/src/tiptap/editor/react/useEditor.tsx @@ -1,7 +1,7 @@ -import { useState, useEffect, DependencyList } from 'react'; import { EditorOptions } from '@tiptap/core'; import { Editor as BuiltInEditor } from '@tiptap/react'; import { EventEmitter } from 'helpers/event-emitter'; +import { DependencyList, useEffect, useState } from 'react'; function useForceUpdate() { const [, setValue] = useState(0); diff --git a/packages/client/src/tiptap/editor/views/bubble-menu/bubble-menu-plugin.tsx b/packages/client/src/tiptap/editor/views/bubble-menu/bubble-menu-plugin.tsx index 7d045a8d..eb3d9b34 100644 --- a/packages/client/src/tiptap/editor/views/bubble-menu/bubble-menu-plugin.tsx +++ b/packages/client/src/tiptap/editor/views/bubble-menu/bubble-menu-plugin.tsx @@ -1,4 +1,4 @@ -import { Editor, posToDOMRect, isTextSelection, isNodeSelection } from '@tiptap/core'; +import { Editor, isNodeSelection, isTextSelection, posToDOMRect } from '@tiptap/core'; import { EditorState, Plugin, PluginKey } from 'prosemirror-state'; import { EditorView } from 'prosemirror-view'; import tippy, { Instance, Props } from 'tippy.js'; diff --git a/packages/client/src/tiptap/editor/views/bubble-menu/index.tsx b/packages/client/src/tiptap/editor/views/bubble-menu/index.tsx index a43e9d80..d03c7a44 100644 --- a/packages/client/src/tiptap/editor/views/bubble-menu/index.tsx +++ b/packages/client/src/tiptap/editor/views/bubble-menu/index.tsx @@ -1,4 +1,5 @@ import React, { useEffect, useRef } from 'react'; + import { BubbleMenuPlugin, BubbleMenuPluginProps } from './bubble-menu-plugin'; type Optional = Pick, K> & Omit; diff --git a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/all-kit.tsx b/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/all-kit.tsx index 096bd3c8..874b9bca 100644 --- a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/all-kit.tsx +++ b/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/all-kit.tsx @@ -1,14 +1,21 @@ // 基础扩展 -import { Document } from 'tiptap/core/extensions/document'; +// 自定义节点扩展 +import { Attachment } from 'tiptap/core/extensions/attachment'; import { BackgroundColor } from 'tiptap/core/extensions/background-color'; import { Blockquote } from 'tiptap/core/extensions/blockquote'; import { Bold } from 'tiptap/core/extensions/bold'; import { BulletList } from 'tiptap/core/extensions/bullet-list'; +import { Callout } from 'tiptap/core/extensions/callout'; import { Code } from 'tiptap/core/extensions/code'; import { CodeBlock } from 'tiptap/core/extensions/code-block'; import { Color } from 'tiptap/core/extensions/color'; import { ColorHighlighter } from 'tiptap/core/extensions/color-highlighter'; +import { Countdown } from 'tiptap/core/extensions/countdown'; +import { Document } from 'tiptap/core/extensions/document'; +import { DocumentChildren } from 'tiptap/core/extensions/document-children'; +import { DocumentReference } from 'tiptap/core/extensions/document-reference'; import { Dropcursor } from 'tiptap/core/extensions/dropcursor'; +import { Emoji } from 'tiptap/core/extensions/emoji'; import { Focus } from 'tiptap/core/extensions/focus'; import { FontSize } from 'tiptap/core/extensions/font-size'; import { Gapcursor } from 'tiptap/core/extensions/gapcursor'; @@ -16,16 +23,24 @@ import { HardBreak } from 'tiptap/core/extensions/hard-break'; import { Heading } from 'tiptap/core/extensions/heading'; import { HorizontalRule } from 'tiptap/core/extensions/horizontal-rule'; import { HTMLMarks } from 'tiptap/core/extensions/html-marks'; +import { Iframe } from 'tiptap/core/extensions/iframe'; import { Image } from 'tiptap/core/extensions/image'; import { Indent } from 'tiptap/core/extensions/indent'; import { Italic } from 'tiptap/core/extensions/italic'; +import { Katex } from 'tiptap/core/extensions/katex'; import { Link } from 'tiptap/core/extensions/link'; import { ListItem } from 'tiptap/core/extensions/listItem'; import { Loading } from 'tiptap/core/extensions/loading'; +import { Mention } from 'tiptap/core/extensions/mention'; +import { Mind } from 'tiptap/core/extensions/mind'; import { OrderedList } from 'tiptap/core/extensions/ordered-list'; import { Paragraph } from 'tiptap/core/extensions/paragraph'; +import { Paste } from 'tiptap/core/extensions/paste'; import { Placeholder } from 'tiptap/core/extensions/placeholder'; +import { QuickInsert } from 'tiptap/core/extensions/quick-insert'; +import { SearchNReplace } from 'tiptap/core/extensions/search'; import { SelectionExtension } from 'tiptap/core/extensions/selection'; +import { Status } from 'tiptap/core/extensions/status'; import { Strike } from 'tiptap/core/extensions/strike'; import { Subscript } from 'tiptap/core/extensions/subscript'; import { Superscript } from 'tiptap/core/extensions/superscript'; @@ -33,29 +48,14 @@ import { Table } from 'tiptap/core/extensions/table'; import { TableCell } from 'tiptap/core/extensions/table-cell'; import { TableHeader } from 'tiptap/core/extensions/table-header'; import { TableRow } from 'tiptap/core/extensions/table-row'; +import { TaskItem } from 'tiptap/core/extensions/task-item'; +import { TaskList } from 'tiptap/core/extensions/task-list'; import { Text } from 'tiptap/core/extensions/text'; import { TextAlign } from 'tiptap/core/extensions/text-align'; import { TextStyle } from 'tiptap/core/extensions/text-style'; -import { TaskItem } from 'tiptap/core/extensions/task-item'; -import { TaskList } from 'tiptap/core/extensions/task-list'; import { Title } from 'tiptap/core/extensions/title'; import { TrailingNode } from 'tiptap/core/extensions/trailing-node'; import { Underline } from 'tiptap/core/extensions/underline'; -import { Paste } from 'tiptap/core/extensions/paste'; -// 自定义节点扩展 -import { Attachment } from 'tiptap/core/extensions/attachment'; -import { Callout } from 'tiptap/core/extensions/callout'; -import { Countdown } from 'tiptap/core/extensions/countdown'; -import { DocumentChildren } from 'tiptap/core/extensions/document-children'; -import { DocumentReference } from 'tiptap/core/extensions/document-reference'; -import { Emoji } from 'tiptap/core/extensions/emoji'; -import { Iframe } from 'tiptap/core/extensions/iframe'; -import { Katex } from 'tiptap/core/extensions/katex'; -import { Mention } from 'tiptap/core/extensions/mention'; -import { Mind } from 'tiptap/core/extensions/mind'; -import { QuickInsert } from 'tiptap/core/extensions/quick-insert'; -import { SearchNReplace } from 'tiptap/core/extensions/search'; -import { Status } from 'tiptap/core/extensions/status'; export const DocumentWithTitle = Document.extend({ content: 'title block+', diff --git a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/renderer.ts b/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/renderer.ts index 1f603ba8..1af16c77 100644 --- a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/renderer.ts +++ b/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/renderer.ts @@ -1,38 +1,4 @@ // 自定义节点 -import { Iframe } from './nodes/iframe'; -import { Attachment } from './nodes/attachment'; -import { Callout } from './nodes/callout'; -import { Status } from './nodes/status'; -import { DocumentReference } from './nodes/document-reference'; -import { DocumentChildren } from './nodes/document-children'; -import { Mention } from './nodes/mention'; -import { Mind } from './nodes/mind'; -// 通用 -import { CodeBlock } from './nodes/code-block'; -import { CodeBlockWrapper } from './nodes/code-block-wrapper'; -import { HardBreak } from './nodes/hard-break'; -import { Heading } from './nodes/heading'; -import { Image } from './nodes/image'; -import { HorizontalRule } from './nodes/horizontal-rule'; -import { Blockquote } from './nodes/blockquote'; -import { Countdown } from './nodes/countdown'; -// 文本 -import { Title } from './nodes/title'; -import { Katex } from './nodes/katex'; -import { Paragraph } from './nodes/paragraph'; -import { Text } from './nodes/text'; -// 表格 -import { Table } from './nodes/table'; -import { TableHeader } from './nodes/table-header'; -import { TableRow } from './nodes/table-row'; -import { TableCell } from './nodes/table-cell'; -// 列表 -import { TaskList } from './nodes/task-list'; -import { TaskListItem } from './nodes/task-list-item'; -import { ListItem } from './nodes/list-item'; -import { OrderedList } from './nodes/ordered-list'; -import { BulletList } from './nodes/bullet-list'; - // marks import { Bold } from './marks/bold'; import { Code } from './marks/code'; @@ -41,6 +7,39 @@ import { Link } from './marks/link'; import { Subscript } from './marks/subscript'; import { Superscript } from './marks/superscript'; import { Underline } from './marks/underline'; +import { Attachment } from './nodes/attachment'; +import { Blockquote } from './nodes/blockquote'; +import { BulletList } from './nodes/bullet-list'; +import { Callout } from './nodes/callout'; +// 通用 +import { CodeBlock } from './nodes/code-block'; +import { CodeBlockWrapper } from './nodes/code-block-wrapper'; +import { Countdown } from './nodes/countdown'; +import { DocumentChildren } from './nodes/document-children'; +import { DocumentReference } from './nodes/document-reference'; +import { HardBreak } from './nodes/hard-break'; +import { Heading } from './nodes/heading'; +import { HorizontalRule } from './nodes/horizontal-rule'; +import { Iframe } from './nodes/iframe'; +import { Image } from './nodes/image'; +import { Katex } from './nodes/katex'; +import { ListItem } from './nodes/list-item'; +import { Mention } from './nodes/mention'; +import { Mind } from './nodes/mind'; +import { OrderedList } from './nodes/ordered-list'; +import { Paragraph } from './nodes/paragraph'; +import { Status } from './nodes/status'; +// 表格 +import { Table } from './nodes/table'; +import { TableCell } from './nodes/table-cell'; +import { TableHeader } from './nodes/table-header'; +import { TableRow } from './nodes/table-row'; +// 列表 +import { TaskList } from './nodes/task-list'; +import { TaskListItem } from './nodes/task-list-item'; +import { Text } from './nodes/text'; +// 文本 +import { Title } from './nodes/title'; export class Renderer { document: HTMLElement; diff --git a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/markdown-to-html/index.ts b/packages/client/src/tiptap/markdown/markdown-to-prosemirror/markdown-to-html/index.ts index 13c946dd..5f660776 100644 --- a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/markdown-to-html/index.ts +++ b/packages/client/src/tiptap/markdown/markdown-to-prosemirror/markdown-to-html/index.ts @@ -1,16 +1,17 @@ import { sanitize } from 'dompurify'; import markdownit from 'markdown-it'; -import sub from 'markdown-it-sub'; -import sup from 'markdown-it-sup'; import anchor from 'markdown-it-anchor'; import emoji from 'markdown-it-emoji'; -import katex from './markdownKatex'; -import tasklist from './markdownTaskList'; -import splitMixedLists from './markedownSplitMixedList'; -import markdownUnderline from './markdownUnderline'; +import sub from 'markdown-it-sub'; +import sup from 'markdown-it-sup'; + import markdownCallout from './markdownCallout'; -import { markdownItTable } from './markdownTable'; import { createMarkdownContainer } from './markdownItContainer'; +import katex from './markdownKatex'; +import { markdownItTable } from './markdownTable'; +import tasklist from './markdownTaskList'; +import markdownUnderline from './markdownUnderline'; +import splitMixedLists from './markedownSplitMixedList'; const markdownAttachment = createMarkdownContainer('attachment'); const markdownStatus = createMarkdownContainer('status'); diff --git a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/markdown-to-html/markdownItContainer.ts b/packages/client/src/tiptap/markdown/markdown-to-prosemirror/markdown-to-html/markdownItContainer.ts index 501f1fa2..ea5f1f50 100644 --- a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/markdown-to-html/markdownItContainer.ts +++ b/packages/client/src/tiptap/markdown/markdown-to-prosemirror/markdown-to-html/markdownItContainer.ts @@ -1,5 +1,5 @@ import container from 'markdown-it-container'; -import { strToJSON, jsonToDOMDataset } from 'tiptap/prose-utils'; +import { jsonToDOMDataset, strToJSON } from 'tiptap/prose-utils'; export const createMarkdownContainer = (types: string | Array) => (md) => { if (!Array.isArray(types)) { diff --git a/packages/client/src/tiptap/markdown/prosemirror-to-markdown/index.ts b/packages/client/src/tiptap/markdown/prosemirror-to-markdown/index.ts index afdfb72b..2bf73a1c 100644 --- a/packages/client/src/tiptap/markdown/prosemirror-to-markdown/index.ts +++ b/packages/client/src/tiptap/markdown/prosemirror-to-markdown/index.ts @@ -1,4 +1,4 @@ -import { MarkdownSerializer as ProseMirrorMarkdownSerializer, defaultMarkdownSerializer } from 'prosemirror-markdown'; +import { defaultMarkdownSerializer, MarkdownSerializer as ProseMirrorMarkdownSerializer } from 'prosemirror-markdown'; import { Attachment } from 'tiptap/core/extensions/attachment'; import { Blockquote } from 'tiptap/core/extensions/blockquote'; import { Bold } from 'tiptap/core/extensions/bold'; @@ -13,13 +13,13 @@ import { HardBreak } from 'tiptap/core/extensions/hard-break'; import { Heading } from 'tiptap/core/extensions/heading'; import { HorizontalRule } from 'tiptap/core/extensions/horizontal-rule'; import { marks } from 'tiptap/core/extensions/html-marks'; -import { Mention } from 'tiptap/core/extensions/mention'; import { Iframe } from 'tiptap/core/extensions/iframe'; import { Image } from 'tiptap/core/extensions/image'; import { Italic } from 'tiptap/core/extensions/italic'; import { Katex } from 'tiptap/core/extensions/katex'; import { Link } from 'tiptap/core/extensions/link'; import { ListItem } from 'tiptap/core/extensions/listItem'; +import { Mention } from 'tiptap/core/extensions/mention'; import { Mind } from 'tiptap/core/extensions/mind'; import { OrderedList } from 'tiptap/core/extensions/ordered-list'; import { Paragraph } from 'tiptap/core/extensions/paragraph'; @@ -31,23 +31,24 @@ import { Table } from 'tiptap/core/extensions/table'; import { TableCell } from 'tiptap/core/extensions/table-cell'; import { TableHeader } from 'tiptap/core/extensions/table-header'; import { TableRow } from 'tiptap/core/extensions/table-row'; -import { Text } from 'tiptap/core/extensions/text'; import { TaskItem } from 'tiptap/core/extensions/task-item'; import { TaskList } from 'tiptap/core/extensions/task-list'; +import { Text } from 'tiptap/core/extensions/text'; import { TextStyle } from 'tiptap/core/extensions/text-style'; import { Title } from 'tiptap/core/extensions/title'; + import { + closeTag, isPlainURL, + openTag, + renderCustomContainer, renderHardBreak, + renderHTMLNode, + renderImage, + renderOrderedList, renderTable, renderTableCell, renderTableRow, - openTag, - closeTag, - renderOrderedList, - renderImage, - renderCustomContainer, - renderHTMLNode, } from './helpers'; const SerializerConfig = { diff --git a/packages/client/src/tiptap/prose-utils/code.ts b/packages/client/src/tiptap/prose-utils/code.ts index d19897c0..6953c16d 100644 --- a/packages/client/src/tiptap/prose-utils/code.ts +++ b/packages/client/src/tiptap/prose-utils/code.ts @@ -1,6 +1,7 @@ -import { EditorState } from 'prosemirror-state'; // @ts-ignore import { lowlight } from 'lowlight'; +import { EditorState } from 'prosemirror-state'; + import { isMarkActive } from './active'; export const LANGUAGES = lowlight.listLanguages().reduce((a, language) => { diff --git a/packages/client/src/tiptap/prose-utils/color.ts b/packages/client/src/tiptap/prose-utils/color.ts index fd5648b6..d6a45a84 100644 --- a/packages/client/src/tiptap/prose-utils/color.ts +++ b/packages/client/src/tiptap/prose-utils/color.ts @@ -1,5 +1,5 @@ -import { Decoration, DecorationSet } from 'prosemirror-view'; import { Node } from 'prosemirror-model'; +import { Decoration, DecorationSet } from 'prosemirror-view'; export function findColors(doc: Node): DecorationSet { const hexColor = /(#[0-9a-f]{3,6})\b/gi; diff --git a/packages/client/src/tiptap/prose-utils/copy-node.ts b/packages/client/src/tiptap/prose-utils/copy-node.ts index 20286dd3..44762618 100644 --- a/packages/client/src/tiptap/prose-utils/copy-node.ts +++ b/packages/client/src/tiptap/prose-utils/copy-node.ts @@ -1,7 +1,7 @@ import { Editor } from '@tiptap/core'; -import { Node, Fragment } from 'prosemirror-model'; import { copy } from 'helpers/copy'; import { safeJSONStringify } from 'helpers/json'; +import { Fragment, Node } from 'prosemirror-model'; export function copyNode(nodeOrNodeName: Node); export function copyNode(nodeOrNodeName: string, editor: Editor); diff --git a/packages/client/src/tiptap/prose-utils/index.ts b/packages/client/src/tiptap/prose-utils/index.ts index 90b132e0..16f5d9e9 100644 --- a/packages/client/src/tiptap/prose-utils/index.ts +++ b/packages/client/src/tiptap/prose-utils/index.ts @@ -4,15 +4,15 @@ export * from './code'; export * from './color'; export * from './copy-node'; export * from './delete-node'; -export * from './dom-dataset'; export * from './dom'; +export * from './dom-dataset'; export * from './download'; export * from './editor-container-size'; export * from './file'; export * from './lowlight-plugin'; export * from './mark'; -export * from './markdown-source-map'; export * from './markdown'; +export * from './markdown-source-map'; export * from './mention'; export * from './node'; export * from './position'; diff --git a/packages/client/src/tiptap/prose-utils/lowlight-plugin.ts b/packages/client/src/tiptap/prose-utils/lowlight-plugin.ts index 2c384e32..dcca1822 100644 --- a/packages/client/src/tiptap/prose-utils/lowlight-plugin.ts +++ b/packages/client/src/tiptap/prose-utils/lowlight-plugin.ts @@ -1,7 +1,7 @@ +import { findChildren } from '@tiptap/core'; +import { Node as ProsemirrorNode } from 'prosemirror-model'; import { Plugin, PluginKey } from 'prosemirror-state'; import { Decoration, DecorationSet } from 'prosemirror-view'; -import { Node as ProsemirrorNode } from 'prosemirror-model'; -import { findChildren } from '@tiptap/core'; function parseNodes(nodes: any[], className: string[] = []): { text: string; classes: string[] }[] { return nodes diff --git a/packages/client/src/tiptap/prose-utils/table.ts b/packages/client/src/tiptap/prose-utils/table.ts index eecbbd72..bc95df50 100644 --- a/packages/client/src/tiptap/prose-utils/table.ts +++ b/packages/client/src/tiptap/prose-utils/table.ts @@ -1,7 +1,7 @@ import { findParentNode } from '@tiptap/core'; +import { Node, ResolvedPos } from 'prosemirror-model'; import { Selection, Transaction } from 'prosemirror-state'; import { CellSelection, TableMap } from 'prosemirror-tables'; -import { Node, ResolvedPos } from 'prosemirror-model'; export const isRectSelected = (rect: any) => (selection: CellSelection) => { const map = TableMap.get(selection.$anchorCell.node(-1)); diff --git a/packages/client/src/tiptap/prose-utils/upload.ts b/packages/client/src/tiptap/prose-utils/upload.ts index c17ccb0b..44c3e4e9 100644 --- a/packages/client/src/tiptap/prose-utils/upload.ts +++ b/packages/client/src/tiptap/prose-utils/upload.ts @@ -1,8 +1,9 @@ import { Editor } from '@tiptap/core'; import { uploadFile } from 'services/file'; -import { Loading } from 'tiptap/core/extensions/loading'; import { Attachment } from 'tiptap/core/extensions/attachment'; import { Image } from 'tiptap/core/extensions/image'; +import { Loading } from 'tiptap/core/extensions/loading'; + import { extractFileExtension, extractFilename } from './file'; export const acceptedMimes = { diff --git a/packages/server/.eslintignore b/packages/server/.eslintignore new file mode 100644 index 00000000..4bc713a2 --- /dev/null +++ b/packages/server/.eslintignore @@ -0,0 +1,5 @@ +node_modules +**/.next/** +**/_next/** +**/dist/** +.eslintrc.js diff --git a/packages/server/.eslintrc.js b/packages/server/.eslintrc.js new file mode 100644 index 00000000..47f71ffc --- /dev/null +++ b/packages/server/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + parser: '@typescript-eslint/parser', + parserOptions: { + project: './packages/server/tsconfig.json', + sourceType: 'module', + }, + plugins: ['@typescript-eslint', 'simple-import-sort', 'prettier'], + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'], + root: true, + env: { + node: true, + jest: true, + }, + settings: { + 'import/resolver': { + node: { + paths: ['src'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + }, + }, + rules: { + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', + }, +}; diff --git a/packages/server/package.json b/packages/server/package.json index 71ed412a..e0311eaf 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -61,6 +61,13 @@ "@types/jest": "27.0.2", "@types/node": "^16.0.0", "@types/supertest": "^2.0.11", + "@typescript-eslint/eslint-plugin": "^5.21.0", + "@typescript-eslint/parser": "^5.21.0", + "eslint": "^8.14.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-simple-import-sort": "^7.0.0", "jest": "^27.2.5", "prettier": "^2.3.2", "source-map-support": "^0.5.20", diff --git a/packages/server/src/app.module.ts b/packages/server/src/app.module.ts index 61c1a1e0..443f28bc 100644 --- a/packages/server/src/app.module.ts +++ b/packages/server/src/app.module.ts @@ -1,35 +1,26 @@ -import { Module } from '@nestjs/common'; -import { ConfigModule, ConfigService } from '@nestjs/config'; -import { getConfig } from '@think/config'; -import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm'; - +import { CollectorEntity } from '@entities/collector.entity'; +import { CommentEntity } from '@entities/comment.entity'; +import { DocumentEntity } from '@entities/document.entity'; +import { DocumentAuthorityEntity } from '@entities/document-authority.entity'; +import { MessageEntity } from '@entities/message.entity'; +import { TemplateEntity } from '@entities/template.entity'; import { UserEntity } from '@entities/user.entity'; -import { UserModule } from '@modules/user.module'; - +import { ViewEntity } from '@entities/view.entity'; import { WikiEntity } from '@entities/wiki.entity'; import { WikiUserEntity } from '@entities/wiki-user.entity'; -import { WikiModule } from '@modules/wiki.module'; - -import { DocumentAuthorityEntity } from '@entities/document-authority.entity'; -import { DocumentEntity } from '@entities/document.entity'; -import { DocumentModule } from '@modules/document.module'; - -import { CollectorEntity } from '@entities/collector.entity'; import { CollectorModule } from '@modules/collector.module'; - -import { CommentEntity } from '@entities/comment.entity'; import { CommentModule } from '@modules/comment.module'; - -import { MessageEntity } from '@entities/message.entity'; -import { MessageModule } from '@modules/message.module'; - -import { TemplateEntity } from '@entities/template.entity'; -import { TemplateModule } from '@modules/template.module'; - -import { ViewEntity } from '@entities/view.entity'; -import { ViewModule } from '@modules/view.module'; - +import { DocumentModule } from '@modules/document.module'; import { FileModule } from '@modules/file.module'; +import { MessageModule } from '@modules/message.module'; +import { TemplateModule } from '@modules/template.module'; +import { UserModule } from '@modules/user.module'; +import { ViewModule } from '@modules/view.module'; +import { WikiModule } from '@modules/wiki.module'; +import { Module } from '@nestjs/common'; +import { ConfigModule, ConfigService } from '@nestjs/config'; +import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm'; +import { getConfig } from '@think/config'; const ENTITIES = [ UserEntity, diff --git a/packages/server/src/controllers/collector.controller.ts b/packages/server/src/controllers/collector.controller.ts index 5888cf10..c0bff6c5 100644 --- a/packages/server/src/controllers/collector.controller.ts +++ b/packages/server/src/controllers/collector.controller.ts @@ -1,17 +1,17 @@ +import { CollectDto } from '@dtos/collect.dto'; +import { JwtGuard } from '@guard/jwt.guard'; import { - Controller, - HttpStatus, - HttpCode, - Post, Body, + ClassSerializerInterceptor, + Controller, + HttpCode, + HttpStatus, + Post, Request, UseGuards, UseInterceptors, - ClassSerializerInterceptor, } from '@nestjs/common'; -import { JwtGuard } from '@guard/jwt.guard'; import { CollectorService } from '@services/collector.service'; -import { CollectDto } from '@dtos/collect.dto'; @Controller('collector') export class CollectorController { diff --git a/packages/server/src/controllers/comment.controller.ts b/packages/server/src/controllers/comment.controller.ts index b3effaaf..3378716d 100644 --- a/packages/server/src/controllers/comment.controller.ts +++ b/packages/server/src/controllers/comment.controller.ts @@ -1,21 +1,20 @@ +import { CommentDto, UpdateCommentDto } from '@dtos/comment.dto'; +import { JwtGuard } from '@guard/jwt.guard'; import { + Body, + ClassSerializerInterceptor, Controller, Get, - HttpStatus, HttpCode, + HttpStatus, + Param, Post, - Delete, Query, - Body, Request, UseGuards, UseInterceptors, - ClassSerializerInterceptor, - Param, } from '@nestjs/common'; -import { JwtGuard } from '@guard/jwt.guard'; import { CommentService } from '@services/comment.service'; -import { CommentDto, UpdateCommentDto } from '@dtos/comment.dto'; @Controller('comment') export class CommentController { diff --git a/packages/server/src/controllers/document.controller.ts b/packages/server/src/controllers/document.controller.ts index 338e9bf5..cd1a6599 100644 --- a/packages/server/src/controllers/document.controller.ts +++ b/packages/server/src/controllers/document.controller.ts @@ -1,27 +1,27 @@ +import { CreateDocumentDto } from '@dtos/create-document.dto'; +import { DocAuthDto } from '@dtos/doc-auth.dto'; +import { ShareDocumentDto } from '@dtos/share-document.dto'; +import { UpdateDocumentDto } from '@dtos/update-document.dto'; +import { CheckDocumentAuthority, DocumentAuthorityGuard } from '@guard/document-auth.guard'; +import { CheckDocumentStatus, DocumentStatusGuard } from '@guard/document-status.guard'; +import { JwtGuard } from '@guard/jwt.guard'; import { - Controller, - Get, - HttpStatus, - HttpCode, - Post, Body, + ClassSerializerInterceptor, + Controller, + Delete, + Get, + HttpCode, + HttpStatus, Param, + Post, Query, Request, UseGuards, UseInterceptors, - ClassSerializerInterceptor, - Delete, } from '@nestjs/common'; -import { JwtGuard } from '@guard/jwt.guard'; -import { DocumentAuthorityGuard, CheckDocumentAuthority } from '@guard/document-auth.guard'; -import { DocumentStatusGuard, CheckDocumentStatus } from '@guard/document-status.guard'; -import { DocumentStatus } from '@think/domains'; import { DocumentService } from '@services/document.service'; -import { DocAuthDto } from '@dtos/doc-auth.dto'; -import { CreateDocumentDto } from '@dtos/create-document.dto'; -import { UpdateDocumentDto } from '@dtos/update-document.dto'; -import { ShareDocumentDto } from '@dtos/share-document.dto'; +import { DocumentStatus } from '@think/domains'; @Controller('document') @UseGuards(DocumentAuthorityGuard) diff --git a/packages/server/src/controllers/file.controller.ts b/packages/server/src/controllers/file.controller.ts index 4511af61..347d77f3 100644 --- a/packages/server/src/controllers/file.controller.ts +++ b/packages/server/src/controllers/file.controller.ts @@ -1,5 +1,5 @@ -import { Controller, Post, UseInterceptors, UploadedFile, UseGuards } from '@nestjs/common'; import { JwtGuard } from '@guard/jwt.guard'; +import { Controller, Post, UploadedFile, UseGuards, UseInterceptors } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; import { FileService } from '@services/file.service'; diff --git a/packages/server/src/controllers/message.controller.ts b/packages/server/src/controllers/message.controller.ts index b03689a4..adf38aee 100644 --- a/packages/server/src/controllers/message.controller.ts +++ b/packages/server/src/controllers/message.controller.ts @@ -1,17 +1,17 @@ +import { JwtGuard } from '@guard/jwt.guard'; import { + ClassSerializerInterceptor, Controller, Get, - Post, - HttpStatus, HttpCode, - Query, + HttpStatus, Param, + Post, + Query, Request, UseGuards, UseInterceptors, - ClassSerializerInterceptor, } from '@nestjs/common'; -import { JwtGuard } from '@guard/jwt.guard'; import { MessageService } from '@services/message.service'; @Controller('message') diff --git a/packages/server/src/controllers/template.controller.ts b/packages/server/src/controllers/template.controller.ts index f404e00c..34cd5e30 100644 --- a/packages/server/src/controllers/template.controller.ts +++ b/packages/server/src/controllers/template.controller.ts @@ -1,20 +1,20 @@ +import { TemplateDto } from '@dtos/template.dto'; +import { JwtGuard } from '@guard/jwt.guard'; import { + Body, + ClassSerializerInterceptor, Controller, Get, - HttpStatus, HttpCode, + HttpStatus, + Param, Post, Query, - Body, Request, UseGuards, UseInterceptors, - ClassSerializerInterceptor, - Param, } from '@nestjs/common'; -import { JwtGuard } from '@guard/jwt.guard'; import { TemplateService } from '@services/template.service'; -import { TemplateDto } from '@dtos/template.dto'; @Controller('template') export class TemplateController { diff --git a/packages/server/src/controllers/user.controller.ts b/packages/server/src/controllers/user.controller.ts index c62ebbc2..c39b1f5e 100644 --- a/packages/server/src/controllers/user.controller.ts +++ b/packages/server/src/controllers/user.controller.ts @@ -1,21 +1,21 @@ -import { - Controller, - HttpStatus, - HttpCode, - Post, - Body, - Request, - UseGuards, - UseInterceptors, - Get, - Patch, - ClassSerializerInterceptor, -} from '@nestjs/common'; -import { JwtGuard } from '@guard/jwt.guard'; -import { UserService } from '@services/user.service'; import { CreateUserDto } from '@dtos/create-user.dto'; import { LoginUserDto } from '@dtos/login-user.dto'; import { UpdateUserDto } from '@dtos/update-user.dto'; +import { JwtGuard } from '@guard/jwt.guard'; +import { + Body, + ClassSerializerInterceptor, + Controller, + Get, + HttpCode, + HttpStatus, + Patch, + Post, + Request, + UseGuards, + UseInterceptors, +} from '@nestjs/common'; +import { UserService } from '@services/user.service'; @Controller('user') export class UserController { diff --git a/packages/server/src/controllers/wiki.controller.ts b/packages/server/src/controllers/wiki.controller.ts index f67d1a03..8955fa9f 100644 --- a/packages/server/src/controllers/wiki.controller.ts +++ b/packages/server/src/controllers/wiki.controller.ts @@ -1,28 +1,28 @@ +import { CreateWikiDto } from '@dtos/create-wiki.dto'; +import { ShareWikiDto } from '@dtos/share-wiki.dto'; +import { UpdateWikiDto } from '@dtos/update-wiki.dto'; +import { WikiUserDto } from '@dtos/wiki-user.dto'; +import { JwtGuard } from '@guard/jwt.guard'; +import { CheckWikiStatus, WikiStatusGuard } from '@guard/wiki-status.guard'; +import { CheckWikiUserRole, WikiUserRoleGuard } from '@guard/wiki-user.guard'; import { - Controller, - Get, - HttpStatus, - HttpCode, - Post, - Param, - Query, Body, + ClassSerializerInterceptor, + Controller, + Delete, + Get, + HttpCode, + HttpStatus, + Param, + Patch, + Post, + Query, Request, UseGuards, UseInterceptors, - ClassSerializerInterceptor, - Patch, - Delete, } from '@nestjs/common'; -import { JwtGuard } from '@guard/jwt.guard'; -import { IPagination, WikiUserRole, WikiStatus } from '@think/domains'; -import { WikiUserRoleGuard, CheckWikiUserRole } from '@guard/wiki-user.guard'; -import { WikiStatusGuard, CheckWikiStatus } from '@guard/wiki-status.guard'; import { WikiService } from '@services/wiki.service'; -import { WikiUserDto } from '@dtos/wiki-user.dto'; -import { CreateWikiDto } from '@dtos/create-wiki.dto'; -import { UpdateWikiDto } from '@dtos/update-wiki.dto'; -import { ShareWikiDto } from '@dtos/share-wiki.dto'; +import { IPagination, WikiStatus, WikiUserRole } from '@think/domains'; @Controller('wiki') export class WikiController { diff --git a/packages/server/src/dtos/collect.dto.ts b/packages/server/src/dtos/collect.dto.ts index c2371564..8023944f 100644 --- a/packages/server/src/dtos/collect.dto.ts +++ b/packages/server/src/dtos/collect.dto.ts @@ -1,5 +1,5 @@ -import { IsNotEmpty, IsString } from 'class-validator'; import { CollectType } from '@think/domains'; +import { IsNotEmpty, IsString } from 'class-validator'; export class CollectDto { @IsString({ message: '收藏目标Id类型错误(正确类型为:String)' }) diff --git a/packages/server/src/dtos/create-document.dto.ts b/packages/server/src/dtos/create-document.dto.ts index 58d1f828..bd683183 100644 --- a/packages/server/src/dtos/create-document.dto.ts +++ b/packages/server/src/dtos/create-document.dto.ts @@ -1,4 +1,4 @@ -import { IsNotEmpty, IsString, IsOptional, MinLength, MaxLength } from 'class-validator'; +import { IsNotEmpty, IsOptional, IsString, MinLength } from 'class-validator'; export class CreateDocumentDto { @IsNotEmpty({ message: '知识库Id不能为空' }) diff --git a/packages/server/src/dtos/doc-auth.dto.ts b/packages/server/src/dtos/doc-auth.dto.ts index 5de13456..bd0bd3f4 100644 --- a/packages/server/src/dtos/doc-auth.dto.ts +++ b/packages/server/src/dtos/doc-auth.dto.ts @@ -1,4 +1,4 @@ -import { IsString, IsBoolean } from 'class-validator'; +import { IsBoolean, IsString } from 'class-validator'; export class DocAuthDto { @IsString() diff --git a/packages/server/src/dtos/share-document.dto.ts b/packages/server/src/dtos/share-document.dto.ts index 30e523ff..4f9283fc 100644 --- a/packages/server/src/dtos/share-document.dto.ts +++ b/packages/server/src/dtos/share-document.dto.ts @@ -1,4 +1,4 @@ -import { IsNotEmpty, IsString, MinLength, IsOptional } from 'class-validator'; +import { IsOptional, IsString } from 'class-validator'; export class ShareDocumentDto { @IsString({ message: '文档分享密码类型错误(正确类型为:String)' }) diff --git a/packages/server/src/dtos/share-wiki.dto.ts b/packages/server/src/dtos/share-wiki.dto.ts index aafd694d..8439fbee 100644 --- a/packages/server/src/dtos/share-wiki.dto.ts +++ b/packages/server/src/dtos/share-wiki.dto.ts @@ -1,5 +1,5 @@ -import { IsOptional } from 'class-validator'; import { WikiStatus } from '@think/domains'; +import { IsOptional } from 'class-validator'; export class ShareWikiDto { // 目标状态:公开或私有 diff --git a/packages/server/src/dtos/template.dto.ts b/packages/server/src/dtos/template.dto.ts index ca251122..15102bb1 100644 --- a/packages/server/src/dtos/template.dto.ts +++ b/packages/server/src/dtos/template.dto.ts @@ -1,4 +1,4 @@ -import { IsNotEmpty, IsString, MaxLength, MinLength, IsOptional } from 'class-validator'; +import { IsNotEmpty, IsOptional, IsString, MaxLength, MinLength } from 'class-validator'; export class TemplateDto { @IsString({ message: '名称类型错误(正确类型为:String)' }) diff --git a/packages/server/src/dtos/update-document.dto.ts b/packages/server/src/dtos/update-document.dto.ts index 9efd6b90..fff6ece7 100644 --- a/packages/server/src/dtos/update-document.dto.ts +++ b/packages/server/src/dtos/update-document.dto.ts @@ -1,4 +1,4 @@ -import { IsNotEmpty, IsString, MaxLength, MinLength, IsOptional } from 'class-validator'; +import { IsNotEmpty, IsOptional, IsString, MaxLength, MinLength } from 'class-validator'; export class UpdateDocumentDto { @IsString({ message: '文档名称类型错误(正确类型为:String)' }) diff --git a/packages/server/src/dtos/wiki-user.dto.ts b/packages/server/src/dtos/wiki-user.dto.ts index 8cfdeaa0..c3ec342c 100644 --- a/packages/server/src/dtos/wiki-user.dto.ts +++ b/packages/server/src/dtos/wiki-user.dto.ts @@ -1,5 +1,5 @@ -import { IsString } from 'class-validator'; import { WikiUserRole } from '@think/domains'; +import { IsString } from 'class-validator'; export class WikiUserDto { @IsString() diff --git a/packages/server/src/entities/collector.entity.ts b/packages/server/src/entities/collector.entity.ts index 90b3f47f..8bbd8ad0 100644 --- a/packages/server/src/entities/collector.entity.ts +++ b/packages/server/src/entities/collector.entity.ts @@ -1,5 +1,5 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; import { CollectType } from '@think/domains'; +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity('collector') export class CollectorEntity { diff --git a/packages/server/src/entities/comment.entity.ts b/packages/server/src/entities/comment.entity.ts index bb73fa05..9e0d77f3 100644 --- a/packages/server/src/entities/comment.entity.ts +++ b/packages/server/src/entities/comment.entity.ts @@ -1,4 +1,4 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity('comment') export class CommentEntity { diff --git a/packages/server/src/entities/document.entity.ts b/packages/server/src/entities/document.entity.ts index eb7bf502..7783e3a3 100644 --- a/packages/server/src/entities/document.entity.ts +++ b/packages/server/src/entities/document.entity.ts @@ -1,6 +1,6 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; -import { Exclude } from 'class-transformer'; import { DocumentStatus } from '@think/domains'; +import { Exclude } from 'class-transformer'; +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity('document') export class DocumentEntity { diff --git a/packages/server/src/entities/message.entity.ts b/packages/server/src/entities/message.entity.ts index 93f0ad07..e8b653aa 100644 --- a/packages/server/src/entities/message.entity.ts +++ b/packages/server/src/entities/message.entity.ts @@ -1,4 +1,4 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity('message') export class MessageEntity { diff --git a/packages/server/src/entities/user.entity.ts b/packages/server/src/entities/user.entity.ts index e0782cfd..7f56f0f5 100644 --- a/packages/server/src/entities/user.entity.ts +++ b/packages/server/src/entities/user.entity.ts @@ -1,7 +1,7 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn, BeforeInsert } from 'typeorm'; -import { Exclude } from 'class-transformer'; -import * as bcrypt from 'bcryptjs'; import { UserRole, UserStatus } from '@think/domains'; +import * as bcrypt from 'bcryptjs'; +import { Exclude } from 'class-transformer'; +import { BeforeInsert, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity('user') export class UserEntity { diff --git a/packages/server/src/entities/view.entity.ts b/packages/server/src/entities/view.entity.ts index a56d8475..7a174372 100644 --- a/packages/server/src/entities/view.entity.ts +++ b/packages/server/src/entities/view.entity.ts @@ -1,4 +1,4 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity('view') export class ViewEntity { diff --git a/packages/server/src/entities/wiki-user.entity.ts b/packages/server/src/entities/wiki-user.entity.ts index 7ef16f43..9ef469e3 100644 --- a/packages/server/src/entities/wiki-user.entity.ts +++ b/packages/server/src/entities/wiki-user.entity.ts @@ -1,5 +1,5 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; import { WikiUserRole, WikiUserStatus } from '@think/domains'; +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity('wiki_user') export class WikiUserEntity { diff --git a/packages/server/src/entities/wiki.entity.ts b/packages/server/src/entities/wiki.entity.ts index acb2dea3..02842b38 100644 --- a/packages/server/src/entities/wiki.entity.ts +++ b/packages/server/src/entities/wiki.entity.ts @@ -1,6 +1,6 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; -import { WikiStatus } from '@think/domains'; import { DEFAULT_WIKI_AVATAR } from '@think/constants'; +import { WikiStatus } from '@think/domains'; +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; @Entity('wiki') export class WikiEntity { diff --git a/packages/server/src/exceptions/http-response.exception.ts b/packages/server/src/exceptions/http-response.exception.ts index 53baa891..73b6f9b5 100644 --- a/packages/server/src/exceptions/http-response.exception.ts +++ b/packages/server/src/exceptions/http-response.exception.ts @@ -5,8 +5,8 @@ export class HttpResponseExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - const request = ctx.getRequest(); - const url = request.originalUrl; + // const request = ctx.getRequest(); + // const url = request.originalUrl; const status = exception instanceof HttpException ? exception.getStatus() : HttpStatus.INTERNAL_SERVER_ERROR; const errorResponse = { statusCode: status, diff --git a/packages/server/src/guard/document-auth.guard.ts b/packages/server/src/guard/document-auth.guard.ts index f701e9e5..399eff43 100644 --- a/packages/server/src/guard/document-auth.guard.ts +++ b/packages/server/src/guard/document-auth.guard.ts @@ -1,8 +1,8 @@ -import { CanActivate, ExecutionContext, Injectable, SetMetadata, HttpException, HttpStatus } from '@nestjs/common'; -import { JwtService } from '@nestjs/jwt'; +import { CanActivate, ExecutionContext, HttpException, HttpStatus, Injectable, SetMetadata } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; -import { IUser } from '@think/domains'; +import { JwtService } from '@nestjs/jwt'; import { DocumentService } from '@services/document.service'; +import { IUser } from '@think/domains'; const KEY = 'DocumentAuthority'; export const CheckDocumentAuthority = (auth: 'readable' | 'editable' | 'createUser' | null) => SetMetadata(KEY, auth); diff --git a/packages/server/src/guard/document-status.guard.ts b/packages/server/src/guard/document-status.guard.ts index e16db924..0e1abd29 100644 --- a/packages/server/src/guard/document-status.guard.ts +++ b/packages/server/src/guard/document-status.guard.ts @@ -1,7 +1,7 @@ -import { CanActivate, ExecutionContext, Injectable, SetMetadata, HttpException, HttpStatus } from '@nestjs/common'; +import { CanActivate, ExecutionContext, HttpException, HttpStatus, Injectable, SetMetadata } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; -import { DocumentStatus } from '@think/domains'; import { DocumentService } from '@services/document.service'; +import { DocumentStatus } from '@think/domains'; const KEY = 'DocumentStatus'; export const CheckDocumentStatus = (status: DocumentStatus) => SetMetadata(KEY, status); diff --git a/packages/server/src/guard/jwt.guard.ts b/packages/server/src/guard/jwt.guard.ts index 7a8b698b..6206b100 100644 --- a/packages/server/src/guard/jwt.guard.ts +++ b/packages/server/src/guard/jwt.guard.ts @@ -1,4 +1,4 @@ -import { Injectable, ExecutionContext, UnauthorizedException } from '@nestjs/common'; +import { ExecutionContext, Injectable, UnauthorizedException } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; @Injectable() diff --git a/packages/server/src/guard/wiki-status.guard.ts b/packages/server/src/guard/wiki-status.guard.ts index bfcd91a8..3c2a0410 100644 --- a/packages/server/src/guard/wiki-status.guard.ts +++ b/packages/server/src/guard/wiki-status.guard.ts @@ -1,7 +1,7 @@ -import { CanActivate, ExecutionContext, Injectable, SetMetadata, HttpException, HttpStatus } from '@nestjs/common'; +import { CanActivate, ExecutionContext, HttpException, HttpStatus, Injectable, SetMetadata } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; -import { WikiStatus } from '@think/domains'; import { WikiService } from '@services/wiki.service'; +import { WikiStatus } from '@think/domains'; const KEY = 'WikiStatus'; export const CheckWikiStatus = (status: WikiStatus) => SetMetadata(KEY, status); diff --git a/packages/server/src/guard/wiki-user.guard.ts b/packages/server/src/guard/wiki-user.guard.ts index 218b5ec2..14124254 100644 --- a/packages/server/src/guard/wiki-user.guard.ts +++ b/packages/server/src/guard/wiki-user.guard.ts @@ -1,8 +1,8 @@ -import { CanActivate, ExecutionContext, Injectable, SetMetadata, HttpException, HttpStatus } from '@nestjs/common'; -import { JwtService } from '@nestjs/jwt'; +import { CanActivate, ExecutionContext, HttpException, HttpStatus, Injectable, SetMetadata } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; -import { IUser, WikiUserRole } from '@think/domains'; +import { JwtService } from '@nestjs/jwt'; import { WikiService } from '@services/wiki.service'; +import { IUser, WikiUserRole } from '@think/domains'; const KEY = 'WIKI_USER_ROLE'; diff --git a/packages/server/src/helpers/aliyun.helper.ts b/packages/server/src/helpers/aliyun.helper.ts index 48a316b2..fd92fae2 100644 --- a/packages/server/src/helpers/aliyun.helper.ts +++ b/packages/server/src/helpers/aliyun.helper.ts @@ -1,5 +1,5 @@ -import * as AliyunOSS from 'ali-oss'; import { ConfigService } from '@nestjs/config'; +import * as AliyunOSS from 'ali-oss'; export class AliyunOssClient { configService: ConfigService; diff --git a/packages/server/src/helpers/date.helper.spec.ts b/packages/server/src/helpers/date.helper.spec.ts new file mode 100644 index 00000000..55095fc5 --- /dev/null +++ b/packages/server/src/helpers/date.helper.spec.ts @@ -0,0 +1,8 @@ +import { dateFormat } from './date.helper'; + +describe('date.helper.ts', () => { + it('dateFormat)', () => { + const d = dateFormat(1652691643484); + return expect(d).toBe('2022-05-16 17:00:43'); + }); +}); diff --git a/packages/server/src/helpers/date.helper.ts b/packages/server/src/helpers/date.helper.ts index 86404d97..e95825a9 100644 --- a/packages/server/src/helpers/date.helper.ts +++ b/packages/server/src/helpers/date.helper.ts @@ -1,10 +1,11 @@ -import * as _dateFormat from 'date-fns/format'; +import { format as dateFormatFn } from 'date-fns'; export const dateFormat = (date = null, format = 'yyyy-MM-dd HH:mm:ss') => { if (date === null || date === undefined) { date = new Date(); // eslint-disable-line no-param-reassign } + const t = date instanceof Date ? date : new Date(date); - // @ts-ignore - return _dateFormat(t, format); + + return dateFormatFn(t, format); }; diff --git a/packages/server/src/helpers/tree.helper.ts b/packages/server/src/helpers/tree.helper.ts index 7d511976..b48b79bc 100644 --- a/packages/server/src/helpers/tree.helper.ts +++ b/packages/server/src/helpers/tree.helper.ts @@ -1,8 +1,8 @@ export function array2tree(list) { - let map = {}, - node, - roots = [], - i; + const map = {}; + const roots = []; + let node; + let i; for (i = 0; i < list.length; i += 1) { map[list[i].id] = i; diff --git a/packages/server/src/helpers/ua.helper.ts b/packages/server/src/helpers/ua.helper.ts index f8be3ca2..5faddc17 100644 --- a/packages/server/src/helpers/ua.helper.ts +++ b/packages/server/src/helpers/ua.helper.ts @@ -1,5 +1,4 @@ import * as lodash from 'lodash'; -// @ts-ignore import * as UAParser from 'ua-parser-js'; const keys = [ diff --git a/packages/server/src/main.ts b/packages/server/src/main.ts index 50b9512b..88bb727f 100644 --- a/packages/server/src/main.ts +++ b/packages/server/src/main.ts @@ -1,10 +1,11 @@ +import { HttpResponseExceptionFilter } from '@exceptions/http-response.exception'; +import { ConfigService } from '@nestjs/config'; +import { NestFactory } from '@nestjs/core'; +import { ValidationPipe } from '@pipes/validation.pipe'; +import { HttpResponseTransformInterceptor } from '@transforms/http-response.transform'; import * as express from 'express'; import helmet from 'helmet'; -import { NestFactory } from '@nestjs/core'; -import { ConfigService } from '@nestjs/config'; -import { HttpResponseExceptionFilter } from '@exceptions/http-response.exception'; -import { HttpResponseTransformInterceptor } from '@transforms/http-response.transform'; -import { ValidationPipe } from '@pipes/validation.pipe'; + import { AppModule } from './app.module'; async function bootstrap() { diff --git a/packages/server/src/modules/collector.module.ts b/packages/server/src/modules/collector.module.ts index b7ab18d4..01713cff 100644 --- a/packages/server/src/modules/collector.module.ts +++ b/packages/server/src/modules/collector.module.ts @@ -1,11 +1,11 @@ -import { Module, forwardRef } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; +import { CollectorController } from '@controllers/collector.controller'; +import { CollectorEntity } from '@entities/collector.entity'; +import { DocumentModule } from '@modules/document.module'; import { UserModule } from '@modules/user.module'; import { WikiModule } from '@modules/wiki.module'; -import { DocumentModule } from '@modules/document.module'; -import { CollectorEntity } from '@entities/collector.entity'; +import { forwardRef, Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; import { CollectorService } from '@services/collector.service'; -import { CollectorController } from '@controllers/collector.controller'; @Module({ imports: [ diff --git a/packages/server/src/modules/comment.module.ts b/packages/server/src/modules/comment.module.ts index f042fbef..6924d127 100644 --- a/packages/server/src/modules/comment.module.ts +++ b/packages/server/src/modules/comment.module.ts @@ -1,12 +1,12 @@ -import { Module, forwardRef } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { UserModule } from '@modules/user.module'; -import { WikiModule } from '@modules/wiki.module'; +import { CommentController } from '@controllers/comment.controller'; +import { CommentEntity } from '@entities/comment.entity'; import { DocumentModule } from '@modules/document.module'; import { MessageModule } from '@modules/message.module'; -import { CommentEntity } from '@entities/comment.entity'; +import { UserModule } from '@modules/user.module'; +import { WikiModule } from '@modules/wiki.module'; +import { forwardRef, Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; import { CommentService } from '@services/comment.service'; -import { CommentController } from '@controllers/comment.controller'; @Module({ imports: [ diff --git a/packages/server/src/modules/document.module.ts b/packages/server/src/modules/document.module.ts index 7531740e..50050a07 100644 --- a/packages/server/src/modules/document.module.ts +++ b/packages/server/src/modules/document.module.ts @@ -1,14 +1,14 @@ -import { Module, forwardRef } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { UserModule } from '@modules/user.module'; -import { WikiModule } from '@modules/wiki.module'; -import { MessageModule } from '@modules/message.module'; -import { CollectorModule } from '@modules/collector.module'; -import { TemplateModule } from '@modules/template.module'; -import { ViewModule } from '@modules/view.module'; -import { DocumentAuthorityEntity } from '@entities/document-authority.entity'; -import { DocumentEntity } from '@entities/document.entity'; import { DocumentController } from '@controllers/document.controller'; +import { DocumentEntity } from '@entities/document.entity'; +import { DocumentAuthorityEntity } from '@entities/document-authority.entity'; +import { CollectorModule } from '@modules/collector.module'; +import { MessageModule } from '@modules/message.module'; +import { TemplateModule } from '@modules/template.module'; +import { UserModule } from '@modules/user.module'; +import { ViewModule } from '@modules/view.module'; +import { WikiModule } from '@modules/wiki.module'; +import { forwardRef, Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; import { DocumentService } from '@services/document.service'; @Module({ diff --git a/packages/server/src/modules/file.module.ts b/packages/server/src/modules/file.module.ts index 9b015fdd..251b16ef 100644 --- a/packages/server/src/modules/file.module.ts +++ b/packages/server/src/modules/file.module.ts @@ -1,6 +1,6 @@ +import { FileController } from '@controllers/file.controller'; import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; -import { FileController } from '@controllers/file.controller'; import { FileService } from '@services/file.service'; @Module({ diff --git a/packages/server/src/modules/message.module.ts b/packages/server/src/modules/message.module.ts index 27d34285..5173018e 100644 --- a/packages/server/src/modules/message.module.ts +++ b/packages/server/src/modules/message.module.ts @@ -1,9 +1,9 @@ -import { Module, forwardRef } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { UserModule } from '@modules/user.module'; -import { MessageEntity } from '@entities/message.entity'; -import { MessageService } from '@services/message.service'; import { MessageController } from '@controllers/message.controller'; +import { MessageEntity } from '@entities/message.entity'; +import { UserModule } from '@modules/user.module'; +import { forwardRef, Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { MessageService } from '@services/message.service'; @Module({ imports: [TypeOrmModule.forFeature([MessageEntity]), forwardRef(() => UserModule)], diff --git a/packages/server/src/modules/template.module.ts b/packages/server/src/modules/template.module.ts index 981495e9..2c26c35c 100644 --- a/packages/server/src/modules/template.module.ts +++ b/packages/server/src/modules/template.module.ts @@ -1,12 +1,12 @@ -import { Module, forwardRef } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { UserModule } from '@modules/user.module'; -import { WikiModule } from '@modules/wiki.module'; +import { TemplateController } from '@controllers/template.controller'; +import { TemplateEntity } from '@entities/template.entity'; import { DocumentModule } from '@modules/document.module'; import { MessageModule } from '@modules/message.module'; -import { TemplateEntity } from '@entities/template.entity'; +import { UserModule } from '@modules/user.module'; +import { WikiModule } from '@modules/wiki.module'; +import { forwardRef, Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; import { TemplateService } from '@services/template.service'; -import { TemplateController } from '@controllers/template.controller'; @Module({ imports: [ diff --git a/packages/server/src/modules/user.module.ts b/packages/server/src/modules/user.module.ts index d6e7faee..9765e76f 100644 --- a/packages/server/src/modules/user.module.ts +++ b/packages/server/src/modules/user.module.ts @@ -1,16 +1,16 @@ -import { Module, Injectable, UnauthorizedException, Inject, forwardRef } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { ConfigModule } from '@nestjs/config'; -import { PassportModule, PassportStrategy } from '@nestjs/passport'; -import { JwtModule } from '@nestjs/jwt'; -import { ExtractJwt, Strategy } from 'passport-jwt'; -import { getConfig } from '@think/config'; -import { MessageModule } from '@modules/message.module'; -import { CollectorModule } from '@modules/collector.module'; -import { WikiModule } from '@modules/wiki.module'; -import { UserEntity } from '@entities/user.entity'; -import { UserService } from '@services/user.service'; import { UserController } from '@controllers/user.controller'; +import { UserEntity } from '@entities/user.entity'; +import { CollectorModule } from '@modules/collector.module'; +import { MessageModule } from '@modules/message.module'; +import { WikiModule } from '@modules/wiki.module'; +import { forwardRef, Inject, Injectable, Module, UnauthorizedException } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; +import { JwtModule } from '@nestjs/jwt'; +import { PassportModule, PassportStrategy } from '@nestjs/passport'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { UserService } from '@services/user.service'; +import { getConfig } from '@think/config'; +import { ExtractJwt, Strategy } from 'passport-jwt'; const config = getConfig(); const jwtConfig = config.jwt as { diff --git a/packages/server/src/modules/view.module.ts b/packages/server/src/modules/view.module.ts index 45433517..02eb9e8a 100644 --- a/packages/server/src/modules/view.module.ts +++ b/packages/server/src/modules/view.module.ts @@ -1,7 +1,7 @@ +import { ViewController } from '@controllers/view.controller'; +import { ViewEntity } from '@entities/view.entity'; import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { ViewEntity } from '@entities/view.entity'; -import { ViewController } from '@controllers/view.controller'; import { ViewService } from '@services/view.service'; @Module({ diff --git a/packages/server/src/modules/wiki.module.ts b/packages/server/src/modules/wiki.module.ts index 90d60bcc..85750e1f 100644 --- a/packages/server/src/modules/wiki.module.ts +++ b/packages/server/src/modules/wiki.module.ts @@ -1,13 +1,13 @@ -import { Module, forwardRef } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { UserModule } from '@modules/user.module'; -import { DocumentModule } from '@modules/document.module'; -import { MessageModule } from '@modules/message.module'; -import { CollectorModule } from '@modules/collector.module'; -import { ViewModule } from '@modules/view.module'; +import { WikiController } from '@controllers/wiki.controller'; import { WikiEntity } from '@entities/wiki.entity'; import { WikiUserEntity } from '@entities/wiki-user.entity'; -import { WikiController } from '@controllers/wiki.controller'; +import { CollectorModule } from '@modules/collector.module'; +import { DocumentModule } from '@modules/document.module'; +import { MessageModule } from '@modules/message.module'; +import { UserModule } from '@modules/user.module'; +import { ViewModule } from '@modules/view.module'; +import { forwardRef, Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; import { WikiService } from '@services/wiki.service'; @Module({ diff --git a/packages/server/src/pipes/validation.pipe.ts b/packages/server/src/pipes/validation.pipe.ts index 14159e39..82d0291b 100644 --- a/packages/server/src/pipes/validation.pipe.ts +++ b/packages/server/src/pipes/validation.pipe.ts @@ -1,6 +1,6 @@ -import { ArgumentMetadata, Injectable, PipeTransform, BadRequestException } from '@nestjs/common'; -import { validate } from 'class-validator'; +import { ArgumentMetadata, BadRequestException, Injectable, PipeTransform } from '@nestjs/common'; import { plainToClass } from 'class-transformer'; +import { validate } from 'class-validator'; @Injectable() export class ValidationPipe implements PipeTransform { diff --git a/packages/server/src/services/collaboration.service.ts b/packages/server/src/services/collaboration.service.ts index 113e473f..8b9d8e06 100644 --- a/packages/server/src/services/collaboration.service.ts +++ b/packages/server/src/services/collaboration.service.ts @@ -1,14 +1,14 @@ -import { Injectable, HttpException, HttpStatus, Inject, forwardRef } from '@nestjs/common'; -import { getConfig } from '@think/config'; -import * as Y from 'yjs'; +import { onAuthenticatePayload, onChangePayload, onLoadDocumentPayload, Server } from '@hocuspocus/server'; import { TiptapTransformer } from '@hocuspocus/transformer'; -import { Server, onAuthenticatePayload, onChangePayload, onLoadDocumentPayload } from '@hocuspocus/server'; -import * as lodash from 'lodash'; -import { OutUser, UserService } from '@services/user.service'; -import { TemplateService } from '@services/template.service'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; import { DocumentService } from '@services/document.service'; import { DocumentVersionService } from '@services/document-version.service'; +import { TemplateService } from '@services/template.service'; +import { OutUser, UserService } from '@services/user.service'; +import { getConfig } from '@think/config'; import { DocumentStatus } from '@think/domains'; +import * as lodash from 'lodash'; +import * as Y from 'yjs'; @Injectable() export class CollaborationService { @@ -213,7 +213,7 @@ export class CollaborationService { } async onDisconnect(data) { - const { requestParameters, document } = data; + const { requestParameters } = data; const targetId = requestParameters.get('targetId'); const docType = requestParameters.get('docType'); const userId = requestParameters.get('userId'); diff --git a/packages/server/src/services/collector.service.ts b/packages/server/src/services/collector.service.ts index c61c8095..5e64e2bd 100644 --- a/packages/server/src/services/collector.service.ts +++ b/packages/server/src/services/collector.service.ts @@ -1,12 +1,12 @@ -import { Injectable, Inject, forwardRef } from '@nestjs/common'; +import { CollectDto } from '@dtos/collect.dto'; +import { CollectorEntity } from '@entities/collector.entity'; +import { forwardRef, Inject, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { CollectType } from '@think/domains'; +import { DocumentService } from '@services/document.service'; import { OutUser, UserService } from '@services/user.service'; import { WikiService } from '@services/wiki.service'; -import { DocumentService } from '@services/document.service'; -import { CollectorEntity } from '@entities/collector.entity'; -import { CollectDto } from '@dtos/collect.dto'; +import { CollectType } from '@think/domains'; +import { Repository } from 'typeorm'; @Injectable() export class CollectorService { diff --git a/packages/server/src/services/comment.service.ts b/packages/server/src/services/comment.service.ts index 52dbb53a..b6944a21 100644 --- a/packages/server/src/services/comment.service.ts +++ b/packages/server/src/services/comment.service.ts @@ -1,12 +1,12 @@ -import { Injectable, HttpException, HttpStatus, Inject, forwardRef } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { OutUser, UserService } from '@services/user.service'; -import { MessageService } from '@services/message.service'; -import { DocumentService } from '@services/document.service'; -import { CommentEntity } from '@entities/comment.entity'; import { CommentDto, UpdateCommentDto } from '@dtos/comment.dto'; +import { CommentEntity } from '@entities/comment.entity'; import { parseUserAgent } from '@helpers/ua.helper'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { DocumentService } from '@services/document.service'; +import { MessageService } from '@services/message.service'; +import { OutUser, UserService } from '@services/user.service'; +import { Repository } from 'typeorm'; @Injectable() export class CommentService { diff --git a/packages/server/src/services/document-version.service.ts b/packages/server/src/services/document-version.service.ts index 121c0ffc..6dee9b42 100644 --- a/packages/server/src/services/document-version.service.ts +++ b/packages/server/src/services/document-version.service.ts @@ -1,7 +1,7 @@ -import { Injectable, HttpException, HttpStatus } from '@nestjs/common'; -import Redis from 'ioredis'; -import { IDocument } from '@think/domains'; +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; import { getConfig } from '@think/config'; +import { IDocument } from '@think/domains'; +import Redis from 'ioredis'; import * as lodash from 'lodash'; type VerisonDataItem = { version: string; data: string }; @@ -9,7 +9,7 @@ type VerisonDataItem = { version: string; data: string }; @Injectable() export class DocumentVersionService { private redis: Redis; - private max: number = 0; + private max = 0; private error: string | null = '[think] 文档版本服务启动中'; constructor() { @@ -48,11 +48,13 @@ export class DocumentVersionService { redis.on('error', (e) => { console.error(`[think] 文档版本服务启动错误: "${e}"`); }); - redis.connect().catch((e) => { + redis.connect().catch(() => { this.redis = null; this.error = '[think] 文档版本服务启动失败!'; }); - } catch (e) {} + } catch (e) { + // + } } /** diff --git a/packages/server/src/services/document.service.ts b/packages/server/src/services/document.service.ts index f0899c19..8a3e2303 100644 --- a/packages/server/src/services/document.service.ts +++ b/packages/server/src/services/document.service.ts @@ -1,22 +1,22 @@ -import { Injectable, HttpException, HttpStatus, Inject, forwardRef } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { instanceToPlain } from 'class-transformer'; -import { EMPTY_DOCUMNENT } from '@think/constants'; -import { DocumentStatus, IDocument, WikiUserRole } from '@think/domains'; -import { DocumentAuthorityEntity } from '@entities/document-authority.entity'; +import { CreateDocumentDto } from '@dtos/create-document.dto'; +import { DocAuthDto } from '@dtos/doc-auth.dto'; +import { ShareDocumentDto } from '@dtos/share-document.dto'; +import { UpdateDocumentDto } from '@dtos/update-document.dto'; import { DocumentEntity } from '@entities/document.entity'; -import { OutUser, UserService } from '@services/user.service'; -import { WikiService } from '@services/wiki.service'; -import { MessageService } from '@services/message.service'; +import { DocumentAuthorityEntity } from '@entities/document-authority.entity'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; import { CollaborationService } from '@services/collaboration.service'; import { DocumentVersionService } from '@services/document-version.service'; +import { MessageService } from '@services/message.service'; import { TemplateService } from '@services/template.service'; +import { OutUser, UserService } from '@services/user.service'; import { ViewService } from '@services/view.service'; -import { DocAuthDto } from '@dtos/doc-auth.dto'; -import { CreateDocumentDto } from '@dtos/create-document.dto'; -import { UpdateDocumentDto } from '@dtos/update-document.dto'; -import { ShareDocumentDto } from '@dtos/share-document.dto'; +import { WikiService } from '@services/wiki.service'; +import { EMPTY_DOCUMNENT } from '@think/constants'; +import { DocumentStatus, IDocument, WikiUserRole } from '@think/domains'; +import { instanceToPlain } from 'class-transformer'; +import { Repository } from 'typeorm'; @Injectable() export class DocumentService { diff --git a/packages/server/src/services/file.service.ts b/packages/server/src/services/file.service.ts index 4affd9ba..be1c3b09 100644 --- a/packages/server/src/services/file.service.ts +++ b/packages/server/src/services/file.service.ts @@ -1,8 +1,8 @@ -import { Injectable } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { AliyunOssClient } from '@helpers/aliyun.helper'; import { dateFormat } from '@helpers/date.helper'; import { uniqueid } from '@helpers/uniqueid.helper'; -import { AliyunOssClient } from '@helpers/aliyun.helper'; +import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; @Injectable() export class FileService { diff --git a/packages/server/src/services/message.service.ts b/packages/server/src/services/message.service.ts index d9f68988..0df99a35 100644 --- a/packages/server/src/services/message.service.ts +++ b/packages/server/src/services/message.service.ts @@ -1,8 +1,8 @@ -import { Injectable, HttpException, HttpStatus } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { OutUser } from '@services/user.service'; import { MessageEntity } from '@entities/message.entity'; +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { OutUser } from '@services/user.service'; +import { Repository } from 'typeorm'; @Injectable() export class MessageService { diff --git a/packages/server/src/services/template.service.ts b/packages/server/src/services/template.service.ts index 5c414be7..e5e7176c 100644 --- a/packages/server/src/services/template.service.ts +++ b/packages/server/src/services/template.service.ts @@ -1,11 +1,10 @@ -import { Injectable, HttpException, HttpStatus, Inject, forwardRef } from '@nestjs/common'; +import { TemplateDto } from '@dtos/template.dto'; +import { TemplateEntity } from '@entities/template.entity'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; +import { OutUser, UserService } from '@services/user.service'; import { instanceToPlain } from 'class-transformer'; import { Repository } from 'typeorm'; -import * as lodash from 'lodash'; -import { TemplateEntity } from '@entities/template.entity'; -import { OutUser, UserService } from '@services/user.service'; -import { TemplateDto } from '@dtos/template.dto'; @Injectable() export class TemplateService { @@ -70,9 +69,7 @@ export class TemplateService { } const createUser = await this.userService.findById(template.createUserId); - // @ts-ignore - template.createUser = createUser; - return template; + return { ...template, createUser }; } /** @@ -136,9 +133,7 @@ export class TemplateService { await Promise.all( data.map(async (template) => { const createUser = await this.userService.findById(template.createUserId); - // @ts-ignore - template.createUser = createUser; - return template; + return { ...template, createUser }; }) ); @@ -164,9 +159,7 @@ export class TemplateService { await Promise.all( data.map(async (template) => { const createUser = await this.userService.findById(template.createUserId); - // @ts-ignore - template.createUser = createUser; - return template; + return { ...template, createUser }; }) ); diff --git a/packages/server/src/services/user.service.ts b/packages/server/src/services/user.service.ts index 0eb7fe4a..6d70baf1 100644 --- a/packages/server/src/services/user.service.ts +++ b/packages/server/src/services/user.service.ts @@ -1,17 +1,17 @@ -import { Inject, Injectable, HttpException, HttpStatus, forwardRef } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; -import { InjectRepository } from '@nestjs/typeorm'; -import { JwtService } from '@nestjs/jwt'; -import { Repository } from 'typeorm'; -import { instanceToPlain } from 'class-transformer'; -import { CollectType, UserRole, UserStatus } from '@think/domains'; -import { MessageService } from '@services/message.service'; -import { CollectorService } from '@services/collector.service'; -import { WikiService } from '@services/wiki.service'; -import { UserEntity } from '@entities/user.entity'; import { CreateUserDto } from '@dtos/create-user.dto'; import { LoginUserDto } from '@dtos/login-user.dto'; import { UpdateUserDto } from '@dtos/update-user.dto'; +import { UserEntity } from '@entities/user.entity'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { JwtService } from '@nestjs/jwt'; +import { InjectRepository } from '@nestjs/typeorm'; +import { CollectorService } from '@services/collector.service'; +import { MessageService } from '@services/message.service'; +import { WikiService } from '@services/wiki.service'; +import { CollectType, UserStatus } from '@think/domains'; +import { instanceToPlain } from 'class-transformer'; +import { Repository } from 'typeorm'; export type OutUser = Omit; diff --git a/packages/server/src/services/view.service.ts b/packages/server/src/services/view.service.ts index 72cceb85..ea49cb4b 100644 --- a/packages/server/src/services/view.service.ts +++ b/packages/server/src/services/view.service.ts @@ -1,9 +1,9 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; import { ViewEntity } from '@entities/view.entity'; import { parseUserAgent } from '@helpers/ua.helper'; +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; import { IPagination } from '@think/domains'; +import { Repository } from 'typeorm'; @Injectable() export class ViewService { diff --git a/packages/server/src/services/wiki.service.ts b/packages/server/src/services/wiki.service.ts index 82ded160..9d283997 100644 --- a/packages/server/src/services/wiki.service.ts +++ b/packages/server/src/services/wiki.service.ts @@ -1,21 +1,21 @@ -import { Injectable, HttpException, HttpStatus, Inject, forwardRef } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { instanceToPlain } from 'class-transformer'; -import { WikiStatus, WikiUserRole, DocumentStatus, IPagination } from '@think/domains'; -import { array2tree } from '@helpers/tree.helper'; +import { CreateWikiDto } from '@dtos/create-wiki.dto'; +import { ShareWikiDto } from '@dtos/share-wiki.dto'; +import { UpdateWikiDto } from '@dtos/update-wiki.dto'; +import { WikiUserDto } from '@dtos/wiki-user.dto'; import { WikiEntity } from '@entities/wiki.entity'; import { WikiUserEntity } from '@entities/wiki-user.entity'; -import { UserService } from '@services/user.service'; -import { MessageService } from '@services/message.service'; +import { array2tree } from '@helpers/tree.helper'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; import { CollectorService } from '@services/collector.service'; +import { DocumentService } from '@services/document.service'; +import { MessageService } from '@services/message.service'; +import { UserService } from '@services/user.service'; import { OutUser } from '@services/user.service'; import { ViewService } from '@services/view.service'; -import { DocumentService } from '@services/document.service'; -import { WikiUserDto } from '@dtos/wiki-user.dto'; -import { CreateWikiDto } from '@dtos/create-wiki.dto'; -import { UpdateWikiDto } from '@dtos/update-wiki.dto'; -import { ShareWikiDto } from '@dtos/share-wiki.dto'; +import { DocumentStatus, IPagination, WikiStatus, WikiUserRole } from '@think/domains'; +import { instanceToPlain } from 'class-transformer'; +import { Repository } from 'typeorm'; @Injectable() export class WikiService { diff --git a/packages/server/src/transforms/http-response.transform.ts b/packages/server/src/transforms/http-response.transform.ts index 50d91104..9042398a 100644 --- a/packages/server/src/transforms/http-response.transform.ts +++ b/packages/server/src/transforms/http-response.transform.ts @@ -1,6 +1,6 @@ -import { Injectable, NestInterceptor, CallHandler, ExecutionContext } from '@nestjs/common'; -import { map } from 'rxjs/operators'; +import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common'; import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; interface Response { data: T; @@ -13,7 +13,7 @@ export class HttpResponseTransformInterceptor implements NestInterceptor { const ctx = context.switchToHttp(); const response = ctx.getResponse(); - const request = ctx.getRequest(); + // const request = ctx.getRequest(); // const url = request.originalUrl; const statusCode = response.statusCode; const res = { diff --git a/packages/server/test/app.e2e-spec.ts b/packages/server/test/app.e2e-spec.ts index 1a013bef..f4dd23ff 100644 --- a/packages/server/test/app.e2e-spec.ts +++ b/packages/server/test/app.e2e-spec.ts @@ -1,6 +1,7 @@ -import { Test, TestingModule } from '@nestjs/testing'; import { INestApplication } from '@nestjs/common'; +import { Test, TestingModule } from '@nestjs/testing'; import * as request from 'supertest'; + import { AppModule } from './../src/app.module'; describe('AppController (e2e)', () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3121ac1..6064da1d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,18 +4,8 @@ importers: .: specifiers: - '@typescript-eslint/eslint-plugin': ^5.21.0 - '@typescript-eslint/parser': ^5.21.0 concurrently: ^7.0.0 cross-env: ^7.0.3 - eslint: ^8.14.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import: ^2.26.0 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-prettier: ^4.0.0 - eslint-plugin-react: ^7.29.4 - eslint-plugin-react-hooks: ^4.5.0 - eslint-plugin-simple-import-sort: ^7.0.0 fs-extra: ^10.0.0 husky: ^7.0.4 lint-staged: ^12.4.1 @@ -35,16 +25,6 @@ importers: fs-extra: 10.0.0 rimraf: 3.0.2 devDependencies: - '@typescript-eslint/eslint-plugin': 5.21.0_19515efd875c7ffcd67055d8be736b9f - '@typescript-eslint/parser': 5.21.0_eslint@8.14.0+typescript@4.5.5 - eslint: 8.14.0 - eslint-config-prettier: 8.5.0_eslint@8.14.0 - eslint-plugin-import: 2.26.0_eslint@8.14.0 - eslint-plugin-jsx-a11y: 6.5.1_eslint@8.14.0 - eslint-plugin-prettier: 4.0.0_740be41c8168d0cc214a306089357ad0 - eslint-plugin-react: 7.29.4_eslint@8.14.0 - eslint-plugin-react-hooks: 4.5.0_eslint@8.14.0 - eslint-plugin-simple-import-sort: 7.0.0_eslint@8.14.0 husky: 7.0.4 lint-staged: 12.4.1 prettier: 2.5.1 @@ -106,11 +86,20 @@ importers: '@tiptap/suggestion': ^2.0.0-beta.90 '@types/node': 17.0.13 '@types/react': 17.0.38 + '@typescript-eslint/eslint-plugin': ^5.21.0 + '@typescript-eslint/parser': ^5.21.0 axios: ^0.25.0 classnames: ^2.3.1 clone: ^2.1.2 deep-equal: ^2.0.5 dompurify: ^2.3.5 + eslint: ^8.14.0 + eslint-config-prettier: ^8.5.0 + eslint-plugin-import: ^2.26.0 + eslint-plugin-prettier: ^4.0.0 + eslint-plugin-react: ^7.29.4 + eslint-plugin-react-hooks: ^4.5.0 + eslint-plugin-simple-import-sort: ^7.0.0 interactjs: ^1.10.11 katex: ^0.15.2 lib0: ^0.2.47 @@ -229,6 +218,15 @@ importers: devDependencies: '@types/node': 17.0.13 '@types/react': 17.0.38 + '@typescript-eslint/eslint-plugin': 5.21.0_19515efd875c7ffcd67055d8be736b9f + '@typescript-eslint/parser': 5.21.0_eslint@8.14.0+typescript@4.5.5 + eslint: 8.14.0 + eslint-config-prettier: 8.5.0_eslint@8.14.0 + eslint-plugin-import: 2.26.0_eslint@8.14.0 + eslint-plugin-prettier: 4.0.0_74ebb802163a9b4fa8f89d76ed02f62a + eslint-plugin-react: 7.29.4_eslint@8.14.0 + eslint-plugin-react-hooks: 4.5.0_eslint@8.14.0 + eslint-plugin-simple-import-sort: 7.0.0_eslint@8.14.0 tsconfig-paths-webpack-plugin: 3.5.2 typescript: 4.5.5 @@ -271,11 +269,18 @@ importers: '@types/jest': 27.0.2 '@types/node': ^16.0.0 '@types/supertest': ^2.0.11 + '@typescript-eslint/eslint-plugin': ^5.21.0 + '@typescript-eslint/parser': ^5.21.0 ali-oss: ^6.16.0 bcryptjs: ^2.4.3 class-transformer: ^0.5.1 class-validator: ^0.13.2 date-fns: ^2.28.0 + eslint: ^8.14.0 + eslint-config-prettier: ^8.5.0 + eslint-plugin-import: ^2.26.0 + eslint-plugin-prettier: ^4.0.0 + eslint-plugin-simple-import-sort: ^7.0.0 express: ^4.17.2 express-rate-limit: ^6.2.0 helmet: ^5.0.2 @@ -338,13 +343,20 @@ importers: y-prosemirror: 1.0.14_8fd72c89aecefb95d86a797b5207d945 yjs: 13.5.24 devDependencies: - '@nestjs/cli': 8.2.0 + '@nestjs/cli': 8.2.0_eslint@8.14.0 '@nestjs/schematics': 8.0.5_typescript@4.5.5 '@nestjs/testing': 8.2.6_b893ca8083ee374883b6d648098a9aeb '@types/express': 4.17.13 '@types/jest': 27.0.2 '@types/node': 16.11.21 '@types/supertest': 2.0.11 + '@typescript-eslint/eslint-plugin': 5.21.0_19515efd875c7ffcd67055d8be736b9f + '@typescript-eslint/parser': 5.21.0_eslint@8.14.0+typescript@4.5.5 + eslint: 8.14.0 + eslint-config-prettier: 8.5.0_eslint@8.14.0 + eslint-plugin-import: 2.26.0_eslint@8.14.0 + eslint-plugin-prettier: 4.0.0_740be41c8168d0cc214a306089357ad0 + eslint-plugin-simple-import-sort: 7.0.0_eslint@8.14.0 jest: 27.4.7_ts-node@10.4.0 prettier: 2.5.1 source-map-support: 0.5.21 @@ -744,12 +756,14 @@ packages: dependencies: core-js-pure: 3.20.3 regenerator-runtime: 0.13.9 + dev: false /@babel/runtime/7.16.7: resolution: {integrity: sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.9 + dev: false /@babel/template/7.16.7: resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} @@ -1228,7 +1242,7 @@ packages: resolution: {integrity: sha512-JHRfM7fUit2UroC0xRnuzMGegSTbfvz6X/1PgcIvahXC+A7UsKa8XfR1YrBsvoSu669iMTeNkDb26pSkGOzXKw==} dev: false - /@nestjs/cli/8.2.0: + /@nestjs/cli/8.2.0_eslint@8.14.0: resolution: {integrity: sha512-f5grQOgrRcfHfOUP94OWsMdVYy6bit0zRSxPZ5+tfsFWkiPWdcx5Ba2M2socTykkiNHruXBu07lYvcKh94do7Q==} engines: {node: '>= 10.13.0', npm: '>= 6.11.0'} hasBin: true @@ -1241,7 +1255,7 @@ packages: chokidar: 3.5.2 cli-table3: 0.6.1 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 6.5.0_typescript@4.5.4+webpack@5.66.0 + fork-ts-checker-webpack-plugin: 6.5.0_787dd39517260957bc59f00cd4915d0b inquirer: 7.3.3 node-emoji: 1.11.0 ora: 5.4.1 @@ -2788,14 +2802,6 @@ packages: /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-query/4.2.2: - resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} - engines: {node: '>=6.0'} - dependencies: - '@babel/runtime': 7.16.7 - '@babel/runtime-corejs3': 7.16.8 - dev: true - /array-flatten/1.1.1: resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} dev: false @@ -2845,10 +2851,6 @@ packages: resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} dev: true - /ast-types-flow/0.0.7: - resolution: {integrity: sha1-9wtzXGvKGlycItmCw+Oef+ujva0=} - dev: true - /ast-types/0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} @@ -2883,11 +2885,6 @@ packages: engines: {node: '>= 0.4'} dev: false - /axe-core/4.4.1: - resolution: {integrity: sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==} - engines: {node: '>=4'} - dev: true - /axios/0.24.0: resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} dependencies: @@ -2904,10 +2901,6 @@ packages: - debug dev: false - /axobject-query/2.2.0: - resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} - dev: true - /babel-jest/27.4.6_@babel+core@7.16.12: resolution: {integrity: sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3465,6 +3458,7 @@ packages: /core-js-pure/3.20.3: resolution: {integrity: sha512-Q2H6tQ5MtPtcC7f3HxJ48i4Q7T9ybPKgvWyuH7JXIoNa2pm0KuBnycsET/qw1SLLZYfbsbrZQNMeIOClb+6WIA==} requiresBuild: true + dev: false /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -3568,10 +3562,6 @@ packages: /csstype/3.0.10: resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==} - /damerau-levenshtein/1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true - /data-uri-to-buffer/3.0.1: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} @@ -4072,27 +4062,6 @@ packages: tsconfig-paths: 3.14.1 dev: true - /eslint-plugin-jsx-a11y/6.5.1_eslint@8.14.0: - resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.16.7 - aria-query: 4.2.2 - array-includes: 3.1.4 - ast-types-flow: 0.0.7 - axe-core: 4.4.1 - axobject-query: 2.2.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 8.14.0 - has: 1.0.3 - jsx-ast-utils: 3.3.0 - language-tags: 1.0.5 - minimatch: 3.0.4 - dev: true - /eslint-plugin-prettier/4.0.0_740be41c8168d0cc214a306089357ad0: resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} engines: {node: '>=6.0.0'} @@ -4110,6 +4079,22 @@ packages: prettier-linter-helpers: 1.0.0 dev: true + /eslint-plugin-prettier/4.0.0_74ebb802163a9b4fa8f89d76ed02f62a: + resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} + engines: {node: '>=6.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.14.0 + eslint-config-prettier: 8.5.0_eslint@8.14.0 + prettier-linter-helpers: 1.0.0 + dev: true + /eslint-plugin-react-hooks/4.5.0_eslint@8.14.0: resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} engines: {node: '>=10'} @@ -4538,7 +4523,7 @@ packages: resolution: {integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k=} dev: false - /fork-ts-checker-webpack-plugin/6.5.0_typescript@4.5.4+webpack@5.66.0: + /fork-ts-checker-webpack-plugin/6.5.0_787dd39517260957bc59f00cd4915d0b: resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -4558,6 +4543,7 @@ packages: chokidar: 3.5.2 cosmiconfig: 6.0.0 deepmerge: 4.2.2 + eslint: 8.14.0 fs-extra: 9.1.0 glob: 7.2.0 memfs: 3.4.1 @@ -6059,16 +6045,6 @@ packages: ms: 2.1.3 dev: false - /language-subtag-registry/0.3.21: - resolution: {integrity: sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==} - dev: true - - /language-tags/1.0.5: - resolution: {integrity: sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=} - dependencies: - language-subtag-registry: 0.3.21 - dev: true - /leven/3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -7733,6 +7709,7 @@ packages: /regenerator-runtime/0.13.9: resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} + dev: false /regexp.prototype.flags/1.4.1: resolution: {integrity: sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==}