@seafile/sdoc-editor 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/sdoc-server-api.js +165 -170
- package/dist/api/seafile-api.js +180 -246
- package/dist/basic-sdk/comment/comment-decorate.js +23 -30
- package/dist/basic-sdk/comment/components/comment-all-participants/index.js +18 -18
- package/dist/basic-sdk/comment/components/comment-all-participants/participant-avatar.js +13 -13
- package/dist/basic-sdk/comment/components/comment-delete-shadow.js +11 -9
- package/dist/basic-sdk/comment/components/comment-editor.js +37 -34
- package/dist/basic-sdk/comment/components/comment-input/comment-participant-item.js +16 -14
- package/dist/basic-sdk/comment/components/comment-input/index.js +110 -106
- package/dist/basic-sdk/comment/components/comment-item-content.js +29 -37
- package/dist/basic-sdk/comment/components/comment-item-reply.js +24 -33
- package/dist/basic-sdk/comment/components/comment-item-resolved-reply.js +5 -3
- package/dist/basic-sdk/comment/components/comment-item-wrapper.js +190 -285
- package/dist/basic-sdk/comment/components/comment-list.js +52 -72
- package/dist/basic-sdk/comment/components/comment-participants-editor/index.js +23 -30
- package/dist/basic-sdk/comment/components/comment-participants-editor/searched-collaborators.js +21 -19
- package/dist/basic-sdk/comment/components/comment-participants-editor/selected-participants.js +16 -14
- package/dist/basic-sdk/comment/components/editor-comment.js +23 -32
- package/dist/basic-sdk/comment/components/elements-comment-count/element-comment-count.js +18 -20
- package/dist/basic-sdk/comment/components/elements-comment-count/index.js +8 -8
- package/dist/basic-sdk/comment/components/global-comment/global-comment-body-header.js +23 -25
- package/dist/basic-sdk/comment/components/global-comment/global-comment-editor.js +9 -7
- package/dist/basic-sdk/comment/components/global-comment/global-comment-header.js +9 -6
- package/dist/basic-sdk/comment/components/global-comment/index.js +63 -86
- package/dist/basic-sdk/comment/constants/index.js +9 -9
- package/dist/basic-sdk/comment/helper.js +27 -26
- package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-context.js +8 -7
- package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-list.js +19 -30
- package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-mount.js +41 -71
- package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-context.js +8 -7
- package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-mount.js +45 -64
- package/dist/basic-sdk/comment/hooks/use-participants.js +46 -53
- package/dist/basic-sdk/comment/index.js +22 -19
- package/dist/basic-sdk/comment/provider/comment-context-provider.js +9 -11
- package/dist/basic-sdk/comment/provider/index.js +4 -2
- package/dist/basic-sdk/comment/provider/notification-context-provider.js +9 -11
- package/dist/basic-sdk/comment/reducer/comment-reducer.js +151 -137
- package/dist/basic-sdk/comment/reducer/notification-reducer.js +20 -15
- package/dist/basic-sdk/comment/utils/index.js +180 -173
- package/dist/basic-sdk/comment/utils/notification-utils.js +15 -14
- package/dist/basic-sdk/constants/index.js +9 -9
- package/dist/basic-sdk/cursor/helper.js +13 -9
- package/dist/basic-sdk/cursor/use-cursors.js +9 -13
- package/dist/basic-sdk/decorates/index.js +8 -9
- package/dist/basic-sdk/editor/editable-article.js +63 -57
- package/dist/basic-sdk/editor/sdoc-editor.js +42 -47
- package/dist/basic-sdk/extension/commons/color-menu/color-item.js +6 -4
- package/dist/basic-sdk/extension/commons/color-menu/index.js +40 -50
- package/dist/basic-sdk/extension/commons/dropdown-menu-item/index.js +17 -16
- package/dist/basic-sdk/extension/commons/element-popover/index.js +27 -45
- package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +46 -59
- package/dist/basic-sdk/extension/commons/menu/menu-group.js +7 -21
- package/dist/basic-sdk/extension/commons/menu/menu-item.js +17 -14
- package/dist/basic-sdk/extension/commons/more-dropdown/index.js +9 -7
- package/dist/basic-sdk/extension/commons/select-file-dialog/helpers.js +3 -3
- package/dist/basic-sdk/extension/commons/select-file-dialog/index.js +26 -23
- package/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.js +49 -80
- package/dist/basic-sdk/extension/constants/color.js +10 -10
- package/dist/basic-sdk/extension/constants/diff-view.js +3 -3
- package/dist/basic-sdk/extension/constants/element-type.js +29 -29
- package/dist/basic-sdk/extension/constants/font.js +44 -37
- package/dist/basic-sdk/extension/constants/index.js +27 -16
- package/dist/basic-sdk/extension/constants/keyboard.js +4 -4
- package/dist/basic-sdk/extension/constants/menus-config.js +234 -203
- package/dist/basic-sdk/extension/core/queries/index.js +185 -285
- package/dist/basic-sdk/extension/core/transforms/focus-editor.js +2 -2
- package/dist/basic-sdk/extension/core/transforms/move-children.js +14 -14
- package/dist/basic-sdk/extension/core/transforms/remove-node-children.js +6 -18
- package/dist/basic-sdk/extension/core/transforms/replace-node.js +22 -19
- package/dist/basic-sdk/extension/core/transforms/update-parent-node.js +6 -8
- package/dist/basic-sdk/extension/core/utils/index.js +12 -12
- package/dist/basic-sdk/extension/index.js +6 -6
- package/dist/basic-sdk/extension/plugins/blockquote/helpers.js +39 -54
- package/dist/basic-sdk/extension/plugins/blockquote/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/blockquote/menu/index.js +34 -44
- package/dist/basic-sdk/extension/plugins/blockquote/model.js +8 -9
- package/dist/basic-sdk/extension/plugins/blockquote/plugin.js +36 -37
- package/dist/basic-sdk/extension/plugins/blockquote/render-elem.js +7 -5
- package/dist/basic-sdk/extension/plugins/check-list/helpers.js +15 -25
- package/dist/basic-sdk/extension/plugins/check-list/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/check-list/menu/index.js +35 -45
- package/dist/basic-sdk/extension/plugins/check-list/model.js +9 -10
- package/dist/basic-sdk/extension/plugins/check-list/plugin.js +16 -10
- package/dist/basic-sdk/extension/plugins/check-list/render-elem.js +42 -56
- package/dist/basic-sdk/extension/plugins/clear-format/helpers.js +21 -36
- package/dist/basic-sdk/extension/plugins/clear-format/menu/index.js +12 -10
- package/dist/basic-sdk/extension/plugins/code-block/helpers.js +40 -58
- package/dist/basic-sdk/extension/plugins/code-block/hover-menu/index.js +38 -46
- package/dist/basic-sdk/extension/plugins/code-block/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/code-block/menu/index.js +9 -7
- package/dist/basic-sdk/extension/plugins/code-block/model.js +8 -9
- package/dist/basic-sdk/extension/plugins/code-block/plugin.js +44 -51
- package/dist/basic-sdk/extension/plugins/code-block/prismjs.js +27 -27
- package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +62 -58
- package/dist/basic-sdk/extension/plugins/file-link/constants/index.js +16 -14
- package/dist/basic-sdk/extension/plugins/file-link/helpers.js +34 -36
- package/dist/basic-sdk/extension/plugins/file-link/hover-menu/index.js +19 -23
- package/dist/basic-sdk/extension/plugins/file-link/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/file-link/menu/index.js +10 -8
- package/dist/basic-sdk/extension/plugins/file-link/plugin.js +17 -11
- package/dist/basic-sdk/extension/plugins/file-link/render-elem.js +34 -38
- package/dist/basic-sdk/extension/plugins/font/helpers.js +75 -78
- package/dist/basic-sdk/extension/plugins/font/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/font/menu/font-family/font-item.js +14 -13
- package/dist/basic-sdk/extension/plugins/font/menu/font-family/index.js +38 -55
- package/dist/basic-sdk/extension/plugins/font/menu/font-size/font-size-scale.js +12 -10
- package/dist/basic-sdk/extension/plugins/font/menu/font-size/index.js +29 -31
- package/dist/basic-sdk/extension/plugins/font/menu/index.js +5 -3
- package/dist/basic-sdk/extension/plugins/font/plugin.js +4 -4
- package/dist/basic-sdk/extension/plugins/header/helpers.js +32 -38
- package/dist/basic-sdk/extension/plugins/header/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/header/menu/index.js +101 -107
- package/dist/basic-sdk/extension/plugins/header/plugin.js +41 -44
- package/dist/basic-sdk/extension/plugins/header/render-elem.js +28 -20
- package/dist/basic-sdk/extension/plugins/html/helper.js +30 -28
- package/dist/basic-sdk/extension/plugins/html/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/html/plugin.js +12 -10
- package/dist/basic-sdk/extension/plugins/html/rules/blockquote.js +5 -3
- package/dist/basic-sdk/extension/plugins/html/rules/check-list.js +4 -2
- package/dist/basic-sdk/extension/plugins/html/rules/code-block.js +20 -24
- package/dist/basic-sdk/extension/plugins/html/rules/header.js +7 -5
- package/dist/basic-sdk/extension/plugins/html/rules/image.js +4 -2
- package/dist/basic-sdk/extension/plugins/html/rules/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/html/rules/link.js +5 -3
- package/dist/basic-sdk/extension/plugins/html/rules/list.js +6 -4
- package/dist/basic-sdk/extension/plugins/html/rules/paragraph.js +5 -3
- package/dist/basic-sdk/extension/plugins/html/rules/table.js +5 -3
- package/dist/basic-sdk/extension/plugins/html/rules/text.js +5 -3
- package/dist/basic-sdk/extension/plugins/image/constants/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/image/dialogs/image-previewer.js +59 -75
- package/dist/basic-sdk/extension/plugins/image/helpers.js +74 -98
- package/dist/basic-sdk/extension/plugins/image/hover-menu/index.js +49 -62
- package/dist/basic-sdk/extension/plugins/image/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/image/menu/index.js +12 -9
- package/dist/basic-sdk/extension/plugins/image/model.js +11 -12
- package/dist/basic-sdk/extension/plugins/image/plugin.js +43 -35
- package/dist/basic-sdk/extension/plugins/image/render-elem.js +73 -91
- package/dist/basic-sdk/extension/plugins/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/link/dialog/add-link-dialog/index.js +30 -39
- package/dist/basic-sdk/extension/plugins/link/helpers.js +76 -100
- package/dist/basic-sdk/extension/plugins/link/hover/index.js +12 -9
- package/dist/basic-sdk/extension/plugins/link/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/link/menu/index.js +10 -8
- package/dist/basic-sdk/extension/plugins/link/model.js +10 -11
- package/dist/basic-sdk/extension/plugins/link/plugin.js +28 -31
- package/dist/basic-sdk/extension/plugins/link/render-elem.js +66 -74
- package/dist/basic-sdk/extension/plugins/list/helpers.js +45 -57
- package/dist/basic-sdk/extension/plugins/list/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/list/menu/index.js +37 -49
- package/dist/basic-sdk/extension/plugins/list/model.js +11 -12
- package/dist/basic-sdk/extension/plugins/list/plugin/index.js +16 -12
- package/dist/basic-sdk/extension/plugins/list/plugin/insert-break-list.js +4 -4
- package/dist/basic-sdk/extension/plugins/list/plugin/insert-fragment-list.js +54 -70
- package/dist/basic-sdk/extension/plugins/list/plugin/normalize-list.js +16 -20
- package/dist/basic-sdk/extension/plugins/list/plugin/on-tab-handle.js +19 -14
- package/dist/basic-sdk/extension/plugins/list/plugin/shortcut.js +20 -28
- package/dist/basic-sdk/extension/plugins/list/queries/index.js +16 -18
- package/dist/basic-sdk/extension/plugins/list/render-elem.js +23 -15
- package/dist/basic-sdk/extension/plugins/list/transforms/insert-list-item.js +20 -24
- package/dist/basic-sdk/extension/plugins/list/transforms/move-list-item-down.js +16 -19
- package/dist/basic-sdk/extension/plugins/list/transforms/move-list-item-up.js +31 -35
- package/dist/basic-sdk/extension/plugins/list/transforms/move-list-items-to-list.js +18 -18
- package/dist/basic-sdk/extension/plugins/list/transforms/move-list-items.js +23 -24
- package/dist/basic-sdk/extension/plugins/list/transforms/normalize-list-item.js +38 -55
- package/dist/basic-sdk/extension/plugins/list/transforms/normalize-nested-list.js +11 -13
- package/dist/basic-sdk/extension/plugins/list/transforms/remove-first-list-item.js +8 -8
- package/dist/basic-sdk/extension/plugins/list/transforms/toggle-list.js +42 -50
- package/dist/basic-sdk/extension/plugins/list/transforms/unwrap-list.js +11 -14
- package/dist/basic-sdk/extension/plugins/markdown/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/markdown/plugin.js +59 -52
- package/dist/basic-sdk/extension/plugins/paragraph/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/paragraph/render-elem.js +12 -10
- package/dist/basic-sdk/extension/plugins/sdoc-link/constants/index.js +16 -14
- package/dist/basic-sdk/extension/plugins/sdoc-link/helpers.js +66 -65
- package/dist/basic-sdk/extension/plugins/sdoc-link/hover-menu/index.js +19 -23
- package/dist/basic-sdk/extension/plugins/sdoc-link/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/sdoc-link/menu/index.js +10 -8
- package/dist/basic-sdk/extension/plugins/sdoc-link/plugin.js +23 -15
- package/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.js +35 -39
- package/dist/basic-sdk/extension/plugins/table/constants/index.js +16 -14
- package/dist/basic-sdk/extension/plugins/table/dialog/custom-table-size-dialog/index.js +17 -24
- package/dist/basic-sdk/extension/plugins/table/dialog/custom-table-size-dialog/number-input.js +9 -7
- package/dist/basic-sdk/extension/plugins/table/helpers.js +466 -440
- package/dist/basic-sdk/extension/plugins/table/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/cell-bg-color-menu.js +16 -13
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/cell-text-align-menu.js +16 -18
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/common-menu.js +58 -65
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +7 -5
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/remove-table-menu.js +11 -9
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/table-column-menu.js +13 -14
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/table-row-menu.js +13 -14
- package/dist/basic-sdk/extension/plugins/table/menu/table-context-menu/index.js +92 -105
- package/dist/basic-sdk/extension/plugins/table/menu/table-context-menu/insert-table-element.js +62 -66
- package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +9 -7
- package/dist/basic-sdk/extension/plugins/table/model.js +14 -15
- package/dist/basic-sdk/extension/plugins/table/plugin.js +130 -112
- package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +31 -45
- package/dist/basic-sdk/extension/plugins/table/popover/table-template/index.js +12 -14
- package/dist/basic-sdk/extension/plugins/table/popover/table-template/sample-table.js +15 -19
- package/dist/basic-sdk/extension/plugins/table/render/hooks.js +25 -32
- package/dist/basic-sdk/extension/plugins/table/render/index.js +57 -67
- package/dist/basic-sdk/extension/plugins/table/render/render-cell.js +42 -36
- package/dist/basic-sdk/extension/plugins/table/render/render-row.js +44 -49
- package/dist/basic-sdk/extension/plugins/table/render/resize-handlers/first-column-left-resize-handler.js +36 -45
- package/dist/basic-sdk/extension/plugins/table/render/resize-handlers/index.js +10 -8
- package/dist/basic-sdk/extension/plugins/table/render/resize-handlers/resize-handler.js +41 -50
- package/dist/basic-sdk/extension/plugins/table/render/table-header/columns-header/column-header.js +30 -29
- package/dist/basic-sdk/extension/plugins/table/render/table-header/columns-header/index.js +21 -33
- package/dist/basic-sdk/extension/plugins/table/render/table-header/index.js +17 -15
- package/dist/basic-sdk/extension/plugins/table/render/table-header/rows-columns-header.js +7 -5
- package/dist/basic-sdk/extension/plugins/table/render/table-header/rows-header/index.js +22 -32
- package/dist/basic-sdk/extension/plugins/table/render/table-header/rows-header/row-header.js +41 -43
- package/dist/basic-sdk/extension/plugins/table/render/table-root.js +16 -20
- package/dist/basic-sdk/extension/plugins/text-align/helpers.js +19 -24
- package/dist/basic-sdk/extension/plugins/text-align/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/text-align/menu/index.js +20 -26
- package/dist/basic-sdk/extension/plugins/text-style/caret.js +9 -7
- package/dist/basic-sdk/extension/plugins/text-style/helpers.js +17 -24
- package/dist/basic-sdk/extension/plugins/text-style/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +38 -37
- package/dist/basic-sdk/extension/plugins/text-style/plugin.js +6 -6
- package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +14 -10
- package/dist/basic-sdk/extension/render/custom-element.js +30 -49
- package/dist/basic-sdk/extension/render/element-decorate/rebase-decorate/index.js +6 -4
- package/dist/basic-sdk/extension/render/element-decorate/rebase-decorate/rebase-delete-modify-decorate.js +13 -10
- package/dist/basic-sdk/extension/render/element-decorate/rebase-decorate/rebase-modify-delete-decorate.js +13 -10
- package/dist/basic-sdk/extension/render/element-decorate/rebase-decorate/rebase-modify-modify-decorate.js +21 -19
- package/dist/basic-sdk/extension/render/render-element.js +5 -3
- package/dist/basic-sdk/extension/render/render-leaf.js +4 -6
- package/dist/basic-sdk/extension/toolbar/context-toolbar/index.js +18 -16
- package/dist/basic-sdk/extension/toolbar/header-toolbar/index.js +5 -3
- package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +29 -29
- package/dist/basic-sdk/extension/toolbar/header-toolbar/redo-undo.js +45 -53
- package/dist/basic-sdk/extension/toolbar/side-toolbar/event.js +8 -8
- package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +45 -49
- package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +50 -72
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-below-menu.js +5 -3
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +25 -26
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +24 -26
- package/dist/basic-sdk/extension/toolbar/side-toolbar/transform-menus.js +14 -16
- package/dist/basic-sdk/extension/utils/index.js +4 -4
- package/dist/basic-sdk/highlight/index.js +8 -13
- package/dist/basic-sdk/highlight/setNodeToDecorations.js +43 -73
- package/dist/basic-sdk/hooks/use-color-context.js +27 -35
- package/dist/basic-sdk/hooks/use-scroll-context.js +6 -4
- package/dist/basic-sdk/hooks/use-selection-element.js +5 -7
- package/dist/basic-sdk/hooks/use-selection-position.js +13 -15
- package/dist/basic-sdk/hooks/use-selection-update.js +6 -11
- package/dist/basic-sdk/layout/article-container.js +20 -23
- package/dist/basic-sdk/layout/editor-container.js +6 -4
- package/dist/basic-sdk/layout/editor-content.js +15 -15
- package/dist/basic-sdk/node-id/constants.js +9 -9
- package/dist/basic-sdk/node-id/helpers.js +44 -29
- package/dist/basic-sdk/node-id/index.js +13 -11
- package/dist/basic-sdk/outline/index.js +24 -27
- package/dist/basic-sdk/outline/outline-item.js +39 -44
- package/dist/basic-sdk/socket/helpers.js +99 -90
- package/dist/basic-sdk/socket/socket-client.js +175 -171
- package/dist/basic-sdk/socket/socket-manager.js +316 -297
- package/dist/basic-sdk/socket/with-socket-io.js +38 -30
- package/dist/basic-sdk/utils/debug.js +4 -4
- package/dist/basic-sdk/utils/diff-text.js +191 -193
- package/dist/basic-sdk/utils/diff.js +115 -106
- package/dist/basic-sdk/utils/document-utils.js +10 -13
- package/dist/basic-sdk/utils/dom-utils.js +18 -16
- package/dist/basic-sdk/utils/event-bus.js +26 -39
- package/dist/basic-sdk/utils/event-handler.js +81 -79
- package/dist/basic-sdk/utils/mouse-event.js +29 -27
- package/dist/basic-sdk/utils/object-utils.js +35 -53
- package/dist/basic-sdk/utils/rebase.js +101 -76
- package/dist/basic-sdk/views/published-revision-diff-viewer.js +19 -22
- package/dist/basic-sdk/views/readonly-article.js +7 -5
- package/dist/basic-sdk/views/revision-diff-viewer.js +15 -18
- package/dist/basic-sdk/views/sdoc-diff-viewer.js +8 -6
- package/dist/basic-sdk/views/sdoc-viewer.js +9 -7
- package/dist/components/common-loading/index.js +1 -1
- package/dist/components/doc-info/index.js +25 -23
- package/dist/components/doc-operations/collaborators-operation/collaborators-popover.js +36 -49
- package/dist/components/doc-operations/collaborators-operation/index.js +58 -76
- package/dist/components/doc-operations/comments-operation/index.js +7 -13
- package/dist/components/doc-operations/history-operation.js +5 -5
- package/dist/components/doc-operations/index.js +10 -9
- package/dist/components/doc-operations/more-operations.js +15 -21
- package/dist/components/doc-operations/revision-operations/changes-count/index.js +15 -16
- package/dist/components/doc-operations/revision-operations/index.js +65 -71
- package/dist/components/doc-operations/revision-operations/more-revision-operations/index.js +13 -17
- package/dist/components/doc-operations/revision-operations/publish-revision/index.js +8 -5
- package/dist/components/doc-operations/revision-operations/revisions/index.js +13 -19
- package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.js +56 -87
- package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/revision-operation/index.js +14 -16
- package/dist/components/doc-operations/revision-operations/view-changes/index.js +25 -32
- package/dist/components/doc-operations/share-operation/index.js +2 -2
- package/dist/components/doc-operations/tag-operation/constans.js +1 -1
- package/dist/components/doc-operations/tag-operation/file-tag-quick-view/index.js +26 -42
- package/dist/components/doc-operations/tag-operation/index.js +1 -1
- package/dist/components/doc-operations/tag-operation/tag-popover/index.js +95 -175
- package/dist/components/doc-operations/tag-operation/utils.js +2 -6
- package/dist/components/draft-dropdown/index.js +44 -53
- package/dist/components/loading/index.js +8 -22
- package/dist/components/modal-portal/index.js +15 -32
- package/dist/components/switch/index.js +8 -6
- package/dist/components/tip-dialog/index.js +21 -23
- package/dist/components/tip-message/index.js +93 -92
- package/dist/components/toast/alert.js +73 -88
- package/dist/components/toast/index.js +1 -1
- package/dist/components/toast/toast.js +76 -103
- package/dist/components/toast/toastManager.js +55 -89
- package/dist/components/toast/toaster.js +54 -56
- package/dist/components/tooltip/index.js +15 -16
- package/dist/constants/index.js +26 -6
- package/dist/constants/transfer-types.js +3 -3
- package/dist/context.js +242 -339
- package/dist/hooks/use-collaborators.js +18 -20
- package/dist/hooks/use-document.js +33 -45
- package/dist/layout/content.js +13 -26
- package/dist/layout/header.js +13 -26
- package/dist/layout/layout.js +11 -9
- package/dist/model/notification.js +10 -11
- package/dist/model/revision.js +27 -28
- package/dist/model/user.js +10 -11
- package/dist/pages/error-boundary.js +18 -36
- package/dist/pages/error-page.js +14 -26
- package/dist/pages/published-revision-viewer.js +23 -35
- package/dist/pages/simple-editor.js +39 -46
- package/dist/pages/simple-viewer.js +70 -104
- package/dist/utils/date-utils.js +67 -81
- package/dist/utils/get-event-transfer.js +13 -15
- package/dist/utils/hotkey.js +24 -24
- package/dist/utils/index.js +20 -20
- package/dist/utils/local-storage-utils.js +41 -58
- package/package.json +10 -10
- package/public/locales/cs/sdoc-editor.json +3 -1
- package/public/locales/de/sdoc-editor.json +3 -1
- package/public/locales/en/sdoc-editor.json +1 -0
- package/public/locales/es/sdoc-editor.json +3 -1
- package/public/locales/fr/sdoc-editor.json +3 -1
- package/public/locales/it/sdoc-editor.json +3 -1
- package/public/locales/ru/sdoc-editor.json +3 -1
- package/public/locales/zh_CN/sdoc-editor.json +1 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
2
|
import { ReactEditor } from '@seafile/slate-react';
|
|
4
3
|
import { Editor, Transforms, Range, Text } from '@seafile/slate';
|
|
5
4
|
import slugid from 'slugid';
|
|
@@ -7,12 +6,14 @@ import copy from 'copy-to-clipboard';
|
|
|
7
6
|
import context from '../../../../context';
|
|
8
7
|
import { SDOC_LINK, LINK, INSERT_FILE_DISPLAY_TYPE, CODE_BLOCK, CODE_LINE, PARAGRAPH } from '../../constants';
|
|
9
8
|
import { focusEditor, getNodeType, getSelectedElems } from '../../core';
|
|
10
|
-
export
|
|
9
|
+
export const isMenuDisabled = (editor, readonly) => {
|
|
11
10
|
if (readonly) return true;
|
|
12
11
|
if (editor.selection == null) return true;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const selectedElems = getSelectedElems(editor);
|
|
13
|
+
const notMatch = selectedElems.some(elem => {
|
|
14
|
+
const {
|
|
15
|
+
type
|
|
16
|
+
} = elem;
|
|
16
17
|
if (editor.isVoid(elem)) return true;
|
|
17
18
|
if ([CODE_BLOCK, CODE_LINE, LINK].includes(type)) return true;
|
|
18
19
|
return false;
|
|
@@ -21,8 +22,8 @@ export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
|
|
|
21
22
|
return false; // enable
|
|
22
23
|
};
|
|
23
24
|
|
|
24
|
-
export
|
|
25
|
-
|
|
25
|
+
export const generateSdocFileNode = (uuid, text) => {
|
|
26
|
+
const sdocFileNode = {
|
|
26
27
|
id: slugid.nice(),
|
|
27
28
|
type: SDOC_LINK,
|
|
28
29
|
doc_uuid: uuid,
|
|
@@ -35,33 +36,30 @@ export var generateSdocFileNode = function generateSdocFileNode(uuid, text) {
|
|
|
35
36
|
};
|
|
36
37
|
return sdocFileNode;
|
|
37
38
|
};
|
|
38
|
-
export
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
universal: true
|
|
44
|
-
}),
|
|
45
|
-
_Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
|
|
46
|
-
match = _Editor$nodes2[0];
|
|
39
|
+
export const getType = editor => {
|
|
40
|
+
const [match] = Editor.nodes(editor, {
|
|
41
|
+
match: n => getNodeType(n) === LINK,
|
|
42
|
+
universal: true
|
|
43
|
+
});
|
|
47
44
|
if (!match) return PARAGRAPH;
|
|
48
|
-
|
|
49
|
-
n = _match[0];
|
|
45
|
+
const [n] = match;
|
|
50
46
|
return getNodeType(n);
|
|
51
47
|
};
|
|
52
|
-
export
|
|
48
|
+
export const insertSdocFileLink = (editor, text, uuid) => {
|
|
53
49
|
if (isMenuDisabled(editor)) return;
|
|
54
50
|
// Selection folded or not
|
|
55
|
-
|
|
51
|
+
const {
|
|
52
|
+
selection
|
|
53
|
+
} = editor;
|
|
56
54
|
if (selection == null) return;
|
|
57
|
-
|
|
55
|
+
const isCollapsed = Range.isCollapsed(selection);
|
|
58
56
|
|
|
59
57
|
// Remove shortcut symbol,if trigger by shortcut
|
|
60
58
|
removeShortCutSymbol(editor);
|
|
61
59
|
if (isCollapsed) {
|
|
62
60
|
// Insert Spaces before and after sdoclinks for easy operation
|
|
63
61
|
editor.insertText(' ');
|
|
64
|
-
|
|
62
|
+
const sdocFileNode = generateSdocFileNode(uuid, text);
|
|
65
63
|
Transforms.insertNodes(editor, sdocFileNode);
|
|
66
64
|
|
|
67
65
|
// Not being able to use insertText directly causes the added Spaces to be added to the linked text, as in the issue above, replaced by insertFragment
|
|
@@ -70,16 +68,16 @@ export var insertSdocFileLink = function insertSdocFileLink(editor, text, uuid)
|
|
|
70
68
|
text: ' '
|
|
71
69
|
}]);
|
|
72
70
|
} else {
|
|
73
|
-
|
|
71
|
+
const selectedText = Editor.string(editor, selection); // Selected text
|
|
74
72
|
if (selectedText !== text) {
|
|
75
73
|
// If the selected text is different from the typed text, delete the text and insert the link
|
|
76
74
|
editor.deleteFragment();
|
|
77
|
-
|
|
78
|
-
Transforms.insertNodes(editor,
|
|
75
|
+
const sdocFileNode = generateSdocFileNode(uuid, text);
|
|
76
|
+
Transforms.insertNodes(editor, sdocFileNode);
|
|
79
77
|
} else {
|
|
80
78
|
// If the selected text is the same as the entered text, only the link can be wrapped
|
|
81
|
-
|
|
82
|
-
Transforms.wrapNodes(editor,
|
|
79
|
+
const sdocFileNode = generateSdocFileNode(uuid, text);
|
|
80
|
+
Transforms.wrapNodes(editor, sdocFileNode, {
|
|
83
81
|
split: true
|
|
84
82
|
});
|
|
85
83
|
Transforms.collapse(editor, {
|
|
@@ -88,17 +86,17 @@ export var insertSdocFileLink = function insertSdocFileLink(editor, text, uuid)
|
|
|
88
86
|
}
|
|
89
87
|
}
|
|
90
88
|
};
|
|
91
|
-
export
|
|
89
|
+
export const unwrapLinkNode = (editor, element) => {
|
|
92
90
|
if (editor.selection == null) return;
|
|
93
|
-
|
|
91
|
+
const path = ReactEditor.findPath(editor, element);
|
|
94
92
|
if (path) {
|
|
95
93
|
Transforms.unwrapNodes(editor, {
|
|
96
94
|
at: path
|
|
97
95
|
});
|
|
98
96
|
}
|
|
99
97
|
};
|
|
100
|
-
export
|
|
101
|
-
fileListData.forEach(
|
|
98
|
+
export const getNewFileListData = (fileListData, indexId, children) => {
|
|
99
|
+
fileListData.forEach(item => {
|
|
102
100
|
if (item.indexId === indexId) {
|
|
103
101
|
item.children = children;
|
|
104
102
|
}
|
|
@@ -108,65 +106,68 @@ export var getNewFileListData = function getNewFileListData(fileListData, indexI
|
|
|
108
106
|
});
|
|
109
107
|
return fileListData;
|
|
110
108
|
};
|
|
111
|
-
export
|
|
109
|
+
export const getUrl = uuid => {
|
|
112
110
|
return context.getSdocLocalFileUrl(uuid);
|
|
113
111
|
};
|
|
114
|
-
export
|
|
112
|
+
export const onCopySdocLinkNode = (editor, element) => {
|
|
115
113
|
if (editor.selection == null || Range.isExpanded(editor.selection)) return;
|
|
116
|
-
|
|
114
|
+
const p = ReactEditor.findPath(editor, element);
|
|
117
115
|
Transforms.select(editor, p);
|
|
118
|
-
|
|
116
|
+
const newData = editor.setFragmentData(new DataTransfer());
|
|
119
117
|
copy('copy', {
|
|
120
|
-
onCopy:
|
|
121
|
-
newData.types.forEach(
|
|
122
|
-
|
|
118
|
+
onCopy: clipboardData => {
|
|
119
|
+
newData.types.forEach(type => {
|
|
120
|
+
const data = newData.getData(type);
|
|
123
121
|
clipboardData.setData(type, data);
|
|
124
122
|
});
|
|
125
123
|
}
|
|
126
124
|
});
|
|
127
125
|
};
|
|
128
|
-
export
|
|
129
|
-
|
|
126
|
+
export const getBeforeText = editor => {
|
|
127
|
+
const {
|
|
128
|
+
selection
|
|
129
|
+
} = editor;
|
|
130
130
|
if (selection == null) return {
|
|
131
131
|
beforeText: '',
|
|
132
132
|
range: null
|
|
133
133
|
};
|
|
134
|
-
|
|
134
|
+
const {
|
|
135
|
+
anchor
|
|
136
|
+
} = selection;
|
|
135
137
|
// Find the near text node above the current text
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
_Editor$nodes4$ = _slicedToArray(_Editor$nodes4[0], 2),
|
|
144
|
-
beforeNodePath = _Editor$nodes4$[1];
|
|
145
|
-
var beforeNodeStartPoint = Editor.start(editor, beforeNodePath); // The starting position of the text node
|
|
146
|
-
var range = {
|
|
147
|
-
anchor: anchor,
|
|
138
|
+
const [[, beforeNodePath]] = Editor.nodes(editor, {
|
|
139
|
+
match: node => Text.isText(node),
|
|
140
|
+
mode: 'lowest'
|
|
141
|
+
});
|
|
142
|
+
const beforeNodeStartPoint = Editor.start(editor, beforeNodePath); // The starting position of the text node
|
|
143
|
+
const range = {
|
|
144
|
+
anchor,
|
|
148
145
|
focus: beforeNodeStartPoint
|
|
149
146
|
};
|
|
150
|
-
|
|
147
|
+
const beforeText = Editor.string(editor, range) || '';
|
|
151
148
|
return {
|
|
152
|
-
beforeText
|
|
153
|
-
range
|
|
149
|
+
beforeText,
|
|
150
|
+
range
|
|
154
151
|
};
|
|
155
152
|
};
|
|
156
|
-
export
|
|
157
|
-
|
|
158
|
-
beforeText
|
|
153
|
+
export const isTriggeredByShortCut = editor => {
|
|
154
|
+
const {
|
|
155
|
+
beforeText
|
|
156
|
+
} = getBeforeText(editor);
|
|
159
157
|
return beforeText.slice(-2) === '[[';
|
|
160
158
|
};
|
|
161
159
|
|
|
162
160
|
// If insert operation is triggered by shortcut, remove the '[[' symbol
|
|
163
|
-
export
|
|
161
|
+
export const removeShortCutSymbol = editor => {
|
|
164
162
|
// Check is trigger by short cut
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
163
|
+
const {
|
|
164
|
+
selection
|
|
165
|
+
} = editor;
|
|
166
|
+
const {
|
|
167
|
+
beforeText,
|
|
168
|
+
range: beforeRange
|
|
169
|
+
} = getBeforeText(editor);
|
|
170
|
+
const isTrrigeredByShortCut = beforeText.slice(-3) === '[[ ';
|
|
170
171
|
isTrrigeredByShortCut && Transforms.delete(editor, {
|
|
171
172
|
at: {
|
|
172
173
|
anchor: {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
1
|
import React, { useCallback, useState } from 'react';
|
|
3
2
|
import { Transforms } from '@seafile/slate';
|
|
4
3
|
import { ReactEditor, useReadOnly } from '@seafile/slate-react';
|
|
@@ -9,19 +8,18 @@ import { ElementPopover } from '../../../commons';
|
|
|
9
8
|
import toaster from '../../../../../components/toast';
|
|
10
9
|
import { getUrl, onCopySdocLinkNode } from '../helpers';
|
|
11
10
|
import './index.css';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
var onCopy = useCallback(function (e) {
|
|
11
|
+
const SdocLinkHoverMenu = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
editor,
|
|
14
|
+
menuPosition,
|
|
15
|
+
element,
|
|
16
|
+
onUnwrapFileLinkNode,
|
|
17
|
+
onHideInsertHoverMenu,
|
|
18
|
+
t
|
|
19
|
+
} = _ref;
|
|
20
|
+
const readOnly = useReadOnly();
|
|
21
|
+
const [isShowDisplayStylePopover, setIsShowDisplayStylePopover] = useState(false);
|
|
22
|
+
const onCopy = useCallback(e => {
|
|
25
23
|
e.stopPropagation();
|
|
26
24
|
onCopySdocLinkNode(editor, element);
|
|
27
25
|
toaster.success(t('Copied'), {
|
|
@@ -31,12 +29,12 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
31
29
|
onHideInsertHoverMenu();
|
|
32
30
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33
31
|
}, []);
|
|
34
|
-
|
|
32
|
+
const onShowProver = useCallback(e => {
|
|
35
33
|
setIsShowDisplayStylePopover(true);
|
|
36
34
|
}, []);
|
|
37
|
-
|
|
35
|
+
const onSelect = useCallback((event, value) => {
|
|
38
36
|
event.stopPropagation();
|
|
39
|
-
|
|
37
|
+
const path = ReactEditor.findPath(editor, element);
|
|
40
38
|
if (path) {
|
|
41
39
|
Transforms.setNodes(editor, {
|
|
42
40
|
display_type: value
|
|
@@ -47,8 +45,8 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
47
45
|
onHideInsertHoverMenu();
|
|
48
46
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
49
47
|
}, []);
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
const selectedType = element.display_type || SDOC_LINK_TYPE.TEXT_LINK;
|
|
49
|
+
const id = "sdoc-link-display-type-".concat(element.id);
|
|
52
50
|
return /*#__PURE__*/React.createElement(ElementPopover, null, /*#__PURE__*/React.createElement("div", {
|
|
53
51
|
className: "sdoc-link-hover-menu-container",
|
|
54
52
|
style: menuPosition
|
|
@@ -91,14 +89,12 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
91
89
|
className: "sdocfont sdoc-unlink icon-font"
|
|
92
90
|
})))), isShowDisplayStylePopover && /*#__PURE__*/React.createElement("div", {
|
|
93
91
|
className: "sdoc-file-display-style-popover sdoc-dropdown-menu"
|
|
94
|
-
}, SDOC_LINK_TYPES.map(
|
|
92
|
+
}, SDOC_LINK_TYPES.map(sdocLinkType => {
|
|
95
93
|
return /*#__PURE__*/React.createElement("div", {
|
|
96
94
|
key: sdocLinkType,
|
|
97
95
|
"date-type": sdocLinkType,
|
|
98
96
|
className: "sdoc-dropdown-menu-item sdoc-dropdown-item-with-left-icon pr-2",
|
|
99
|
-
onClick:
|
|
100
|
-
return onSelect(event, sdocLinkType);
|
|
101
|
-
}
|
|
97
|
+
onClick: event => onSelect(event, sdocLinkType)
|
|
102
98
|
}, /*#__PURE__*/React.createElement("div", {
|
|
103
99
|
className: "sdoc-dropdown-item-content"
|
|
104
100
|
}, /*#__PURE__*/React.createElement("i", {
|
|
@@ -2,7 +2,7 @@ import { SDOC_LINK } from '../../constants';
|
|
|
2
2
|
import SdocLinkMenu from './menu';
|
|
3
3
|
import withSdocLink from './plugin';
|
|
4
4
|
import renderSdocLink from './render-elem';
|
|
5
|
-
|
|
5
|
+
const SdocLinkPlugin = {
|
|
6
6
|
type: SDOC_LINK,
|
|
7
7
|
editorMenus: [SdocLinkMenu],
|
|
8
8
|
editorPlugin: withSdocLink,
|
|
@@ -3,14 +3,16 @@ import { SDOC_LINK, MENUS_CONFIG_MAP, ELEMENT_TYPE } from '../../../constants';
|
|
|
3
3
|
import { isMenuDisabled, insertSdocFileLink } from '../helpers';
|
|
4
4
|
import DropdownMenuItem from '../../../commons/dropdown-menu-item';
|
|
5
5
|
import { INTERNAL_EVENT } from '../../../../constants';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
const SdocLinkMenu = _ref => {
|
|
7
|
+
let {
|
|
8
|
+
editor,
|
|
9
|
+
readonly,
|
|
10
|
+
toggle,
|
|
11
|
+
eventBus
|
|
12
|
+
} = _ref;
|
|
13
|
+
const disabled = isMenuDisabled(editor, readonly);
|
|
14
|
+
const menuConfig = MENUS_CONFIG_MAP[SDOC_LINK];
|
|
15
|
+
const openSelectSdocFileDialog = useCallback(() => {
|
|
14
16
|
eventBus.dispatch(INTERNAL_EVENT.INSERT_ELEMENT, {
|
|
15
17
|
type: ELEMENT_TYPE.SDOC_LINK,
|
|
16
18
|
insertSdocFileLinkCallback: insertSdocFileLink
|
|
@@ -3,32 +3,38 @@ import { ELEMENT_TYPE, SDOC_LINK } from '../../constants';
|
|
|
3
3
|
import EventBus from '../../../utils/event-bus';
|
|
4
4
|
import { INTERNAL_EVENT } from '../../../constants';
|
|
5
5
|
import { insertSdocFileLink, isTriggeredByShortCut } from './helpers';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const withSdocLink = editor => {
|
|
7
|
+
const {
|
|
8
|
+
isInline,
|
|
9
|
+
deleteBackward,
|
|
10
|
+
onHotKeyDown
|
|
11
|
+
} = editor;
|
|
12
|
+
const newEditor = editor;
|
|
11
13
|
|
|
12
14
|
// Rewrite isInline
|
|
13
|
-
newEditor.isInline =
|
|
14
|
-
|
|
15
|
+
newEditor.isInline = elem => {
|
|
16
|
+
const {
|
|
17
|
+
type
|
|
18
|
+
} = elem;
|
|
15
19
|
if (type === SDOC_LINK) {
|
|
16
20
|
return true;
|
|
17
21
|
}
|
|
18
22
|
return isInline(elem);
|
|
19
23
|
};
|
|
20
|
-
newEditor.deleteBackward =
|
|
21
|
-
|
|
24
|
+
newEditor.deleteBackward = unit => {
|
|
25
|
+
const {
|
|
26
|
+
selection
|
|
27
|
+
} = newEditor;
|
|
22
28
|
if (selection === null) {
|
|
23
29
|
return deleteBackward(unit);
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
// Delete file link node
|
|
27
|
-
|
|
33
|
+
const nodeEntry = Editor.node(newEditor, newEditor.selection);
|
|
28
34
|
if (nodeEntry && Node.string(nodeEntry[0]).length === 0) {
|
|
29
|
-
|
|
35
|
+
const beforePath = nodeEntry[1];
|
|
30
36
|
beforePath.splice(-1, 1, Math.max(nodeEntry[1].at(-1) - 1, 0));
|
|
31
|
-
|
|
37
|
+
const beforeNodeEntry = Editor.node(newEditor, beforePath);
|
|
32
38
|
if (beforeNodeEntry && beforeNodeEntry[0].type === SDOC_LINK) {
|
|
33
39
|
Transforms.delete(newEditor, {
|
|
34
40
|
at: beforeNodeEntry[1]
|
|
@@ -39,11 +45,13 @@ var withSdocLink = function withSdocLink(editor) {
|
|
|
39
45
|
}
|
|
40
46
|
return deleteBackward(unit);
|
|
41
47
|
};
|
|
42
|
-
newEditor.onHotKeyDown =
|
|
43
|
-
|
|
48
|
+
newEditor.onHotKeyDown = event => {
|
|
49
|
+
const {
|
|
50
|
+
key
|
|
51
|
+
} = event;
|
|
44
52
|
if (key !== ' ') return onHotKeyDown && onHotKeyDown(event);
|
|
45
53
|
// If user press whitespace after '[[', open file modal
|
|
46
|
-
|
|
54
|
+
const eventBus = EventBus.getInstance();
|
|
47
55
|
if (isTriggeredByShortCut(newEditor)) {
|
|
48
56
|
eventBus.dispatch(INTERNAL_EVENT.INSERT_ELEMENT, {
|
|
49
57
|
type: ELEMENT_TYPE.SDOC_LINK,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
2
|
import React, { useCallback, useEffect, useState, useRef } from 'react';
|
|
4
3
|
import { Range } from '@seafile/slate';
|
|
5
4
|
import { useReadOnly } from '@seafile/slate-react';
|
|
@@ -9,44 +8,41 @@ import HoverMenu from './hover-menu';
|
|
|
9
8
|
import { DELETED_STYLE, ADDED_STYLE } from '../../constants';
|
|
10
9
|
import { SDOC_LINK_TYPE } from './constants';
|
|
11
10
|
import './render-elem.css';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
menuPosition = _useState4[0],
|
|
26
|
-
setMenuPosition = _useState4[1];
|
|
27
|
-
var readOnly = useReadOnly();
|
|
28
|
-
var registerEventHandle = useCallback(function () {
|
|
11
|
+
const SdocFileLink = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
editor,
|
|
14
|
+
element,
|
|
15
|
+
children,
|
|
16
|
+
attributes
|
|
17
|
+
} = _ref;
|
|
18
|
+
const sdocFileRef = useRef(null);
|
|
19
|
+
const scrollRef = useScrollContext();
|
|
20
|
+
const [isShowInsertHoverMenu, setIsShowInsertHoverMenu] = useState(false);
|
|
21
|
+
const [menuPosition, setMenuPosition] = useState({});
|
|
22
|
+
const readOnly = useReadOnly();
|
|
23
|
+
const registerEventHandle = useCallback(() => {
|
|
29
24
|
document.addEventListener('click', onHideInsertHoverMenu);
|
|
30
25
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31
26
|
}, []);
|
|
32
|
-
|
|
27
|
+
const unregisterEventHandle = useCallback(() => {
|
|
33
28
|
document.removeEventListener('click', onHideInsertHoverMenu);
|
|
34
29
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35
30
|
}, []);
|
|
36
|
-
useEffect(
|
|
37
|
-
return
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
return () => {
|
|
38
33
|
unregisterEventHandle();
|
|
39
34
|
};
|
|
40
35
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
36
|
}, []);
|
|
42
|
-
|
|
37
|
+
const setPosition = useCallback(elem => {
|
|
43
38
|
if (elem) {
|
|
44
|
-
|
|
45
|
-
top
|
|
46
|
-
left
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
const {
|
|
40
|
+
top,
|
|
41
|
+
left
|
|
42
|
+
} = elem.getBoundingClientRect();
|
|
43
|
+
const menuTop = top - 42; // top = top distance - menu height
|
|
44
|
+
const menuLeft = left - 18; // left = left distance - (menu width / 2)
|
|
45
|
+
const newMenuPosition = {
|
|
50
46
|
top: menuTop,
|
|
51
47
|
left: menuLeft
|
|
52
48
|
};
|
|
@@ -54,44 +50,44 @@ var SdocFileLink = function SdocFileLink(_ref) {
|
|
|
54
50
|
}
|
|
55
51
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
56
52
|
}, []);
|
|
57
|
-
|
|
53
|
+
const onScroll = useCallback(e => {
|
|
58
54
|
setPosition(sdocFileRef.current);
|
|
59
55
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
60
56
|
}, []);
|
|
61
|
-
useEffect(
|
|
62
|
-
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
let observerRefValue = null;
|
|
63
59
|
if (isShowInsertHoverMenu) {
|
|
64
60
|
scrollRef.current && scrollRef.current.addEventListener('scroll', onScroll);
|
|
65
61
|
observerRefValue = scrollRef.current;
|
|
66
62
|
} else {
|
|
67
63
|
scrollRef.current && scrollRef.current.removeEventListener('scroll', onScroll);
|
|
68
64
|
}
|
|
69
|
-
return
|
|
65
|
+
return () => {
|
|
70
66
|
if (observerRefValue) {
|
|
71
67
|
observerRefValue.removeEventListener('scroll', onScroll);
|
|
72
68
|
}
|
|
73
69
|
};
|
|
74
70
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
75
71
|
}, [isShowInsertHoverMenu]);
|
|
76
|
-
|
|
72
|
+
const onClickFile = useCallback(e => {
|
|
77
73
|
e.stopPropagation();
|
|
78
74
|
setPosition(e.currentTarget);
|
|
79
75
|
setIsShowInsertHoverMenu(true);
|
|
80
|
-
setTimeout(
|
|
76
|
+
setTimeout(() => {
|
|
81
77
|
registerEventHandle();
|
|
82
78
|
}, 0);
|
|
83
79
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
84
80
|
}, []);
|
|
85
|
-
|
|
81
|
+
const onHideInsertHoverMenu = useCallback(e => {
|
|
86
82
|
setIsShowInsertHoverMenu(false);
|
|
87
83
|
unregisterEventHandle();
|
|
88
84
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
89
85
|
}, []);
|
|
90
|
-
|
|
86
|
+
const onUnwrapFileLinkNode = useCallback(() => {
|
|
91
87
|
unwrapLinkNode(editor, element);
|
|
92
88
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
93
89
|
}, []);
|
|
94
|
-
|
|
90
|
+
let style = {};
|
|
95
91
|
if (element.ADD) {
|
|
96
92
|
style = _objectSpread({}, ADDED_STYLE);
|
|
97
93
|
} else if (element.DELETE) {
|
|
@@ -118,7 +114,7 @@ var SdocFileLink = function SdocFileLink(_ref) {
|
|
|
118
114
|
style: style
|
|
119
115
|
}, /*#__PURE__*/React.createElement("a", {
|
|
120
116
|
href: getUrl(element.doc_uuid),
|
|
121
|
-
onClick:
|
|
117
|
+
onClick: e => {
|
|
122
118
|
e.preventDefault();
|
|
123
119
|
},
|
|
124
120
|
title: element.title
|
|
@@ -130,7 +126,7 @@ var SdocFileLink = function SdocFileLink(_ref) {
|
|
|
130
126
|
onHideInsertHoverMenu: onHideInsertHoverMenu
|
|
131
127
|
}));
|
|
132
128
|
};
|
|
133
|
-
|
|
129
|
+
const renderSdocLink = (props, editor) => {
|
|
134
130
|
return /*#__PURE__*/React.createElement(SdocFileLink, Object.assign({}, props, {
|
|
135
131
|
editor: editor
|
|
136
132
|
}));
|
|
@@ -1,35 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export var TABLE_MAX_COLUMNS = 50;
|
|
5
|
-
export var EMPTY_SELECTED_RANGE = {
|
|
1
|
+
export const TABLE_MAX_ROWS = 50;
|
|
2
|
+
export const TABLE_MAX_COLUMNS = 50;
|
|
3
|
+
export const EMPTY_SELECTED_RANGE = {
|
|
6
4
|
minRowIndex: -1,
|
|
7
5
|
maxRowIndex: -1,
|
|
8
6
|
minColIndex: -1,
|
|
9
7
|
maxColIndex: -1
|
|
10
8
|
};
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export
|
|
9
|
+
export const TABLE_ROW_MIN_HEIGHT = 42;
|
|
10
|
+
export const TABLE_CELL_MIN_WIDTH = 35;
|
|
11
|
+
export const TABLE_ELEMENT = {
|
|
14
12
|
TABLE: 'table',
|
|
15
13
|
ROW: 'row',
|
|
16
14
|
COLUMN: 'column',
|
|
17
15
|
CELL: 'cell'
|
|
18
16
|
};
|
|
19
|
-
export
|
|
20
|
-
|
|
17
|
+
export const TABLE_ELEMENT_SPAN = {
|
|
18
|
+
[TABLE_ELEMENT.TABLE]: 'table',
|
|
19
|
+
[TABLE_ELEMENT.ROW]: 'tr',
|
|
20
|
+
[TABLE_ELEMENT.CELL]: 'td'
|
|
21
|
+
};
|
|
22
|
+
export const TABLE_ELEMENT_POSITION = {
|
|
21
23
|
AFTER: 'after',
|
|
22
24
|
BEFORE: 'before'
|
|
23
25
|
};
|
|
24
|
-
export
|
|
25
|
-
export
|
|
26
|
+
export const SELECTED_TABLE_CELL_BACKGROUND_COLOR = '#dee8fe';
|
|
27
|
+
export const TABLE_CELL_STYLE = {
|
|
26
28
|
TEXT_ALIGN: 'text_align',
|
|
27
29
|
BACKGROUND_COLOR: 'background_color'
|
|
28
30
|
};
|
|
29
|
-
export
|
|
31
|
+
export const TABLE_ROW_STYLE = {
|
|
30
32
|
MIN_HEIGHT: 'min_height'
|
|
31
33
|
};
|
|
32
|
-
export
|
|
34
|
+
export const TABLE_ALTERNATE_HIGHLIGHT_CLASS_MAP = {
|
|
33
35
|
'#3f495d': 'sdoc-table-3f495d',
|
|
34
36
|
'#2367f2': 'sdoc-table-2367f2',
|
|
35
37
|
'#f77d21': 'sdoc-table-f77d21',
|