@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
|
@@ -17,8 +17,8 @@ import 'prismjs/components/prism-ruby';
|
|
|
17
17
|
import 'prismjs/components/prism-swift';
|
|
18
18
|
import 'prismjs/components/prism-bash';
|
|
19
19
|
import 'prismjs/components/prism-lua';
|
|
20
|
-
|
|
21
|
-
export
|
|
20
|
+
const newlineRe = /\r\n|\r|\n/;
|
|
21
|
+
export const genCodeLangs = () => {
|
|
22
22
|
return [{
|
|
23
23
|
text: 'Plain Text',
|
|
24
24
|
value: 'plaintext'
|
|
@@ -72,9 +72,9 @@ export var genCodeLangs = function genCodeLangs() {
|
|
|
72
72
|
value: 'xml'
|
|
73
73
|
}];
|
|
74
74
|
};
|
|
75
|
-
export
|
|
76
|
-
'php':
|
|
77
|
-
tokens.forEach(
|
|
75
|
+
export const normalizeTokensByLanguageType = {
|
|
76
|
+
'php': tokens => {
|
|
77
|
+
tokens.forEach(token => {
|
|
78
78
|
if (['<?', '?>'].includes(token.content)) {
|
|
79
79
|
token.type = 'operator';
|
|
80
80
|
token.alias = '';
|
|
@@ -83,7 +83,7 @@ export var normalizeTokensByLanguageType = {
|
|
|
83
83
|
return tokens;
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
|
-
|
|
86
|
+
const normalizeEmptyLines = line => {
|
|
87
87
|
if (line.length === 0) {
|
|
88
88
|
line.push({
|
|
89
89
|
types: ['plain'],
|
|
@@ -95,28 +95,28 @@ var normalizeEmptyLines = function normalizeEmptyLines(line) {
|
|
|
95
95
|
line[0].empty = true;
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
const appendTypes = (types, add) => {
|
|
99
|
+
const typesSize = types.length;
|
|
100
100
|
if (typesSize > 0 && types[typesSize - 1] === add) {
|
|
101
101
|
return types;
|
|
102
102
|
}
|
|
103
103
|
return types.concat(add);
|
|
104
104
|
};
|
|
105
|
-
export
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
105
|
+
export const normalizeTokens = tokens => {
|
|
106
|
+
const typeArrStack = [[]];
|
|
107
|
+
const tokenArrStack = [tokens];
|
|
108
|
+
const tokenArrIndexStack = [0];
|
|
109
|
+
const tokenArrSizeStack = [tokens.length];
|
|
110
|
+
let i = 0;
|
|
111
|
+
let stackIndex = 0;
|
|
112
|
+
let currentLine = [];
|
|
113
|
+
const acc = [currentLine];
|
|
114
114
|
while (stackIndex > -1) {
|
|
115
115
|
while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
let content;
|
|
117
|
+
let types = typeArrStack[stackIndex];
|
|
118
|
+
const tokenArr = tokenArrStack[stackIndex];
|
|
119
|
+
const token = tokenArr[i];
|
|
120
120
|
|
|
121
121
|
// Determine content and append type to types if necessary
|
|
122
122
|
if (typeof token === 'string') {
|
|
@@ -141,20 +141,20 @@ export var normalizeTokens = function normalizeTokens(tokens) {
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
// Split by newlines
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
const splitByNewlines = content.split(newlineRe);
|
|
145
|
+
const newlineCount = splitByNewlines.length;
|
|
146
146
|
currentLine.push({
|
|
147
|
-
types
|
|
147
|
+
types,
|
|
148
148
|
content: splitByNewlines[0]
|
|
149
149
|
});
|
|
150
150
|
|
|
151
151
|
// Create a new line for each string on a new line
|
|
152
|
-
for (
|
|
152
|
+
for (let i = 1; i < newlineCount; i++) {
|
|
153
153
|
normalizeEmptyLines(currentLine);
|
|
154
154
|
acc.push(currentLine = []);
|
|
155
155
|
currentLine.push({
|
|
156
|
-
types
|
|
157
|
-
content: splitByNewlines[
|
|
156
|
+
types,
|
|
157
|
+
content: splitByNewlines[i]
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
}
|
|
@@ -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 { ReactEditor, useReadOnly } from '@seafile/slate-react';
|
|
5
4
|
import { Transforms } from '@seafile/slate';
|
|
@@ -10,43 +9,44 @@ import CodeBlockHoverMenu from './hover-menu';
|
|
|
10
9
|
import { setClipboardCodeBlockData } from './helpers';
|
|
11
10
|
import { INTERNAL_EVENT } from '../../../constants';
|
|
12
11
|
import '../../../assets/css/code-block.css';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
12
|
+
const CodeBlock = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
attributes,
|
|
15
|
+
children,
|
|
16
|
+
element,
|
|
17
|
+
editor
|
|
18
|
+
} = _ref;
|
|
19
|
+
const readOnly = useReadOnly();
|
|
20
|
+
const codeBlockRef = useRef();
|
|
21
|
+
const scrollRef = useScrollContext();
|
|
22
|
+
const {
|
|
23
|
+
style = {
|
|
23
24
|
white_space: 'nowrap'
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
var path = ReactEditor.findPath(editor, element);
|
|
25
|
+
}
|
|
26
|
+
} = element;
|
|
27
|
+
const {
|
|
28
|
+
white_space
|
|
29
|
+
} = style;
|
|
30
|
+
const [menuPosition, setMenuPosition] = useState({
|
|
31
|
+
top: '',
|
|
32
|
+
left: ''
|
|
33
|
+
});
|
|
34
|
+
const [showHoverMenu, setShowHoverMenu] = useState(false);
|
|
35
|
+
const onChangeLanguage = useCallback(lang => {
|
|
36
|
+
const {
|
|
37
|
+
value: language
|
|
38
|
+
} = lang;
|
|
39
|
+
const path = ReactEditor.findPath(editor, element);
|
|
40
40
|
Transforms.setNodes(editor, {
|
|
41
|
-
language
|
|
41
|
+
language
|
|
42
42
|
}, {
|
|
43
43
|
at: path
|
|
44
44
|
});
|
|
45
45
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
46
46
|
}, []);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
const onChangeAutoLineWrap = useCallback(autoWrap => {
|
|
48
|
+
const path = ReactEditor.findPath(editor, element);
|
|
49
|
+
const newStyle = _objectSpread(_objectSpread({}, style), {}, {
|
|
50
50
|
white_space: autoWrap
|
|
51
51
|
});
|
|
52
52
|
Transforms.setNodes(editor, {
|
|
@@ -56,12 +56,12 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
56
56
|
});
|
|
57
57
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
58
|
}, []);
|
|
59
|
-
|
|
59
|
+
const onCopyCodeBlock = useCallback(() => {
|
|
60
60
|
setClipboardCodeBlockData(element);
|
|
61
61
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
62
62
|
}, [element]);
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
const onDeleteCodeBlock = useCallback(() => {
|
|
64
|
+
const path = ReactEditor.findPath(editor, element);
|
|
65
65
|
Transforms.removeNodes(editor, {
|
|
66
66
|
at: path
|
|
67
67
|
});
|
|
@@ -69,14 +69,15 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
69
69
|
Transforms.select(editor, editor.selection);
|
|
70
70
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
71
71
|
}, []);
|
|
72
|
-
|
|
72
|
+
const onFocusCodeBlock = useCallback(e => {
|
|
73
73
|
if (readOnly) return;
|
|
74
74
|
if (codeBlockRef.current) {
|
|
75
|
-
|
|
76
|
-
top
|
|
77
|
-
left
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
const {
|
|
76
|
+
top,
|
|
77
|
+
left
|
|
78
|
+
} = codeBlockRef.current.getBoundingClientRect();
|
|
79
|
+
const menuTop = top - 42; // top = top distance - menu height
|
|
80
|
+
const newMenuPosition = {
|
|
80
81
|
top: menuTop,
|
|
81
82
|
left: left // left = code-block left distance
|
|
82
83
|
};
|
|
@@ -86,20 +87,21 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
86
87
|
setShowHoverMenu(true);
|
|
87
88
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
89
|
}, []);
|
|
89
|
-
|
|
90
|
+
const onMouseLeave = useCallback(e => {
|
|
90
91
|
if (readOnly) return;
|
|
91
92
|
setShowHoverMenu(false);
|
|
92
93
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
93
94
|
}, []);
|
|
94
|
-
|
|
95
|
+
const onScroll = useCallback(e => {
|
|
95
96
|
if (readOnly) return;
|
|
96
97
|
if (!showHoverMenu) return;
|
|
97
98
|
if (e.currentTarget.scrollTop) {
|
|
98
|
-
|
|
99
|
-
top
|
|
100
|
-
left
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
const {
|
|
100
|
+
top,
|
|
101
|
+
left
|
|
102
|
+
} = codeBlockRef.current.getBoundingClientRect();
|
|
103
|
+
const menuTop = top - 42; // top = top distance - menu height
|
|
104
|
+
const newMenuPosition = {
|
|
103
105
|
top: menuTop,
|
|
104
106
|
left: left // left = code-block left distance
|
|
105
107
|
};
|
|
@@ -107,24 +109,24 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
107
109
|
setMenuPosition(newMenuPosition);
|
|
108
110
|
}
|
|
109
111
|
}, [readOnly, showHoverMenu]);
|
|
110
|
-
useEffect(
|
|
112
|
+
useEffect(() => {
|
|
111
113
|
if (readOnly) return;
|
|
112
|
-
|
|
114
|
+
let observerRefValue = null;
|
|
113
115
|
if (scrollRef.current) {
|
|
114
116
|
scrollRef.current.addEventListener('scroll', onScroll);
|
|
115
117
|
observerRefValue = scrollRef.current;
|
|
116
118
|
}
|
|
117
|
-
return
|
|
119
|
+
return () => {
|
|
118
120
|
observerRefValue.removeEventListener('scroll', onScroll);
|
|
119
121
|
};
|
|
120
122
|
}, [onScroll, readOnly, scrollRef]);
|
|
121
|
-
|
|
123
|
+
const onHiddenHoverMenu = useCallback(() => {
|
|
122
124
|
if (codeBlockRef.current) {
|
|
123
125
|
setShowHoverMenu(false);
|
|
124
126
|
}
|
|
125
127
|
}, []);
|
|
126
|
-
useEffect(
|
|
127
|
-
|
|
128
|
+
useEffect(() => {
|
|
129
|
+
const eventBus = EventBus.getInstance();
|
|
128
130
|
eventBus.subscribe(INTERNAL_EVENT.HIDDEN_CODE_BLOCK_HOVER_MENU, onHiddenHoverMenu);
|
|
129
131
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
130
132
|
}, []);
|
|
@@ -152,15 +154,17 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
152
154
|
onDeleteCodeBlock: onDeleteCodeBlock
|
|
153
155
|
}));
|
|
154
156
|
};
|
|
155
|
-
export
|
|
157
|
+
export const renderCodeBlock = (props, editor) => {
|
|
156
158
|
return /*#__PURE__*/React.createElement(CodeBlock, Object.assign({}, props, {
|
|
157
159
|
editor: editor
|
|
158
160
|
}));
|
|
159
161
|
};
|
|
160
|
-
export
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
export const renderCodeLine = (props, editor) => {
|
|
163
|
+
const {
|
|
164
|
+
element,
|
|
165
|
+
attributes,
|
|
166
|
+
children
|
|
167
|
+
} = props;
|
|
164
168
|
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
165
169
|
"data-id": element.id
|
|
166
170
|
}, attributes, {
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
var _FILE_LINK_TYPE_CONFI;
|
|
3
|
-
export var FILE_LINK_TYPE = {
|
|
1
|
+
export const FILE_LINK_TYPE = {
|
|
4
2
|
TEXT_LINK: 'text_link',
|
|
5
3
|
ICON_LINK: 'icon_link',
|
|
6
4
|
CARD_LINK: 'card_link'
|
|
7
5
|
};
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
export const FILE_LINK_TYPE_CONFIG = {
|
|
7
|
+
[FILE_LINK_TYPE.TEXT_LINK]: {
|
|
8
|
+
icon: 'sdocfont sdoc-text-link',
|
|
9
|
+
text: 'Text_link'
|
|
10
|
+
},
|
|
11
|
+
[FILE_LINK_TYPE.ICON_LINK]: {
|
|
12
|
+
icon: 'sdocfont sdoc-inline-link',
|
|
13
|
+
text: 'Icon_and_text_Link'
|
|
14
|
+
},
|
|
15
|
+
[FILE_LINK_TYPE.CARD_LINK]: {
|
|
16
|
+
icon: 'sdocfont sdoc-card-link',
|
|
17
|
+
text: 'Card'
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export const FILE_LINK_TYPES = [FILE_LINK_TYPE.TEXT_LINK, FILE_LINK_TYPE.ICON_LINK, FILE_LINK_TYPE.CARD_LINK];
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
1
|
import { ReactEditor } from '@seafile/slate-react';
|
|
3
2
|
import { Editor, Transforms, Range } from '@seafile/slate';
|
|
4
3
|
import slugid from 'slugid';
|
|
@@ -6,12 +5,14 @@ import copy from 'copy-to-clipboard';
|
|
|
6
5
|
import context from '../../../../context';
|
|
7
6
|
import { FILE_LINK, INSERT_FILE_DISPLAY_TYPE, CODE_BLOCK, CODE_LINE, LINK, PARAGRAPH } from '../../constants';
|
|
8
7
|
import { getNodeType, getSelectedElems } from '../../core';
|
|
9
|
-
export
|
|
8
|
+
export const isMenuDisabled = (editor, readonly) => {
|
|
10
9
|
if (readonly) return true;
|
|
11
10
|
if (editor.selection == null) return true;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const selectedElems = getSelectedElems(editor);
|
|
12
|
+
const notMatch = selectedElems.some(elem => {
|
|
13
|
+
const {
|
|
14
|
+
type
|
|
15
|
+
} = elem;
|
|
15
16
|
if (editor.isVoid(elem)) return true;
|
|
16
17
|
if ([CODE_BLOCK, CODE_LINE, LINK].includes(type)) return true;
|
|
17
18
|
return false;
|
|
@@ -20,8 +21,8 @@ export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
|
|
|
20
21
|
return false; // enable
|
|
21
22
|
};
|
|
22
23
|
|
|
23
|
-
export
|
|
24
|
-
|
|
24
|
+
export const generateFileNode = (uuid, text) => {
|
|
25
|
+
const fileNode = {
|
|
25
26
|
id: slugid.nice(),
|
|
26
27
|
type: FILE_LINK,
|
|
27
28
|
doc_uuid: uuid,
|
|
@@ -34,30 +35,27 @@ export var generateFileNode = function generateFileNode(uuid, text) {
|
|
|
34
35
|
};
|
|
35
36
|
return fileNode;
|
|
36
37
|
};
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
universal: true
|
|
43
|
-
}),
|
|
44
|
-
_Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
|
|
45
|
-
match = _Editor$nodes2[0];
|
|
38
|
+
export const getType = editor => {
|
|
39
|
+
const [match] = Editor.nodes(editor, {
|
|
40
|
+
match: n => getNodeType(n) === FILE_LINK,
|
|
41
|
+
universal: true
|
|
42
|
+
});
|
|
46
43
|
if (!match) return PARAGRAPH;
|
|
47
|
-
|
|
48
|
-
n = _match[0];
|
|
44
|
+
const [n] = match;
|
|
49
45
|
return getNodeType(n);
|
|
50
46
|
};
|
|
51
|
-
export
|
|
47
|
+
export const insertFileLink = (editor, text, uuid) => {
|
|
52
48
|
if (isMenuDisabled(editor)) return;
|
|
53
49
|
// Selection folded or not
|
|
54
|
-
|
|
50
|
+
const {
|
|
51
|
+
selection
|
|
52
|
+
} = editor;
|
|
55
53
|
if (selection == null) return;
|
|
56
|
-
|
|
54
|
+
const isCollapsed = Range.isCollapsed(selection);
|
|
57
55
|
if (isCollapsed) {
|
|
58
56
|
// Insert Spaces before and after filelinks for easy operation
|
|
59
57
|
editor.insertText(' ');
|
|
60
|
-
|
|
58
|
+
const fileNode = generateFileNode(uuid, text);
|
|
61
59
|
Transforms.insertNodes(editor, fileNode);
|
|
62
60
|
|
|
63
61
|
// 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
|
|
@@ -66,16 +64,16 @@ export var insertFileLink = function insertFileLink(editor, text, uuid) {
|
|
|
66
64
|
text: ' '
|
|
67
65
|
}]);
|
|
68
66
|
} else {
|
|
69
|
-
|
|
67
|
+
const selectedText = Editor.string(editor, selection); // Selected text
|
|
70
68
|
if (selectedText !== text) {
|
|
71
69
|
// If the selected text is different from the typed text, delete the text and insert the link
|
|
72
70
|
editor.deleteFragment();
|
|
73
|
-
|
|
74
|
-
Transforms.insertNodes(editor,
|
|
71
|
+
const fileNode = generateFileNode(uuid, text);
|
|
72
|
+
Transforms.insertNodes(editor, fileNode);
|
|
75
73
|
} else {
|
|
76
74
|
// If the selected text is the same as the entered text, only the link can be wrapped
|
|
77
|
-
|
|
78
|
-
Transforms.wrapNodes(editor,
|
|
75
|
+
const fileNode = generateFileNode(uuid, text);
|
|
76
|
+
Transforms.wrapNodes(editor, fileNode, {
|
|
79
77
|
split: true
|
|
80
78
|
});
|
|
81
79
|
Transforms.collapse(editor, {
|
|
@@ -84,27 +82,27 @@ export var insertFileLink = function insertFileLink(editor, text, uuid) {
|
|
|
84
82
|
}
|
|
85
83
|
}
|
|
86
84
|
};
|
|
87
|
-
export
|
|
85
|
+
export const unwrapLinkNode = (editor, element) => {
|
|
88
86
|
if (editor.selection == null) return;
|
|
89
|
-
|
|
87
|
+
const path = ReactEditor.findPath(editor, element);
|
|
90
88
|
if (path) {
|
|
91
89
|
Transforms.unwrapNodes(editor, {
|
|
92
90
|
at: path
|
|
93
91
|
});
|
|
94
92
|
}
|
|
95
93
|
};
|
|
96
|
-
export
|
|
94
|
+
export const getUrl = uuid => {
|
|
97
95
|
return context.getSdocLocalFileUrl(uuid);
|
|
98
96
|
};
|
|
99
|
-
export
|
|
97
|
+
export const onCopyFileLinkNode = (editor, element) => {
|
|
100
98
|
if (editor.selection == null || Range.isExpanded(editor.selection)) return;
|
|
101
|
-
|
|
99
|
+
const p = ReactEditor.findPath(editor, element);
|
|
102
100
|
Transforms.select(editor, p);
|
|
103
|
-
|
|
101
|
+
const newData = editor.setFragmentData(new DataTransfer());
|
|
104
102
|
copy('copy', {
|
|
105
|
-
onCopy:
|
|
106
|
-
newData.types.forEach(
|
|
107
|
-
|
|
103
|
+
onCopy: clipboardData => {
|
|
104
|
+
newData.types.forEach(type => {
|
|
105
|
+
const data = newData.getData(type);
|
|
108
106
|
clipboardData.setData(type, data);
|
|
109
107
|
});
|
|
110
108
|
}
|
|
@@ -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, onCopyFileLinkNode } 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 FileLinkHoverMenu = _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
|
onCopyFileLinkNode(editor, element);
|
|
27
25
|
toaster.success(t('Copied'), {
|
|
@@ -31,12 +29,12 @@ var FileLinkHoverMenu = function FileLinkHoverMenu(_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 FileLinkHoverMenu = function FileLinkHoverMenu(_ref) {
|
|
|
47
45
|
onHideInsertHoverMenu();
|
|
48
46
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
49
47
|
}, []);
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
const selectedType = element.display_type || FILE_LINK_TYPE.TEXT_LINK;
|
|
49
|
+
const id = "file-link-display-type-".concat(element.id);
|
|
52
50
|
return /*#__PURE__*/React.createElement(ElementPopover, null, /*#__PURE__*/React.createElement("div", {
|
|
53
51
|
className: "sdoc-file-link-hover-menu-container",
|
|
54
52
|
style: menuPosition
|
|
@@ -93,14 +91,12 @@ var FileLinkHoverMenu = function FileLinkHoverMenu(_ref) {
|
|
|
93
91
|
className: "sdocfont sdoc-unlink icon-font"
|
|
94
92
|
})))), isShowDisplayStylePopover && /*#__PURE__*/React.createElement("div", {
|
|
95
93
|
className: "sdoc-file-display-style-popover sdoc-dropdown-menu"
|
|
96
|
-
}, FILE_LINK_TYPES.map(
|
|
94
|
+
}, FILE_LINK_TYPES.map(fileLinkType => {
|
|
97
95
|
return /*#__PURE__*/React.createElement("div", {
|
|
98
96
|
key: fileLinkType,
|
|
99
97
|
"date-type": fileLinkType,
|
|
100
98
|
className: "sdoc-dropdown-menu-item sdoc-dropdown-item-with-left-icon pr-2",
|
|
101
|
-
onClick:
|
|
102
|
-
return onSelect(event, fileLinkType);
|
|
103
|
-
}
|
|
99
|
+
onClick: event => onSelect(event, fileLinkType)
|
|
104
100
|
}, /*#__PURE__*/React.createElement("div", {
|
|
105
101
|
className: "sdoc-dropdown-item-content"
|
|
106
102
|
}, /*#__PURE__*/React.createElement("i", {
|
|
@@ -2,7 +2,7 @@ import { FILE_LINK } from '../../constants';
|
|
|
2
2
|
import FileLinkMenu from './menu';
|
|
3
3
|
import withFileLink from './plugin';
|
|
4
4
|
import renderFileLink from './render-elem';
|
|
5
|
-
|
|
5
|
+
const FileLinkPlugin = {
|
|
6
6
|
type: FILE_LINK,
|
|
7
7
|
editorMenus: [FileLinkMenu],
|
|
8
8
|
editorPlugin: withFileLink,
|
|
@@ -3,14 +3,16 @@ import { FILE_LINK, MENUS_CONFIG_MAP, ELEMENT_TYPE } from '../../../constants';
|
|
|
3
3
|
import { isMenuDisabled, insertFileLink } 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 FileLinkMenu = _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[FILE_LINK];
|
|
15
|
+
const openSelectFileDialog = useCallback(() => {
|
|
14
16
|
eventBus.dispatch(INTERNAL_EVENT.INSERT_ELEMENT, {
|
|
15
17
|
type: ELEMENT_TYPE.FILE_LINK,
|
|
16
18
|
insertFileLinkCallback: insertFileLink
|
|
@@ -1,30 +1,36 @@
|
|
|
1
1
|
import { Transforms, Node, Editor } from '@seafile/slate';
|
|
2
2
|
import { FILE_LINK } from '../../constants';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
const withFileLink = editor => {
|
|
4
|
+
const {
|
|
5
|
+
isInline,
|
|
6
|
+
deleteBackward
|
|
7
|
+
} = editor;
|
|
8
|
+
const newEditor = editor;
|
|
7
9
|
|
|
8
10
|
// Rewrite isInline
|
|
9
|
-
newEditor.isInline =
|
|
10
|
-
|
|
11
|
+
newEditor.isInline = elem => {
|
|
12
|
+
const {
|
|
13
|
+
type
|
|
14
|
+
} = elem;
|
|
11
15
|
if (type === FILE_LINK) {
|
|
12
16
|
return true;
|
|
13
17
|
}
|
|
14
18
|
return isInline(elem);
|
|
15
19
|
};
|
|
16
|
-
newEditor.deleteBackward =
|
|
17
|
-
|
|
20
|
+
newEditor.deleteBackward = unit => {
|
|
21
|
+
const {
|
|
22
|
+
selection
|
|
23
|
+
} = newEditor;
|
|
18
24
|
if (selection === null) {
|
|
19
25
|
return deleteBackward(unit);
|
|
20
26
|
}
|
|
21
27
|
|
|
22
28
|
// Delete file link node
|
|
23
|
-
|
|
29
|
+
const nodeEntry = Editor.node(newEditor, newEditor.selection);
|
|
24
30
|
if (nodeEntry && Node.string(nodeEntry[0]).length === 0) {
|
|
25
|
-
|
|
31
|
+
const beforePath = nodeEntry[1];
|
|
26
32
|
beforePath.splice(-1, 1, Math.max(nodeEntry[1].at(-1) - 1, 0));
|
|
27
|
-
|
|
33
|
+
const beforeNodeEntry = Editor.node(newEditor, beforePath);
|
|
28
34
|
if (beforeNodeEntry && beforeNodeEntry[0].type === FILE_LINK) {
|
|
29
35
|
Transforms.delete(newEditor, {
|
|
30
36
|
at: beforeNodeEntry[1]
|