@worktile/theia 18.0.16 → 19.0.0
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/constants/node-types.d.ts +1 -0
- package/core/toolbar-item/base-toolbar-item.d.ts +2 -2
- package/fesm2022/worktile-theia.mjs +262 -281
- package/fesm2022/worktile-theia.mjs.map +1 -1
- package/package.json +4 -6
- package/plugins/code/code.component.scss +1 -2
- package/plugins/image/image.component.d.ts +1 -1
- package/plugins/mention/suggestion.component.d.ts +1 -1
- package/esm2022/components/action/prevent-default.mjs +0 -21
- package/esm2022/components/column-resize/column-resize-notifier.mjs +0 -31
- package/esm2022/components/column-resize/column-resize.directive.mjs +0 -124
- package/esm2022/components/column-resize/event-dispatcher.mjs +0 -56
- package/esm2022/components/column-resize/overlay-handle.component.mjs +0 -144
- package/esm2022/components/column-resize/resize-ref.mjs +0 -26
- package/esm2022/components/column-resize/resizing.store.mjs +0 -92
- package/esm2022/components/column-resize/selectors.mjs +0 -4
- package/esm2022/components/contextmenu/contextmenu.component.mjs +0 -99
- package/esm2022/components/conversion-hint/conversion-hint.component.mjs +0 -56
- package/esm2022/components/element/element.component.mjs +0 -23
- package/esm2022/components/index.mjs +0 -24
- package/esm2022/components/inline-toolbar/inline-toolbar.component.mjs +0 -131
- package/esm2022/components/listbox/listbox.mjs +0 -380
- package/esm2022/components/listbox/listbox.type.mjs +0 -5
- package/esm2022/components/plugin-menu/plugin-menu.component.mjs +0 -272
- package/esm2022/components/table-select/table-select.component.mjs +0 -49
- package/esm2022/components/template/template.component.mjs +0 -62
- package/esm2022/components/text/text.component.mjs +0 -57
- package/esm2022/components/toolbar/toolbar.component.mjs +0 -262
- package/esm2022/components/toolbar-dropdown/toolbar-dropdown.component.mjs +0 -137
- package/esm2022/components/toolbar-group/toolbar-group.component.mjs +0 -125
- package/esm2022/components/toolbar-item/toolbar-item.component.mjs +0 -80
- package/esm2022/constants/auto-format-rules.mjs +0 -167
- package/esm2022/constants/code.mjs +0 -85
- package/esm2022/constants/color-select.mjs +0 -3
- package/esm2022/constants/default.mjs +0 -11
- package/esm2022/constants/error.mjs +0 -7
- package/esm2022/constants/index.mjs +0 -9
- package/esm2022/constants/node-types.mjs +0 -136
- package/esm2022/constants/plugin-menu.mjs +0 -311
- package/esm2022/constants/selector.mjs +0 -3
- package/esm2022/constants/toolbar.mjs +0 -53
- package/esm2022/core/create-plugin.mjs +0 -5
- package/esm2022/core/create-toolbar.mjs +0 -55
- package/esm2022/core/index.mjs +0 -6
- package/esm2022/core/toolbar-item/base-toolbar-item.mjs +0 -95
- package/esm2022/core/utils/combine-plugins.mjs +0 -10
- package/esm2022/core/utils/flatten-deep-plugins.mjs +0 -19
- package/esm2022/core/utils/get-plugin-options.mjs +0 -3
- package/esm2022/core/utils/get-plugin.mjs +0 -2
- package/esm2022/core/utils/get-plugins.mjs +0 -4
- package/esm2022/core/utils/index.mjs +0 -12
- package/esm2022/core/utils/merge-array.mjs +0 -18
- package/esm2022/core/utils/merge-deep-plugins.mjs +0 -14
- package/esm2022/core/utils/merge-options.mjs +0 -25
- package/esm2022/core/utils/nested-structure-by-key.mjs +0 -11
- package/esm2022/core/utils/plugin-menu.mjs +0 -63
- package/esm2022/core/utils/plugins-by-key.mjs +0 -10
- package/esm2022/core/with-theia.mjs +0 -25
- package/esm2022/custom-types.mjs +0 -2
- package/esm2022/editor.component.mjs +0 -488
- package/esm2022/editor.module.mjs +0 -18
- package/esm2022/i18n/i18n.mjs +0 -10
- package/esm2022/i18n/i18n.service.mjs +0 -46
- package/esm2022/i18n/i18n.token.mjs +0 -9
- package/esm2022/i18n/index.mjs +0 -10
- package/esm2022/i18n/locales/de-de.mjs +0 -102
- package/esm2022/i18n/locales/en-us.mjs +0 -102
- package/esm2022/i18n/locales/ja-jp.mjs +0 -102
- package/esm2022/i18n/locales/ru-ru.mjs +0 -102
- package/esm2022/i18n/locales/zh-hans.mjs +0 -102
- package/esm2022/i18n/locales/zh-hant.mjs +0 -102
- package/esm2022/interfaces/auto-format.mjs +0 -2
- package/esm2022/interfaces/editor.mjs +0 -26
- package/esm2022/interfaces/element.mjs +0 -2
- package/esm2022/interfaces/image.mjs +0 -3
- package/esm2022/interfaces/index.mjs +0 -11
- package/esm2022/interfaces/plugins/index.mjs +0 -6
- package/esm2022/interfaces/plugins/no-infer.mjs +0 -2
- package/esm2022/interfaces/plugins/plugin-key.mjs +0 -42
- package/esm2022/interfaces/plugins/plugin-menu.mjs +0 -19
- package/esm2022/interfaces/plugins/plugins.mjs +0 -2
- package/esm2022/interfaces/plugins/with-override.mjs +0 -2
- package/esm2022/interfaces/preset.mjs +0 -3
- package/esm2022/interfaces/reset-block-type-plugin-options.mjs +0 -2
- package/esm2022/interfaces/toolbar.mjs +0 -12
- package/esm2022/interfaces/upload.mjs +0 -2
- package/esm2022/interfaces/utility/index.mjs +0 -4
- package/esm2022/interfaces/utility/nested-structure-by-key.mjs +0 -2
- package/esm2022/interfaces/utility/override-by-key.mjs +0 -2
- package/esm2022/interfaces/utility/types.mjs +0 -2
- package/esm2022/interfaces/valid-children-types.mjs +0 -36
- package/esm2022/interfaces/view-base.mjs +0 -38
- package/esm2022/pipes.mjs +0 -61
- package/esm2022/plugins/align/align.editor.mjs +0 -41
- package/esm2022/plugins/align/align.plugin.mjs +0 -64
- package/esm2022/plugins/autoformat/autoformat.plugin.mjs +0 -109
- package/esm2022/plugins/autoformat/transforms/auto-format-block.mjs +0 -14
- package/esm2022/plugins/autoformat/transforms/auto-format-inline.mjs +0 -78
- package/esm2022/plugins/blockquote/blockquote.component.mjs +0 -16
- package/esm2022/plugins/blockquote/blockquote.editor.mjs +0 -20
- package/esm2022/plugins/blockquote/blockquote.plugin.mjs +0 -84
- package/esm2022/plugins/code/code.component.mjs +0 -255
- package/esm2022/plugins/code/code.editor.mjs +0 -59
- package/esm2022/plugins/code/code.plugin.mjs +0 -67
- package/esm2022/plugins/color/color.editor.mjs +0 -27
- package/esm2022/plugins/color/color.plugin.mjs +0 -32
- package/esm2022/plugins/color/toolbar-item.component.mjs +0 -99
- package/esm2022/plugins/common/block-card.plugin.mjs +0 -330
- package/esm2022/plugins/common/common.plugin.mjs +0 -49
- package/esm2022/plugins/common/get-fragment.plugin.mjs +0 -24
- package/esm2022/plugins/common/history.plugin.mjs +0 -31
- package/esm2022/plugins/common/insert-data-by-invalid-type.mjs +0 -23
- package/esm2022/plugins/common/move-selection.plugin.mjs +0 -105
- package/esm2022/plugins/common/remove-empty.plugin.mjs +0 -61
- package/esm2022/plugins/common/remove-void.plugin.mjs +0 -60
- package/esm2022/plugins/common/reset-type.plugin.mjs +0 -35
- package/esm2022/plugins/deserialize/deserialize-html.plugin.mjs +0 -61
- package/esm2022/plugins/deserialize/deserialize-md.plugin.mjs +0 -142
- package/esm2022/plugins/font-size/font-size.editor.mjs +0 -98
- package/esm2022/plugins/heading/heading.editor.mjs +0 -54
- package/esm2022/plugins/heading/heading.plugin.mjs +0 -136
- package/esm2022/plugins/hr/hr.component.mjs +0 -37
- package/esm2022/plugins/hr/hr.editor.mjs +0 -16
- package/esm2022/plugins/hr/hr.plugin.mjs +0 -56
- package/esm2022/plugins/image/image.component.mjs +0 -474
- package/esm2022/plugins/image/image.editor.mjs +0 -116
- package/esm2022/plugins/image/image.plugin.mjs +0 -90
- package/esm2022/plugins/indent/indent.editor.mjs +0 -78
- package/esm2022/plugins/indent/indent.plugin.mjs +0 -59
- package/esm2022/plugins/indent/on-keydown-indent.mjs +0 -59
- package/esm2022/plugins/index.mjs +0 -73
- package/esm2022/plugins/inline-code/inline-code.component.mjs +0 -28
- package/esm2022/plugins/inline-code/inline-code.editor.mjs +0 -49
- package/esm2022/plugins/inline-code/inline-code.plugin.mjs +0 -67
- package/esm2022/plugins/link/edit/link-edit.component.mjs +0 -104
- package/esm2022/plugins/link/hover/link-hover.component.mjs +0 -38
- package/esm2022/plugins/link/link.component.mjs +0 -170
- package/esm2022/plugins/link/link.editor.mjs +0 -87
- package/esm2022/plugins/link/link.plugin.mjs +0 -89
- package/esm2022/plugins/link/link.types.mjs +0 -12
- package/esm2022/plugins/list/components/bulleted-list.component.mjs +0 -28
- package/esm2022/plugins/list/components/list-item.component.mjs +0 -88
- package/esm2022/plugins/list/components/numbered-list.component.mjs +0 -37
- package/esm2022/plugins/list/list.editor.mjs +0 -128
- package/esm2022/plugins/list/list.plugin.mjs +0 -302
- package/esm2022/plugins/list/normalizers/get-list-normalizer.mjs +0 -39
- package/esm2022/plugins/list/normalizers/normalize-list-item.mjs +0 -18
- package/esm2022/plugins/list/normalizers/normalize-no.mjs +0 -43
- package/esm2022/plugins/list/on-key-down-list.mjs +0 -33
- package/esm2022/plugins/list/queries/get-list-item-entry.mjs +0 -28
- package/esm2022/plugins/list/queries/get-list-item-sublist.mjs +0 -12
- package/esm2022/plugins/list/queries/get-list-types.mjs +0 -5
- package/esm2022/plugins/list/queries/get-start-list-item.mjs +0 -27
- package/esm2022/plugins/list/queries/has-list-in-list-item.mjs +0 -27
- package/esm2022/plugins/list/queries/is-in-list.mjs +0 -6
- package/esm2022/plugins/list/queries/is-list-nested.mjs +0 -10
- package/esm2022/plugins/list/queries/is-list.mjs +0 -5
- package/esm2022/plugins/list/queries/is-node-type-list.mjs +0 -5
- package/esm2022/plugins/list/queries/is-selection-at-list-item-start.mjs +0 -13
- package/esm2022/plugins/list/queries/is-selection-in-same-list-item.mjs +0 -17
- package/esm2022/plugins/list/queries/is-single-list-item.mjs +0 -9
- package/esm2022/plugins/list/transforms/insert-list-data.mjs +0 -72
- package/esm2022/plugins/list/transforms/insert-list-item.mjs +0 -73
- package/esm2022/plugins/list/transforms/move-list-item-down.mjs +0 -41
- package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs +0 -43
- package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs +0 -30
- package/esm2022/plugins/list/transforms/move-list-item-up.mjs +0 -78
- package/esm2022/plugins/list/transforms/unwrap-list.mjs +0 -10
- package/esm2022/plugins/list/types.mjs +0 -2
- package/esm2022/plugins/mark/mark.editor.mjs +0 -28
- package/esm2022/plugins/mark/mark.plugin.mjs +0 -105
- package/esm2022/plugins/mention/index.mjs +0 -5
- package/esm2022/plugins/mention/mention.editor.mjs +0 -179
- package/esm2022/plugins/mention/mention.plugin.mjs +0 -92
- package/esm2022/plugins/mention/mention.type.mjs +0 -2
- package/esm2022/plugins/mention/suggestion.component.mjs +0 -22
- package/esm2022/plugins/node-id/node-id.plugin.mjs +0 -78
- package/esm2022/plugins/normalizers/insert-paragraph-nodes.mjs +0 -28
- package/esm2022/plugins/normalizers/remove-empty-nodes.mjs +0 -18
- package/esm2022/plugins/normalizers/trailing-node.plugin.mjs +0 -33
- package/esm2022/plugins/paint-format/paint-format.editor.mjs +0 -126
- package/esm2022/plugins/public-api.mjs +0 -20
- package/esm2022/plugins/quick-insert/components/quick-insert.component.mjs +0 -126
- package/esm2022/plugins/quick-insert/index.mjs +0 -4
- package/esm2022/plugins/quick-insert/quick-insert.editor.mjs +0 -70
- package/esm2022/plugins/quick-insert/quick-insert.plugin.mjs +0 -109
- package/esm2022/plugins/soft-break/soft-break.plugin.mjs +0 -36
- package/esm2022/plugins/soft-break/soft-break.types.mjs +0 -2
- package/esm2022/plugins/table/components/insert-mark/insert-mark.component.mjs +0 -132
- package/esm2022/plugins/table/components/row/row.component.mjs +0 -93
- package/esm2022/plugins/table/components/table.component.mjs +0 -887
- package/esm2022/plugins/table/components/td/td.component.mjs +0 -610
- package/esm2022/plugins/table/components/toolbar/table-options.component.mjs +0 -102
- package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +0 -179
- package/esm2022/plugins/table/table.editor.mjs +0 -301
- package/esm2022/plugins/table/table.pipe.mjs +0 -66
- package/esm2022/plugins/table/table.plugin.mjs +0 -556
- package/esm2022/plugins/table/table.service.mjs +0 -122
- package/esm2022/plugins/table/table.store.mjs +0 -417
- package/esm2022/plugins/table/table.types.mjs +0 -68
- package/esm2022/plugins/table/toolbar-item.component.mjs +0 -95
- package/esm2022/plugins/table/transforms/clear-cell.mjs +0 -14
- package/esm2022/plugins/table/transforms/clear-table-node.mjs +0 -27
- package/esm2022/plugins/table/transforms/index.mjs +0 -8
- package/esm2022/plugins/table/transforms/insert-column.mjs +0 -69
- package/esm2022/plugins/table/transforms/insert-row.mjs +0 -50
- package/esm2022/plugins/table/transforms/insert-table.mjs +0 -15
- package/esm2022/plugins/table/transforms/move-selection-from-cell.mjs +0 -91
- package/esm2022/plugins/table/transforms/remove-column.mjs +0 -51
- package/esm2022/plugins/table/transforms/remove-row.mjs +0 -48
- package/esm2022/plugins/table/transforms/remove-table.mjs +0 -49
- package/esm2022/plugins/table/utils/add-columns.mjs +0 -38
- package/esm2022/plugins/table/utils/calc-anchor-position.mjs +0 -26
- package/esm2022/plugins/table/utils/calc-span.mjs +0 -73
- package/esm2022/plugins/table/utils/calculate-table.mjs +0 -116
- package/esm2022/plugins/table/utils/cell-position.mjs +0 -57
- package/esm2022/plugins/table/utils/create-cell.mjs +0 -19
- package/esm2022/plugins/table/utils/create-row.mjs +0 -12
- package/esm2022/plugins/table/utils/create-table-position.mjs +0 -10
- package/esm2022/plugins/table/utils/create-table.mjs +0 -15
- package/esm2022/plugins/table/utils/get-grid-columns.mjs +0 -79
- package/esm2022/plugins/table/utils/get-min-max-cell-index.mjs +0 -69
- package/esm2022/plugins/table/utils/get-next-cell.mjs +0 -44
- package/esm2022/plugins/table/utils/get-select-cell-node.mjs +0 -16
- package/esm2022/plugins/table/utils/handle-cell.mjs +0 -25
- package/esm2022/plugins/table/utils/index.mjs +0 -16
- package/esm2022/plugins/table/utils/is-header-row.mjs +0 -15
- package/esm2022/plugins/table/utils/is-legal-table.mjs +0 -26
- package/esm2022/plugins/table/utils/is-range-in-table.mjs +0 -16
- package/esm2022/plugins/table/utils/is-selection-in-table.mjs +0 -51
- package/esm2022/plugins/table/utils/is-virtual-key.mjs +0 -13
- package/esm2022/plugins/table/utils/merge-cell.mjs +0 -110
- package/esm2022/plugins/table/utils/next-path.mjs +0 -5
- package/esm2022/plugins/table/utils/normalize-table.mjs +0 -31
- package/esm2022/plugins/table/utils/remove-columns.mjs +0 -23
- package/esm2022/plugins/table/utils/remove-row-column.mjs +0 -45
- package/esm2022/plugins/table/utils/set-menu-cell-invisibility.mjs +0 -45
- package/esm2022/plugins/table/utils/split-cell.mjs +0 -29
- package/esm2022/plugins/table/utils/table-entry.mjs +0 -21
- package/esm2022/plugins/table/utils/table-position.mjs +0 -251
- package/esm2022/plugins/table/utils/table-viewport.mjs +0 -41
- package/esm2022/plugins/todo-item/todo-item.component.mjs +0 -65
- package/esm2022/plugins/todo-item/todo-item.editor.mjs +0 -32
- package/esm2022/plugins/todo-item/todo-item.plugin.mjs +0 -93
- package/esm2022/plugins/vertical-align/toolbar-item.component.mjs +0 -95
- package/esm2022/plugins/vertical-align/vertical-align.editor.mjs +0 -59
- package/esm2022/public-api.mjs +0 -22
- package/esm2022/queries/anchor-block-entry.mjs +0 -13
- package/esm2022/queries/anchor-block.mjs +0 -6
- package/esm2022/queries/anchor-inline-entry.mjs +0 -10
- package/esm2022/queries/find-descendant.mjs +0 -47
- package/esm2022/queries/find-node.mjs +0 -45
- package/esm2022/queries/find-path.mjs +0 -28
- package/esm2022/queries/get-above-by-type.mjs +0 -14
- package/esm2022/queries/get-above.mjs +0 -9
- package/esm2022/queries/get-anchor-block-entry.mjs +0 -8
- package/esm2022/queries/get-block-above.mjs +0 -10
- package/esm2022/queries/get-block-card-above.mjs +0 -10
- package/esm2022/queries/get-block-card-cursor.mjs +0 -9
- package/esm2022/queries/get-container-blocks.mjs +0 -12
- package/esm2022/queries/get-directly-parent.mjs +0 -12
- package/esm2022/queries/get-insert-elements-path.mjs +0 -46
- package/esm2022/queries/get-last-child-path.mjs +0 -9
- package/esm2022/queries/get-last-node.mjs +0 -17
- package/esm2022/queries/get-next-sibling-nodes.mjs +0 -17
- package/esm2022/queries/get-node.mjs +0 -10
- package/esm2022/queries/get-nodes-by-type.mjs +0 -15
- package/esm2022/queries/get-nodes.mjs +0 -7
- package/esm2022/queries/get-parent.mjs +0 -12
- package/esm2022/queries/get-plain-text.mjs +0 -16
- package/esm2022/queries/get-plugin-by-toolbar.mjs +0 -13
- package/esm2022/queries/get-point-before.mjs +0 -62
- package/esm2022/queries/get-point-from-location.mjs +0 -15
- package/esm2022/queries/get-previous-path.mjs +0 -9
- package/esm2022/queries/get-rang-from-block-start.mjs +0 -16
- package/esm2022/queries/get-range-before.mjs +0 -17
- package/esm2022/queries/get-selection-marks.mjs +0 -18
- package/esm2022/queries/get-selection-nodes-by-type.mjs +0 -30
- package/esm2022/queries/get-text.mjs +0 -9
- package/esm2022/queries/get-toolbar-disabled.mjs +0 -13
- package/esm2022/queries/index.mjs +0 -62
- package/esm2022/queries/is-across-blocks.mjs +0 -7
- package/esm2022/queries/is-ancestor-empty.mjs +0 -6
- package/esm2022/queries/is-ancestor.mjs +0 -3
- package/esm2022/queries/is-block-above-empty.mjs +0 -11
- package/esm2022/queries/is-block-active.mjs +0 -8
- package/esm2022/queries/is-block-card-cursor.mjs +0 -16
- package/esm2022/queries/is-block-text-empty-after-selection.mjs +0 -31
- package/esm2022/queries/is-collapsed.mjs +0 -7
- package/esm2022/queries/is-contain-nested-type.mjs +0 -29
- package/esm2022/queries/is-container-type.mjs +0 -3
- package/esm2022/queries/is-descendant.mjs +0 -3
- package/esm2022/queries/is-empty-content-filter.mjs +0 -22
- package/esm2022/queries/is-empty-content.mjs +0 -15
- package/esm2022/queries/is-empty-paragraph-by-path.mjs +0 -7
- package/esm2022/queries/is-empty-paragraph.mjs +0 -28
- package/esm2022/queries/is-first-child.mjs +0 -5
- package/esm2022/queries/is-global-collapsed.mjs +0 -5
- package/esm2022/queries/is-include-types.mjs +0 -12
- package/esm2022/queries/is-node-type-in.mjs +0 -9
- package/esm2022/queries/is-node-type.mjs +0 -15
- package/esm2022/queries/is-paragraph.mjs +0 -9
- package/esm2022/queries/is-point-at-root.mjs +0 -2
- package/esm2022/queries/is-range-across-blocks.mjs +0 -22
- package/esm2022/queries/is-range-at-root.mjs +0 -3
- package/esm2022/queries/is-root-path.mjs +0 -2
- package/esm2022/queries/is-start.mjs +0 -6
- package/esm2022/queries/some-node.mjs +0 -9
- package/esm2022/services/context.service.mjs +0 -140
- package/esm2022/services/table-contextmenu.service.mjs +0 -288
- package/esm2022/services/toolbar.service.mjs +0 -47
- package/esm2022/shortcuts/index.mjs +0 -5
- package/esm2022/shortcuts/mark.mjs +0 -25
- package/esm2022/test/basic/basic.component.mjs +0 -61
- package/esm2022/test/faker/data-transfer-faker.mjs +0 -13
- package/esm2022/test/faker/tethys-icon-faker.mjs +0 -22
- package/esm2022/test/index.mjs +0 -7
- package/esm2022/test/utils/mock-plugins.mjs +0 -104
- package/esm2022/test/utils/preset-config.mjs +0 -17
- package/esm2022/test/utils/with-plugin.mjs +0 -11
- package/esm2022/transforms/apply-deep-to-nodes.mjs +0 -22
- package/esm2022/transforms/clear-marks.mjs +0 -23
- package/esm2022/transforms/delete-element.mjs +0 -12
- package/esm2022/transforms/delete-node-by-type.mjs +0 -10
- package/esm2022/transforms/handle-continual-delete-backward.mjs +0 -18
- package/esm2022/transforms/handle-continual-insert-break.mjs +0 -20
- package/esm2022/transforms/index.mjs +0 -19
- package/esm2022/transforms/insert-elements.mjs +0 -55
- package/esm2022/transforms/insert-paragraph.mjs +0 -6
- package/esm2022/transforms/merge-deep-to-nodes.mjs +0 -9
- package/esm2022/transforms/move-children.mjs +0 -22
- package/esm2022/transforms/on-keydown-reset-block-type.mjs +0 -23
- package/esm2022/transforms/set-end-selection.mjs +0 -10
- package/esm2022/transforms/set-marks.mjs +0 -9
- package/esm2022/transforms/set-node-by-type.mjs +0 -10
- package/esm2022/transforms/set-node.mjs +0 -6
- package/esm2022/transforms/un-hang-range.mjs +0 -11
- package/esm2022/transforms/un-wrap.mjs +0 -12
- package/esm2022/transforms/unwrap-nodes-by-type.mjs +0 -14
- package/esm2022/utils/auto-focus.mjs +0 -24
- package/esm2022/utils/blob.mjs +0 -16
- package/esm2022/utils/cast-array.mjs +0 -7
- package/esm2022/utils/color-picker.mjs +0 -15
- package/esm2022/utils/common.mjs +0 -11
- package/esm2022/utils/copy-node.mjs +0 -38
- package/esm2022/utils/create-empty-paragraph.mjs +0 -14
- package/esm2022/utils/data-transform.mjs +0 -48
- package/esm2022/utils/dom.mjs +0 -56
- package/esm2022/utils/editor-uuid.mjs +0 -8
- package/esm2022/utils/fragment.mjs +0 -82
- package/esm2022/utils/get-editable-element-height.mjs +0 -6
- package/esm2022/utils/get-mode.mjs +0 -14
- package/esm2022/utils/get-toolbar-class.mjs +0 -6
- package/esm2022/utils/id-creator.mjs +0 -11
- package/esm2022/utils/index.mjs +0 -23
- package/esm2022/utils/insert-data-by-invalid-type.mjs +0 -70
- package/esm2022/utils/is-clean-empty-paragraph.mjs +0 -37
- package/esm2022/utils/is-inline.mjs +0 -9
- package/esm2022/utils/lodash.mjs +0 -3
- package/esm2022/utils/match.mjs +0 -32
- package/esm2022/utils/merge-element-options.mjs +0 -19
- package/esm2022/utils/normalize.mjs +0 -61
- package/esm2022/utils/refocus.mjs +0 -47
- package/esm2022/utils/scrolling.mjs +0 -43
- package/esm2022/utils/update-popover-position.mjs +0 -26
- package/esm2022/utils/weak-maps.mjs +0 -9
- package/esm2022/worktile-theia.mjs +0 -5
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Node, Transforms } from 'slate';
|
|
2
|
-
import { castArray } from '../../utils/cast-array';
|
|
3
|
-
/**
|
|
4
|
-
* Remove nodes with empty text.
|
|
5
|
-
*/
|
|
6
|
-
export const withRemoveEmptyNodes = (options) => (editor) => {
|
|
7
|
-
const types = castArray(options.type);
|
|
8
|
-
const { normalizeNode } = editor;
|
|
9
|
-
editor.normalizeNode = ([node, path]) => {
|
|
10
|
-
if (node.type && types.includes(node.type) && Node.string(node) === '') {
|
|
11
|
-
Transforms.removeNodes(editor, { at: path });
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
normalizeNode([node, path]);
|
|
15
|
-
};
|
|
16
|
-
return editor;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWVtcHR5LW5vZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvbm9ybWFsaXplcnMvcmVtb3ZlLWVtcHR5LW5vZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQWEsVUFBVSxFQUFXLE1BQU0sT0FBTyxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUM3QixDQUFDLE9BQW9DLEVBQUUsRUFBRSxDQUN6QyxDQUFzQixNQUFTLEVBQUUsRUFBRTtJQUMvQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRDLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFakMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBcUIsRUFBRSxFQUFFO1FBQ3hELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQy9FLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0MsT0FBTztRQUNYLENBQUM7UUFFRCxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5vZGUsIE5vZGVFbnRyeSwgVHJhbnNmb3JtcywgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGNhc3RBcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzL2Nhc3QtYXJyYXknO1xuXG4vKipcbiAqIFJlbW92ZSBub2RlcyB3aXRoIGVtcHR5IHRleHQuXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoUmVtb3ZlRW1wdHlOb2RlcyA9XG4gICAgKG9wdGlvbnM6IHsgdHlwZTogc3RyaW5nIHwgc3RyaW5nW10gfSkgPT5cbiAgICA8VCBleHRlbmRzIFRoZUVkaXRvcj4oZWRpdG9yOiBUKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVzID0gY2FzdEFycmF5KG9wdGlvbnMudHlwZSk7XG5cbiAgICAgICAgY29uc3QgeyBub3JtYWxpemVOb2RlIH0gPSBlZGl0b3I7XG5cbiAgICAgICAgZWRpdG9yLm5vcm1hbGl6ZU5vZGUgPSAoW25vZGUsIHBhdGhdOiBOb2RlRW50cnk8RWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZXMuaW5jbHVkZXMobm9kZS50eXBlIGFzIHN0cmluZykgJiYgTm9kZS5zdHJpbmcobm9kZSkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlcyhlZGl0b3IsIHsgYXQ6IHBhdGggfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub3JtYWxpemVOb2RlKFtub2RlLCBwYXRoXSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGVkaXRvcjtcbiAgICB9O1xuIl19
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Element, Path, Transforms } from 'slate';
|
|
2
|
-
import { ElementKinds } from '../../constants';
|
|
3
|
-
import { createPluginFactory, getPluginOptions } from '../../core';
|
|
4
|
-
import { PluginKeys } from '../../interfaces';
|
|
5
|
-
import * as TheQueries from '../../queries';
|
|
6
|
-
export const withTrailingNode = (editor) => {
|
|
7
|
-
const { normalizeNode } = editor;
|
|
8
|
-
const options = getPluginOptions(editor, PluginKeys.trailingNode);
|
|
9
|
-
const { type, level, ...query } = options;
|
|
10
|
-
editor.normalizeNode = ([currentNode, currentPath]) => {
|
|
11
|
-
if (!currentPath.length) {
|
|
12
|
-
const entry = TheQueries.getLastNode(editor, level);
|
|
13
|
-
const [lastNode, lastPath] = entry;
|
|
14
|
-
if (Element.isElement(lastNode) && lastNode.type !== type && TheQueries.isNodeType(entry, query)) {
|
|
15
|
-
Transforms.insertNodes(editor, {
|
|
16
|
-
type,
|
|
17
|
-
children: [{ text: '' }]
|
|
18
|
-
}, { at: Path.next(lastPath) });
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return normalizeNode([currentNode, currentPath]);
|
|
22
|
-
};
|
|
23
|
-
return editor;
|
|
24
|
-
};
|
|
25
|
-
export const createTrailingNodePlugin = createPluginFactory({
|
|
26
|
-
key: PluginKeys.trailingNode,
|
|
27
|
-
withOverrides: withTrailingNode,
|
|
28
|
-
options: {
|
|
29
|
-
type: ElementKinds.paragraph,
|
|
30
|
-
level: 0
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaWxpbmctbm9kZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9ub3JtYWxpemVycy90cmFpbGluZy1ub2RlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsT0FBTyxFQUFRLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVuRSxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBTzVDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQW1CLE1BQVMsRUFBRSxFQUFFO0lBQzVELE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFakMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQW1CLE1BQU0sRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEYsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFMUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwRCxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUVuQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0YsVUFBVSxDQUFDLFdBQVcsQ0FDbEIsTUFBTSxFQUNOO29CQUNJLElBQUk7b0JBQ0osUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQ25CLEVBQ1QsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUM5QixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO0lBQ3hELEdBQUcsRUFBRSxVQUFVLENBQUMsWUFBWTtJQUM1QixhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLE9BQU8sRUFBRTtRQUNMLElBQUksRUFBRSxZQUFZLENBQUMsU0FBUztRQUM1QixLQUFLLEVBQUUsQ0FBQztLQUNYO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBOb2RlLCBQYXRoLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnksIGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEN1c3RvbUVsZW1lbnRLaW5kcyB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBRdWVyeU9wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFRyYWlsaW5nTm9kZSBleHRlbmRzIFF1ZXJ5T3B0aW9ucyB7XG4gICAgdHlwZT86IEN1c3RvbUVsZW1lbnRLaW5kcztcbiAgICBsZXZlbD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHdpdGhUcmFpbGluZ05vZGUgPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKSA9PiB7XG4gICAgY29uc3QgeyBub3JtYWxpemVOb2RlIH0gPSBlZGl0b3I7XG5cbiAgICBjb25zdCBvcHRpb25zID0gZ2V0UGx1Z2luT3B0aW9uczxXaXRoVHJhaWxpbmdOb2RlPihlZGl0b3IsIFBsdWdpbktleXMudHJhaWxpbmdOb2RlKTtcbiAgICBjb25zdCB7IHR5cGUsIGxldmVsLCAuLi5xdWVyeSB9ID0gb3B0aW9ucztcblxuICAgIGVkaXRvci5ub3JtYWxpemVOb2RlID0gKFtjdXJyZW50Tm9kZSwgY3VycmVudFBhdGhdKSA9PiB7XG4gICAgICAgIGlmICghY3VycmVudFBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IFRoZVF1ZXJpZXMuZ2V0TGFzdE5vZGUoZWRpdG9yLCBsZXZlbCk7XG4gICAgICAgICAgICBjb25zdCBbbGFzdE5vZGUsIGxhc3RQYXRoXSA9IGVudHJ5O1xuXG4gICAgICAgICAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQobGFzdE5vZGUpICYmIGxhc3ROb2RlLnR5cGUgIT09IHR5cGUgJiYgVGhlUXVlcmllcy5pc05vZGVUeXBlKGVudHJ5LCBxdWVyeSkpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sgdGV4dDogJycgfV1cbiAgICAgICAgICAgICAgICAgICAgfSBhcyBOb2RlLFxuICAgICAgICAgICAgICAgICAgICB7IGF0OiBQYXRoLm5leHQobGFzdFBhdGgpIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZU5vZGUoW2N1cnJlbnROb2RlLCBjdXJyZW50UGF0aF0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRyYWlsaW5nTm9kZVBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy50cmFpbGluZ05vZGUsXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aFRyYWlsaW5nTm9kZSxcbiAgICBvcHRpb25zOiB7XG4gICAgICAgIHR5cGU6IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGgsXG4gICAgICAgIGxldmVsOiAwXG4gICAgfVxufSk7XG4iXX0=
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { filter, take } from 'rxjs/operators';
|
|
2
|
-
import { Editor, Range } from 'slate';
|
|
3
|
-
import { EDITOR_TO_ELEMENT } from 'slate-angular';
|
|
4
|
-
import { HistoryEditor } from 'slate-history';
|
|
5
|
-
import { MarkProps, ToolbarActionTypes } from '../../constants';
|
|
6
|
-
import { createPluginFactory } from '../../core';
|
|
7
|
-
import { PluginKeys, TheEditor } from '../../interfaces';
|
|
8
|
-
import * as TheQueries from '../../queries';
|
|
9
|
-
import { TheContextService } from '../../services/context.service';
|
|
10
|
-
import * as TheTransforms from '../../transforms';
|
|
11
|
-
import { CONTROL_KEY } from '../../utils';
|
|
12
|
-
import { TableEditor } from '../table/table.editor';
|
|
13
|
-
export const PaintFormatEditor = {
|
|
14
|
-
formatBrush(editor, marks) {
|
|
15
|
-
const block = TheQueries.anchorBlock(editor);
|
|
16
|
-
if (block && Range.isCollapsed(editor.selection)) {
|
|
17
|
-
// TODO:: 在撤销时有bug, 临时使用withoutSaving处理
|
|
18
|
-
HistoryEditor.withoutSaving(editor, () => {
|
|
19
|
-
const path = TheEditor.findPath(editor, block);
|
|
20
|
-
TheTransforms.setMarks(editor, marks, path);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
TheTransforms.setMarks(editor, marks);
|
|
25
|
-
}
|
|
26
|
-
PaintFormatEditor.cancelFormatBrushStatus(editor);
|
|
27
|
-
},
|
|
28
|
-
isActive(editor) {
|
|
29
|
-
const contextService = editor.injector.get(TheContextService);
|
|
30
|
-
const res = contextService.paintFormatStatus.isActive;
|
|
31
|
-
return res;
|
|
32
|
-
},
|
|
33
|
-
enableFormatBrush(editor) {
|
|
34
|
-
const contextService = editor.injector.get(TheContextService);
|
|
35
|
-
if (contextService.paintFormatStatus.isActive) {
|
|
36
|
-
return PaintFormatEditor.cancelFormatBrushStatus(editor);
|
|
37
|
-
}
|
|
38
|
-
contextService.paintFormatStatus = {
|
|
39
|
-
isActive: true,
|
|
40
|
-
marks: TheQueries.getSelectionMarks(editor)
|
|
41
|
-
};
|
|
42
|
-
const element = EDITOR_TO_ELEMENT.get(editor);
|
|
43
|
-
element.classList.add('pointer-paint');
|
|
44
|
-
contextService.onMouseUp$
|
|
45
|
-
.pipe(filter(event => element.contains(event.target)), take(1))
|
|
46
|
-
.subscribe((event) => {
|
|
47
|
-
if (contextService.paintFormatStatus.isActive) {
|
|
48
|
-
const contextService = editor.injector.get(TheContextService);
|
|
49
|
-
const marks = {};
|
|
50
|
-
for (const key of MarkProps) {
|
|
51
|
-
marks[key] = contextService.paintFormatStatus.marks[key] || null;
|
|
52
|
-
}
|
|
53
|
-
if (TableEditor.formatBrush(editor, marks)) {
|
|
54
|
-
PaintFormatEditor.cancelFormatBrushStatus(editor);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
PaintFormatEditor.formatBrush(editor, marks);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
editor.onChange();
|
|
61
|
-
},
|
|
62
|
-
cancelFormatBrushStatus(editor) {
|
|
63
|
-
const contextService = editor.injector.get(TheContextService);
|
|
64
|
-
contextService.paintFormatStatus = {
|
|
65
|
-
isActive: false,
|
|
66
|
-
marks: {}
|
|
67
|
-
};
|
|
68
|
-
const element = EDITOR_TO_ELEMENT.get(editor);
|
|
69
|
-
element.classList.remove('pointer-paint');
|
|
70
|
-
editor.onChange();
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
export const createPaintFormatPlugin = (locale) => createPluginFactory({
|
|
74
|
-
key: PluginKeys.paintFormat,
|
|
75
|
-
toolbarItems: [
|
|
76
|
-
{
|
|
77
|
-
key: ToolbarActionTypes.undo,
|
|
78
|
-
icon: 'undo',
|
|
79
|
-
name: locale().undo,
|
|
80
|
-
shortcutKey: `${CONTROL_KEY}+Z`,
|
|
81
|
-
execute: (editor) => editor.undo()
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
key: ToolbarActionTypes.redo,
|
|
85
|
-
icon: 'redo',
|
|
86
|
-
name: locale().redo,
|
|
87
|
-
shortcutKey: `${CONTROL_KEY}+Shift+Z`,
|
|
88
|
-
execute: (editor) => editor.redo()
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
key: ToolbarActionTypes.paintformat,
|
|
92
|
-
icon: 'paintformat',
|
|
93
|
-
name: locale().paintFormat,
|
|
94
|
-
execute: PaintFormatEditor.enableFormatBrush,
|
|
95
|
-
active: PaintFormatEditor.isActive
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
key: ToolbarActionTypes.clean,
|
|
99
|
-
icon: 'clean',
|
|
100
|
-
name: locale().cleanFormat,
|
|
101
|
-
execute: (editor) => {
|
|
102
|
-
const { selection } = editor;
|
|
103
|
-
if (!selection) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (TableEditor.clearMark(editor)) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
if (Range.isCollapsed(selection)) {
|
|
110
|
-
const marks = Editor.marks(editor);
|
|
111
|
-
for (const key of Object.keys(marks)) {
|
|
112
|
-
Editor.removeMark(editor, key);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
const unsetMarks = {};
|
|
117
|
-
MarkProps.forEach(key => {
|
|
118
|
-
unsetMarks[key] = null;
|
|
119
|
-
});
|
|
120
|
-
TheTransforms.setMarks(editor, unsetMarks);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
]
|
|
125
|
-
})();
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnQtZm9ybWF0LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3BhaW50LWZvcm1hdC9wYWludC1mb3JtYXQuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBYSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJcEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDN0IsV0FBVyxDQUFDLE1BQWlCLEVBQUUsS0FBbUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxD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O1lBQzdCLElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLFdBQVc7WUFDMUIsT0FBTyxFQUFFLENBQUMsTUFBaUIsRUFBRSxFQUFFO2dCQUMzQixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO2dCQUM3QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2IsT0FBTztnQkFDWCxDQUFDO2dCQUVELElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNoQyxPQUFPO2dCQUNYLENBQUM7Z0JBRUQsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ25DLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUNuQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDbkMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osTUFBTSxVQUFVLEdBQTJDLEVBQUUsQ0FBQztvQkFDOUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDcEIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDM0IsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQy9DLENBQUM7WUFDTCxDQUFDO1NBQ0o7S0FDSjtDQUNKLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdG9yLCBSYW5nZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVESVRPUl9UT19FTEVNRU5UIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBNYXJrUHJvcHMsIE1hcmtUeXBlcywgVG9vbGJhckFjdGlvblR5cGVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFBsdWdpbktleXMsIFRoZUVkaXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBDT05UUk9MX0tFWSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi4vdGFibGUvdGFibGUuZWRpdG9yJztcbmltcG9ydCB7IFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlSTE4blRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vaTE4bic7XG5cbmV4cG9ydCBjb25zdCBQYWludEZvcm1hdEVkaXRvciA9IHtcbiAgICBmb3JtYXRCcnVzaChlZGl0b3I6IFRoZUVkaXRvciwgbWFya3M6IHsgW2tleSBpbiBNYXJrVHlwZXNdPzogYW55IH0pIHtcbiAgICAgICAgY29uc3QgYmxvY2sgPSBUaGVRdWVyaWVzLmFuY2hvckJsb2NrKGVkaXRvcik7XG4gICAgICAgIGlmIChibG9jayAmJiBSYW5nZS5pc0NvbGxhcHNlZChlZGl0b3Iuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgLy8gVE9ETzo6IOWcqOaSpOmUgOaXtuaciWJ1Zywg5Li05pe25L2/55Sod2l0aG91dFNhdmluZ+WkhOeQhlxuICAgICAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0U2F2aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBUaGVFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBibG9jayk7XG4gICAgICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXRNYXJrcyhlZGl0b3IsIG1hcmtzLCBwYXRoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXRNYXJrcyhlZGl0b3IsIG1hcmtzKTtcbiAgICAgICAgfVxuICAgICAgICBQYWludEZvcm1hdEVkaXRvci5jYW5jZWxGb3JtYXRCcnVzaFN0YXR1cyhlZGl0b3IpO1xuICAgIH0sXG4gICAgaXNBY3RpdmUoZWRpdG9yOiBUaGVFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFRoZUNvbnRleHRTZXJ2aWNlKTtcbiAgICAgICAgY29uc3QgcmVzID0gY29udGV4dFNlcnZpY2UucGFpbnRGb3JtYXRTdGF0dXMuaXNBY3RpdmU7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSxcbiAgICBlbmFibGVGb3JtYXRCcnVzaChlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGhlQ29udGV4dFNlcnZpY2UpO1xuICAgICAgICBpZiAoY29udGV4dFNlcnZpY2UucGFpbnRGb3JtYXRTdGF0dXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiBQYWludEZvcm1hdEVkaXRvci5jYW5jZWxGb3JtYXRCcnVzaFN0YXR1cyhlZGl0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHRTZXJ2aWNlLnBhaW50Rm9ybWF0U3RhdHVzID0ge1xuICAgICAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgICAgICBtYXJrczogVGhlUXVlcmllcy5nZXRTZWxlY3Rpb25NYXJrcyhlZGl0b3IpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBFRElUT1JfVE9fRUxFTUVOVC5nZXQoZWRpdG9yKTtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwb2ludGVyLXBhaW50Jyk7XG4gICAgICAgIGNvbnRleHRTZXJ2aWNlLm9uTW91c2VVcCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBlbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSksXG4gICAgICAgICAgICAgICAgdGFrZSgxKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dFNlcnZpY2UucGFpbnRGb3JtYXRTdGF0dXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFRoZUNvbnRleHRTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFya3M6IHsgW2tleSBpbiBNYXJrVHlwZXNdPzogYW55IH0gPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgTWFya1Byb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrc1trZXldID0gY29udGV4dFNlcnZpY2UucGFpbnRGb3JtYXRTdGF0dXMubWFya3Nba2V5XSB8fCBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChUYWJsZUVkaXRvci5mb3JtYXRCcnVzaChlZGl0b3IsIG1hcmtzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRGb3JtYXRFZGl0b3IuY2FuY2VsRm9ybWF0QnJ1c2hTdGF0dXMoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBQYWludEZvcm1hdEVkaXRvci5mb3JtYXRCcnVzaChlZGl0b3IsIG1hcmtzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZWRpdG9yLm9uQ2hhbmdlKCk7XG4gICAgfSxcbiAgICBjYW5jZWxGb3JtYXRCcnVzaFN0YXR1cyhlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGhlQ29udGV4dFNlcnZpY2UpO1xuICAgICAgICBjb250ZXh0U2VydmljZS5wYWludEZvcm1hdFN0YXR1cyA9IHtcbiAgICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIG1hcmtzOiB7fVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gRURJVE9SX1RPX0VMRU1FTlQuZ2V0KGVkaXRvcik7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgncG9pbnRlci1wYWludCcpO1xuICAgICAgICBlZGl0b3Iub25DaGFuZ2UoKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUGFpbnRGb3JtYXRQbHVnaW4gPSAobG9jYWxlOiBTaWduYWw8VGhlSTE4blRyYW5zbGF0aW9uPikgPT5cbiAgICBjcmVhdGVQbHVnaW5GYWN0b3J5KHtcbiAgICAgICAga2V5OiBQbHVnaW5LZXlzLnBhaW50Rm9ybWF0LFxuICAgICAgICB0b29sYmFySXRlbXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IFRvb2xiYXJBY3Rpb25UeXBlcy51bmRvLFxuICAgICAgICAgICAgICAgIGljb246ICd1bmRvJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBsb2NhbGUoKS51bmRvLFxuICAgICAgICAgICAgICAgIHNob3J0Y3V0S2V5OiBgJHtDT05UUk9MX0tFWX0rWmAsXG4gICAgICAgICAgICAgICAgZXhlY3V0ZTogKGVkaXRvcjogVGhlRWRpdG9yKSA9PiBlZGl0b3IudW5kbygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogVG9vbGJhckFjdGlvblR5cGVzLnJlZG8sXG4gICAgICAgICAgICAgICAgaWNvbjogJ3JlZG8nLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvY2FsZSgpLnJlZG8sXG4gICAgICAgICAgICAgICAgc2hvcnRjdXRLZXk6IGAke0NPTlRST0xfS0VZfStTaGlmdCtaYCxcbiAgICAgICAgICAgICAgICBleGVjdXRlOiAoZWRpdG9yOiBUaGVFZGl0b3IpID0+IGVkaXRvci5yZWRvKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBUb29sYmFyQWN0aW9uVHlwZXMucGFpbnRmb3JtYXQsXG4gICAgICAgICAgICAgICAgaWNvbjogJ3BhaW50Zm9ybWF0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiBsb2NhbGUoKS5wYWludEZvcm1hdCxcbiAgICAgICAgICAgICAgICBleGVjdXRlOiBQYWludEZvcm1hdEVkaXRvci5lbmFibGVGb3JtYXRCcnVzaCxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IFBhaW50Rm9ybWF0RWRpdG9yLmlzQWN0aXZlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogVG9vbGJhckFjdGlvblR5cGVzLmNsZWFuLFxuICAgICAgICAgICAgICAgIGljb246ICdjbGVhbicsXG4gICAgICAgICAgICAgICAgbmFtZTogbG9jYWxlKCkuY2xlYW5Gb3JtYXQsXG4gICAgICAgICAgICAgICAgZXhlY3V0ZTogKGVkaXRvcjogVGhlRWRpdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoVGFibGVFZGl0b3IuY2xlYXJNYXJrKGVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChSYW5nZS5pc0NvbGxhcHNlZChzZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJrcyA9IEVkaXRvci5tYXJrcyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWFya3MpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdG9yLnJlbW92ZU1hcmsoZWRpdG9yLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zZXRNYXJrczogeyBba2V5IGluIE1hcmtUeXBlc10/OiBudWxsIHwgc3RyaW5nIH0gPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtQcm9wcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXRNYXJrc1trZXldID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXRNYXJrcyhlZGl0b3IsIHVuc2V0TWFya3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSkoKTtcbiJdfQ==
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export * from './align/align.editor';
|
|
2
|
-
export * from './blockquote/blockquote.editor';
|
|
3
|
-
export * from './code/code.editor';
|
|
4
|
-
export * from './color/color.editor';
|
|
5
|
-
export * from './heading/heading.editor';
|
|
6
|
-
export * from './hr/hr.editor';
|
|
7
|
-
export * from './image/image.editor';
|
|
8
|
-
export * from './indent/indent.editor';
|
|
9
|
-
export * from './link/link.editor';
|
|
10
|
-
export * from './list/list.editor';
|
|
11
|
-
export * from './mark/mark.editor';
|
|
12
|
-
export * from './mention/index';
|
|
13
|
-
export * from './quick-insert/quick-insert.editor';
|
|
14
|
-
export * from './table/table.editor';
|
|
15
|
-
export * from './table/utils';
|
|
16
|
-
export * from './todo-item/todo-item.editor';
|
|
17
|
-
export * from './vertical-align/vertical-align.editor';
|
|
18
|
-
export * from './inline-code/inline-code.editor';
|
|
19
|
-
export * from './quick-insert/components/quick-insert.component';
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsa0RBQWtELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FsaWduL2FsaWduLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Jsb2NrcXVvdGUvYmxvY2txdW90ZS5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9jb2RlL2NvZGUuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vY29sb3IvY29sb3IuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vaGVhZGluZy9oZWFkaW5nLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2hyL2hyLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlL2ltYWdlLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2luZGVudC9pbmRlbnQuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGluay9saW5rLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpc3QvbGlzdC5lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9tYXJrL21hcmsuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudGlvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUvdGFibGUuZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUvdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90b2RvLWl0ZW0vdG9kby1pdGVtLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3ZlcnRpY2FsLWFsaWduL3ZlcnRpY2FsLWFsaWduLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2lubGluZS1jb2RlL2lubGluZS1jb2RlLmVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3F1aWNrLWluc2VydC9jb21wb25lbnRzL3F1aWNrLWluc2VydC5jb21wb25lbnQnO1xuIl19
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Input, Renderer2, ViewChild, inject } from '@angular/core';
|
|
2
|
-
import { ThyIcon } from 'ngx-tethys/icon';
|
|
3
|
-
import { Node } from 'slate';
|
|
4
|
-
import { AngularEditor } from 'slate-angular';
|
|
5
|
-
import { MarkTypes } from '../../../constants/node-types';
|
|
6
|
-
import * as TheQueries from '../../../queries';
|
|
7
|
-
import { isCleanEmptyParagraph } from '../../../utils/is-clean-empty-paragraph';
|
|
8
|
-
import { QuickInsertEditor } from '../quick-insert.editor';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
export class TheQuickInsert {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.className = 'the-quick-insert';
|
|
13
|
-
this.isVisible = false;
|
|
14
|
-
this.defaultIconName = 'plus-circle-thin';
|
|
15
|
-
this.iconNameFill = 'plus-circle-thin-fill';
|
|
16
|
-
this.displayIconName = this.defaultIconName;
|
|
17
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
18
|
-
this.renderer = inject(Renderer2);
|
|
19
|
-
this.elementRef = inject((ElementRef));
|
|
20
|
-
}
|
|
21
|
-
handleMousedownNativeElement(event) {
|
|
22
|
-
event.preventDefault();
|
|
23
|
-
event.stopPropagation();
|
|
24
|
-
}
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
const { onChange } = this.editor;
|
|
27
|
-
this.editor.onChange = () => {
|
|
28
|
-
onChange();
|
|
29
|
-
if (this.editor && this.editor.options && !this.editor.options.readonly) {
|
|
30
|
-
// wait isOpenedMenu is updated
|
|
31
|
-
setTimeout(() => {
|
|
32
|
-
this.updateIconDisplay();
|
|
33
|
-
}, 0);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
this.updateIconDisplay();
|
|
37
|
-
}
|
|
38
|
-
ngOnChanges(changes) {
|
|
39
|
-
if (changes.isVisible && !changes.isVisible.firstChange) {
|
|
40
|
-
this.updateIconDisplay();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
updateIconDisplay() {
|
|
44
|
-
const { editor } = this;
|
|
45
|
-
if (this.isVisible &&
|
|
46
|
-
!QuickInsertEditor.isOpenedMenu(editor) &&
|
|
47
|
-
isCleanEmptyParagraph(editor) &&
|
|
48
|
-
!this.hasExcludeAttribute() &&
|
|
49
|
-
!this.isRichMediaScope()) {
|
|
50
|
-
const block = Node.ancestor(editor, [editor?.selection?.anchor.path[0]]);
|
|
51
|
-
const rootNode = AngularEditor.toDOMNode(editor, block);
|
|
52
|
-
this.updatePosition(rootNode.offsetLeft, rootNode.offsetTop);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
this.addHiddenClass();
|
|
56
|
-
}
|
|
57
|
-
addHiddenClass() {
|
|
58
|
-
this.elementRef.nativeElement.classList.add('d-none');
|
|
59
|
-
}
|
|
60
|
-
removeHiddenClass() {
|
|
61
|
-
this.elementRef.nativeElement.classList.remove('d-none');
|
|
62
|
-
}
|
|
63
|
-
isRichMediaScope() {
|
|
64
|
-
const { editor } = this;
|
|
65
|
-
if (editor?.selection) {
|
|
66
|
-
const block = Node.ancestor(editor, [editor?.selection?.anchor.path[0]]);
|
|
67
|
-
const rootElement = AngularEditor.toDOMNode(editor, block);
|
|
68
|
-
const leafElement = rootElement.querySelector('[data-slate-leaf="true"]');
|
|
69
|
-
const rootElementRect = rootElement.getBoundingClientRect();
|
|
70
|
-
const leafElementRect = leafElement.getBoundingClientRect();
|
|
71
|
-
return leafElementRect?.x !== rootElementRect?.x;
|
|
72
|
-
}
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
hasExcludeAttribute() {
|
|
76
|
-
const marks = TheQueries.getSelectionMarks(this.editor);
|
|
77
|
-
const fontSizeMark = marks[MarkTypes.fontSize];
|
|
78
|
-
return fontSizeMark;
|
|
79
|
-
}
|
|
80
|
-
updatePosition(left, top) {
|
|
81
|
-
this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${top}px`);
|
|
82
|
-
this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${left}px`);
|
|
83
|
-
this.removeHiddenClass();
|
|
84
|
-
}
|
|
85
|
-
mouseEnter(event) {
|
|
86
|
-
this.displayIconName = this.iconNameFill;
|
|
87
|
-
this.cdr.detectChanges();
|
|
88
|
-
}
|
|
89
|
-
mouseLeave(event) {
|
|
90
|
-
this.displayIconName = this.defaultIconName;
|
|
91
|
-
this.cdr.detectChanges();
|
|
92
|
-
}
|
|
93
|
-
handleClick(event) {
|
|
94
|
-
event.stopPropagation();
|
|
95
|
-
event.preventDefault();
|
|
96
|
-
// avoid popover is closed immediately
|
|
97
|
-
setTimeout(() => {
|
|
98
|
-
QuickInsertEditor.openMenu(this.editor)
|
|
99
|
-
.afterClosed()
|
|
100
|
-
.subscribe(() => {
|
|
101
|
-
this.updateIconDisplay();
|
|
102
|
-
});
|
|
103
|
-
this.updateIconDisplay();
|
|
104
|
-
}, 100);
|
|
105
|
-
}
|
|
106
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheQuickInsert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
107
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheQuickInsert, isStandalone: true, selector: "[theQuickInsert]", inputs: { editor: "editor", isVisible: "isVisible" }, host: { listeners: { "mousedown": "handleMousedownNativeElement($event)" }, properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "iconElement", first: true, predicate: ["iconElement"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<thy-icon\n #iconElement\n class=\"quick-insert-icon text-desc font-size-xlg\"\n [thyIconName]=\"displayIconName\"\n (mouseenter)=\"mouseEnter($event)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mouseup)=\"handleClick($event)\"\n></thy-icon>\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
108
|
-
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheQuickInsert, decorators: [{
|
|
110
|
-
type: Component,
|
|
111
|
-
args: [{ selector: '[theQuickInsert]', standalone: true, imports: [ThyIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "<thy-icon\n #iconElement\n class=\"quick-insert-icon text-desc font-size-xlg\"\n [thyIconName]=\"displayIconName\"\n (mouseenter)=\"mouseEnter($event)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mouseup)=\"handleClick($event)\"\n></thy-icon>\n" }]
|
|
112
|
-
}], propDecorators: { className: [{
|
|
113
|
-
type: HostBinding,
|
|
114
|
-
args: ['class']
|
|
115
|
-
}], editor: [{
|
|
116
|
-
type: Input
|
|
117
|
-
}], isVisible: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], iconElement: [{
|
|
120
|
-
type: ViewChild,
|
|
121
|
-
args: ['iconElement', { read: ElementRef, static: false }]
|
|
122
|
-
}], handleMousedownNativeElement: [{
|
|
123
|
-
type: HostListener,
|
|
124
|
-
args: ['mousedown', ['$event']]
|
|
125
|
-
}] } });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2staW5zZXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3F1aWNrLWluc2VydC9jb21wb25lbnRzL3F1aWNrLWluc2VydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9xdWljay1pbnNlcnQvY29tcG9uZW50cy9xdWljay1pbnNlcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTCxTQUFTLEVBRVQsU0FBUyxFQUNULE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFVLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEtBQUssVUFBVSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVMzRCxNQUFNLE9BQU8sY0FBYztJQVAzQjtRQVEwQixjQUFTLEdBQUcsa0JBQWtCLENBQUM7UUFJNUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQixvQkFBZSxHQUFHLGtCQUFrQixDQUFDO1FBRXJDLGlCQUFZLEdBQUcsdUJBQXVCLENBQUM7UUFFdkMsb0JBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBVy9CLFFB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QUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQ3pCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsc0NBQXNDO1FBQ3RDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDbEMsV0FBVyxFQUFFO2lCQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7WUFDUCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDOytHQXZIUSxjQUFjO21HQUFkLGNBQWMsa1ZBYVcsVUFBVSxrREMzQ2hELDBQQVFBLDRDRG1CYyxPQUFPOzs0RkFHUixjQUFjO2tCQVAxQixTQUFTOytCQUNJLGtCQUFrQixjQUVoQixJQUFJLFdBQ1AsQ0FBQyxPQUFPLENBQUMsbUJBQ0QsdUJBQXVCLENBQUMsTUFBTTs4QkFHekIsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUVYLE1BQU07c0JBQWQsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQVNOLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSTdELDRCQUE0QjtzQkFEM0IsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IEVkaXRvciwgTm9kZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IE1hcmtUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBpc0NsZWFuRW1wdHlQYXJhZ3JhcGggfSBmcm9tICcuLi8uLi8uLi91dGlscy9pcy1jbGVhbi1lbXB0eS1wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgUXVpY2tJbnNlcnRFZGl0b3IgfSBmcm9tICcuLi9xdWljay1pbnNlcnQuZWRpdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbdGhlUXVpY2tJbnNlcnRdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVpY2staW5zZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUaHlJY29uXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaGVRdWlja0luc2VydCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gJ3RoZS1xdWljay1pbnNlcnQnO1xuXG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBASW5wdXQoKSBpc1Zpc2libGUgPSBmYWxzZTtcblxuICAgIGRlZmF1bHRJY29uTmFtZSA9ICdwbHVzLWNpcmNsZS10aGluJztcblxuICAgIGljb25OYW1lRmlsbCA9ICdwbHVzLWNpcmNsZS10aGluLWZpbGwnO1xuXG4gICAgZGlzcGxheUljb25OYW1lID0gdGhpcy5kZWZhdWx0SWNvbk5hbWU7XG5cbiAgICBAVmlld0NoaWxkKCdpY29uRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICAgIGljb25FbGVtZW50OiBFbGVtZW50UmVmPGFueT47XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZU1vdXNlZG93bk5hdGl2ZUVsZW1lbnQoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMuZWRpdG9yO1xuICAgICAgICB0aGlzLmVkaXRvci5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLmVkaXRvci5vcHRpb25zICYmICF0aGlzLmVkaXRvci5vcHRpb25zLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgLy8gd2FpdCBpc09wZW5lZE1lbnUgaXMgdXBkYXRlZFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUljb25EaXNwbGF5KCk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlSWNvbkRpc3BsYXkoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmlzVmlzaWJsZSAmJiAhY2hhbmdlcy5pc1Zpc2libGUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSWNvbkRpc3BsYXkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVJY29uRGlzcGxheSgpIHtcbiAgICAgICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXM7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlICYmXG4gICAgICAgICAgICAhUXVpY2tJbnNlcnRFZGl0b3IuaXNPcGVuZWRNZW51KGVkaXRvcikgJiZcbiAgICAgICAgICAgIGlzQ2xlYW5FbXB0eVBhcmFncmFwaChlZGl0b3IpICYmXG4gICAgICAgICAgICAhdGhpcy5oYXNFeGNsdWRlQXR0cmlidXRlKCkgJiZcbiAgICAgICAgICAgICF0aGlzLmlzUmljaE1lZGlhU2NvcGUoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gTm9kZS5hbmNlc3RvcihlZGl0b3IsIFtlZGl0b3I/LnNlbGVjdGlvbj8uYW5jaG9yLnBhdGhbMF1dKTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlOiBIVE1MRWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgYmxvY2spO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbihyb290Tm9kZS5vZmZzZXRMZWZ0LCByb290Tm9kZS5vZmZzZXRUb3ApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkSGlkZGVuQ2xhc3MoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEhpZGRlbkNsYXNzKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdkLW5vbmUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUhpZGRlbkNsYXNzKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdkLW5vbmUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUmljaE1lZGlhU2NvcGUoKSB7XG4gICAgICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzO1xuICAgICAgICBpZiAoZWRpdG9yPy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gTm9kZS5hbmNlc3RvcihlZGl0b3IsIFtlZGl0b3I/LnNlbGVjdGlvbj8uYW5jaG9yLnBhdGhbMF1dKTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBibG9jayk7XG4gICAgICAgICAgICBjb25zdCBsZWFmRWxlbWVudCA9IHJvb3RFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXNsYXRlLWxlYWY9XCJ0cnVlXCJdJyk7XG4gICAgICAgICAgICBjb25zdCByb290RWxlbWVudFJlY3QgPSByb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGxlYWZFbGVtZW50UmVjdCA9IGxlYWZFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgcmV0dXJuIGxlYWZFbGVtZW50UmVjdD8ueCAhPT0gcm9vdEVsZW1lbnRSZWN0Py54O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0V4Y2x1ZGVBdHRyaWJ1dGUoKSB7XG4gICAgICAgIGNvbnN0IG1hcmtzID0gVGhlUXVlcmllcy5nZXRTZWxlY3Rpb25NYXJrcyh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGZvbnRTaXplTWFyazogbnVtYmVyID0gbWFya3NbTWFya1R5cGVzLmZvbnRTaXplXTtcbiAgICAgICAgcmV0dXJuIGZvbnRTaXplTWFyaztcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uKGxlZnQ6IG51bWJlciwgdG9wPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHt0b3B9cHhgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHtsZWZ0fXB4YCk7XG4gICAgICAgIHRoaXMucmVtb3ZlSGlkZGVuQ2xhc3MoKTtcbiAgICB9XG5cbiAgICBtb3VzZUVudGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGlzcGxheUljb25OYW1lID0gdGhpcy5pY29uTmFtZUZpbGw7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBtb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGlzcGxheUljb25OYW1lID0gdGhpcy5kZWZhdWx0SWNvbk5hbWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgLy8gYXZvaWQgcG9wb3ZlciBpcyBjbG9zZWQgaW1tZWRpYXRlbHlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBRdWlja0luc2VydEVkaXRvci5vcGVuTWVudSh0aGlzLmVkaXRvcilcbiAgICAgICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUljb25EaXNwbGF5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUljb25EaXNwbGF5KCk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxufVxuIiwiPHRoeS1pY29uXG4gICNpY29uRWxlbWVudFxuICBjbGFzcz1cInF1aWNrLWluc2VydC1pY29uIHRleHQtZGVzYyBmb250LXNpemUteGxnXCJcbiAgW3RoeUljb25OYW1lXT1cImRpc3BsYXlJY29uTmFtZVwiXG4gIChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXIoJGV2ZW50KVwiXG4gIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmUoJGV2ZW50KVwiXG4gIChtb3VzZXVwKT1cImhhbmRsZUNsaWNrKCRldmVudClcIlxuPjwvdGh5LWljb24+XG4iXX0=
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './components/quick-insert.component';
|
|
2
|
-
export * from './quick-insert.plugin';
|
|
3
|
-
export * from './quick-insert.editor';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9xdWljay1pbnNlcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcXVpY2staW5zZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3F1aWNrLWluc2VydC5wbHVnaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9xdWljay1pbnNlcnQuZWRpdG9yJztcbiJdfQ==
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Overlay } from '@angular/cdk/overlay';
|
|
2
|
-
import { ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { ThyPopover } from 'ngx-tethys/popover';
|
|
4
|
-
import { AngularEditor } from 'slate-angular';
|
|
5
|
-
import { ThePluginMenuComponent } from '../../components/plugin-menu/plugin-menu.component';
|
|
6
|
-
import { buildQuickInsertMenus } from '../../core';
|
|
7
|
-
import { getBlockAbove } from '../../queries/get-block-above';
|
|
8
|
-
import { THE_PLUGIN_MENU_REF } from '../../utils/weak-maps';
|
|
9
|
-
export const QuickInsertEditor = {
|
|
10
|
-
openMenu(editor) {
|
|
11
|
-
if (QuickInsertEditor.isOpenedMenu(editor)) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const [block] = getBlockAbove(editor);
|
|
15
|
-
const rootNode = AngularEditor.toDOMNode(editor, block);
|
|
16
|
-
const origin = rootNode.querySelector('[data-slate-leaf="true"]');
|
|
17
|
-
const overlay = editor.injector.get(Overlay);
|
|
18
|
-
const viewContainerRef = editor.injector.get(ViewContainerRef);
|
|
19
|
-
const thyPopover = editor.injector.get(ThyPopover);
|
|
20
|
-
const pluginMenus = buildQuickInsertMenus(editor, editor?.options?.menu);
|
|
21
|
-
const pluginMenuRef = thyPopover.open(ThePluginMenuComponent, {
|
|
22
|
-
initialState: {
|
|
23
|
-
editor,
|
|
24
|
-
thePluginMenu: pluginMenus
|
|
25
|
-
},
|
|
26
|
-
origin,
|
|
27
|
-
viewContainerRef: viewContainerRef,
|
|
28
|
-
backdropClosable: true,
|
|
29
|
-
placement: 'bottomLeft',
|
|
30
|
-
offset: 4,
|
|
31
|
-
hasBackdrop: false,
|
|
32
|
-
outsideClosable: true,
|
|
33
|
-
manualClosure: true,
|
|
34
|
-
minWidth: 0,
|
|
35
|
-
scrollStrategy: overlay.scrollStrategies.reposition()
|
|
36
|
-
});
|
|
37
|
-
QuickInsertEditor.updatePluginMenuRef(editor, pluginMenuRef);
|
|
38
|
-
pluginMenuRef.afterClosed().subscribe(() => {
|
|
39
|
-
QuickInsertEditor.updatePluginMenuRef(editor, null);
|
|
40
|
-
});
|
|
41
|
-
pluginMenuRef.componentInstance.cdr.markForCheck();
|
|
42
|
-
return pluginMenuRef;
|
|
43
|
-
},
|
|
44
|
-
updateKeywords(editor, keywords) {
|
|
45
|
-
const pluginMenuRef = THE_PLUGIN_MENU_REF.get(editor);
|
|
46
|
-
if (pluginMenuRef) {
|
|
47
|
-
pluginMenuRef.componentInstance?.updateKeywords(keywords);
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
updatePluginMenuRef(editor, pluginMenuRef) {
|
|
51
|
-
if (pluginMenuRef) {
|
|
52
|
-
THE_PLUGIN_MENU_REF.set(editor, pluginMenuRef);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
THE_PLUGIN_MENU_REF.set(editor, null);
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
closeMenu(editor) {
|
|
59
|
-
const pluginMenuRef = THE_PLUGIN_MENU_REF.get(editor);
|
|
60
|
-
if (pluginMenuRef) {
|
|
61
|
-
pluginMenuRef.close();
|
|
62
|
-
QuickInsertEditor.updatePluginMenuRef(editor, null);
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
isOpenedMenu(editor) {
|
|
66
|
-
const pluginMenuRef = THE_PLUGIN_MENU_REF.get(editor);
|
|
67
|
-
return !!pluginMenuRef;
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2staW5zZXJ0LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBaUIsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDN0IsUUFBUSxDQUFDLE1BQWM7UUFDbkIsSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBZ0IsQ0FBQztRQUNqRixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkQsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFekUsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMxRCxZQUFZLEVBQUU7Z0JBQ1YsTUFBTTtnQkFDTixhQUFhLEVBQUUsV0FBVzthQUM3QjtZQUNELE1BQU07WUFDTixnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixTQUFTLEVBQUUsWUFBWTtZQUN2QixNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFFBQVEsRUFBRSxDQUFDO1lBQ1gsY0FBYyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7U0FDeEQsQ0FBQyxDQUFDO1FBQ0gsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzdELGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkQsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUNELGNBQWMsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDM0MsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsYUFBYSxDQUFDLGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0wsQ0FBQztJQUNELG1CQUFtQixDQUFDLE1BQWMsRUFBRSxhQUF3QztRQUN4RSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDSixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsU0FBUyxDQUFDLE1BQWM7UUFDcEIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0wsQ0FBQztJQUNELFlBQVksQ0FBQyxNQUFjO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVQbHVnaW5NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9wbHVnaW4tbWVudS9wbHVnaW4tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgYnVpbGRRdWlja0luc2VydE1lbnVzIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBnZXRCbG9ja0Fib3ZlIH0gZnJvbSAnLi4vLi4vcXVlcmllcy9nZXQtYmxvY2stYWJvdmUnO1xuaW1wb3J0IHsgVEhFX1BMVUdJTl9NRU5VX1JFRiB9IGZyb20gJy4uLy4uL3V0aWxzL3dlYWstbWFwcyc7XG5cbmV4cG9ydCBjb25zdCBRdWlja0luc2VydEVkaXRvciA9IHtcbiAgICBvcGVuTWVudShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBpZiAoUXVpY2tJbnNlcnRFZGl0b3IuaXNPcGVuZWRNZW51KGVkaXRvcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbYmxvY2tdID0gZ2V0QmxvY2tBYm92ZShlZGl0b3IpO1xuICAgICAgICBjb25zdCByb290Tm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgYmxvY2spO1xuICAgICAgICBjb25zdCBvcmlnaW4gPSByb290Tm9kZS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zbGF0ZS1sZWFmPVwidHJ1ZVwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBvdmVybGF5ID0gZWRpdG9yLmluamVjdG9yLmdldChPdmVybGF5KTtcbiAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IGVkaXRvci5pbmplY3Rvci5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIGNvbnN0IHRoeVBvcG92ZXIgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFRoeVBvcG92ZXIpO1xuICAgICAgICBjb25zdCBwbHVnaW5NZW51cyA9IGJ1aWxkUXVpY2tJbnNlcnRNZW51cyhlZGl0b3IsIGVkaXRvcj8ub3B0aW9ucz8ubWVudSk7XG5cbiAgICAgICAgY29uc3QgcGx1Z2luTWVudVJlZiA9IHRoeVBvcG92ZXIub3BlbihUaGVQbHVnaW5NZW51Q29tcG9uZW50LCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgdGhlUGx1Z2luTWVudTogcGx1Z2luTWVudXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB2aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgYmFja2Ryb3BDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgb2Zmc2V0OiA0LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgb3V0c2lkZUNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgbWFudWFsQ2xvc3VyZTogdHJ1ZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgfSk7XG4gICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLnVwZGF0ZVBsdWdpbk1lbnVSZWYoZWRpdG9yLCBwbHVnaW5NZW51UmVmKTtcbiAgICAgICAgcGx1Z2luTWVudVJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBRdWlja0luc2VydEVkaXRvci51cGRhdGVQbHVnaW5NZW51UmVmKGVkaXRvciwgbnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICBwbHVnaW5NZW51UmVmLmNvbXBvbmVudEluc3RhbmNlLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgcmV0dXJuIHBsdWdpbk1lbnVSZWY7XG4gICAgfSxcbiAgICB1cGRhdGVLZXl3b3JkcyhlZGl0b3I6IEVkaXRvciwga2V5d29yZHM6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwbHVnaW5NZW51UmVmID0gVEhFX1BMVUdJTl9NRU5VX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgaWYgKHBsdWdpbk1lbnVSZWYpIHtcbiAgICAgICAgICAgIHBsdWdpbk1lbnVSZWYuY29tcG9uZW50SW5zdGFuY2U/LnVwZGF0ZUtleXdvcmRzKGtleXdvcmRzKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdXBkYXRlUGx1Z2luTWVudVJlZihlZGl0b3I6IEVkaXRvciwgcGx1Z2luTWVudVJlZjogVGh5UG9wb3ZlclJlZjxhbnk+IHwgbnVsbCkge1xuICAgICAgICBpZiAocGx1Z2luTWVudVJlZikge1xuICAgICAgICAgICAgVEhFX1BMVUdJTl9NRU5VX1JFRi5zZXQoZWRpdG9yLCBwbHVnaW5NZW51UmVmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFRIRV9QTFVHSU5fTUVOVV9SRUYuc2V0KGVkaXRvciwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNsb3NlTWVudShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBwbHVnaW5NZW51UmVmID0gVEhFX1BMVUdJTl9NRU5VX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgaWYgKHBsdWdpbk1lbnVSZWYpIHtcbiAgICAgICAgICAgIHBsdWdpbk1lbnVSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLnVwZGF0ZVBsdWdpbk1lbnVSZWYoZWRpdG9yLCBudWxsKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaXNPcGVuZWRNZW51KGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBsdWdpbk1lbnVSZWYgPSBUSEVfUExVR0lOX01FTlVfUkVGLmdldChlZGl0b3IpO1xuICAgICAgICByZXR1cm4gISFwbHVnaW5NZW51UmVmO1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { Node, Range } from 'slate';
|
|
2
|
-
import { hotkeys } from 'slate-angular';
|
|
3
|
-
import { ElementKinds, QUICK_INSERT_HOTKEY } from '../../constants';
|
|
4
|
-
import { createPluginFactory, getPluginOptions } from '../../core';
|
|
5
|
-
import { PluginKeys } from '../../interfaces';
|
|
6
|
-
import { getBlockAbove } from '../../queries/get-block-above';
|
|
7
|
-
import { isPureEmptyParagraph } from '../../utils';
|
|
8
|
-
import { isMobileMode } from '../../utils/get-mode';
|
|
9
|
-
import { QuickInsertEditor } from './quick-insert.editor';
|
|
10
|
-
export const withQuickInsert = (editor) => {
|
|
11
|
-
const { onKeydown, onChange, insertText, insertBreak, deleteBackward } = editor;
|
|
12
|
-
let openMenuFromHotkey = false;
|
|
13
|
-
editor.onKeydown = (event) => {
|
|
14
|
-
const isOpenMenu = QuickInsertEditor.isOpenedMenu(editor);
|
|
15
|
-
const isMoveUp = hotkeys.isMoveUp(event);
|
|
16
|
-
const isMoveDown = hotkeys.isMoveDown(event);
|
|
17
|
-
const isMoveForward = hotkeys.isMoveForward(event);
|
|
18
|
-
const isMoveBackward = hotkeys.isMoveBackward(event);
|
|
19
|
-
// 阻止方向键默认行为
|
|
20
|
-
if (isOpenMenu && (isMoveUp || isMoveDown || isMoveForward || isMoveBackward)) {
|
|
21
|
-
event.preventDefault();
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
onKeydown(event);
|
|
25
|
-
};
|
|
26
|
-
editor.insertText = (text) => {
|
|
27
|
-
const options = getPluginOptions(editor, PluginKeys.quickInsert);
|
|
28
|
-
const [block] = getBlockAbove(editor);
|
|
29
|
-
const { hotkey, allowHotkeyInTypes } = options;
|
|
30
|
-
// 基于插入内容对比,避免 keydown 判断时无法区分中文「、」和英文「/」热键
|
|
31
|
-
if (text === hotkey) {
|
|
32
|
-
if (!isMobileMode(editor)) {
|
|
33
|
-
const types = [...(allowHotkeyInTypes || [])];
|
|
34
|
-
if (isPureEmptyParagraph(editor, block) && allowOpenInsertMenu(editor, types)) {
|
|
35
|
-
setTimeout(() => {
|
|
36
|
-
openMenuFromHotkey = true;
|
|
37
|
-
QuickInsertEditor.openMenu(editor);
|
|
38
|
-
}, 0);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
insertText(text);
|
|
43
|
-
};
|
|
44
|
-
editor.onChange = () => {
|
|
45
|
-
onChange();
|
|
46
|
-
if (editor.selection) {
|
|
47
|
-
const [block] = getBlockAbove(editor);
|
|
48
|
-
const isOpenMenu = QuickInsertEditor.isOpenedMenu(editor);
|
|
49
|
-
if (openMenuFromHotkey && !isOpenMenu) {
|
|
50
|
-
openMenuFromHotkey = false;
|
|
51
|
-
}
|
|
52
|
-
if (isOpenMenu) {
|
|
53
|
-
if (!Range.isCollapsed(editor.selection)) {
|
|
54
|
-
QuickInsertEditor.closeMenu(editor);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
// 更新搜索
|
|
58
|
-
const options = getPluginOptions(editor, PluginKeys.quickInsert);
|
|
59
|
-
const { hotkey } = options;
|
|
60
|
-
const keywords = Node.string(block);
|
|
61
|
-
const filterKeywords = openMenuFromHotkey && keywords.startsWith(hotkey) ? keywords.substring(1) : keywords;
|
|
62
|
-
QuickInsertEditor.updateKeywords(editor, filterKeywords);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
// 拦截行为处理菜单的关闭(避免协同编辑出现异常)
|
|
67
|
-
editor.deleteBackward = unit => {
|
|
68
|
-
const isOpenMenu = QuickInsertEditor.isOpenedMenu(editor);
|
|
69
|
-
if (isOpenMenu) {
|
|
70
|
-
const [block] = getBlockAbove(editor);
|
|
71
|
-
const options = getPluginOptions(editor, PluginKeys.quickInsert);
|
|
72
|
-
const { hotkey } = options;
|
|
73
|
-
if (isPureEmptyParagraph(editor, block)) {
|
|
74
|
-
QuickInsertEditor.closeMenu(editor);
|
|
75
|
-
}
|
|
76
|
-
else if (openMenuFromHotkey && Node.string(block) === hotkey) {
|
|
77
|
-
QuickInsertEditor.closeMenu(editor);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
deleteBackward(unit);
|
|
81
|
-
};
|
|
82
|
-
// 拦截行为处理菜单的关闭(避免协同编辑出现异常)
|
|
83
|
-
editor.insertBreak = () => {
|
|
84
|
-
const isOpenMenu = QuickInsertEditor.isOpenedMenu(editor);
|
|
85
|
-
if (isOpenMenu) {
|
|
86
|
-
QuickInsertEditor.closeMenu(editor);
|
|
87
|
-
}
|
|
88
|
-
insertBreak();
|
|
89
|
-
};
|
|
90
|
-
return editor;
|
|
91
|
-
};
|
|
92
|
-
export const createQuickInsertPlugin = createPluginFactory({
|
|
93
|
-
key: PluginKeys.quickInsert,
|
|
94
|
-
withOverrides: withQuickInsert,
|
|
95
|
-
options: {
|
|
96
|
-
hotkey: QUICK_INSERT_HOTKEY,
|
|
97
|
-
allowHotkeyInTypes: [ElementKinds.tableCell, ElementKinds.blockquote],
|
|
98
|
-
disabledPlus: true
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
export const allowOpenInsertMenu = (editor, allowTypes) => {
|
|
102
|
-
const [, path] = getBlockAbove(editor);
|
|
103
|
-
const parentNode = Node.parent(editor, path);
|
|
104
|
-
if (path.length === 1 || (parentNode && allowTypes.includes(parentNode.type))) {
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
return false;
|
|
108
|
-
};
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2staW5zZXJ0LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRMUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQW1CLE1BQVMsRUFBSyxFQUFFO0lBQzlELE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ2hGLElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBRS9CLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7UUFDeEMsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMs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O0lBQ2xCLENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLG1CQUFtQixDQUEyQjtJQUNqRixHQUFHLEVBQUUsVUFBVSxDQUFDLFdBQVc7SUFDM0IsYUFBYSxFQUFFLGVBQWU7SUFDOUIsT0FBTyxFQUFFO1FBQ0wsTUFBTSxFQUFFLG1CQUFtQjtRQUMzQixrQkFBa0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUNyRSxZQUFZLEVBQUUsSUFBSTtLQUNyQjtDQUNKLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBYyxFQUFFLFVBQTBCLEVBQUUsRUFBRTtJQUM5RSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgTm9kZSwgUmFuZ2UgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBob3RrZXlzIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMsIFFVSUNLX0lOU0VSVF9IT1RLRVkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSwgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgQ3VzdG9tRWxlbWVudEtpbmRzIH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldEJsb2NrQWJvdmUgfSBmcm9tICcuLi8uLi9xdWVyaWVzL2dldC1ibG9jay1hYm92ZSc7XG5pbXBvcnQgeyBpc1B1cmVFbXB0eVBhcmFncmFwaCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGlzTW9iaWxlTW9kZSB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1tb2RlJztcbmltcG9ydCB7IFF1aWNrSW5zZXJ0RWRpdG9yIH0gZnJvbSAnLi9xdWljay1pbnNlcnQuZWRpdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWlja0luc2VydFBsdWdpbk9wdGlvbnMge1xuICAgIGhvdGtleT86IHN0cmluZztcbiAgICBkaXNhYmxlZFBsdXM/OiBib29sZWFuO1xuICAgIGFsbG93SG90a2V5SW5UeXBlcz86IEN1c3RvbUVsZW1lbnRLaW5kc1tdO1xufVxuXG5leHBvcnQgY29uc3Qgd2l0aFF1aWNrSW5zZXJ0ID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgb25LZXlkb3duLCBvbkNoYW5nZSwgaW5zZXJ0VGV4dCwgaW5zZXJ0QnJlYWssIGRlbGV0ZUJhY2t3YXJkIH0gPSBlZGl0b3I7XG4gICAgbGV0IG9wZW5NZW51RnJvbUhvdGtleSA9IGZhbHNlO1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc09wZW5NZW51ID0gUXVpY2tJbnNlcnRFZGl0b3IuaXNPcGVuZWRNZW51KGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGlzTW92ZVVwID0gaG90a2V5cy5pc01vdmVVcChldmVudCk7XG4gICAgICAgIGNvbnN0IGlzTW92ZURvd24gPSBob3RrZXlzLmlzTW92ZURvd24oZXZlbnQpO1xuICAgICAgICBjb25zdCBpc01vdmVGb3J3YXJkID0gaG90a2V5cy5pc01vdmVGb3J3YXJkKGV2ZW50KTtcbiAgICAgICAgY29uc3QgaXNNb3ZlQmFja3dhcmQgPSBob3RrZXlzLmlzTW92ZUJhY2t3YXJkKGV2ZW50KTtcblxuICAgICAgICAvLyDpmLvmraLmlrnlkJHplK7pu5jorqTooYzkuLpcbiAgICAgICAgaWYgKGlzT3Blbk1lbnUgJiYgKGlzTW92ZVVwIHx8IGlzTW92ZURvd24gfHwgaXNNb3ZlRm9yd2FyZCB8fCBpc01vdmVCYWNrd2FyZCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBvbktleWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBlZGl0b3IuaW5zZXJ0VGV4dCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldFBsdWdpbk9wdGlvbnM8UXVpY2tJbnNlcnRQbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMucXVpY2tJbnNlcnQpO1xuICAgICAgICBjb25zdCBbYmxvY2tdID0gZ2V0QmxvY2tBYm92ZShlZGl0b3IpO1xuICAgICAgICBjb25zdCB7IGhvdGtleSwgYWxsb3dIb3RrZXlJblR5cGVzIH0gPSBvcHRpb25zO1xuICAgICAgICAvLyDln7rkuo7mj5LlhaXlhoXlrrnlr7nmr5TvvIzpgb/lhY0ga2V5ZG93biDliKTmlq3ml7bml6Dms5XljLrliIbkuK3mlofjgIzjgIHjgI3lkozoi7HmlofjgIwv44CN54Ot6ZSuXG4gICAgICAgIGlmICh0ZXh0ID09PSBob3RrZXkpIHtcbiAgICAgICAgICAgIGlmICghaXNNb2JpbGVNb2RlKGVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9IFsuLi4oYWxsb3dIb3RrZXlJblR5cGVzIHx8IFtdKV07XG4gICAgICAgICAgICAgICAgaWYgKGlzUHVyZUVtcHR5UGFyYWdyYXBoKGVkaXRvciwgYmxvY2spICYmIGFsbG93T3Blbkluc2VydE1lbnUoZWRpdG9yLCB0eXBlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuTWVudUZyb21Ib3RrZXkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgUXVpY2tJbnNlcnRFZGl0b3Iub3Blbk1lbnUoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluc2VydFRleHQodGV4dCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgb25DaGFuZ2UoKTtcblxuICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgW2Jsb2NrXSA9IGdldEJsb2NrQWJvdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IGlzT3Blbk1lbnUgPSBRdWlja0luc2VydEVkaXRvci5pc09wZW5lZE1lbnUoZWRpdG9yKTtcbiAgICAgICAgICAgIGlmIChvcGVuTWVudUZyb21Ib3RrZXkgJiYgIWlzT3Blbk1lbnUpIHtcbiAgICAgICAgICAgICAgICBvcGVuTWVudUZyb21Ib3RrZXkgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc09wZW5NZW51KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFSYW5nZS5pc0NvbGxhcHNlZChlZGl0b3Iuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBRdWlja0luc2VydEVkaXRvci5jbG9zZU1lbnUoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOabtOaWsOaQnOe0olxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPFF1aWNrSW5zZXJ0UGx1Z2luT3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLnF1aWNrSW5zZXJ0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGhvdGtleSB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICBjb25zdCBrZXl3b3JkcyA9IE5vZGUuc3RyaW5nKGJsb2NrKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJLZXl3b3JkcyA9IG9wZW5NZW51RnJvbUhvdGtleSAmJiBrZXl3b3Jkcy5zdGFydHNXaXRoKGhvdGtleSkgPyBrZXl3b3Jkcy5zdWJzdHJpbmcoMSkgOiBrZXl3b3JkcztcbiAgICAgICAgICAgICAgICBRdWlja0luc2VydEVkaXRvci51cGRhdGVLZXl3b3JkcyhlZGl0b3IsIGZpbHRlcktleXdvcmRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyDmi6bmiKrooYzkuLrlpITnkIboj5zljZXnmoTlhbPpl63vvIjpgb/lhY3ljY/lkIznvJbovpHlh7rnjrDlvILluLjvvIlcbiAgICBlZGl0b3IuZGVsZXRlQmFja3dhcmQgPSB1bml0ID0+IHtcbiAgICAgICAgY29uc3QgaXNPcGVuTWVudSA9IFF1aWNrSW5zZXJ0RWRpdG9yLmlzT3BlbmVkTWVudShlZGl0b3IpO1xuICAgICAgICBpZiAoaXNPcGVuTWVudSkge1xuICAgICAgICAgICAgY29uc3QgW2Jsb2NrXSA9IGdldEJsb2NrQWJvdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPFF1aWNrSW5zZXJ0UGx1Z2luT3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLnF1aWNrSW5zZXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IHsgaG90a2V5IH0gPSBvcHRpb25zO1xuICAgICAgICAgICAgaWYgKGlzUHVyZUVtcHR5UGFyYWdyYXBoKGVkaXRvciwgYmxvY2spKSB7XG4gICAgICAgICAgICAgICAgUXVpY2tJbnNlcnRFZGl0b3IuY2xvc2VNZW51KGVkaXRvcik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wZW5NZW51RnJvbUhvdGtleSAmJiBOb2RlLnN0cmluZyhibG9jaykgPT09IGhvdGtleSkge1xuICAgICAgICAgICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLmNsb3NlTWVudShlZGl0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZUJhY2t3YXJkKHVuaXQpO1xuICAgIH07XG5cbiAgICAvLyDmi6bmiKrooYzkuLrlpITnkIboj5zljZXnmoTlhbPpl63vvIjpgb/lhY3ljY/lkIznvJbovpHlh7rnjrDlvILluLjvvIlcbiAgICBlZGl0b3IuaW5zZXJ0QnJlYWsgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzT3Blbk1lbnUgPSBRdWlja0luc2VydEVkaXRvci5pc09wZW5lZE1lbnUoZWRpdG9yKTtcbiAgICAgICAgaWYgKGlzT3Blbk1lbnUpIHtcbiAgICAgICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLmNsb3NlTWVudShlZGl0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEJyZWFrKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUXVpY2tJbnNlcnRQbHVnaW4gPSBjcmVhdGVQbHVnaW5GYWN0b3J5PFF1aWNrSW5zZXJ0UGx1Z2luT3B0aW9ucz4oe1xuICAgIGtleTogUGx1Z2luS2V5cy5xdWlja0luc2VydCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoUXVpY2tJbnNlcnQsXG4gICAgb3B0aW9uczoge1xuICAgICAgICBob3RrZXk6IFFVSUNLX0lOU0VSVF9IT1RLRVksXG4gICAgICAgIGFsbG93SG90a2V5SW5UeXBlczogW0VsZW1lbnRLaW5kcy50YWJsZUNlbGwsIEVsZW1lbnRLaW5kcy5ibG9ja3F1b3RlXSxcbiAgICAgICAgZGlzYWJsZWRQbHVzOiB0cnVlXG4gICAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBhbGxvd09wZW5JbnNlcnRNZW51ID0gKGVkaXRvcjogRWRpdG9yLCBhbGxvd1R5cGVzOiBFbGVtZW50S2luZHNbXSkgPT4ge1xuICAgIGNvbnN0IFssIHBhdGhdID0gZ2V0QmxvY2tBYm92ZShlZGl0b3IpO1xuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBOb2RlLnBhcmVudChlZGl0b3IsIHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMSB8fCAocGFyZW50Tm9kZSAmJiBhbGxvd1R5cGVzLmluY2x1ZGVzKHBhcmVudE5vZGUudHlwZSkpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuIl19
|