@worktile/theia 18.0.16 → 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 +297 -310
- 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/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,272 +0,0 @@
|
|
|
1
|
-
import { NgFor, NgIf } from '@angular/common';
|
|
2
|
-
import { ChangeDetectorRef, Component, ElementRef, HostBinding, Input, NgZone, ViewChildren, inject, viewChild } from '@angular/core';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { ThyAction } from 'ngx-tethys/action';
|
|
5
|
-
import { ScrollToService } from 'ngx-tethys/core';
|
|
6
|
-
import { ThyDivider } from 'ngx-tethys/divider';
|
|
7
|
-
import { ThyDropdownDirective, ThyDropdownMenuComponent, ThyDropdownMenuGroup, ThyDropdownMenuItemDirective } from 'ngx-tethys/dropdown';
|
|
8
|
-
import { ThyEmptyModule } from 'ngx-tethys/empty';
|
|
9
|
-
import { ThyIcon } from 'ngx-tethys/icon';
|
|
10
|
-
import { ThyInputSearch } from 'ngx-tethys/input';
|
|
11
|
-
import { ThyPopoverDirective, ThyPopoverRef } from 'ngx-tethys/popover';
|
|
12
|
-
import { ThyTooltipDirective } from 'ngx-tethys/tooltip';
|
|
13
|
-
import { Editor, Node, Transforms } from 'slate';
|
|
14
|
-
import { AngularEditor } from 'slate-angular';
|
|
15
|
-
import { getTheDefaultPluginMenu, QUICK_INSERT_HOTKEY, ThePluginMenuItemType } from '../../constants';
|
|
16
|
-
import { buildPluginMenu, buildPluginMenuItemMap } from '../../core';
|
|
17
|
-
import { ThePluginMenu } from '../../interfaces';
|
|
18
|
-
import { PluginMenuPipe } from '../../pipes';
|
|
19
|
-
import { QuickInsertEditor } from '../../plugins/public-api';
|
|
20
|
-
import { refocus } from '../../utils';
|
|
21
|
-
import { ThePreventDefaultDirective } from '../action/prevent-default';
|
|
22
|
-
import { TheListboxDirective, TheListboxGroupDirective, TheListboxOptionDirective } from '../listbox/listbox';
|
|
23
|
-
import { TheTableSelect } from '../table-select/table-select.component';
|
|
24
|
-
import { injectTranslations, TheI18nService } from '../../i18n';
|
|
25
|
-
import * as i0 from "@angular/core";
|
|
26
|
-
import * as i1 from "@angular/forms";
|
|
27
|
-
import * as i2 from "ngx-tethys/empty";
|
|
28
|
-
export class ThePluginMenuComponent {
|
|
29
|
-
constructor() {
|
|
30
|
-
this.theDisplaySearch = false;
|
|
31
|
-
this.autoActiveFirstItem = true;
|
|
32
|
-
this.containerClassName = `the-plugin-menu-container`;
|
|
33
|
-
this.locale = injectTranslations(inject(TheI18nService));
|
|
34
|
-
this.listBox = viewChild(TheListboxDirective);
|
|
35
|
-
this.listBoxAutoActiveFirstItem = true;
|
|
36
|
-
this.groupMenu = [];
|
|
37
|
-
this.iconMenu = [];
|
|
38
|
-
this.ThePluginMenuItemType = ThePluginMenuItemType;
|
|
39
|
-
this.thyMessage = this.locale().noData;
|
|
40
|
-
this.searchGroup = {
|
|
41
|
-
groupName: this.locale().searchResult
|
|
42
|
-
};
|
|
43
|
-
this.expandPopoverOptions = {
|
|
44
|
-
placement: 'rightTop',
|
|
45
|
-
width: '262px',
|
|
46
|
-
minWidth: '262px'
|
|
47
|
-
};
|
|
48
|
-
this.tableSelectPopoverConfig = {
|
|
49
|
-
panelClass: 'plugin-menu-table-select-container',
|
|
50
|
-
minWidth: 0,
|
|
51
|
-
// 避免重写
|
|
52
|
-
originActiveClass: 'thy-popover-origin-active'
|
|
53
|
-
};
|
|
54
|
-
this.elementRef = inject((ElementRef));
|
|
55
|
-
this.ngZone = inject(NgZone);
|
|
56
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
57
|
-
this.thyPopoverRef = inject((ThyPopoverRef));
|
|
58
|
-
this.removeBlock = () => {
|
|
59
|
-
const node = Node.get(this.editor, this.editor.selection.anchor.path);
|
|
60
|
-
const nodeString = Node.string(node);
|
|
61
|
-
const isStartWithHotkey = nodeString.startsWith(QUICK_INSERT_HOTKEY);
|
|
62
|
-
const isIncludeKeywords = nodeString.toLocaleLowerCase().trim().includes(this.keyWords);
|
|
63
|
-
if (node && nodeString.length > 0 && (isStartWithHotkey || isIncludeKeywords)) {
|
|
64
|
-
Editor.deleteBackward(this.editor, { unit: 'block' });
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
this.removeCharacter = () => {
|
|
68
|
-
const node = Node.get(this.editor, this.editor.selection.anchor.path);
|
|
69
|
-
const nodeString = Node.string(node);
|
|
70
|
-
const isStartWithHotkey = nodeString.startsWith(QUICK_INSERT_HOTKEY) || nodeString.startsWith('#');
|
|
71
|
-
const isIncludeKeywords = nodeString.toLocaleLowerCase().trim().includes(this.keyWords);
|
|
72
|
-
if (this.originKeywords?.length > 0 && (isStartWithHotkey || isIncludeKeywords)) {
|
|
73
|
-
Transforms.delete(this.editor, { distance: this.originKeywords.length, reverse: true });
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
ngOnInit() {
|
|
78
|
-
if (!this.autoActiveFirstItem || this.theDisplaySearch) {
|
|
79
|
-
this.listBoxAutoActiveFirstItem = false;
|
|
80
|
-
}
|
|
81
|
-
this.initializeSearch();
|
|
82
|
-
this.initializePluginMenu();
|
|
83
|
-
this.buildMenus();
|
|
84
|
-
setTimeout(() => {
|
|
85
|
-
this.scrollContainer = this.elementRef.nativeElement.querySelector('.the-plugin-menu-scroll-container');
|
|
86
|
-
}, 0);
|
|
87
|
-
}
|
|
88
|
-
initializeSearch() {
|
|
89
|
-
if (this.theDisplaySearch) {
|
|
90
|
-
this.keyboardContainer = this.elementRef.nativeElement;
|
|
91
|
-
setTimeout(() => {
|
|
92
|
-
// 记住位置
|
|
93
|
-
if (this.editor.selection) {
|
|
94
|
-
this.pathRef = Editor.pathRef(this.editor, this.editor.selection.anchor.path);
|
|
95
|
-
}
|
|
96
|
-
this.elementRef.nativeElement.querySelector('input').focus();
|
|
97
|
-
}, 0);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
this.keyboardContainer = AngularEditor.toDOMNode(this.editor, this.editor);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
initializePluginMenu() {
|
|
104
|
-
const currentMenu = this.thePluginMenu || getTheDefaultPluginMenu(this.locale);
|
|
105
|
-
const menuItemsMap = buildPluginMenuItemMap(this.editor);
|
|
106
|
-
this._pluginMenu = buildPluginMenu(menuItemsMap, currentMenu);
|
|
107
|
-
}
|
|
108
|
-
buildMenus() {
|
|
109
|
-
this.iconMenu = [];
|
|
110
|
-
this.groupMenu = [];
|
|
111
|
-
this._pluginMenu.forEach((item) => {
|
|
112
|
-
const isHidden = item?.isHidden && item.isHidden(this.editor);
|
|
113
|
-
if (ThePluginMenu.isMenuItem(item)) {
|
|
114
|
-
item.isMenuItem = true;
|
|
115
|
-
item.disabled = item.isDisabled && item.isDisabled(this.editor);
|
|
116
|
-
if (this.keyWords && !isHidden && item.keywords && item.keywords?.includes(this.keyWords)) {
|
|
117
|
-
this.groupMenu.push(item);
|
|
118
|
-
}
|
|
119
|
-
if (!isHidden && item.children && item.children.length > 0) {
|
|
120
|
-
item.children?.forEach((child) => {
|
|
121
|
-
if (child === 'divider')
|
|
122
|
-
return;
|
|
123
|
-
child.isMenuItem = true;
|
|
124
|
-
child.disabled = child.isDisabled && child.isDisabled(this.editor);
|
|
125
|
-
const isHiddenChid = item.isHidden && item.isHidden(this.editor);
|
|
126
|
-
if (this.keyWords && !isHiddenChid && child.keywords && child.keywords?.includes(this.keyWords)) {
|
|
127
|
-
this.groupMenu.push(child);
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (!this.keyWords && !isHidden) {
|
|
133
|
-
item?.type === ThePluginMenuItemType.icon ? this.iconMenu.push(item) : this.groupMenu.push(item);
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
if (this.keyWords && this.groupMenu.length > 0) {
|
|
137
|
-
this.groupMenu.unshift(this.searchGroup);
|
|
138
|
-
}
|
|
139
|
-
if (!this.keyWords) {
|
|
140
|
-
const menus = [...this.groupMenu];
|
|
141
|
-
this.groupMenu = menus.filter((item, index) => {
|
|
142
|
-
const isGroupMenu = ThePluginMenu.isMenuGroup(item);
|
|
143
|
-
const nextMenu = menus[index + 1];
|
|
144
|
-
const isLastMenu = index === menus.length - 1;
|
|
145
|
-
if ((nextMenu && isGroupMenu && ThePluginMenu.isMenuGroup(nextMenu)) ||
|
|
146
|
-
(isLastMenu && isGroupMenu) ||
|
|
147
|
-
(item?.children && item?.children?.length <= 0)) {
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
return true;
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
this.cdr.markForCheck();
|
|
154
|
-
}
|
|
155
|
-
listBoxOptionMouseenter(e, menu) {
|
|
156
|
-
e.preventDefault();
|
|
157
|
-
const listBox = this.listBox();
|
|
158
|
-
if (listBox) {
|
|
159
|
-
const activeOption = listBox.activeOption;
|
|
160
|
-
const newActiveOption = listBox.getOption(menu?.key);
|
|
161
|
-
listBox.setActiveItem(activeOption, newActiveOption, 'turn');
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
listBoxOptionMouseleave(e, menu) {
|
|
165
|
-
e.preventDefault();
|
|
166
|
-
const listBox = this.listBox();
|
|
167
|
-
listBox?.clearActiveItem();
|
|
168
|
-
}
|
|
169
|
-
handleItemSelection(menuItem) {
|
|
170
|
-
if (menuItem.isDisabled && menuItem.isDisabled(this.editor)) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
if (!this.editor.selection) {
|
|
174
|
-
refocus(this.editor);
|
|
175
|
-
}
|
|
176
|
-
if (!this.theDisplaySearch) {
|
|
177
|
-
menuItem?.removeKeywordsType === 'character' ? this.removeCharacter() : this.removeBlock();
|
|
178
|
-
}
|
|
179
|
-
menuItem.execute(this.editor);
|
|
180
|
-
this.thyPopoverRef.close();
|
|
181
|
-
QuickInsertEditor.updatePluginMenuRef(this.editor, null);
|
|
182
|
-
}
|
|
183
|
-
updateKeywords(keywords) {
|
|
184
|
-
if (this.autoActiveFirstItem) {
|
|
185
|
-
this.listBoxAutoActiveFirstItem = true;
|
|
186
|
-
}
|
|
187
|
-
this.originKeywords = keywords;
|
|
188
|
-
this.keyWords = keywords.toLowerCase().trim();
|
|
189
|
-
this.buildMenus();
|
|
190
|
-
if (this.scrollContainer) {
|
|
191
|
-
this.scrollContainer.scrollTop = 0;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
listBoxChange(event) {
|
|
195
|
-
if (!event.option) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
switch (event.type) {
|
|
199
|
-
case 'select':
|
|
200
|
-
this.handleItemSelection(event.option.theOptionValue);
|
|
201
|
-
break;
|
|
202
|
-
case 'child':
|
|
203
|
-
const dropdownComponent = this.findDropdownTrigger(event.option.parentOption);
|
|
204
|
-
this.ngZone.run(() => {
|
|
205
|
-
dropdownComponent.show();
|
|
206
|
-
});
|
|
207
|
-
break;
|
|
208
|
-
case 'parent':
|
|
209
|
-
const dropdown = this.findDropdownTrigger(event.option);
|
|
210
|
-
dropdown.hide();
|
|
211
|
-
break;
|
|
212
|
-
case 'turn':
|
|
213
|
-
ScrollToService.scrollToElement(event.option.elementRef.nativeElement, this.scrollContainer);
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
findDropdownTrigger(option) {
|
|
218
|
-
const dropdown = this.dropdownTriggers.find(value => {
|
|
219
|
-
return value['elementRef'].nativeElement === option.elementRef.nativeElement;
|
|
220
|
-
});
|
|
221
|
-
return dropdown;
|
|
222
|
-
}
|
|
223
|
-
trackByFn(index, item) {
|
|
224
|
-
return item?.key ?? index;
|
|
225
|
-
}
|
|
226
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThePluginMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
227
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThePluginMenuComponent, isStandalone: true, selector: "the-plugin-menu", inputs: { editor: "editor", theDisplaySearch: "theDisplaySearch", thePluginMenu: "thePluginMenu", sceneKey: "sceneKey", subPanelClass: "subPanelClass", autoActiveFirstItem: "autoActiveFirstItem" }, host: { properties: { "class": "this.containerClassName" } }, viewQueries: [{ propertyName: "listBox", first: true, predicate: TheListboxDirective, descendants: true, isSignal: true }, { propertyName: "dropdownTriggers", predicate: ["dropdownTriggers"], descendants: true, read: ThyDropdownDirective }], ngImport: i0, template: "@if (theDisplaySearch) {\n <div class=\"menu-search px-5 pt-5 pb-2\">\n <thy-input-search\n [placeholder]=\"locale().search\"\n thyIconPosition=\"after\"\n [(ngModel)]=\"keyWords\"\n (ngModelChange)=\"updateKeywords(keyWords)\"\n >\n </thy-input-search>\n </div>\n}\n\n@if (groupMenu.length > 0) {\n <div\n class=\"thy-dropdown-menu the-plugin-menu-scroll-container pb-2 pt-0\"\n theListBox\n [keyboardContainer]=\"keyboardContainer\"\n [autoActiveFirstItem]=\"listBoxAutoActiveFirstItem\"\n (theListboxChange)=\"listBoxChange($event)\"\n >\n <ng-container *ngIf=\"iconMenu?.length > 0\">\n <div theListboxGroup [horizontalColumn]=\"6\" class=\"icon-menu d-flex pl-5 py-1\">\n @for (item of iconMenu; track trackByFn) {\n @if (item.type === ThePluginMenuItemType.icon) {\n <a\n href=\"javascript:;\"\n class=\"mt-2\"\n thyAction\n theListboxOption\n thePreventDefault\n [theOptionValue]=\"item\"\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item?.name\"\n [thyDisabled]=\"item.disabled\"\n [theOptionDisabled]=\"item.disabled\"\n (mouseenter)=\"listBoxOptionMouseenter($event, item)\"\n (mouseleave)=\"listBoxOptionMouseleave($event, item)\"\n (click)=\"handleItemSelection(item)\"\n ></a>\n }\n }\n </div>\n <thy-divider class=\"my-2\"></thy-divider>\n </ng-container>\n\n <div theListboxGroup>\n <ng-container *ngFor=\"let item of groupMenu; trackBy: trackByFn\">\n <ng-container *ngIf=\"item.isMenuItem && !(item.children?.length > 0) && item.key !== 'table'\">\n <div\n class=\"py-0\"\n thyDropdownMenuItem\n theListboxOption\n thePreventDefault\n [theOptionValue]=\"item\"\n [thyDisabled]=\"item.disabled\"\n [theOptionDisabled]=\"item.disabled\"\n (mouseenter)=\"listBoxOptionMouseenter($event, item)\"\n (mouseleave)=\"listBoxOptionMouseleave($event, item)\"\n (click)=\"handleItemSelection(item)\"\n >\n @if (item?.menuIcon) {\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon | getMenuIcon: sceneKey\"></thy-icon>\n </div>\n }\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.isMenuItem && item.children?.length > 0\" #hasExpanded>\n <div\n #dropdownTriggers\n class=\"py-0\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n thePreventDefault\n [theOptionValue]=\"item\"\n [thyDisabled]=\"item.disabled\"\n [theOptionDisabled]=\"item.disabled\"\n [thyDropdown]=\"expand\"\n [thyPopoverOptions]=\"expandPopoverOptions\"\n [thyPanelClass]=\"subPanelClass\"\n (click)=\"handleItemSelection(item)\"\n >\n @if (item?.menuIcon) {\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon | getMenuIcon: sceneKey\"></thy-icon>\n </div>\n }\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n </div>\n @if (item.children?.length > 0) {\n <div>\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n }\n <thy-dropdown-menu #expand>\n <div class=\"the-plugin-menu-container expand-menu\" theListboxGroup>\n @for (child of item.children; track trackByFn) {\n @if (child.type === ThePluginMenuItemType.group) {\n <div\n class=\"py-0\"\n thyDropdownMenuItem\n theListboxOption\n thePreventDefault\n [theOptionDisabled]=\"item.disabled\"\n [thyDisabled]=\"child.disabled\"\n [theOptionValue]=\"child\"\n (mouseenter)=\"listBoxOptionMouseenter($event, child)\"\n (mouseleave)=\"listBoxOptionMouseleave($event, child)\"\n (click)=\"handleItemSelection(child)\"\n >\n @if (child?.menuIcon) {\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"child.menuIcon | getMenuIcon: sceneKey\"></thy-icon>\n </div>\n }\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ child.name }}\n </div>\n </div>\n </div>\n } @else if (child === 'divider') {\n <thy-divider class=\"my-2\"></thy-divider>\n }\n }\n </div>\n </thy-dropdown-menu>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.isMenuItem && item.key === 'table'\">\n <div\n #dropdownTriggers\n class=\"py-0\"\n thyPlacement=\"rightTop\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n thePreventDefault\n [theOptionValue]=\"item\"\n [theOptionDisabled]=\"item.disabled\"\n [thyDisabled]=\"item.disabled\"\n [thyPopover]=\"tableSelect\"\n [thyConfig]=\"tableSelectPopoverConfig\"\n (mouseenter)=\"listBoxOptionMouseenter($event, item)\"\n (mouseleave)=\"listBoxOptionMouseleave($event, item)\"\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon | getMenuIcon: sceneKey\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n </div>\n <div>\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n\n <ng-template #tableSelect>\n <table-select\n class=\"plugin-menu-table the-table-selector-panel\"\n [editor]=\"editor\"\n [beforeInsert]=\"removeBlock\"\n ></table-select>\n </ng-template>\n </div>\n </ng-container>\n\n @if (!item.isMenuItem) {\n <thy-dropdown-menu-group class=\"font-size-sm\" [thyTitle]=\"item.groupName\"></thy-dropdown-menu-group>\n }\n </ng-container>\n </div>\n </div>\n} @else {\n <div class=\"empty d-flex align-items-center justify-content-center\">\n <thy-empty [thyMessage]=\"thyMessage\"></thy-empty>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ThyEmptyModule }, { kind: "component", type: i2.ThyEmpty, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }, { kind: "component", type: TheTableSelect, selector: "table-select", inputs: ["optionsParam", "editor", "beforeInsert"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "component", type: ThyInputSearch, selector: "thy-input-search", inputs: ["name", "placeholder", "thyTheme", "thySearchFocus", "thyIconPosition", "thySize"], outputs: ["clear", "thyClear"] }, { kind: "component", type: ThyDropdownMenuComponent, selector: "thy-dropdown-menu", inputs: ["thyWidth", "thyImmediateRender"] }, { kind: "component", type: ThyDropdownMenuGroup, selector: "thy-dropdown-menu-group", inputs: ["thyTitle"] }, { kind: "pipe", type: PluginMenuPipe, name: "getMenuIcon" }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "directive", type: ThyPopoverDirective, selector: "[thyPopover]", inputs: ["thyPopover", "thyTrigger", "thyPlacement", "thyOffset", "thyConfig", "thyShowDelay", "thyHideDelay", "thyAutoAdaptive", "thyDisabled"] }, { kind: "directive", type: TheListboxDirective, selector: "[theListBox]", inputs: ["keyboardContainer", "autoActiveFirstItem"], outputs: ["theListboxChange"], exportAs: ["theListBox"] }, { kind: "directive", type: ThyDropdownDirective, selector: "[thyDropdown]", inputs: ["thyDropdownMenu", "thyDropdown", "thyTrigger", "thyShowDelay", "thyHideDelay", "thyActiveClass", "thyPopoverOptions", "thyPlacement", "thyMenuInsideClosable", "thyPanelClass"], outputs: ["thyActiveChange"] }, { kind: "directive", type: TheListboxGroupDirective, selector: "[theListboxGroup]", inputs: ["horizontalColumn"], exportAs: ["theListboxGroup"] }, { kind: "directive", type: TheListboxOptionDirective, selector: "[theListboxOption]", inputs: ["theOptionValue", "theOptionDisabled"], exportAs: ["theListboxOption"] }, { kind: "directive", type: ThePreventDefaultDirective, selector: "[thePreventDefault]", exportAs: ["thePreventDefault"] }, { kind: "directive", type: ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }] }); }
|
|
228
|
-
}
|
|
229
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThePluginMenuComponent, decorators: [{
|
|
230
|
-
type: Component,
|
|
231
|
-
args: [{ selector: 'the-plugin-menu', standalone: true, imports: [
|
|
232
|
-
NgIf,
|
|
233
|
-
NgFor,
|
|
234
|
-
FormsModule,
|
|
235
|
-
ThyEmptyModule,
|
|
236
|
-
TheTableSelect,
|
|
237
|
-
ThyIcon,
|
|
238
|
-
ThyAction,
|
|
239
|
-
ThyDivider,
|
|
240
|
-
ThyInputSearch,
|
|
241
|
-
ThyDropdownMenuComponent,
|
|
242
|
-
ThyDropdownMenuGroup,
|
|
243
|
-
PluginMenuPipe,
|
|
244
|
-
ThyTooltipDirective,
|
|
245
|
-
ThyPopoverDirective,
|
|
246
|
-
TheListboxDirective,
|
|
247
|
-
ThyDropdownDirective,
|
|
248
|
-
TheListboxGroupDirective,
|
|
249
|
-
TheListboxOptionDirective,
|
|
250
|
-
ThePreventDefaultDirective,
|
|
251
|
-
ThyDropdownMenuItemDirective
|
|
252
|
-
], template: "@if (theDisplaySearch) {\n <div class=\"menu-search px-5 pt-5 pb-2\">\n <thy-input-search\n [placeholder]=\"locale().search\"\n thyIconPosition=\"after\"\n [(ngModel)]=\"keyWords\"\n (ngModelChange)=\"updateKeywords(keyWords)\"\n >\n </thy-input-search>\n </div>\n}\n\n@if (groupMenu.length > 0) {\n <div\n class=\"thy-dropdown-menu the-plugin-menu-scroll-container pb-2 pt-0\"\n theListBox\n [keyboardContainer]=\"keyboardContainer\"\n [autoActiveFirstItem]=\"listBoxAutoActiveFirstItem\"\n (theListboxChange)=\"listBoxChange($event)\"\n >\n <ng-container *ngIf=\"iconMenu?.length > 0\">\n <div theListboxGroup [horizontalColumn]=\"6\" class=\"icon-menu d-flex pl-5 py-1\">\n @for (item of iconMenu; track trackByFn) {\n @if (item.type === ThePluginMenuItemType.icon) {\n <a\n href=\"javascript:;\"\n class=\"mt-2\"\n thyAction\n theListboxOption\n thePreventDefault\n [theOptionValue]=\"item\"\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item?.name\"\n [thyDisabled]=\"item.disabled\"\n [theOptionDisabled]=\"item.disabled\"\n (mouseenter)=\"listBoxOptionMouseenter($event, item)\"\n (mouseleave)=\"listBoxOptionMouseleave($event, item)\"\n (click)=\"handleItemSelection(item)\"\n ></a>\n }\n }\n </div>\n <thy-divider class=\"my-2\"></thy-divider>\n </ng-container>\n\n <div theListboxGroup>\n <ng-container *ngFor=\"let item of groupMenu; trackBy: trackByFn\">\n <ng-container *ngIf=\"item.isMenuItem && !(item.children?.length > 0) && item.key !== 'table'\">\n <div\n class=\"py-0\"\n thyDropdownMenuItem\n theListboxOption\n thePreventDefault\n [theOptionValue]=\"item\"\n [thyDisabled]=\"item.disabled\"\n [theOptionDisabled]=\"item.disabled\"\n (mouseenter)=\"listBoxOptionMouseenter($event, item)\"\n (mouseleave)=\"listBoxOptionMouseleave($event, item)\"\n (click)=\"handleItemSelection(item)\"\n >\n @if (item?.menuIcon) {\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon | getMenuIcon: sceneKey\"></thy-icon>\n </div>\n }\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.isMenuItem && item.children?.length > 0\" #hasExpanded>\n <div\n #dropdownTriggers\n class=\"py-0\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n thePreventDefault\n [theOptionValue]=\"item\"\n [thyDisabled]=\"item.disabled\"\n [theOptionDisabled]=\"item.disabled\"\n [thyDropdown]=\"expand\"\n [thyPopoverOptions]=\"expandPopoverOptions\"\n [thyPanelClass]=\"subPanelClass\"\n (click)=\"handleItemSelection(item)\"\n >\n @if (item?.menuIcon) {\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon | getMenuIcon: sceneKey\"></thy-icon>\n </div>\n }\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n </div>\n @if (item.children?.length > 0) {\n <div>\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n }\n <thy-dropdown-menu #expand>\n <div class=\"the-plugin-menu-container expand-menu\" theListboxGroup>\n @for (child of item.children; track trackByFn) {\n @if (child.type === ThePluginMenuItemType.group) {\n <div\n class=\"py-0\"\n thyDropdownMenuItem\n theListboxOption\n thePreventDefault\n [theOptionDisabled]=\"item.disabled\"\n [thyDisabled]=\"child.disabled\"\n [theOptionValue]=\"child\"\n (mouseenter)=\"listBoxOptionMouseenter($event, child)\"\n (mouseleave)=\"listBoxOptionMouseleave($event, child)\"\n (click)=\"handleItemSelection(child)\"\n >\n @if (child?.menuIcon) {\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"child.menuIcon | getMenuIcon: sceneKey\"></thy-icon>\n </div>\n }\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ child.name }}\n </div>\n </div>\n </div>\n } @else if (child === 'divider') {\n <thy-divider class=\"my-2\"></thy-divider>\n }\n }\n </div>\n </thy-dropdown-menu>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.isMenuItem && item.key === 'table'\">\n <div\n #dropdownTriggers\n class=\"py-0\"\n thyPlacement=\"rightTop\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n thePreventDefault\n [theOptionValue]=\"item\"\n [theOptionDisabled]=\"item.disabled\"\n [thyDisabled]=\"item.disabled\"\n [thyPopover]=\"tableSelect\"\n [thyConfig]=\"tableSelectPopoverConfig\"\n (mouseenter)=\"listBoxOptionMouseenter($event, item)\"\n (mouseleave)=\"listBoxOptionMouseleave($event, item)\"\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon | getMenuIcon: sceneKey\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n </div>\n <div>\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n\n <ng-template #tableSelect>\n <table-select\n class=\"plugin-menu-table the-table-selector-panel\"\n [editor]=\"editor\"\n [beforeInsert]=\"removeBlock\"\n ></table-select>\n </ng-template>\n </div>\n </ng-container>\n\n @if (!item.isMenuItem) {\n <thy-dropdown-menu-group class=\"font-size-sm\" [thyTitle]=\"item.groupName\"></thy-dropdown-menu-group>\n }\n </ng-container>\n </div>\n </div>\n} @else {\n <div class=\"empty d-flex align-items-center justify-content-center\">\n <thy-empty [thyMessage]=\"thyMessage\"></thy-empty>\n </div>\n}\n" }]
|
|
253
|
-
}], propDecorators: { editor: [{
|
|
254
|
-
type: Input
|
|
255
|
-
}], theDisplaySearch: [{
|
|
256
|
-
type: Input
|
|
257
|
-
}], thePluginMenu: [{
|
|
258
|
-
type: Input
|
|
259
|
-
}], sceneKey: [{
|
|
260
|
-
type: Input
|
|
261
|
-
}], subPanelClass: [{
|
|
262
|
-
type: Input
|
|
263
|
-
}], autoActiveFirstItem: [{
|
|
264
|
-
type: Input
|
|
265
|
-
}], containerClassName: [{
|
|
266
|
-
type: HostBinding,
|
|
267
|
-
args: ['class']
|
|
268
|
-
}], dropdownTriggers: [{
|
|
269
|
-
type: ViewChildren,
|
|
270
|
-
args: ['dropdownTriggers', { read: ThyDropdownDirective }]
|
|
271
|
-
}] } });
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvcGx1Z2luLW1lbnUvcGx1Z2luLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvcGx1Z2luLW1lbnUvcGx1Z2luLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBR04sWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxvQkFBb0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFB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Q25CLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QiwwQkFBMEI7d0JBQzFCLDRCQUE0QjtxQkFDL0I7OEJBR1EsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRWdCLGtCQUFrQjtzQkFBdkMsV0FBVzt1QkFBQyxPQUFPO2dCQUdwQixnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uSW5pdCxcbiAgICBTaWduYWwsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIGluamVjdCxcbiAgICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRoeUFjdGlvbiB9IGZyb20gJ25neC10ZXRoeXMvYWN0aW9uJztcbmltcG9ydCB7IFNjcm9sbFRvU2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlEaXZpZGVyIH0gZnJvbSAnbmd4LXRldGh5cy9kaXZpZGVyJztcbmltcG9ydCB7IFRoeURyb3Bkb3duRGlyZWN0aXZlLCBUaHlEcm9wZG93bk1lbnVDb21wb25lbnQsIFRoeURyb3Bkb3duTWVudUdyb3VwLCBUaHlEcm9wZG93bk1lbnVJdGVtRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9kcm9wZG93bic7XG5pbXBvcnQgeyBUaHlFbXB0eU1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlJbnB1dFNlYXJjaCB9IGZyb20gJ25neC10ZXRoeXMvaW5wdXQnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlckRpcmVjdGl2ZSwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy90b29sdGlwJztcbmltcG9ydCB7IEVkaXRvciwgTm9kZSwgUGF0aFJlZiwgVGV4dCwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IGdldFRoZURlZmF1bHRQbHVnaW5NZW51LCBRVUlDS19JTlNFUlRfSE9US0VZLCBUaGVQbHVnaW5NZW51SXRlbVR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgYnVpbGRQbHVnaW5NZW51LCBidWlsZFBsdWdpbk1lbnVJdGVtTWFwIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBUaGVQbHVnaW5NZW51LCBUaGVQbHVnaW5NZW51R3JvdXAsIFRoZVBsdWdpbk1lbnVJdGVtLCBUaGVQbHVnaW5NZW51SXRlbUNvbmZpZywgVGhlUGx1Z2luTWVudUl0ZW1XcmFwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQbHVnaW5NZW51UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7IFF1aWNrSW5zZXJ0RWRpdG9yIH0gZnJvbSAnLi4vLi4vcGx1Z2lucy9wdWJsaWMtYXBpJztcbmltcG9ydCB7IHJlZm9jdXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBUaGVQcmV2ZW50RGVmYXVsdERpcmVjdGl2ZSB9IGZyb20gJy4uL2FjdGlvbi9wcmV2ZW50LWRlZmF1bHQnO1xuaW1wb3J0IHsgVGhlTGlzdGJveENoYW5nZUV2ZW50LCBUaGVMaXN0Ym94RGlyZWN0aXZlLCBUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmUsIFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9saXN0Ym94L2xpc3Rib3gnO1xuaW1wb3J0IHsgVGhlVGFibGVTZWxlY3QgfSBmcm9tICcuLi90YWJsZS1zZWxlY3QvdGFibGUtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbmplY3RUcmFuc2xhdGlvbnMsIFRoZUkxOG5TZXJ2aWNlLCBUaGVJMThuVHJhbnNsYXRpb24gfSBmcm9tICcuLi8uLi9pMThuJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtcGx1Z2luLW1lbnUnLFxuICAgIHRlbXBsYXRlVXJsOiAncGx1Z2luLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFRoeUVtcHR5TW9kdWxlLFxuICAgICAgICBUaGVUYWJsZVNlbGVjdCxcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5QWN0aW9uLFxuICAgICAgICBUaHlEaXZpZGVyLFxuICAgICAgICBUaHlJbnB1dFNlYXJjaCxcbiAgICAgICAgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50LFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVHcm91cCxcbiAgICAgICAgUGx1Z2luTWVudVBpcGUsXG4gICAgICAgIFRoeVRvb2x0aXBEaXJlY3RpdmUsXG4gICAgICAgIFRoeVBvcG92ZXJEaXJlY3RpdmUsXG4gICAgICAgIFRoZUxpc3Rib3hEaXJlY3RpdmUsXG4gICAgICAgIFRoeURyb3Bkb3duRGlyZWN0aXZlLFxuICAgICAgICBUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmUsXG4gICAgICAgIFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUsXG4gICAgICAgIFRoZVByZXZlbnREZWZhdWx0RGlyZWN0aXZlLFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVJdGVtRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaGVQbHVnaW5NZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBlZGl0b3I6IEVkaXRvcjtcblxuICAgIEBJbnB1dCgpIHRoZURpc3BsYXlTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHRoZVBsdWdpbk1lbnU6IFRoZVBsdWdpbk1lbnVJdGVtQ29uZmlnW107XG5cbiAgICBASW5wdXQoKSBzY2VuZUtleT86IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN1YlBhbmVsQ2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KCkgYXV0b0FjdGl2ZUZpcnN0SXRlbTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY29udGFpbmVyQ2xhc3NOYW1lID0gYHRoZS1wbHVnaW4tbWVudS1jb250YWluZXJgO1xuXG4gICAgQFZpZXdDaGlsZHJlbignZHJvcGRvd25UcmlnZ2VycycsIHsgcmVhZDogVGh5RHJvcGRvd25EaXJlY3RpdmUgfSlcbiAgICBkcm9wZG93blRyaWdnZXJzOiBUaHlEcm9wZG93bkRpcmVjdGl2ZVtdO1xuXG4gICAgbG9jYWxlOiBTaWduYWw8VGhlSTE4blRyYW5zbGF0aW9uPiA9IGluamVjdFRyYW5zbGF0aW9ucyhpbmplY3QoVGhlSTE4blNlcnZpY2UpKTtcblxuICAgIGxpc3RCb3ggPSB2aWV3Q2hpbGQoVGhlTGlzdGJveERpcmVjdGl2ZSk7XG5cbiAgICBsaXN0Qm94QXV0b0FjdGl2ZUZpcnN0SXRlbSA9IHRydWU7XG5cbiAgICBwYXRoUmVmOiBQYXRoUmVmO1xuXG4gICAga2V5Ym9hcmRDb250YWluZXI6IEhUTUxFbGVtZW50O1xuXG4gICAgX3BsdWdpbk1lbnU6IFRoZVBsdWdpbk1lbnU7XG5cbiAgICBncm91cE1lbnU6IFRoZVBsdWdpbk1lbnUgPSBbXTtcblxuICAgIGljb25NZW51OiBUaGVQbHVnaW5NZW51ID0gW107XG5cbiAgICBUaGVQbHVnaW5NZW51SXRlbVR5cGUgPSBUaGVQbHVnaW5NZW51SXRlbVR5cGU7XG5cbiAgICBrZXlXb3Jkczogc3RyaW5nO1xuXG4gICAgdGh5TWVzc2FnZSA9IHRoaXMubG9jYWxlKCkubm9EYXRhO1xuXG4gICAgc2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudDtcblxuICAgIHNlYXJjaEdyb3VwOiBUaGVQbHVnaW5NZW51R3JvdXAgPSB7XG4gICAgICAgIGdyb3VwTmFtZTogdGhpcy5sb2NhbGUoKS5zZWFyY2hSZXN1bHRcbiAgICB9O1xuXG4gICAgZXhwYW5kUG9wb3Zlck9wdGlvbnMgPSB7XG4gICAgICAgIHBsYWNlbWVudDogJ3JpZ2h0VG9wJyxcbiAgICAgICAgd2lkdGg6ICcyNjJweCcsXG4gICAgICAgIG1pbldpZHRoOiAnMjYycHgnXG4gICAgfTtcblxuICAgIHRhYmxlU2VsZWN0UG9wb3ZlckNvbmZpZyA9IHtcbiAgICAgICAgcGFuZWxDbGFzczogJ3BsdWdpbi1tZW51LXRhYmxlLXNlbGVjdC1jb250YWluZXInLFxuICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgLy8gIOmBv+WFjemHjeWGmVxuICAgICAgICBvcmlnaW5BY3RpdmVDbGFzczogJ3RoeS1wb3BvdmVyLW9yaWdpbi1hY3RpdmUnXG4gICAgfTtcblxuICAgIG9yaWdpbktleXdvcmRzOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgcHVibGljIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIHRoeVBvcG92ZXJSZWYgPSBpbmplY3QoVGh5UG9wb3ZlclJlZjxUaGVQbHVnaW5NZW51Q29tcG9uZW50Pik7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9BY3RpdmVGaXJzdEl0ZW0gfHwgdGhpcy50aGVEaXNwbGF5U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RCb3hBdXRvQWN0aXZlRmlyc3RJdGVtID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0aWFsaXplU2VhcmNoKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBsdWdpbk1lbnUoKTtcbiAgICAgICAgdGhpcy5idWlsZE1lbnVzKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGhlLXBsdWdpbi1tZW51LXNjcm9sbC1jb250YWluZXInKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVNlYXJjaCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGhlRGlzcGxheVNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZENvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8g6K6w5L2P5L2N572uXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdGhSZWYgPSBFZGl0b3IucGF0aFJlZih0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS5mb2N1cygpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmtleWJvYXJkQ29udGFpbmVyID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUodGhpcy5lZGl0b3IsIHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemVQbHVnaW5NZW51KCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudSA9IHRoaXMudGhlUGx1Z2luTWVudSB8fCBnZXRUaGVEZWZhdWx0UGx1Z2luTWVudSh0aGlzLmxvY2FsZSk7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtc01hcCA9IGJ1aWxkUGx1Z2luTWVudUl0ZW1NYXAodGhpcy5lZGl0b3IpO1xuICAgICAgICB0aGlzLl9wbHVnaW5NZW51ID0gYnVpbGRQbHVnaW5NZW51KG1lbnVJdGVtc01hcCwgY3VycmVudE1lbnUpO1xuICAgIH1cblxuICAgIGJ1aWxkTWVudXMoKSB7XG4gICAgICAgIHRoaXMuaWNvbk1lbnUgPSBbXTtcbiAgICAgICAgdGhpcy5ncm91cE1lbnUgPSBbXTtcblxuICAgICAgICB0aGlzLl9wbHVnaW5NZW51LmZvckVhY2goKGl0ZW06IFRoZVBsdWdpbk1lbnVJdGVtV3JhcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW4gPSBpdGVtPy5pc0hpZGRlbiAmJiBpdGVtLmlzSGlkZGVuKHRoaXMuZWRpdG9yKTtcblxuICAgICAgICAgICAgaWYgKFRoZVBsdWdpbk1lbnUuaXNNZW51SXRlbShpdGVtKSkge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNNZW51SXRlbSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGl0ZW0uaXNEaXNhYmxlZCAmJiBpdGVtLmlzRGlzYWJsZWQodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmtleVdvcmRzICYmICFpc0hpZGRlbiAmJiBpdGVtLmtleXdvcmRzICYmIGl0ZW0ua2V5d29yZHM/LmluY2x1ZGVzKHRoaXMua2V5V29yZHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBNZW51LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghaXNIaWRkZW4gJiYgaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IFRoZVBsdWdpbk1lbnVJdGVtV3JhcCB8ICdkaXZpZGVyJykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkID09PSAnZGl2aWRlcicpIHJldHVybjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuaXNNZW51SXRlbSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5kaXNhYmxlZCA9IGNoaWxkLmlzRGlzYWJsZWQgJiYgY2hpbGQuaXNEaXNhYmxlZCh0aGlzLmVkaXRvcik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSGlkZGVuQ2hpZCA9IGl0ZW0uaXNIaWRkZW4gJiYgaXRlbS5pc0hpZGRlbih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5rZXlXb3JkcyAmJiAhaXNIaWRkZW5DaGlkICYmIGNoaWxkLmtleXdvcmRzICYmIGNoaWxkLmtleXdvcmRzPy5pbmNsdWRlcyh0aGlzLmtleVdvcmRzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBNZW51LnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5rZXlXb3JkcyAmJiAhaXNIaWRkZW4pIHtcbiAgICAgICAgICAgICAgICBpdGVtPy50eXBlID09PSBUaGVQbHVnaW5NZW51SXRlbVR5cGUuaWNvbiA/IHRoaXMuaWNvbk1lbnUucHVzaChpdGVtKSA6IHRoaXMuZ3JvdXBNZW51LnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmtleVdvcmRzICYmIHRoaXMuZ3JvdXBNZW51Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBNZW51LnVuc2hpZnQodGhpcy5zZWFyY2hHcm91cCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMua2V5V29yZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lbnVzID0gWy4uLnRoaXMuZ3JvdXBNZW51XTtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBNZW51ID0gbWVudXMuZmlsdGVyKChpdGVtOiBUaGVQbHVnaW5NZW51SXRlbVdyYXAsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0dyb3VwTWVudSA9IFRoZVBsdWdpbk1lbnUuaXNNZW51R3JvdXAoaXRlbSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dE1lbnUgPSBtZW51c1tpbmRleCArIDFdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTGFzdE1lbnUgPSBpbmRleCA9PT0gbWVudXMubGVuZ3RoIC0gMTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKG5leHRNZW51ICYmIGlzR3JvdXBNZW51ICYmIFRoZVBsdWdpbk1lbnUuaXNNZW51R3JvdXAobmV4dE1lbnUpKSB8fFxuICAgICAgICAgICAgICAgICAgICAoaXNMYXN0TWVudSAmJiBpc0dyb3VwTWVudSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0/LmNoaWxkcmVuICYmIGl0ZW0/LmNoaWxkcmVuPy5sZW5ndGggPD0gMClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBsaXN0Qm94T3B0aW9uTW91c2VlbnRlcihlOiBNb3VzZUV2ZW50LCBtZW51OiBUaGVQbHVnaW5NZW51SXRlbSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGxpc3RCb3ggPSB0aGlzLmxpc3RCb3goKTtcbiAgICAgICAgaWYgKGxpc3RCb3gpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IGxpc3RCb3guYWN0aXZlT3B0aW9uO1xuICAgICAgICAgICAgY29uc3QgbmV3QWN0aXZlT3B0aW9uID0gbGlzdEJveC5nZXRPcHRpb24obWVudT8ua2V5KTtcbiAgICAgICAgICAgIGxpc3RCb3guc2V0QWN0aXZlSXRlbShhY3RpdmVPcHRpb24sIG5ld0FjdGl2ZU9wdGlvbiwgJ3R1cm4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxpc3RCb3hPcHRpb25Nb3VzZWxlYXZlKGU6IE1vdXNlRXZlbnQsIG1lbnU6IFRoZVBsdWdpbk1lbnVJdGVtKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgbGlzdEJveCA9IHRoaXMubGlzdEJveCgpO1xuICAgICAgICBsaXN0Qm94Py5jbGVhckFjdGl2ZUl0ZW0oKTtcbiAgICB9XG5cbiAgICBoYW5kbGVJdGVtU2VsZWN0aW9uKG1lbnVJdGVtOiBUaGVQbHVnaW5NZW51SXRlbSkge1xuICAgICAgICBpZiAobWVudUl0ZW0uaXNEaXNhYmxlZCAmJiBtZW51SXRlbS5pc0Rpc2FibGVkKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZWZvY3VzKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGhlRGlzcGxheVNlYXJjaCkge1xuICAgICAgICAgICAgbWVudUl0ZW0/LnJlbW92ZUtleXdvcmRzVHlwZSA9PT0gJ2NoYXJhY3RlcicgPyB0aGlzLnJlbW92ZUNoYXJhY3RlcigpIDogdGhpcy5yZW1vdmVCbG9jaygpO1xuICAgICAgICB9XG4gICAgICAgIG1lbnVJdGVtLmV4ZWN1dGUodGhpcy5lZGl0b3IpO1xuICAgICAgICB0aGlzLnRoeVBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgUXVpY2tJbnNlcnRFZGl0b3IudXBkYXRlUGx1Z2luTWVudVJlZih0aGlzLmVkaXRvciwgbnVsbCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQmxvY2sgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKSBhcyBUZXh0O1xuICAgICAgICBjb25zdCBub2RlU3RyaW5nID0gTm9kZS5zdHJpbmcobm9kZSk7XG4gICAgICAgIGNvbnN0IGlzU3RhcnRXaXRoSG90a2V5ID0gbm9kZVN0cmluZy5zdGFydHNXaXRoKFFVSUNLX0lOU0VSVF9IT1RLRVkpO1xuICAgICAgICBjb25zdCBpc0luY2x1ZGVLZXl3b3JkcyA9IG5vZGVTdHJpbmcudG9Mb2NhbGVMb3dlckNhc2UoKS50cmltKCkuaW5jbHVkZXModGhpcy5rZXlXb3Jkcyk7XG4gICAgICAgIGlmIChub2RlICYmIG5vZGVTdHJpbmcubGVuZ3RoID4gMCAmJiAoaXNTdGFydFdpdGhIb3RrZXkgfHwgaXNJbmNsdWRlS2V5d29yZHMpKSB7XG4gICAgICAgICAgICBFZGl0b3IuZGVsZXRlQmFja3dhcmQodGhpcy5lZGl0b3IsIHsgdW5pdDogJ2Jsb2NrJyB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZW1vdmVDaGFyYWN0ZXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKSBhcyBUZXh0O1xuICAgICAgICBjb25zdCBub2RlU3RyaW5nID0gTm9kZS5zdHJpbmcobm9kZSk7XG4gICAgICAgIGNvbnN0IGlzU3RhcnRXaXRoSG90a2V5ID0gbm9kZVN0cmluZy5zdGFydHNXaXRoKFFVSUNLX0lOU0VSVF9IT1RLRVkpIHx8IG5vZGVTdHJpbmcuc3RhcnRzV2l0aCgnIycpO1xuICAgICAgICBjb25zdCBpc0luY2x1ZGVLZXl3b3JkcyA9IG5vZGVTdHJpbmcudG9Mb2NhbGVMb3dlckNhc2UoKS50cmltKCkuaW5jbHVkZXModGhpcy5rZXlXb3Jkcyk7XG4gICAgICAgIGlmICh0aGlzLm9yaWdpbktleXdvcmRzPy5sZW5ndGggPiAwICYmIChpc1N0YXJ0V2l0aEhvdGtleSB8fCBpc0luY2x1ZGVLZXl3b3JkcykpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKHRoaXMuZWRpdG9yLCB7IGRpc3RhbmNlOiB0aGlzLm9yaWdpbktleXdvcmRzLmxlbmd0aCwgcmV2ZXJzZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB1cGRhdGVLZXl3b3JkcyhrZXl3b3Jkczogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9BY3RpdmVGaXJzdEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubGlzdEJveEF1dG9BY3RpdmVGaXJzdEl0ZW0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3JpZ2luS2V5d29yZHMgPSBrZXl3b3JkcztcbiAgICAgICAgdGhpcy5rZXlXb3JkcyA9IGtleXdvcmRzLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICB0aGlzLmJ1aWxkTWVudXMoKTtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGlzdEJveENoYW5nZShldmVudDogVGhlTGlzdGJveENoYW5nZUV2ZW50KSB7XG4gICAgICAgIGlmICghZXZlbnQub3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJdGVtU2VsZWN0aW9uKGV2ZW50Lm9wdGlvbi50aGVPcHRpb25WYWx1ZSBhcyBUaGVQbHVnaW5NZW51SXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjaGlsZCc6XG4gICAgICAgICAgICAgICAgY29uc3QgZHJvcGRvd25Db21wb25lbnQgPSB0aGlzLmZpbmREcm9wZG93blRyaWdnZXIoZXZlbnQub3B0aW9uLnBhcmVudE9wdGlvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25Db21wb25lbnQuc2hvdygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncGFyZW50JzpcbiAgICAgICAgICAgICAgICBjb25zdCBkcm9wZG93biA9IHRoaXMuZmluZERyb3Bkb3duVHJpZ2dlcihldmVudC5vcHRpb24pO1xuICAgICAgICAgICAgICAgIGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3R1cm4nOlxuICAgICAgICAgICAgICAgIFNjcm9sbFRvU2VydmljZS5zY3JvbGxUb0VsZW1lbnQoZXZlbnQub3B0aW9uLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5zY3JvbGxDb250YWluZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZERyb3Bkb3duVHJpZ2dlcihvcHRpb246IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUpIHtcbiAgICAgICAgY29uc3QgZHJvcGRvd24gPSB0aGlzLmRyb3Bkb3duVHJpZ2dlcnMuZmluZCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVbJ2VsZW1lbnRSZWYnXS5uYXRpdmVFbGVtZW50ID09PSBvcHRpb24uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGRyb3Bkb3duO1xuICAgIH1cblxuICAgIHRyYWNrQnlGbihpbmRleDogVGhlUGx1Z2luTWVudUl0ZW0sIGl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4gaXRlbT8ua2V5ID8/IGluZGV4O1xuICAgIH1cbn1cbiIsIkBpZiAodGhlRGlzcGxheVNlYXJjaCkge1xuICA8ZGl2IGNsYXNzPVwibWVudS1zZWFyY2ggcHgtNSBwdC01IHBiLTJcIj5cbiAgICA8dGh5LWlucHV0LXNlYXJjaFxuICAgICAgW3BsYWNlaG9sZGVyXT1cImxvY2FsZSgpLnNlYXJjaFwiXG4gICAgICB0aHlJY29uUG9zaXRpb249XCJhZnRlclwiXG4gICAgICBbKG5nTW9kZWwpXT1cImtleVdvcmRzXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUtleXdvcmRzKGtleVdvcmRzKVwiXG4gICAgPlxuICAgIDwvdGh5LWlucHV0LXNlYXJjaD5cbiAgPC9kaXY+XG59XG5cbkBpZiAoZ3JvdXBNZW51Lmxlbmd0aCA+IDApIHtcbiAgPGRpdlxuICAgIGNsYXNzPVwidGh5LWRyb3Bkb3duLW1lbnUgdGhlLXBsdWdpbi1tZW51LXNjcm9sbC1jb250YWluZXIgcGItMiBwdC0wXCJcbiAgICB0aGVMaXN0Qm94XG4gICAgW2tleWJvYXJkQ29udGFpbmVyXT1cImtleWJvYXJkQ29udGFpbmVyXCJcbiAgICBbYXV0b0FjdGl2ZUZpcnN0SXRlbV09XCJsaXN0Qm94QXV0b0FjdGl2ZUZpcnN0SXRlbVwiXG4gICAgKHRoZUxpc3Rib3hDaGFuZ2UpPVwibGlzdEJveENoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpY29uTWVudT8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiB0aGVMaXN0Ym94R3JvdXAgW2hvcml6b250YWxDb2x1bW5dPVwiNlwiIGNsYXNzPVwiaWNvbi1tZW51IGQtZmxleCBwbC01IHB5LTFcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBpY29uTWVudTsgdHJhY2sgdHJhY2tCeUZuKSB7XG4gICAgICAgICAgQGlmIChpdGVtLnR5cGUgPT09IFRoZVBsdWdpbk1lbnVJdGVtVHlwZS5pY29uKSB7XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCJcbiAgICAgICAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgICAgICAgIHRoZUxpc3Rib3hPcHRpb25cbiAgICAgICAgICAgICAgdGhlUHJldmVudERlZmF1bHRcbiAgICAgICAgICAgICAgW3RoZU9wdGlvblZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICBbdGh5QWN0aW9uSWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICBbdGh5VG9vbHRpcF09XCJpdGVtPy5uYW1lXCJcbiAgICAgICAgICAgICAgW3RoeURpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbdGhlT3B0aW9uRGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImxpc3RCb3hPcHRpb25Nb3VzZWVudGVyKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJsaXN0Qm94T3B0aW9uTW91c2VsZWF2ZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUl0ZW1TZWxlY3Rpb24oaXRlbSlcIlxuICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPHRoeS1kaXZpZGVyIGNsYXNzPVwibXktMlwiPjwvdGh5LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IHRoZUxpc3Rib3hHcm91cD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXBNZW51OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaXNNZW51SXRlbSAmJiAhKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDApICYmIGl0ZW0ua2V5ICE9PSAndGFibGUnXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJweS0wXCJcbiAgICAgICAgICAgIHRoeURyb3Bkb3duTWVudUl0ZW1cbiAgICAgICAgICAgIHRoZUxpc3Rib3hPcHRpb25cbiAgICAgICAgICAgIHRoZVByZXZlbnREZWZhdWx0XG4gICAgICAgICAgICBbdGhlT3B0aW9uVmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICBbdGh5RGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbdGhlT3B0aW9uRGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAobW91c2VlbnRlcik9XCJsaXN0Qm94T3B0aW9uTW91c2VlbnRlcigkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImxpc3RCb3hPcHRpb25Nb3VzZWxlYXZlKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUl0ZW1TZWxlY3Rpb24oaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaXRlbT8ubWVudUljb24pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaWNvbiBtci0yXCI+XG4gICAgICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJpdGVtLm1lbnVJY29uIHwgZ2V0TWVudUljb246IHNjZW5lS2V5XCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1jb250ZW50IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbS10aXRsZSB3LTEwMFwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pc01lbnVJdGVtICYmIGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDBcIiAjaGFzRXhwYW5kZWQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2Ryb3Bkb3duVHJpZ2dlcnNcbiAgICAgICAgICAgIGNsYXNzPVwicHktMFwiXG4gICAgICAgICAgICB0aHlUcmlnZ2VyPVwiaG92ZXJcIlxuICAgICAgICAgICAgdGh5RHJvcGRvd25NZW51SXRlbVxuICAgICAgICAgICAgdGhlTGlzdGJveE9wdGlvblxuICAgICAgICAgICAgdGhlUHJldmVudERlZmF1bHRcbiAgICAgICAgICAgIFt0aGVPcHRpb25WYWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgIFt0aHlEaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFt0aGVPcHRpb25EaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFt0aHlEcm9wZG93bl09XCJleHBhbmRcIlxuICAgICAgICAgICAgW3RoeVBvcG92ZXJPcHRpb25zXT1cImV4cGFuZFBvcG92ZXJPcHRpb25zXCJcbiAgICAgICAgICAgIFt0aHlQYW5lbENsYXNzXT1cInN1YlBhbmVsQ2xhc3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUl0ZW1TZWxlY3Rpb24oaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaXRlbT8ubWVudUljb24pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaWNvbiBtci0yXCI+XG4gICAgICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJpdGVtLm1lbnVJY29uIHwgZ2V0TWVudUljb246IHNjZW5lS2V5XCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1jb250ZW50IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbS10aXRsZSB3LTEwMFwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwidGV4dC1tdXRlZFwiIHRoeUljb25OYW1lPVwiYW5nbGUtcmlnaHRcIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDx0aHktZHJvcGRvd24tbWVudSAjZXhwYW5kPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlLXBsdWdpbi1tZW51LWNvbnRhaW5lciBleHBhbmQtbWVudVwiIHRoZUxpc3Rib3hHcm91cD5cbiAgICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBpdGVtLmNoaWxkcmVuOyB0cmFjayB0cmFja0J5Rm4pIHtcbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hpbGQudHlwZSA9PT0gVGhlUGx1Z2luTWVudUl0ZW1UeXBlLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB5LTBcIlxuICAgICAgICAgICAgICAgICAgICAgIHRoeURyb3Bkb3duTWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICB0aGVMaXN0Ym94T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgdGhlUHJldmVudERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICBbdGhlT3B0aW9uRGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RoeURpc2FibGVkXT1cImNoaWxkLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGhlT3B0aW9uVmFsdWVdPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImxpc3RCb3hPcHRpb25Nb3VzZWVudGVyKCRldmVudCwgY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJsaXN0Qm94T3B0aW9uTW91c2VsZWF2ZSgkZXZlbnQsIGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUl0ZW1TZWxlY3Rpb24oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2hpbGQ/Lm1lbnVJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1pY29uIG1yLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJjaGlsZC5tZW51SWNvbiB8IGdldE1lbnVJY29uOiBzY2VuZUtleVwiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtY29udGVudCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtLXRpdGxlIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGNoaWxkID09PSAnZGl2aWRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRoeS1kaXZpZGVyIGNsYXNzPVwibXktMlwiPjwvdGh5LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGh5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmlzTWVudUl0ZW0gJiYgaXRlbS5rZXkgPT09ICd0YWJsZSdcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjZHJvcGRvd25UcmlnZ2Vyc1xuICAgICAgICAgICAgY2xhc3M9XCJweS0wXCJcbiAgICAgICAgICAgIHRoeVBsYWNlbWVudD1cInJpZ2h0VG9wXCJcbiAgICAgICAgICAgIHRoeVRyaWdnZXI9XCJob3ZlclwiXG4gICAgICAgICAgICB0aHlEcm9wZG93bk1lbnVJdGVtXG4gICAgICAgICAgICB0aGVMaXN0Ym94T3B0aW9uXG4gICAgICAgICAgICB0aGVQcmV2ZW50RGVmYXVsdFxuICAgICAgICAgICAgW3RoZU9wdGlvblZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgW3RoZU9wdGlvbkRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3RoeURpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3RoeVBvcG92ZXJdPVwidGFibGVTZWxlY3RcIlxuICAgICAgICAgICAgW3RoeUNvbmZpZ109XCJ0YWJsZVNlbGVjdFBvcG92ZXJDb25maWdcIlxuICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwibGlzdEJveE9wdGlvbk1vdXNlZW50ZXIoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJsaXN0Qm94T3B0aW9uTW91c2VsZWF2ZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVJdGVtU2VsZWN0aW9uKGl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1pY29uIG1yLTJcIj5cbiAgICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJpdGVtLm1lbnVJY29uIHwgZ2V0TWVudUljb246IHNjZW5lS2V5XCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtY29udGVudCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0tdGl0bGUgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDx0aHktaWNvbiBjbGFzcz1cInRleHQtbXV0ZWRcIiB0aHlJY29uTmFtZT1cImFuZ2xlLXJpZ2h0XCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlU2VsZWN0PlxuICAgICAgICAgICAgICA8dGFibGUtc2VsZWN0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwbHVnaW4tbWVudS10YWJsZSB0aGUtdGFibGUtc2VsZWN0b3ItcGFuZWxcIlxuICAgICAgICAgICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgICAgICAgICBbYmVmb3JlSW5zZXJ0XT1cInJlbW92ZUJsb2NrXCJcbiAgICAgICAgICAgICAgPjwvdGFibGUtc2VsZWN0PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgQGlmICghaXRlbS5pc01lbnVJdGVtKSB7XG4gICAgICAgICAgPHRoeS1kcm9wZG93bi1tZW51LWdyb3VwIGNsYXNzPVwiZm9udC1zaXplLXNtXCIgW3RoeVRpdGxlXT1cIml0ZW0uZ3JvdXBOYW1lXCI+PC90aHktZHJvcGRvd24tbWVudS1ncm91cD5cbiAgICAgICAgfVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIDxkaXYgY2xhc3M9XCJlbXB0eSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8dGh5LWVtcHR5IFt0aHlNZXNzYWdlXT1cInRoeU1lc3NhZ2VcIj48L3RoeS1lbXB0eT5cbiAgPC9kaXY+XG59XG4iXX0=
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { insertTable } from '../../plugins/table/transforms/insert-table';
|
|
3
|
-
import { TableOptions } from '../../plugins/table/table.types';
|
|
4
|
-
import { refocus } from '../../utils';
|
|
5
|
-
import { NgFor, NgClass } from '@angular/common';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "ngx-tethys/popover";
|
|
8
|
-
export class TheTableSelect {
|
|
9
|
-
constructor(popoverRef) {
|
|
10
|
-
this.popoverRef = popoverRef;
|
|
11
|
-
this.beforeInsert = () => { };
|
|
12
|
-
this.tableData = new Array(10);
|
|
13
|
-
this.maxRowIndex = -1;
|
|
14
|
-
this.maxColIndex = -1;
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() { }
|
|
17
|
-
onSelectCells(rowIndex, colIndex) {
|
|
18
|
-
this.maxRowIndex = rowIndex;
|
|
19
|
-
this.maxColIndex = colIndex;
|
|
20
|
-
}
|
|
21
|
-
executeTable(event) {
|
|
22
|
-
event.preventDefault();
|
|
23
|
-
event.stopPropagation();
|
|
24
|
-
this.beforeInsert();
|
|
25
|
-
if (!this.editor.selection) {
|
|
26
|
-
refocus(this.editor);
|
|
27
|
-
}
|
|
28
|
-
const opts = new TableOptions(this.optionsParam);
|
|
29
|
-
insertTable(opts, this.editor, this.maxRowIndex + 1, this.maxColIndex + 1);
|
|
30
|
-
if (this.popoverRef) {
|
|
31
|
-
this.popoverRef.close();
|
|
32
|
-
this.maxColIndex = -1;
|
|
33
|
-
this.maxRowIndex = -1;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheTableSelect, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheTableSelect, isStandalone: true, selector: "table-select", inputs: { optionsParam: "optionsParam", editor: "editor", beforeInsert: "beforeInsert" }, ngImport: i0, template: "<div class=\"table-selector-container\">\n <div *ngFor=\"let item of tableData; let rowIndex = index\" class=\"selector-row\" (mousedown)=\"executeTable($event)\">\n <span\n *ngFor=\"let item of tableData; let colIndex = index\"\n [ngClass]=\"{ 'active-cell': rowIndex <= maxRowIndex && colIndex <= maxColIndex, 'selector-cell': true }\"\n (mouseenter)=\"onSelectCells(rowIndex, colIndex)\"\n >\n </span>\n </div>\n <span class=\"selector-text\">{{ maxRowIndex + 1 }} x {{ maxColIndex + 1 }}</span>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheTableSelect, decorators: [{
|
|
40
|
-
type: Component,
|
|
41
|
-
args: [{ selector: 'table-select', standalone: true, imports: [NgFor, NgClass], template: "<div class=\"table-selector-container\">\n <div *ngFor=\"let item of tableData; let rowIndex = index\" class=\"selector-row\" (mousedown)=\"executeTable($event)\">\n <span\n *ngFor=\"let item of tableData; let colIndex = index\"\n [ngClass]=\"{ 'active-cell': rowIndex <= maxRowIndex && colIndex <= maxColIndex, 'selector-cell': true }\"\n (mouseenter)=\"onSelectCells(rowIndex, colIndex)\"\n >\n </span>\n </div>\n <span class=\"selector-text\">{{ maxRowIndex + 1 }} x {{ maxColIndex + 1 }}</span>\n</div>\n" }]
|
|
42
|
-
}], ctorParameters: () => [{ type: i1.ThyPopoverRef }], propDecorators: { optionsParam: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}], editor: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], beforeInsert: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL3RhYmxlLXNlbGVjdC90YWJsZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdGFibGUtc2VsZWN0L3RhYmxlLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBUWpELE1BQU0sT0FBTyxjQUFjO0lBYXZCLFlBQW9CLFVBQXlDO1FBQXpDLGVBQVUsR0FBVixVQUFVLENBQStCO1FBUnBELGlCQUFZLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRWpDLGNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxQixnQkFBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFK0MsQ0FBQztJQUVqRSxRQUFRLEtBQVUsQ0FBQztJQUVuQixhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFpQjtRQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNMLENBQUM7K0dBcENRLGNBQWM7bUdBQWQsY0FBYyxrS0NkM0IseWhCQVdBLDRDRENjLEtBQUssbUhBQUUsT0FBTzs7NEZBRWYsY0FBYztrQkFOMUIsU0FBUzsrQkFDSSxjQUFjLGNBRVosSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztrRkFHaEIsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBpbnNlcnRUYWJsZSB9IGZyb20gJy4uLy4uL3BsdWdpbnMvdGFibGUvdHJhbnNmb3Jtcy9pbnNlcnQtdGFibGUnO1xuaW1wb3J0IHsgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9wbHVnaW5zL3RhYmxlL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IHJlZm9jdXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGFibGUtc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0ZvciwgTmdDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgVGhlVGFibGVTZWxlY3QgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIG9wdGlvbnNQYXJhbTogVGFibGVPcHRpb25zO1xuXG4gICAgQElucHV0KCkgZWRpdG9yOiBUaGVFZGl0b3I7XG5cbiAgICBASW5wdXQoKSBiZWZvcmVJbnNlcnQgPSAoKSA9PiB7fTtcblxuICAgIHRhYmxlRGF0YSA9IG5ldyBBcnJheSgxMCk7XG5cbiAgICBtYXhSb3dJbmRleCA9IC0xO1xuXG4gICAgbWF4Q29sSW5kZXggPSAtMTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUaGVUYWJsZVNlbGVjdD4pIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBvblNlbGVjdENlbGxzKHJvd0luZGV4LCBjb2xJbmRleCkge1xuICAgICAgICB0aGlzLm1heFJvd0luZGV4ID0gcm93SW5kZXg7XG4gICAgICAgIHRoaXMubWF4Q29sSW5kZXggPSBjb2xJbmRleDtcbiAgICB9XG5cbiAgICBleGVjdXRlVGFibGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuYmVmb3JlSW5zZXJ0KCk7XG4gICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZWZvY3VzKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRzID0gbmV3IFRhYmxlT3B0aW9ucyh0aGlzLm9wdGlvbnNQYXJhbSk7XG4gICAgICAgIGluc2VydFRhYmxlKG9wdHMsIHRoaXMuZWRpdG9yLCB0aGlzLm1heFJvd0luZGV4ICsgMSwgdGhpcy5tYXhDb2xJbmRleCArIDEpO1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMubWF4Q29sSW5kZXggPSAtMTtcbiAgICAgICAgICAgIHRoaXMubWF4Um93SW5kZXggPSAtMTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1zZWxlY3Rvci1jb250YWluZXJcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGE7IGxldCByb3dJbmRleCA9IGluZGV4XCIgY2xhc3M9XCJzZWxlY3Rvci1yb3dcIiAobW91c2Vkb3duKT1cImV4ZWN1dGVUYWJsZSgkZXZlbnQpXCI+XG4gICAgPHNwYW5cbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlRGF0YTsgbGV0IGNvbEluZGV4ID0gaW5kZXhcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlLWNlbGwnOiByb3dJbmRleCA8PSBtYXhSb3dJbmRleCAmJiBjb2xJbmRleCA8PSBtYXhDb2xJbmRleCwgJ3NlbGVjdG9yLWNlbGwnOiB0cnVlIH1cIlxuICAgICAgKG1vdXNlZW50ZXIpPVwib25TZWxlY3RDZWxscyhyb3dJbmRleCwgY29sSW5kZXgpXCJcbiAgICA+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJzZWxlY3Rvci10ZXh0XCI+e3sgbWF4Um93SW5kZXggKyAxIH19IHgge3sgbWF4Q29sSW5kZXggKyAxIH19PC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { NgStyle } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';
|
|
3
|
-
import { ElementKinds } from '../../constants';
|
|
4
|
-
import { ElementStylePipe } from '../../pipes';
|
|
5
|
-
import { TheDefaultElement } from '../element/element.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class TheTemplate {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.renderElement = (element) => {
|
|
10
|
-
if (element.type === ElementKinds.default) {
|
|
11
|
-
return this.paragraphTemplate;
|
|
12
|
-
}
|
|
13
|
-
if (element.type === ElementKinds.heading_1) {
|
|
14
|
-
return this.headingOneTemplate;
|
|
15
|
-
}
|
|
16
|
-
if (element.type === ElementKinds.heading_2) {
|
|
17
|
-
return this.headingTwoTemplate;
|
|
18
|
-
}
|
|
19
|
-
if (element.type === ElementKinds.heading_3) {
|
|
20
|
-
return this.headingThreeTemplate;
|
|
21
|
-
}
|
|
22
|
-
if (element.type === ElementKinds.heading_4) {
|
|
23
|
-
return this.headingFourTemplate;
|
|
24
|
-
}
|
|
25
|
-
if (element.type === ElementKinds.heading_5) {
|
|
26
|
-
return this.headingFiveTemplate;
|
|
27
|
-
}
|
|
28
|
-
if (element.type === ElementKinds.heading_6) {
|
|
29
|
-
return this.headingSixTemplate;
|
|
30
|
-
}
|
|
31
|
-
return null;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheTemplate, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheTemplate, isStandalone: true, selector: "the-template,[theTemplate]", viewQueries: [{ propertyName: "paragraphTemplate", first: true, predicate: ["paragraph"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingOneTemplate", first: true, predicate: ["headingOne"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingTwoTemplate", first: true, predicate: ["headingTwo"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingThreeTemplate", first: true, predicate: ["headingThree"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingFourTemplate", first: true, predicate: ["headingFour"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingFiveTemplate", first: true, predicate: ["headingFive"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingSixTemplate", first: true, predicate: ["headingSix"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-template #paragraph let-context=\"context\" let-viewContext=\"viewContext\">\n <div theDefaultElement [context]=\"context\" [viewContext]=\"viewContext\" [ngStyle]=\"context.element | elementStyle\"></div>\n</ng-template>\n<ng-template #headingOne let-context=\"context\" let-viewContext=\"viewContext\">\n <h1\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h1>\n</ng-template>\n<ng-template #headingTwo let-context=\"context\" let-viewContext=\"viewContext\">\n <h2\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h2>\n</ng-template>\n<ng-template #headingThree let-context=\"context\" let-viewContext=\"viewContext\">\n <h3\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h3>\n</ng-template>\n<ng-template #headingFour let-context=\"context\" let-viewContext=\"viewContext\">\n <h4\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h4>\n</ng-template>\n<ng-template #headingFive let-context=\"context\" let-viewContext=\"viewContext\">\n <h5\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h5>\n</ng-template>\n<ng-template #headingSix let-context=\"context\" let-viewContext=\"viewContext\">\n <h6\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h6>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: ElementStylePipe, name: "elementStyle" }, { kind: "component", type: TheDefaultElement, selector: "[theDefaultElement]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheTemplate, decorators: [{
|
|
38
|
-
type: Component,
|
|
39
|
-
args: [{ selector: 'the-template,[theTemplate]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgStyle, ElementStylePipe, TheDefaultElement], template: "<ng-template #paragraph let-context=\"context\" let-viewContext=\"viewContext\">\n <div theDefaultElement [context]=\"context\" [viewContext]=\"viewContext\" [ngStyle]=\"context.element | elementStyle\"></div>\n</ng-template>\n<ng-template #headingOne let-context=\"context\" let-viewContext=\"viewContext\">\n <h1\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h1>\n</ng-template>\n<ng-template #headingTwo let-context=\"context\" let-viewContext=\"viewContext\">\n <h2\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h2>\n</ng-template>\n<ng-template #headingThree let-context=\"context\" let-viewContext=\"viewContext\">\n <h3\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h3>\n</ng-template>\n<ng-template #headingFour let-context=\"context\" let-viewContext=\"viewContext\">\n <h4\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h4>\n</ng-template>\n<ng-template #headingFive let-context=\"context\" let-viewContext=\"viewContext\">\n <h5\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h5>\n</ng-template>\n<ng-template #headingSix let-context=\"context\" let-viewContext=\"viewContext\">\n <h6\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h6>\n</ng-template>\n" }]
|
|
40
|
-
}], propDecorators: { paragraphTemplate: [{
|
|
41
|
-
type: ViewChild,
|
|
42
|
-
args: ['paragraph', { read: TemplateRef, static: true }]
|
|
43
|
-
}], headingOneTemplate: [{
|
|
44
|
-
type: ViewChild,
|
|
45
|
-
args: ['headingOne', { read: TemplateRef, static: true }]
|
|
46
|
-
}], headingTwoTemplate: [{
|
|
47
|
-
type: ViewChild,
|
|
48
|
-
args: ['headingTwo', { read: TemplateRef, static: true }]
|
|
49
|
-
}], headingThreeTemplate: [{
|
|
50
|
-
type: ViewChild,
|
|
51
|
-
args: ['headingThree', { read: TemplateRef, static: true }]
|
|
52
|
-
}], headingFourTemplate: [{
|
|
53
|
-
type: ViewChild,
|
|
54
|
-
args: ['headingFour', { read: TemplateRef, static: true }]
|
|
55
|
-
}], headingFiveTemplate: [{
|
|
56
|
-
type: ViewChild,
|
|
57
|
-
args: ['headingFive', { read: TemplateRef, static: true }]
|
|
58
|
-
}], headingSixTemplate: [{
|
|
59
|
-
type: ViewChild,
|
|
60
|
-
args: ['headingSix', { read: TemplateRef, static: true }]
|
|
61
|
-
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdGVtcGxhdGUvdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdGVtcGxhdGUvdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQVNqRSxNQUFNLE9BQU8sV0FBVztJQVB4QjtRQTZCVyxrQkFBYSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1lBQ3hDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2xDLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDbkMsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ3JDLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDcEMsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ25DLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7S0FDTDsrR0E5Q1ksV0FBVzttR0FBWCxXQUFXLGlMQUNZLFdBQVcseUhBR1YsV0FBVyx5SEFHWCxXQUFXLDZIQUdULFdBQVcsMkhBR1osV0FBVywySEFHWCxXQUFXLHlIQUdaLFdBQVcsMkNDakNoRCxzN0RBeURBLDRDRDdDYyxPQUFPLHNFQUFFLGdCQUFnQixxREFBRSxpQkFBaUI7OzRGQUU3QyxXQUFXO2tCQVB2QixTQUFTOytCQUNJLDRCQUE0QixtQkFFckIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUM7OEJBSXZELGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTNELGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTVELGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTVELG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTlELG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTdELG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTdELGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRWxlbWVudFN0eWxlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7IFRoZURlZmF1bHRFbGVtZW50IH0gZnJvbSAnLi4vZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRlbXBsYXRlLFt0aGVUZW1wbGF0ZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nU3R5bGUsIEVsZW1lbnRTdHlsZVBpcGUsIFRoZURlZmF1bHRFbGVtZW50XVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUZW1wbGF0ZSB7XG4gICAgQFZpZXdDaGlsZCgncGFyYWdyYXBoJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcGFyYWdyYXBoVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdoZWFkaW5nT25lJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgaGVhZGluZ09uZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnaGVhZGluZ1R3bycsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIGhlYWRpbmdUd29UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2hlYWRpbmdUaHJlZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIGhlYWRpbmdUaHJlZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnaGVhZGluZ0ZvdXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBoZWFkaW5nRm91clRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnaGVhZGluZ0ZpdmUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBoZWFkaW5nRml2ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnaGVhZGluZ1NpeCcsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIGhlYWRpbmdTaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyByZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmFncmFwaFRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5oZWFkaW5nXzEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhlYWRpbmdPbmVUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMuaGVhZGluZ18yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oZWFkaW5nVHdvVGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmhlYWRpbmdfMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGVhZGluZ1RocmVlVGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmhlYWRpbmdfNCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGVhZGluZ0ZvdXJUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMuaGVhZGluZ181KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oZWFkaW5nRml2ZVRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5oZWFkaW5nXzYpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhlYWRpbmdTaXhUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xufVxuIiwiPG5nLXRlbXBsYXRlICNwYXJhZ3JhcGggbGV0LWNvbnRleHQ9XCJjb250ZXh0XCIgbGV0LXZpZXdDb250ZXh0PVwidmlld0NvbnRleHRcIj5cbiAgPGRpdiB0aGVEZWZhdWx0RWxlbWVudCBbY29udGV4dF09XCJjb250ZXh0XCIgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCIgW25nU3R5bGVdPVwiY29udGV4dC5lbGVtZW50IHwgZWxlbWVudFN0eWxlXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNoZWFkaW5nT25lIGxldC1jb250ZXh0PVwiY29udGV4dFwiIGxldC12aWV3Q29udGV4dD1cInZpZXdDb250ZXh0XCI+XG4gIDxoMVxuICAgIHRoZURlZmF1bHRFbGVtZW50XG4gICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCJcbiAgICBbYXR0ci5pZF09XCJjb250ZXh0LmVsZW1lbnQua2V5XCJcbiAgICBbbmdTdHlsZV09XCJjb250ZXh0LmVsZW1lbnQgfCBlbGVtZW50U3R5bGVcIlxuICA+PC9oMT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2hlYWRpbmdUd28gbGV0LWNvbnRleHQ9XCJjb250ZXh0XCIgbGV0LXZpZXdDb250ZXh0PVwidmlld0NvbnRleHRcIj5cbiAgPGgyXG4gICAgdGhlRGVmYXVsdEVsZW1lbnRcbiAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIlxuICAgIFthdHRyLmlkXT1cImNvbnRleHQuZWxlbWVudC5rZXlcIlxuICAgIFtuZ1N0eWxlXT1cImNvbnRleHQuZWxlbWVudCB8IGVsZW1lbnRTdHlsZVwiXG4gID48L2gyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGluZ1RocmVlIGxldC1jb250ZXh0PVwiY29udGV4dFwiIGxldC12aWV3Q29udGV4dD1cInZpZXdDb250ZXh0XCI+XG4gIDxoM1xuICAgIHRoZURlZmF1bHRFbGVtZW50XG4gICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCJcbiAgICBbYXR0ci5pZF09XCJjb250ZXh0LmVsZW1lbnQua2V5XCJcbiAgICBbbmdTdHlsZV09XCJjb250ZXh0LmVsZW1lbnQgfCBlbGVtZW50U3R5bGVcIlxuICA+PC9oMz5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2hlYWRpbmdGb3VyIGxldC1jb250ZXh0PVwiY29udGV4dFwiIGxldC12aWV3Q29udGV4dD1cInZpZXdDb250ZXh0XCI+XG4gIDxoNFxuICAgIHRoZURlZmF1bHRFbGVtZW50XG4gICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCJcbiAgICBbYXR0ci5pZF09XCJjb250ZXh0LmVsZW1lbnQua2V5XCJcbiAgICBbbmdTdHlsZV09XCJjb250ZXh0LmVsZW1lbnQgfCBlbGVtZW50U3R5bGVcIlxuICA+PC9oND5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2hlYWRpbmdGaXZlIGxldC1jb250ZXh0PVwiY29udGV4dFwiIGxldC12aWV3Q29udGV4dD1cInZpZXdDb250ZXh0XCI+XG4gIDxoNVxuICAgIHRoZURlZmF1bHRFbGVtZW50XG4gICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCJcbiAgICBbYXR0ci5pZF09XCJjb250ZXh0LmVsZW1lbnQua2V5XCJcbiAgICBbbmdTdHlsZV09XCJjb250ZXh0LmVsZW1lbnQgfCBlbGVtZW50U3R5bGVcIlxuICA+PC9oNT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2hlYWRpbmdTaXggbGV0LWNvbnRleHQ9XCJjb250ZXh0XCIgbGV0LXZpZXdDb250ZXh0PVwidmlld0NvbnRleHRcIj5cbiAgPGg2XG4gICAgdGhlRGVmYXVsdEVsZW1lbnRcbiAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIlxuICAgIFthdHRyLmlkXT1cImNvbnRleHQuZWxlbWVudC5rZXlcIlxuICAgIFtuZ1N0eWxlXT1cImNvbnRleHQuZWxlbWVudCB8IGVsZW1lbnRTdHlsZVwiXG4gID48L2g2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Component, inject, Renderer2 } from '@angular/core';
|
|
2
|
-
import { BaseTextComponent } from 'slate-angular';
|
|
3
|
-
import { MarkTypes } from '../../constants';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class TheText extends BaseTextComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
this.excludes = ['color', 'font-size', 'background-color', 'text'];
|
|
9
|
-
this.attributes = [];
|
|
10
|
-
this.renderer2 = inject(Renderer2);
|
|
11
|
-
}
|
|
12
|
-
onContextChange() {
|
|
13
|
-
super.onContextChange();
|
|
14
|
-
this.applyTextMark();
|
|
15
|
-
}
|
|
16
|
-
applyTextMark() {
|
|
17
|
-
this.attributes.forEach(attr => {
|
|
18
|
-
this.renderer2.removeAttribute(this.elementRef.nativeElement, attr);
|
|
19
|
-
});
|
|
20
|
-
this.attributes = [];
|
|
21
|
-
for (const key in this.text) {
|
|
22
|
-
if (Object.prototype.hasOwnProperty.call(this.text, key) && !this.excludes.includes(key) && !!this.text[key]) {
|
|
23
|
-
const attr = `the-${key}`;
|
|
24
|
-
this.renderer2.setAttribute(this.elementRef.nativeElement, attr, 'true');
|
|
25
|
-
this.attributes.push(attr);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
const fontSize = this.text[MarkTypes.fontSize];
|
|
29
|
-
this.renderer2.setAttribute(this.elementRef.nativeElement, `the-${MarkTypes.fontSize}`, fontSize ? fontSize : null);
|
|
30
|
-
if (this.text[MarkTypes.color]) {
|
|
31
|
-
this.renderer2.setStyle(this.elementRef.nativeElement, 'color', this.text[MarkTypes.color]);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
this.renderer2.removeStyle(this.elementRef.nativeElement, 'color');
|
|
35
|
-
}
|
|
36
|
-
if (this.text[MarkTypes.backgroundColor]) {
|
|
37
|
-
this.renderer2.setStyle(this.elementRef.nativeElement, 'background-color', this.text[MarkTypes.backgroundColor]);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.renderer2.removeStyle(this.elementRef.nativeElement, 'background-color');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheText, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheText, isStandalone: true, selector: "span[theText]", host: { attributes: { "data-slate-node": "text" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
|
|
45
|
-
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheText, decorators: [{
|
|
47
|
-
type: Component,
|
|
48
|
-
args: [{
|
|
49
|
-
selector: 'span[theText]',
|
|
50
|
-
template: ``,
|
|
51
|
-
host: {
|
|
52
|
-
'data-slate-node': 'text'
|
|
53
|
-
},
|
|
54
|
-
standalone: true
|
|
55
|
-
}]
|
|
56
|
-
}] });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90ZXh0L3RleHQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVU1QyxNQUFNLE9BQU8sT0FBUSxTQUFRLGlCQUFpQjtJQVI5Qzs7UUFTSSxhQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTlELGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFUixjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBbUN6QztJQWpDRyxlQUFlO1FBQ1gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNHLE1BQU0sSUFBSSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEgsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3JILENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNsRixDQUFDO0lBQ0wsQ0FBQzsrR0F2Q1EsT0FBTzttR0FBUCxPQUFPLHFKQU5OLEVBQUU7OzRGQU1ILE9BQU87a0JBUm5CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRTt3QkFDRixpQkFBaUIsRUFBRSxNQUFNO3FCQUM1QjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlVGV4dENvbXBvbmVudCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgTWFya1R5cGVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzcGFuW3RoZVRleHRdJyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgaG9zdDoge1xuICAgICAgICAnZGF0YS1zbGF0ZS1ub2RlJzogJ3RleHQnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoZVRleHQgZXh0ZW5kcyBCYXNlVGV4dENvbXBvbmVudCB7XG4gICAgZXhjbHVkZXMgPSBbJ2NvbG9yJywgJ2ZvbnQtc2l6ZScsICdiYWNrZ3JvdW5kLWNvbG9yJywgJ3RleHQnXTtcblxuICAgIGF0dHJpYnV0ZXMgPSBbXTtcblxuICAgIHByaXZhdGUgcmVuZGVyZXIyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuICAgICAgICB0aGlzLmFwcGx5VGV4dE1hcmsoKTtcbiAgICB9XG5cbiAgICBhcHBseVRleHRNYXJrKCkge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgYXR0cik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy50ZXh0KSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMudGV4dCwga2V5KSAmJiAhdGhpcy5leGNsdWRlcy5pbmNsdWRlcyhrZXkpICYmICEhdGhpcy50ZXh0W2tleV0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdHRyID0gYHRoZS0ke2tleX1gO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgYXR0ciwgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXMucHVzaChhdHRyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvbnRTaXplID0gdGhpcy50ZXh0W01hcmtUeXBlcy5mb250U2l6ZV07XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgYHRoZS0ke01hcmtUeXBlcy5mb250U2l6ZX1gLCBmb250U2l6ZSA/IGZvbnRTaXplIDogbnVsbCk7XG5cbiAgICAgICAgaWYgKHRoaXMudGV4dFtNYXJrVHlwZXMuY29sb3JdKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NvbG9yJywgdGhpcy50ZXh0W01hcmtUeXBlcy5jb2xvcl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlU3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xvcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGV4dFtNYXJrVHlwZXMuYmFja2dyb3VuZENvbG9yXSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy50ZXh0W01hcmtUeXBlcy5iYWNrZ3JvdW5kQ29sb3JdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZVN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYmFja2dyb3VuZC1jb2xvcicpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|