@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,64 +1,64 @@
|
|
|
1
|
-
import { Editor, Transforms } from 'slate';
|
|
2
|
-
import { Alignment, DISABLED_OPERATE_TYPES, DropdownMode, ToolbarActionTypes } from '../../constants';
|
|
3
|
-
import { PluginKeys, ToolbarItemType } from '../../interfaces';
|
|
4
|
-
import { createPluginFactory } from '../../core';
|
|
5
|
-
import { AlignEditor } from './align.editor';
|
|
6
|
-
import * as TheQueries from '../../queries';
|
|
7
|
-
export const withAlign = (editor) => {
|
|
8
|
-
const { deleteBackward } = editor;
|
|
9
|
-
editor.deleteBackward = unit => {
|
|
10
|
-
const { anchor } = editor.selection;
|
|
11
|
-
const node = TheQueries.anchorBlock(editor);
|
|
12
|
-
const isVoid = Editor.isVoid(editor, node);
|
|
13
|
-
const alignTypes = [Alignment.center, Alignment.right];
|
|
14
|
-
const startLine = Editor.start(editor, anchor.path);
|
|
15
|
-
const startLineRange = { anchor, focus: startLine };
|
|
16
|
-
const beforeText = Editor.string(editor, startLineRange);
|
|
17
|
-
if (!isVoid && node && node.align && alignTypes.includes(node.align) && beforeText === '') {
|
|
18
|
-
const align = alignTypes.indexOf(node.align) ? Alignment.center : undefined;
|
|
19
|
-
return Transforms.setNodes(editor, { align });
|
|
20
|
-
}
|
|
21
|
-
deleteBackward(unit);
|
|
22
|
-
};
|
|
23
|
-
return editor;
|
|
24
|
-
};
|
|
25
|
-
export const createAlignPlugin = createPluginFactory({
|
|
26
|
-
key: PluginKeys.align,
|
|
27
|
-
withOverrides: withAlign,
|
|
28
|
-
toolbarItems: [
|
|
29
|
-
{
|
|
30
|
-
key: ToolbarActionTypes.alignType,
|
|
31
|
-
type: ToolbarItemType.dropdown,
|
|
32
|
-
dropdownMode: DropdownMode.icon,
|
|
33
|
-
dropdownItemKey: ToolbarActionTypes.alignLeft,
|
|
34
|
-
includes: [ToolbarActionTypes.alignLeft, ToolbarActionTypes.alignCenter, ToolbarActionTypes.alignRight],
|
|
35
|
-
name: '对齐方式',
|
|
36
|
-
disable: editor => AlignEditor.isDisabled(editor)
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
key: ToolbarActionTypes.alignLeft,
|
|
40
|
-
icon: 'align-left',
|
|
41
|
-
name: '左对齐',
|
|
42
|
-
execute: editor => AlignEditor.setAlign(editor, Alignment.left),
|
|
43
|
-
active: editor => AlignEditor.isActive(editor, Alignment.left)
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
key: ToolbarActionTypes.alignCenter,
|
|
47
|
-
icon: 'align-center',
|
|
48
|
-
name: '居中',
|
|
49
|
-
execute: editor => AlignEditor.setAlign(editor, Alignment.center),
|
|
50
|
-
active: editor => AlignEditor.isActive(editor, Alignment.center)
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
key: ToolbarActionTypes.alignRight,
|
|
54
|
-
icon: 'align-right',
|
|
55
|
-
name: '右对齐',
|
|
56
|
-
execute: editor => AlignEditor.setAlign(editor, Alignment.right),
|
|
57
|
-
active: editor => AlignEditor.isActive(editor, Alignment.right)
|
|
58
|
-
}
|
|
59
|
-
],
|
|
60
|
-
options: {
|
|
61
|
-
disabledOperateTypes: [...DISABLED_OPERATE_TYPES]
|
|
62
|
-
}
|
|
63
|
-
});
|
|
1
|
+
import { Editor, Transforms } from 'slate';
|
|
2
|
+
import { Alignment, DISABLED_OPERATE_TYPES, DropdownMode, ToolbarActionTypes } from '../../constants';
|
|
3
|
+
import { PluginKeys, ToolbarItemType } from '../../interfaces';
|
|
4
|
+
import { createPluginFactory } from '../../core';
|
|
5
|
+
import { AlignEditor } from './align.editor';
|
|
6
|
+
import * as TheQueries from '../../queries';
|
|
7
|
+
export const withAlign = (editor) => {
|
|
8
|
+
const { deleteBackward } = editor;
|
|
9
|
+
editor.deleteBackward = unit => {
|
|
10
|
+
const { anchor } = editor.selection;
|
|
11
|
+
const node = TheQueries.anchorBlock(editor);
|
|
12
|
+
const isVoid = Editor.isVoid(editor, node);
|
|
13
|
+
const alignTypes = [Alignment.center, Alignment.right];
|
|
14
|
+
const startLine = Editor.start(editor, anchor.path);
|
|
15
|
+
const startLineRange = { anchor, focus: startLine };
|
|
16
|
+
const beforeText = Editor.string(editor, startLineRange);
|
|
17
|
+
if (!isVoid && node && node.align && alignTypes.includes(node.align) && beforeText === '') {
|
|
18
|
+
const align = alignTypes.indexOf(node.align) ? Alignment.center : undefined;
|
|
19
|
+
return Transforms.setNodes(editor, { align });
|
|
20
|
+
}
|
|
21
|
+
deleteBackward(unit);
|
|
22
|
+
};
|
|
23
|
+
return editor;
|
|
24
|
+
};
|
|
25
|
+
export const createAlignPlugin = createPluginFactory({
|
|
26
|
+
key: PluginKeys.align,
|
|
27
|
+
withOverrides: withAlign,
|
|
28
|
+
toolbarItems: [
|
|
29
|
+
{
|
|
30
|
+
key: ToolbarActionTypes.alignType,
|
|
31
|
+
type: ToolbarItemType.dropdown,
|
|
32
|
+
dropdownMode: DropdownMode.icon,
|
|
33
|
+
dropdownItemKey: ToolbarActionTypes.alignLeft,
|
|
34
|
+
includes: [ToolbarActionTypes.alignLeft, ToolbarActionTypes.alignCenter, ToolbarActionTypes.alignRight],
|
|
35
|
+
name: '对齐方式',
|
|
36
|
+
disable: editor => AlignEditor.isDisabled(editor)
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: ToolbarActionTypes.alignLeft,
|
|
40
|
+
icon: 'align-left',
|
|
41
|
+
name: '左对齐',
|
|
42
|
+
execute: editor => AlignEditor.setAlign(editor, Alignment.left),
|
|
43
|
+
active: editor => AlignEditor.isActive(editor, Alignment.left)
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
key: ToolbarActionTypes.alignCenter,
|
|
47
|
+
icon: 'align-center',
|
|
48
|
+
name: '居中',
|
|
49
|
+
execute: editor => AlignEditor.setAlign(editor, Alignment.center),
|
|
50
|
+
active: editor => AlignEditor.isActive(editor, Alignment.center)
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
key: ToolbarActionTypes.alignRight,
|
|
54
|
+
icon: 'align-right',
|
|
55
|
+
name: '右对齐',
|
|
56
|
+
execute: editor => AlignEditor.setAlign(editor, Alignment.right),
|
|
57
|
+
active: editor => AlignEditor.isActive(editor, Alignment.right)
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
options: {
|
|
61
|
+
disabledOperateTypes: [...DISABLED_OPERATE_TYPES]
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
64
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24ucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvYWxpZ24vYWxpZ24ucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBbUIsTUFBUyxFQUFLLEVBQUU7SUFDeEQsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVsQyxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFO1FBQzNCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFlLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFD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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBESVNBQkxFRF9PUEVSQVRFX1RZUEVTLCBEcm9wZG93bk1vZGUsIEVsZW1lbnRLaW5kcywgVG9vbGJhckFjdGlvblR5cGVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBsdWdpbktleXMsIFRvb2xiYXJJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGhlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBBbGlnbkVkaXRvciB9IGZyb20gJy4vYWxpZ24uZWRpdG9yJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoQWxpZ24gPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBkZWxldGVCYWNrd2FyZCB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLmRlbGV0ZUJhY2t3YXJkID0gdW5pdCA9PiB7XG4gICAgICAgIGNvbnN0IHsgYW5jaG9yIH0gPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBjb25zdCBub2RlID0gVGhlUXVlcmllcy5hbmNob3JCbG9jayhlZGl0b3IpIGFzIFRoZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGlzVm9pZCA9IEVkaXRvci5pc1ZvaWQoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgY29uc3QgYWxpZ25UeXBlcyA9IFtBbGlnbm1lbnQuY2VudGVyLCBBbGlnbm1lbnQucmlnaHRdO1xuICAgICAgICBjb25zdCBzdGFydExpbmUgPSBFZGl0b3Iuc3RhcnQoZWRpdG9yLCBhbmNob3IucGF0aCk7XG4gICAgICAgIGNvbnN0IHN0YXJ0TGluZVJhbmdlID0geyBhbmNob3IsIGZvY3VzOiBzdGFydExpbmUgfTtcbiAgICAgICAgY29uc3QgYmVmb3JlVGV4dCA9IEVkaXRvci5zdHJpbmcoZWRpdG9yLCBzdGFydExpbmVSYW5nZSk7XG5cbiAgICAgICAgaWYgKCFpc1ZvaWQgJiYgbm9kZSAmJiBub2RlLmFsaWduICYmIGFsaWduVHlwZXMuaW5jbHVkZXMobm9kZS5hbGlnbikgJiYgYmVmb3JlVGV4dCA9PT0gJycpIHtcbiAgICAgICAgICAgIGNvbnN0IGFsaWduID0gYWxpZ25UeXBlcy5pbmRleE9mKG5vZGUuYWxpZ24pID8gQWxpZ25tZW50LmNlbnRlciA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1zLnNldE5vZGVzKGVkaXRvciwgeyBhbGlnbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGVCYWNrd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBbGlnblBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy5hbGlnbixcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoQWxpZ24sXG4gICAgdG9vbGJhckl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVG9vbGJhckFjdGlvblR5cGVzLmFsaWduVHlwZSxcbiAgICAgICAgICAgIHR5cGU6IFRvb2xiYXJJdGVtVHlwZS5kcm9wZG93bixcbiAgICAgICAgICAgIGRyb3Bkb3duTW9kZTogRHJvcGRvd25Nb2RlLmljb24sXG4gICAgICAgICAgICBkcm9wZG93bkl0ZW1LZXk6IFRvb2xiYXJBY3Rpb25UeXBlcy5hbGlnbkxlZnQsXG4gICAgICAgICAgICBpbmNsdWRlczogW1Rvb2xiYXJBY3Rpb25UeXBlcy5hbGlnbkxlZnQsIFRvb2xiYXJBY3Rpb25UeXBlcy5hbGlnbkNlbnRlciwgVG9vbGJhckFjdGlvblR5cGVzLmFsaWduUmlnaHRdLFxuICAgICAgICAgICAgbmFtZTogJ+Wvuem9kOaWueW8jycsXG4gICAgICAgICAgICBkaXNhYmxlOiBlZGl0b3IgPT4gQWxpZ25FZGl0b3IuaXNEaXNhYmxlZChlZGl0b3IpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVG9vbGJhckFjdGlvblR5cGVzLmFsaWduTGVmdCxcbiAgICAgICAgICAgIGljb246ICdhbGlnbi1sZWZ0JyxcbiAgICAgICAgICAgIG5hbWU6ICflt6blr7npvZAnLFxuICAgICAgICAgICAgZXhlY3V0ZTogZWRpdG9yID0+IEFsaWduRWRpdG9yLnNldEFsaWduKGVkaXRvciwgQWxpZ25tZW50LmxlZnQpLFxuICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gQWxpZ25FZGl0b3IuaXNBY3RpdmUoZWRpdG9yLCBBbGlnbm1lbnQubGVmdClcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUb29sYmFyQWN0aW9uVHlwZXMuYWxpZ25DZW50ZXIsXG4gICAgICAgICAgICBpY29uOiAnYWxpZ24tY2VudGVyJyxcbiAgICAgICAgICAgIG5hbWU6ICflsYXkuK0nLFxuICAgICAgICAgICAgZXhlY3V0ZTogZWRpdG9yID0+IEFsaWduRWRpdG9yLnNldEFsaWduKGVkaXRvciwgQWxpZ25tZW50LmNlbnRlciksXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBBbGlnbkVkaXRvci5pc0FjdGl2ZShlZGl0b3IsIEFsaWdubWVudC5jZW50ZXIpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVG9vbGJhckFjdGlvblR5cGVzLmFsaWduUmlnaHQsXG4gICAgICAgICAgICBpY29uOiAnYWxpZ24tcmlnaHQnLFxuICAgICAgICAgICAgbmFtZTogJ+WPs+Wvuem9kCcsXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gQWxpZ25FZGl0b3Iuc2V0QWxpZ24oZWRpdG9yLCBBbGlnbm1lbnQucmlnaHQpLFxuICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gQWxpZ25FZGl0b3IuaXNBY3RpdmUoZWRpdG9yLCBBbGlnbm1lbnQucmlnaHQpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZGlzYWJsZWRPcGVyYXRlVHlwZXM6IFsuLi5ESVNBQkxFRF9PUEVSQVRFX1RZUEVTXVxuICAgIH1cbn0pO1xuIl19
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
import { __rest } from "tslib";
|
|
2
|
-
import { Editor } from 'slate';
|
|
3
|
-
import * as TheQueries from '../../queries';
|
|
4
|
-
import { castArray } from '../../utils/cast-array';
|
|
5
|
-
import { autoFormatBlock } from './transforms/auto-format-block';
|
|
6
|
-
import { autoFormatInline } from './transforms/auto-format-inline';
|
|
7
|
-
import { defaultAutoFormatRules } from '../../constants/auto-format-rules';
|
|
8
|
-
import { createPluginFactory, getPluginOptions } from '../../core';
|
|
9
|
-
import { PluginKeys } from '../../interfaces';
|
|
10
|
-
const mergAutoFormateRules = (rules) => {
|
|
11
|
-
const dataInfo = {};
|
|
12
|
-
rules.forEach(item => {
|
|
13
|
-
if (!dataInfo[item.type + item.key]) {
|
|
14
|
-
dataInfo[item.type + item.key] = Object.assign({}, item);
|
|
15
|
-
}
|
|
16
|
-
dataInfo[item.type + item.key] = Object.assign(Object.assign({}, dataInfo[item.type + item.key]), item);
|
|
17
|
-
});
|
|
18
|
-
return dataInfo;
|
|
19
|
-
};
|
|
20
|
-
export const withAutoFormat = (editor) => {
|
|
21
|
-
const { insertText } = editor;
|
|
22
|
-
editor.insertText = text => {
|
|
23
|
-
var _a, _b;
|
|
24
|
-
let autoFormatRules = (_a = getPluginOptions(editor, PluginKeys.autoFormat)) === null || _a === void 0 ? void 0 : _a.autoFormatRules;
|
|
25
|
-
const extraRules = mergAutoFormateRules(autoFormatRules);
|
|
26
|
-
autoFormatRules = Object.values(extraRules);
|
|
27
|
-
if (!TheQueries.isCollapsed(editor.selection)) {
|
|
28
|
-
return insertText(text);
|
|
29
|
-
}
|
|
30
|
-
for (let _c of autoFormatRules) {
|
|
31
|
-
const { query } = _c, rule = __rest(_c, ["query"]);
|
|
32
|
-
const { trigger = ' ', mode = 'block', type, markup, preFormat, format, match, between, ignoreTrim, insertTrigger, allowSameTypeAbove = false, triggerAtBlockStart = true } = rule;
|
|
33
|
-
if (query && !query(editor, rule))
|
|
34
|
-
continue;
|
|
35
|
-
const triggers = castArray(trigger);
|
|
36
|
-
// Check trigger
|
|
37
|
-
if (!triggers.includes(text))
|
|
38
|
-
continue;
|
|
39
|
-
const valid = () => insertTrigger && insertText(text);
|
|
40
|
-
if (mode === 'block') {
|
|
41
|
-
let markups = castArray(markup);
|
|
42
|
-
let markupRange;
|
|
43
|
-
if (triggerAtBlockStart) {
|
|
44
|
-
markupRange = TheQueries.getRangeFromBlockStart(editor);
|
|
45
|
-
// Don't autoformat if there is void nodes.
|
|
46
|
-
const hasVoidNode = TheQueries.someNode(editor, {
|
|
47
|
-
at: markupRange,
|
|
48
|
-
match: n => Editor.isVoid(editor, n)
|
|
49
|
-
});
|
|
50
|
-
if (hasVoidNode)
|
|
51
|
-
continue;
|
|
52
|
-
const textFromBlockStart = TheQueries.getText(editor, markupRange);
|
|
53
|
-
if (match) {
|
|
54
|
-
markups = match(editor, textFromBlockStart);
|
|
55
|
-
}
|
|
56
|
-
if (!markups.includes(textFromBlockStart))
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
markupRange = TheQueries.getRangeBefore(editor, editor.selection, {
|
|
61
|
-
matchString: markup,
|
|
62
|
-
skipInvalid: true
|
|
63
|
-
});
|
|
64
|
-
if (!markupRange)
|
|
65
|
-
continue;
|
|
66
|
-
const blockAbovePath = (_b = TheQueries.getBlockAbove(editor)) === null || _b === void 0 ? void 0 : _b[1];
|
|
67
|
-
if (!blockAbovePath)
|
|
68
|
-
continue;
|
|
69
|
-
// If the markup is not at the start, insert break before autoformatting.
|
|
70
|
-
if (!Editor.isStart(editor, markupRange.anchor, blockAbovePath)) {
|
|
71
|
-
editor.insertBreak();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (!allowSameTypeAbove) {
|
|
75
|
-
// Don't autoformat if already in a block of the same type.
|
|
76
|
-
const isBelowSameBlockType = TheQueries.someNode(editor, { match: { type } });
|
|
77
|
-
if (isBelowSameBlockType)
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
// Start of the block
|
|
81
|
-
autoFormatBlock(editor, type, markupRange, {
|
|
82
|
-
preFormat,
|
|
83
|
-
format
|
|
84
|
-
}, markups);
|
|
85
|
-
return valid();
|
|
86
|
-
}
|
|
87
|
-
if (mode === 'inline') {
|
|
88
|
-
if (autoFormatInline(editor, {
|
|
89
|
-
type,
|
|
90
|
-
between,
|
|
91
|
-
ignoreTrim,
|
|
92
|
-
format,
|
|
93
|
-
markup: Array.isArray(markup) ? markup[0] : markup
|
|
94
|
-
})) {
|
|
95
|
-
return valid();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
insertText(text);
|
|
100
|
-
};
|
|
101
|
-
return editor;
|
|
102
|
-
};
|
|
103
|
-
export const createAutoFormatPlugin = createPluginFactory({
|
|
104
|
-
key: PluginKeys.autoFormat,
|
|
105
|
-
withOverrides: withAutoFormat,
|
|
106
|
-
options: {
|
|
107
|
-
autoFormatRules: defaultAutoFormatRules
|
|
108
|
-
}
|
|
109
|
-
});
|
|
1
|
+
import { __rest } from "tslib";
|
|
2
|
+
import { Editor } from 'slate';
|
|
3
|
+
import * as TheQueries from '../../queries';
|
|
4
|
+
import { castArray } from '../../utils/cast-array';
|
|
5
|
+
import { autoFormatBlock } from './transforms/auto-format-block';
|
|
6
|
+
import { autoFormatInline } from './transforms/auto-format-inline';
|
|
7
|
+
import { defaultAutoFormatRules } from '../../constants/auto-format-rules';
|
|
8
|
+
import { createPluginFactory, getPluginOptions } from '../../core';
|
|
9
|
+
import { PluginKeys } from '../../interfaces';
|
|
10
|
+
const mergAutoFormateRules = (rules) => {
|
|
11
|
+
const dataInfo = {};
|
|
12
|
+
rules.forEach(item => {
|
|
13
|
+
if (!dataInfo[item.type + item.key]) {
|
|
14
|
+
dataInfo[item.type + item.key] = Object.assign({}, item);
|
|
15
|
+
}
|
|
16
|
+
dataInfo[item.type + item.key] = Object.assign(Object.assign({}, dataInfo[item.type + item.key]), item);
|
|
17
|
+
});
|
|
18
|
+
return dataInfo;
|
|
19
|
+
};
|
|
20
|
+
export const withAutoFormat = (editor) => {
|
|
21
|
+
const { insertText } = editor;
|
|
22
|
+
editor.insertText = text => {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
let autoFormatRules = (_a = getPluginOptions(editor, PluginKeys.autoFormat)) === null || _a === void 0 ? void 0 : _a.autoFormatRules;
|
|
25
|
+
const extraRules = mergAutoFormateRules(autoFormatRules);
|
|
26
|
+
autoFormatRules = Object.values(extraRules);
|
|
27
|
+
if (!TheQueries.isCollapsed(editor.selection)) {
|
|
28
|
+
return insertText(text);
|
|
29
|
+
}
|
|
30
|
+
for (let _c of autoFormatRules) {
|
|
31
|
+
const { query } = _c, rule = __rest(_c, ["query"]);
|
|
32
|
+
const { trigger = ' ', mode = 'block', type, markup, preFormat, format, match, between, ignoreTrim, insertTrigger, allowSameTypeAbove = false, triggerAtBlockStart = true } = rule;
|
|
33
|
+
if (query && !query(editor, rule))
|
|
34
|
+
continue;
|
|
35
|
+
const triggers = castArray(trigger);
|
|
36
|
+
// Check trigger
|
|
37
|
+
if (!triggers.includes(text))
|
|
38
|
+
continue;
|
|
39
|
+
const valid = () => insertTrigger && insertText(text);
|
|
40
|
+
if (mode === 'block') {
|
|
41
|
+
let markups = castArray(markup);
|
|
42
|
+
let markupRange;
|
|
43
|
+
if (triggerAtBlockStart) {
|
|
44
|
+
markupRange = TheQueries.getRangeFromBlockStart(editor);
|
|
45
|
+
// Don't autoformat if there is void nodes.
|
|
46
|
+
const hasVoidNode = TheQueries.someNode(editor, {
|
|
47
|
+
at: markupRange,
|
|
48
|
+
match: n => Editor.isVoid(editor, n)
|
|
49
|
+
});
|
|
50
|
+
if (hasVoidNode)
|
|
51
|
+
continue;
|
|
52
|
+
const textFromBlockStart = TheQueries.getText(editor, markupRange);
|
|
53
|
+
if (match) {
|
|
54
|
+
markups = match(editor, textFromBlockStart);
|
|
55
|
+
}
|
|
56
|
+
if (!markups.includes(textFromBlockStart))
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
markupRange = TheQueries.getRangeBefore(editor, editor.selection, {
|
|
61
|
+
matchString: markup,
|
|
62
|
+
skipInvalid: true
|
|
63
|
+
});
|
|
64
|
+
if (!markupRange)
|
|
65
|
+
continue;
|
|
66
|
+
const blockAbovePath = (_b = TheQueries.getBlockAbove(editor)) === null || _b === void 0 ? void 0 : _b[1];
|
|
67
|
+
if (!blockAbovePath)
|
|
68
|
+
continue;
|
|
69
|
+
// If the markup is not at the start, insert break before autoformatting.
|
|
70
|
+
if (!Editor.isStart(editor, markupRange.anchor, blockAbovePath)) {
|
|
71
|
+
editor.insertBreak();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (!allowSameTypeAbove) {
|
|
75
|
+
// Don't autoformat if already in a block of the same type.
|
|
76
|
+
const isBelowSameBlockType = TheQueries.someNode(editor, { match: { type } });
|
|
77
|
+
if (isBelowSameBlockType)
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
// Start of the block
|
|
81
|
+
autoFormatBlock(editor, type, markupRange, {
|
|
82
|
+
preFormat,
|
|
83
|
+
format
|
|
84
|
+
}, markups);
|
|
85
|
+
return valid();
|
|
86
|
+
}
|
|
87
|
+
if (mode === 'inline') {
|
|
88
|
+
if (autoFormatInline(editor, {
|
|
89
|
+
type,
|
|
90
|
+
between,
|
|
91
|
+
ignoreTrim,
|
|
92
|
+
format,
|
|
93
|
+
markup: Array.isArray(markup) ? markup[0] : markup
|
|
94
|
+
})) {
|
|
95
|
+
return valid();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
insertText(text);
|
|
100
|
+
};
|
|
101
|
+
return editor;
|
|
102
|
+
};
|
|
103
|
+
export const createAutoFormatPlugin = createPluginFactory({
|
|
104
|
+
key: PluginKeys.autoFormat,
|
|
105
|
+
withOverrides: withAutoFormat,
|
|
106
|
+
options: {
|
|
107
|
+
autoFormatRules: defaultAutoFormatRules
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
110
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2Zvcm1hdC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9hdXRvZm9ybWF0L2F1dG9mb3JtYXQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBdUIsRUFBRSxFQUFFO0lBQ3JELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFDdkIsSUFBSSxDQUNWLENBQUM7U0FDTDtRQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsbUNBQVEsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFL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QUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBb0I7SUFDekUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxVQUFVO0lBQzFCLGFBQWEsRUFBRSxjQUFjO0lBQzdCLE9BQU8sRUFBRTtRQUNMLGVBQWUsRUFBRSxzQkFBc0I7S0FDMUM7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIFJhbmdlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IGNhc3RBcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzL2Nhc3QtYXJyYXknO1xuaW1wb3J0IHsgQXV0b0Zvcm1hdFJ1bGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2F1dG8tZm9ybWF0JztcbmltcG9ydCB7IGF1dG9Gb3JtYXRCbG9jayB9IGZyb20gJy4vdHJhbnNmb3Jtcy9hdXRvLWZvcm1hdC1ibG9jayc7XG5pbXBvcnQgeyBhdXRvRm9ybWF0SW5saW5lIH0gZnJvbSAnLi90cmFuc2Zvcm1zL2F1dG8tZm9ybWF0LWlubGluZSc7XG5pbXBvcnQgeyBkZWZhdWx0QXV0b0Zvcm1hdFJ1bGVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2F1dG8tZm9ybWF0LXJ1bGVzJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnksIGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuY29uc3QgbWVyZ0F1dG9Gb3JtYXRlUnVsZXMgPSAocnVsZXM6IEF1dG9Gb3JtYXRSdWxlW10pID0+IHtcbiAgICBjb25zdCBkYXRhSW5mbyA9IHt9O1xuICAgIHJ1bGVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmICghZGF0YUluZm9baXRlbS50eXBlICsgaXRlbS5rZXldKSB7XG4gICAgICAgICAgICBkYXRhSW5mb1tpdGVtLnR5cGUgKyBpdGVtLmtleV0gPSB7XG4gICAgICAgICAgICAgICAgLi4uaXRlbVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhSW5mb1tpdGVtLnR5cGUgKyBpdGVtLmtleV0gPSB7IC4uLmRhdGFJbmZvW2l0ZW0udHlwZSArIGl0ZW0ua2V5XSwgLi4uaXRlbSB9O1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhSW5mbztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0Zvcm1hdE9wdGlvbnMge1xuICAgIGF1dG9Gb3JtYXRSdWxlcz86IEF1dG9Gb3JtYXRSdWxlW107XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoQXV0b0Zvcm1hdCA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpID0+IHtcbiAgICBjb25zdCB7IGluc2VydFRleHQgfSA9IGVkaXRvcjtcbiAgICBlZGl0b3IuaW5zZXJ0VGV4dCA9IHRleHQgPT4ge1xuICAgICAgICBsZXQgYXV0b0Zvcm1hdFJ1bGVzID0gZ2V0UGx1Z2luT3B0aW9uczxBdXRvRm9ybWF0T3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLmF1dG9Gb3JtYXQpPy5hdXRvRm9ybWF0UnVsZXM7XG4gICAgICAgIGNvbnN0IGV4dHJhUnVsZXMgPSBtZXJnQXV0b0Zvcm1hdGVSdWxlcyhhdXRvRm9ybWF0UnVsZXMpO1xuICAgICAgICBhdXRvRm9ybWF0UnVsZXMgPSBPYmplY3QudmFsdWVzKGV4dHJhUnVsZXMpO1xuICAgICAgICBpZiAoIVRoZVF1ZXJpZXMuaXNDb2xsYXBzZWQoZWRpdG9yLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB7IHF1ZXJ5LCAuLi5ydWxlIH0gb2YgYXV0b0Zvcm1hdFJ1bGVzKSB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlciA9ICcgJyxcbiAgICAgICAgICAgICAgICBtb2RlID0gJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIG1hcmt1cCxcbiAgICAgICAgICAgICAgICBwcmVGb3JtYXQsXG4gICAgICAgICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgICAgIGJldHdlZW4sXG4gICAgICAgICAgICAgICAgaWdub3JlVHJpbSxcbiAgICAgICAgICAgICAgICBpbnNlcnRUcmlnZ2VyLFxuICAgICAgICAgICAgICAgIGFsbG93U2FtZVR5cGVBYm92ZSA9IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRyaWdnZXJBdEJsb2NrU3RhcnQgPSB0cnVlXG4gICAgICAgICAgICB9ID0gcnVsZTtcblxuICAgICAgICAgICAgaWYgKHF1ZXJ5ICYmICFxdWVyeShlZGl0b3IsIHJ1bGUpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gY2FzdEFycmF5KHRyaWdnZXIpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayB0cmlnZ2VyXG4gICAgICAgICAgICBpZiAoIXRyaWdnZXJzLmluY2x1ZGVzKHRleHQpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSAoKSA9PiBpbnNlcnRUcmlnZ2VyICYmIGluc2VydFRleHQodGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChtb2RlID09PSAnYmxvY2snKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1hcmt1cHM6IHN0cmluZ1tdID0gY2FzdEFycmF5KG1hcmt1cCk7XG4gICAgICAgICAgICAgICAgbGV0IG1hcmt1cFJhbmdlOiBSYW5nZSB8IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyQXRCbG9ja1N0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmt1cFJhbmdlID0gVGhlUXVlcmllcy5nZXRSYW5nZUZyb21CbG9ja1N0YXJ0KGVkaXRvcikgYXMgUmFuZ2U7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgYXV0b2Zvcm1hdCBpZiB0aGVyZSBpcyB2b2lkIG5vZGVzLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNWb2lkTm9kZSA9IFRoZVF1ZXJpZXMuc29tZU5vZGUoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdDogbWFya3VwUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDogbiA9PiBFZGl0b3IuaXNWb2lkKGVkaXRvciwgbilcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNWb2lkTm9kZSkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dEZyb21CbG9ja1N0YXJ0ID0gVGhlUXVlcmllcy5nZXRUZXh0KGVkaXRvciwgbWFya3VwUmFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cHMgPSBtYXRjaChlZGl0b3IsIHRleHRGcm9tQmxvY2tTdGFydCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXJrdXBzLmluY2x1ZGVzKHRleHRGcm9tQmxvY2tTdGFydCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmt1cFJhbmdlID0gVGhlUXVlcmllcy5nZXRSYW5nZUJlZm9yZShlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24gYXMgUmFuZ2UsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoU3RyaW5nOiBtYXJrdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBza2lwSW52YWxpZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXJrdXBSYW5nZSkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBYm92ZVBhdGggPSBUaGVRdWVyaWVzLmdldEJsb2NrQWJvdmUoZWRpdG9yKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWJsb2NrQWJvdmVQYXRoKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbWFya3VwIGlzIG5vdCBhdCB0aGUgc3RhcnQsIGluc2VydCBicmVhayBiZWZvcmUgYXV0b2Zvcm1hdHRpbmcuXG4gICAgICAgICAgICAgICAgICAgIGlmICghRWRpdG9yLmlzU3RhcnQoZWRpdG9yLCBtYXJrdXBSYW5nZS5hbmNob3IsIGJsb2NrQWJvdmVQYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmluc2VydEJyZWFrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWFsbG93U2FtZVR5cGVBYm92ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBhdXRvZm9ybWF0IGlmIGFscmVhZHkgaW4gYSBibG9jayBvZiB0aGUgc2FtZSB0eXBlLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0JlbG93U2FtZUJsb2NrVHlwZSA9IFRoZVF1ZXJpZXMuc29tZU5vZGUoZWRpdG9yLCB7IG1hdGNoOiB7IHR5cGUgfSB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQmVsb3dTYW1lQmxvY2tUeXBlKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBTdGFydCBvZiB0aGUgYmxvY2tcbiAgICAgICAgICAgICAgICBhdXRvRm9ybWF0QmxvY2soXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgbWFya3VwUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZUZvcm1hdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtYXJrdXBzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdpbmxpbmUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9ybWF0SW5saW5lKGVkaXRvciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVUcmltLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiBBcnJheS5pc0FycmF5KG1hcmt1cCkgPyBtYXJrdXBbMF0gOiBtYXJrdXBcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5zZXJ0VGV4dCh0ZXh0KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBdXRvRm9ybWF0UGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeTxBdXRvRm9ybWF0T3B0aW9ucz4oe1xuICAgIGtleTogUGx1Z2luS2V5cy5hdXRvRm9ybWF0LFxuICAgIHdpdGhPdmVycmlkZXM6IHdpdGhBdXRvRm9ybWF0LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgYXV0b0Zvcm1hdFJ1bGVzOiBkZWZhdWx0QXV0b0Zvcm1hdFJ1bGVzXG4gICAgfVxufSk7XG4iXX0=
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { Editor, Transforms } from 'slate';
|
|
2
|
-
export const autoFormatBlock = (editor, type, at, { preFormat, format }, markups) => {
|
|
3
|
-
Transforms.delete(editor, { at });
|
|
4
|
-
if (preFormat) {
|
|
5
|
-
preFormat(editor);
|
|
6
|
-
}
|
|
7
|
-
if (!format) {
|
|
8
|
-
Transforms.setNodes(editor, { type }, { match: n => Editor.isBlock(editor, n) });
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
format(editor, markups);
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Editor, Transforms } from 'slate';
|
|
2
|
+
export const autoFormatBlock = (editor, type, at, { preFormat, format }, markups) => {
|
|
3
|
+
Transforms.delete(editor, { at });
|
|
4
|
+
if (preFormat) {
|
|
5
|
+
preFormat(editor);
|
|
6
|
+
}
|
|
7
|
+
if (!format) {
|
|
8
|
+
Transforms.setNodes(editor, { type }, { match: n => Editor.isBlock(editor, n) });
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
format(editor, markups);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1mb3JtYXQtYmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9hdXRvZm9ybWF0L3RyYW5zZm9ybXMvYXV0by1mb3JtYXQtYmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBWSxVQUFVLEVBQVEsTUFBTSxPQUFPLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQzNCLE1BQWMsRUFDZCxJQUFZLEVBQ1osRUFBWSxFQUNaLEVBQ0ksU0FBUyxFQUNULE1BQU0sRUFJVCxFQUNELE9BQWtCLEVBQ3BCLEVBQUU7SUFDQSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFbEMsSUFBSSxTQUFTLEVBQUU7UUFDWCxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDckI7SUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUM1RjtTQUFNO1FBQ0gsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMzQjtBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgTG9jYXRpb24sIFRyYW5zZm9ybXMsIE5vZGUgfSBmcm9tICdzbGF0ZSc7XHJcblxyXG5leHBvcnQgY29uc3QgYXV0b0Zvcm1hdEJsb2NrID0gKFxyXG4gICAgZWRpdG9yOiBFZGl0b3IsXHJcbiAgICB0eXBlOiBzdHJpbmcsXHJcbiAgICBhdDogTG9jYXRpb24sXHJcbiAgICB7XHJcbiAgICAgICAgcHJlRm9ybWF0LFxyXG4gICAgICAgIGZvcm1hdFxyXG4gICAgfToge1xyXG4gICAgICAgIHByZUZvcm1hdD86IChlZGl0b3I6IEVkaXRvcikgPT4gdm9pZDtcclxuICAgICAgICBmb3JtYXQ/OiAoZWRpdG9yOiBFZGl0b3IsIG1hcmt1cHM/OiBzdHJpbmdbXSkgPT4gdm9pZDtcclxuICAgIH0sXHJcbiAgICBtYXJrdXBzPzogc3RyaW5nW11cclxuKSA9PiB7XHJcbiAgICBUcmFuc2Zvcm1zLmRlbGV0ZShlZGl0b3IsIHsgYXQgfSk7XHJcblxyXG4gICAgaWYgKHByZUZvcm1hdCkge1xyXG4gICAgICAgIHByZUZvcm1hdChlZGl0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZm9ybWF0KSB7XHJcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHsgdHlwZSB9IGFzIE5vZGUsIHsgbWF0Y2g6IG4gPT4gRWRpdG9yLmlzQmxvY2soZWRpdG9yLCBuKSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9ybWF0KGVkaXRvciwgbWFya3Vwcyk7XHJcbiAgICB9XHJcbn07XHJcbiJdfQ==
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
import { Transforms } from 'slate';
|
|
2
|
-
import * as TheQueries from '../../../queries';
|
|
3
|
-
export const autoFormatInline = (editor, { type, between, markup, ignoreTrim, format }) => {
|
|
4
|
-
const selection = editor.selection;
|
|
5
|
-
const startMarkup = between ? between[0] : markup;
|
|
6
|
-
const endMarkup = between ? between[1] : '';
|
|
7
|
-
let endMarkupPointBefore = selection.anchor;
|
|
8
|
-
if (endMarkup) {
|
|
9
|
-
endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {
|
|
10
|
-
matchString: endMarkup
|
|
11
|
-
});
|
|
12
|
-
if (!endMarkupPointBefore) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
const startMarkupPointAfter = TheQueries.getPointBefore(editor, endMarkupPointBefore, {
|
|
17
|
-
matchString: startMarkup,
|
|
18
|
-
skipInvalid: true,
|
|
19
|
-
afterMatch: true
|
|
20
|
-
});
|
|
21
|
-
if (!startMarkupPointAfter) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
// found
|
|
25
|
-
const markupRange = {
|
|
26
|
-
anchor: startMarkupPointAfter,
|
|
27
|
-
focus: endMarkupPointBefore
|
|
28
|
-
};
|
|
29
|
-
if (!ignoreTrim) {
|
|
30
|
-
const markupText = TheQueries.getText(editor, markupRange);
|
|
31
|
-
if (markupText.trim() !== markupText) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
// delete end markup
|
|
36
|
-
if (endMarkup) {
|
|
37
|
-
endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {
|
|
38
|
-
matchString: endMarkup
|
|
39
|
-
});
|
|
40
|
-
Transforms.delete(editor, {
|
|
41
|
-
at: {
|
|
42
|
-
anchor: endMarkupPointBefore,
|
|
43
|
-
focus: selection.anchor
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
const startMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {
|
|
48
|
-
matchString: startMarkup,
|
|
49
|
-
skipInvalid: true
|
|
50
|
-
});
|
|
51
|
-
if (format) {
|
|
52
|
-
const markupText = TheQueries.getText(editor, markupRange);
|
|
53
|
-
format(editor, markupText);
|
|
54
|
-
// delete start to end selection
|
|
55
|
-
Transforms.delete(editor, {
|
|
56
|
-
at: {
|
|
57
|
-
anchor: startMarkupPointBefore,
|
|
58
|
-
focus: selection.anchor
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
// add mark to the text between the markups
|
|
64
|
-
Transforms.select(editor, markupRange);
|
|
65
|
-
editor.addMark(type, true);
|
|
66
|
-
Transforms.collapse(editor, { edge: 'end' });
|
|
67
|
-
editor.removeMark(type, false);
|
|
68
|
-
// delete start markup
|
|
69
|
-
Transforms.delete(editor, {
|
|
70
|
-
at: {
|
|
71
|
-
anchor: startMarkupPointBefore,
|
|
72
|
-
focus: startMarkupPointAfter
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return true;
|
|
77
|
-
};
|
|
1
|
+
import { Transforms } from 'slate';
|
|
2
|
+
import * as TheQueries from '../../../queries';
|
|
3
|
+
export const autoFormatInline = (editor, { type, between, markup, ignoreTrim, format }) => {
|
|
4
|
+
const selection = editor.selection;
|
|
5
|
+
const startMarkup = between ? between[0] : markup;
|
|
6
|
+
const endMarkup = between ? between[1] : '';
|
|
7
|
+
let endMarkupPointBefore = selection.anchor;
|
|
8
|
+
if (endMarkup) {
|
|
9
|
+
endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {
|
|
10
|
+
matchString: endMarkup
|
|
11
|
+
});
|
|
12
|
+
if (!endMarkupPointBefore) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const startMarkupPointAfter = TheQueries.getPointBefore(editor, endMarkupPointBefore, {
|
|
17
|
+
matchString: startMarkup,
|
|
18
|
+
skipInvalid: true,
|
|
19
|
+
afterMatch: true
|
|
20
|
+
});
|
|
21
|
+
if (!startMarkupPointAfter) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
// found
|
|
25
|
+
const markupRange = {
|
|
26
|
+
anchor: startMarkupPointAfter,
|
|
27
|
+
focus: endMarkupPointBefore
|
|
28
|
+
};
|
|
29
|
+
if (!ignoreTrim) {
|
|
30
|
+
const markupText = TheQueries.getText(editor, markupRange);
|
|
31
|
+
if (markupText.trim() !== markupText) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// delete end markup
|
|
36
|
+
if (endMarkup) {
|
|
37
|
+
endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {
|
|
38
|
+
matchString: endMarkup
|
|
39
|
+
});
|
|
40
|
+
Transforms.delete(editor, {
|
|
41
|
+
at: {
|
|
42
|
+
anchor: endMarkupPointBefore,
|
|
43
|
+
focus: selection.anchor
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const startMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {
|
|
48
|
+
matchString: startMarkup,
|
|
49
|
+
skipInvalid: true
|
|
50
|
+
});
|
|
51
|
+
if (format) {
|
|
52
|
+
const markupText = TheQueries.getText(editor, markupRange);
|
|
53
|
+
format(editor, markupText);
|
|
54
|
+
// delete start to end selection
|
|
55
|
+
Transforms.delete(editor, {
|
|
56
|
+
at: {
|
|
57
|
+
anchor: startMarkupPointBefore,
|
|
58
|
+
focus: selection.anchor
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// add mark to the text between the markups
|
|
64
|
+
Transforms.select(editor, markupRange);
|
|
65
|
+
editor.addMark(type, true);
|
|
66
|
+
Transforms.collapse(editor, { edge: 'end' });
|
|
67
|
+
editor.removeMark(type, false);
|
|
68
|
+
// delete start markup
|
|
69
|
+
Transforms.delete(editor, {
|
|
70
|
+
at: {
|
|
71
|
+
anchor: startMarkupPointBefore,
|
|
72
|
+
focus: startMarkupPointAfter
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
};
|
|
78
78
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1mb3JtYXQtaW5saW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvYXV0b2Zvcm1hdC90cmFuc2Zvcm1zL2F1dG8tZm9ybWF0LWlubGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsRCxPQUFPLEtBQUssVUFBVSxNQUFNLGtCQUFrQixDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzVCLE1BQWtCLEVBQ2xCLEVBQ0ksSUFBSSxFQUNKLE9BQU8sRUFDUCxNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFPVCxFQUNILEVBQUU7SUFDQSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBa0IsQ0FBQztJQUU1QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFNUMsSUFBSSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQzVDLElBQUksU0FBUyxFQUFFO1FBQ1gsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ2hFLFdBQVcsRUFBRSxTQUFTO1NBQ3pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN2QixPQUFPLEtBQUssQ0FBQztTQUNoQjtLQUNKO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRTtRQUNsRixXQUFXLEVBQUUsV0FBVztRQUN4QixXQUFXLEVBQUUsSUFBSTtRQUNqQixVQUFVLEVBQUUsSUFBSTtLQUNuQixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMscUJBQXFCLEVBQUU7UUFDeEIsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxRQUFRO0lBRVIsTUFBTSxXQUFXLEdBQVU7UUFDdkIsTUFBTSxFQUFFLHFCQUFxQjtRQUM3QixLQUFLLEVBQUUsb0JBQW9CO0tBQzlCLENBQUM7SUFFRixJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2IsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0QsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssVUFBVSxFQUFFO1lBQ2xDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0tBQ0o7SUFFRCxvQkFBb0I7SUFDcEIsSUFBSSxTQUFTLEVBQUU7UUFDWCxvQkFBb0IsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7WUFDaEUsV0FBVyxFQUFFLFNBQVM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDdEIsRUFBRSxFQUFFO2dCQUNBLE1BQU0sRUFBRSxvQkFBb0I7Z0JBQzVCLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTthQUMxQjtTQUNKLENBQUMsQ0FBQztLQUNOO0lBQ0QsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7UUFDeEUsV0FBVyxFQUFFLFdBQVc7UUFDeEIsV0FBVyxFQUFFLElBQUk7S0FDcEIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxNQUFNLEVBQUU7UUFDUixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTNCLGdDQUFnQztRQUNoQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN0QixFQUFFLEVBQUU7Z0JBQ0EsTUFBTSxFQUFFLHNCQUFzQjtnQkFDOUIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNO2FBQzFCO1NBQ0osQ0FBQyxDQUFDO0tBQ047U0FBTTtRQUNILDJDQUEyQztRQUMzQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQixVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRS9CLHNCQUFzQjtRQUN0QixVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN0QixFQUFFLEVBQUU7Z0JBQ0EsTUFBTSxFQUFFLHNCQUFzQjtnQkFDOUIsS0FBSyxFQUFFLHFCQUFxQjthQUMvQjtTQUNKLENBQUMsQ0FBQztLQUNOO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBSYW5nZSwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBNYXJrRWRpdG9yIH0gZnJvbSAnLi4vLi4vLi4vcGx1Z2lucy9tYXJrL21hcmsuZWRpdG9yJztcblxuZXhwb3J0IGNvbnN0IGF1dG9Gb3JtYXRJbmxpbmUgPSAoXG4gICAgZWRpdG9yOiBNYXJrRWRpdG9yLFxuICAgIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgYmV0d2VlbixcbiAgICAgICAgbWFya3VwLFxuICAgICAgICBpZ25vcmVUcmltLFxuICAgICAgICBmb3JtYXRcbiAgICB9OiB7XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgYmV0d2Vlbj86IHN0cmluZ1tdO1xuICAgICAgICBtYXJrdXA/OiBzdHJpbmc7XG4gICAgICAgIGlnbm9yZVRyaW0/OiBib29sZWFuO1xuICAgICAgICBmb3JtYXQ/OiAoZWRpdG9yOiBFZGl0b3IsIG1hcmt1cD86IHN0cmluZykgPT4gdm9pZDtcbiAgICB9XG4pID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3Iuc2VsZWN0aW9uIGFzIFJhbmdlO1xuXG4gICAgY29uc3Qgc3RhcnRNYXJrdXAgPSBiZXR3ZWVuID8gYmV0d2VlblswXSA6IG1hcmt1cDtcbiAgICBjb25zdCBlbmRNYXJrdXAgPSBiZXR3ZWVuID8gYmV0d2VlblsxXSA6ICcnO1xuXG4gICAgbGV0IGVuZE1hcmt1cFBvaW50QmVmb3JlID0gc2VsZWN0aW9uLmFuY2hvcjtcbiAgICBpZiAoZW5kTWFya3VwKSB7XG4gICAgICAgIGVuZE1hcmt1cFBvaW50QmVmb3JlID0gVGhlUXVlcmllcy5nZXRQb2ludEJlZm9yZShlZGl0b3IsIHNlbGVjdGlvbiwge1xuICAgICAgICAgICAgbWF0Y2hTdHJpbmc6IGVuZE1hcmt1cFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFlbmRNYXJrdXBQb2ludEJlZm9yZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRNYXJrdXBQb2ludEFmdGVyID0gVGhlUXVlcmllcy5nZXRQb2ludEJlZm9yZShlZGl0b3IsIGVuZE1hcmt1cFBvaW50QmVmb3JlLCB7XG4gICAgICAgIG1hdGNoU3RyaW5nOiBzdGFydE1hcmt1cCxcbiAgICAgICAgc2tpcEludmFsaWQ6IHRydWUsXG4gICAgICAgIGFmdGVyTWF0Y2g6IHRydWVcbiAgICB9KTtcblxuICAgIGlmICghc3RhcnRNYXJrdXBQb2ludEFmdGVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBmb3VuZFxuXG4gICAgY29uc3QgbWFya3VwUmFuZ2U6IFJhbmdlID0ge1xuICAgICAgICBhbmNob3I6IHN0YXJ0TWFya3VwUG9pbnRBZnRlcixcbiAgICAgICAgZm9jdXM6IGVuZE1hcmt1cFBvaW50QmVmb3JlXG4gICAgfTtcblxuICAgIGlmICghaWdub3JlVHJpbSkge1xuICAgICAgICBjb25zdCBtYXJrdXBUZXh0ID0gVGhlUXVlcmllcy5nZXRUZXh0KGVkaXRvciwgbWFya3VwUmFuZ2UpO1xuICAgICAgICBpZiAobWFya3VwVGV4dC50cmltKCkgIT09IG1hcmt1cFRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRlbGV0ZSBlbmQgbWFya3VwXG4gICAgaWYgKGVuZE1hcmt1cCkge1xuICAgICAgICBlbmRNYXJrdXBQb2ludEJlZm9yZSA9IFRoZVF1ZXJpZXMuZ2V0UG9pbnRCZWZvcmUoZWRpdG9yLCBzZWxlY3Rpb24sIHtcbiAgICAgICAgICAgIG1hdGNoU3RyaW5nOiBlbmRNYXJrdXBcbiAgICAgICAgfSk7XG4gICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKGVkaXRvciwge1xuICAgICAgICAgICAgYXQ6IHtcbiAgICAgICAgICAgICAgICBhbmNob3I6IGVuZE1hcmt1cFBvaW50QmVmb3JlLFxuICAgICAgICAgICAgICAgIGZvY3VzOiBzZWxlY3Rpb24uYW5jaG9yXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBzdGFydE1hcmt1cFBvaW50QmVmb3JlID0gVGhlUXVlcmllcy5nZXRQb2ludEJlZm9yZShlZGl0b3IsIHNlbGVjdGlvbiwge1xuICAgICAgICBtYXRjaFN0cmluZzogc3RhcnRNYXJrdXAsXG4gICAgICAgIHNraXBJbnZhbGlkOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAoZm9ybWF0KSB7XG4gICAgICAgIGNvbnN0IG1hcmt1cFRleHQgPSBUaGVRdWVyaWVzLmdldFRleHQoZWRpdG9yLCBtYXJrdXBSYW5nZSk7XG4gICAgICAgIGZvcm1hdChlZGl0b3IsIG1hcmt1cFRleHQpO1xuXG4gICAgICAgIC8vIGRlbGV0ZSBzdGFydCB0byBlbmQgc2VsZWN0aW9uXG4gICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKGVkaXRvciwge1xuICAgICAgICAgICAgYXQ6IHtcbiAgICAgICAgICAgICAgICBhbmNob3I6IHN0YXJ0TWFya3VwUG9pbnRCZWZvcmUsXG4gICAgICAgICAgICAgICAgZm9jdXM6IHNlbGVjdGlvbi5hbmNob3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYWRkIG1hcmsgdG8gdGhlIHRleHQgYmV0d2VlbiB0aGUgbWFya3Vwc1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIG1hcmt1cFJhbmdlKTtcbiAgICAgICAgZWRpdG9yLmFkZE1hcmsodHlwZSwgdHJ1ZSk7XG4gICAgICAgIFRyYW5zZm9ybXMuY29sbGFwc2UoZWRpdG9yLCB7IGVkZ2U6ICdlbmQnIH0pO1xuICAgICAgICBlZGl0b3IucmVtb3ZlTWFyayh0eXBlLCBmYWxzZSk7XG5cbiAgICAgICAgLy8gZGVsZXRlIHN0YXJ0IG1hcmt1cFxuICAgICAgICBUcmFuc2Zvcm1zLmRlbGV0ZShlZGl0b3IsIHtcbiAgICAgICAgICAgIGF0OiB7XG4gICAgICAgICAgICAgICAgYW5jaG9yOiBzdGFydE1hcmt1cFBvaW50QmVmb3JlLFxuICAgICAgICAgICAgICAgIGZvY3VzOiBzdGFydE1hcmt1cFBvaW50QWZ0ZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG59O1xuIl19
|