@worktile/theia 13.0.0-next.1 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/components/color-select/color-select.component.d.ts +32 -32
- package/components/color-select/color-select.component.scss +107 -107
- package/components/column-resize/column-resize-notifier.d.ts +35 -35
- package/components/column-resize/column-resize.directive.d.ts +26 -26
- package/components/column-resize/column-resize.module.d.ts +14 -14
- package/components/column-resize/event-dispatcher.d.ts +31 -31
- package/components/column-resize/overlay-handle.component.d.ts +33 -33
- package/components/column-resize/resize-ref.d.ts +25 -25
- package/components/column-resize/resizing.store.d.ts +28 -28
- package/components/column-resize/selectors.d.ts +3 -3
- package/components/contextmenu/contextmenu.component.d.ts +22 -22
- package/components/conversion-hint/conversion-hint.component.d.ts +18 -18
- package/components/conversion-hint/conversion-hint.component.scss +11 -11
- package/components/element/element.component.d.ts +7 -7
- package/components/inline-toolbar/inline-toolbar.component.d.ts +26 -26
- package/components/nav-split-line/nav-split-line.component.d.ts +13 -13
- package/components/table-select/table-select.component.d.ts +20 -20
- package/components/table-select/table-select.component.scss +35 -35
- package/components/template/template.component.d.ts +15 -15
- package/components/text/text.component.d.ts +14 -14
- package/components/toolbar/toolbar.component.d.ts +64 -64
- package/components/toolbar-dropdown/toolbar-dropdown.component.d.ts +33 -33
- package/components/toolbar-group/toolbar-group.component.d.ts +33 -33
- package/components/toolbar-group/toolbar-group.component.scss +17 -17
- package/components/toolbar-item/toolbar-item.component.d.ts +17 -17
- package/constants/auto-format-rules.d.ts +2 -2
- package/constants/code.d.ts +9 -9
- package/constants/color-select.d.ts +14 -14
- package/constants/default.d.ts +9 -9
- package/constants/error.d.ts +5 -5
- package/constants/index.d.ts +5 -5
- package/constants/node-types.d.ts +99 -99
- package/constants/selector.d.ts +2 -2
- package/constants/toolbar.d.ts +17 -17
- package/core/create-plugin.d.ts +2 -2
- package/core/create-toolbar.d.ts +5 -5
- package/core/index.d.ts +4 -4
- package/core/toolbar-item/base-toolbar-item.d.ts +29 -29
- package/core/utils/combine-plugins.d.ts +2 -2
- package/core/utils/flatten-deep-plugins.d.ts +6 -6
- package/core/utils/get-plugin-options.d.ts +2 -2
- package/core/utils/get-plugin.d.ts +2 -2
- package/core/utils/get-plugins.d.ts +2 -2
- package/core/utils/index.d.ts +10 -10
- package/core/utils/merge-array.d.ts +1 -1
- package/core/utils/merge-deep-plugins.d.ts +2 -2
- package/core/utils/merge-options.d.ts +2 -2
- package/core/utils/nested-structure-by-key.d.ts +2 -2
- package/core/utils/plugins-by-key.d.ts +2 -2
- package/core/with-theia.d.ts +4 -4
- package/custom-types.d.ts +131 -131
- package/editor.component.d.ts +92 -92
- package/editor.module.d.ts +100 -98
- package/esm2020/components/color-select/color-select.component.mjs +108 -108
- package/esm2020/components/column-resize/column-resize-notifier.mjs +31 -31
- package/esm2020/components/column-resize/column-resize.directive.mjs +98 -98
- package/esm2020/components/column-resize/column-resize.module.mjs +32 -32
- package/esm2020/components/column-resize/event-dispatcher.mjs +55 -55
- package/esm2020/components/column-resize/overlay-handle.component.mjs +139 -139
- package/esm2020/components/column-resize/resize-ref.mjs +25 -25
- package/esm2020/components/column-resize/resizing.store.mjs +154 -154
- package/esm2020/components/column-resize/selectors.mjs +4 -4
- package/esm2020/components/contextmenu/contextmenu.component.mjs +61 -61
- package/esm2020/components/conversion-hint/conversion-hint.component.mjs +54 -54
- package/esm2020/components/element/element.component.mjs +22 -22
- package/esm2020/components/inline-toolbar/inline-toolbar.component.mjs +125 -125
- package/esm2020/components/nav-split-line/nav-split-line.component.mjs +36 -36
- package/esm2020/components/table-select/table-select.component.mjs +49 -49
- package/esm2020/components/template/template.component.mjs +62 -62
- package/esm2020/components/text/text.component.mjs +57 -57
- package/esm2020/components/toolbar/toolbar.component.mjs +241 -241
- package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +128 -128
- package/esm2020/components/toolbar-group/toolbar-group.component.mjs +110 -110
- package/esm2020/components/toolbar-item/toolbar-item.component.mjs +60 -60
- package/esm2020/constants/auto-format-rules.mjs +166 -166
- package/esm2020/constants/code.mjs +88 -88
- package/esm2020/constants/color-select.mjs +61 -61
- package/esm2020/constants/default.mjs +9 -9
- package/esm2020/constants/error.mjs +7 -7
- package/esm2020/constants/index.mjs +5 -5
- package/esm2020/constants/node-types.mjs +132 -132
- package/esm2020/constants/selector.mjs +3 -3
- package/esm2020/constants/toolbar.mjs +69 -69
- package/esm2020/core/create-plugin.mjs +4 -4
- package/esm2020/core/create-toolbar.mjs +55 -55
- package/esm2020/core/index.mjs +4 -4
- package/esm2020/core/toolbar-item/base-toolbar-item.mjs +89 -89
- package/esm2020/core/utils/combine-plugins.mjs +9 -9
- package/esm2020/core/utils/flatten-deep-plugins.mjs +18 -18
- package/esm2020/core/utils/get-plugin-options.mjs +2 -2
- package/esm2020/core/utils/get-plugin.mjs +1 -1
- package/esm2020/core/utils/get-plugins.mjs +3 -3
- package/esm2020/core/utils/index.mjs +10 -10
- package/esm2020/core/utils/merge-array.mjs +17 -17
- package/esm2020/core/utils/merge-deep-plugins.mjs +13 -13
- package/esm2020/core/utils/merge-options.mjs +19 -19
- package/esm2020/core/utils/nested-structure-by-key.mjs +10 -10
- package/esm2020/core/utils/plugins-by-key.mjs +9 -9
- package/esm2020/core/with-theia.mjs +22 -22
- package/esm2020/custom-types.mjs +1 -1
- package/esm2020/editor.component.mjs +430 -430
- package/esm2020/editor.module.mjs +207 -201
- package/esm2020/interfaces/auto-format.mjs +1 -1
- package/esm2020/interfaces/editor.mjs +24 -24
- package/esm2020/interfaces/element.mjs +1 -1
- package/esm2020/interfaces/image.mjs +2 -2
- package/esm2020/interfaces/index.mjs +8 -8
- package/esm2020/interfaces/plugins/index.mjs +4 -4
- package/esm2020/interfaces/plugins/no-infer.mjs +1 -1
- package/esm2020/interfaces/plugins/plugin-key.mjs +39 -39
- package/esm2020/interfaces/plugins/plugins.mjs +1 -1
- package/esm2020/interfaces/plugins/with-override.mjs +1 -1
- package/esm2020/interfaces/reset-block-type-plugin-options.mjs +2 -2
- package/esm2020/interfaces/toolbar.mjs +11 -11
- package/esm2020/interfaces/upload.mjs +1 -1
- package/esm2020/interfaces/utility/index.mjs +3 -3
- package/esm2020/interfaces/utility/nested-structure-by-key.mjs +1 -1
- package/esm2020/interfaces/utility/override-by-key.mjs +1 -1
- package/esm2020/interfaces/utility/types.mjs +1 -1
- package/esm2020/interfaces/valid-children-types.mjs +35 -35
- package/esm2020/interfaces/view-base.mjs +21 -21
- package/esm2020/pipes.mjs +42 -42
- package/esm2020/plugins/align/align.editor.mjs +46 -46
- package/esm2020/plugins/align/align.plugin.mjs +63 -63
- package/esm2020/plugins/autoformat/autoformat.plugin.mjs +108 -108
- package/esm2020/plugins/autoformat/transforms/auto-format-block.mjs +14 -14
- package/esm2020/plugins/autoformat/transforms/auto-format-inline.mjs +77 -77
- package/esm2020/plugins/blockquote/blockquote.component.mjs +21 -21
- package/esm2020/plugins/blockquote/blockquote.editor.mjs +19 -19
- package/esm2020/plugins/blockquote/blockquote.plugin.mjs +70 -70
- package/esm2020/plugins/code/code.component.mjs +240 -240
- package/esm2020/plugins/code/code.editor.mjs +47 -47
- package/esm2020/plugins/code/code.plugin.mjs +41 -41
- package/esm2020/plugins/color/color.editor.mjs +43 -43
- package/esm2020/plugins/color/color.plugin.mjs +27 -27
- package/esm2020/plugins/color/toolbar-item.component.mjs +78 -78
- package/esm2020/plugins/common/auto-insert-data..mjs +76 -76
- package/esm2020/plugins/common/block-card.plugin.mjs +286 -286
- package/esm2020/plugins/common/get-fragment.plugin.mjs +23 -23
- package/esm2020/plugins/common/history.plugin.mjs +30 -30
- package/esm2020/plugins/common/move-selection.plugin.mjs +89 -89
- package/esm2020/plugins/common/remove-empty.plugin.mjs +59 -59
- package/esm2020/plugins/common/remove-void.plugin.mjs +56 -56
- package/esm2020/plugins/common/reset-type.plugin.mjs +34 -34
- package/esm2020/plugins/common/transforms.plugin.mjs +17 -17
- package/esm2020/plugins/deserializers/deserialize-html.plugin.mjs +38 -38
- package/esm2020/plugins/deserializers/deserialize-md.plugin.mjs +121 -121
- package/esm2020/plugins/font-size/font-size.editor.mjs +97 -97
- package/esm2020/plugins/heading/heading.editor.mjs +53 -53
- package/esm2020/plugins/heading/heading.plugin.mjs +84 -84
- package/esm2020/plugins/hr/hr.component.mjs +40 -40
- package/esm2020/plugins/hr/hr.editor.mjs +7 -7
- package/esm2020/plugins/hr/hr.plugin.mjs +41 -41
- package/esm2020/plugins/image/image.component.mjs +385 -365
- package/esm2020/plugins/image/image.editor.mjs +57 -57
- package/esm2020/plugins/image/image.plugin.mjs +56 -56
- package/esm2020/plugins/indent/indent.editor.mjs +70 -70
- package/esm2020/plugins/indent/indent.plugin.mjs +57 -57
- package/esm2020/plugins/indent/on-keydown-indent.mjs +53 -53
- package/esm2020/plugins/index.mjs +70 -70
- package/esm2020/plugins/inline-code/inline-code.component.mjs +21 -21
- package/esm2020/plugins/inline-code/inline-code.editor.mjs +47 -47
- package/esm2020/plugins/inline-code/inline-code.plugin.mjs +65 -65
- package/esm2020/plugins/link/edit/link-edit.component.mjs +105 -105
- package/esm2020/plugins/link/hover/link-hover.component.mjs +36 -36
- package/esm2020/plugins/link/link.component.mjs +162 -162
- package/esm2020/plugins/link/link.editor.mjs +66 -66
- package/esm2020/plugins/link/link.plugin.mjs +58 -58
- package/esm2020/plugins/link/link.types.mjs +12 -12
- package/esm2020/plugins/list/components/bulleted-list.component.mjs +32 -32
- package/esm2020/plugins/list/components/list-item.component.mjs +92 -92
- package/esm2020/plugins/list/components/numbered-list.component.mjs +38 -38
- package/esm2020/plugins/list/list.editor.mjs +125 -125
- package/esm2020/plugins/list/list.plugin.mjs +285 -285
- package/esm2020/plugins/list/normalizers/get-list-normalizer.mjs +39 -39
- package/esm2020/plugins/list/normalizers/normalize-list-item.mjs +18 -18
- package/esm2020/plugins/list/normalizers/normalize-no.mjs +42 -42
- package/esm2020/plugins/list/on-key-down-list.mjs +32 -32
- package/esm2020/plugins/list/queries/get-list-item-entry.mjs +27 -27
- package/esm2020/plugins/list/queries/get-list-item-sublist.mjs +12 -12
- package/esm2020/plugins/list/queries/get-list-types.mjs +5 -5
- package/esm2020/plugins/list/queries/get-start-list-item.mjs +26 -26
- package/esm2020/plugins/list/queries/has-list-in-list-item.mjs +27 -27
- package/esm2020/plugins/list/queries/is-in-list.mjs +5 -5
- package/esm2020/plugins/list/queries/is-list-nested.mjs +10 -10
- package/esm2020/plugins/list/queries/is-list.mjs +5 -5
- package/esm2020/plugins/list/queries/is-node-type-list.mjs +4 -4
- package/esm2020/plugins/list/queries/is-selection-at-list-item-start.mjs +12 -12
- package/esm2020/plugins/list/queries/is-selection-in-same-list-item.mjs +16 -16
- package/esm2020/plugins/list/queries/is-single-list-item.mjs +9 -9
- package/esm2020/plugins/list/transforms/insert-list-data.mjs +71 -71
- package/esm2020/plugins/list/transforms/insert-list-item.mjs +72 -72
- package/esm2020/plugins/list/transforms/move-list-item-down.mjs +41 -41
- package/esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs +42 -42
- package/esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs +29 -29
- package/esm2020/plugins/list/transforms/move-list-item-up.mjs +77 -77
- package/esm2020/plugins/list/transforms/unwrap-list.mjs +9 -9
- package/esm2020/plugins/list/types.mjs +2 -2
- package/esm2020/plugins/mark/mark.editor.mjs +27 -27
- package/esm2020/plugins/mark/mark.plugin.mjs +104 -104
- package/esm2020/plugins/node-id/node-id.plugin.mjs +77 -77
- package/esm2020/plugins/normalizers/insert-paragraph-nodes.mjs +27 -27
- package/esm2020/plugins/normalizers/remove-empty-nodes.mjs +17 -17
- package/esm2020/plugins/normalizers/trailing-node.plugin.mjs +32 -32
- package/esm2020/plugins/paint-format/paint-format.editor.mjs +122 -122
- package/esm2020/plugins/public-api.mjs +15 -15
- package/esm2020/plugins/quick-insert/components/quick-insert.component.mjs +95 -95
- package/esm2020/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.mjs +79 -79
- package/esm2020/plugins/quick-insert/quick-insert.editor.mjs +52 -52
- package/esm2020/plugins/quick-insert/quick-insert.plugin.mjs +73 -73
- package/esm2020/plugins/soft-break/soft-break.plugin.mjs +35 -35
- package/esm2020/plugins/soft-break/soft-break.types.mjs +1 -1
- package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +99 -99
- package/esm2020/plugins/table/components/row/row.component.mjs +46 -46
- package/esm2020/plugins/table/components/table.component.mjs +460 -460
- package/esm2020/plugins/table/components/td/td.component.mjs +696 -696
- package/esm2020/plugins/table/components/toolbar/table-options.component.mjs +70 -70
- package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +158 -158
- package/esm2020/plugins/table/table.editor.mjs +182 -182
- package/esm2020/plugins/table/table.plugin.mjs +426 -426
- package/esm2020/plugins/table/table.service.mjs +102 -102
- package/esm2020/plugins/table/table.store.mjs +483 -483
- package/esm2020/plugins/table/table.types.mjs +33 -33
- package/esm2020/plugins/table/toolbar-item.component.mjs +60 -60
- package/esm2020/plugins/table/transforms/clear-cell.mjs +14 -14
- package/esm2020/plugins/table/transforms/clear-table-node.mjs +27 -27
- package/esm2020/plugins/table/transforms/insert-column.mjs +57 -57
- package/esm2020/plugins/table/transforms/insert-row.mjs +42 -42
- package/esm2020/plugins/table/transforms/insert-table.mjs +14 -14
- package/esm2020/plugins/table/transforms/remove-column.mjs +51 -51
- package/esm2020/plugins/table/transforms/remove-row.mjs +50 -50
- package/esm2020/plugins/table/transforms/remove-table.mjs +49 -49
- package/esm2020/plugins/table/utils/add-columns.mjs +28 -28
- package/esm2020/plugins/table/utils/calc-anchor-position.mjs +24 -24
- package/esm2020/plugins/table/utils/calc-span.mjs +72 -72
- package/esm2020/plugins/table/utils/create-cell.mjs +19 -19
- package/esm2020/plugins/table/utils/create-row.mjs +12 -12
- package/esm2020/plugins/table/utils/create-table.mjs +13 -13
- package/esm2020/plugins/table/utils/get-base-height.mjs +22 -22
- package/esm2020/plugins/table/utils/get-select-cell-node.mjs +19 -19
- package/esm2020/plugins/table/utils/index.mjs +8 -8
- package/esm2020/plugins/table/utils/is-range-in-table.mjs +16 -16
- package/esm2020/plugins/table/utils/is-selection-in-table.mjs +11 -11
- package/esm2020/plugins/table/utils/is-virtual-key.mjs +12 -12
- package/esm2020/plugins/table/utils/merge-cell.mjs +90 -90
- package/esm2020/plugins/table/utils/next-path.mjs +5 -5
- package/esm2020/plugins/table/utils/normalize-table.mjs +30 -30
- package/esm2020/plugins/table/utils/remove-columns.mjs +23 -23
- package/esm2020/plugins/table/utils/set-menu-cell-invisibility.mjs +15 -15
- package/esm2020/plugins/table/utils/split-cell.mjs +31 -31
- package/esm2020/plugins/table/utils/table-position.mjs +242 -242
- package/esm2020/plugins/todo-item/todo-item.component.mjs +53 -53
- package/esm2020/plugins/todo-item/todo-item.editor.mjs +31 -31
- package/esm2020/plugins/todo-item/todo-item.plugin.mjs +78 -78
- package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +82 -82
- package/esm2020/plugins/vertical-align/vertical-align.editor.mjs +54 -54
- package/esm2020/public-api.mjs +23 -23
- package/esm2020/queries/anchor-block-entry.mjs +13 -13
- package/esm2020/queries/anchor-block.mjs +6 -6
- package/esm2020/queries/anchor-inline-entry.mjs +10 -10
- package/esm2020/queries/find-descendant.mjs +47 -47
- package/esm2020/queries/find-node.mjs +45 -45
- package/esm2020/queries/find-path.mjs +28 -28
- package/esm2020/queries/get-above-by-type.mjs +13 -13
- package/esm2020/queries/get-above.mjs +9 -9
- package/esm2020/queries/get-anchor-block-entry.mjs +8 -8
- package/esm2020/queries/get-block-above.mjs +10 -10
- package/esm2020/queries/get-block-card-above.mjs +10 -10
- package/esm2020/queries/get-block-card-cursor.mjs +5 -5
- package/esm2020/queries/get-container-blocks.mjs +11 -11
- package/esm2020/queries/get-directly-parent.mjs +11 -11
- package/esm2020/queries/get-insert-elements-path.mjs +43 -43
- package/esm2020/queries/get-last-child-path.mjs +9 -9
- package/esm2020/queries/get-last-node.mjs +17 -17
- package/esm2020/queries/get-next-sibling-nodes.mjs +17 -17
- package/esm2020/queries/get-node.mjs +10 -10
- package/esm2020/queries/get-nodes-by-type.mjs +15 -15
- package/esm2020/queries/get-nodes.mjs +7 -7
- package/esm2020/queries/get-parent.mjs +12 -12
- package/esm2020/queries/get-plain-text.mjs +16 -16
- package/esm2020/queries/get-plugin-by-toolbar.mjs +12 -12
- package/esm2020/queries/get-point-before.mjs +61 -61
- package/esm2020/queries/get-point-from-location.mjs +15 -15
- package/esm2020/queries/get-previous-path.mjs +9 -9
- package/esm2020/queries/get-rang-from-block-start.mjs +16 -16
- package/esm2020/queries/get-range-before.mjs +17 -17
- package/esm2020/queries/get-selection-marks.mjs +18 -18
- package/esm2020/queries/get-selection-nodes-by-type.mjs +29 -29
- package/esm2020/queries/get-text.mjs +9 -9
- package/esm2020/queries/get-toolbar-disabled.mjs +12 -12
- package/esm2020/queries/index.mjs +58 -58
- package/esm2020/queries/is-across-blocks.mjs +7 -7
- package/esm2020/queries/is-ancestor-empty.mjs +6 -6
- package/esm2020/queries/is-ancestor.mjs +3 -3
- package/esm2020/queries/is-block-above-empty.mjs +11 -11
- package/esm2020/queries/is-block-active.mjs +7 -7
- package/esm2020/queries/is-block-card-cursor.mjs +4 -4
- package/esm2020/queries/is-block-text-empty-after-selection.mjs +31 -31
- package/esm2020/queries/is-collapsed.mjs +7 -7
- package/esm2020/queries/is-contain-nested-type.mjs +28 -28
- package/esm2020/queries/is-container-type.mjs +2 -2
- package/esm2020/queries/is-descendant.mjs +3 -3
- package/esm2020/queries/is-empty-content.mjs +14 -14
- package/esm2020/queries/is-empty-paragraph-by-path.mjs +7 -7
- package/esm2020/queries/is-empty-paragraph.mjs +11 -11
- package/esm2020/queries/is-first-child.mjs +5 -5
- package/esm2020/queries/is-include-types.mjs +11 -11
- package/esm2020/queries/is-node-type-in.mjs +9 -9
- package/esm2020/queries/is-node-type.mjs +15 -15
- package/esm2020/queries/is-paragraph.mjs +9 -9
- package/esm2020/queries/is-point-at-root.mjs +2 -2
- package/esm2020/queries/is-range-across-blocks.mjs +22 -22
- package/esm2020/queries/is-range-at-root.mjs +3 -3
- package/esm2020/queries/is-start.mjs +6 -6
- package/esm2020/queries/some-node.mjs +9 -9
- package/esm2020/services/color-select.service.mjs +49 -49
- package/esm2020/services/context.service.mjs +58 -58
- package/esm2020/services/table-contextmenu.service.mjs +189 -189
- package/esm2020/services/toolbar.service.mjs +47 -47
- package/esm2020/shortcuts/index.mjs +5 -5
- package/esm2020/shortcuts/mark.mjs +24 -24
- package/esm2020/transforms/apply-deep-to-nodes.mjs +21 -21
- package/esm2020/transforms/clear-marks.mjs +23 -23
- package/esm2020/transforms/close-conversion-hint.mjs +8 -8
- package/esm2020/transforms/delete-element.mjs +11 -11
- package/esm2020/transforms/handle-continual-delete-backward.mjs +17 -17
- package/esm2020/transforms/handle-continual-insert-break.mjs +19 -19
- package/esm2020/transforms/index.mjs +18 -18
- package/esm2020/transforms/insert-elements.mjs +33 -33
- package/esm2020/transforms/insert-paragraph.mjs +6 -6
- package/esm2020/transforms/merge-deep-to-nodes.mjs +8 -8
- package/esm2020/transforms/move-children.mjs +21 -21
- package/esm2020/transforms/on-keydown-reset-block-type.mjs +22 -22
- package/esm2020/transforms/set-end-selection.mjs +10 -10
- package/esm2020/transforms/set-marks.mjs +9 -9
- package/esm2020/transforms/set-node.mjs +5 -5
- package/esm2020/transforms/split-node.mjs +31 -31
- package/esm2020/transforms/un-hang-range.mjs +11 -11
- package/esm2020/transforms/un-wrap.mjs +11 -11
- package/esm2020/transforms/unwrap-nodes-by-type.mjs +14 -14
- package/esm2020/utils/auto-focus.mjs +13 -13
- package/esm2020/utils/auto-scroll-view.mjs +24 -24
- package/esm2020/utils/cast-array.mjs +7 -7
- package/esm2020/utils/common.mjs +2 -2
- package/esm2020/utils/create-empty-paragraph.mjs +14 -14
- package/esm2020/utils/data-transform.mjs +48 -48
- package/esm2020/utils/dom.mjs +46 -46
- package/esm2020/utils/editor-uuid.mjs +8 -8
- package/esm2020/utils/fragment.mjs +65 -65
- package/esm2020/utils/get-all-nodes-by-type.mjs +5 -0
- package/esm2020/utils/get-editable-element-height.mjs +6 -6
- package/esm2020/utils/get-toolbar-class.mjs +6 -6
- package/esm2020/utils/id-creator.mjs +11 -11
- package/esm2020/utils/index.mjs +13 -13
- package/esm2020/utils/is-clean-empty-paragraph.mjs +36 -36
- package/esm2020/utils/is-inline.mjs +8 -8
- package/esm2020/utils/lodash.mjs +2 -2
- package/esm2020/utils/match.mjs +32 -32
- package/esm2020/utils/merge-element-options.mjs +19 -19
- package/esm2020/utils/weak-maps.mjs +3 -3
- package/esm2020/worktile-theia.mjs +4 -4
- package/fesm2015/worktile-theia.mjs +13131 -13097
- package/fesm2015/worktile-theia.mjs.map +1 -1
- package/fesm2020/worktile-theia.mjs +13150 -13120
- package/fesm2020/worktile-theia.mjs.map +1 -1
- package/interfaces/auto-format.d.ts +64 -64
- package/interfaces/editor.d.ts +146 -146
- package/interfaces/element.d.ts +9 -9
- package/interfaces/image.d.ts +25 -25
- package/interfaces/index.d.ts +8 -8
- package/interfaces/plugins/index.d.ts +4 -4
- package/interfaces/plugins/no-infer.d.ts +1 -1
- package/interfaces/plugins/plugin-key.d.ts +48 -48
- package/interfaces/plugins/plugins.d.ts +45 -45
- package/interfaces/plugins/with-override.d.ts +7 -7
- package/interfaces/reset-block-type-plugin-options.d.ts +23 -23
- package/interfaces/toolbar.d.ts +64 -64
- package/interfaces/upload.d.ts +11 -11
- package/interfaces/utility/index.d.ts +3 -3
- package/interfaces/utility/nested-structure-by-key.d.ts +3 -3
- package/interfaces/utility/override-by-key.d.ts +3 -3
- package/interfaces/utility/types.d.ts +1 -1
- package/interfaces/valid-children-types.d.ts +9 -9
- package/interfaces/view-base.d.ts +9 -9
- package/package.json +5 -4
- package/pipes.d.ts +16 -16
- package/plugins/align/align.editor.d.ts +7 -7
- package/plugins/align/align.plugin.d.ts +2 -2
- package/plugins/autoformat/autoformat.plugin.d.ts +6 -6
- package/plugins/autoformat/transforms/auto-format-block.d.ts +5 -5
- package/plugins/autoformat/transforms/auto-format-inline.d.ts +9 -9
- package/plugins/blockquote/blockquote.component.d.ts +11 -11
- package/plugins/blockquote/blockquote.editor.d.ts +4 -4
- package/plugins/blockquote/blockquote.plugin.d.ts +2 -2
- package/plugins/code/code.component.d.ts +65 -65
- package/plugins/code/code.editor.d.ts +8 -8
- package/plugins/code/code.plugin.d.ts +2 -2
- package/plugins/color/color.editor.d.ts +8 -8
- package/plugins/color/color.plugin.d.ts +1 -1
- package/plugins/color/toolbar-item.component.d.ts +16 -16
- package/plugins/common/auto-insert-data..d.ts +2 -2
- package/plugins/common/block-card.plugin.d.ts +2 -2
- package/plugins/common/get-fragment.plugin.d.ts +6 -6
- package/plugins/common/history.plugin.d.ts +9 -9
- package/plugins/common/move-selection.plugin.d.ts +2 -2
- package/plugins/common/remove-empty.plugin.d.ts +2 -2
- package/plugins/common/remove-void.plugin.d.ts +2 -2
- package/plugins/common/reset-type.plugin.d.ts +2 -2
- package/plugins/common/transforms.plugin.d.ts +8 -8
- package/plugins/deserializers/deserialize-html.plugin.d.ts +2 -2
- package/plugins/deserializers/deserialize-md.plugin.d.ts +2 -2
- package/plugins/font-size/font-size.editor.d.ts +10 -10
- package/plugins/heading/heading.editor.d.ts +9 -9
- package/plugins/heading/heading.plugin.d.ts +7 -7
- package/plugins/hr/hr.component.d.ts +12 -12
- package/plugins/hr/hr.editor.d.ts +4 -4
- package/plugins/hr/hr.plugin.d.ts +2 -2
- package/plugins/image/image.component.d.ts +77 -74
- package/plugins/image/image.editor.d.ts +12 -12
- package/plugins/image/image.plugin.d.ts +7 -7
- package/plugins/indent/indent.editor.d.ts +10 -10
- package/plugins/indent/indent.plugin.d.ts +8 -8
- package/plugins/indent/on-keydown-indent.d.ts +3 -3
- package/plugins/index.d.ts +1 -1
- package/plugins/inline-code/inline-code.component.d.ts +9 -9
- package/plugins/inline-code/inline-code.editor.d.ts +7 -7
- package/plugins/inline-code/inline-code.plugin.d.ts +2 -2
- package/plugins/link/edit/link-edit.component.d.ts +36 -36
- package/plugins/link/hover/link-hover.component.d.ts +15 -15
- package/plugins/link/link.component.d.ts +39 -39
- package/plugins/link/link.editor.d.ts +7 -7
- package/plugins/link/link.plugin.d.ts +2 -2
- package/plugins/link/link.types.d.ts +9 -9
- package/plugins/list/components/bulleted-list.component.d.ts +15 -15
- package/plugins/list/components/list-item.component.d.ts +20 -20
- package/plugins/list/components/numbered-list.component.d.ts +16 -16
- package/plugins/list/list.editor.d.ts +12 -12
- package/plugins/list/list.plugin.d.ts +3 -3
- package/plugins/list/normalizers/get-list-normalizer.d.ts +6 -6
- package/plugins/list/normalizers/normalize-list-item.d.ts +5 -5
- package/plugins/list/normalizers/normalize-no.d.ts +2 -2
- package/plugins/list/on-key-down-list.d.ts +2 -2
- package/plugins/list/queries/get-list-item-entry.d.ts +10 -10
- package/plugins/list/queries/get-list-item-sublist.d.ts +6 -6
- package/plugins/list/queries/get-list-types.d.ts +2 -2
- package/plugins/list/queries/get-start-list-item.d.ts +8 -8
- package/plugins/list/queries/has-list-in-list-item.d.ts +15 -15
- package/plugins/list/queries/is-in-list.d.ts +2 -2
- package/plugins/list/queries/is-list-nested.d.ts +5 -5
- package/plugins/list/queries/is-list.d.ts +2 -2
- package/plugins/list/queries/is-node-type-list.d.ts +2 -2
- package/plugins/list/queries/is-selection-at-list-item-start.d.ts +5 -5
- package/plugins/list/queries/is-selection-in-same-list-item.d.ts +5 -5
- package/plugins/list/queries/is-single-list-item.d.ts +5 -5
- package/plugins/list/transforms/insert-list-data.d.ts +12 -12
- package/plugins/list/transforms/insert-list-item.d.ts +5 -5
- package/plugins/list/transforms/move-list-item-down.d.ts +6 -6
- package/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.d.ts +20 -20
- package/plugins/list/transforms/move-list-item-sublist-items-to-list.d.ts +19 -19
- package/plugins/list/transforms/move-list-item-up.d.ts +10 -10
- package/plugins/list/transforms/unwrap-list.d.ts +2 -2
- package/plugins/list/types.d.ts +7 -7
- package/plugins/mark/mark.editor.d.ts +8 -8
- package/plugins/mark/mark.plugin.d.ts +3 -3
- package/plugins/node-id/node-id.plugin.d.ts +8 -8
- package/plugins/normalizers/insert-paragraph-nodes.d.ts +7 -7
- package/plugins/normalizers/remove-empty-nodes.d.ts +7 -7
- package/plugins/normalizers/trailing-node.plugin.d.ts +9 -9
- package/plugins/paint-format/paint-format.editor.d.ts +8 -8
- package/plugins/public-api.d.ts +15 -15
- package/plugins/quick-insert/components/quick-insert.component.d.ts +28 -28
- package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +28 -28
- package/plugins/quick-insert/quick-insert.editor.d.ts +7 -7
- package/plugins/quick-insert/quick-insert.plugin.d.ts +10 -10
- package/plugins/soft-break/soft-break.plugin.d.ts +5 -5
- package/plugins/soft-break/soft-break.types.d.ts +8 -8
- package/plugins/table/components/insert-mark/insert-mark.component.d.ts +24 -24
- package/plugins/table/components/row/row.component.d.ts +14 -14
- package/plugins/table/components/table.component.d.ts +79 -79
- package/plugins/table/components/td/td.component.d.ts +95 -95
- package/plugins/table/components/toolbar/table-options.component.d.ts +20 -20
- package/plugins/table/components/toolbar/table-toolbar.component.d.ts +38 -38
- package/plugins/table/table.editor.d.ts +25 -25
- package/plugins/table/table.plugin.d.ts +3 -3
- package/plugins/table/table.service.d.ts +30 -30
- package/plugins/table/table.store.d.ts +71 -71
- package/plugins/table/table.types.d.ts +67 -67
- package/plugins/table/toolbar-item.component.d.ts +17 -17
- package/plugins/table/transforms/clear-cell.d.ts +6 -6
- package/plugins/table/transforms/clear-table-node.d.ts +6 -6
- package/plugins/table/transforms/insert-column.d.ts +12 -12
- package/plugins/table/transforms/insert-row.d.ts +6 -6
- package/plugins/table/transforms/insert-table.d.ts +6 -6
- package/plugins/table/transforms/remove-column.d.ts +3 -3
- package/plugins/table/transforms/remove-row.d.ts +3 -3
- package/plugins/table/transforms/remove-table.d.ts +3 -3
- package/plugins/table/utils/add-columns.d.ts +2 -2
- package/plugins/table/utils/calc-anchor-position.d.ts +6 -6
- package/plugins/table/utils/calc-span.d.ts +11 -11
- package/plugins/table/utils/create-cell.d.ts +16 -16
- package/plugins/table/utils/create-row.d.ts +7 -7
- package/plugins/table/utils/create-table.d.ts +7 -7
- package/plugins/table/utils/get-base-height.d.ts +9 -9
- package/plugins/table/utils/get-select-cell-node.d.ts +7 -7
- package/plugins/table/utils/index.d.ts +7 -7
- package/plugins/table/utils/is-range-in-table.d.ts +6 -6
- package/plugins/table/utils/is-selection-in-table.d.ts +6 -6
- package/plugins/table/utils/is-virtual-key.d.ts +1 -1
- package/plugins/table/utils/merge-cell.d.ts +21 -21
- package/plugins/table/utils/next-path.d.ts +2 -2
- package/plugins/table/utils/normalize-table.d.ts +2 -2
- package/plugins/table/utils/remove-columns.d.ts +2 -2
- package/plugins/table/utils/set-menu-cell-invisibility.d.ts +3 -3
- package/plugins/table/utils/split-cell.d.ts +4 -4
- package/plugins/table/utils/table-position.d.ts +97 -97
- package/plugins/todo-item/todo-item.component.d.ts +21 -21
- package/plugins/todo-item/todo-item.editor.d.ts +5 -5
- package/plugins/todo-item/todo-item.plugin.d.ts +5 -5
- package/plugins/vertical-align/toolbar-item.component.d.ts +25 -25
- package/plugins/vertical-align/vertical-align.editor.d.ts +7 -7
- package/public-api.d.ts +20 -20
- package/queries/anchor-block-entry.d.ts +2 -2
- package/queries/anchor-block.d.ts +2 -2
- package/queries/anchor-inline-entry.d.ts +2 -2
- package/queries/find-descendant.d.ts +10 -10
- package/queries/find-node.d.ts +15 -15
- package/queries/find-path.d.ts +6 -6
- package/queries/get-above-by-type.d.ts +6 -6
- package/queries/get-above.d.ts +6 -6
- package/queries/get-anchor-block-entry.d.ts +2 -2
- package/queries/get-block-above.d.ts +7 -7
- package/queries/get-block-card-above.d.ts +7 -7
- package/queries/get-block-card-cursor.d.ts +2 -2
- package/queries/get-container-blocks.d.ts +2 -2
- package/queries/get-directly-parent.d.ts +2 -2
- package/queries/get-insert-elements-path.d.ts +7 -7
- package/queries/get-last-child-path.d.ts +6 -6
- package/queries/get-last-node.d.ts +2 -2
- package/queries/get-next-sibling-nodes.d.ts +7 -7
- package/queries/get-node.d.ts +2 -2
- package/queries/get-nodes-by-type.d.ts +6 -6
- package/queries/get-nodes.d.ts +4 -4
- package/queries/get-parent.d.ts +7 -7
- package/queries/get-plain-text.d.ts +6 -6
- package/queries/get-plugin-by-toolbar.d.ts +3 -3
- package/queries/get-point-before.d.ts +38 -38
- package/queries/get-point-from-location.d.ts +5 -5
- package/queries/get-previous-path.d.ts +2 -2
- package/queries/get-rang-from-block-start.d.ts +9 -9
- package/queries/get-range-before.d.ts +7 -7
- package/queries/get-selection-marks.d.ts +12 -12
- package/queries/get-selection-nodes-by-type.d.ts +3 -3
- package/queries/get-text.d.ts +6 -6
- package/queries/get-toolbar-disabled.d.ts +4 -4
- package/queries/index.d.ts +58 -58
- package/queries/is-across-blocks.d.ts +2 -2
- package/queries/is-ancestor-empty.d.ts +5 -5
- package/queries/is-ancestor.d.ts +2 -2
- package/queries/is-block-above-empty.d.ts +5 -5
- package/queries/is-block-active.d.ts +3 -3
- package/queries/is-block-card-cursor.d.ts +2 -2
- package/queries/is-block-text-empty-after-selection.d.ts +7 -7
- package/queries/is-collapsed.d.ts +6 -6
- package/queries/is-contain-nested-type.d.ts +2 -2
- package/queries/is-container-type.d.ts +2 -2
- package/queries/is-descendant.d.ts +2 -2
- package/queries/is-empty-content.d.ts +2 -2
- package/queries/is-empty-paragraph-by-path.d.ts +2 -2
- package/queries/is-empty-paragraph.d.ts +2 -2
- package/queries/is-first-child.d.ts +5 -5
- package/queries/is-include-types.d.ts +3 -3
- package/queries/is-node-type-in.d.ts +6 -6
- package/queries/is-node-type.d.ts +6 -6
- package/queries/is-paragraph.d.ts +2 -2
- package/queries/is-point-at-root.d.ts +2 -2
- package/queries/is-range-across-blocks.d.ts +8 -8
- package/queries/is-range-at-root.d.ts +2 -2
- package/queries/is-start.d.ts +5 -5
- package/queries/some-node.d.ts +7 -7
- package/services/color-select.service.d.ts +20 -20
- package/services/context.service.d.ts +49 -49
- package/services/table-contextmenu.service.d.ts +25 -25
- package/services/toolbar.service.d.ts +9 -9
- package/shortcuts/index.d.ts +2 -2
- package/shortcuts/mark.d.ts +2 -2
- package/transforms/apply-deep-to-nodes.d.ts +12 -12
- package/transforms/clear-marks.d.ts +2 -2
- package/transforms/close-conversion-hint.d.ts +2 -2
- package/transforms/delete-element.d.ts +2 -2
- package/transforms/handle-continual-delete-backward.d.ts +3 -3
- package/transforms/handle-continual-insert-break.d.ts +3 -3
- package/transforms/index.d.ts +18 -18
- package/transforms/insert-elements.d.ts +2 -2
- package/transforms/insert-paragraph.d.ts +2 -2
- package/transforms/merge-deep-to-nodes.d.ts +5 -5
- package/transforms/move-children.d.ts +24 -24
- package/transforms/on-keydown-reset-block-type.d.ts +3 -3
- package/transforms/set-end-selection.d.ts +2 -2
- package/transforms/set-marks.d.ts +12 -12
- package/transforms/set-node.d.ts +2 -2
- package/transforms/split-node.d.ts +3 -3
- package/transforms/un-hang-range.d.ts +10 -10
- package/transforms/un-wrap.d.ts +3 -3
- package/transforms/unwrap-nodes-by-type.d.ts +6 -6
- package/utils/auto-focus.d.ts +2 -2
- package/utils/auto-scroll-view.d.ts +6 -6
- package/utils/cast-array.d.ts +1 -1
- package/utils/common.d.ts +2 -2
- package/utils/create-empty-paragraph.d.ts +2 -2
- package/utils/data-transform.d.ts +6 -6
- package/utils/dom.d.ts +10 -10
- package/utils/editor-uuid.d.ts +3 -3
- package/utils/fragment.d.ts +10 -10
- package/utils/get-all-nodes-by-type.d.ts +3 -0
- package/utils/get-editable-element-height.d.ts +2 -2
- package/utils/get-toolbar-class.d.ts +2 -2
- package/utils/id-creator.d.ts +1 -1
- package/utils/index.d.ts +13 -13
- package/utils/is-clean-empty-paragraph.d.ts +9 -9
- package/utils/is-inline.d.ts +2 -2
- package/utils/lodash.d.ts +2 -2
- package/utils/match.d.ts +18 -18
- package/utils/merge-element-options.d.ts +2 -2
- package/utils/weak-maps.d.ts +5 -5
- package/worktile-theia.d.ts +5 -5
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
import { Component, Input, HostListener } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "ngx-tethys/popover";
|
|
4
|
-
import * as i2 from "ngx-tethys/action-menu";
|
|
5
|
-
import * as i3 from "ngx-tethys/icon";
|
|
6
|
-
import * as i4 from "@angular/common";
|
|
7
|
-
export class TheTableOptionsComponent {
|
|
8
|
-
constructor(popoverRef) {
|
|
9
|
-
this.popoverRef = popoverRef;
|
|
10
|
-
this.tableDropdownList = [
|
|
11
|
-
// {
|
|
12
|
-
// name: '表头行',
|
|
13
|
-
// key: 'headerRow'
|
|
14
|
-
// },
|
|
15
|
-
// {
|
|
16
|
-
// name: '表头列',
|
|
17
|
-
// key: 'headerColumn'
|
|
18
|
-
// },
|
|
19
|
-
{
|
|
20
|
-
name: '序号列',
|
|
21
|
-
key: 'numberedColumn'
|
|
22
|
-
}
|
|
23
|
-
];
|
|
24
|
-
}
|
|
25
|
-
get table() {
|
|
26
|
-
return this.tableStore && this.tableStore.getTableEntry(this.editor)[0];
|
|
27
|
-
}
|
|
28
|
-
handleDocumentMouseDown(event) {
|
|
29
|
-
if (this.popoverRef && !document.querySelector('.table-options-pannel').contains(event.target)) {
|
|
30
|
-
this.popoverRef.close();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
ngOnInit() {
|
|
34
|
-
this.setColumnOptions();
|
|
35
|
-
}
|
|
36
|
-
setColumnOptions() {
|
|
37
|
-
this.tableDropdownList.forEach(item => {
|
|
38
|
-
item.isActive = (this.table.options && this.table.options[item.key]) || false;
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
setTableOptions(event, option) {
|
|
42
|
-
event.preventDefault();
|
|
43
|
-
event.stopPropagation();
|
|
44
|
-
const currentOption = this.tableDropdownList.find(item => item.key === option.key);
|
|
45
|
-
currentOption.isActive = !option.isActive;
|
|
46
|
-
const tableOption = {};
|
|
47
|
-
tableOption[option.key] = currentOption.isActive || null;
|
|
48
|
-
this.tableStore.setTableOptions(this.editor, {
|
|
49
|
-
...this.table.options,
|
|
50
|
-
...tableOption
|
|
51
|
-
});
|
|
52
|
-
this.popoverRef.close();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
TheTableOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableOptionsComponent, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1
|
+
import { Component, Input, HostListener } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "ngx-tethys/popover";
|
|
4
|
+
import * as i2 from "ngx-tethys/action-menu";
|
|
5
|
+
import * as i3 from "ngx-tethys/icon";
|
|
6
|
+
import * as i4 from "@angular/common";
|
|
7
|
+
export class TheTableOptionsComponent {
|
|
8
|
+
constructor(popoverRef) {
|
|
9
|
+
this.popoverRef = popoverRef;
|
|
10
|
+
this.tableDropdownList = [
|
|
11
|
+
// {
|
|
12
|
+
// name: '表头行',
|
|
13
|
+
// key: 'headerRow'
|
|
14
|
+
// },
|
|
15
|
+
// {
|
|
16
|
+
// name: '表头列',
|
|
17
|
+
// key: 'headerColumn'
|
|
18
|
+
// },
|
|
19
|
+
{
|
|
20
|
+
name: '序号列',
|
|
21
|
+
key: 'numberedColumn'
|
|
22
|
+
}
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
get table() {
|
|
26
|
+
return this.tableStore && this.tableStore.getTableEntry(this.editor)[0];
|
|
27
|
+
}
|
|
28
|
+
handleDocumentMouseDown(event) {
|
|
29
|
+
if (this.popoverRef && !document.querySelector('.table-options-pannel').contains(event.target)) {
|
|
30
|
+
this.popoverRef.close();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
this.setColumnOptions();
|
|
35
|
+
}
|
|
36
|
+
setColumnOptions() {
|
|
37
|
+
this.tableDropdownList.forEach(item => {
|
|
38
|
+
item.isActive = (this.table.options && this.table.options[item.key]) || false;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
setTableOptions(event, option) {
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
event.stopPropagation();
|
|
44
|
+
const currentOption = this.tableDropdownList.find(item => item.key === option.key);
|
|
45
|
+
currentOption.isActive = !option.isActive;
|
|
46
|
+
const tableOption = {};
|
|
47
|
+
tableOption[option.key] = currentOption.isActive || null;
|
|
48
|
+
this.tableStore.setTableOptions(this.editor, {
|
|
49
|
+
...this.table.options,
|
|
50
|
+
...tableOption
|
|
51
|
+
});
|
|
52
|
+
this.popoverRef.close();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
TheTableOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableOptionsComponent, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
56
|
TheTableOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: TheTableOptionsComponent, selector: "the-table-options", inputs: { tableStore: "tableStore", editor: "editor" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" } }, ngImport: i0, template: `
|
|
57
57
|
<thy-action-menu class="table-drop-menu">
|
|
58
58
|
<ng-container *ngFor="let option of tableDropdownList">
|
|
@@ -64,11 +64,11 @@ TheTableOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
64
64
|
</a>
|
|
65
65
|
</ng-container>
|
|
66
66
|
</thy-action-menu>
|
|
67
|
-
`, isInline: true, components: [{ type: i2.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i3.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i2.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ThyActionMenuItemExtendIconDirective, selector: "[thyActionMenuItemExtendIcon]" }] });
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableOptionsComponent, decorators: [{
|
|
69
|
-
type: Component,
|
|
70
|
-
args: [{
|
|
71
|
-
selector: 'the-table-options',
|
|
67
|
+
`, isInline: true, components: [{ type: i2.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i3.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i2.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ThyActionMenuItemExtendIconDirective, selector: "[thyActionMenuItemExtendIcon]" }] });
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableOptionsComponent, decorators: [{
|
|
69
|
+
type: Component,
|
|
70
|
+
args: [{
|
|
71
|
+
selector: 'the-table-options',
|
|
72
72
|
template: `
|
|
73
73
|
<thy-action-menu class="table-drop-menu">
|
|
74
74
|
<ng-container *ngFor="let option of tableDropdownList">
|
|
@@ -80,14 +80,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
80
80
|
</a>
|
|
81
81
|
</ng-container>
|
|
82
82
|
</thy-action-menu>
|
|
83
|
-
`
|
|
84
|
-
}]
|
|
85
|
-
}], ctorParameters: function () { return [{ type: i1.ThyPopoverRef }]; }, propDecorators: { tableStore: [{
|
|
86
|
-
type: Input
|
|
87
|
-
}], editor: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], handleDocumentMouseDown: [{
|
|
90
|
-
type: HostListener,
|
|
91
|
-
args: ['document: mousedown', ['$event']]
|
|
92
|
-
}] } });
|
|
83
|
+
`
|
|
84
|
+
}]
|
|
85
|
+
}], ctorParameters: function () { return [{ type: i1.ThyPopoverRef }]; }, propDecorators: { tableStore: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], editor: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], handleDocumentMouseDown: [{
|
|
90
|
+
type: HostListener,
|
|
91
|
+
args: ['document: mousedown', ['$event']]
|
|
92
|
+
}] } });
|
|
93
93
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtb3B0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFxQnZFLE1BQU0sT0FBTyx3QkFBd0I7SUErQmpDLFlBQW9CLFVBQW1EO1FBQW5ELGVBQVUsR0FBVixVQUFVLENBQXlDO1FBdEJ2RSxzQkFBaUIsR0FBMEI7WUFDdkMsSUFBSTtZQUNKLG1CQUFtQjtZQUNuQix1QkFBdUI7WUFDdkIsS0FBSztZQUNMLElBQUk7WUFDSixtQkFBbUI7WUFDbkIsMEJBQTBCO1lBQzFCLEtBQUs7WUFDTDtnQkFDSSxJQUFJLEVBQUUsS0FBSztnQkFDWCxHQUFHLEVBQUUsZ0JBQWdCO2FBQ3hCO1NBQ0osQ0FBQztJQVN3RSxDQUFDO0lBMUIzRSxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFrQkQsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxFQUFFO1lBQzNHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBSUQsUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWlCLEVBQUUsTUFBMkI7UUFDMUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkYsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUNyQixHQUFHLFdBQVc7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDOztxSEF2RFEsd0JBQXdCO3lHQUF4Qix3QkFBd0Isb01BYnZCOzs7Ozs7Ozs7OztLQVdUOzJGQUVRLHdCQUF3QjtrQkFmcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0tBV1Q7aUJBQ0o7b0dBRVksVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBc0JOLHVCQUF1QjtzQkFEdEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi90YWJsZS5zdG9yZSc7XG5pbXBvcnQgeyBUYWJsZURyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vLi4vdGFibGUudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS10YWJsZS1vcHRpb25zJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8dGh5LWFjdGlvbi1tZW51IGNsYXNzPVwidGFibGUtZHJvcC1tZW51XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdGFibGVEcm9wZG93bkxpc3RcIj5cbiAgICAgICAgICAgICAgICA8YSB0aHlBY3Rpb25NZW51SXRlbSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKG1vdXNlZG93bik9XCJzZXRUYWJsZU9wdGlvbnMoJGV2ZW50LCBvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHRoeUFjdGlvbk1lbnVJdGVtTmFtZT57eyBvcHRpb24ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGh5QWN0aW9uTWVudUl0ZW1FeHRlbmRJY29uIGNsYXNzPVwidGV4dC1wcmltYXJ5XCIgKm5nSWY9XCJvcHRpb24uaXNBY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImNoZWNrXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoeS1hY3Rpb24tbWVudT5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIFRoZVRhYmxlT3B0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgdGFibGVTdG9yZTogVGFibGVTdG9yZTtcblxuICAgIEBJbnB1dCgpIGVkaXRvcjogRWRpdG9yO1xuXG4gICAgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZVN0b3JlICYmIHRoaXMudGFibGVTdG9yZS5nZXRUYWJsZUVudHJ5KHRoaXMuZWRpdG9yKVswXTtcbiAgICB9XG5cbiAgICB0YWJsZURyb3Bkb3duTGlzdDogVGFibGVEcm9wZG93bk9wdGlvbltdID0gW1xuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBuYW1lOiAn6KGo5aS06KGMJyxcbiAgICAgICAgLy8gICAgIGtleTogJ2hlYWRlclJvdydcbiAgICAgICAgLy8gfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgbmFtZTogJ+ihqOWktOWIlycsXG4gICAgICAgIC8vICAgICBrZXk6ICdoZWFkZXJDb2x1bW4nXG4gICAgICAgIC8vIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICfluo/lj7fliJcnLFxuICAgICAgICAgICAga2V5OiAnbnVtYmVyZWRDb2x1bW4nXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3ZlclJlZiAmJiAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRhYmxlLW9wdGlvbnMtcGFubmVsJykuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlVGFibGVPcHRpb25zQ29tcG9uZW50Pikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENvbHVtbk9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBzZXRDb2x1bW5PcHRpb25zKCkge1xuICAgICAgICB0aGlzLnRhYmxlRHJvcGRvd25MaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzQWN0aXZlID0gKHRoaXMudGFibGUub3B0aW9ucyAmJiB0aGlzLnRhYmxlLm9wdGlvbnNbaXRlbS5rZXldKSB8fCBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0VGFibGVPcHRpb25zKGV2ZW50OiBNb3VzZUV2ZW50LCBvcHRpb246IFRhYmxlRHJvcGRvd25PcHRpb24pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb24gPSB0aGlzLnRhYmxlRHJvcGRvd25MaXN0LmZpbmQoaXRlbSA9PiBpdGVtLmtleSA9PT0gb3B0aW9uLmtleSk7XG4gICAgICAgIGN1cnJlbnRPcHRpb24uaXNBY3RpdmUgPSAhb3B0aW9uLmlzQWN0aXZlO1xuICAgICAgICBjb25zdCB0YWJsZU9wdGlvbiA9IHt9O1xuICAgICAgICB0YWJsZU9wdGlvbltvcHRpb24ua2V5XSA9IGN1cnJlbnRPcHRpb24uaXNBY3RpdmUgfHwgbnVsbDtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldFRhYmxlT3B0aW9ucyh0aGlzLmVkaXRvciwge1xuICAgICAgICAgICAgLi4udGhpcy50YWJsZS5vcHRpb25zLFxuICAgICAgICAgICAgLi4udGFibGVPcHRpb25cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { BackgroundColors, TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../../../constants/color-select';
|
|
3
|
-
import { splitCell } from '../../utils/split-cell';
|
|
4
|
-
import { setCellMenuInvisibility } from '../../utils/set-menu-cell-invisibility';
|
|
5
|
-
import { TableEditor } from '../../table.editor';
|
|
6
|
-
import { TheTableOptionsComponent } from './table-options.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../../../services/color-select.service";
|
|
9
|
-
import * as i2 from "ngx-tethys/popover";
|
|
10
|
-
import * as i3 from "ngx-tethys/nav";
|
|
11
|
-
import * as i4 from "ngx-tethys/icon";
|
|
12
|
-
import * as i5 from "../../../../components/nav-split-line/nav-split-line.component";
|
|
13
|
-
import * as i6 from "ngx-tethys/button";
|
|
14
|
-
import * as i7 from "@angular/common";
|
|
15
|
-
import * as i8 from "ngx-tethys/tooltip";
|
|
16
|
-
export class TheTableToolbarComponent {
|
|
17
|
-
constructor(ngZone, colorSelectService, thyPopover, popoverRef) {
|
|
18
|
-
this.ngZone = ngZone;
|
|
19
|
-
this.colorSelectService = colorSelectService;
|
|
20
|
-
this.thyPopover = thyPopover;
|
|
21
|
-
this.popoverRef = popoverRef;
|
|
22
|
-
this.cellMenuList = [
|
|
23
|
-
{
|
|
24
|
-
key: 'merge-cells',
|
|
25
|
-
name: '合并单元格',
|
|
26
|
-
invisibility: false,
|
|
27
|
-
icon: 'table-merge-cells',
|
|
28
|
-
actionHandle: () => {
|
|
29
|
-
event.preventDefault();
|
|
30
|
-
event.stopPropagation();
|
|
31
|
-
this.tableStore.mergeCell(this.editor);
|
|
32
|
-
this.popoverRef.close();
|
|
33
|
-
this.tableStore.clearSelectedCells();
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
key: 'split-cells',
|
|
38
|
-
name: '拆分单元格',
|
|
39
|
-
invisibility: false,
|
|
40
|
-
icon: 'table-unmerge-cells',
|
|
41
|
-
actionHandle: () => {
|
|
42
|
-
event.preventDefault();
|
|
43
|
-
event.stopPropagation();
|
|
44
|
-
splitCell(this.editor);
|
|
45
|
-
this.popoverRef.close();
|
|
46
|
-
this.tableStore.clearSelectedCells();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
];
|
|
50
|
-
}
|
|
51
|
-
get editor() {
|
|
52
|
-
return this.tableStore && this.tableStore.editor;
|
|
53
|
-
}
|
|
54
|
-
get isShowSplitLine() {
|
|
55
|
-
return this.cellMenuList.filter(item => !item.invisibility).length > 1;
|
|
56
|
-
}
|
|
57
|
-
ngOnInit() {
|
|
58
|
-
this.deleteIcon = DeleteIcon[this.getDeleteIcon()];
|
|
59
|
-
this.getIconName(this.deleteIcon);
|
|
60
|
-
setCellMenuInvisibility(this.editor, this.cellMenuList, this.tableStore.selectedCells, this.isActiveSelect);
|
|
61
|
-
this.selectedColor = this.tableStore.getSelectedCellBackgroundColor();
|
|
62
|
-
}
|
|
63
|
-
ngOnDestroy() {
|
|
64
|
-
this.colorSelectService.closeColorSelect();
|
|
65
|
-
}
|
|
66
|
-
getIconName(key) {
|
|
67
|
-
switch (key) {
|
|
68
|
-
case 'trash':
|
|
69
|
-
this.iconName = '删除表格';
|
|
70
|
-
break;
|
|
71
|
-
case 'table-delete-columns':
|
|
72
|
-
this.iconName = '删除整列';
|
|
73
|
-
break;
|
|
74
|
-
case 'table-delete-rows':
|
|
75
|
-
this.iconName = '删除整行';
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
getDeleteIcon() {
|
|
80
|
-
if (this.tableStore.isSelectedTable) {
|
|
81
|
-
return DeleteIcon.trash;
|
|
82
|
-
}
|
|
83
|
-
if (this.tableStore.selectedRowsIndex.length > 0) {
|
|
84
|
-
return DeleteIcon['table-delete-rows'];
|
|
85
|
-
}
|
|
86
|
-
if (this.tableStore.selectedColumnsIndex.length > 0) {
|
|
87
|
-
return DeleteIcon['table-delete-columns'];
|
|
88
|
-
}
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
onDelete(event) {
|
|
92
|
-
event.preventDefault();
|
|
93
|
-
this.tableStore.removeColumnOrRows();
|
|
94
|
-
this.tableStore.clearDangerousCells();
|
|
95
|
-
this.tableStore.clearSelectedCells();
|
|
96
|
-
this.popoverRef.close();
|
|
97
|
-
}
|
|
98
|
-
onEnterDelete(event) {
|
|
99
|
-
this.tableStore.setDangerousCells();
|
|
100
|
-
}
|
|
101
|
-
onLeaveDelete(event) {
|
|
102
|
-
this.tableStore.clearDangerousCells();
|
|
103
|
-
}
|
|
104
|
-
openSelectColor(event) {
|
|
105
|
-
event.preventDefault();
|
|
106
|
-
event.stopPropagation();
|
|
107
|
-
const element = event.target.closest('.thy-icon-nav-link');
|
|
108
|
-
const isHeader = TableEditor.isActiveHeader(this.editor);
|
|
109
|
-
this.ngZone.run(() => {
|
|
110
|
-
this.colorSelectService.toggleColorSelect(element, this.selectedColor, BackgroundColors, {
|
|
111
|
-
perRowColorNumbers: 7,
|
|
112
|
-
rowOptions: { 1: '#bbb', 2: '#bbb' },
|
|
113
|
-
specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor
|
|
114
|
-
}, (newColor) => {
|
|
115
|
-
if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {
|
|
116
|
-
this.tableStore.setSelectedCellsBackgroundColor(null);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
this.tableStore.setSelectedCellsBackgroundColor(newColor);
|
|
120
|
-
}
|
|
121
|
-
this.selectedColor = newColor;
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
openTableOptionMenu(event) {
|
|
126
|
-
event.preventDefault();
|
|
127
|
-
event.stopPropagation();
|
|
128
|
-
this.thyPopover.open(TheTableOptionsComponent, {
|
|
129
|
-
origin: event.currentTarget,
|
|
130
|
-
initialState: {
|
|
131
|
-
tableStore: this.tableStore,
|
|
132
|
-
editor: this.editor
|
|
133
|
-
},
|
|
134
|
-
minWidth: 0,
|
|
135
|
-
insideClosable: false,
|
|
136
|
-
hasBackdrop: false,
|
|
137
|
-
placement: 'bottomLeft',
|
|
138
|
-
originActiveClass: 'table-options-active',
|
|
139
|
-
panelClass: 'table-options-pannel'
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
TheTableToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableToolbarComponent, deps: [{ token: i0.NgZone }, { token: i1.TheColorSelectService }, { token: i2.ThyPopover }, { token: i2.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
-
TheTableToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", isActiveSelect: "isActiveSelect" }, ngImport: i0, template: "<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"tableStore.isSelectedTable\"></nav-split-line>\n <button\n thyButton=\"default\"\n *ngIf=\"tableStore.isSelectedTable\"\n class=\"mr-2\"\n thySize=\"md\"\n class=\"table-options\"\n (mousedown)=\"openTableOptionMenu($event)\"\n >\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon thyIconName=\"caret-down\"></thy-icon>\n </button>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5.NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }, { type: i6.ThyButtonComponent, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableToolbarComponent, decorators: [{
|
|
146
|
-
type: Component,
|
|
147
|
-
args: [{ selector: 'the-table-toolbar', template: "<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"tableStore.isSelectedTable\"></nav-split-line>\n <button\n thyButton=\"default\"\n *ngIf=\"tableStore.isSelectedTable\"\n class=\"mr-2\"\n thySize=\"md\"\n class=\"table-options\"\n (mousedown)=\"openTableOptionMenu($event)\"\n >\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon thyIconName=\"caret-down\"></thy-icon>\n </button>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n" }]
|
|
148
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.TheColorSelectService }, { type: i2.ThyPopover }, { type: i2.ThyPopoverRef }]; }, propDecorators: { tableStore: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}], isActiveSelect: [{
|
|
151
|
-
type: Input
|
|
152
|
-
}] } });
|
|
153
|
-
export var DeleteIcon;
|
|
154
|
-
(function (DeleteIcon) {
|
|
155
|
-
DeleteIcon[DeleteIcon["table-delete-rows"] = 0] = "table-delete-rows";
|
|
156
|
-
DeleteIcon[DeleteIcon["table-delete-columns"] = 1] = "table-delete-columns";
|
|
157
|
-
DeleteIcon[DeleteIcon["trash"] = 2] = "trash";
|
|
158
|
-
})(DeleteIcon || (DeleteIcon = {}));
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { BackgroundColors, TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../../../constants/color-select';
|
|
3
|
+
import { splitCell } from '../../utils/split-cell';
|
|
4
|
+
import { setCellMenuInvisibility } from '../../utils/set-menu-cell-invisibility';
|
|
5
|
+
import { TableEditor } from '../../table.editor';
|
|
6
|
+
import { TheTableOptionsComponent } from './table-options.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../../../services/color-select.service";
|
|
9
|
+
import * as i2 from "ngx-tethys/popover";
|
|
10
|
+
import * as i3 from "ngx-tethys/nav";
|
|
11
|
+
import * as i4 from "ngx-tethys/icon";
|
|
12
|
+
import * as i5 from "../../../../components/nav-split-line/nav-split-line.component";
|
|
13
|
+
import * as i6 from "ngx-tethys/button";
|
|
14
|
+
import * as i7 from "@angular/common";
|
|
15
|
+
import * as i8 from "ngx-tethys/tooltip";
|
|
16
|
+
export class TheTableToolbarComponent {
|
|
17
|
+
constructor(ngZone, colorSelectService, thyPopover, popoverRef) {
|
|
18
|
+
this.ngZone = ngZone;
|
|
19
|
+
this.colorSelectService = colorSelectService;
|
|
20
|
+
this.thyPopover = thyPopover;
|
|
21
|
+
this.popoverRef = popoverRef;
|
|
22
|
+
this.cellMenuList = [
|
|
23
|
+
{
|
|
24
|
+
key: 'merge-cells',
|
|
25
|
+
name: '合并单元格',
|
|
26
|
+
invisibility: false,
|
|
27
|
+
icon: 'table-merge-cells',
|
|
28
|
+
actionHandle: () => {
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
event.stopPropagation();
|
|
31
|
+
this.tableStore.mergeCell(this.editor);
|
|
32
|
+
this.popoverRef.close();
|
|
33
|
+
this.tableStore.clearSelectedCells();
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: 'split-cells',
|
|
38
|
+
name: '拆分单元格',
|
|
39
|
+
invisibility: false,
|
|
40
|
+
icon: 'table-unmerge-cells',
|
|
41
|
+
actionHandle: () => {
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
event.stopPropagation();
|
|
44
|
+
splitCell(this.editor);
|
|
45
|
+
this.popoverRef.close();
|
|
46
|
+
this.tableStore.clearSelectedCells();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
get editor() {
|
|
52
|
+
return this.tableStore && this.tableStore.editor;
|
|
53
|
+
}
|
|
54
|
+
get isShowSplitLine() {
|
|
55
|
+
return this.cellMenuList.filter(item => !item.invisibility).length > 1;
|
|
56
|
+
}
|
|
57
|
+
ngOnInit() {
|
|
58
|
+
this.deleteIcon = DeleteIcon[this.getDeleteIcon()];
|
|
59
|
+
this.getIconName(this.deleteIcon);
|
|
60
|
+
setCellMenuInvisibility(this.editor, this.cellMenuList, this.tableStore.selectedCells, this.isActiveSelect);
|
|
61
|
+
this.selectedColor = this.tableStore.getSelectedCellBackgroundColor();
|
|
62
|
+
}
|
|
63
|
+
ngOnDestroy() {
|
|
64
|
+
this.colorSelectService.closeColorSelect();
|
|
65
|
+
}
|
|
66
|
+
getIconName(key) {
|
|
67
|
+
switch (key) {
|
|
68
|
+
case 'trash':
|
|
69
|
+
this.iconName = '删除表格';
|
|
70
|
+
break;
|
|
71
|
+
case 'table-delete-columns':
|
|
72
|
+
this.iconName = '删除整列';
|
|
73
|
+
break;
|
|
74
|
+
case 'table-delete-rows':
|
|
75
|
+
this.iconName = '删除整行';
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
getDeleteIcon() {
|
|
80
|
+
if (this.tableStore.isSelectedTable) {
|
|
81
|
+
return DeleteIcon.trash;
|
|
82
|
+
}
|
|
83
|
+
if (this.tableStore.selectedRowsIndex.length > 0) {
|
|
84
|
+
return DeleteIcon['table-delete-rows'];
|
|
85
|
+
}
|
|
86
|
+
if (this.tableStore.selectedColumnsIndex.length > 0) {
|
|
87
|
+
return DeleteIcon['table-delete-columns'];
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
onDelete(event) {
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
this.tableStore.removeColumnOrRows();
|
|
94
|
+
this.tableStore.clearDangerousCells();
|
|
95
|
+
this.tableStore.clearSelectedCells();
|
|
96
|
+
this.popoverRef.close();
|
|
97
|
+
}
|
|
98
|
+
onEnterDelete(event) {
|
|
99
|
+
this.tableStore.setDangerousCells();
|
|
100
|
+
}
|
|
101
|
+
onLeaveDelete(event) {
|
|
102
|
+
this.tableStore.clearDangerousCells();
|
|
103
|
+
}
|
|
104
|
+
openSelectColor(event) {
|
|
105
|
+
event.preventDefault();
|
|
106
|
+
event.stopPropagation();
|
|
107
|
+
const element = event.target.closest('.thy-icon-nav-link');
|
|
108
|
+
const isHeader = TableEditor.isActiveHeader(this.editor);
|
|
109
|
+
this.ngZone.run(() => {
|
|
110
|
+
this.colorSelectService.toggleColorSelect(element, this.selectedColor, BackgroundColors, {
|
|
111
|
+
perRowColorNumbers: 7,
|
|
112
|
+
rowOptions: { 1: '#bbb', 2: '#bbb' },
|
|
113
|
+
specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor
|
|
114
|
+
}, (newColor) => {
|
|
115
|
+
if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {
|
|
116
|
+
this.tableStore.setSelectedCellsBackgroundColor(null);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.tableStore.setSelectedCellsBackgroundColor(newColor);
|
|
120
|
+
}
|
|
121
|
+
this.selectedColor = newColor;
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
openTableOptionMenu(event) {
|
|
126
|
+
event.preventDefault();
|
|
127
|
+
event.stopPropagation();
|
|
128
|
+
this.thyPopover.open(TheTableOptionsComponent, {
|
|
129
|
+
origin: event.currentTarget,
|
|
130
|
+
initialState: {
|
|
131
|
+
tableStore: this.tableStore,
|
|
132
|
+
editor: this.editor
|
|
133
|
+
},
|
|
134
|
+
minWidth: 0,
|
|
135
|
+
insideClosable: false,
|
|
136
|
+
hasBackdrop: false,
|
|
137
|
+
placement: 'bottomLeft',
|
|
138
|
+
originActiveClass: 'table-options-active',
|
|
139
|
+
panelClass: 'table-options-pannel'
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
TheTableToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableToolbarComponent, deps: [{ token: i0.NgZone }, { token: i1.TheColorSelectService }, { token: i2.ThyPopover }, { token: i2.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
+
TheTableToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", isActiveSelect: "isActiveSelect" }, ngImport: i0, template: "<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"tableStore.isSelectedTable\"></nav-split-line>\n <button\n thyButton=\"default\"\n *ngIf=\"tableStore.isSelectedTable\"\n class=\"mr-2\"\n thySize=\"md\"\n class=\"table-options\"\n (mousedown)=\"openTableOptionMenu($event)\"\n >\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon thyIconName=\"caret-down\"></thy-icon>\n </button>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5.NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }, { type: i6.ThyButtonComponent, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thyBlock"] }], directives: [{ type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableToolbarComponent, decorators: [{
|
|
146
|
+
type: Component,
|
|
147
|
+
args: [{ selector: 'the-table-toolbar', template: "<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"tableStore.isSelectedTable\"></nav-split-line>\n <button\n thyButton=\"default\"\n *ngIf=\"tableStore.isSelectedTable\"\n class=\"mr-2\"\n thySize=\"md\"\n class=\"table-options\"\n (mousedown)=\"openTableOptionMenu($event)\"\n >\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon thyIconName=\"caret-down\"></thy-icon>\n </button>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n" }]
|
|
148
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.TheColorSelectService }, { type: i2.ThyPopover }, { type: i2.ThyPopoverRef }]; }, propDecorators: { tableStore: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], isActiveSelect: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}] } });
|
|
153
|
+
export var DeleteIcon;
|
|
154
|
+
(function (DeleteIcon) {
|
|
155
|
+
DeleteIcon[DeleteIcon["table-delete-rows"] = 0] = "table-delete-rows";
|
|
156
|
+
DeleteIcon[DeleteIcon["table-delete-columns"] = 1] = "table-delete-columns";
|
|
157
|
+
DeleteIcon[DeleteIcon["trash"] = 2] = "trash";
|
|
158
|
+
})(DeleteIcon || (DeleteIcon = {}));
|
|
159
159
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFJNUUsT0FBTyxFQUFhLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQU1yRSxNQUFNLE9BQU8sd0JBQXdCO0lBZ0RqQyxZQUNZLE1BQWMsRUFDZCxrQkFBeUMsRUFDekMsVUFBc0IsRUFDdEIsVUFBbUQ7UUFIbkQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUF5QztRQXJDL0QsaUJBQVksR0FBaUI7WUFDekI7Z0JBQ0ksR0FBRyxFQUFFLGFBQWE7Z0JBQ2xCLElBQUksRUFBRSxPQUFPO2dCQUNiLFlBQVksRUFBRSxLQUFLO2dCQUNuQixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixZQUFZLEVBQUUsR0FBRyxFQUFFO29CQUNmLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDekMsQ0FBQzthQUNKO1lBQ0Q7Z0JBQ0ksR0FBRyxFQUFFLGFBQWE7Z0JBQ2xCLElBQUksRUFBRSxPQUFPO2dCQUNiLFlBQVksRUFBRSxLQUFLO2dCQUNuQixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixZQUFZLEVBQUUsR0FBRyxFQUFFO29CQUNmLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN4QixTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3pDLENBQUM7YUFDSjtTQUNKLENBQUM7SUFXQyxDQUFDO0lBMUNKLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUNyRCxDQUFDO0lBK0JELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFTRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1RyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBVztRQUNuQixRQUFRLEdBQUcsRUFBRTtZQUNULEtBQUssT0FBTztnQkFDUixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztnQkFDdkIsTUFBTTtZQUNWLEtBQUssc0JBQXNCO2dCQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztnQkFDdkIsTUFBTTtZQUNWLEtBQUssbUJBQW1CO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztnQkFDdkIsTUFBTTtTQUNiO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFO1lBQ2pDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztTQUMzQjtRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlDLE9BQU8sVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRCxPQUFPLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFpQjtRQUN0QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWlCO1FBQzdCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUUsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FDckMsT0FBc0IsRUFDdEIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsZ0JBQWdCLEVBQ2hCO2dCQUNJLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3JCLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtnQkFDcEMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjthQUMvRSxFQUNELENBQUMsUUFBbUIsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsUUFBUSxLQUFLLDBCQUEwQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLHNCQUFzQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQzdHLElBQUksQ0FBQyxVQUFVLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3pEO3FCQUFNO29CQUNILElBQUksQ0FBQyxVQUFVLENBQUMsK0JBQStCLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzdEO2dCQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1lBQ2xDLENBQUMsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBWTtRQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQzNDLE1BQU0sRUFBRSxLQUFLLENBQUMsYUFBNEI7WUFDMUMsWUFBWSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3RCO1lBQ0QsUUFBUSxFQUFFLENBQUM7WUFDWCxjQUFjLEVBQUUsS0FBSztZQUNyQixXQUFXLEVBQUUsS0FBSztZQUNsQixTQUFTLEVBQUUsWUFBWTtZQUN2QixpQkFBaUIsRUFBRSxzQkFBc0I7WUFDekMsVUFBVSxFQUFFLHNCQUFzQjtTQUNyQyxDQUFDLENBQUM7SUFDUCxDQUFDOztxSEF4SlEsd0JBQXdCO3lHQUF4Qix3QkFBd0IsaUlDaEJyQyx5K0NBbUNBOzJGRG5CYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0ksbUJBQW1CO3NMQVVwQixVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7O0FBa0pWLE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDbEIscUVBQW1CLENBQUE7SUFDbkIsMkVBQXNCLENBQUE7SUFDdEIsNkNBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxVQUFVLEtBQVYsVUFBVSxRQUlyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IENvbG9yVHlwZSwgQmFja2dyb3VuZENvbG9ycywgVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3IsIFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdGFudHMvY29sb3Itc2VsZWN0JztcbmltcG9ydCB7IFRoZUNvbG9yU2VsZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2NvbG9yLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IHNwbGl0Q2VsbCB9IGZyb20gJy4uLy4uL3V0aWxzL3NwbGl0LWNlbGwnO1xuaW1wb3J0IHsgc2V0Q2VsbE1lbnVJbnZpc2liaWxpdHkgfSBmcm9tICcuLi8uLi91dGlscy9zZXQtbWVudS1jZWxsLWludmlzaWJpbGl0eSc7XG5pbXBvcnQgeyBNZW51RW50aXR5IH0gZnJvbSAnLi4vLi4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi8uLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgVGhlVGFibGVPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1vcHRpb25zLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRhYmxlLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAndGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlVGFibGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHNlbGVjdGVkQ29sb3I6IHN0cmluZztcblxuICAgIGRlbGV0ZUljb246IHN0cmluZztcblxuICAgIGljb25OYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlO1xuXG4gICAgQElucHV0KCkgaXNBY3RpdmVTZWxlY3Q6IGJvb2xlYW47XG5cbiAgICBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUgJiYgdGhpcy50YWJsZVN0b3JlLmVkaXRvcjtcbiAgICB9XG5cbiAgICBjZWxsTWVudUxpc3Q6IE1lbnVFbnRpdHlbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnbWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgbmFtZTogJ+WQiOW5tuWNleWFg+agvCcsXG4gICAgICAgICAgICBpbnZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLW1lcmdlLWNlbGxzJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLm1lcmdlQ2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdzcGxpdC1jZWxscycsXG4gICAgICAgICAgICBuYW1lOiAn5ouG5YiG5Y2V5YWD5qC8JyxcbiAgICAgICAgICAgIGludmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtdW5tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHNwbGl0Q2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGdldCBpc1Nob3dTcGxpdExpbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxNZW51TGlzdC5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pbnZpc2liaWxpdHkpLmxlbmd0aCA+IDE7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgY29sb3JTZWxlY3RTZXJ2aWNlOiBUaGVDb2xvclNlbGVjdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSBwb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPFRoZVRhYmxlVG9vbGJhckNvbXBvbmVudD5cbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZWxldGVJY29uID0gRGVsZXRlSWNvblt0aGlzLmdldERlbGV0ZUljb24oKV07XG4gICAgICAgIHRoaXMuZ2V0SWNvbk5hbWUodGhpcy5kZWxldGVJY29uKTtcbiAgICAgICAgc2V0Q2VsbE1lbnVJbnZpc2liaWxpdHkodGhpcy5lZGl0b3IsIHRoaXMuY2VsbE1lbnVMaXN0LCB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDZWxscywgdGhpcy5pc0FjdGl2ZVNlbGVjdCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9IHRoaXMudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxCYWNrZ3JvdW5kQ29sb3IoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuY2xvc2VDb2xvclNlbGVjdCgpO1xuICAgIH1cblxuICAgIGdldEljb25OYW1lKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICd0cmFzaCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pY29uTmFtZSA9ICfliKDpmaTooajmoLwnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGFibGUtZGVsZXRlLWNvbHVtbnMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAn5Yig6Zmk5pW05YiXJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RhYmxlLWRlbGV0ZS1yb3dzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmljb25OYW1lID0gJ+WIoOmZpOaVtOihjCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREZWxldGVJY29uKCkge1xuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUljb24udHJhc2g7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5zZWxlY3RlZFJvd3NJbmRleC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gRGVsZXRlSWNvblsndGFibGUtZGVsZXRlLXJvd3MnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLnNlbGVjdGVkQ29sdW1uc0luZGV4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBEZWxldGVJY29uWyd0YWJsZS1kZWxldGUtY29sdW1ucyddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5yZW1vdmVDb2x1bW5PclJvd3MoKTtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvbkVudGVyRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNDZWxscygpO1xuICAgIH1cblxuICAgIG9uTGVhdmVEZWxldGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICB9XG5cbiAgICBvcGVuU2VsZWN0Q29sb3IoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcudGh5LWljb24tbmF2LWxpbmsnKTtcbiAgICAgICAgY29uc3QgaXNIZWFkZXIgPSBUYWJsZUVkaXRvci5pc0FjdGl2ZUhlYWRlcih0aGlzLmVkaXRvcik7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbG9yU2VsZWN0U2VydmljZS50b2dnbGVDb2xvclNlbGVjdChcbiAgICAgICAgICAgICAgICBlbGVtZW50IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvcixcbiAgICAgICAgICAgICAgICBCYWNrZ3JvdW5kQ29sb3JzLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyUm93Q29sb3JOdW1iZXJzOiA3LFxuICAgICAgICAgICAgICAgICAgICByb3dPcHRpb25zOiB7IDE6ICcjYmJiJywgMjogJyNiYmInIH0sXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxDb2xvcjogaXNIZWFkZXIgPyBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciA6IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChuZXdDb2xvcjogQ29sb3JUeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgobmV3Q29sb3IgPT09IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yICYmIGlzSGVhZGVyKSB8fCAobmV3Q29sb3IgPT09IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IgJiYgIWlzSGVhZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihuZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gbmV3Q29sb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlblRhYmxlT3B0aW9uTWVudShldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudGh5UG9wb3Zlci5vcGVuKFRoZVRhYmxlT3B0aW9uc0NvbXBvbmVudCwge1xuICAgICAgICAgICAgb3JpZ2luOiBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgdGFibGVTdG9yZTogdGhpcy50YWJsZVN0b3JlLFxuICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5lZGl0b3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICd0YWJsZS1vcHRpb25zLWFjdGl2ZScsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAndGFibGUtb3B0aW9ucy1wYW5uZWwnXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGVudW0gRGVsZXRlSWNvbiB7XG4gICAgJ3RhYmxlLWRlbGV0ZS1yb3dzJyxcbiAgICAndGFibGUtZGVsZXRlLWNvbHVtbnMnLFxuICAgICd0cmFzaCdcbn1cbiIsIjx0aHktaWNvbi1uYXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjZWxsTWVudUxpc3RcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUljb25OYXZMaW5rICpuZ0lmPVwiIWl0ZW0uaW52aXNpYmlsaXR5XCIgW3RoeVRvb2x0aXBdPVwiaXRlbS5uYW1lXCIgKG1vdXNlZG93bik9XCJpdGVtLmFjdGlvbkhhbmRsZSgpXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cIml0ZW0uaWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgIDwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmF2LXNwbGl0LWxpbmUgKm5nSWY9XCIhaXNBY3RpdmVTZWxlY3QgJiYgaXNTaG93U3BsaXRMaW5lXCI+PC9uYXYtc3BsaXQtbGluZT5cbiAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdGh5SWNvbk5hdkxpbmsgdGh5VG9vbHRpcD1cIuWNleWFg+agvOiDjOaZr1wiIChtb3VzZWRvd24pPVwib3BlblNlbGVjdENvbG9yKCRldmVudClcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYmFja2dyb3VuZC10dFwiIHRoeUljb25UeXBlPVwidHdvdG9uZVwiIFt0aHlUd290b25lQ29sb3JdPVwic2VsZWN0ZWRDb2xvclwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuICAgIDxuYXYtc3BsaXQtbGluZSAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlXCI+PC9uYXYtc3BsaXQtbGluZT5cbiAgICA8YnV0dG9uXG4gICAgICAgIHRoeUJ1dHRvbj1cImRlZmF1bHRcIlxuICAgICAgICAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlXCJcbiAgICAgICAgY2xhc3M9XCJtci0yXCJcbiAgICAgICAgdGh5U2l6ZT1cIm1kXCJcbiAgICAgICAgY2xhc3M9XCJ0YWJsZS1vcHRpb25zXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvcGVuVGFibGVPcHRpb25NZW51KCRldmVudClcIlxuICAgID5cbiAgICAgICAgPHNwYW4+6KGo5qC86YCJ6aG5PC9zcGFuPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJjYXJldC1kb3duXCI+PC90aHktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmF2LXNwbGl0LWxpbmUgKm5nSWY9XCJkZWxldGVJY29uXCI+PC9uYXYtc3BsaXQtbGluZT5cbiAgICA8YVxuICAgICAgICAqbmdJZj1cImRlbGV0ZUljb25cIlxuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgdGh5SWNvbk5hdkxpbmtcbiAgICAgICAgW3RoeVRvb2x0aXBdPVwiaWNvbk5hbWVcIlxuICAgICAgICBjbGFzcz1cImRhbmdlclwiXG4gICAgICAgIFt0aHlJY29uTmF2TGlua0ljb25dPVwiZGVsZXRlSWNvblwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm9uRW50ZXJEZWxldGUoJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVEZWxldGUoJGV2ZW50KVwiXG4gICAgPjwvYT5cbjwvdGh5LWljb24tbmF2PlxuIl19
|