@worktile/theia 3.0.8 → 3.0.9
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/README.md +11 -11
- package/bundles/worktile-theia.umd.js +14357 -14343
- package/bundles/worktile-theia.umd.js.map +1 -1
- package/components/color-select/color-select.component.d.ts +32 -32
- package/components/color-select/color-select.component.scss +107 -107
- package/components/column-resize/column-resize-notifier.d.ts +35 -35
- package/components/column-resize/column-resize.directive.d.ts +26 -26
- package/components/column-resize/column-resize.module.d.ts +14 -14
- package/components/column-resize/event-dispatcher.d.ts +31 -31
- package/components/column-resize/overlay-handle.component.d.ts +33 -33
- package/components/column-resize/resize-ref.d.ts +25 -25
- package/components/column-resize/resizing.store.d.ts +28 -28
- package/components/column-resize/selectors.d.ts +3 -3
- package/components/contextmenu/contextmenu.component.d.ts +22 -22
- package/components/conversion-hint/conversion-hint.component.d.ts +18 -18
- package/components/conversion-hint/conversion-hint.component.scss +11 -11
- package/components/element/element.component.d.ts +7 -7
- package/components/inline-toolbar/inline-toolbar.component.d.ts +26 -26
- package/components/nav-split-line/nav-split-line.component.d.ts +13 -13
- package/components/table-select/table-select.component.d.ts +20 -20
- package/components/table-select/table-select.component.scss +35 -35
- package/components/template/template.component.d.ts +15 -15
- package/components/text/text.component.d.ts +14 -14
- package/components/toolbar/toolbar.component.d.ts +65 -65
- package/components/toolbar-dropdown/toolbar-dropdown.component.d.ts +33 -33
- package/components/toolbar-dropdown/toolbar-dropdown.component.scss +0 -1
- package/components/toolbar-group/toolbar-group.component.d.ts +33 -33
- package/components/toolbar-group/toolbar-group.component.scss +17 -17
- package/components/toolbar-item/toolbar-item.component.d.ts +18 -18
- package/constants/auto-format-rules.d.ts +2 -2
- package/constants/code.d.ts +9 -9
- package/constants/color-select.d.ts +14 -14
- package/constants/default.d.ts +9 -9
- package/constants/error.d.ts +5 -5
- package/constants/index.d.ts +5 -5
- package/constants/node-types.d.ts +99 -99
- package/constants/selector.d.ts +2 -2
- package/constants/toolbar.d.ts +17 -17
- package/core/create-plugin.d.ts +2 -2
- package/core/create-toolbar.d.ts +5 -5
- package/core/index.d.ts +4 -4
- package/core/toolbar-item/base-toolbar-item.d.ts +29 -29
- package/core/utils/combine-plugins.d.ts +2 -2
- package/core/utils/flatten-deep-plugins.d.ts +6 -6
- package/core/utils/get-plugin-options.d.ts +2 -2
- package/core/utils/get-plugin.d.ts +2 -2
- package/core/utils/get-plugins.d.ts +2 -2
- package/core/utils/index.d.ts +10 -10
- package/core/utils/merge-array.d.ts +1 -1
- package/core/utils/merge-deep-plugins.d.ts +2 -2
- package/core/utils/merge-options.d.ts +2 -2
- package/core/utils/nested-structure-by-key.d.ts +2 -2
- package/core/utils/plugins-by-key.d.ts +2 -2
- package/core/with-theia.d.ts +4 -4
- package/custom-types.d.ts +131 -131
- package/editor.component.d.ts +92 -92
- package/editor.module.d.ts +98 -98
- package/esm2015/components/color-select/color-select.component.js +112 -112
- package/esm2015/components/column-resize/column-resize-notifier.js +31 -31
- package/esm2015/components/column-resize/column-resize.directive.js +98 -98
- package/esm2015/components/column-resize/column-resize.module.js +34 -34
- package/esm2015/components/column-resize/event-dispatcher.js +55 -55
- package/esm2015/components/column-resize/overlay-handle.component.js +139 -139
- package/esm2015/components/column-resize/resize-ref.js +25 -25
- package/esm2015/components/column-resize/resizing.store.js +154 -154
- package/esm2015/components/column-resize/selectors.js +4 -4
- package/esm2015/components/contextmenu/contextmenu.component.js +64 -64
- package/esm2015/components/conversion-hint/conversion-hint.component.js +59 -59
- package/esm2015/components/element/element.component.js +23 -23
- package/esm2015/components/inline-toolbar/inline-toolbar.component.js +126 -126
- package/esm2015/components/nav-split-line/nav-split-line.component.js +36 -36
- package/esm2015/components/table-select/table-select.component.js +53 -53
- package/esm2015/components/template/template.component.js +66 -66
- package/esm2015/components/text/text.component.js +57 -57
- package/esm2015/components/toolbar/toolbar.component.js +250 -250
- package/esm2015/components/toolbar-dropdown/toolbar-dropdown.component.js +132 -132
- package/esm2015/components/toolbar-group/toolbar-group.component.js +116 -116
- package/esm2015/components/toolbar-item/toolbar-item.component.js +64 -64
- package/esm2015/constants/auto-format-rules.js +166 -166
- package/esm2015/constants/code.js +88 -88
- package/esm2015/constants/color-select.js +61 -61
- package/esm2015/constants/default.js +9 -9
- package/esm2015/constants/error.js +7 -7
- package/esm2015/constants/index.js +5 -5
- package/esm2015/constants/node-types.js +132 -132
- package/esm2015/constants/selector.js +3 -3
- package/esm2015/constants/toolbar.js +69 -69
- package/esm2015/core/create-plugin.js +4 -4
- package/esm2015/core/create-toolbar.js +56 -56
- package/esm2015/core/index.js +4 -4
- package/esm2015/core/toolbar-item/base-toolbar-item.js +91 -91
- package/esm2015/core/utils/combine-plugins.js +9 -9
- package/esm2015/core/utils/flatten-deep-plugins.js +18 -18
- package/esm2015/core/utils/get-plugin-options.js +2 -2
- package/esm2015/core/utils/get-plugin.js +1 -1
- package/esm2015/core/utils/get-plugins.js +4 -4
- package/esm2015/core/utils/index.js +10 -10
- package/esm2015/core/utils/merge-array.js +17 -17
- package/esm2015/core/utils/merge-deep-plugins.js +13 -13
- package/esm2015/core/utils/merge-options.js +19 -19
- package/esm2015/core/utils/nested-structure-by-key.js +10 -10
- package/esm2015/core/utils/plugins-by-key.js +9 -9
- package/esm2015/core/with-theia.js +22 -22
- package/esm2015/custom-types.js +1 -1
- package/esm2015/editor.component.js +439 -439
- package/esm2015/editor.module.js +201 -201
- package/esm2015/interfaces/auto-format.js +1 -1
- package/esm2015/interfaces/editor.js +22 -22
- package/esm2015/interfaces/element.js +1 -1
- package/esm2015/interfaces/image.js +2 -2
- package/esm2015/interfaces/index.js +8 -8
- package/esm2015/interfaces/plugins/index.js +4 -4
- package/esm2015/interfaces/plugins/no-infer.js +1 -1
- package/esm2015/interfaces/plugins/plugin-key.js +39 -39
- package/esm2015/interfaces/plugins/plugins.js +1 -1
- package/esm2015/interfaces/plugins/with-override.js +1 -1
- package/esm2015/interfaces/reset-block-type-plugin-options.js +2 -2
- package/esm2015/interfaces/toolbar.js +11 -11
- package/esm2015/interfaces/upload.js +2 -2
- package/esm2015/interfaces/utility/index.js +3 -3
- package/esm2015/interfaces/utility/nested-structure-by-key.js +1 -1
- package/esm2015/interfaces/utility/override-by-key.js +1 -1
- package/esm2015/interfaces/utility/types.js +1 -1
- package/esm2015/interfaces/valid-children-types.js +35 -35
- package/esm2015/interfaces/view-base.js +21 -21
- package/esm2015/pipes.js +42 -42
- package/esm2015/plugins/align/align.editor.js +47 -47
- package/esm2015/plugins/align/align.plugin.js +63 -63
- package/esm2015/plugins/autoformat/autoformat.plugin.js +109 -109
- package/esm2015/plugins/autoformat/transforms/auto-format-block.js +14 -14
- package/esm2015/plugins/autoformat/transforms/auto-format-inline.js +77 -77
- package/esm2015/plugins/blockquote/blockquote.component.js +21 -21
- package/esm2015/plugins/blockquote/blockquote.editor.js +20 -20
- package/esm2015/plugins/blockquote/blockquote.plugin.js +70 -70
- package/esm2015/plugins/code/code.component.js +244 -244
- package/esm2015/plugins/code/code.editor.js +47 -47
- package/esm2015/plugins/code/code.plugin.js +41 -41
- package/esm2015/plugins/color/color.editor.js +44 -44
- package/esm2015/plugins/color/color.plugin.js +27 -27
- package/esm2015/plugins/color/toolbar-item.component.js +79 -79
- package/esm2015/plugins/common/auto-insert-data..js +77 -77
- package/esm2015/plugins/common/block-card.plugin.js +286 -286
- package/esm2015/plugins/common/get-fragment.plugin.js +24 -24
- package/esm2015/plugins/common/history.plugin.js +30 -30
- package/esm2015/plugins/common/move-selection.plugin.js +89 -89
- package/esm2015/plugins/common/remove-empty.plugin.js +59 -59
- package/esm2015/plugins/common/remove-void.plugin.js +56 -56
- package/esm2015/plugins/common/reset-type.plugin.js +34 -34
- package/esm2015/plugins/common/transforms.plugin.js +17 -17
- package/esm2015/plugins/deserializers/deserialize-html.plugin.js +38 -38
- package/esm2015/plugins/deserializers/deserialize-md.plugin.js +121 -121
- package/esm2015/plugins/font-size/font-size.editor.js +97 -97
- package/esm2015/plugins/heading/heading.editor.js +53 -53
- package/esm2015/plugins/heading/heading.plugin.js +84 -84
- package/esm2015/plugins/hr/hr.component.js +40 -40
- package/esm2015/plugins/hr/hr.editor.js +7 -7
- package/esm2015/plugins/hr/hr.plugin.js +41 -41
- package/esm2015/plugins/image/image.component.js +369 -369
- package/esm2015/plugins/image/image.editor.js +57 -57
- package/esm2015/plugins/image/image.plugin.js +57 -57
- package/esm2015/plugins/indent/indent.editor.js +72 -72
- package/esm2015/plugins/indent/indent.plugin.js +59 -59
- package/esm2015/plugins/indent/on-keydown-indent.js +53 -53
- package/esm2015/plugins/index.js +70 -70
- package/esm2015/plugins/inline-code/inline-code.component.js +21 -21
- package/esm2015/plugins/inline-code/inline-code.editor.js +48 -48
- package/esm2015/plugins/inline-code/inline-code.plugin.js +65 -65
- package/esm2015/plugins/link/edit/link-edit.component.js +108 -108
- package/esm2015/plugins/link/hover/link-hover.component.js +39 -39
- package/esm2015/plugins/link/link.component.js +162 -162
- package/esm2015/plugins/link/link.editor.js +66 -66
- package/esm2015/plugins/link/link.plugin.js +58 -58
- package/esm2015/plugins/link/link.types.js +12 -12
- package/esm2015/plugins/list/components/bulleted-list.component.js +33 -33
- package/esm2015/plugins/list/components/list-item.component.js +94 -94
- package/esm2015/plugins/list/components/numbered-list.component.js +39 -39
- package/esm2015/plugins/list/list.editor.js +125 -125
- package/esm2015/plugins/list/list.plugin.js +280 -280
- package/esm2015/plugins/list/normalizers/get-list-normalizer.js +39 -39
- package/esm2015/plugins/list/normalizers/normalize-list-item.js +19 -19
- package/esm2015/plugins/list/normalizers/normalize-no.js +42 -42
- package/esm2015/plugins/list/on-key-down-list.js +32 -32
- package/esm2015/plugins/list/queries/get-list-item-entry.js +27 -27
- package/esm2015/plugins/list/queries/get-list-item-sublist.js +12 -12
- package/esm2015/plugins/list/queries/get-list-types.js +5 -5
- package/esm2015/plugins/list/queries/get-start-list-item.js +26 -26
- package/esm2015/plugins/list/queries/has-list-in-list-item.js +27 -27
- package/esm2015/plugins/list/queries/is-in-list.js +5 -5
- package/esm2015/plugins/list/queries/is-list-nested.js +10 -10
- package/esm2015/plugins/list/queries/is-list.js +5 -5
- package/esm2015/plugins/list/queries/is-node-type-list.js +4 -4
- package/esm2015/plugins/list/queries/is-selection-at-list-item-start.js +12 -12
- package/esm2015/plugins/list/queries/is-selection-in-same-list-item.js +16 -16
- package/esm2015/plugins/list/queries/is-single-list-item.js +9 -9
- package/esm2015/plugins/list/transforms/insert-list-data.js +71 -71
- package/esm2015/plugins/list/transforms/insert-list-item.js +72 -72
- package/esm2015/plugins/list/transforms/move-list-item-down.js +41 -41
- package/esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.js +42 -42
- package/esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list.js +29 -29
- package/esm2015/plugins/list/transforms/move-list-item-up.js +77 -77
- package/esm2015/plugins/list/transforms/unwrap-list.js +9 -9
- package/esm2015/plugins/list/types.js +2 -2
- package/esm2015/plugins/mark/mark.editor.js +28 -28
- package/esm2015/plugins/mark/mark.plugin.js +101 -101
- package/esm2015/plugins/node-id/node-id.plugin.js +68 -68
- package/esm2015/plugins/normalizers/insert-paragraph-nodes.js +28 -28
- package/esm2015/plugins/normalizers/remove-empty-nodes.js +17 -17
- package/esm2015/plugins/normalizers/trailing-node.plugin.js +33 -33
- package/esm2015/plugins/paint-format/paint-format.editor.js +122 -122
- package/esm2015/plugins/public-api.js +15 -15
- package/esm2015/plugins/quick-insert/components/quick-insert.component.js +101 -101
- package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +83 -83
- package/esm2015/plugins/quick-insert/quick-insert.editor.js +52 -52
- package/esm2015/plugins/quick-insert/quick-insert.plugin.js +74 -74
- package/esm2015/plugins/soft-break/soft-break.plugin.js +36 -36
- package/esm2015/plugins/soft-break/soft-break.types.js +1 -1
- package/esm2015/plugins/table/components/insert-mark/insert-mark.component.js +102 -102
- package/esm2015/plugins/table/components/row/row.component.js +46 -46
- package/esm2015/plugins/table/components/table.component.js +469 -469
- package/esm2015/plugins/table/components/td/td.component.js +698 -698
- package/esm2015/plugins/table/components/toolbar/table-options.component.js +67 -67
- package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +161 -161
- package/esm2015/plugins/table/table.editor.js +182 -182
- package/esm2015/plugins/table/table.plugin.js +423 -423
- package/esm2015/plugins/table/table.service.js +102 -102
- package/esm2015/plugins/table/table.store.js +479 -479
- package/esm2015/plugins/table/table.types.js +33 -33
- package/esm2015/plugins/table/toolbar-item.component.js +61 -61
- package/esm2015/plugins/table/transforms/clear-cell.js +11 -11
- package/esm2015/plugins/table/transforms/clear-table-node.js +27 -27
- package/esm2015/plugins/table/transforms/insert-column.js +57 -57
- package/esm2015/plugins/table/transforms/insert-row.js +42 -42
- package/esm2015/plugins/table/transforms/insert-table.js +14 -14
- package/esm2015/plugins/table/transforms/remove-column.js +51 -51
- package/esm2015/plugins/table/transforms/remove-row.js +50 -50
- package/esm2015/plugins/table/transforms/remove-table.js +49 -49
- package/esm2015/plugins/table/utils/add-columns.js +28 -28
- package/esm2015/plugins/table/utils/calc-anchor-position.js +24 -24
- package/esm2015/plugins/table/utils/calc-span.js +72 -72
- package/esm2015/plugins/table/utils/create-cell.js +19 -19
- package/esm2015/plugins/table/utils/create-row.js +12 -12
- package/esm2015/plugins/table/utils/create-table.js +13 -13
- package/esm2015/plugins/table/utils/get-base-height.js +22 -22
- package/esm2015/plugins/table/utils/get-select-cell-node.js +16 -16
- package/esm2015/plugins/table/utils/index.js +8 -8
- package/esm2015/plugins/table/utils/is-range-in-table.js +16 -16
- package/esm2015/plugins/table/utils/is-selection-in-table.js +11 -11
- package/esm2015/plugins/table/utils/is-virtual-key.js +13 -13
- package/esm2015/plugins/table/utils/merge-cell.js +90 -90
- package/esm2015/plugins/table/utils/next-path.js +5 -5
- package/esm2015/plugins/table/utils/normalize-table.js +30 -30
- package/esm2015/plugins/table/utils/remove-columns.js +23 -23
- package/esm2015/plugins/table/utils/set-menu-cell-invisibility.js +15 -15
- package/esm2015/plugins/table/utils/split-cell.js +31 -31
- package/esm2015/plugins/table/utils/table-position.js +242 -242
- package/esm2015/plugins/todo-item/todo-item.component.js +55 -55
- package/esm2015/plugins/todo-item/todo-item.editor.js +31 -31
- package/esm2015/plugins/todo-item/todo-item.plugin.js +78 -78
- package/esm2015/plugins/vertical-align/toolbar-item.component.js +89 -89
- package/esm2015/plugins/vertical-align/vertical-align.editor.js +54 -54
- package/esm2015/public-api.js +23 -23
- package/esm2015/queries/anchor-block-entry.js +13 -13
- package/esm2015/queries/anchor-block.js +6 -6
- package/esm2015/queries/anchor-inline-entry.js +10 -10
- package/esm2015/queries/find-descendant.js +47 -47
- package/esm2015/queries/find-node.js +45 -45
- package/esm2015/queries/find-path.js +28 -28
- package/esm2015/queries/get-above-by-type.js +10 -10
- package/esm2015/queries/get-above.js +9 -9
- package/esm2015/queries/get-anchor-block-entry.js +8 -8
- package/esm2015/queries/get-block-above.js +7 -7
- package/esm2015/queries/get-block-card-above.js +7 -7
- package/esm2015/queries/get-block-card-cursor.js +5 -5
- package/esm2015/queries/get-container-blocks.js +11 -11
- package/esm2015/queries/get-directly-parent.js +11 -11
- package/esm2015/queries/get-insert-elements-path.js +43 -43
- package/esm2015/queries/get-last-child-path.js +9 -9
- package/esm2015/queries/get-last-node.js +17 -17
- package/esm2015/queries/get-next-sibling-nodes.js +17 -17
- package/esm2015/queries/get-node.js +10 -10
- package/esm2015/queries/get-nodes-by-type.js +12 -12
- package/esm2015/queries/get-nodes.js +7 -7
- package/esm2015/queries/get-parent.js +12 -12
- package/esm2015/queries/get-plain-text.js +16 -16
- package/esm2015/queries/get-plugin-by-toolbar.js +12 -12
- package/esm2015/queries/get-point-before.js +62 -62
- package/esm2015/queries/get-point-from-location.js +15 -15
- package/esm2015/queries/get-previous-path.js +9 -9
- package/esm2015/queries/get-rang-from-block-start.js +16 -16
- package/esm2015/queries/get-range-before.js +17 -17
- package/esm2015/queries/get-selection-marks.js +19 -19
- package/esm2015/queries/get-selection-nodes-by-type.js +29 -29
- package/esm2015/queries/get-text.js +9 -9
- package/esm2015/queries/get-toolbar-disabled.js +13 -13
- package/esm2015/queries/index.js +59 -58
- package/esm2015/queries/is-across-blocks.js +7 -7
- package/esm2015/queries/is-ancestor-empty.js +6 -6
- package/esm2015/queries/is-ancestor.js +3 -3
- package/esm2015/queries/is-block-above-empty.js +11 -11
- package/esm2015/queries/is-block-active.js +7 -7
- package/esm2015/queries/is-block-card-cursor.js +4 -4
- package/esm2015/queries/is-block-text-empty-after-selection.js +31 -31
- package/esm2015/queries/is-collapsed.js +7 -7
- package/esm2015/queries/is-contain-nested-type.js +28 -28
- package/esm2015/queries/is-container-type.js +2 -2
- package/esm2015/queries/is-descendant.js +3 -3
- package/esm2015/queries/is-empty-content.js +15 -0
- package/esm2015/queries/is-empty-paragraph-by-path.js +7 -7
- package/esm2015/queries/is-empty-paragraph.js +11 -11
- package/esm2015/queries/is-first-child.js +5 -5
- package/esm2015/queries/is-include-types.js +11 -11
- package/esm2015/queries/is-node-type-in.js +9 -9
- package/esm2015/queries/is-node-type.js +15 -15
- package/esm2015/queries/is-paragraph.js +9 -9
- package/esm2015/queries/is-point-at-root.js +2 -2
- package/esm2015/queries/is-range-across-blocks.js +18 -18
- package/esm2015/queries/is-range-at-root.js +3 -3
- package/esm2015/queries/is-start.js +6 -6
- package/esm2015/queries/some-node.js +9 -9
- package/esm2015/services/color-select.service.js +49 -49
- package/esm2015/services/context.service.js +59 -59
- package/esm2015/services/table-contextmenu.service.js +189 -189
- package/esm2015/services/toolbar.service.js +47 -47
- package/esm2015/shortcuts/index.js +5 -5
- package/esm2015/shortcuts/mark.js +24 -24
- package/esm2015/transforms/apply-deep-to-nodes.js +21 -21
- package/esm2015/transforms/clear-marks.js +23 -23
- package/esm2015/transforms/close-conversion-hint.js +8 -8
- package/esm2015/transforms/delete-element.js +11 -11
- package/esm2015/transforms/handle-continual-delete-backward.js +17 -17
- package/esm2015/transforms/handle-continual-insert-break.js +19 -19
- package/esm2015/transforms/index.js +18 -18
- package/esm2015/transforms/insert-elements.js +34 -34
- package/esm2015/transforms/insert-paragraph.js +6 -6
- package/esm2015/transforms/merge-deep-to-nodes.js +8 -8
- package/esm2015/transforms/move-children.js +21 -21
- package/esm2015/transforms/on-keydown-reset-block-type.js +22 -22
- package/esm2015/transforms/set-end-selection.js +10 -10
- package/esm2015/transforms/set-marks.js +9 -9
- package/esm2015/transforms/set-node.js +5 -5
- package/esm2015/transforms/split-node.js +31 -31
- package/esm2015/transforms/un-hang-range.js +11 -11
- package/esm2015/transforms/un-wrap.js +11 -11
- package/esm2015/transforms/unwrap-nodes-by-type.js +11 -11
- package/esm2015/utils/auto-focus.js +13 -13
- package/esm2015/utils/auto-scroll-view.js +24 -24
- package/esm2015/utils/cast-array.js +7 -7
- package/esm2015/utils/common.js +2 -2
- package/esm2015/utils/create-empty-paragraph.js +14 -14
- package/esm2015/utils/data-transform.js +48 -48
- package/esm2015/utils/dom.js +46 -46
- package/esm2015/utils/editor-uuid.js +8 -8
- package/esm2015/utils/fragment.js +65 -65
- package/esm2015/utils/get-editable-element-height.js +6 -6
- package/esm2015/utils/get-toolbar-class.js +6 -6
- package/esm2015/utils/id-creator.js +11 -11
- package/esm2015/utils/index.js +13 -13
- package/esm2015/utils/is-clean-empty-paragraph.js +36 -36
- package/esm2015/utils/is-inline.js +9 -9
- package/esm2015/utils/lodash.js +3 -3
- package/esm2015/utils/match.js +29 -29
- package/esm2015/utils/merge-element-options.js +19 -19
- package/esm2015/utils/weak-maps.js +3 -3
- package/esm2015/worktile-theia.js +4 -4
- package/fesm2015/worktile-theia.js +13156 -13142
- package/fesm2015/worktile-theia.js.map +1 -1
- package/interfaces/auto-format.d.ts +64 -64
- package/interfaces/editor.d.ts +146 -146
- package/interfaces/element.d.ts +9 -9
- package/interfaces/image.d.ts +25 -25
- package/interfaces/index.d.ts +8 -8
- package/interfaces/plugins/index.d.ts +4 -4
- package/interfaces/plugins/no-infer.d.ts +1 -1
- package/interfaces/plugins/plugin-key.d.ts +48 -48
- package/interfaces/plugins/plugins.d.ts +45 -45
- package/interfaces/plugins/with-override.d.ts +7 -7
- package/interfaces/reset-block-type-plugin-options.d.ts +23 -23
- package/interfaces/toolbar.d.ts +64 -64
- package/interfaces/upload.d.ts +11 -11
- package/interfaces/utility/index.d.ts +3 -3
- package/interfaces/utility/nested-structure-by-key.d.ts +3 -3
- package/interfaces/utility/override-by-key.d.ts +3 -3
- package/interfaces/utility/types.d.ts +1 -1
- package/interfaces/valid-children-types.d.ts +9 -9
- package/interfaces/view-base.d.ts +9 -9
- package/package.json +1 -1
- package/pipes.d.ts +16 -16
- package/plugins/align/align.editor.d.ts +7 -7
- package/plugins/align/align.plugin.d.ts +2 -2
- package/plugins/autoformat/autoformat.plugin.d.ts +6 -6
- package/plugins/autoformat/transforms/auto-format-block.d.ts +5 -5
- package/plugins/autoformat/transforms/auto-format-inline.d.ts +9 -9
- package/plugins/blockquote/blockquote.component.d.ts +11 -11
- package/plugins/blockquote/blockquote.editor.d.ts +4 -4
- package/plugins/blockquote/blockquote.plugin.d.ts +2 -2
- package/plugins/code/code.component.d.ts +65 -65
- package/plugins/code/code.editor.d.ts +8 -8
- package/plugins/code/code.plugin.d.ts +2 -2
- package/plugins/color/color.editor.d.ts +8 -8
- package/plugins/color/color.plugin.d.ts +1 -1
- package/plugins/color/toolbar-item.component.d.ts +16 -16
- package/plugins/common/auto-insert-data..d.ts +2 -2
- package/plugins/common/block-card.plugin.d.ts +2 -2
- package/plugins/common/get-fragment.plugin.d.ts +6 -6
- package/plugins/common/history.plugin.d.ts +9 -9
- package/plugins/common/move-selection.plugin.d.ts +2 -2
- package/plugins/common/remove-empty.plugin.d.ts +2 -2
- package/plugins/common/remove-void.plugin.d.ts +2 -2
- package/plugins/common/reset-type.plugin.d.ts +2 -2
- package/plugins/common/transforms.plugin.d.ts +8 -8
- package/plugins/deserializers/deserialize-html.plugin.d.ts +2 -2
- package/plugins/deserializers/deserialize-md.plugin.d.ts +2 -2
- package/plugins/font-size/font-size.editor.d.ts +10 -10
- package/plugins/heading/heading.editor.d.ts +9 -9
- package/plugins/heading/heading.plugin.d.ts +7 -7
- package/plugins/hr/hr.component.d.ts +12 -12
- package/plugins/hr/hr.editor.d.ts +4 -4
- package/plugins/hr/hr.plugin.d.ts +2 -2
- package/plugins/image/image.component.d.ts +74 -74
- package/plugins/image/image.editor.d.ts +12 -12
- package/plugins/image/image.plugin.d.ts +7 -7
- package/plugins/indent/indent.editor.d.ts +10 -10
- package/plugins/indent/indent.plugin.d.ts +8 -8
- package/plugins/indent/on-keydown-indent.d.ts +3 -3
- package/plugins/index.d.ts +1 -1
- package/plugins/inline-code/inline-code.component.d.ts +9 -9
- package/plugins/inline-code/inline-code.editor.d.ts +7 -7
- package/plugins/inline-code/inline-code.plugin.d.ts +2 -2
- package/plugins/link/edit/link-edit.component.d.ts +36 -36
- package/plugins/link/hover/link-hover.component.d.ts +15 -15
- package/plugins/link/link.component.d.ts +39 -39
- package/plugins/link/link.editor.d.ts +7 -7
- package/plugins/link/link.plugin.d.ts +2 -2
- package/plugins/link/link.types.d.ts +9 -9
- package/plugins/list/components/bulleted-list.component.d.ts +15 -15
- package/plugins/list/components/list-item.component.d.ts +20 -20
- package/plugins/list/components/numbered-list.component.d.ts +16 -16
- package/plugins/list/list.editor.d.ts +12 -12
- package/plugins/list/list.plugin.d.ts +3 -3
- package/plugins/list/normalizers/get-list-normalizer.d.ts +6 -6
- package/plugins/list/normalizers/normalize-list-item.d.ts +5 -5
- package/plugins/list/normalizers/normalize-no.d.ts +2 -2
- package/plugins/list/on-key-down-list.d.ts +2 -2
- package/plugins/list/queries/get-list-item-entry.d.ts +10 -10
- package/plugins/list/queries/get-list-item-sublist.d.ts +6 -6
- package/plugins/list/queries/get-list-types.d.ts +2 -2
- package/plugins/list/queries/get-start-list-item.d.ts +8 -8
- package/plugins/list/queries/has-list-in-list-item.d.ts +15 -15
- package/plugins/list/queries/is-in-list.d.ts +2 -2
- package/plugins/list/queries/is-list-nested.d.ts +5 -5
- package/plugins/list/queries/is-list.d.ts +2 -2
- package/plugins/list/queries/is-node-type-list.d.ts +2 -2
- package/plugins/list/queries/is-selection-at-list-item-start.d.ts +5 -5
- package/plugins/list/queries/is-selection-in-same-list-item.d.ts +5 -5
- package/plugins/list/queries/is-single-list-item.d.ts +5 -5
- package/plugins/list/transforms/insert-list-data.d.ts +12 -12
- package/plugins/list/transforms/insert-list-item.d.ts +5 -5
- package/plugins/list/transforms/move-list-item-down.d.ts +6 -6
- package/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.d.ts +20 -20
- package/plugins/list/transforms/move-list-item-sublist-items-to-list.d.ts +19 -19
- package/plugins/list/transforms/move-list-item-up.d.ts +10 -10
- package/plugins/list/transforms/unwrap-list.d.ts +2 -2
- package/plugins/list/types.d.ts +7 -7
- package/plugins/mark/mark.editor.d.ts +8 -8
- package/plugins/mark/mark.plugin.d.ts +3 -3
- package/plugins/node-id/node-id.plugin.d.ts +8 -8
- package/plugins/normalizers/insert-paragraph-nodes.d.ts +7 -7
- package/plugins/normalizers/remove-empty-nodes.d.ts +7 -7
- package/plugins/normalizers/trailing-node.plugin.d.ts +9 -9
- package/plugins/paint-format/paint-format.editor.d.ts +8 -8
- package/plugins/public-api.d.ts +15 -15
- package/plugins/quick-insert/components/quick-insert.component.d.ts +28 -28
- package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +28 -28
- package/plugins/quick-insert/quick-insert.editor.d.ts +7 -7
- package/plugins/quick-insert/quick-insert.plugin.d.ts +10 -10
- package/plugins/soft-break/soft-break.plugin.d.ts +5 -5
- package/plugins/soft-break/soft-break.types.d.ts +8 -8
- package/plugins/table/components/insert-mark/insert-mark.component.d.ts +24 -24
- package/plugins/table/components/row/row.component.d.ts +14 -14
- package/plugins/table/components/table.component.d.ts +79 -79
- package/plugins/table/components/td/td.component.d.ts +95 -95
- package/plugins/table/components/toolbar/table-options.component.d.ts +20 -20
- package/plugins/table/components/toolbar/table-toolbar.component.d.ts +38 -38
- package/plugins/table/table.editor.d.ts +25 -25
- package/plugins/table/table.plugin.d.ts +3 -3
- package/plugins/table/table.service.d.ts +30 -30
- package/plugins/table/table.store.d.ts +71 -71
- package/plugins/table/table.types.d.ts +67 -67
- package/plugins/table/toolbar-item.component.d.ts +17 -17
- package/plugins/table/transforms/clear-cell.d.ts +6 -6
- package/plugins/table/transforms/clear-table-node.d.ts +6 -6
- package/plugins/table/transforms/insert-column.d.ts +12 -12
- package/plugins/table/transforms/insert-row.d.ts +6 -6
- package/plugins/table/transforms/insert-table.d.ts +6 -6
- package/plugins/table/transforms/remove-column.d.ts +3 -3
- package/plugins/table/transforms/remove-row.d.ts +3 -3
- package/plugins/table/transforms/remove-table.d.ts +3 -3
- package/plugins/table/utils/add-columns.d.ts +2 -2
- package/plugins/table/utils/calc-anchor-position.d.ts +6 -6
- package/plugins/table/utils/calc-span.d.ts +11 -11
- package/plugins/table/utils/create-cell.d.ts +16 -16
- package/plugins/table/utils/create-row.d.ts +7 -7
- package/plugins/table/utils/create-table.d.ts +7 -7
- package/plugins/table/utils/get-base-height.d.ts +9 -9
- package/plugins/table/utils/get-select-cell-node.d.ts +7 -7
- package/plugins/table/utils/index.d.ts +7 -7
- package/plugins/table/utils/is-range-in-table.d.ts +6 -6
- package/plugins/table/utils/is-selection-in-table.d.ts +6 -6
- package/plugins/table/utils/is-virtual-key.d.ts +1 -1
- package/plugins/table/utils/merge-cell.d.ts +21 -21
- package/plugins/table/utils/next-path.d.ts +2 -2
- package/plugins/table/utils/normalize-table.d.ts +2 -2
- package/plugins/table/utils/remove-columns.d.ts +2 -2
- package/plugins/table/utils/set-menu-cell-invisibility.d.ts +3 -3
- package/plugins/table/utils/split-cell.d.ts +4 -4
- package/plugins/table/utils/table-position.d.ts +97 -97
- package/plugins/todo-item/todo-item.component.d.ts +21 -21
- package/plugins/todo-item/todo-item.editor.d.ts +5 -5
- package/plugins/todo-item/todo-item.plugin.d.ts +5 -5
- package/plugins/vertical-align/toolbar-item.component.d.ts +25 -25
- package/plugins/vertical-align/vertical-align.editor.d.ts +7 -7
- package/public-api.d.ts +20 -20
- package/queries/anchor-block-entry.d.ts +2 -2
- package/queries/anchor-block.d.ts +2 -2
- package/queries/anchor-inline-entry.d.ts +2 -2
- package/queries/find-descendant.d.ts +10 -10
- package/queries/find-node.d.ts +15 -15
- package/queries/find-path.d.ts +6 -6
- package/queries/get-above-by-type.d.ts +6 -6
- package/queries/get-above.d.ts +6 -6
- package/queries/get-anchor-block-entry.d.ts +2 -2
- package/queries/get-block-above.d.ts +7 -7
- package/queries/get-block-card-above.d.ts +7 -7
- package/queries/get-block-card-cursor.d.ts +2 -2
- package/queries/get-container-blocks.d.ts +2 -2
- package/queries/get-directly-parent.d.ts +2 -2
- package/queries/get-insert-elements-path.d.ts +7 -7
- package/queries/get-last-child-path.d.ts +6 -6
- package/queries/get-last-node.d.ts +2 -2
- package/queries/get-next-sibling-nodes.d.ts +7 -7
- package/queries/get-node.d.ts +2 -2
- package/queries/get-nodes-by-type.d.ts +6 -6
- package/queries/get-nodes.d.ts +4 -4
- package/queries/get-parent.d.ts +7 -7
- package/queries/get-plain-text.d.ts +6 -6
- package/queries/get-plugin-by-toolbar.d.ts +3 -3
- package/queries/get-point-before.d.ts +38 -38
- package/queries/get-point-from-location.d.ts +5 -5
- package/queries/get-previous-path.d.ts +2 -2
- package/queries/get-rang-from-block-start.d.ts +9 -9
- package/queries/get-range-before.d.ts +7 -7
- package/queries/get-selection-marks.d.ts +12 -12
- package/queries/get-selection-nodes-by-type.d.ts +3 -3
- package/queries/get-text.d.ts +6 -6
- package/queries/get-toolbar-disabled.d.ts +4 -4
- package/queries/index.d.ts +58 -57
- package/queries/is-across-blocks.d.ts +2 -2
- package/queries/is-ancestor-empty.d.ts +5 -5
- package/queries/is-ancestor.d.ts +2 -2
- package/queries/is-block-above-empty.d.ts +5 -5
- package/queries/is-block-active.d.ts +3 -3
- package/queries/is-block-card-cursor.d.ts +2 -2
- package/queries/is-block-text-empty-after-selection.d.ts +7 -7
- package/queries/is-collapsed.d.ts +6 -6
- package/queries/is-contain-nested-type.d.ts +2 -2
- package/queries/is-container-type.d.ts +2 -2
- package/queries/is-descendant.d.ts +2 -2
- package/queries/is-empty-content.d.ts +2 -0
- package/queries/is-empty-paragraph-by-path.d.ts +2 -2
- package/queries/is-empty-paragraph.d.ts +2 -2
- package/queries/is-first-child.d.ts +5 -5
- package/queries/is-include-types.d.ts +3 -3
- package/queries/is-node-type-in.d.ts +6 -6
- package/queries/is-node-type.d.ts +6 -6
- package/queries/is-paragraph.d.ts +2 -2
- package/queries/is-point-at-root.d.ts +2 -2
- package/queries/is-range-across-blocks.d.ts +8 -8
- package/queries/is-range-at-root.d.ts +2 -2
- package/queries/is-start.d.ts +5 -5
- package/queries/some-node.d.ts +7 -7
- package/services/color-select.service.d.ts +20 -20
- package/services/context.service.d.ts +49 -49
- package/services/table-contextmenu.service.d.ts +25 -25
- package/services/toolbar.service.d.ts +9 -9
- package/shortcuts/index.d.ts +2 -2
- package/shortcuts/mark.d.ts +2 -2
- package/transforms/apply-deep-to-nodes.d.ts +12 -12
- package/transforms/clear-marks.d.ts +2 -2
- package/transforms/close-conversion-hint.d.ts +2 -2
- package/transforms/delete-element.d.ts +2 -2
- package/transforms/handle-continual-delete-backward.d.ts +3 -3
- package/transforms/handle-continual-insert-break.d.ts +3 -3
- package/transforms/index.d.ts +18 -18
- package/transforms/insert-elements.d.ts +2 -2
- package/transforms/insert-paragraph.d.ts +2 -2
- package/transforms/merge-deep-to-nodes.d.ts +5 -5
- package/transforms/move-children.d.ts +24 -24
- package/transforms/on-keydown-reset-block-type.d.ts +3 -3
- package/transforms/set-end-selection.d.ts +2 -2
- package/transforms/set-marks.d.ts +12 -12
- package/transforms/set-node.d.ts +2 -2
- package/transforms/split-node.d.ts +3 -3
- package/transforms/un-hang-range.d.ts +10 -10
- package/transforms/un-wrap.d.ts +3 -3
- package/transforms/unwrap-nodes-by-type.d.ts +6 -6
- package/utils/auto-focus.d.ts +2 -2
- package/utils/auto-scroll-view.d.ts +6 -6
- package/utils/cast-array.d.ts +1 -1
- package/utils/common.d.ts +2 -2
- package/utils/create-empty-paragraph.d.ts +2 -2
- package/utils/data-transform.d.ts +6 -6
- package/utils/dom.d.ts +10 -10
- package/utils/editor-uuid.d.ts +3 -3
- package/utils/fragment.d.ts +10 -10
- package/utils/get-editable-element-height.d.ts +2 -2
- package/utils/get-toolbar-class.d.ts +2 -2
- package/utils/id-creator.d.ts +1 -1
- package/utils/index.d.ts +13 -13
- package/utils/is-clean-empty-paragraph.d.ts +9 -9
- package/utils/is-inline.d.ts +2 -2
- package/utils/lodash.d.ts +1 -1
- package/utils/match.d.ts +18 -18
- package/utils/merge-element-options.d.ts +2 -2
- package/utils/weak-maps.d.ts +5 -5
- package/worktile-theia.d.ts +5 -5
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { Element } from 'slate';
|
|
2
|
-
import { createPluginFactory, getPluginOptions } from '../../core';
|
|
3
|
-
import { PluginKeys } from '../../interfaces';
|
|
4
|
-
import * as TheQueries from '../../queries';
|
|
5
|
-
export const withGetFragment = (editor) => {
|
|
6
|
-
var _a, _b;
|
|
7
|
-
const { getFragment } = editor;
|
|
8
|
-
const elementKinds = (_b = (_a = getPluginOptions(editor, PluginKeys.getFragment)) === null || _a === void 0 ? void 0 : _a.types) !== null && _b !== void 0 ? _b : [];
|
|
9
|
-
editor.getFragment = () => {
|
|
10
|
-
const { selection } = editor;
|
|
11
|
-
const containerBlocks = [...elementKinds, ...TheQueries.getContainerBlocks(editor)];
|
|
12
|
-
if (selection && selection.anchor.path[0] === selection.focus.path[0]) {
|
|
13
|
-
const fragmentData = getFragment();
|
|
14
|
-
const nodes = TheQueries.getSelectionNodesByType(editor, fragmentData, containerBlocks);
|
|
15
|
-
return nodes && Element.isElement(nodes) ? nodes.children : fragmentData;
|
|
16
|
-
}
|
|
17
|
-
return getFragment();
|
|
18
|
-
};
|
|
19
|
-
return editor;
|
|
20
|
-
};
|
|
21
|
-
export const createGetFragmentPlugin = createPluginFactory({
|
|
22
|
-
key: PluginKeys.getFragment,
|
|
23
|
-
withOverrides: withGetFragment
|
|
24
|
-
});
|
|
1
|
+
import { Element } from 'slate';
|
|
2
|
+
import { createPluginFactory, getPluginOptions } from '../../core';
|
|
3
|
+
import { PluginKeys } from '../../interfaces';
|
|
4
|
+
import * as TheQueries from '../../queries';
|
|
5
|
+
export const withGetFragment = (editor) => {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
const { getFragment } = editor;
|
|
8
|
+
const elementKinds = (_b = (_a = getPluginOptions(editor, PluginKeys.getFragment)) === null || _a === void 0 ? void 0 : _a.types) !== null && _b !== void 0 ? _b : [];
|
|
9
|
+
editor.getFragment = () => {
|
|
10
|
+
const { selection } = editor;
|
|
11
|
+
const containerBlocks = [...elementKinds, ...TheQueries.getContainerBlocks(editor)];
|
|
12
|
+
if (selection && selection.anchor.path[0] === selection.focus.path[0]) {
|
|
13
|
+
const fragmentData = getFragment();
|
|
14
|
+
const nodes = TheQueries.getSelectionNodesByType(editor, fragmentData, containerBlocks);
|
|
15
|
+
return nodes && Element.isElement(nodes) ? nodes.children : fragmentData;
|
|
16
|
+
}
|
|
17
|
+
return getFragment();
|
|
18
|
+
};
|
|
19
|
+
return editor;
|
|
20
|
+
};
|
|
21
|
+
export const createGetFragmentPlugin = createPluginFactory({
|
|
22
|
+
key: PluginKeys.getFragment,
|
|
23
|
+
withOverrides: withGetFragment
|
|
24
|
+
});
|
|
25
25
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZyYWdtZW50LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2NvbW1vbi9nZXQtZnJhZ21lbnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQU01QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBbUIsTUFBUyxFQUFFLEVBQUU7O0lBQzNELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDL0IsTUFBTSxZQUFZLEdBQUcsTUFBQSxNQUFBLGdCQUFnQixDQUEyQixNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQywwQ0FBRSxLQUFLLG1DQUFJLEVBQUUsQ0FBQztJQUU3RyxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN0QixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxVQUFVLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuRSxNQUFNLFlBQVksR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN4RixPQUFPLEtBQUssSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDNUU7UUFDRCxPQUFPLFdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLG1CQUFtQixDQUEyQjtJQUNqRixHQUFHLEVBQUUsVUFBVSxDQUFDLFdBQVc7SUFDM0IsYUFBYSxFQUFFLGVBQWU7Q0FDakMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQ3VzdG9tRWxlbWVudEtpbmRzIH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnksIGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RnJhZ21lbnRQbHVnaW5PcHRpb25zIHtcbiAgICB0eXBlcz86IEN1c3RvbUVsZW1lbnRLaW5kc1tdO1xufVxuXG5leHBvcnQgY29uc3Qgd2l0aEdldEZyYWdtZW50ID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0RnJhZ21lbnQgfSA9IGVkaXRvcjtcbiAgICBjb25zdCBlbGVtZW50S2luZHMgPSBnZXRQbHVnaW5PcHRpb25zPEdldEZyYWdtZW50UGx1Z2luT3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLmdldEZyYWdtZW50KT8udHlwZXMgPz8gW107XG5cbiAgICBlZGl0b3IuZ2V0RnJhZ21lbnQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckJsb2NrcyA9IFsuLi5lbGVtZW50S2luZHMsIC4uLlRoZVF1ZXJpZXMuZ2V0Q29udGFpbmVyQmxvY2tzKGVkaXRvcildO1xuICAgICAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5hbmNob3IucGF0aFswXSA9PT0gc2VsZWN0aW9uLmZvY3VzLnBhdGhbMF0pIHtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RGF0YSA9IGdldEZyYWdtZW50KCk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IFRoZVF1ZXJpZXMuZ2V0U2VsZWN0aW9uTm9kZXNCeVR5cGUoZWRpdG9yLCBmcmFnbWVudERhdGEsIGNvbnRhaW5lckJsb2Nrcyk7XG4gICAgICAgICAgICByZXR1cm4gbm9kZXMgJiYgRWxlbWVudC5pc0VsZW1lbnQobm9kZXMpID8gbm9kZXMuY2hpbGRyZW4gOiBmcmFnbWVudERhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEZyYWdtZW50KCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR2V0RnJhZ21lbnRQbHVnaW4gPSBjcmVhdGVQbHVnaW5GYWN0b3J5PEdldEZyYWdtZW50UGx1Z2luT3B0aW9ucz4oe1xuICAgIGtleTogUGx1Z2luS2V5cy5nZXRGcmFnbWVudCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoR2V0RnJhZ21lbnRcbn0pO1xuIl19
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { createPluginFactory } from '../../core';
|
|
2
|
-
import { PluginKeys } from '../../interfaces';
|
|
3
|
-
export const UNDOING = new WeakMap();
|
|
4
|
-
export const REDOING = new WeakMap();
|
|
5
|
-
export const withTheHistory = (editor) => {
|
|
6
|
-
const { undo, redo } = editor;
|
|
7
|
-
editor.undo = () => {
|
|
8
|
-
UNDOING.set(editor, true);
|
|
9
|
-
undo();
|
|
10
|
-
UNDOING.set(editor, false);
|
|
11
|
-
};
|
|
12
|
-
editor.redo = () => {
|
|
13
|
-
REDOING.set(editor, true);
|
|
14
|
-
redo();
|
|
15
|
-
REDOING.set(editor, false);
|
|
16
|
-
};
|
|
17
|
-
return editor;
|
|
18
|
-
};
|
|
19
|
-
export const TheHistoryEditor = {
|
|
20
|
-
isUndoing(editor) {
|
|
21
|
-
return UNDOING.get(editor);
|
|
22
|
-
},
|
|
23
|
-
isRedoing(editor) {
|
|
24
|
-
return REDOING.get(editor);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
export const createTheHistoryPlugin = createPluginFactory({
|
|
28
|
-
key: PluginKeys.theHistory,
|
|
29
|
-
withOverrides: withTheHistory
|
|
30
|
-
});
|
|
1
|
+
import { createPluginFactory } from '../../core';
|
|
2
|
+
import { PluginKeys } from '../../interfaces';
|
|
3
|
+
export const UNDOING = new WeakMap();
|
|
4
|
+
export const REDOING = new WeakMap();
|
|
5
|
+
export const withTheHistory = (editor) => {
|
|
6
|
+
const { undo, redo } = editor;
|
|
7
|
+
editor.undo = () => {
|
|
8
|
+
UNDOING.set(editor, true);
|
|
9
|
+
undo();
|
|
10
|
+
UNDOING.set(editor, false);
|
|
11
|
+
};
|
|
12
|
+
editor.redo = () => {
|
|
13
|
+
REDOING.set(editor, true);
|
|
14
|
+
redo();
|
|
15
|
+
REDOING.set(editor, false);
|
|
16
|
+
};
|
|
17
|
+
return editor;
|
|
18
|
+
};
|
|
19
|
+
export const TheHistoryEditor = {
|
|
20
|
+
isUndoing(editor) {
|
|
21
|
+
return UNDOING.get(editor);
|
|
22
|
+
},
|
|
23
|
+
isRedoing(editor) {
|
|
24
|
+
return REDOING.get(editor);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
export const createTheHistoryPlugin = createPluginFactory({
|
|
28
|
+
key: PluginKeys.theHistory,
|
|
29
|
+
withOverrides: withTheHistory
|
|
30
|
+
});
|
|
31
31
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb21tb24vaGlzdG9yeS5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQStCLENBQUM7QUFDbEUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUErQixDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFtQixNQUFTLEVBQUssRUFBRTtJQUM3RCxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU5QixNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRTtRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksRUFBRSxDQUFDO1FBQ1AsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUU7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLEVBQUUsQ0FBQztRQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzVCLFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsU0FBUyxDQUFDLE1BQWM7UUFDcEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsbUJBQW1CLENBQUM7SUFDdEQsR0FBRyxFQUFFLFVBQVUsQ0FBQyxVQUFVO0lBQzFCLGFBQWEsRUFBRSxjQUFjO0NBQ2hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IFVORE9JTkcgPSBuZXcgV2Vha01hcDxFZGl0b3IsIGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG5leHBvcnQgY29uc3QgUkVET0lORyA9IG5ldyBXZWFrTWFwPEVkaXRvciwgYm9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcblxuZXhwb3J0IGNvbnN0IHdpdGhUaGVIaXN0b3J5ID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgdW5kbywgcmVkbyB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLnVuZG8gPSAoKSA9PiB7XG4gICAgICAgIFVORE9JTkcuc2V0KGVkaXRvciwgdHJ1ZSk7XG4gICAgICAgIHVuZG8oKTtcbiAgICAgICAgVU5ET0lORy5zZXQoZWRpdG9yLCBmYWxzZSk7XG4gICAgfTtcbiAgICBlZGl0b3IucmVkbyA9ICgpID0+IHtcbiAgICAgICAgUkVET0lORy5zZXQoZWRpdG9yLCB0cnVlKTtcbiAgICAgICAgcmVkbygpO1xuICAgICAgICBSRURPSU5HLnNldChlZGl0b3IsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBUaGVIaXN0b3J5RWRpdG9yID0ge1xuICAgIGlzVW5kb2luZyhlZGl0b3I6IEVkaXRvcik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gVU5ET0lORy5nZXQoZWRpdG9yKTtcbiAgICB9LFxuICAgIGlzUmVkb2luZyhlZGl0b3I6IEVkaXRvcik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gUkVET0lORy5nZXQoZWRpdG9yKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVGhlSGlzdG9yeVBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy50aGVIaXN0b3J5LFxuICAgIHdpdGhPdmVycmlkZXM6IHdpdGhUaGVIaXN0b3J5XG59KTtcbiJdfQ==
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
import { Editor, Transforms, Range } from 'slate';
|
|
2
|
-
import { timer } from 'rxjs';
|
|
3
|
-
import { AngularEditor, hotkeys } from 'slate-angular';
|
|
4
|
-
import { createPluginFactory } from '../../core';
|
|
5
|
-
import { PluginKeys } from '../../interfaces';
|
|
6
|
-
import { isInline } from '../../utils/is-inline';
|
|
7
|
-
import * as TheQueries from '../../queries';
|
|
8
|
-
export const withMoveSelection = (editor) => {
|
|
9
|
-
const { onClick, deleteBackward, onKeydown } = editor;
|
|
10
|
-
editor.onClick = (event) => {
|
|
11
|
-
const domSelection = window.getSelection();
|
|
12
|
-
if (domSelection && !domSelection.isCollapsed && event.detail >= 2 && editor.selection) {
|
|
13
|
-
const slateSelection = AngularEditor.toSlateRange(editor, domSelection);
|
|
14
|
-
const isNextStart = slateSelection.focus.offset === 0;
|
|
15
|
-
if (Range.isExpanded(slateSelection) && Range.isForward(slateSelection) && isNextStart) {
|
|
16
|
-
const beforePoint = Editor.before(editor, slateSelection.focus);
|
|
17
|
-
const changedRange = Editor.range(editor, slateSelection.anchor, beforePoint);
|
|
18
|
-
// slate-angular throttle 80ms, so wait selectionchange complete
|
|
19
|
-
timer(81).subscribe(() => {
|
|
20
|
-
Transforms.select(editor, changedRange);
|
|
21
|
-
});
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
onClick(event);
|
|
26
|
-
};
|
|
27
|
-
editor.deleteBackward = unit => {
|
|
28
|
-
const { selection } = editor;
|
|
29
|
-
const inlineBlockEntry = Editor.above(editor, {
|
|
30
|
-
match: n => Editor.isInline(editor, n)
|
|
31
|
-
});
|
|
32
|
-
// fix deleteBackward on the start of inline block
|
|
33
|
-
// deleteBackward logic bug
|
|
34
|
-
if (inlineBlockEntry && !Editor.isVoid(editor, inlineBlockEntry[0]) && selection.anchor.offset === 0) {
|
|
35
|
-
const beforePoint = TheQueries.getPointBefore(editor, selection.focus);
|
|
36
|
-
Transforms.select(editor, beforePoint);
|
|
37
|
-
}
|
|
38
|
-
deleteBackward(unit);
|
|
39
|
-
};
|
|
40
|
-
editor.onKeydown = (event) => {
|
|
41
|
-
const { selection } = editor;
|
|
42
|
-
if (!selection || !selection.anchor || !selection.focus) {
|
|
43
|
-
onKeydown(event);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
const isMoveBackward = hotkeys.isMoveBackward(event);
|
|
47
|
-
const isMoveForward = hotkeys.isMoveForward(event);
|
|
48
|
-
const isCollapsed = selection && TheQueries.isCollapsed(selection);
|
|
49
|
-
const isInlineNode = isInline(editor);
|
|
50
|
-
if (isCollapsed && isMoveForward) {
|
|
51
|
-
let isInlineCodeBefore = false;
|
|
52
|
-
if (!isInlineNode) {
|
|
53
|
-
try {
|
|
54
|
-
const { path } = Editor.after(editor, selection);
|
|
55
|
-
if (path) {
|
|
56
|
-
isInlineCodeBefore = isInline(editor, path);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (error) { }
|
|
60
|
-
}
|
|
61
|
-
if (isInlineNode || isInlineCodeBefore) {
|
|
62
|
-
event.preventDefault();
|
|
63
|
-
Transforms.move(editor, { unit: 'offset' });
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (isCollapsed && isMoveBackward) {
|
|
68
|
-
let isInlineCodeAfter = false;
|
|
69
|
-
if (!isInlineNode) {
|
|
70
|
-
try {
|
|
71
|
-
const { path } = Editor.before(editor, selection);
|
|
72
|
-
isInlineCodeAfter = isInline(editor, path);
|
|
73
|
-
}
|
|
74
|
-
catch (error) { }
|
|
75
|
-
}
|
|
76
|
-
if (isInlineNode || isInlineCodeAfter) {
|
|
77
|
-
event.preventDefault();
|
|
78
|
-
Transforms.move(editor, { unit: 'offset', reverse: true });
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
onKeydown(event);
|
|
83
|
-
};
|
|
84
|
-
return editor;
|
|
85
|
-
};
|
|
86
|
-
export const createMoveSelectionPlugin = createPluginFactory({
|
|
87
|
-
key: PluginKeys.moveSelection,
|
|
88
|
-
withOverrides: withMoveSelection
|
|
89
|
-
});
|
|
1
|
+
import { Editor, Transforms, Range } from 'slate';
|
|
2
|
+
import { timer } from 'rxjs';
|
|
3
|
+
import { AngularEditor, hotkeys } from 'slate-angular';
|
|
4
|
+
import { createPluginFactory } from '../../core';
|
|
5
|
+
import { PluginKeys } from '../../interfaces';
|
|
6
|
+
import { isInline } from '../../utils/is-inline';
|
|
7
|
+
import * as TheQueries from '../../queries';
|
|
8
|
+
export const withMoveSelection = (editor) => {
|
|
9
|
+
const { onClick, deleteBackward, onKeydown } = editor;
|
|
10
|
+
editor.onClick = (event) => {
|
|
11
|
+
const domSelection = window.getSelection();
|
|
12
|
+
if (domSelection && !domSelection.isCollapsed && event.detail >= 2 && editor.selection) {
|
|
13
|
+
const slateSelection = AngularEditor.toSlateRange(editor, domSelection);
|
|
14
|
+
const isNextStart = slateSelection.focus.offset === 0;
|
|
15
|
+
if (Range.isExpanded(slateSelection) && Range.isForward(slateSelection) && isNextStart) {
|
|
16
|
+
const beforePoint = Editor.before(editor, slateSelection.focus);
|
|
17
|
+
const changedRange = Editor.range(editor, slateSelection.anchor, beforePoint);
|
|
18
|
+
// slate-angular throttle 80ms, so wait selectionchange complete
|
|
19
|
+
timer(81).subscribe(() => {
|
|
20
|
+
Transforms.select(editor, changedRange);
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
onClick(event);
|
|
26
|
+
};
|
|
27
|
+
editor.deleteBackward = unit => {
|
|
28
|
+
const { selection } = editor;
|
|
29
|
+
const inlineBlockEntry = Editor.above(editor, {
|
|
30
|
+
match: n => Editor.isInline(editor, n)
|
|
31
|
+
});
|
|
32
|
+
// fix deleteBackward on the start of inline block
|
|
33
|
+
// deleteBackward logic bug
|
|
34
|
+
if (inlineBlockEntry && !Editor.isVoid(editor, inlineBlockEntry[0]) && selection.anchor.offset === 0) {
|
|
35
|
+
const beforePoint = TheQueries.getPointBefore(editor, selection.focus);
|
|
36
|
+
Transforms.select(editor, beforePoint);
|
|
37
|
+
}
|
|
38
|
+
deleteBackward(unit);
|
|
39
|
+
};
|
|
40
|
+
editor.onKeydown = (event) => {
|
|
41
|
+
const { selection } = editor;
|
|
42
|
+
if (!selection || !selection.anchor || !selection.focus) {
|
|
43
|
+
onKeydown(event);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const isMoveBackward = hotkeys.isMoveBackward(event);
|
|
47
|
+
const isMoveForward = hotkeys.isMoveForward(event);
|
|
48
|
+
const isCollapsed = selection && TheQueries.isCollapsed(selection);
|
|
49
|
+
const isInlineNode = isInline(editor);
|
|
50
|
+
if (isCollapsed && isMoveForward) {
|
|
51
|
+
let isInlineCodeBefore = false;
|
|
52
|
+
if (!isInlineNode) {
|
|
53
|
+
try {
|
|
54
|
+
const { path } = Editor.after(editor, selection);
|
|
55
|
+
if (path) {
|
|
56
|
+
isInlineCodeBefore = isInline(editor, path);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (error) { }
|
|
60
|
+
}
|
|
61
|
+
if (isInlineNode || isInlineCodeBefore) {
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
Transforms.move(editor, { unit: 'offset' });
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (isCollapsed && isMoveBackward) {
|
|
68
|
+
let isInlineCodeAfter = false;
|
|
69
|
+
if (!isInlineNode) {
|
|
70
|
+
try {
|
|
71
|
+
const { path } = Editor.before(editor, selection);
|
|
72
|
+
isInlineCodeAfter = isInline(editor, path);
|
|
73
|
+
}
|
|
74
|
+
catch (error) { }
|
|
75
|
+
}
|
|
76
|
+
if (isInlineNode || isInlineCodeAfter) {
|
|
77
|
+
event.preventDefault();
|
|
78
|
+
Transforms.move(editor, { unit: 'offset', reverse: true });
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
onKeydown(event);
|
|
83
|
+
};
|
|
84
|
+
return editor;
|
|
85
|
+
};
|
|
86
|
+
export const createMoveSelectionPlugin = createPluginFactory({
|
|
87
|
+
key: PluginKeys.moveSelection,
|
|
88
|
+
withOverrides: withMoveSelection
|
|
89
|
+
});
|
|
90
90
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS1zZWxlY3Rpb24ucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29tbW9uL21vdmUtc2VsZWN0aW9uLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFtQixNQUFTLEVBQUssRUFBRTtJQUNoRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFdEQsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtRQUNuQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0MsSUFBSSxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDcEYsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDeEUsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFN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Z0JBQ3BDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDNUMsT0FBTzthQUNWO1NBQ0o7UUFDRCxJQUFJLFdBQVcsSUFBSSxjQUFjLEVBQUU7WUFDL0IsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDZixJQUFJO29CQUNBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDbEQsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDOUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTthQUNyQjtZQUNELElBQUksWUFBWSxJQUFJLGlCQUFpQixFQUFFO2dCQUNuQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDM0QsT0FBTzthQUNWO1NBQ0o7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsbUJBQW1CLENBQUM7SUFDekQsR0FBRyxFQUFFLFVBQVUsQ0FBQyxhQUFhO0lBQzdCLGFBQWEsRUFBRSxpQkFBaUI7Q0FDbkMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBUcmFuc2Zvcm1zLCBSYW5nZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBob3RrZXlzIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc0lubGluZSB9IGZyb20gJy4uLy4uL3V0aWxzL2lzLWlubGluZSc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aE1vdmVTZWxlY3Rpb24gPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBvbkNsaWNrLCBkZWxldGVCYWNrd2FyZCwgb25LZXlkb3duIH0gPSBlZGl0b3I7XG5cbiAgICBlZGl0b3Iub25DbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkb21TZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChkb21TZWxlY3Rpb24gJiYgIWRvbVNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJiBldmVudC5kZXRhaWwgPj0gMiAmJiBlZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBzbGF0ZVNlbGVjdGlvbiA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZVJhbmdlKGVkaXRvciwgZG9tU2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTmV4dFN0YXJ0ID0gc2xhdGVTZWxlY3Rpb24uZm9jdXMub2Zmc2V0ID09PSAwO1xuXG4gICAgICAgICAgICBpZiAoUmFuZ2UuaXNFeHBhbmRlZChzbGF0ZVNlbGVjdGlvbikgJiYgUmFuZ2UuaXNGb3J3YXJkKHNsYXRlU2VsZWN0aW9uKSAmJiBpc05leHRTdGFydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZVBvaW50ID0gRWRpdG9yLmJlZm9yZShlZGl0b3IsIHNsYXRlU2VsZWN0aW9uLmZvY3VzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VkUmFuZ2UgPSBFZGl0b3IucmFuZ2UoZWRpdG9yLCBzbGF0ZVNlbGVjdGlvbi5hbmNob3IsIGJlZm9yZVBvaW50KTtcblxuICAgICAgICAgICAgICAgIC8vIHNsYXRlLWFuZ3VsYXIgdGhyb3R0bGUgODBtcywgc28gd2FpdCBzZWxlY3Rpb25jaGFuZ2UgY29tcGxldGVcbiAgICAgICAgICAgICAgICB0aW1lcig4MSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBjaGFuZ2VkUmFuZ2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNsaWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUJhY2t3YXJkID0gdW5pdCA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGNvbnN0IGlubGluZUJsb2NrRW50cnkgPSBFZGl0b3IuYWJvdmUoZWRpdG9yLCB7XG4gICAgICAgICAgICBtYXRjaDogbiA9PiBFZGl0b3IuaXNJbmxpbmUoZWRpdG9yLCBuKVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gZml4IGRlbGV0ZUJhY2t3YXJkIG9uIHRoZSBzdGFydCBvZiBpbmxpbmUgYmxvY2tcbiAgICAgICAgLy8gZGVsZXRlQmFja3dhcmQgbG9naWMgYnVnXG4gICAgICAgIGlmIChpbmxpbmVCbG9ja0VudHJ5ICYmICFFZGl0b3IuaXNWb2lkKGVkaXRvciwgaW5saW5lQmxvY2tFbnRyeVswXSkgJiYgc2VsZWN0aW9uLmFuY2hvci5vZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVBvaW50ID0gVGhlUXVlcmllcy5nZXRQb2ludEJlZm9yZShlZGl0b3IsIHNlbGVjdGlvbi5mb2N1cyk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGJlZm9yZVBvaW50KTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGVCYWNrd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yO1xuICAgICAgICBpZiAoIXNlbGVjdGlvbiB8fCAhc2VsZWN0aW9uLmFuY2hvciB8fCAhc2VsZWN0aW9uLmZvY3VzKSB7XG4gICAgICAgICAgICBvbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzTW92ZUJhY2t3YXJkID0gaG90a2V5cy5pc01vdmVCYWNrd2FyZChldmVudCk7XG4gICAgICAgIGNvbnN0IGlzTW92ZUZvcndhcmQgPSBob3RrZXlzLmlzTW92ZUZvcndhcmQoZXZlbnQpO1xuICAgICAgICBjb25zdCBpc0NvbGxhcHNlZCA9IHNlbGVjdGlvbiAmJiBUaGVRdWVyaWVzLmlzQ29sbGFwc2VkKHNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IGlzSW5saW5lTm9kZSA9IGlzSW5saW5lKGVkaXRvcik7XG4gICAgICAgIGlmIChpc0NvbGxhcHNlZCAmJiBpc01vdmVGb3J3YXJkKSB7XG4gICAgICAgICAgICBsZXQgaXNJbmxpbmVDb2RlQmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoIWlzSW5saW5lTm9kZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcGF0aCB9ID0gRWRpdG9yLmFmdGVyKGVkaXRvciwgc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSW5saW5lQ29kZUJlZm9yZSA9IGlzSW5saW5lKGVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0lubGluZU5vZGUgfHwgaXNJbmxpbmVDb2RlQmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yLCB7IHVuaXQ6ICdvZmZzZXQnIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb2xsYXBzZWQgJiYgaXNNb3ZlQmFja3dhcmQpIHtcbiAgICAgICAgICAgIGxldCBpc0lubGluZUNvZGVBZnRlciA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFpc0lubGluZU5vZGUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhdGggfSA9IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICBpc0lubGluZUNvZGVBZnRlciA9IGlzSW5saW5lKGVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNJbmxpbmVOb2RlIHx8IGlzSW5saW5lQ29kZUFmdGVyKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yLCB7IHVuaXQ6ICdvZmZzZXQnLCByZXZlcnNlOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbktleWRvd24oZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb3ZlU2VsZWN0aW9uUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAga2V5OiBQbHVnaW5LZXlzLm1vdmVTZWxlY3Rpb24sXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aE1vdmVTZWxlY3Rpb25cbn0pO1xuIl19
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import { Path, Node, Editor, Transforms } from 'slate';
|
|
2
|
-
import { HistoryEditor } from 'slate-history';
|
|
3
|
-
import { createPluginFactory } from '../../core';
|
|
4
|
-
import { PluginKeys } from '../../interfaces';
|
|
5
|
-
import { HEADING_TYPES } from '../../constants';
|
|
6
|
-
import * as TheQueries from '../../queries';
|
|
7
|
-
export const withRemoveEmpty = (editor) => {
|
|
8
|
-
const { deleteBackward, deleteForward } = editor;
|
|
9
|
-
editor.deleteBackward = unit => {
|
|
10
|
-
const { selection } = editor;
|
|
11
|
-
const anchorBlock = TheQueries.anchorBlock(editor);
|
|
12
|
-
if (!anchorBlock) {
|
|
13
|
-
deleteBackward(unit);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
// delete empty paragraphs or empty headings, the default operation is to delete before the void node
|
|
17
|
-
const parentPath = Path.parent(editor.selection.anchor.path);
|
|
18
|
-
const isEmptyHeading = HEADING_TYPES.includes(anchorBlock.type) && Editor.isEmpty(editor, anchorBlock);
|
|
19
|
-
const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);
|
|
20
|
-
if ((isEmptyParagraph || isEmptyHeading) &&
|
|
21
|
-
parentPath[parentPath.length - 1] > 0 &&
|
|
22
|
-
Editor.isVoid(editor, Node.get(editor, Path.previous(parentPath)))) {
|
|
23
|
-
Transforms.delete(editor, { at: editor.selection.anchor.path.slice(0, editor.selection.anchor.path.length - 1) });
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
// just remove inline node when before inline node text length is 1, default action is remove current the block above inline node
|
|
27
|
-
if (selection.anchor.path[selection.anchor.path.length - 1] > 0 && selection.anchor.offset === 0) {
|
|
28
|
-
const beforePoint = Editor.before(editor, editor.selection);
|
|
29
|
-
const inlineEntry = Editor.above(editor, {
|
|
30
|
-
at: beforePoint,
|
|
31
|
-
match: n => Editor.isInline(editor, n) && !Editor.isVoid(editor, n)
|
|
32
|
-
});
|
|
33
|
-
if (inlineEntry && Editor.string(editor, inlineEntry[1]).length === 1) {
|
|
34
|
-
Transforms.removeNodes(editor, { at: inlineEntry[1] });
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
deleteBackward(unit);
|
|
39
|
-
};
|
|
40
|
-
editor.deleteForward = unit => {
|
|
41
|
-
const anchorBlockEntry = TheQueries.anchorBlockEntry(editor);
|
|
42
|
-
if (anchorBlockEntry &&
|
|
43
|
-
TheQueries.isAncestorEmpty(editor, anchorBlockEntry[0]) &&
|
|
44
|
-
TheQueries.getNode(editor, Path.next(anchorBlockEntry[1]))) {
|
|
45
|
-
const pathRef = Editor.pathRef(editor, Path.parent(editor.selection.anchor.path));
|
|
46
|
-
HistoryEditor.withoutMerging(editor, () => {
|
|
47
|
-
Transforms.move(editor);
|
|
48
|
-
});
|
|
49
|
-
Transforms.delete(editor, { at: pathRef.unref() });
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
deleteForward(unit);
|
|
53
|
-
};
|
|
54
|
-
return editor;
|
|
55
|
-
};
|
|
56
|
-
export const createRemoveEmptyPlugin = createPluginFactory({
|
|
57
|
-
key: PluginKeys.removeEmpty,
|
|
58
|
-
withOverrides: withRemoveEmpty
|
|
59
|
-
});
|
|
1
|
+
import { Path, Node, Editor, Transforms } from 'slate';
|
|
2
|
+
import { HistoryEditor } from 'slate-history';
|
|
3
|
+
import { createPluginFactory } from '../../core';
|
|
4
|
+
import { PluginKeys } from '../../interfaces';
|
|
5
|
+
import { HEADING_TYPES } from '../../constants';
|
|
6
|
+
import * as TheQueries from '../../queries';
|
|
7
|
+
export const withRemoveEmpty = (editor) => {
|
|
8
|
+
const { deleteBackward, deleteForward } = editor;
|
|
9
|
+
editor.deleteBackward = unit => {
|
|
10
|
+
const { selection } = editor;
|
|
11
|
+
const anchorBlock = TheQueries.anchorBlock(editor);
|
|
12
|
+
if (!anchorBlock) {
|
|
13
|
+
deleteBackward(unit);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
// delete empty paragraphs or empty headings, the default operation is to delete before the void node
|
|
17
|
+
const parentPath = Path.parent(editor.selection.anchor.path);
|
|
18
|
+
const isEmptyHeading = HEADING_TYPES.includes(anchorBlock.type) && Editor.isEmpty(editor, anchorBlock);
|
|
19
|
+
const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);
|
|
20
|
+
if ((isEmptyParagraph || isEmptyHeading) &&
|
|
21
|
+
parentPath[parentPath.length - 1] > 0 &&
|
|
22
|
+
Editor.isVoid(editor, Node.get(editor, Path.previous(parentPath)))) {
|
|
23
|
+
Transforms.delete(editor, { at: editor.selection.anchor.path.slice(0, editor.selection.anchor.path.length - 1) });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// just remove inline node when before inline node text length is 1, default action is remove current the block above inline node
|
|
27
|
+
if (selection.anchor.path[selection.anchor.path.length - 1] > 0 && selection.anchor.offset === 0) {
|
|
28
|
+
const beforePoint = Editor.before(editor, editor.selection);
|
|
29
|
+
const inlineEntry = Editor.above(editor, {
|
|
30
|
+
at: beforePoint,
|
|
31
|
+
match: n => Editor.isInline(editor, n) && !Editor.isVoid(editor, n)
|
|
32
|
+
});
|
|
33
|
+
if (inlineEntry && Editor.string(editor, inlineEntry[1]).length === 1) {
|
|
34
|
+
Transforms.removeNodes(editor, { at: inlineEntry[1] });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
deleteBackward(unit);
|
|
39
|
+
};
|
|
40
|
+
editor.deleteForward = unit => {
|
|
41
|
+
const anchorBlockEntry = TheQueries.anchorBlockEntry(editor);
|
|
42
|
+
if (anchorBlockEntry &&
|
|
43
|
+
TheQueries.isAncestorEmpty(editor, anchorBlockEntry[0]) &&
|
|
44
|
+
TheQueries.getNode(editor, Path.next(anchorBlockEntry[1]))) {
|
|
45
|
+
const pathRef = Editor.pathRef(editor, Path.parent(editor.selection.anchor.path));
|
|
46
|
+
HistoryEditor.withoutMerging(editor, () => {
|
|
47
|
+
Transforms.move(editor);
|
|
48
|
+
});
|
|
49
|
+
Transforms.delete(editor, { at: pathRef.unref() });
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
deleteForward(unit);
|
|
53
|
+
};
|
|
54
|
+
return editor;
|
|
55
|
+
};
|
|
56
|
+
export const createRemoveEmptyPlugin = createPluginFactory({
|
|
57
|
+
key: PluginKeys.removeEmpty,
|
|
58
|
+
withOverrides: withRemoveEmpty
|
|
59
|
+
});
|
|
60
60
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWVtcHR5LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2NvbW1vbi9yZW1vdmUtZW1wdHkucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBbUIsTUFBUyxFQUFLLEVBQUU7SUFDOUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFakQsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsRUFBRTtRQUMzQixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNkLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixPQUFPO1NBQ1Y7UUFFRCxxR0FBcUc7UUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FB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RSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELE9BQU87U0FDVjtRQUNELGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQztJQUN2RCxHQUFHLEVBQUUsVUFBVSxDQUFDLFdBQVc7SUFDM0IsYUFBYSxFQUFFLGVBQWU7Q0FDakMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgTm9kZSwgRWRpdG9yLCBUcmFuc2Zvcm1zLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSEVBRElOR19UWVBFUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aFJlbW92ZUVtcHR5ID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgZGVsZXRlQmFja3dhcmQsIGRlbGV0ZUZvcndhcmQgfSA9IGVkaXRvcjtcblxuICAgIGVkaXRvci5kZWxldGVCYWNrd2FyZCA9IHVuaXQgPT4ge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yO1xuICAgICAgICBjb25zdCBhbmNob3JCbG9jayA9IFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2soZWRpdG9yKTtcblxuICAgICAgICBpZiAoIWFuY2hvckJsb2NrKSB7XG4gICAgICAgICAgICBkZWxldGVCYWNrd2FyZCh1bml0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRlbGV0ZSBlbXB0eSBwYXJhZ3JhcGhzIG9yIGVtcHR5IGhlYWRpbmdzLCB0aGUgZGVmYXVsdCBvcGVyYXRpb24gaXMgdG8gZGVsZXRlIGJlZm9yZSB0aGUgdm9pZCBub2RlXG4gICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBQYXRoLnBhcmVudChlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKTtcbiAgICAgICAgY29uc3QgaXNFbXB0eUhlYWRpbmcgPSBIRUFESU5HX1RZUEVTLmluY2x1ZGVzKGFuY2hvckJsb2NrLnR5cGUpICYmIEVkaXRvci5pc0VtcHR5KGVkaXRvciwgYW5jaG9yQmxvY2spO1xuICAgICAgICBjb25zdCBpc0VtcHR5UGFyYWdyYXBoID0gVGhlUXVlcmllcy5pc0VtcHR5UGFyYWdyYXBoKGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoaXNFbXB0eVBhcmFncmFwaCB8fCBpc0VtcHR5SGVhZGluZykgJiZcbiAgICAgICAgICAgIHBhcmVudFBhdGhbcGFyZW50UGF0aC5sZW5ndGggLSAxXSA+IDAgJiZcbiAgICAgICAgICAgIEVkaXRvci5pc1ZvaWQoZWRpdG9yLCBOb2RlLmdldChlZGl0b3IsIFBhdGgucHJldmlvdXMocGFyZW50UGF0aCkpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKGVkaXRvciwgeyBhdDogZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aC5zbGljZSgwLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoLmxlbmd0aCAtIDEpIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGp1c3QgcmVtb3ZlIGlubGluZSBub2RlIHdoZW4gYmVmb3JlIGlubGluZSBub2RlIHRleHQgbGVuZ3RoIGlzIDEsIGRlZmF1bHQgYWN0aW9uIGlzIHJlbW92ZSBjdXJyZW50IHRoZSBibG9jayBhYm92ZSBpbmxpbmUgbm9kZVxuICAgICAgICBpZiAoc2VsZWN0aW9uLmFuY2hvci5wYXRoW3NlbGVjdGlvbi5hbmNob3IucGF0aC5sZW5ndGggLSAxXSA+IDAgJiYgc2VsZWN0aW9uLmFuY2hvci5vZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVBvaW50ID0gRWRpdG9yLmJlZm9yZShlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgaW5saW5lRW50cnkgPSBFZGl0b3IuYWJvdmU8RWxlbWVudD4oZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgYXQ6IGJlZm9yZVBvaW50LFxuICAgICAgICAgICAgICAgIG1hdGNoOiBuID0+IEVkaXRvci5pc0lubGluZShlZGl0b3IsIG4pICYmICFFZGl0b3IuaXNWb2lkKGVkaXRvciwgbilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGlubGluZUVudHJ5ICYmIEVkaXRvci5zdHJpbmcoZWRpdG9yLCBpbmxpbmVFbnRyeVsxXSkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlcyhlZGl0b3IsIHsgYXQ6IGlubGluZUVudHJ5WzFdIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkZWxldGVCYWNrd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUZvcndhcmQgPSB1bml0ID0+IHtcbiAgICAgICAgY29uc3QgYW5jaG9yQmxvY2tFbnRyeSA9IFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2tFbnRyeShlZGl0b3IpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhbmNob3JCbG9ja0VudHJ5ICYmXG4gICAgICAgICAgICBUaGVRdWVyaWVzLmlzQW5jZXN0b3JFbXB0eShlZGl0b3IsIGFuY2hvckJsb2NrRW50cnlbMF0pICYmXG4gICAgICAgICAgICBUaGVRdWVyaWVzLmdldE5vZGUoZWRpdG9yLCBQYXRoLm5leHQoYW5jaG9yQmxvY2tFbnRyeVsxXSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgcGF0aFJlZiA9IEVkaXRvci5wYXRoUmVmKGVkaXRvciwgUGF0aC5wYXJlbnQoZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aCkpO1xuICAgICAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0TWVyZ2luZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBwYXRoUmVmLnVucmVmKCkgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlRm9yd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZW1vdmVFbXB0eVBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy5yZW1vdmVFbXB0eSxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoUmVtb3ZlRW1wdHlcbn0pO1xuIl19
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
import { Editor, Path, Transforms } from 'slate';
|
|
2
|
-
import { HistoryEditor } from 'slate-history';
|
|
3
|
-
import { hotkeys } from 'slate-angular';
|
|
4
|
-
import { createPluginFactory } from '../../core';
|
|
5
|
-
import { PluginKeys } from '../../interfaces';
|
|
6
|
-
import { createEmptyParagraph } from '../../utils/create-empty-paragraph';
|
|
7
|
-
import * as TheQueries from '../../queries';
|
|
8
|
-
export const withRemoveVoid = (editor) => {
|
|
9
|
-
const { deleteBackward, deleteForward, onKeydown } = editor;
|
|
10
|
-
const deleteBlockVoid = (e) => {
|
|
11
|
-
const aboveEntry = TheQueries.getAbove(e);
|
|
12
|
-
const canDelete = aboveEntry && Editor.isBlock(e, aboveEntry[0]) && Editor.isVoid(e, aboveEntry[0]);
|
|
13
|
-
if (canDelete) {
|
|
14
|
-
Transforms.insertNodes(e, createEmptyParagraph(), { at: Path.next(aboveEntry[1]) });
|
|
15
|
-
Transforms.select(e, Path.next(aboveEntry[1]));
|
|
16
|
-
Transforms.removeNodes(e, { at: aboveEntry[1] });
|
|
17
|
-
}
|
|
18
|
-
return canDelete;
|
|
19
|
-
};
|
|
20
|
-
editor.deleteBackward = unit => {
|
|
21
|
-
if (deleteBlockVoid(editor)) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
deleteBackward(unit);
|
|
25
|
-
};
|
|
26
|
-
editor.onKeydown = event => {
|
|
27
|
-
const aboveEntry = TheQueries.getAbove(editor);
|
|
28
|
-
if (aboveEntry && Editor.isVoid(editor, aboveEntry[0]) && Editor.isInline(editor, aboveEntry[0])) {
|
|
29
|
-
if (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event)) {
|
|
30
|
-
event.preventDefault();
|
|
31
|
-
HistoryEditor.withoutMerging(editor, () => {
|
|
32
|
-
Transforms.move(editor);
|
|
33
|
-
});
|
|
34
|
-
Transforms.delete(editor, { reverse: true });
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (hotkeys.isSplitBlock(event)) {
|
|
38
|
-
event.preventDefault();
|
|
39
|
-
Transforms.move(editor);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
onKeydown(event);
|
|
44
|
-
};
|
|
45
|
-
editor.deleteForward = unit => {
|
|
46
|
-
if (deleteBlockVoid(editor)) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
deleteForward(unit);
|
|
50
|
-
};
|
|
51
|
-
return editor;
|
|
52
|
-
};
|
|
53
|
-
export const createRemoveVoidPlugin = createPluginFactory({
|
|
54
|
-
key: PluginKeys.removeVoid,
|
|
55
|
-
withOverrides: withRemoveVoid
|
|
56
|
-
});
|
|
1
|
+
import { Editor, Path, Transforms } from 'slate';
|
|
2
|
+
import { HistoryEditor } from 'slate-history';
|
|
3
|
+
import { hotkeys } from 'slate-angular';
|
|
4
|
+
import { createPluginFactory } from '../../core';
|
|
5
|
+
import { PluginKeys } from '../../interfaces';
|
|
6
|
+
import { createEmptyParagraph } from '../../utils/create-empty-paragraph';
|
|
7
|
+
import * as TheQueries from '../../queries';
|
|
8
|
+
export const withRemoveVoid = (editor) => {
|
|
9
|
+
const { deleteBackward, deleteForward, onKeydown } = editor;
|
|
10
|
+
const deleteBlockVoid = (e) => {
|
|
11
|
+
const aboveEntry = TheQueries.getAbove(e);
|
|
12
|
+
const canDelete = aboveEntry && Editor.isBlock(e, aboveEntry[0]) && Editor.isVoid(e, aboveEntry[0]);
|
|
13
|
+
if (canDelete) {
|
|
14
|
+
Transforms.insertNodes(e, createEmptyParagraph(), { at: Path.next(aboveEntry[1]) });
|
|
15
|
+
Transforms.select(e, Path.next(aboveEntry[1]));
|
|
16
|
+
Transforms.removeNodes(e, { at: aboveEntry[1] });
|
|
17
|
+
}
|
|
18
|
+
return canDelete;
|
|
19
|
+
};
|
|
20
|
+
editor.deleteBackward = unit => {
|
|
21
|
+
if (deleteBlockVoid(editor)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
deleteBackward(unit);
|
|
25
|
+
};
|
|
26
|
+
editor.onKeydown = event => {
|
|
27
|
+
const aboveEntry = TheQueries.getAbove(editor);
|
|
28
|
+
if (aboveEntry && Editor.isVoid(editor, aboveEntry[0]) && Editor.isInline(editor, aboveEntry[0])) {
|
|
29
|
+
if (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event)) {
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
HistoryEditor.withoutMerging(editor, () => {
|
|
32
|
+
Transforms.move(editor);
|
|
33
|
+
});
|
|
34
|
+
Transforms.delete(editor, { reverse: true });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (hotkeys.isSplitBlock(event)) {
|
|
38
|
+
event.preventDefault();
|
|
39
|
+
Transforms.move(editor);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
onKeydown(event);
|
|
44
|
+
};
|
|
45
|
+
editor.deleteForward = unit => {
|
|
46
|
+
if (deleteBlockVoid(editor)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
deleteForward(unit);
|
|
50
|
+
};
|
|
51
|
+
return editor;
|
|
52
|
+
};
|
|
53
|
+
export const createRemoveVoidPlugin = createPluginFactory({
|
|
54
|
+
key: PluginKeys.removeVoid,
|
|
55
|
+
withOverrides: withRemoveVoid
|
|
56
|
+
});
|
|
57
57
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLXZvaWQucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29tbW9uL3JlbW92ZS12b2lkLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQW1CLE1BQVMsRUFBSyxFQUFFO0lBQzdELE1BQU0sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU1RCxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsVUFBVSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLElBQUksU0FBUyxFQUFFO1lBQ1gsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRixVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDM0IsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsT0FBTztTQUNWO1FBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUU7UUFDdkIsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLFVBQVUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM5RixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNuRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLGFBQWEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtvQkFDdEMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDN0MsT0FBTzthQUNWO1lBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM3QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU87YUFDVjtTQUNKO1FBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDMUIsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsT0FBTztTQUNWO1FBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLG1CQUFtQixDQUFDO0lBQ3RELEdBQUcsRUFBRSxVQUFVLENBQUMsVUFBVTtJQUMxQixhQUFhLEVBQUUsY0FBYztDQUNoQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIFBhdGgsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBob3RrZXlzIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVFbXB0eVBhcmFncmFwaCB9IGZyb20gJy4uLy4uL3V0aWxzL2NyZWF0ZS1lbXB0eS1wYXJhZ3JhcGgnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcblxuZXhwb3J0IGNvbnN0IHdpdGhSZW1vdmVWb2lkID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgZGVsZXRlQmFja3dhcmQsIGRlbGV0ZUZvcndhcmQsIG9uS2V5ZG93biB9ID0gZWRpdG9yO1xuXG4gICAgY29uc3QgZGVsZXRlQmxvY2tWb2lkID0gKGU6IEVkaXRvcikgPT4ge1xuICAgICAgICBjb25zdCBhYm92ZUVudHJ5ID0gVGhlUXVlcmllcy5nZXRBYm92ZShlKTtcbiAgICAgICAgY29uc3QgY2FuRGVsZXRlID0gYWJvdmVFbnRyeSAmJiBFZGl0b3IuaXNCbG9jayhlLCBhYm92ZUVudHJ5WzBdKSAmJiBFZGl0b3IuaXNWb2lkKGUsIGFib3ZlRW50cnlbMF0pO1xuICAgICAgICBpZiAoY2FuRGVsZXRlKSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGVzKGUsIGNyZWF0ZUVtcHR5UGFyYWdyYXBoKCksIHsgYXQ6IFBhdGgubmV4dChhYm92ZUVudHJ5WzFdKSB9KTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGUsIFBhdGgubmV4dChhYm92ZUVudHJ5WzFdKSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGUsIHsgYXQ6IGFib3ZlRW50cnlbMV0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbkRlbGV0ZTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUJhY2t3YXJkID0gdW5pdCA9PiB7XG4gICAgICAgIGlmIChkZWxldGVCbG9ja1ZvaWQoZWRpdG9yKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZUJhY2t3YXJkKHVuaXQpO1xuICAgIH07XG5cbiAgICBlZGl0b3Iub25LZXlkb3duID0gZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCBhYm92ZUVudHJ5ID0gVGhlUXVlcmllcy5nZXRBYm92ZShlZGl0b3IpO1xuICAgICAgICBpZiAoYWJvdmVFbnRyeSAmJiBFZGl0b3IuaXNWb2lkKGVkaXRvciwgYWJvdmVFbnRyeVswXSkgJiYgRWRpdG9yLmlzSW5saW5lKGVkaXRvciwgYWJvdmVFbnRyeVswXSkpIHtcbiAgICAgICAgICAgIGlmIChob3RrZXlzLmlzRGVsZXRlQmFja3dhcmQoZXZlbnQpIHx8IGhvdGtleXMuaXNEZWxldGVGb3J3YXJkKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0TWVyZ2luZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5tb3ZlKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IHJldmVyc2U6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhvdGtleXMuaXNTcGxpdEJsb2NrKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5tb3ZlKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5kZWxldGVGb3J3YXJkID0gdW5pdCA9PiB7XG4gICAgICAgIGlmIChkZWxldGVCbG9ja1ZvaWQoZWRpdG9yKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZUZvcndhcmQodW5pdCk7XG4gICAgfTtcbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVJlbW92ZVZvaWRQbHVnaW4gPSBjcmVhdGVQbHVnaW5GYWN0b3J5KHtcbiAgICBrZXk6IFBsdWdpbktleXMucmVtb3ZlVm9pZCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoUmVtb3ZlVm9pZFxufSk7XG4iXX0=
|