@worktile/theia 18.0.15 → 18.1.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 +304 -311
- package/fesm2022/worktile-theia.mjs.map +1 -1
- package/interfaces/view-base.d.ts +1 -1
- package/package.json +2 -4
- package/plugins/code/code.component.scss +1 -2
- package/plugins/image/image.component.d.ts +1 -1
- package/plugins/link/link.component.d.ts +1 -1
- package/plugins/mention/suggestion.component.d.ts +1 -1
- package/plugins/vertical-align/toolbar-item.component.d.ts +3 -2
- 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 -89
- 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,89 +0,0 @@
|
|
|
1
|
-
import getUrls from 'get-urls';
|
|
2
|
-
import isUrl from 'is-url';
|
|
3
|
-
import { Transforms } from 'slate';
|
|
4
|
-
import { getClipboardData } from 'slate-angular';
|
|
5
|
-
import { DISABLED_OPERATE_TYPES, ElementKinds, PluginMenuIcons, ThePluginMenuItemType } from '../../constants';
|
|
6
|
-
import { createPluginFactory } from '../../core';
|
|
7
|
-
import { PluginKeys } from '../../interfaces';
|
|
8
|
-
import { cloneDeep } from '../../utils/lodash';
|
|
9
|
-
import { withRemoveEmptyNodes } from '../normalizers/remove-empty-nodes';
|
|
10
|
-
import { TheLink } from './link.component';
|
|
11
|
-
import { LinkEditor } from './link.editor';
|
|
12
|
-
export const withLink = (editor) => {
|
|
13
|
-
const { insertText, isInline, insertFragmentData, renderElement } = editor;
|
|
14
|
-
editor.isInline = (element) => {
|
|
15
|
-
return element.type === ElementKinds.link ? true : isInline(element);
|
|
16
|
-
};
|
|
17
|
-
editor.insertText = text => {
|
|
18
|
-
if (text && isUrl(text)) {
|
|
19
|
-
LinkEditor.wrapLink(editor, text, text);
|
|
20
|
-
Transforms.move(editor, { distance: 1, unit: 'offset' });
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
insertText(text);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
editor.insertFragmentData = async (data) => {
|
|
27
|
-
const clipboardData = await getClipboardData(data);
|
|
28
|
-
const text = clipboardData?.text;
|
|
29
|
-
if (!clipboardData?.elements && text && isUrl(text)) {
|
|
30
|
-
const urls = Array.from(getUrls(text, { stripWWW: false, sortQueryParameters: false }));
|
|
31
|
-
if (urls.length) {
|
|
32
|
-
let str = cloneDeep(text);
|
|
33
|
-
urls.forEach((url, index) => {
|
|
34
|
-
const parts = str.split(url);
|
|
35
|
-
const beforeUrl = parts[0];
|
|
36
|
-
insertText(beforeUrl);
|
|
37
|
-
LinkEditor.wrapLink(editor, url, url);
|
|
38
|
-
Transforms.move(editor, { distance: 1, unit: 'offset' });
|
|
39
|
-
str = parts[1];
|
|
40
|
-
if (index === urls.length - 1) {
|
|
41
|
-
insertText(str);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return insertFragmentData(data);
|
|
48
|
-
};
|
|
49
|
-
editor.renderElement = (element) => {
|
|
50
|
-
if (element.type === ElementKinds.link) {
|
|
51
|
-
return TheLink;
|
|
52
|
-
}
|
|
53
|
-
return renderElement(element);
|
|
54
|
-
};
|
|
55
|
-
editor = withRemoveEmptyNodes({ type: ElementKinds.link })(editor);
|
|
56
|
-
return editor;
|
|
57
|
-
};
|
|
58
|
-
export const createLinkPlugin = (locale) => createPluginFactory({
|
|
59
|
-
key: PluginKeys.link,
|
|
60
|
-
withOverrides: withLink,
|
|
61
|
-
toolbarItems: [
|
|
62
|
-
{
|
|
63
|
-
key: ElementKinds.link,
|
|
64
|
-
icon: 'link-insert',
|
|
65
|
-
name: locale().link,
|
|
66
|
-
execute: editor => LinkEditor.insertLink(editor),
|
|
67
|
-
active: editor => LinkEditor.isActive(editor)
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
menuItems: [
|
|
71
|
-
{
|
|
72
|
-
key: ElementKinds.link,
|
|
73
|
-
keywords: `lj,lianjie,link,${locale().link}`,
|
|
74
|
-
description: locale().linkDesc,
|
|
75
|
-
execute: editor => LinkEditor.insertLink(editor),
|
|
76
|
-
active: editor => LinkEditor.isActive(editor),
|
|
77
|
-
type: ThePluginMenuItemType.icon,
|
|
78
|
-
name: locale().link,
|
|
79
|
-
displayKey: '/lj',
|
|
80
|
-
icon: 'link-insert',
|
|
81
|
-
menuIcon: PluginMenuIcons.link
|
|
82
|
-
}
|
|
83
|
-
],
|
|
84
|
-
options: {
|
|
85
|
-
isInline: true,
|
|
86
|
-
disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES]
|
|
87
|
-
}
|
|
88
|
-
})();
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saW5rL2xpbmsucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUMvQixPQUFPLEtBQUssTUFBTSxRQUFRLENBQUM7QUFDM0IsT0FBTyxFQUFtQixVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQW1CLE1BQVMsRUFBSyxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUUzRSxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQ25DLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMs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UUFBUTtJQUN2QixZQUFZLEVBQUU7UUFDVjtZQUNJLEdBQUcsRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN0QixJQUFJLEVBQUUsYUFBYTtZQUNuQixJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsSUFBSTtZQUNuQixPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNoRCxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUNoRDtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1A7WUFDSSxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDdEIsUUFBUSxFQUFFLG1CQUFtQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDNUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVE7WUFDOUIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDN0MsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUk7WUFDaEMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUk7WUFDbkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsUUFBUSxFQUFFLGVBQWUsQ0FBQyxJQUFJO1NBQ2pDO0tBQ0o7SUFDRCxPQUFPLEVBQUU7UUFDTCxRQUFRLEVBQUUsSUFBSTtRQUNkLG9CQUFvQixFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLHNCQUFzQixDQUFDO0tBQ3hFO0NBQ0osQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0VXJscyBmcm9tICdnZXQtdXJscyc7XG5pbXBvcnQgaXNVcmwgZnJvbSAnaXMtdXJsJztcbmltcG9ydCB7IEVkaXRvciwgRWxlbWVudCwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGdldENsaXBib2FyZERhdGEgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IERJU0FCTEVEX09QRVJBVEVfVFlQRVMsIEVsZW1lbnRLaW5kcywgUGx1Z2luTWVudUljb25zLCBUaGVQbHVnaW5NZW51SXRlbVR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IHdpdGhSZW1vdmVFbXB0eU5vZGVzIH0gZnJvbSAnLi4vbm9ybWFsaXplcnMvcmVtb3ZlLWVtcHR5LW5vZGVzJztcbmltcG9ydCB7IFRoZUxpbmsgfSBmcm9tICcuL2xpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IExpbmtFZGl0b3IgfSBmcm9tICcuL2xpbmsuZWRpdG9yJztcbmltcG9ydCB7IFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlSTE4blRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vaTE4bic7XG5cbmV4cG9ydCBjb25zdCB3aXRoTGluayA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydFRleHQsIGlzSW5saW5lLCBpbnNlcnRGcmFnbWVudERhdGEsIHJlbmRlckVsZW1lbnQgfSA9IGVkaXRvcjtcblxuICAgIGVkaXRvci5pc0lubGluZSA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saW5rID8gdHJ1ZSA6IGlzSW5saW5lKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBlZGl0b3IuaW5zZXJ0VGV4dCA9IHRleHQgPT4ge1xuICAgICAgICBpZiAodGV4dCAmJiBpc1VybCh0ZXh0KSkge1xuICAgICAgICAgICAgTGlua0VkaXRvci53cmFwTGluayhlZGl0b3IsIHRleHQsIHRleHQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5tb3ZlKGVkaXRvciwgeyBkaXN0YW5jZTogMSwgdW5pdDogJ29mZnNldCcgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnNlcnRUZXh0KHRleHQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnRGcmFnbWVudERhdGEgPSBhc3luYyBkYXRhID0+IHtcbiAgICAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGF3YWl0IGdldENsaXBib2FyZERhdGEoZGF0YSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBjbGlwYm9hcmREYXRhPy50ZXh0O1xuICAgICAgICBpZiAoIWNsaXBib2FyZERhdGE/LmVsZW1lbnRzICYmIHRleHQgJiYgaXNVcmwodGV4dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybHMgPSBBcnJheS5mcm9tKGdldFVybHModGV4dCwgeyBzdHJpcFdXVzogZmFsc2UsIHNvcnRRdWVyeVBhcmFtZXRlcnM6IGZhbHNlIH0pKTtcbiAgICAgICAgICAgIGlmICh1cmxzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxldCBzdHIgPSBjbG9uZURlZXAodGV4dCk7XG4gICAgICAgICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gc3RyLnNwbGl0KHVybCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlVXJsID0gcGFydHNbMF07XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFRleHQoYmVmb3JlVXJsKTtcblxuICAgICAgICAgICAgICAgICAgICBMaW5rRWRpdG9yLndyYXBMaW5rKGVkaXRvciwgdXJsLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yLCB7IGRpc3RhbmNlOiAxLCB1bml0OiAnb2Zmc2V0JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gcGFydHNbMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdXJscy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRUZXh0KHN0cik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5zZXJ0RnJhZ21lbnREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICBlZGl0b3IucmVuZGVyRWxlbWVudCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlTGluaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yID0gd2l0aFJlbW92ZUVtcHR5Tm9kZXMoeyB0eXBlOiBFbGVtZW50S2luZHMubGluayB9KShlZGl0b3IpO1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMaW5rUGx1Z2luID0gKGxvY2FsZTogU2lnbmFsPFRoZUkxOG5UcmFuc2xhdGlvbj4pID0+XG4gICAgY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAgICAgIGtleTogUGx1Z2luS2V5cy5saW5rLFxuICAgICAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoTGluayxcbiAgICAgICAgdG9vbGJhckl0ZW1zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBFbGVtZW50S2luZHMubGluayxcbiAgICAgICAgICAgICAgICBpY29uOiAnbGluay1pbnNlcnQnLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvY2FsZSgpLmxpbmssXG4gICAgICAgICAgICAgICAgZXhlY3V0ZTogZWRpdG9yID0+IExpbmtFZGl0b3IuaW5zZXJ0TGluayhlZGl0b3IpLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogZWRpdG9yID0+IExpbmtFZGl0b3IuaXNBY3RpdmUoZWRpdG9yKVxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBtZW51SXRlbXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IEVsZW1lbnRLaW5kcy5saW5rLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiBgbGosbGlhbmppZSxsaW5rLCR7bG9jYWxlKCkubGlua31gLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsb2NhbGUoKS5saW5rRGVzYyxcbiAgICAgICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gTGlua0VkaXRvci5pbnNlcnRMaW5rKGVkaXRvciksXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gTGlua0VkaXRvci5pc0FjdGl2ZShlZGl0b3IpLFxuICAgICAgICAgICAgICAgIHR5cGU6IFRoZVBsdWdpbk1lbnVJdGVtVHlwZS5pY29uLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvY2FsZSgpLmxpbmssXG4gICAgICAgICAgICAgICAgZGlzcGxheUtleTogJy9saicsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2xpbmstaW5zZXJ0JyxcbiAgICAgICAgICAgICAgICBtZW51SWNvbjogUGx1Z2luTWVudUljb25zLmxpbmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgaXNJbmxpbmU6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlZE9wZXJhdGVUeXBlczogW0VsZW1lbnRLaW5kcy5pbWFnZSwgLi4uRElTQUJMRURfT1BFUkFURV9UWVBFU11cbiAgICAgICAgfVxuICAgIH0pKCk7XG4iXX0=
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export var LinkTags;
|
|
2
|
-
(function (LinkTags) {
|
|
3
|
-
LinkTags["insert"] = "insert";
|
|
4
|
-
LinkTags["edit"] = "edit";
|
|
5
|
-
LinkTags["selection"] = "selection";
|
|
6
|
-
})(LinkTags || (LinkTags = {}));
|
|
7
|
-
export var LinkCloseTypes;
|
|
8
|
-
(function (LinkCloseTypes) {
|
|
9
|
-
LinkCloseTypes["apply"] = "apply";
|
|
10
|
-
LinkCloseTypes["destroy"] = "destroy";
|
|
11
|
-
})(LinkCloseTypes || (LinkCloseTypes = {}));
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2xpbmsvbGluay50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxRQUlYO0FBSkQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQ2pCLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsUUFBUSxLQUFSLFFBQVEsUUFJbkI7QUFDRCxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3RCLGlDQUFlLENBQUE7SUFDZixxQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBMaW5rVGFncyB7XG4gICAgaW5zZXJ0ID0gJ2luc2VydCcsXG4gICAgZWRpdCA9ICdlZGl0JyxcbiAgICBzZWxlY3Rpb24gPSAnc2VsZWN0aW9uJ1xufVxuZXhwb3J0IGVudW0gTGlua0Nsb3NlVHlwZXMge1xuICAgIGFwcGx5ID0gJ2FwcGx5JyxcbiAgICBkZXN0cm95ID0gJ2Rlc3Ryb3knXG59XG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding } from '@angular/core';
|
|
2
|
-
import { TheBaseElement } from '../../../interfaces';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class TheBulletedList extends TheBaseElement {
|
|
5
|
-
get level() {
|
|
6
|
-
return this.element?.indent || null;
|
|
7
|
-
}
|
|
8
|
-
ngOnInit() {
|
|
9
|
-
super.ngOnInit();
|
|
10
|
-
}
|
|
11
|
-
ngOnDestroy() {
|
|
12
|
-
super.ngOnDestroy();
|
|
13
|
-
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheBulletedList, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheBulletedList, isStandalone: true, selector: "ul[theUl]", host: { properties: { "attr.the-level": "this.level" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
|
|
16
|
-
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheBulletedList, decorators: [{
|
|
18
|
-
type: Component,
|
|
19
|
-
args: [{
|
|
20
|
-
selector: 'ul[theUl]',
|
|
21
|
-
template: ``,
|
|
22
|
-
standalone: true
|
|
23
|
-
}]
|
|
24
|
-
}], propDecorators: { level: [{
|
|
25
|
-
type: HostBinding,
|
|
26
|
-
args: ['attr.the-level']
|
|
27
|
-
}] } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsbGV0ZWQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saXN0L2NvbXBvbmVudHMvYnVsbGV0ZWQtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsY0FBMkM7SUFDNUUsSUFDSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FaUSxlQUFlO21HQUFmLGVBQWUsc0pBSGQsRUFBRTs7NEZBR0gsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQUdPLEtBQUs7c0JBRFIsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQnVsbGV0ZWRMaXN0RWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VsW3RoZVVsXScsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGhlQnVsbGV0ZWRMaXN0IGV4dGVuZHMgVGhlQmFzZUVsZW1lbnQ8QnVsbGV0ZWRMaXN0RWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGhlLWxldmVsJylcbiAgICBnZXQgbGV2ZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ/LmluZGVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { Node, Text } from 'slate';
|
|
3
|
-
import { MarkTypes } from '../../../constants/node-types';
|
|
4
|
-
import { TheBaseElement } from '../../../interfaces';
|
|
5
|
-
import * as TheQueries from '../../../queries';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class TheListItem extends TheBaseElement {
|
|
8
|
-
ngOnInit() {
|
|
9
|
-
super.ngOnInit();
|
|
10
|
-
}
|
|
11
|
-
onContextChange() {
|
|
12
|
-
super.onContextChange();
|
|
13
|
-
this.addFontSize();
|
|
14
|
-
this.addMultiDigit();
|
|
15
|
-
}
|
|
16
|
-
ngOnDestroy() {
|
|
17
|
-
super.ngOnDestroy();
|
|
18
|
-
}
|
|
19
|
-
addFontSize() {
|
|
20
|
-
let firstText;
|
|
21
|
-
for (const entry of Node.descendants(this.element)) {
|
|
22
|
-
const node = entry[0];
|
|
23
|
-
if (Text.isText(node) && !firstText) {
|
|
24
|
-
firstText = node;
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
if (!firstText) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const { text, ...rest } = firstText;
|
|
32
|
-
const size = rest[MarkTypes.fontSize];
|
|
33
|
-
if (size) {
|
|
34
|
-
const sizeClass = `font-size-${size}`;
|
|
35
|
-
const isContains = this.elementRef.nativeElement?.classList?.contains(sizeClass);
|
|
36
|
-
if (isContains) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
this.clearFontSize();
|
|
40
|
-
this.elementRef.nativeElement.classList.add(sizeClass);
|
|
41
|
-
this.fontSizeClass = sizeClass;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
this.clearFontSize();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
clearFontSize() {
|
|
48
|
-
if (this.fontSizeClass) {
|
|
49
|
-
this.elementRef.nativeElement.classList.remove(this.fontSizeClass);
|
|
50
|
-
this.fontSizeClass = null;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
getStart() {
|
|
54
|
-
const parent = this.elementRef.nativeElement.closest('.slate-element-numbered-list');
|
|
55
|
-
const start = parent?.getAttribute('start') || 1;
|
|
56
|
-
return Number(start);
|
|
57
|
-
}
|
|
58
|
-
getLiIndex() {
|
|
59
|
-
const path = TheQueries.findPath(this.editor, this.element);
|
|
60
|
-
const index = path[path.length - 1];
|
|
61
|
-
return index || 0;
|
|
62
|
-
}
|
|
63
|
-
addMultiDigit() {
|
|
64
|
-
const start = this.getStart();
|
|
65
|
-
const index = this.getLiIndex();
|
|
66
|
-
const multiDigit = 'data-multi-digit';
|
|
67
|
-
// start number + index
|
|
68
|
-
// when it is greater than 9, it is a multi-digit serial number
|
|
69
|
-
// exclude Font size >= 20
|
|
70
|
-
if (start + index > 9) {
|
|
71
|
-
this.elementRef.nativeElement.setAttribute(multiDigit, true);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this.elementRef.nativeElement.removeAttribute(multiDigit);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheListItem, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheListItem, isStandalone: true, selector: "li[theLi]", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
|
|
79
|
-
}
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheListItem, decorators: [{
|
|
81
|
-
type: Component,
|
|
82
|
-
args: [{
|
|
83
|
-
selector: 'li[theLi]',
|
|
84
|
-
template: ``,
|
|
85
|
-
standalone: true
|
|
86
|
-
}]
|
|
87
|
-
}] });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2xpc3QvY29tcG9uZW50cy9saXN0LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBbUIsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7O0FBTy9DLE1BQU0sT0FBTyxXQUFZLFNBQVEsY0FBK0I7SUFHNUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZTtRQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxTQUFlLENBQUM7UUFDcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbEMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDakIsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sU0FBUyxHQUFHLGFBQWEsSUFBSSxFQUFFLENBQUM7WUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRixJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDckYsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVU7UUFDTixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsYUFBYTtRQUNULE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUM7UUFFdEMsdUJBQXVCO1FBQ3ZCLCtEQUErRDtRQUMvRCwwQkFBMEI7UUFDMUIsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNMLENBQUM7K0dBL0VRLFdBQVc7bUdBQVgsV0FBVyw0RkFIVixFQUFFOzs0RkFHSCxXQUFXO2tCQUx2QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIE5vZGUsIFRleHQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBNYXJrVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi8uLi9xdWVyaWVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaVt0aGVMaV0nLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoZUxpc3RJdGVtIGV4dGVuZHMgVGhlQmFzZUVsZW1lbnQ8RWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBmb250U2l6ZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuICAgICAgICB0aGlzLmFkZEZvbnRTaXplKCk7XG4gICAgICAgIHRoaXMuYWRkTXVsdGlEaWdpdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIGFkZEZvbnRTaXplKCkge1xuICAgICAgICBsZXQgZmlyc3RUZXh0OiBUZXh0O1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIE5vZGUuZGVzY2VuZGFudHModGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGVudHJ5WzBdO1xuICAgICAgICAgICAgaWYgKFRleHQuaXNUZXh0KG5vZGUpICYmICFmaXJzdFRleHQpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFRleHQgPSBub2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZmlyc3RUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHRleHQsIC4uLnJlc3QgfSA9IGZpcnN0VGV4dDtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHJlc3RbTWFya1R5cGVzLmZvbnRTaXplXTtcblxuICAgICAgICBpZiAoc2l6ZSkge1xuICAgICAgICAgICAgY29uc3Qgc2l6ZUNsYXNzID0gYGZvbnQtc2l6ZS0ke3NpemV9YDtcbiAgICAgICAgICAgIGNvbnN0IGlzQ29udGFpbnMgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5jb250YWlucyhzaXplQ2xhc3MpO1xuICAgICAgICAgICAgaWYgKGlzQ29udGFpbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsZWFyRm9udFNpemUoKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoc2l6ZUNsYXNzKTtcbiAgICAgICAgICAgIHRoaXMuZm9udFNpemVDbGFzcyA9IHNpemVDbGFzcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGb250U2l6ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJGb250U2l6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9udFNpemVDbGFzcykge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmZvbnRTaXplQ2xhc3MpO1xuICAgICAgICAgICAgdGhpcy5mb250U2l6ZUNsYXNzID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFN0YXJ0KCkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcuc2xhdGUtZWxlbWVudC1udW1iZXJlZC1saXN0Jyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyZW50Py5nZXRBdHRyaWJ1dGUoJ3N0YXJ0JykgfHwgMTtcbiAgICAgICAgcmV0dXJuIE51bWJlcihzdGFydCk7XG4gICAgfVxuXG4gICAgZ2V0TGlJbmRleCgpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IFRoZVF1ZXJpZXMuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gaW5kZXggfHwgMDtcbiAgICB9XG5cbiAgICBhZGRNdWx0aURpZ2l0KCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZ2V0U3RhcnQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldExpSW5kZXgoKTtcbiAgICAgICAgY29uc3QgbXVsdGlEaWdpdCA9ICdkYXRhLW11bHRpLWRpZ2l0JztcblxuICAgICAgICAvLyBzdGFydCBudW1iZXIgKyBpbmRleFxuICAgICAgICAvLyB3aGVuIGl0IGlzIGdyZWF0ZXIgdGhhbiA5LCBpdCBpcyBhIG11bHRpLWRpZ2l0IHNlcmlhbCBudW1iZXJcbiAgICAgICAgLy8gZXhjbHVkZSBGb250IHNpemUgPj0gMjBcbiAgICAgICAgaWYgKHN0YXJ0ICsgaW5kZXggPiA5KSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUobXVsdGlEaWdpdCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobXVsdGlEaWdpdCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding } from '@angular/core';
|
|
2
|
-
import { TheBaseElement } from '../../../interfaces';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class TheNumberedList extends TheBaseElement {
|
|
5
|
-
get start() {
|
|
6
|
-
return this.element.start;
|
|
7
|
-
}
|
|
8
|
-
get level() {
|
|
9
|
-
return this.element?.indent || null;
|
|
10
|
-
}
|
|
11
|
-
constructor() {
|
|
12
|
-
super();
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
super.ngOnInit();
|
|
16
|
-
}
|
|
17
|
-
ngOnDestroy() {
|
|
18
|
-
super.ngOnDestroy();
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheNumberedList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheNumberedList, isStandalone: true, selector: "ol[theOl]", host: { properties: { "attr.start": "this.start", "attr.the-level": "this.level" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheNumberedList, decorators: [{
|
|
24
|
-
type: Component,
|
|
25
|
-
args: [{
|
|
26
|
-
selector: 'ol[theOl]',
|
|
27
|
-
template: ``,
|
|
28
|
-
standalone: true
|
|
29
|
-
}]
|
|
30
|
-
}], ctorParameters: () => [], propDecorators: { start: [{
|
|
31
|
-
type: HostBinding,
|
|
32
|
-
args: ['attr.start']
|
|
33
|
-
}], level: [{
|
|
34
|
-
type: HostBinding,
|
|
35
|
-
args: ['attr.the-level']
|
|
36
|
-
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyZWQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saXN0L2NvbXBvbmVudHMvbnVtYmVyZWQtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsY0FBMkM7SUFDNUUsSUFDSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFDSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVEO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXJCUSxlQUFlO21HQUFmLGVBQWUsa0xBSGQsRUFBRTs7NEZBR0gsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQUdPLEtBQUs7c0JBRFIsV0FBVzt1QkFBQyxZQUFZO2dCQU1yQixLQUFLO3NCQURSLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IE51bWJlcmVkTGlzdEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgVGhlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdvbFt0aGVPbF0nLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoZU51bWJlcmVkTGlzdCBleHRlbmRzIFRoZUJhc2VFbGVtZW50PE51bWJlcmVkTGlzdEVsZW1lbnQsIEVkaXRvcj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnN0YXJ0JylcbiAgICBnZXQgc3RhcnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuc3RhcnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRoZS1sZXZlbCcpXG4gICAgZ2V0IGxldmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50Py5pbmRlbnQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { Editor, Element, Node, Path, Transforms } from 'slate';
|
|
2
|
-
import { ElementKinds, LIST_BLOCK_TYPES } from '../../constants/node-types';
|
|
3
|
-
import * as TheQueries from '../../queries';
|
|
4
|
-
import * as TheTransforms from '../../transforms';
|
|
5
|
-
import { isNodeTypeList } from './queries/is-node-type-list';
|
|
6
|
-
export const ListEditor = {
|
|
7
|
-
isList(editor, element, type) {
|
|
8
|
-
return Editor.isBlock(editor, element) && element.type === type;
|
|
9
|
-
},
|
|
10
|
-
toggleList(editor, type, startIndex) {
|
|
11
|
-
if (!editor.selection) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
if (!startIndex) {
|
|
15
|
-
startIndex = 1;
|
|
16
|
-
}
|
|
17
|
-
const types = [ElementKinds.bulletedList, ElementKinds.numberedList];
|
|
18
|
-
Editor.withoutNormalizing(editor, () => {
|
|
19
|
-
const [...listItems] = Editor.nodes(editor, {
|
|
20
|
-
match: node => Element.isElement(node) && node.type === ElementKinds.listItem,
|
|
21
|
-
mode: 'lowest'
|
|
22
|
-
});
|
|
23
|
-
const firstListItemPath = listItems.length && listItems[0][1];
|
|
24
|
-
const activeListPath = listItems.length && Path.parent(firstListItemPath);
|
|
25
|
-
const activeListNode = listItems.length && Node.get(editor, activeListPath);
|
|
26
|
-
// 同级且类型相同:unwrap
|
|
27
|
-
const isLowestActive = listItems.length &&
|
|
28
|
-
listItems.every(([, path]) => activeListNode.type === type && (Path.isSibling(firstListItemPath, path) || Path.equals(firstListItemPath, path)));
|
|
29
|
-
if (isLowestActive) {
|
|
30
|
-
const upListItem = Path.parent(activeListPath);
|
|
31
|
-
Transforms.unwrapNodes(editor, {
|
|
32
|
-
at: editor.selection,
|
|
33
|
-
match: node => node === activeListNode,
|
|
34
|
-
split: true,
|
|
35
|
-
mode: 'lowest'
|
|
36
|
-
});
|
|
37
|
-
if (upListItem && Node.get(editor, upListItem).type === ElementKinds.listItem) {
|
|
38
|
-
Transforms.moveNodes(editor, {
|
|
39
|
-
at: editor.selection,
|
|
40
|
-
to: Path.next(upListItem),
|
|
41
|
-
match: node => Element.isElement(node) && node.type === ElementKinds.listItem
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
Transforms.unwrapNodes(editor, {
|
|
46
|
-
match: node => Element.isElement(node) && node.type === ElementKinds.listItem
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
// 跨级、同级且类型不同
|
|
52
|
-
if (activeListNode && types.includes(activeListNode.type)) {
|
|
53
|
-
Transforms.setNodes(editor, { type }, { match: node => Element.isElement(node) && node.type !== type && types.includes(node.type) });
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
// wrap
|
|
57
|
-
ListEditor.buildListItem(editor);
|
|
58
|
-
Transforms.wrapNodes(editor, { type, children: [], start: startIndex }, {
|
|
59
|
-
at: editor.selection,
|
|
60
|
-
match: node => Element.isElement(node) && node.type === ElementKinds.listItem
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
},
|
|
64
|
-
unwrapList(editor) {
|
|
65
|
-
Editor.withoutNormalizing(editor, () => {
|
|
66
|
-
TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true, mode: 'all' });
|
|
67
|
-
TheTransforms.unwrapNodesByType(editor, [ElementKinds.listItem], { split: true, mode: 'all' });
|
|
68
|
-
});
|
|
69
|
-
},
|
|
70
|
-
wrapList(editor, type) {
|
|
71
|
-
Editor.withoutNormalizing(editor, () => {
|
|
72
|
-
const listItem = {
|
|
73
|
-
type: ElementKinds.listItem,
|
|
74
|
-
children: []
|
|
75
|
-
};
|
|
76
|
-
const list = {
|
|
77
|
-
type,
|
|
78
|
-
children: []
|
|
79
|
-
};
|
|
80
|
-
Transforms.wrapNodes(editor, list, { split: true });
|
|
81
|
-
Transforms.wrapNodes(editor, listItem, { split: true });
|
|
82
|
-
});
|
|
83
|
-
},
|
|
84
|
-
isActive(editor, type) {
|
|
85
|
-
const [match] = TheQueries.getNodesByType(editor, type);
|
|
86
|
-
return !!match;
|
|
87
|
-
},
|
|
88
|
-
getActiveList(editor) {
|
|
89
|
-
const [match] = TheQueries.getNodesByType(editor, LIST_BLOCK_TYPES);
|
|
90
|
-
return match;
|
|
91
|
-
},
|
|
92
|
-
buildListItem(editor) {
|
|
93
|
-
const nodes = Editor.nodes(editor, {
|
|
94
|
-
match: node => Element.isElement(node) && Editor.isBlock(editor, node),
|
|
95
|
-
mode: 'lowest'
|
|
96
|
-
});
|
|
97
|
-
for (const [node, path] of nodes) {
|
|
98
|
-
if (!(Element.isElement(node) && Editor.isVoid(editor, node)) &&
|
|
99
|
-
Element.isElement(node) &&
|
|
100
|
-
node.type !== ElementKinds.paragraph) {
|
|
101
|
-
Transforms.setNodes(editor, { type: ElementKinds.paragraph, checked: undefined }, // todo remove checked
|
|
102
|
-
{ at: path });
|
|
103
|
-
}
|
|
104
|
-
else if (Element.isElement(node) && node.type === ElementKinds.paragraph) {
|
|
105
|
-
let { textIndent } = node;
|
|
106
|
-
if (textIndent) {
|
|
107
|
-
Transforms.setNodes(editor, { textIndent: undefined, indent: undefined }, // remove indent
|
|
108
|
-
{ at: path });
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (Node.parent(editor, path).type !== ElementKinds.listItem) {
|
|
112
|
-
Transforms.wrapNodes(editor, { type: ElementKinds.listItem, children: [] }, {
|
|
113
|
-
at: path,
|
|
114
|
-
split: true
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
buildInsertDataChildren(node) {
|
|
120
|
-
const { children } = node;
|
|
121
|
-
const listItem = children[0];
|
|
122
|
-
if (isNodeTypeList(node) && Element.isElement(listItem) && listItem.children[0].type === ElementKinds.paragraph) {
|
|
123
|
-
return node;
|
|
124
|
-
}
|
|
125
|
-
return ListEditor.buildInsertDataChildren(listItem);
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saXN0L2xpc3QuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsTUFBTSxDQUFDLE1BQWMsRUFBRSxPQUFnQixFQUFFLElBQTJEO1FBQ2hHLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7SUFDcEUsQ0FBQztJQUNELFVBQVUsQ0FBQyxNQUFjLEVBQUUsSUFBMkQsRUFBRSxVQUFtQjtRQUN2RyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2QsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNuQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxNQUFNLENB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QVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFhLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzSCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsdUJBQXVCLENBQUMsUUFBbUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBOb2RlLCBQYXRoLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBMSVNUX0JMT0NLX1RZUEVTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vZGUtdHlwZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBpc05vZGVUeXBlTGlzdCB9IGZyb20gJy4vcXVlcmllcy9pcy1ub2RlLXR5cGUtbGlzdCc7XG5cbmV4cG9ydCBjb25zdCBMaXN0RWRpdG9yID0ge1xuICAgIGlzTGlzdChlZGl0b3I6IEVkaXRvciwgZWxlbWVudDogRWxlbWVudCwgdHlwZTogRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QpIHtcbiAgICAgICAgcmV0dXJuIEVkaXRvci5pc0Jsb2NrKGVkaXRvciwgZWxlbWVudCkgJiYgZWxlbWVudC50eXBlID09PSB0eXBlO1xuICAgIH0sXG4gICAgdG9nZ2xlTGlzdChlZGl0b3I6IEVkaXRvciwgdHlwZTogRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QsIHN0YXJ0SW5kZXg/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCFlZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdGFydEluZGV4KSB7XG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0eXBlcyA9IFtFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0LCBFbGVtZW50S2luZHMubnVtYmVyZWRMaXN0XTtcblxuICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgWy4uLmxpc3RJdGVtc10gPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgbWF0Y2g6IG5vZGUgPT4gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW0sXG4gICAgICAgICAgICAgICAgbW9kZTogJ2xvd2VzdCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZmlyc3RMaXN0SXRlbVBhdGggPSBsaXN0SXRlbXMubGVuZ3RoICYmIGxpc3RJdGVtc1swXVsxXTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUxpc3RQYXRoID0gbGlzdEl0ZW1zLmxlbmd0aCAmJiBQYXRoLnBhcmVudChmaXJzdExpc3RJdGVtUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVMaXN0Tm9kZSA9IGxpc3RJdGVtcy5sZW5ndGggJiYgKE5vZGUuZ2V0KGVkaXRvciwgYWN0aXZlTGlzdFBhdGgpIGFzIEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAvLyDlkIznuqfkuJTnsbvlnovnm7jlkIzvvJp1bndyYXBcbiAgICAgICAgICAgIGNvbnN0IGlzTG93ZXN0QWN0aXZlID1cbiAgICAgICAgICAgICAgICBsaXN0SXRlbXMubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgbGlzdEl0ZW1zLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICAgICAoWywgcGF0aF0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVMaXN0Tm9kZS50eXBlID09PSB0eXBlICYmIChQYXRoLmlzU2libGluZyhmaXJzdExpc3RJdGVtUGF0aCwgcGF0aCkgfHwgUGF0aC5lcXVhbHMoZmlyc3RMaXN0SXRlbVBhdGgsIHBhdGgpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaXNMb3dlc3RBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cExpc3RJdGVtID0gUGF0aC5wYXJlbnQoYWN0aXZlTGlzdFBhdGgpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMudW53cmFwTm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0OiBlZGl0b3Iuc2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBtYXRjaDogbm9kZSA9PiBub2RlID09PSBhY3RpdmVMaXN0Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6ICdsb3dlc3QnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHVwTGlzdEl0ZW0gJiYgKE5vZGUuZ2V0KGVkaXRvciwgdXBMaXN0SXRlbSkgYXMgRWxlbWVudCkudHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpc3RJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMubW92ZU5vZGVzKGVkaXRvciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXQ6IGVkaXRvci5zZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0bzogUGF0aC5uZXh0KHVwTGlzdEl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g6IG5vZGUgPT4gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy51bndyYXBOb2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoOiBub2RlID0+IEVsZW1lbnQuaXNFbGVtZW50KG5vZGUpICYmIG5vZGUudHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpc3RJdGVtXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOi3qOe6p+OAgeWQjOe6p+S4lOexu+Wei+S4jeWQjFxuICAgICAgICAgICAgaWYgKGFjdGl2ZUxpc3ROb2RlICYmIHR5cGVzLmluY2x1ZGVzKGFjdGl2ZUxpc3ROb2RlLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IHR5cGUgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBtYXRjaDogbm9kZSA9PiBFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiBub2RlLnR5cGUgIT09IHR5cGUgJiYgdHlwZXMuaW5jbHVkZXMobm9kZS50eXBlKSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHdyYXBcbiAgICAgICAgICAgIExpc3RFZGl0b3IuYnVpbGRMaXN0SXRlbShlZGl0b3IpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoZWRpdG9yLCB7IHR5cGUsIGNoaWxkcmVuOiBbXSwgc3RhcnQ6IHN0YXJ0SW5kZXggfSBhcyBFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgYXQ6IGVkaXRvci5zZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgbWF0Y2g6IG5vZGUgPT4gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHVud3JhcExpc3QoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMudW53cmFwTm9kZXNCeVR5cGUoZWRpdG9yLCBbRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdF0sIHsgc3BsaXQ6IHRydWUsIG1vZGU6ICdhbGwnIH0pO1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy51bndyYXBOb2Rlc0J5VHlwZShlZGl0b3IsIFtFbGVtZW50S2luZHMubGlzdEl0ZW1dLCB7IHNwbGl0OiB0cnVlLCBtb2RlOiAnYWxsJyB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICB3cmFwTGlzdChlZGl0b3I6IEVkaXRvciwgdHlwZTogRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QpIHtcbiAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RJdGVtOiBFbGVtZW50ID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IEVsZW1lbnRLaW5kcy5saXN0SXRlbSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBsaXN0ID0ge1xuICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoZWRpdG9yLCBsaXN0LCB7IHNwbGl0OiB0cnVlIH0pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoZWRpdG9yLCBsaXN0SXRlbSwgeyBzcGxpdDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBpc0FjdGl2ZShlZGl0b3I6IEVkaXRvciwgdHlwZTogRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QpIHtcbiAgICAgICAgY29uc3QgW21hdGNoXSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZXNCeVR5cGUoZWRpdG9yLCB0eXBlKTtcbiAgICAgICAgcmV0dXJuICEhbWF0Y2g7XG4gICAgfSxcbiAgICBnZXRBY3RpdmVMaXN0KGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IFttYXRjaF0gPSBUaGVRdWVyaWVzLmdldE5vZGVzQnlUeXBlKGVkaXRvciwgTElTVF9CTE9DS19UWVBFUyk7XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9LFxuICAgIGJ1aWxkTGlzdEl0ZW0oZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICBtYXRjaDogbm9kZSA9PiBFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiBFZGl0b3IuaXNCbG9jayhlZGl0b3IsIG5vZGUpLFxuICAgICAgICAgICAgbW9kZTogJ2xvd2VzdCdcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3QgW25vZGUsIHBhdGhdIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIShFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiBFZGl0b3IuaXNWb2lkKGVkaXRvciwgbm9kZSkpICYmXG4gICAgICAgICAgICAgICAgRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiZcbiAgICAgICAgICAgICAgICBub2RlLnR5cGUgIT09IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiBFbGVtZW50S2luZHMucGFyYWdyYXBoLCBjaGVja2VkOiB1bmRlZmluZWQgfSBhcyBhbnksIC8vIHRvZG8gcmVtb3ZlIGNoZWNrZWRcbiAgICAgICAgICAgICAgICAgICAgeyBhdDogcGF0aCB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMucGFyYWdyYXBoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgdGV4dEluZGVudCB9ID0gbm9kZTtcbiAgICAgICAgICAgICAgICBpZiAodGV4dEluZGVudCkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyB0ZXh0SW5kZW50OiB1bmRlZmluZWQsIGluZGVudDogdW5kZWZpbmVkIH0sIC8vIHJlbW92ZSBpbmRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgYXQ6IHBhdGggfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoTm9kZS5wYXJlbnQoZWRpdG9yLCBwYXRoKSBhcyBFbGVtZW50KS50eXBlICE9PSBFbGVtZW50S2luZHMubGlzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLndyYXBOb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IEVsZW1lbnRLaW5kcy5saXN0SXRlbSwgY2hpbGRyZW46IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGJ1aWxkSW5zZXJ0RGF0YUNoaWxkcmVuKG5vZGU6IEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gbm9kZTtcbiAgICAgICAgY29uc3QgbGlzdEl0ZW0gPSBjaGlsZHJlblswXTtcbiAgICAgICAgaWYgKGlzTm9kZVR5cGVMaXN0KG5vZGUpICYmIEVsZW1lbnQuaXNFbGVtZW50KGxpc3RJdGVtKSAmJiAobGlzdEl0ZW0uY2hpbGRyZW5bMF0gYXMgRWxlbWVudCkudHlwZSA9PT0gRWxlbWVudEtpbmRzLnBhcmFncmFwaCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTGlzdEVkaXRvci5idWlsZEluc2VydERhdGFDaGlsZHJlbihsaXN0SXRlbSBhcyBFbGVtZW50KTtcbiAgICB9XG59O1xuIl19
|