@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,39 +1,37 @@
|
|
|
1
|
-
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
-
import _toArray from "@babel/runtime/helpers/esm/toArray";
|
|
3
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
1
|
import { Element, Path, Transforms, Node, Editor } from '@seafile/slate';
|
|
5
2
|
import slugid from 'slugid';
|
|
6
3
|
import { LIST_ITEM, PARAGRAPH } from '../../../constants';
|
|
7
4
|
import { findNode, generateDefaultText, getCommonNode, getNode, getNodes } from '../../../core';
|
|
8
5
|
import { getListTypes } from '../queries';
|
|
9
|
-
|
|
6
|
+
const isListRoot = node => {
|
|
10
7
|
return Element.isElement(node) && getListTypes().includes(node.type);
|
|
11
8
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
const getFirstAncestorOfType = (root, entry, _ref) => {
|
|
10
|
+
let {
|
|
11
|
+
type
|
|
12
|
+
} = _ref;
|
|
13
|
+
let ancestor = Path.parent(entry[1]);
|
|
15
14
|
while (getNode(root, ancestor).type !== type) {
|
|
16
15
|
ancestor = Path.parent(ancestor);
|
|
17
16
|
}
|
|
18
17
|
return [getNode(root, ancestor), ancestor];
|
|
19
18
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
const findListItemsWithContent = first => {
|
|
20
|
+
let prev = null;
|
|
21
|
+
let node = first;
|
|
23
22
|
while (isListRoot(node) || node.type === LIST_ITEM && node.children[0].type !== PARAGRAPH) {
|
|
24
23
|
prev = node;
|
|
25
|
-
|
|
26
|
-
node = _node$children[0];
|
|
24
|
+
[node] = node.children;
|
|
27
25
|
}
|
|
28
26
|
return prev ? prev.children : [node];
|
|
29
27
|
};
|
|
30
|
-
|
|
28
|
+
const trimList = listRoot => {
|
|
31
29
|
if (!isListRoot(listRoot)) {
|
|
32
30
|
return [listRoot];
|
|
33
31
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
const _texts = Node.texts(listRoot);
|
|
33
|
+
const textEntries = Array.from(_texts);
|
|
34
|
+
const commonAncestorEntry = textEntries.reduce((commonAncestor, textEntry) => {
|
|
37
35
|
return Path.isAncestor(commonAncestor[1], textEntry[1]) ? commonAncestor : getCommonNode(listRoot, textEntry[1], commonAncestor[1]);
|
|
38
36
|
}, getFirstAncestorOfType(listRoot, textEntries[0], {
|
|
39
37
|
type: LIST_ITEM
|
|
@@ -41,59 +39,44 @@ var trimList = function trimList(listRoot) {
|
|
|
41
39
|
|
|
42
40
|
// is ul/ol: return children
|
|
43
41
|
// is not ul/ol
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
first = _ref3[0],
|
|
47
|
-
rest = _ref3.slice(1);
|
|
48
|
-
return [].concat(_toConsumableArray(findListItemsWithContent(first)), _toConsumableArray(rest));
|
|
42
|
+
const [first, ...rest] = isListRoot(commonAncestorEntry[0]) ? commonAncestorEntry[0].children : [commonAncestorEntry[0]];
|
|
43
|
+
return [...findListItemsWithContent(first), ...rest];
|
|
49
44
|
};
|
|
50
|
-
|
|
45
|
+
const wrapNodeIntoListItem = node => {
|
|
51
46
|
return node.type === LIST_ITEM ? node : {
|
|
52
47
|
id: slugid.nice(),
|
|
53
48
|
type: LIST_ITEM,
|
|
54
49
|
children: [node]
|
|
55
50
|
};
|
|
56
51
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return isFragmentOnlyListRoot &&
|
|
52
|
+
const isSingleLic = fragment => {
|
|
53
|
+
const isFragmentOnlyListRoot = fragment.length === 1 && isListRoot(fragment[0]);
|
|
54
|
+
return isFragmentOnlyListRoot && [...getNodes({
|
|
60
55
|
children: fragment
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
}).filter(function (_ref4) {
|
|
64
|
-
var _ref5 = _slicedToArray(_ref4, 1),
|
|
65
|
-
node = _ref5[0];
|
|
56
|
+
})].filter(entry => Element.isElement(entry[0])).filter(_ref2 => {
|
|
57
|
+
let [node] = _ref2;
|
|
66
58
|
return node.type === PARAGRAPH;
|
|
67
59
|
}).length === 1;
|
|
68
60
|
};
|
|
69
|
-
export
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
licNode = _licEntry[0],
|
|
74
|
-
licPath = _licEntry[1];
|
|
75
|
-
var isEmptyNode = !Node.string(licNode);
|
|
61
|
+
export const getTextAndListItemNodes = (editor, fragment, liEntry, licEntry) => {
|
|
62
|
+
const [, liPath] = liEntry;
|
|
63
|
+
const [licNode, licPath] = licEntry;
|
|
64
|
+
const isEmptyNode = !Node.string(licNode);
|
|
76
65
|
// format copied fragment
|
|
77
66
|
// first: lic, path: [...liPath, 0, 0]
|
|
78
67
|
// rest: children, path: [...liPath, 1, 0]
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
rest = _fragment$flatMap$map2.slice(1);
|
|
83
|
-
var textNode = null;
|
|
84
|
-
var listItemNodes = [];
|
|
68
|
+
const [first, ...rest] = fragment.flatMap(trimList).map(wrapNodeIntoListItem);
|
|
69
|
+
let textNode = null;
|
|
70
|
+
let listItemNodes = [];
|
|
85
71
|
if (isListRoot(fragment[0])) {
|
|
86
72
|
if (isSingleLic(fragment)) {
|
|
87
73
|
textNode = first;
|
|
88
74
|
listItemNodes = rest;
|
|
89
75
|
} else if (isEmptyNode) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
currentSubLists = _li$children.slice(1); // old
|
|
76
|
+
const li = getNode(editor, liPath);
|
|
77
|
+
const [, ...currentSubLists] = li.children; // old
|
|
93
78
|
|
|
94
|
-
|
|
95
|
-
newLic = _first$children[0],
|
|
96
|
-
newSubLists = _first$children.slice(1); // copied
|
|
79
|
+
const [newLic, ...newSubLists] = first.children; // copied
|
|
97
80
|
// insert copied contents
|
|
98
81
|
Transforms.insertNodes(editor, newLic, {
|
|
99
82
|
at: Path.next(licPath),
|
|
@@ -104,7 +87,7 @@ export var getTextAndListItemNodes = function getTextAndListItemNodes(editor, fr
|
|
|
104
87
|
});
|
|
105
88
|
if (newSubLists.length) {
|
|
106
89
|
if (currentSubLists.length) {
|
|
107
|
-
|
|
90
|
+
const path = [...liPath, 1, 0];
|
|
108
91
|
Transforms.insertNodes(editor, newSubLists[0].children, {
|
|
109
92
|
at: path,
|
|
110
93
|
select: true
|
|
@@ -120,33 +103,35 @@ export var getTextAndListItemNodes = function getTextAndListItemNodes(editor, fr
|
|
|
120
103
|
listItemNodes = rest;
|
|
121
104
|
} else {
|
|
122
105
|
textNode = generateDefaultText();
|
|
123
|
-
listItemNodes = [first]
|
|
106
|
+
listItemNodes = [first, ...rest];
|
|
124
107
|
}
|
|
125
108
|
} else {
|
|
126
109
|
textNode = first;
|
|
127
110
|
listItemNodes = rest;
|
|
128
111
|
return {
|
|
129
|
-
textNode
|
|
130
|
-
listItemNodes
|
|
112
|
+
textNode,
|
|
113
|
+
listItemNodes
|
|
131
114
|
};
|
|
132
115
|
}
|
|
133
116
|
return {
|
|
134
|
-
textNode
|
|
135
|
-
listItemNodes
|
|
117
|
+
textNode,
|
|
118
|
+
listItemNodes
|
|
136
119
|
};
|
|
137
120
|
};
|
|
138
|
-
export
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
121
|
+
export const insertFragmentList = editor => {
|
|
122
|
+
const {
|
|
123
|
+
insertFragment: _insertFragment
|
|
124
|
+
} = editor;
|
|
125
|
+
return fragment => {
|
|
126
|
+
Editor.withoutNormalizing(editor, () => {
|
|
127
|
+
let liEntry = findNode(editor, {
|
|
143
128
|
match: {
|
|
144
129
|
type: LIST_ITEM
|
|
145
130
|
},
|
|
146
131
|
mode: 'lowest'
|
|
147
132
|
});
|
|
148
133
|
if (!liEntry) {
|
|
149
|
-
|
|
134
|
+
const nodes = isListRoot(fragment) ? [generateDefaultText(), ...fragment] : fragment;
|
|
150
135
|
return _insertFragment(nodes);
|
|
151
136
|
}
|
|
152
137
|
Transforms.insertFragment(editor, [generateDefaultText()]); // need ' '
|
|
@@ -157,23 +142,22 @@ export var insertFragmentList = function insertFragmentList(editor) {
|
|
|
157
142
|
},
|
|
158
143
|
mode: 'lowest'
|
|
159
144
|
});
|
|
160
|
-
|
|
145
|
+
const licEntry = findNode(editor, {
|
|
161
146
|
match: {
|
|
162
147
|
type: PARAGRAPH
|
|
163
148
|
},
|
|
164
149
|
mode: 'lowest'
|
|
165
150
|
});
|
|
166
151
|
if (!licEntry) {
|
|
167
|
-
|
|
168
|
-
return _insertFragment(
|
|
152
|
+
const nodes = isListRoot(fragment) ? [generateDefaultText(), ...fragment] : fragment;
|
|
153
|
+
return _insertFragment(nodes);
|
|
169
154
|
}
|
|
170
|
-
|
|
171
|
-
textNode
|
|
172
|
-
listItemNodes
|
|
155
|
+
const {
|
|
156
|
+
textNode,
|
|
157
|
+
listItemNodes
|
|
158
|
+
} = getTextAndListItemNodes(editor, fragment, liEntry, licEntry);
|
|
173
159
|
Transforms.insertFragment(editor, [textNode]);
|
|
174
|
-
|
|
175
|
-
_liEntry3 = _slicedToArray(_liEntry2, 2),
|
|
176
|
-
liPath = _liEntry3[1];
|
|
160
|
+
const [, liPath] = liEntry;
|
|
177
161
|
return Transforms.insertNodes(editor, listItemNodes, {
|
|
178
162
|
at: Path.next(liPath),
|
|
179
163
|
select: true
|
|
@@ -1,31 +1,29 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
1
|
import { Element, Transforms, Path } from '@seafile/slate';
|
|
3
2
|
import { LIST_ITEM } from '../../../constants';
|
|
4
3
|
import { getChildren, getNode, getPreviousPath, match } from '../../../core';
|
|
5
4
|
import { getListTypes } from '../queries';
|
|
6
5
|
import { moveListItemsToList, normalizeListItem, normalizeNestedList } from '../transforms';
|
|
7
6
|
import { generateEmptyListItem } from '../model';
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
export const normalizeList = editor => {
|
|
8
|
+
const {
|
|
9
|
+
normalizeNode
|
|
10
|
+
} = editor;
|
|
11
|
+
return _ref => {
|
|
12
|
+
let [node, path] = _ref;
|
|
14
13
|
if (!Element.isElement(node)) {
|
|
15
14
|
return normalizeNode([node, path]);
|
|
16
15
|
}
|
|
17
|
-
|
|
16
|
+
const listTypes = getListTypes();
|
|
18
17
|
|
|
19
18
|
// root
|
|
20
19
|
if (listTypes.includes(node.type)) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
child = _ref4[0];
|
|
20
|
+
const children = getChildren([node, path]);
|
|
21
|
+
const nonLiChild = children.find(_ref2 => {
|
|
22
|
+
let [child] = _ref2;
|
|
25
23
|
return child.type !== LIST_ITEM;
|
|
26
24
|
});
|
|
27
25
|
if (nonLiChild) {
|
|
28
|
-
|
|
26
|
+
const listItem = generateEmptyListItem();
|
|
29
27
|
Transforms.wrapNodes(editor, listItem, {
|
|
30
28
|
at: nonLiChild[1]
|
|
31
29
|
});
|
|
@@ -35,16 +33,14 @@ export var normalizeList = function normalizeList(editor) {
|
|
|
35
33
|
if (match(node, [], {
|
|
36
34
|
type: listTypes
|
|
37
35
|
})) {
|
|
38
|
-
if (!node.children.length || !node.children.find(
|
|
39
|
-
return item.type === LIST_ITEM;
|
|
40
|
-
})) {
|
|
36
|
+
if (!node.children.length || !node.children.find(item => item.type === LIST_ITEM)) {
|
|
41
37
|
Transforms.removeNodes(editor, {
|
|
42
38
|
at: path
|
|
43
39
|
});
|
|
44
40
|
return;
|
|
45
41
|
}
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
const nextPath = Path.next(path);
|
|
43
|
+
const nextNode = getNode(editor, nextPath);
|
|
48
44
|
if ((nextNode === null || nextNode === void 0 ? void 0 : nextNode.type) === node.type) {
|
|
49
45
|
moveListItemsToList(editor, {
|
|
50
46
|
fromList: [nextNode, nextPath],
|
|
@@ -52,8 +48,8 @@ export var normalizeList = function normalizeList(editor) {
|
|
|
52
48
|
deleteFromList: true
|
|
53
49
|
});
|
|
54
50
|
}
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
const prevPath = getPreviousPath(path);
|
|
52
|
+
const prevNode = getNode(editor, prevPath);
|
|
57
53
|
if ((prevNode === null || prevNode === void 0 ? void 0 : prevNode.type) === node.type) {
|
|
58
54
|
editor.normalizeNode([prevNode, prevPath]);
|
|
59
55
|
return;
|
|
@@ -4,35 +4,40 @@ import { Editor, Range, Transforms } from '@seafile/slate';
|
|
|
4
4
|
import { LIST_ITEM } from '../../../constants';
|
|
5
5
|
import { findNode } from '../../../core';
|
|
6
6
|
import { moveListItems } from '../transforms';
|
|
7
|
-
export
|
|
8
|
-
|
|
7
|
+
export const onTabHandle = (editor, event) => {
|
|
8
|
+
const {
|
|
9
|
+
selection
|
|
10
|
+
} = editor;
|
|
9
11
|
if (!selection) return;
|
|
10
|
-
|
|
12
|
+
const listSelected = findNode(editor, {
|
|
11
13
|
type: [LIST_ITEM]
|
|
12
14
|
});
|
|
13
15
|
if (!listSelected) return false;
|
|
14
|
-
|
|
16
|
+
let workRange = editor.selection;
|
|
15
17
|
if (!Range.isCollapsed(selection)) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
let {
|
|
19
|
+
anchor,
|
|
20
|
+
focus
|
|
21
|
+
} = selection;
|
|
18
22
|
if (Range.isBackward(selection)) {
|
|
19
|
-
|
|
23
|
+
({
|
|
24
|
+
anchor,
|
|
25
|
+
focus
|
|
26
|
+
} = {
|
|
20
27
|
anchor: _objectSpread({}, selection.focus),
|
|
21
28
|
focus: _objectSpread({}, selection.anchor)
|
|
22
|
-
};
|
|
23
|
-
anchor = _anchor$focus.anchor;
|
|
24
|
-
focus = _anchor$focus.focus;
|
|
29
|
+
});
|
|
25
30
|
}
|
|
26
|
-
|
|
27
|
-
anchor
|
|
28
|
-
focus
|
|
31
|
+
const unHungRange = Editor.unhangRange(editor, {
|
|
32
|
+
anchor,
|
|
33
|
+
focus
|
|
29
34
|
});
|
|
30
35
|
if (unHungRange) {
|
|
31
36
|
workRange = unHungRange;
|
|
32
37
|
Transforms.select(editor, unHungRange);
|
|
33
38
|
}
|
|
34
39
|
}
|
|
35
|
-
|
|
40
|
+
const increase = isHotkey('shift+tab', event) ? false : true;
|
|
36
41
|
if (workRange && listSelected) {
|
|
37
42
|
event.preventDefault();
|
|
38
43
|
moveListItems(editor, {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
1
|
import { Editor, Path, Range, Transforms } from '@seafile/slate';
|
|
3
2
|
import { ORDERED_LIST, PARAGRAPH } from '../../../constants';
|
|
4
3
|
import { getBeforeText, setListType } from '../helpers';
|
|
@@ -10,30 +9,27 @@ import { generateEmptyListItem } from '../model';
|
|
|
10
9
|
* @param {String} text
|
|
11
10
|
* @returns {Boolean} isPreventInsert
|
|
12
11
|
*/
|
|
13
|
-
export
|
|
12
|
+
export const handleShortcut = (editor, text) => {
|
|
14
13
|
if (text !== ' ') return false;
|
|
15
|
-
|
|
14
|
+
const {
|
|
15
|
+
selection
|
|
16
|
+
} = editor;
|
|
16
17
|
if (!Range.isCollapsed(selection)) return false;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
aboveNode = _Editor$above2[0],
|
|
20
|
-
aboveNodePath = _Editor$above2[1];
|
|
21
|
-
var aboveNodeRef = Editor.pathRef(editor, aboveNodePath);
|
|
18
|
+
let [aboveNode, aboveNodePath] = Editor.above(editor);
|
|
19
|
+
const aboveNodeRef = Editor.pathRef(editor, aboveNodePath);
|
|
22
20
|
if (aboveNode.type !== PARAGRAPH) return false;
|
|
23
21
|
// Match ordered list shortcut
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
beforeText
|
|
27
|
-
range
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const regShortcut = /^\s*[1-9]+\.\s*$/;
|
|
23
|
+
const {
|
|
24
|
+
beforeText,
|
|
25
|
+
range
|
|
26
|
+
} = getBeforeText(editor);
|
|
27
|
+
const matchResult = beforeText.match(regShortcut);
|
|
28
|
+
const matchedText = matchResult && matchResult[0];
|
|
30
29
|
// If the match fails or the match is not at the beginning of the line, it is not a shortcut
|
|
31
30
|
if (!matchResult || matchResult.index !== 0) return false;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
_Editor$node2 = _slicedToArray(_Editor$node, 2),
|
|
35
|
-
previousNode = _Editor$node2[0],
|
|
36
|
-
previousPath = _Editor$node2[1];
|
|
31
|
+
const previousNodePath = getPreviousPath(aboveNodePath);
|
|
32
|
+
const [previousNode, previousPath] = Editor.node(editor, previousNodePath);
|
|
37
33
|
// If the previous node is not an ordered list and is not start with `1.`,it is not a shortcut
|
|
38
34
|
if (previousNode.type !== ORDERED_LIST && matchedText !== '1.') return false;
|
|
39
35
|
// If the previous node is not an ordered list and is start with `1.`,transforms to ordered list
|
|
@@ -47,7 +43,7 @@ export var handleShortcut = function handleShortcut(editor, text) {
|
|
|
47
43
|
return;
|
|
48
44
|
}
|
|
49
45
|
// Record the order number of the shortcut that will be inserted as a list item
|
|
50
|
-
|
|
46
|
+
const shortcutOrderNum = parseInt(matchResult[0].slice(0, -1));
|
|
51
47
|
|
|
52
48
|
// Check If order number is continuous
|
|
53
49
|
if (previousNode.children.length + 1 !== shortcutOrderNum) return false;
|
|
@@ -57,15 +53,11 @@ export var handleShortcut = function handleShortcut(editor, text) {
|
|
|
57
53
|
at: range
|
|
58
54
|
});
|
|
59
55
|
// Update aboveNode after delete shortcut text
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
var _getLastChild = getLastChild([previousNode, previousPath]),
|
|
64
|
-
_getLastChild2 = _slicedToArray(_getLastChild, 2),
|
|
65
|
-
lastListItemPath = _getLastChild2[1];
|
|
66
|
-
var targetInsertPath = Path.next(lastListItemPath);
|
|
56
|
+
[aboveNode] = Editor.above(editor);
|
|
57
|
+
const [, lastListItemPath] = getLastChild([previousNode, previousPath]);
|
|
58
|
+
const targetInsertPath = Path.next(lastListItemPath);
|
|
67
59
|
// Wrap the paragraph in a list item
|
|
68
|
-
|
|
60
|
+
const insertedListItem = generateEmptyListItem();
|
|
69
61
|
insertedListItem.children.push(aboveNode);
|
|
70
62
|
Transforms.insertNodes(editor, insertedListItem, {
|
|
71
63
|
at: targetInsertPath
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Editor, Element, Range, Node } from '@seafile/slate';
|
|
2
2
|
import { LIST_ITEM, ORDERED_LIST, UNORDERED_LIST } from '../../../constants';
|
|
3
|
-
export
|
|
3
|
+
export const getListTypes = () => {
|
|
4
4
|
return [ORDERED_LIST, UNORDERED_LIST];
|
|
5
5
|
};
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
export const getListItemEntry = function (editor) {
|
|
7
|
+
let {
|
|
8
|
+
at = editor.selection
|
|
9
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
10
|
+
let _at = null;
|
|
11
11
|
if (Range.isRange(at) && !Range.isCollapsed(at)) {
|
|
12
12
|
_at = at.focus.path;
|
|
13
13
|
} else if (Range.isRange(at)) {
|
|
@@ -16,32 +16,30 @@ export var getListItemEntry = function getListItemEntry(editor) {
|
|
|
16
16
|
_at = at;
|
|
17
17
|
}
|
|
18
18
|
if (_at) {
|
|
19
|
-
|
|
19
|
+
const node = Node.get(editor, _at);
|
|
20
20
|
if (node) {
|
|
21
|
-
|
|
21
|
+
const listItem = Editor.above(editor, {
|
|
22
22
|
at: _at,
|
|
23
|
-
match:
|
|
24
|
-
return Element.isElement(n) && n.type === LIST_ITEM;
|
|
25
|
-
}
|
|
23
|
+
match: n => Element.isElement(n) && n.type === LIST_ITEM
|
|
26
24
|
});
|
|
27
25
|
if (listItem) {
|
|
28
|
-
|
|
26
|
+
const list = Editor.parent(editor, listItem[1]);
|
|
29
27
|
return {
|
|
30
|
-
list
|
|
31
|
-
listItem
|
|
28
|
+
list,
|
|
29
|
+
listItem
|
|
32
30
|
};
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
34
|
return null;
|
|
37
35
|
};
|
|
38
|
-
export
|
|
39
|
-
return node.children.some(
|
|
36
|
+
export const hasListChild = node => {
|
|
37
|
+
return node.children.some(n => {
|
|
40
38
|
return Element.isElement(n) && getListTypes().includes(n.type);
|
|
41
39
|
});
|
|
42
40
|
};
|
|
43
|
-
export
|
|
41
|
+
export const isListNested = (editor, listPath) => {
|
|
44
42
|
var _Editor$parent;
|
|
45
|
-
|
|
43
|
+
const listParentNode = (_Editor$parent = Editor.parent(editor, listPath)) === null || _Editor$parent === void 0 ? void 0 : _Editor$parent[0];
|
|
46
44
|
return (listParentNode === null || listParentNode === void 0 ? void 0 : listParentNode.type) === LIST_ITEM;
|
|
47
45
|
};
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ORDERED_LIST } from '../../constants';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const renderList = (props, editor) => {
|
|
4
|
+
const {
|
|
5
|
+
attributes,
|
|
6
|
+
children,
|
|
7
|
+
element: node
|
|
8
|
+
} = props;
|
|
9
|
+
const Tag = node.type === ORDERED_LIST ? 'ol' : 'ul';
|
|
8
10
|
return /*#__PURE__*/React.createElement(Tag, Object.assign({
|
|
9
11
|
"data-id": node.id,
|
|
10
12
|
"data-root": "true",
|
|
11
13
|
className: "list-container d-flex flex-column"
|
|
12
14
|
}, attributes), children);
|
|
13
15
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
const renderListItem = (props, editor) => {
|
|
17
|
+
const {
|
|
18
|
+
attributes,
|
|
19
|
+
children,
|
|
20
|
+
element
|
|
21
|
+
} = props;
|
|
22
|
+
const {
|
|
23
|
+
align
|
|
24
|
+
} = element.children[0];
|
|
25
|
+
let className = '';
|
|
20
26
|
switch (align) {
|
|
21
27
|
case 'center':
|
|
22
28
|
className = 'align-self-center';
|
|
@@ -34,10 +40,12 @@ var renderListItem = function renderListItem(props, editor) {
|
|
|
34
40
|
className: className
|
|
35
41
|
}), children);
|
|
36
42
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
const renderListLic = (props, editor) => {
|
|
44
|
+
const {
|
|
45
|
+
attributes,
|
|
46
|
+
children,
|
|
47
|
+
element
|
|
48
|
+
} = props;
|
|
41
49
|
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
42
50
|
"data-id": element.id,
|
|
43
51
|
"data-root": "true"
|
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
2
|
import { Transforms, Editor, Path, Range } from '@seafile/slate';
|
|
4
3
|
import { LIST_ITEM, PARAGRAPH } from '../../../constants';
|
|
5
4
|
import { getAboveNode, isBlockTextEmptyAfterSelection, isStartPoint } from '../../../core';
|
|
6
5
|
import { generateEmptyListContent, generateEmptyListItem } from '../model';
|
|
7
6
|
|
|
8
7
|
// list > list_item > paragraph
|
|
9
|
-
export
|
|
10
|
-
|
|
8
|
+
export const insertListItem = editor => {
|
|
9
|
+
const paragraphEntry = getAboveNode(editor, {
|
|
11
10
|
match: {
|
|
12
11
|
type: PARAGRAPH
|
|
13
12
|
}
|
|
14
13
|
});
|
|
15
14
|
if (!paragraphEntry) return false;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var listItemEntry = Editor.parent(editor, paragraphPath);
|
|
15
|
+
const [, paragraphPath] = paragraphEntry;
|
|
16
|
+
const listItemEntry = Editor.parent(editor, paragraphPath);
|
|
19
17
|
if (!listItemEntry) return false;
|
|
20
|
-
|
|
21
|
-
listItemNode = _listItemEntry[0],
|
|
22
|
-
listItemPath = _listItemEntry[1];
|
|
18
|
+
const [listItemNode, listItemPath] = listItemEntry;
|
|
23
19
|
if (listItemNode.type !== LIST_ITEM) return false;
|
|
24
|
-
|
|
25
|
-
Editor.withoutNormalizing(editor,
|
|
20
|
+
let success = false;
|
|
21
|
+
Editor.withoutNormalizing(editor, () => {
|
|
26
22
|
var _editor$selection;
|
|
27
23
|
if (!Range.isCollapsed(editor.selection)) {
|
|
28
24
|
// 删除选中的内容
|
|
@@ -30,17 +26,17 @@ export var insertListItem = function insertListItem(editor) {
|
|
|
30
26
|
at: editor.selection
|
|
31
27
|
});
|
|
32
28
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
const _isStartPoint = isStartPoint(editor, (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.focus, paragraphPath);
|
|
30
|
+
const isEndPoint = isBlockTextEmptyAfterSelection(editor);
|
|
31
|
+
const nextParagraphPath = Path.next(paragraphPath);
|
|
32
|
+
const nextListItemPath = Path.next(listItemPath);
|
|
37
33
|
if (_isStartPoint) {
|
|
38
34
|
// listItem 有内容,光标在开始
|
|
39
|
-
|
|
35
|
+
const itemContent = generateEmptyListContent();
|
|
40
36
|
Transforms.insertNodes(editor, itemContent, {
|
|
41
37
|
at: listItemPath
|
|
42
38
|
});
|
|
43
|
-
|
|
39
|
+
const listItem = generateEmptyListItem();
|
|
44
40
|
Transforms.wrapNodes(editor, listItem, {
|
|
45
41
|
at: listItemPath
|
|
46
42
|
});
|
|
@@ -50,8 +46,8 @@ export var insertListItem = function insertListItem(editor) {
|
|
|
50
46
|
if (!isEndPoint) {
|
|
51
47
|
// listItem 有内容,光标在中间
|
|
52
48
|
Transforms.splitNodes(editor);
|
|
53
|
-
|
|
54
|
-
Transforms.wrapNodes(editor,
|
|
49
|
+
const listItem = generateEmptyListItem();
|
|
50
|
+
Transforms.wrapNodes(editor, listItem, {
|
|
55
51
|
at: nextParagraphPath
|
|
56
52
|
});
|
|
57
53
|
Transforms.moveNodes(editor, {
|
|
@@ -66,13 +62,13 @@ export var insertListItem = function insertListItem(editor) {
|
|
|
66
62
|
} else {
|
|
67
63
|
var _Editor$marks;
|
|
68
64
|
// listItem 有内容,光标在结尾
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
Transforms.insertNodes(editor, _objectSpread(_objectSpread({},
|
|
65
|
+
const marks = (_Editor$marks = Editor.marks(editor)) === null || _Editor$marks === void 0 ? void 0 : _Editor$marks.key;
|
|
66
|
+
const itemContent = generateEmptyListContent();
|
|
67
|
+
Transforms.insertNodes(editor, _objectSpread(_objectSpread({}, itemContent), marks), {
|
|
72
68
|
at: nextListItemPath
|
|
73
69
|
});
|
|
74
|
-
|
|
75
|
-
Transforms.wrapNodes(editor,
|
|
70
|
+
const listItem = generateEmptyListItem();
|
|
71
|
+
Transforms.wrapNodes(editor, listItem, {
|
|
76
72
|
at: nextListItemPath
|
|
77
73
|
});
|
|
78
74
|
Transforms.select(editor, nextListItemPath);
|