@heartlandone/vega 2.49.1 → 2.50.0-RTE-preview
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/dist/cjs/{app-globals-65622aeb.js → app-globals-8e811cac.js} +6 -6
- package/dist/cjs/{child-nodes-event-prevent-slimmer-cc193ee1.js → child-nodes-event-prevent-slimmer-26ecfb15.js} +1 -1
- package/dist/cjs/{content-state-6a48bcb5.js → code-block-4cd8bccd.js} +1166 -1131
- package/dist/cjs/content-state-6cb98931.js +2496 -0
- package/dist/cjs/{design-token-cba4222e.js → design-token-8b48cb59.js} +1 -1
- package/dist/cjs/{element-appender-slimmer-4a26ecb2.js → element-appender-slimmer-d6b975e6.js} +3 -3
- package/dist/cjs/{event-emit-slimmer-8247249c.js → event-emit-slimmer-ee7a8c06.js} +1 -1
- package/dist/cjs/{form-field-controller-slimmer-4b0af5bc.js → form-field-controller-slimmer-88cbb139.js} +4 -4
- package/dist/cjs/{image-annotation-action-9c2b9c8e.js → image-annotation-action-f36b1a72.js} +65 -35
- package/dist/cjs/{index-c4dec3aa.js → index-4dd54e6b.js} +1 -1
- package/dist/cjs/{index-09acd3c9.js → index-7700600c.js} +9 -0
- package/dist/cjs/index.cjs.js +17 -16
- package/dist/cjs/{internal-vega-event-manager-c9948b59.js → internal-vega-event-manager-58afcde7.js} +1 -0
- package/dist/cjs/loader.cjs.js +11 -9
- package/dist/cjs/{public-rules-10ec636d.js → public-rules-555271e0.js} +8 -6
- package/dist/cjs/{responsive-format-facade-263d49f6.js → responsive-format-facade-8ce41c8a.js} +3 -3
- package/dist/cjs/{rich-text-editor-required-rule-5faded94.js → rich-text-editor-required-rule-d1b38bf7.js} +1 -1
- package/dist/cjs/selection-controller-828990cc.js +765 -0
- package/dist/cjs/string-39438062.js +24 -0
- package/dist/cjs/{string-input-formatter-slimmer-50322824.js → string-input-formatter-slimmer-9e7d7ce2.js} +2 -2
- package/dist/cjs/{style-formatter-ae0ef7fc.js → style-formatter-2294d77f.js} +1 -1
- package/dist/cjs/{sub-state-notify-slimmer-7f437b19.js → sub-state-notify-slimmer-f3ee01b7.js} +1 -1
- package/dist/cjs/{sub-state-observer-slimmer-e90362cd.js → sub-state-observer-slimmer-e1a00b74.js} +1 -1
- package/dist/cjs/{translation-212b1875.js → translation-e5003a00.js} +5 -0
- package/dist/cjs/{translation-slimmer-d1512c6d.js → translation-slimmer-127a0f83.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +11 -9
- package/dist/cjs/vega-app-footer.cjs.entry.js +1 -1
- package/dist/cjs/vega-app-header-button.cjs.entry.js +12 -10
- package/dist/cjs/vega-backdrop.cjs.entry.js +1 -1
- package/dist/cjs/vega-banner.cjs.entry.js +3 -3
- package/dist/cjs/vega-bar-chart.cjs.entry.js +1 -1
- package/dist/cjs/vega-box.cjs.entry.js +11 -9
- package/dist/cjs/vega-brand-logo.cjs.entry.js +1 -1
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
- package/dist/cjs/vega-button-circle.cjs.entry.js +12 -10
- package/dist/cjs/vega-button-group_2.cjs.entry.js +7 -7
- package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
- package/dist/cjs/vega-button.cjs.entry.js +11 -9
- package/dist/cjs/vega-calendar_3.cjs.entry.js +9 -9
- package/dist/cjs/vega-card.cjs.entry.js +10 -8
- package/dist/cjs/vega-carousel.cjs.entry.js +10 -8
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +9 -9
- package/dist/cjs/vega-chip.cjs.entry.js +12 -10
- package/dist/cjs/vega-code-block.cjs.entry.js +4073 -0
- package/dist/cjs/vega-color-picker.cjs.entry.js +8 -8
- package/dist/cjs/vega-combo-box.cjs.entry.js +9 -9
- package/dist/cjs/vega-counter-badge.cjs.entry.js +1 -1
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +17 -16
- package/dist/cjs/vega-dialog_2.cjs.entry.js +12 -10
- package/dist/cjs/vega-divider.cjs.entry.js +10 -8
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +15 -13
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-field-error.cjs.entry.js +1 -1
- package/dist/cjs/vega-field-label.cjs.entry.js +3 -3
- package/dist/cjs/vega-file-uploader.cjs.entry.js +9 -9
- package/dist/cjs/vega-flag-icon.cjs.entry.js +10 -8
- package/dist/cjs/vega-flex.cjs.entry.js +11 -9
- package/dist/cjs/vega-font.cjs.entry.js +10 -8
- package/dist/cjs/vega-form.cjs.entry.js +10 -10
- package/dist/cjs/vega-grid.cjs.entry.js +10 -8
- package/dist/cjs/vega-hint.cjs.entry.js +1 -1
- package/dist/cjs/vega-icon.cjs.entry.js +10 -8
- package/dist/cjs/vega-image-uploader.cjs.entry.js +14 -13
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +9 -9
- package/dist/cjs/vega-input-numeric.cjs.entry.js +10 -10
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +12 -11
- package/dist/cjs/vega-input-range.cjs.entry.js +10 -10
- package/dist/cjs/vega-input-select.cjs.entry.js +19 -18
- package/dist/cjs/vega-input.cjs.entry.js +10 -10
- package/dist/cjs/{vega-internal-event-id-bfea9b93.js → vega-internal-event-id-62371952.js} +2 -0
- package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +13 -11
- package/dist/cjs/vega-line-chart.cjs.entry.js +1 -1
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +9 -7
- package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +4 -4
- package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +4 -4
- package/dist/cjs/vega-pagination.cjs.entry.js +12 -10
- package/dist/cjs/vega-pie-chart.cjs.entry.js +1 -1
- package/dist/cjs/vega-popover_2.cjs.entry.js +11 -9
- package/dist/cjs/vega-progress-tracker.cjs.entry.js +3 -3
- package/dist/cjs/vega-radio_2.cjs.entry.js +9 -9
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +311 -137
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +1225 -2502
- package/dist/cjs/vega-section-title.cjs.entry.js +1 -1
- package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +14 -13
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +10 -10
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +12 -10
- package/dist/cjs/vega-signature-capture.cjs.entry.js +14 -13
- package/dist/cjs/{vega-skeleton-loader-controller-db868c98.js → vega-skeleton-loader-controller-83e05b6c.js} +1 -1
- package/dist/cjs/vega-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/vega-slot-container.cjs.entry.js +1 -1
- package/dist/cjs/vega-stepper.cjs.entry.js +9 -9
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-table_8.cjs.entry.js +14 -12
- package/dist/cjs/vega-text.cjs.entry.js +1 -1
- package/dist/cjs/vega-textarea.cjs.entry.js +9 -9
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +15 -14
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +8 -8
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +10 -8
- package/dist/cjs/vega.cjs.js +11 -9
- package/dist/collection/collection-manifest.json +7 -1
- package/dist/collection/components/vega-code-block/assets/copy.js +3 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/code-highlight-parser.abstract.js +62 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/default-code-highlight-parse-controller.js +48 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/prism-code-highlight-parse-controller.js +99 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/vega-code-block-content-parse-controller.js +50 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/vega-code-block-focus-controller.js +57 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/vega-code-block-input-controller.js +255 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/vega-code-block-selection-controller.js +266 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/vega-code-block-value-controller.js +44 -0
- package/dist/collection/components/vega-code-block/slimmers/renderers/vega-code-block-content-renderer.js +123 -0
- package/dist/collection/components/vega-code-block/slimmers/renderers/vega-code-block-copy-button-renderer.js +67 -0
- package/dist/collection/components/vega-code-block/slimmers/renderers/vega-code-block-renderer.js +122 -0
- package/dist/collection/components/vega-code-block/types.js +10 -0
- package/dist/collection/components/vega-code-block/vega-code-block.css +158 -0
- package/dist/collection/components/vega-code-block/vega-code-block.js +399 -0
- package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +5 -5
- package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +2 -0
- package/dist/collection/components/vega-rich-text-content/vega-rich-text-content.css +60 -5
- package/dist/collection/components/vega-rich-text-editor/assets/file-code.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/assets/rectangle-code.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy.abstract.js +24 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-horizontal-alignment-strategy.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-indent-strategy.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-text-style-strategy.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/code-node-set-selection-range-strategy.js +13 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-update-annotation-map-strategy.js +14 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-content-strategy.js +3 -1
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-node-strategy.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-code-block-strategy.js +48 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/code-block-insert-image-strategy.js +17 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/code-block-remove-self-strategy.js +77 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/switch-out-from-code-block-strategy.js +38 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/update-code-block-strategy.js +14 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/custom-style-annotation-action.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +4 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/remove-code-block-action.js +13 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/switch-out-from-code-block-action.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/transform-to-code-block-action.js +13 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/update-code-block-action.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/block-annotation.abstract.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/bold-annotation.js +13 -5
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/clear-formatting-annotation.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/code-annotation.js +14 -9
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/common-annotation.abstract.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/custom-attribute-annotation.js +65 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/custom-class-annotation.js +54 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/custom-style-annotation.js +57 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/horizontal-alignment-annotation.js +26 -10
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/image-annotation.js +16 -7
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/indent-annotation.js +8 -2
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/italic-annotation.js +13 -5
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/link-annotation.js +12 -9
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/link-group-annotation.js +89 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/list-annotation.js +41 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/strikethrough-annotation.js +9 -9
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/text-color-annotation.js +3 -7
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/text-style-annotation.js +74 -12
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/underline-annotation.js +9 -9
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +69 -2
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/code-block.js +106 -0
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/image-block.js +15 -1
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-block.js +50 -0
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +12 -1
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/text-block.js +66 -2
- package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +29 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/code-block-node.js +56 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/image-node.js +26 -9
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +81 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +15 -2
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/block-renderer.abstract.js +5 -22
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.js +9 -93
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/code-block-renderer.js +62 -0
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/image-block-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/link-wrapper-renderer.js +121 -0
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-block-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-item-block-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/text-block-renderer.js +2 -23
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/code-block-node-renderer.js +81 -0
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/image-node-renderer.js +47 -7
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/node-renderer.abstract.js +0 -27
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/delete-selected-nodes-controller.js +19 -4
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/block-to-rte-block-strategy.abstract.js +155 -15
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/element-to-dto-strategy-processor.js +6 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/element-to-rte-image-block-strategy.abstract.js +38 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/img-to-rte-image-block-strategy.js +3 -20
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/inline-block-to-rte-text-block-strategy.js +59 -5
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/jira-code-to-rte-code-block-strategy.js +54 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/li-to-rte-list-item-block-strategy.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/ol-to-rte-list-block-strategy.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/span-img-to-rte-image-block-strategy.js +3 -20
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/ul-not-li-child-to-rte-list-item-block.js +7 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/ul-to-rte-list-block-strategy.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/vega-code-block-to-rte-code-block-strategy.js +69 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/vega-image-to-rte-image-block-strategy.js +4 -7
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-line-break-handler.js +7 -5
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paragraph-handler.js +7 -5
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +25 -10
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/internal-code-block-selection-controller.js +64 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +59 -53
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +21 -8
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.js +10 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bold-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/numbers-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/clear-style-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/code-block-toolbar-button-slimmer.js +65 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/code-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/center-align-toolbar-button-slimmer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.js +8 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/justify-align-toolbar-button-slimmer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/left-align-toolbar-button-slimmer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/right-align-toolbar-button-slimmer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/italic-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/less-indent-toolbar-button-slimmer.js +3 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/more-indent-toolbar-button-slimmer.js +3 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.js +60 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/strikethrough-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-color-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +6 -4
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/underline-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/visual-mode-toolbar-button-slimmer.abstract.js +28 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.js +31 -3
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/code-block-strategy-registry.test.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/content-state-strategy-registry.test.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-block-strategy-register.test.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/text-block-strategy-register.test.js +23 -1
- package/dist/collection/components/vega-rich-text-editor/test/dto/annotations.test.js +247 -27
- package/dist/collection/components/vega-rich-text-editor/test/dto/blocks/code-block.test.js +54 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/content-state.test.js +1793 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/nodes/image-node.test.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/nodes/text-node.test.js +41 -4
- package/dist/collection/components/vega-rich-text-editor/test/element-to-dto-strategy/jira-code-to-rte-code-block-strategy.test.js +32 -0
- package/dist/collection/components/vega-rich-text-editor/test/element-to-dto-strategy/vega-code-block-to-rte-code-block-strategy.test.js +61 -0
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.css +7 -0
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +18 -1
- package/dist/collection/helpers/code-format/code-formatter.js +108 -0
- package/dist/collection/helpers/code-format/test/code-formatter.test.js +362 -0
- package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +2 -1
- package/dist/collection/helpers/event-manager/event-id/vega-internal-event-id.js +1 -0
- package/dist/collection/helpers/slimmers/auto-run-when-re-render-task-queue-slimmer.abstract.js +47 -0
- package/dist/collection/helpers/slimmers/test/auto-run-when-re-render-task-queue-slimmer.test.js +46 -0
- package/dist/collection/helpers/translation/locales/en.js +5 -0
- package/dist/collection/helpers/translation/tests/internal-translation-controller.test.js +5 -0
- package/dist/collection/polyfill/shadow-selection/shadow-selection-polyfill.js +17 -15
- package/dist/collection/polyfill/shadow-selection/test/shadow-selection-polyfill.test.js +1 -0
- package/dist/collection/polyfill/test-polyfill/unit/methods.js +9 -0
- package/dist/collection/utils/string.js +10 -0
- package/dist/esm/{app-globals-1f8c30e9.js → app-globals-9058ac3b.js} +6 -6
- package/dist/esm/{child-nodes-event-prevent-slimmer-5d45361e.js → child-nodes-event-prevent-slimmer-1142fb79.js} +1 -1
- package/dist/esm/{content-state-dbc9f635.js → code-block-8b5bd928.js} +1141 -1122
- package/dist/esm/content-state-8c3f862b.js +2489 -0
- package/dist/esm/{design-token-0699f0ca.js → design-token-bd436e0d.js} +1 -1
- package/dist/esm/{dom-node-subject-factory-f77cf9cc.js → dom-node-subject-factory-eb6bba5d.js} +1 -1
- package/dist/esm/{dom-node-subject-observer-factory-715dccf9.js → dom-node-subject-observer-factory-6083d518.js} +1 -1
- package/dist/esm/{element-appender-slimmer-96cb54e2.js → element-appender-slimmer-baf5e249.js} +5 -5
- package/dist/esm/{event-emit-slimmer-b7d511f6.js → event-emit-slimmer-480d3b54.js} +3 -3
- package/dist/esm/{form-field-controller-slimmer-89a72ee7.js → form-field-controller-slimmer-bfb4034d.js} +6 -6
- package/dist/esm/{image-annotation-action-1aa938ab.js → image-annotation-action-a8b860ad.js} +57 -28
- package/dist/esm/{index-187f71d1.js → index-d0a47531.js} +9 -0
- package/dist/esm/{index-4aa167d6.js → index-db0ec3ee.js} +2 -2
- package/dist/esm/index.js +12 -11
- package/dist/esm/{internal-vega-event-manager-87dc436c.js → internal-vega-event-manager-56c6469a.js} +2 -1
- package/dist/esm/loader.js +12 -10
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/{public-rules-5cf6aa95.js → public-rules-90fbd41a.js} +8 -6
- package/dist/esm/{responsive-format-facade-42f3fcfa.js → responsive-format-facade-827de03a.js} +3 -3
- package/dist/esm/{rich-text-editor-required-rule-6a7cd3ee.js → rich-text-editor-required-rule-0d470d82.js} +1 -1
- package/dist/esm/selection-controller-dd4f4407.js +759 -0
- package/dist/esm/string-a953eafc.js +21 -0
- package/dist/esm/{string-input-formatter-slimmer-c61f82d6.js → string-input-formatter-slimmer-0d30b976.js} +3 -3
- package/dist/esm/{style-formatter-cb00c709.js → style-formatter-232842f5.js} +1 -1
- package/dist/esm/{sub-state-notify-slimmer-4e3cf09d.js → sub-state-notify-slimmer-04e06501.js} +2 -2
- package/dist/esm/{sub-state-observer-slimmer-be7a6ce3.js → sub-state-observer-slimmer-b4c2ddc3.js} +2 -2
- package/dist/esm/{translation-cf7f020a.js → translation-71e0711d.js} +5 -0
- package/dist/esm/{translation-slimmer-88966d5c.js → translation-slimmer-e6b130bf.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +13 -11
- package/dist/esm/vega-app-footer.entry.js +1 -1
- package/dist/esm/vega-app-header-button.entry.js +14 -12
- package/dist/esm/vega-backdrop.entry.js +1 -1
- package/dist/esm/vega-banner.entry.js +5 -5
- package/dist/esm/vega-bar-chart.entry.js +1 -1
- package/dist/esm/vega-box.entry.js +12 -10
- package/dist/esm/vega-brand-logo.entry.js +1 -1
- package/dist/esm/vega-breadcrumb.entry.js +6 -6
- package/dist/esm/vega-button-circle.entry.js +14 -12
- package/dist/esm/vega-button-group_2.entry.js +9 -9
- package/dist/esm/vega-button-link.entry.js +6 -6
- package/dist/esm/vega-button.entry.js +13 -11
- package/dist/esm/vega-calendar_3.entry.js +11 -11
- package/dist/esm/vega-card.entry.js +11 -9
- package/dist/esm/vega-carousel.entry.js +12 -10
- package/dist/esm/vega-checkbox_2.entry.js +11 -11
- package/dist/esm/vega-chip.entry.js +14 -12
- package/dist/esm/vega-code-block.entry.js +4069 -0
- package/dist/esm/vega-color-picker.entry.js +10 -10
- package/dist/esm/vega-combo-box.entry.js +11 -11
- package/dist/esm/vega-counter-badge.entry.js +1 -1
- package/dist/esm/vega-date-picker_2.entry.js +19 -18
- package/dist/esm/vega-dialog_2.entry.js +14 -12
- package/dist/esm/vega-divider.entry.js +11 -9
- package/dist/esm/vega-dropdown_5.entry.js +17 -15
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-field-error.entry.js +1 -1
- package/dist/esm/vega-field-label.entry.js +5 -5
- package/dist/esm/vega-file-uploader.entry.js +11 -11
- package/dist/esm/vega-flag-icon.entry.js +11 -9
- package/dist/esm/vega-flex.entry.js +12 -10
- package/dist/esm/vega-font.entry.js +11 -9
- package/dist/esm/vega-form.entry.js +12 -12
- package/dist/esm/vega-grid.entry.js +11 -9
- package/dist/esm/vega-hint.entry.js +1 -1
- package/dist/esm/vega-icon.entry.js +11 -9
- package/dist/esm/vega-image-uploader.entry.js +16 -15
- package/dist/esm/vega-input-credit-card.entry.js +11 -11
- package/dist/esm/vega-input-numeric.entry.js +12 -12
- package/dist/esm/vega-input-phone-number.entry.js +14 -13
- package/dist/esm/vega-input-range.entry.js +12 -12
- package/dist/esm/vega-input-select.entry.js +21 -20
- package/dist/esm/vega-input.entry.js +12 -12
- package/dist/esm/{vega-internal-event-id-85ad403f.js → vega-internal-event-id-820393ad.js} +2 -1
- package/dist/esm/vega-item-toggle.entry.js +5 -5
- package/dist/esm/vega-left-nav_5.entry.js +15 -13
- package/dist/esm/vega-line-chart.entry.js +1 -1
- package/dist/esm/vega-loader-wrapper_2.entry.js +10 -8
- package/dist/esm/vega-page-notification_2.entry.js +3 -3
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +6 -6
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +6 -6
- package/dist/esm/vega-pagination.entry.js +14 -12
- package/dist/esm/vega-pie-chart.entry.js +1 -1
- package/dist/esm/vega-popover_2.entry.js +13 -11
- package/dist/esm/vega-progress-tracker.entry.js +5 -5
- package/dist/esm/vega-radio_2.entry.js +11 -11
- package/dist/esm/vega-rich-text-content.entry.js +305 -131
- package/dist/esm/vega-rich-text-editor_4.entry.js +1132 -2409
- package/dist/esm/vega-section-title.entry.js +1 -1
- package/dist/esm/vega-segment-control.entry.js +5 -5
- package/dist/esm/vega-selection-chip_2.entry.js +16 -15
- package/dist/esm/vega-selection-tile_2.entry.js +12 -12
- package/dist/esm/vega-sidenav_3.entry.js +14 -12
- package/dist/esm/vega-signature-capture.entry.js +16 -15
- package/dist/esm/{vega-skeleton-loader-controller-c2a8bd27.js → vega-skeleton-loader-controller-878e1b28.js} +1 -1
- package/dist/esm/vega-skeleton.entry.js +1 -1
- package/dist/esm/vega-slot-container.entry.js +1 -1
- package/dist/esm/vega-stepper.entry.js +11 -11
- package/dist/esm/vega-tab-group_2.entry.js +6 -6
- package/dist/esm/vega-table_8.entry.js +16 -14
- package/dist/esm/vega-text.entry.js +1 -1
- package/dist/esm/vega-textarea.entry.js +11 -11
- package/dist/esm/vega-time-picker_2.entry.js +17 -16
- package/dist/esm/vega-toggle-switch.entry.js +10 -10
- package/dist/esm/vega-tooltip_2.entry.js +12 -10
- package/dist/esm/vega.js +12 -10
- package/dist/types/components/vega-code-block/assets/copy.d.ts +3 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/code-highlight-parser.abstract.d.ts +40 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/default-code-highlight-parse-controller.d.ts +19 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/prism-code-highlight-parse-controller.d.ts +43 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/vega-code-block-content-parse-controller.d.ts +23 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/vega-code-block-focus-controller.d.ts +21 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/vega-code-block-input-controller.d.ts +100 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/vega-code-block-selection-controller.d.ts +93 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/vega-code-block-value-controller.d.ts +21 -0
- package/dist/types/components/vega-code-block/slimmers/renderers/vega-code-block-content-renderer.d.ts +57 -0
- package/dist/types/components/vega-code-block/slimmers/renderers/vega-code-block-copy-button-renderer.d.ts +23 -0
- package/dist/types/components/vega-code-block/slimmers/renderers/vega-code-block-renderer.d.ts +50 -0
- package/dist/types/components/vega-code-block/types.d.ts +19 -0
- package/dist/types/components/vega-code-block/vega-code-block.d.ts +116 -0
- package/dist/types/components/vega-rich-text-editor/assets/file-code.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/assets/rectangle-code.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy.abstract.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-horizontal-alignment-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-indent-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/code-node-set-selection-range-strategy.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-node-content-strategy.d.ts +3 -3
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-node-strategy.d.ts +4 -5
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-code-block-strategy.d.ts +29 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/code-block-insert-image-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/code-block-remove-self-strategy.d.ts +28 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/switch-out-from-code-block-strategy.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/update-code-block-strategy.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/custom-style-annotation-action.d.ts +17 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +5 -1
- package/dist/types/components/vega-rich-text-editor/dto/actions/remove-code-block-action.d.ts +10 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/switch-out-from-code-block-action.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/transform-to-code-block-action.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/update-code-block-action.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/annotation.abstract.d.ts +2 -1
- package/dist/types/components/vega-rich-text-editor/dto/annotations/block-annotation.abstract.d.ts +17 -4
- package/dist/types/components/vega-rich-text-editor/dto/annotations/bold-annotation.d.ts +7 -5
- package/dist/types/components/vega-rich-text-editor/dto/annotations/clear-formatting-annotation.d.ts +2 -1
- package/dist/types/components/vega-rich-text-editor/dto/annotations/code-annotation.d.ts +5 -9
- package/dist/types/components/vega-rich-text-editor/dto/annotations/common-annotation.abstract.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/custom-attribute-annotation.d.ts +43 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/custom-class-annotation.d.ts +40 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/custom-style-annotation.d.ts +42 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/horizontal-alignment-annotation.d.ts +5 -9
- package/dist/types/components/vega-rich-text-editor/dto/annotations/image-annotation.d.ts +7 -5
- package/dist/types/components/vega-rich-text-editor/dto/annotations/indent-annotation.d.ts +5 -1
- package/dist/types/components/vega-rich-text-editor/dto/annotations/italic-annotation.d.ts +7 -5
- package/dist/types/components/vega-rich-text-editor/dto/annotations/link-annotation.d.ts +6 -4
- package/dist/types/components/vega-rich-text-editor/dto/annotations/link-group-annotation.d.ts +48 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/list-annotation.d.ts +25 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/node-annotation.abstract.d.ts +15 -3
- package/dist/types/components/vega-rich-text-editor/dto/annotations/strikethrough-annotation.d.ts +5 -9
- package/dist/types/components/vega-rich-text-editor/dto/annotations/text-color-annotation.d.ts +3 -7
- package/dist/types/components/vega-rich-text-editor/dto/annotations/text-style-annotation.d.ts +7 -5
- package/dist/types/components/vega-rich-text-editor/dto/annotations/underline-annotation.d.ts +5 -9
- package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +39 -4
- package/dist/types/components/vega-rich-text-editor/dto/blocks/code-block.d.ts +56 -0
- package/dist/types/components/vega-rich-text-editor/dto/blocks/image-block.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/dto/blocks/list-block.d.ts +20 -2
- package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/dto/blocks/text-block.d.ts +14 -4
- package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/code-block-node.d.ts +45 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/image-node.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/node.abstract.d.ts +46 -2
- package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +7 -2
- package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/block-renderer.abstract.d.ts +4 -11
- package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.d.ts +7 -5
- package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/code-block-renderer.d.ts +39 -0
- package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/link-wrapper-renderer.d.ts +24 -0
- package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/text-block-renderer.d.ts +0 -1
- package/dist/types/components/vega-rich-text-editor/dto/renderers/nodes/code-block-node-renderer.d.ts +37 -0
- package/dist/types/components/vega-rich-text-editor/dto/renderers/nodes/image-node-renderer.d.ts +22 -0
- package/dist/types/components/vega-rich-text-editor/dto/renderers/nodes/node-renderer.abstract.d.ts +1 -15
- package/dist/types/components/vega-rich-text-editor/interface.d.ts +65 -26
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/block-to-rte-block-strategy.abstract.d.ts +64 -6
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/element-to-dto-strategy-processor.d.ts +3 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/element-to-rte-image-block-strategy.abstract.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/img-to-rte-image-block-strategy.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/inline-block-to-rte-text-block-strategy.d.ts +30 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/jira-code-to-rte-code-block-strategy.d.ts +31 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/ol-to-rte-list-block-strategy.d.ts +2 -3
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/span-img-to-rte-image-block-strategy.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/ul-to-rte-list-block-strategy.d.ts +2 -3
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/vega-code-block-to-rte-code-block-strategy.d.ts +42 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/vega-image-to-rte-image-block-strategy.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.d.ts +7 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/internal-code-block-selection-controller.d.ts +45 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/selection-controller.d.ts +17 -23
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.d.ts +6 -4
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bold-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.d.ts +3 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/numbers-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/clear-style-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/code-block-toolbar-button-slimmer.d.ts +22 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/code-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/center-align-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.d.ts +4 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/justify-align-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/left-align-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/right-align-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +3 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/italic-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/less-indent-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.d.ts +3 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/more-indent-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/strikethrough-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/text-color-toolbar-button-slimmer.d.ts +3 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.d.ts +3 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.d.ts +3 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/underline-toolbar-button-slimmer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/visual-mode-toolbar-button-slimmer.abstract.d.ts +17 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.d.ts +8 -2
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/code-block-strategy-registry.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/blocks/code-block.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/content-state.test.d.ts +1 -1
- package/dist/types/components/vega-rich-text-editor/test/element-to-dto-strategy/jira-code-to-rte-code-block-strategy.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/element-to-dto-strategy/vega-code-block-to-rte-code-block-strategy.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +7 -0
- package/dist/types/components.d.ts +95 -0
- package/dist/types/helpers/code-format/code-formatter.d.ts +34 -0
- package/dist/types/helpers/code-format/test/code-formatter.test.d.ts +1 -0
- package/dist/types/helpers/event-manager/event-id/vega-internal-event-id.d.ts +1 -0
- package/dist/types/helpers/slimmers/auto-run-when-re-render-task-queue-slimmer.abstract.d.ts +20 -0
- package/dist/types/helpers/slimmers/test/auto-run-when-re-render-task-queue-slimmer.test.d.ts +1 -0
- package/dist/types/helpers/translation/interface.d.ts +6 -1
- package/dist/types/polyfill/shadow-selection/shadow-selection-polyfill.d.ts +26 -0
- package/dist/types/types/components.type.d.ts +1 -0
- package/dist/types/utils/string.d.ts +7 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/p-0104207d.entry.js +1 -0
- package/dist/vega/p-010f1715.entry.js +1 -0
- package/dist/vega/p-01593f9d.js +1 -0
- package/dist/vega/p-020b04ed.js +1 -0
- package/dist/vega/p-02841589.js +1 -0
- package/dist/vega/p-03cfb331.entry.js +9 -0
- package/dist/vega/{p-b649e86e.entry.js → p-0bff8716.entry.js} +1 -1
- package/dist/vega/p-1056a049.entry.js +1 -0
- package/dist/vega/p-10e41bbe.js +1 -0
- package/dist/vega/{p-83ef9e7d.entry.js → p-12e6173c.entry.js} +1 -1
- package/dist/vega/{p-54add0d2.js → p-1397ba3f.js} +1 -1
- package/dist/vega/p-13d9a1fd.entry.js +1 -0
- package/dist/vega/p-13eae47f.entry.js +1 -0
- package/dist/vega/p-1630864e.entry.js +1 -0
- package/dist/vega/p-1b335e30.entry.js +1 -0
- package/dist/vega/{p-8ade44bf.js → p-1e194737.js} +1 -1
- package/dist/vega/{p-252e42c7.entry.js → p-1f346008.entry.js} +1 -1
- package/dist/vega/p-1f86ab76.entry.js +1 -0
- package/dist/vega/p-1fe746ab.entry.js +1 -0
- package/dist/vega/{p-8c388b58.entry.js → p-211c028f.entry.js} +1 -1
- package/dist/vega/p-21d26bb4.js +2 -0
- package/dist/vega/{p-b351ace3.entry.js → p-23e6f2b2.entry.js} +1 -1
- package/dist/vega/p-268aea63.js +1 -0
- package/dist/vega/{p-a01f149d.entry.js → p-27ccf34d.entry.js} +1 -1
- package/dist/vega/{p-913eb7f9.entry.js → p-29f9be26.entry.js} +1 -1
- package/dist/vega/{p-27003a81.entry.js → p-30dcf606.entry.js} +1 -1
- package/dist/vega/{p-89ab72e3.js → p-3c20ae84.js} +1 -1
- package/dist/vega/p-4172fb81.js +1 -0
- package/dist/vega/{p-45f696b4.js → p-419697c6.js} +1 -1
- package/dist/vega/p-427e4cee.entry.js +1 -0
- package/dist/vega/p-4604ed0e.entry.js +1 -0
- package/dist/vega/{p-8d283666.js → p-4ab3df00.js} +1 -1
- package/dist/vega/{p-72ecfd40.js → p-4e8fb53a.js} +1 -1
- package/dist/vega/p-50a3ae3d.js +1 -0
- package/dist/vega/{p-b847a143.entry.js → p-50b80d76.entry.js} +1 -1
- package/dist/vega/p-531ffb18.entry.js +1 -0
- package/dist/vega/p-53daeb45.entry.js +1 -0
- package/dist/vega/p-54fdd401.entry.js +1 -0
- package/dist/vega/{p-47ff95ba.entry.js → p-5741ecf0.entry.js} +1 -1
- package/dist/vega/{p-6cabdb36.js → p-58f8928a.js} +1 -1
- package/dist/vega/{p-4a32a6c0.entry.js → p-5c4cb804.entry.js} +1 -1
- package/dist/vega/{p-a46bc9f1.entry.js → p-5ce386c8.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-0079088b.entry.js → p-5fd5a538.entry.js} +1 -1
- package/dist/vega/{p-0969877b.entry.js → p-64f452fe.entry.js} +1 -1
- package/dist/vega/p-66759f4e.js +1 -0
- package/dist/vega/{p-bc2dd43d.js → p-6ea42854.js} +1 -1
- package/dist/vega/p-70f25341.entry.js +1 -0
- package/dist/vega/{p-ec1f2d21.entry.js → p-737bccb9.entry.js} +1 -1
- package/dist/vega/{p-bcb10ae3.entry.js → p-7503fe08.entry.js} +1 -1
- package/dist/vega/{p-46714da3.entry.js → p-7b0a4688.entry.js} +1 -1
- package/dist/vega/p-7def7b74.entry.js +1 -0
- package/dist/vega/{p-48517a5d.entry.js → p-7f5a85c6.entry.js} +1 -1
- package/dist/vega/p-825ae7c4.js +1 -0
- package/dist/vega/p-831c4144.entry.js +1 -0
- package/dist/vega/p-85dc08b4.entry.js +1 -0
- package/dist/vega/{p-a821bcf3.js → p-86782109.js} +1 -1
- package/dist/vega/p-87459914.js +1 -0
- package/dist/vega/{p-1971d980.entry.js → p-87a1fc77.entry.js} +1 -1
- package/dist/vega/p-89565247.entry.js +1 -0
- package/dist/vega/{p-7088ead9.entry.js → p-89e915e9.entry.js} +1 -1
- package/dist/vega/{p-81fbfb6d.entry.js → p-8aa7e56e.entry.js} +1 -1
- package/dist/vega/p-94263ece.entry.js +1 -0
- package/dist/vega/{p-d0007822.entry.js → p-9524e48a.entry.js} +1 -1
- package/dist/vega/{p-147e3cbd.entry.js → p-991b4717.entry.js} +1 -1
- package/dist/vega/{p-647025dd.entry.js → p-99b9b320.entry.js} +1 -1
- package/dist/vega/{p-aea89be5.entry.js → p-9ba14b7c.entry.js} +1 -1
- package/dist/vega/p-9cb79f8d.entry.js +1 -0
- package/dist/vega/p-9e3f52f0.entry.js +1 -0
- package/dist/vega/{p-6586e2a2.entry.js → p-a0e122a6.entry.js} +1 -1
- package/dist/vega/{p-9803042f.entry.js → p-b0fe6c0f.entry.js} +1 -1
- package/dist/vega/{p-b2bca332.entry.js → p-b518e1a0.entry.js} +1 -1
- package/dist/vega/p-b538e81a.entry.js +1 -0
- package/dist/vega/p-b824baf7.entry.js +1 -0
- package/dist/vega/{p-2fadef27.entry.js → p-b959b4d4.entry.js} +1 -1
- package/dist/vega/{p-54f17c2e.entry.js → p-bb4f0fa1.entry.js} +1 -1
- package/dist/vega/{p-2da83c2a.js → p-bbb39d6f.js} +1 -1
- package/dist/vega/{p-cfda64fd.entry.js → p-bc8fd0ee.entry.js} +1 -1
- package/dist/vega/p-bcaf8375.entry.js +1 -0
- package/dist/vega/{p-02d7d948.entry.js → p-bec90ff3.entry.js} +1 -1
- package/dist/vega/p-c6b94dde.entry.js +1 -0
- package/dist/vega/{p-c754b32c.js → p-ce6b62c4.js} +1 -1
- package/dist/vega/{p-5e34ea25.entry.js → p-d00fbc11.entry.js} +1 -1
- package/dist/vega/{p-10a40dfb.entry.js → p-d2a2af2c.entry.js} +1 -1
- package/dist/vega/p-d64b20c2.js +1 -0
- package/dist/vega/p-da779940.entry.js +1 -0
- package/dist/vega/{p-a7dcb2a3.js → p-db910162.js} +1 -1
- package/dist/vega/{p-6f81fe1e.js → p-e1a2a701.js} +1 -1
- package/dist/vega/p-e3694aa5.entry.js +1 -0
- package/dist/vega/p-e7318c4c.entry.js +1 -0
- package/dist/vega/{p-a5c39ba2.entry.js → p-e8fc027e.entry.js} +1 -1
- package/dist/vega/{p-6a830bc5.entry.js → p-e92ecb78.entry.js} +1 -1
- package/dist/vega/p-e969c3f4.entry.js +1 -0
- package/dist/vega/{p-61eb7f32.entry.js → p-ec8b7f01.entry.js} +1 -1
- package/dist/vega/p-eed9bda2.entry.js +1 -0
- package/dist/vega/p-f4c54c98.entry.js +1 -0
- package/dist/vega/{p-5160a6b9.entry.js → p-f5fc80bc.entry.js} +1 -1
- package/dist/vega/p-f67be7ef.js +1 -0
- package/dist/vega/{p-5e3a15a1.js → p-f9fafc55.js} +1 -1
- package/dist/vega/{p-27e56c67.entry.js → p-fc21fb2d.entry.js} +1 -1
- package/dist/vega/p-fed9220b.entry.js +1 -0
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +2 -1
- package/dist/cjs/string-21427167.js +0 -13
- package/dist/esm/string-be824360.js +0 -11
- package/dist/vega/p-06adb37e.entry.js +0 -1
- package/dist/vega/p-06c5fe97.entry.js +0 -1
- package/dist/vega/p-0bb29d98.js +0 -1
- package/dist/vega/p-0ed7a098.entry.js +0 -1
- package/dist/vega/p-0f6b3a89.entry.js +0 -1
- package/dist/vega/p-136f665b.entry.js +0 -1
- package/dist/vega/p-1503f791.js +0 -1
- package/dist/vega/p-16fd7c32.js +0 -1
- package/dist/vega/p-1a263af1.entry.js +0 -1
- package/dist/vega/p-1af4771a.entry.js +0 -1
- package/dist/vega/p-1c298d5a.js +0 -2
- package/dist/vega/p-1c63afd2.entry.js +0 -1
- package/dist/vega/p-1e05b7b4.entry.js +0 -1
- package/dist/vega/p-1ea863a6.entry.js +0 -1
- package/dist/vega/p-271b30b9.entry.js +0 -1
- package/dist/vega/p-2d1d4f33.entry.js +0 -1
- package/dist/vega/p-353b3ded.entry.js +0 -1
- package/dist/vega/p-44b0a005.js +0 -1
- package/dist/vega/p-4e76904e.entry.js +0 -1
- package/dist/vega/p-4ec0d36f.entry.js +0 -1
- package/dist/vega/p-5c954088.entry.js +0 -1
- package/dist/vega/p-646a9198.entry.js +0 -1
- package/dist/vega/p-6d7d923b.js +0 -1
- package/dist/vega/p-6e898779.js +0 -1
- package/dist/vega/p-77492977.entry.js +0 -1
- package/dist/vega/p-804f71b3.js +0 -1
- package/dist/vega/p-8789d34d.entry.js +0 -1
- package/dist/vega/p-8813c0ac.entry.js +0 -1
- package/dist/vega/p-8a85c7af.entry.js +0 -1
- package/dist/vega/p-8ba43640.entry.js +0 -1
- package/dist/vega/p-98c64d77.entry.js +0 -1
- package/dist/vega/p-9f3539a4.entry.js +0 -1
- package/dist/vega/p-b42aea55.entry.js +0 -1
- package/dist/vega/p-b5d70ee0.entry.js +0 -1
- package/dist/vega/p-bf1894ec.js +0 -1
- package/dist/vega/p-bfb344e1.entry.js +0 -1
- package/dist/vega/p-c9a4e79a.entry.js +0 -1
- package/dist/vega/p-dbc82247.js +0 -1
- package/dist/vega/p-e2e36d2b.entry.js +0 -1
- package/dist/vega/p-ef8272b5.entry.js +0 -1
- package/dist/vega/p-f4c1d961.js +0 -1
- package/dist/vega/p-f5279deb.entry.js +0 -1
- package/dist/vega/p-f8033cd3.entry.js +0 -1
- package/dist/vega/p-fe63bd50.entry.js +0 -1
|
@@ -0,0 +1,765 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const globalSlimmerRegistry = require('./global-slimmer-registry-b3bce7e0.js');
|
|
4
|
+
const timer = require('./timer-5f33058b.js');
|
|
5
|
+
const codeBlock = require('./code-block-4cd8bccd.js');
|
|
6
|
+
const component = require('./component-73a88c4e.js');
|
|
7
|
+
const changeManager = require('./change-manager-a297e4d2.js');
|
|
8
|
+
const domNodeSubjectFactory = require('./dom-node-subject-factory-d5826bff.js');
|
|
9
|
+
const vegaInternalEventId = require('./vega-internal-event-id-62371952.js');
|
|
10
|
+
const observer = require('./observer-f49483e8.js');
|
|
11
|
+
const ui = require('./ui-13b42af0.js');
|
|
12
|
+
const synchronizeTaskQueue = require('./synchronize-task-queue-1ee80e94.js');
|
|
13
|
+
|
|
14
|
+
let processing = false;
|
|
15
|
+
/**
|
|
16
|
+
* Simulate a selection for browsers that don't support shadow selection.
|
|
17
|
+
* Cypress test case added in https://github.com/heartlandpayments/Vega/pull/1561/files#diff-83bdbaaf47fc156ab878099aa1f21b0e8ab92abe5852521299f1fb6efab001c2R300
|
|
18
|
+
*/
|
|
19
|
+
class ShadowSelection {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.rangeCount = 0;
|
|
22
|
+
this.ranges = [];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns a Range object at a specified index.
|
|
26
|
+
*
|
|
27
|
+
* @param {number} index - A specified index.
|
|
28
|
+
* @returns {Range} - A Range object.
|
|
29
|
+
*/
|
|
30
|
+
getRangeAt(index) {
|
|
31
|
+
return this.ranges[index];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Adds a Range to ranges array.
|
|
35
|
+
*
|
|
36
|
+
* @param {Range} range - The range of selection.
|
|
37
|
+
*/
|
|
38
|
+
addRange(range) {
|
|
39
|
+
this.ranges.push(range);
|
|
40
|
+
this.rangeCount = this.ranges.length;
|
|
41
|
+
if (!processing) {
|
|
42
|
+
const windowSelection = window.getSelection();
|
|
43
|
+
windowSelection.removeAllRanges();
|
|
44
|
+
windowSelection.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Clears all ranges.
|
|
49
|
+
*/
|
|
50
|
+
removeAllRanges() {
|
|
51
|
+
this.ranges = [];
|
|
52
|
+
this.rangeCount = 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Due to the ShadowRoot.getSelection is not a standard API, we add this polyfill to achieve this function.
|
|
57
|
+
*
|
|
58
|
+
* - On Chromium, calling document.getSelection will not pierce into the Shadow DOM and gives you some unhelpful high-level element.
|
|
59
|
+
* But it does expose the non-standard getSelection method on the ShadowRoot.
|
|
60
|
+
*
|
|
61
|
+
* - On Firefox, it does not implement ShadowRoot.getSelection,
|
|
62
|
+
* but document.getSelection will pierce through shadow dom and give you the exact element.
|
|
63
|
+
*
|
|
64
|
+
* - On Safari, Selection.getComposedRanges is supported as of v17. On versions before that,
|
|
65
|
+
* ShadowRoot.getSelection is not supported and apparently document.getSelection does not pierce the Shadow DOM, meaning you are just out of luck.
|
|
66
|
+
*
|
|
67
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot#shadowroot.getselection
|
|
68
|
+
* https://stackoverflow.com/a/70523247
|
|
69
|
+
*/
|
|
70
|
+
class ShadowSelectionPolyfill {
|
|
71
|
+
constructor() {
|
|
72
|
+
this.supportShadowSelection = typeof window.ShadowRoot.prototype['getSelection'] === 'function';
|
|
73
|
+
this.supportBeforeInput = typeof window.InputEvent.prototype.getTargetRanges === 'function';
|
|
74
|
+
this.isFirefox = window.navigator.userAgent.toLowerCase().indexOf('firefox') > 0;
|
|
75
|
+
this.listen();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* For Firefox, we directly use document.getSelection()
|
|
79
|
+
* For other browser which not support shadowroot.getSelection, we use this.selection which is built by us.
|
|
80
|
+
* For browser which supported shadowroot.getSelection, we use shadowRoot.getselection().
|
|
81
|
+
*
|
|
82
|
+
* @param {ShadowRoot} shadow - A shadow.
|
|
83
|
+
* @returns {Nullable<Selection>} - The shadow selection.
|
|
84
|
+
*/
|
|
85
|
+
getSelection(shadow) {
|
|
86
|
+
if (this.supportShadowSelection) {
|
|
87
|
+
return shadow['getSelection']();
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return this.isFirefox
|
|
91
|
+
? this.getFirefoxSelection()
|
|
92
|
+
: this.polyfilledShadowSelection;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get selection in firefox.
|
|
97
|
+
*
|
|
98
|
+
* Example:
|
|
99
|
+
*
|
|
100
|
+
* <span>span1</span><span>span2</span><span>span3</span>
|
|
101
|
+
*
|
|
102
|
+
* In firefox, while selected `span2`, the range be likely to:
|
|
103
|
+
* range:
|
|
104
|
+
* startContainer: #text 'span1'
|
|
105
|
+
* startOffset: 5
|
|
106
|
+
* endContainer: #text 'span3'
|
|
107
|
+
* endOffset: 0
|
|
108
|
+
* start is end of brefore node and end is start of after node.
|
|
109
|
+
*
|
|
110
|
+
* So we should modify the startContainer and endContainer here.
|
|
111
|
+
*
|
|
112
|
+
* modified range:
|
|
113
|
+
* startContainer: #text 'span2'
|
|
114
|
+
* startOffset: 0
|
|
115
|
+
* endContainer: #text 'span2'
|
|
116
|
+
* endOffset: 5
|
|
117
|
+
*
|
|
118
|
+
* @returns {Selection} - document selection
|
|
119
|
+
*/
|
|
120
|
+
getFirefoxSelection() {
|
|
121
|
+
const selection = document.getSelection();
|
|
122
|
+
if (selection.rangeCount > 0) {
|
|
123
|
+
const range = selection.getRangeAt(0);
|
|
124
|
+
const startNode = range.startContainer;
|
|
125
|
+
const endNode = range.endContainer;
|
|
126
|
+
if (startNode !== endNode && startNode.textContent.length === range.startOffset) {
|
|
127
|
+
const nextSibling = startNode.nodeType === Node.TEXT_NODE
|
|
128
|
+
? startNode.parentNode.nextSibling
|
|
129
|
+
: startNode.nextSibling;
|
|
130
|
+
range.setStart(nextSibling.firstChild, 0);
|
|
131
|
+
}
|
|
132
|
+
if (endNode !== startNode && range.endOffset === 0) {
|
|
133
|
+
const previousSibling = endNode.nodeType === Node.TEXT_NODE
|
|
134
|
+
? endNode.parentNode.previousSibling
|
|
135
|
+
: endNode.previousSibling;
|
|
136
|
+
range.setEnd(previousSibling.lastChild, previousSibling.lastChild.textContent.length);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return selection;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Sets up event listeners for `selectionchange` and `beforeinput` events to simulate shadow selection.
|
|
143
|
+
*/
|
|
144
|
+
listen() {
|
|
145
|
+
if (this.isFirefox || this.supportShadowSelection || !this.supportBeforeInput)
|
|
146
|
+
return;
|
|
147
|
+
this.polyfilledShadowSelection = new ShadowSelection();
|
|
148
|
+
window.addEventListener('selectionchange', () => {
|
|
149
|
+
if (!processing) {
|
|
150
|
+
processing = true;
|
|
151
|
+
const active = component.getActiveElement();
|
|
152
|
+
if (active && active.hasAttribute('contenteditable')) {
|
|
153
|
+
// This command will not actually work, it only trigger the `beforeinput` event,
|
|
154
|
+
// the `beforeinput` event will prevented this command work.
|
|
155
|
+
document.execCommand('indent');
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
this.polyfilledShadowSelection.removeAllRanges();
|
|
159
|
+
}
|
|
160
|
+
processing = false;
|
|
161
|
+
}
|
|
162
|
+
}, true);
|
|
163
|
+
window.addEventListener('beforeinput', (event) => {
|
|
164
|
+
if (processing) {
|
|
165
|
+
const ranges = event.getTargetRanges();
|
|
166
|
+
const range = ranges[0];
|
|
167
|
+
const newRange = new Range();
|
|
168
|
+
newRange.setStart(range.startContainer, range.startOffset);
|
|
169
|
+
newRange.setEnd(range.endContainer, range.endOffset);
|
|
170
|
+
this.polyfilledShadowSelection.removeAllRanges();
|
|
171
|
+
this.polyfilledShadowSelection.addRange(newRange);
|
|
172
|
+
event.preventDefault();
|
|
173
|
+
event.stopImmediatePropagation();
|
|
174
|
+
}
|
|
175
|
+
}, true);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const ShadowSelectionPolyfill$1 = new ShadowSelectionPolyfill();
|
|
179
|
+
|
|
180
|
+
var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
181
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
182
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
183
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
184
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* The current slimmer contains a task queue and will call the task after component re-render.
|
|
188
|
+
*/
|
|
189
|
+
class AutoRunWhenReRenderTaskQueueSlimmer extends globalSlimmerRegistry.VegaSlimmer {
|
|
190
|
+
constructor(maxCount) {
|
|
191
|
+
super();
|
|
192
|
+
this.autoRunTaskQueue = new synchronizeTaskQueue.SynchronizeTaskQueue(maxCount);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Update the caret position after the component re-render
|
|
196
|
+
*/
|
|
197
|
+
async executeTaskHook() {
|
|
198
|
+
if (this.autoRunTaskQueue.queue.length) {
|
|
199
|
+
await this.autoRunTaskQueue.runTask();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Push the update task to a queue.
|
|
204
|
+
*
|
|
205
|
+
* @param {boolean} [immediatelyRun] - Should the task run immediately. default is false
|
|
206
|
+
*/
|
|
207
|
+
enqueueTheTaskIntoQueue(immediatelyRun = false) {
|
|
208
|
+
void this.autoRunTaskQueue.enqueue({
|
|
209
|
+
/** Add task to the queue and run it until component did render */
|
|
210
|
+
run: async () => {
|
|
211
|
+
try {
|
|
212
|
+
await this.doTask();
|
|
213
|
+
}
|
|
214
|
+
catch (e) {
|
|
215
|
+
globalSlimmerRegistry.LogUtility.error('The auto task run failed.', e);
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
}, immediatelyRun);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
__decorate$1([
|
|
222
|
+
globalSlimmerRegistry.MapToComponentMethod('componentDidUpdate')
|
|
223
|
+
], AutoRunWhenReRenderTaskQueueSlimmer.prototype, "executeTaskHook", null);
|
|
224
|
+
|
|
225
|
+
/** Manages selection range for a rich text editor, providing methods to set, sync, and create native ranges based on RTENodes and Nodes. */
|
|
226
|
+
class RTERange {
|
|
227
|
+
/**
|
|
228
|
+
* Initial the rte range properties
|
|
229
|
+
*
|
|
230
|
+
* @param {Node} [startContainer] The range start element.
|
|
231
|
+
* @param {Node} [endContainer] The range end element.
|
|
232
|
+
* @param {number} [startOffset] The range start element content offset, default value is 0.
|
|
233
|
+
* @param {number} [endOffset] The range end element content offset, default value is 0.
|
|
234
|
+
* @param {RTENode} [startNode] The range start node, the start node could be null if the start element is root element.
|
|
235
|
+
* @param {RTENode} [endNode] The range start node, the start node could be null if the start element is root element.
|
|
236
|
+
* @param {Range} [nativeRange] The browser native range instance.
|
|
237
|
+
*/
|
|
238
|
+
constructor(startContainer, endContainer, startOffset = 0, endOffset = 0, startNode, endNode, nativeRange) {
|
|
239
|
+
this._startOffset = 0;
|
|
240
|
+
this._endOffset = 0;
|
|
241
|
+
this._startContainer = startContainer;
|
|
242
|
+
this._endContainer = endContainer;
|
|
243
|
+
this._startOffset = startOffset;
|
|
244
|
+
this._endOffset = endOffset;
|
|
245
|
+
this._startNode = startNode;
|
|
246
|
+
this._endNode = endNode;
|
|
247
|
+
if (nativeRange) {
|
|
248
|
+
this._oldNativeRange = nativeRange;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Returns the start container as a Node or null if it is not set.
|
|
253
|
+
* The start container could be null when the dom node should be create after re-render.
|
|
254
|
+
*
|
|
255
|
+
* @returns {Nullable<Node>} The range start element.
|
|
256
|
+
*/
|
|
257
|
+
get startContainer() {
|
|
258
|
+
return this._startContainer;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Returns the end container as a Node or null if it is not set.
|
|
262
|
+
* The end container could be null when the dom node should be create after re-render.
|
|
263
|
+
*
|
|
264
|
+
* @returns {Nullable<Node>} The range start element.
|
|
265
|
+
*/
|
|
266
|
+
get endContainer() {
|
|
267
|
+
return this._endContainer;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Returns the range start RTE node as a RTENode or null if it is not set.
|
|
271
|
+
* The start RTENode could be null when the range start node is the root element of the rich text editor.
|
|
272
|
+
*
|
|
273
|
+
* @returns {Nullable<RTENode>} The range start element.
|
|
274
|
+
*/
|
|
275
|
+
get startNode() {
|
|
276
|
+
return this._startNode;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Returns the range end RTE node as a RTENode or null if it is not set.
|
|
280
|
+
* The end RTENode could be null when the range end node is the root element of the rich text editor.
|
|
281
|
+
*
|
|
282
|
+
* @returns {Nullable<RTENode>} The range start element.
|
|
283
|
+
*/
|
|
284
|
+
get endNode() {
|
|
285
|
+
return this._endNode;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Returns range's start offset.
|
|
289
|
+
*
|
|
290
|
+
* @returns {number} The character length in text node or the element index of parent element.
|
|
291
|
+
*/
|
|
292
|
+
get startOffset() {
|
|
293
|
+
return this._startOffset;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Returns range's start offset.
|
|
297
|
+
*
|
|
298
|
+
* @returns {number} The character length in text node or the element index of parent element.
|
|
299
|
+
*/
|
|
300
|
+
get endOffset() {
|
|
301
|
+
return this._endOffset;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Updates the range options for a Rich Text Editor.
|
|
305
|
+
* This method will called after modify the content, the start node and end node should be rte node.
|
|
306
|
+
* This method will called after selectionchange event emit, the start node and end node should be the html node.
|
|
307
|
+
*
|
|
308
|
+
* @param {RTERangeOptions} options - An object that contains the following properties:
|
|
309
|
+
* @param {Range} [nativeRange] - The native range instance
|
|
310
|
+
* @returns {RTERange} - The new RTERange instance
|
|
311
|
+
*/
|
|
312
|
+
updateRTERange(options, nativeRange) {
|
|
313
|
+
const { startOffset, endOffset } = options;
|
|
314
|
+
this._startOffset = startOffset;
|
|
315
|
+
this._endOffset = endOffset;
|
|
316
|
+
const startNode = options.startNode;
|
|
317
|
+
const endNode = options.endNode;
|
|
318
|
+
if (startNode instanceof codeBlock.RTENode) {
|
|
319
|
+
this._startNode = startNode;
|
|
320
|
+
this._endNode = endNode;
|
|
321
|
+
const startContainer = this.getElementByRTENode(this._startNode);
|
|
322
|
+
const endContainer = this._startNode === this._endNode ? startContainer : this.getElementByRTENode(this._endNode);
|
|
323
|
+
if (startContainer) {
|
|
324
|
+
this._startContainer = startContainer;
|
|
325
|
+
this._endContainer = endContainer;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
// The selectionchange callback has a 50 ms delay, so we need to check the next range is the same as the current ret range.
|
|
330
|
+
this._startContainer = startNode;
|
|
331
|
+
this._endContainer = endNode;
|
|
332
|
+
this._startNode = this.getRTENodeByElement(this._startContainer);
|
|
333
|
+
this._endNode =
|
|
334
|
+
this._startContainer === this._endContainer
|
|
335
|
+
? this._startNode
|
|
336
|
+
: this.getRTENodeByElement(this._endContainer);
|
|
337
|
+
if (nativeRange) {
|
|
338
|
+
this._oldNativeRange = nativeRange;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return new RTERange(this._startContainer, this._endContainer, this._startOffset, this._endOffset, this._startNode, this._endNode, this._oldNativeRange);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Creates a new instance of the `RTERange` class with the same properties as the current instance.
|
|
345
|
+
*
|
|
346
|
+
* @returns {RTERange} A new `RTERange` instance with the same start and end containers, offsets, and nodes.
|
|
347
|
+
*/
|
|
348
|
+
clone() {
|
|
349
|
+
return new RTERange(this._startContainer, this._endContainer, this._startOffset, this._endOffset, this._startNode, this._endNode, this._oldNativeRange);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Creates a Range object based on start and end nodes and offsets.
|
|
353
|
+
* Invoke this method to get the future range state if the range content modified.
|
|
354
|
+
* Invoke this method to get the native range instance if range start node and end node not defined
|
|
355
|
+
*
|
|
356
|
+
* @returns {Nullable<Range>} The range instance. The return value could be null if the start node or end node are not rendered.
|
|
357
|
+
*/
|
|
358
|
+
toNativeRange() {
|
|
359
|
+
const startContainer = this.getElementByRTENode(this._startNode);
|
|
360
|
+
const endContainer = this._startNode === this._endNode ? startContainer : this.getElementByRTENode(this._endNode);
|
|
361
|
+
const range = new Range();
|
|
362
|
+
if (startContainer && endContainer) {
|
|
363
|
+
range.setStart(startContainer, this._startOffset);
|
|
364
|
+
range.setEnd(endContainer, this._endOffset);
|
|
365
|
+
this._startContainer = startContainer;
|
|
366
|
+
this._endContainer = endContainer;
|
|
367
|
+
this._oldNativeRange = range;
|
|
368
|
+
return range;
|
|
369
|
+
}
|
|
370
|
+
else if (this._oldNativeRange) {
|
|
371
|
+
return this._oldNativeRange;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Retrieves the DOM element associated with a given RTENode entity.
|
|
376
|
+
*
|
|
377
|
+
* @param {Nullable<RTENode>} node - Represents a node in a Rich Text Editor.
|
|
378
|
+
* @returns {Nullable<Node>} a Node object or null.
|
|
379
|
+
*/
|
|
380
|
+
getElementByRTENode(node) {
|
|
381
|
+
if (node) {
|
|
382
|
+
const element = codeBlock.stateEntityRenderingRegistry.getDOMByEntity(node);
|
|
383
|
+
if (element) {
|
|
384
|
+
return node instanceof codeBlock.RTEImageNode
|
|
385
|
+
? ui.findParent(element, 'vega-rich-text-image-editor')
|
|
386
|
+
: element.firstChild;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Retrieves an RTENode based on the given element by checking its type and parent elements.
|
|
392
|
+
*
|
|
393
|
+
* @param {Node} element - An element in the DOM (Document Object Model).
|
|
394
|
+
* @returns { Nullable<RTENode>} Returns a nullable `RTENode` object.
|
|
395
|
+
*/
|
|
396
|
+
getRTENodeByElement(element) {
|
|
397
|
+
if (element) {
|
|
398
|
+
const registerElement = element.nodeType === Node.TEXT_NODE
|
|
399
|
+
? element.parentElement
|
|
400
|
+
: element.nodeName === 'VEGA-RICH-TEXT-IMAGE-EDITOR'
|
|
401
|
+
? element.querySelector('img')
|
|
402
|
+
: element;
|
|
403
|
+
return codeBlock.stateEntityRenderingRegistry.getEntityByDOM(registerElement);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Represents the state of the selection in the RTE.
|
|
410
|
+
*/
|
|
411
|
+
class RTESelectionState {
|
|
412
|
+
constructor(range) {
|
|
413
|
+
this.range = range;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Clones the selection state, updating the range nodes based on the provided content.
|
|
417
|
+
*
|
|
418
|
+
* @returns {RTESelectionState} A new instance of RTESelectionState with the updated range.
|
|
419
|
+
*/
|
|
420
|
+
clone() {
|
|
421
|
+
const newRange = this.range.clone();
|
|
422
|
+
return new RTESelectionState(newRange);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
427
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
428
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
429
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
430
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
431
|
+
};
|
|
432
|
+
/**
|
|
433
|
+
* The text selection controller
|
|
434
|
+
*/
|
|
435
|
+
class SelectionController extends AutoRunWhenReRenderTaskQueueSlimmer {
|
|
436
|
+
constructor() {
|
|
437
|
+
super(1);
|
|
438
|
+
this.currentRange = new RTERange();
|
|
439
|
+
this.handleSelectionWithDebounce = timer.debounce(this.handleSelectionChange, SelectionController.SELECTION_CHANGE_DEBOUNCE_TIME, this);
|
|
440
|
+
this.pendingRestoreSelectionNodes = [];
|
|
441
|
+
/**
|
|
442
|
+
* The method invoke after the component re-render.
|
|
443
|
+
*/
|
|
444
|
+
this.doTask = async () => {
|
|
445
|
+
// add await Promise.resolve to put the code behind to a micro task
|
|
446
|
+
await Promise.resolve();
|
|
447
|
+
const range = this.currentRange.toNativeRange();
|
|
448
|
+
if (range) {
|
|
449
|
+
this.setSelectionRange(range);
|
|
450
|
+
}
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Component lifecycle - [connectedCallback]{@link VegaRichTextEditor.connectedCallback}
|
|
455
|
+
*/
|
|
456
|
+
connectedCallback() {
|
|
457
|
+
this.registerSelectionRangeChangeObserver();
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Component lifecycle - [disconnectedCallback]{@link VegaRichTextEditor.disconnectedCallback}
|
|
461
|
+
*/
|
|
462
|
+
disconnectedCallback() {
|
|
463
|
+
changeManager.ChangeManager.unregister(domNodeSubjectFactory.domNodeSubjectFactory.getSubject(this.host, vegaInternalEventId.VegaInternalRichTextEditorSelectionRangeChange), this.selectionRangeChangeObserver);
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Component lifecycle - [componentDidLoad]{@link VegaRichTextEditor.componentDidLoad}
|
|
467
|
+
*/
|
|
468
|
+
componentDidLoad() {
|
|
469
|
+
document.addEventListener('selectionchange', this.handleSelectionWithDebounce);
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Watches the internal value of the editor
|
|
473
|
+
*/
|
|
474
|
+
watchValueUpdate() {
|
|
475
|
+
this.prepareRestoreSelectionState();
|
|
476
|
+
this.restoreSelection();
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Get the current RTE selection range
|
|
480
|
+
*
|
|
481
|
+
* @returns {RTERange} - The current RTE selection range
|
|
482
|
+
*/
|
|
483
|
+
getCurrentRange() {
|
|
484
|
+
return this.currentRange;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Get the selected rich text node
|
|
488
|
+
*
|
|
489
|
+
* @returns {RTENode[]} Selected rich text nodes
|
|
490
|
+
*/
|
|
491
|
+
getSelectedNodes() {
|
|
492
|
+
return Array.from(this.selectionMap.values()).flat();
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Get the selected rich text blocks
|
|
496
|
+
*
|
|
497
|
+
* @returns {RTEBlock[]} Selected rich text blocks
|
|
498
|
+
*/
|
|
499
|
+
getSelectedBlocks() {
|
|
500
|
+
return Array.from(this.selectionMap.keys());
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Set the selection state
|
|
504
|
+
*
|
|
505
|
+
* @param {RTESelectionState} state - The selection state to set
|
|
506
|
+
*/
|
|
507
|
+
setSelectionState(state) {
|
|
508
|
+
this.selectionState = state;
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Sets the next selection state with specified start and end nodes, offsets, push the update task to a queue
|
|
512
|
+
*
|
|
513
|
+
* @param {SelectionStateType['startNode']} startNode - The starting node of the selection range. It is a Node object representing the node where the selection range starts.
|
|
514
|
+
* @param {number} startOffset - The `startNode` where the selection range should start. It indicates the position within the `startNode` where the selection should begin.
|
|
515
|
+
* @param {SelectionStateType['endNode']} [endNode] - The ending node of the selection range. If a value is provided for `endNode`, it will be used as the ending node of the selection range.
|
|
516
|
+
* @param {number} [endOffset] - The ending offset within the `endNode` where the selection range should end.
|
|
517
|
+
* @param {boolean} [immediatelyRun] - Should the task run immediately. default is false
|
|
518
|
+
*/
|
|
519
|
+
enqueueSelectionRangeFutureState(startNode, startOffset, endNode, endOffset, immediatelyRun = false) {
|
|
520
|
+
if (startNode instanceof codeBlock.RTECodeBlockNode) {
|
|
521
|
+
this.internalCodeBlockSelectionController.enqueueSelectionRangeFutureState(startNode, startOffset, immediatelyRun);
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
endNode = endNode || startNode;
|
|
525
|
+
endOffset = endOffset || endOffset === 0 ? endOffset : startOffset;
|
|
526
|
+
this.currentRange = this.currentRange.updateRTERange({
|
|
527
|
+
startNode,
|
|
528
|
+
endNode,
|
|
529
|
+
startOffset,
|
|
530
|
+
endOffset,
|
|
531
|
+
});
|
|
532
|
+
super.enqueueTheTaskIntoQueue(immediatelyRun);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Set selection with a new range
|
|
537
|
+
*
|
|
538
|
+
* @param {Range} range - The range to set
|
|
539
|
+
*/
|
|
540
|
+
setSelectionRange(range) {
|
|
541
|
+
const selection = this.getSelection();
|
|
542
|
+
if (selection) {
|
|
543
|
+
selection.removeAllRanges();
|
|
544
|
+
selection.addRange(range);
|
|
545
|
+
this.saveSelection();
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Get the rich text content selected range
|
|
550
|
+
*
|
|
551
|
+
* @returns {Selection} A [Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection) object
|
|
552
|
+
*/
|
|
553
|
+
getSelection() {
|
|
554
|
+
const richTextContentRef = this.vegaRichTextEditorRenderer.getRichTextContentRef();
|
|
555
|
+
return ShadowSelectionPolyfill$1.getSelection(richTextContentRef.shadowRoot);
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Save the current selection range detail
|
|
559
|
+
*/
|
|
560
|
+
saveSelection() {
|
|
561
|
+
const selection = this.getSelection();
|
|
562
|
+
// The range is out of date if the queue is not empty, or the range is update by the composition text insert, so we should not update the RTERange
|
|
563
|
+
if (selection &&
|
|
564
|
+
selection.rangeCount > 0 &&
|
|
565
|
+
this.autoRunTaskQueue.queue.length === 0 &&
|
|
566
|
+
!this.insertCompositionTextController.isComposing()) {
|
|
567
|
+
const range = selection.getRangeAt(0);
|
|
568
|
+
const { startContainer: startNode, endContainer: endNode, startOffset, endOffset } = range;
|
|
569
|
+
this.currentRange = this.currentRange.updateRTERange({ startNode, endNode, startOffset, endOffset }, range);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
/**
|
|
573
|
+
* Restore the selection to the current selected nodes
|
|
574
|
+
*/
|
|
575
|
+
restoreSelection() {
|
|
576
|
+
if (this.selectionState) {
|
|
577
|
+
const { startNode, endNode, startOffset, endOffset } = this.selectionState.range;
|
|
578
|
+
if (startNode instanceof codeBlock.RTETextNode && startNode === endNode && startNode.text.length === 0) {
|
|
579
|
+
this.enqueueSelectionRangeFutureState(startNode, codeBlock.ZERO_WIDTH_SPACE.length);
|
|
580
|
+
}
|
|
581
|
+
else {
|
|
582
|
+
this.enqueueSelectionRangeFutureState(startNode, startOffset, endNode, endOffset);
|
|
583
|
+
}
|
|
584
|
+
this.selectionState = null;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Get selected rich text
|
|
589
|
+
*/
|
|
590
|
+
handleSelectionChange() {
|
|
591
|
+
if (this.disabled || this.sourceView)
|
|
592
|
+
return;
|
|
593
|
+
const selection = this.getSelection();
|
|
594
|
+
if (!selection || selection.rangeCount === 0)
|
|
595
|
+
return;
|
|
596
|
+
this.clearSelectionMap();
|
|
597
|
+
this.saveSelection();
|
|
598
|
+
const range = selection.getRangeAt(0);
|
|
599
|
+
const commonAncestor = range.commonAncestorContainer;
|
|
600
|
+
const selectedNodes = [];
|
|
601
|
+
/**
|
|
602
|
+
* Rich text node filter
|
|
603
|
+
*
|
|
604
|
+
* @param {Node} node - Start node
|
|
605
|
+
*/
|
|
606
|
+
const filterNode = (node) => {
|
|
607
|
+
if (!range.intersectsNode(node)) {
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
611
|
+
const currentNode = node.parentElement;
|
|
612
|
+
const nodeEntity = codeBlock.stateEntityRenderingRegistry.getEntityByDOM(currentNode);
|
|
613
|
+
if (nodeEntity instanceof codeBlock.RTENode) {
|
|
614
|
+
selectedNodes.push(nodeEntity);
|
|
615
|
+
return;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
619
|
+
const entityElement = node.nodeName === 'VEGA-RICH-TEXT-IMAGE-EDITOR'
|
|
620
|
+
? node.querySelector('img')
|
|
621
|
+
: node;
|
|
622
|
+
const nodeEntity = codeBlock.stateEntityRenderingRegistry.getEntityByDOM(entityElement);
|
|
623
|
+
if (nodeEntity instanceof codeBlock.RTECodeBlock) {
|
|
624
|
+
if (this.internalCodeBlockSelectionController.isCodeBlockSelected(nodeEntity, range)) {
|
|
625
|
+
selectedNodes.push(nodeEntity.nodes[0]);
|
|
626
|
+
}
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
if (nodeEntity instanceof codeBlock.RTENode) {
|
|
630
|
+
selectedNodes.push(nodeEntity);
|
|
631
|
+
return;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
node.childNodes.forEach(filterNode);
|
|
635
|
+
};
|
|
636
|
+
filterNode(commonAncestor);
|
|
637
|
+
selectedNodes.forEach((node) => {
|
|
638
|
+
if (this.selectionMap.has(node.parentBlock)) {
|
|
639
|
+
this.selectionMap.get(node.parentBlock).push(node);
|
|
640
|
+
}
|
|
641
|
+
else {
|
|
642
|
+
this.selectionMap.set(node.parentBlock, [node]);
|
|
643
|
+
}
|
|
644
|
+
});
|
|
645
|
+
this.getSelectedNodes().forEach((node) => node.apply(new codeBlock.SelectionChangeAction(range)));
|
|
646
|
+
}
|
|
647
|
+
/**
|
|
648
|
+
* Clear the selection map.
|
|
649
|
+
* The code node don't need clear here, because the code node will manager the selection state itself. `code-node-renderer.tsx#handleSelectionChange`
|
|
650
|
+
*/
|
|
651
|
+
clearSelectionMap() {
|
|
652
|
+
this.getSelectedNodes()
|
|
653
|
+
.filter((node) => node.type !== 'CODE_BLOCK_NODE')
|
|
654
|
+
.forEach((node) => {
|
|
655
|
+
node.annotationMap.delete(codeBlock.InternalAnnotationTypeEnum.SELECTION_RANGE);
|
|
656
|
+
});
|
|
657
|
+
this.selectionMap = new Map();
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Check if the selection range change is acceptable
|
|
661
|
+
*
|
|
662
|
+
* @returns {boolean} - Returns a boolean value.
|
|
663
|
+
*/
|
|
664
|
+
isAcceptableSelectionRangeChange() {
|
|
665
|
+
return true;
|
|
666
|
+
}
|
|
667
|
+
/**
|
|
668
|
+
* Register the selection range change observer
|
|
669
|
+
*/
|
|
670
|
+
registerSelectionRangeChangeObserver() {
|
|
671
|
+
this.selectionRangeChangeObserver = new observer.Observer(this.isAcceptableSelectionRangeChange.bind(this), (payload) => {
|
|
672
|
+
if (!payload.updateDirectly) {
|
|
673
|
+
this.pendingRestoreSelectionNodes.push(payload.node);
|
|
674
|
+
}
|
|
675
|
+
else {
|
|
676
|
+
this.enqueueSelectionRangeFutureState(payload.node, payload.offset);
|
|
677
|
+
}
|
|
678
|
+
});
|
|
679
|
+
changeManager.ChangeManager.register(domNodeSubjectFactory.domNodeSubjectFactory.getSubject(this.host, vegaInternalEventId.VegaInternalRichTextEditorSelectionRangeChange), this.selectionRangeChangeObserver);
|
|
680
|
+
}
|
|
681
|
+
/**
|
|
682
|
+
* Prepare the selection state to restore
|
|
683
|
+
*/
|
|
684
|
+
prepareRestoreSelectionState() {
|
|
685
|
+
if (this.pendingRestoreSelectionNodes.length > 0) {
|
|
686
|
+
const startNode = this.pendingRestoreSelectionNodes[0];
|
|
687
|
+
const endNode = this.pendingRestoreSelectionNodes.length > 1
|
|
688
|
+
? this.pendingRestoreSelectionNodes[this.pendingRestoreSelectionNodes.length - 1]
|
|
689
|
+
: startNode;
|
|
690
|
+
const { startOffset, endOffset, endContainer, startContainer } = this.currentRange;
|
|
691
|
+
const nodesInCurrentRange = startContainer &&
|
|
692
|
+
codeBlock.stateEntityRenderingRegistry.getDOMByEntity(startNode) === startContainer.parentElement &&
|
|
693
|
+
endContainer &&
|
|
694
|
+
codeBlock.stateEntityRenderingRegistry.getDOMByEntity(endNode) === endContainer.parentElement;
|
|
695
|
+
if (nodesInCurrentRange) {
|
|
696
|
+
this.currentRange = this.currentRange.updateRTERange({
|
|
697
|
+
startNode,
|
|
698
|
+
endNode,
|
|
699
|
+
startOffset,
|
|
700
|
+
endOffset,
|
|
701
|
+
});
|
|
702
|
+
this.selectionState = new RTESelectionState(this.currentRange);
|
|
703
|
+
}
|
|
704
|
+
else {
|
|
705
|
+
this.currentRange = this.currentRange.updateRTERange({
|
|
706
|
+
startNode,
|
|
707
|
+
endNode,
|
|
708
|
+
startOffset: 0,
|
|
709
|
+
endOffset: endNode.text.length,
|
|
710
|
+
});
|
|
711
|
+
this.selectionState = new RTESelectionState(this.currentRange);
|
|
712
|
+
}
|
|
713
|
+
this.pendingRestoreSelectionNodes = [];
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
SelectionController.SELECTION_CHANGE_DEBOUNCE_TIME = 50;
|
|
718
|
+
__decorate([
|
|
719
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
720
|
+
], SelectionController.prototype, "vegaRichTextEditorRenderer", void 0);
|
|
721
|
+
__decorate([
|
|
722
|
+
globalSlimmerRegistry.MapToComponentField({ writable: true })
|
|
723
|
+
], SelectionController.prototype, "selectionMap", void 0);
|
|
724
|
+
__decorate([
|
|
725
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
726
|
+
], SelectionController.prototype, "host", void 0);
|
|
727
|
+
__decorate([
|
|
728
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
729
|
+
], SelectionController.prototype, "value", void 0);
|
|
730
|
+
__decorate([
|
|
731
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
732
|
+
], SelectionController.prototype, "disabled", void 0);
|
|
733
|
+
__decorate([
|
|
734
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
735
|
+
], SelectionController.prototype, "sourceView", void 0);
|
|
736
|
+
__decorate([
|
|
737
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
738
|
+
], SelectionController.prototype, "valueController", void 0);
|
|
739
|
+
__decorate([
|
|
740
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
741
|
+
], SelectionController.prototype, "insertCompositionTextController", void 0);
|
|
742
|
+
__decorate([
|
|
743
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
744
|
+
], SelectionController.prototype, "historyController", void 0);
|
|
745
|
+
__decorate([
|
|
746
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
747
|
+
], SelectionController.prototype, "internalCodeBlockSelectionController", void 0);
|
|
748
|
+
__decorate([
|
|
749
|
+
globalSlimmerRegistry.MapToComponentMethod('connectedCallback')
|
|
750
|
+
], SelectionController.prototype, "connectedCallback", null);
|
|
751
|
+
__decorate([
|
|
752
|
+
globalSlimmerRegistry.MapToComponentMethod('disconnectedCallback')
|
|
753
|
+
], SelectionController.prototype, "disconnectedCallback", null);
|
|
754
|
+
__decorate([
|
|
755
|
+
globalSlimmerRegistry.MapToComponentMethod('componentDidLoad')
|
|
756
|
+
], SelectionController.prototype, "componentDidLoad", null);
|
|
757
|
+
__decorate([
|
|
758
|
+
globalSlimmerRegistry.MapToComponentMethod('watchValueUpdate')
|
|
759
|
+
], SelectionController.prototype, "watchValueUpdate", null);
|
|
760
|
+
|
|
761
|
+
exports.AutoRunWhenReRenderTaskQueueSlimmer = AutoRunWhenReRenderTaskQueueSlimmer;
|
|
762
|
+
exports.RTESelectionState = RTESelectionState;
|
|
763
|
+
exports.SelectionController = SelectionController;
|
|
764
|
+
exports.ShadowSelection = ShadowSelection;
|
|
765
|
+
exports.ShadowSelectionPolyfill = ShadowSelectionPolyfill$1;
|