@globalpayments/vega 2.92.0 → 2.94.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/dist/cjs/{app-globals-2f326662.js → app-globals-d05c3410.js} +14 -9
- package/dist/cjs/{child-nodes-event-prevent-slimmer-b9a5b3e2.js → child-nodes-event-prevent-slimmer-e67ee84c.js} +1 -1
- package/dist/cjs/{code-block-6435d641.js → code-block-493c7ce7.js} +117 -31
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-e4c9a5ba.js → component-value-history-controller-slimmer.abstract-ab21fcbf.js} +72 -39
- package/dist/cjs/{content-state-96ec9114.js → content-state-fc34a814.js} +61 -7
- package/dist/cjs/{date-required-rule-8c9e312b.js → date-required-rule-4ab06a82.js} +1 -1
- package/dist/cjs/{design-token-3548af29.js → design-token-d3d12fa0.js} +3 -3
- package/dist/cjs/{element-appender-slimmer-3bf69990.js → element-appender-slimmer-1d6323c2.js} +17 -8
- package/dist/cjs/{event-emit-slimmer-5bab10c2.js → event-emit-slimmer-d234a619.js} +1 -1
- package/dist/cjs/{form-field-controller-slimmer-e0efac05.js → form-field-controller-slimmer-d638ba12.js} +1 -1
- package/dist/cjs/{image-annotation-action-853f72c8.js → image-annotation-action-7c4cd316.js} +4 -4
- package/dist/cjs/image-extension-30a7c10f.js +56 -0
- package/dist/cjs/index.cjs.js +24 -19
- package/dist/cjs/{inject-keyboard-manager-0dccff1a.js → inject-keyboard-manager-5a105612.js} +1 -1
- package/dist/cjs/{internal-calendar-period-factory-6187ec4c.js → internal-calendar-period-factory-b76006f7.js} +1 -1
- package/dist/cjs/{internal-translation-controller-48ebfd0f.js → internal-translation-controller-eb02c3b1.js} +6 -0
- package/dist/cjs/{internal-vega-event-manager-7196a847.js → internal-vega-event-manager-13c4012b.js} +2 -1
- package/dist/cjs/{keyboard-manager-dfe8d924.js → keyboard-manager-ca76d4dc.js} +1 -1
- package/dist/cjs/{keyboard-manager-slimmer-4a2560a1.js → keyboard-manager-slimmer-a1223714.js} +1 -1
- package/dist/cjs/{link-extension-28d95849.js → link-extension-92a63cb7.js} +3 -3
- package/dist/cjs/loader.cjs.js +14 -14
- package/dist/cjs/{month-view-generator-2e59b188.js → month-view-generator-876c50d4.js} +1 -1
- package/dist/cjs/{public-rules-8727c42c.js → public-rules-9e1ea1d9.js} +7 -7
- package/dist/cjs/{range-5cb3d1e4.js → range-30219330.js} +1 -1
- package/dist/cjs/{responsive-format-facade-98b89142.js → responsive-format-facade-25e9f30d.js} +1 -1
- package/dist/cjs/{rich-text-editor-required-rule-8e4d577d.js → rich-text-editor-required-rule-23bf7485.js} +1 -1
- package/dist/cjs/{split-cell-operation-9e3ab88d.js → split-cell-operation-43752212.js} +3 -3
- package/dist/cjs/{state-border-formatter-626b0a14.js → state-border-formatter-f1ce0f3b.js} +1 -1
- package/dist/cjs/{string-format-strategy.abstract-981f43e1.js → string-format-strategy.abstract-b22f7754.js} +1 -1
- package/dist/cjs/{string-input-formatter-slimmer-fc4a0ba5.js → string-input-formatter-slimmer-d2c248f7.js} +1 -1
- package/dist/cjs/{string-mask-strategy-b47fa159.js → string-mask-strategy-fc01a500.js} +2 -2
- package/dist/cjs/{style-formatter-baf18624.js → style-formatter-73205450.js} +2 -2
- package/dist/cjs/{time-required-rule-e77d174f.js → time-required-rule-12d2f394.js} +1 -1
- package/dist/cjs/{token-extension-3aec039f.js → token-extension-ea891d54.js} +3318 -1742
- package/dist/cjs/{translation-slimmer-1e05769e.js → translation-slimmer-9099f56c.js} +1 -1
- package/dist/cjs/{type-guard-7ab48d6c.js → type-guard-f354af8b.js} +1 -1
- package/dist/cjs/{valid-credit-card-number-rule-52ba9c67.js → valid-credit-card-number-rule-8d370163.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +9 -9
- package/dist/cjs/vega-app-footer.cjs.entry.js +3 -3
- package/dist/cjs/vega-app-header-button.cjs.entry.js +9 -9
- package/dist/cjs/vega-banner.cjs.entry.js +3 -3
- package/dist/cjs/vega-box.cjs.entry.js +6 -6
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
- package/dist/cjs/vega-button-circle.cjs.entry.js +9 -9
- package/dist/cjs/vega-button-group_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
- package/dist/cjs/vega-button.cjs.entry.js +12 -9
- package/dist/cjs/vega-calendar_5.cjs.entry.js +11 -11
- package/dist/cjs/vega-card.cjs.entry.js +5 -5
- package/dist/cjs/vega-carousel.cjs.entry.js +6 -6
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-chip.cjs.entry.js +9 -9
- package/dist/cjs/vega-code-block.cjs.entry.js +12 -12
- package/dist/cjs/vega-color-picker.cjs.entry.js +5 -5
- package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +7 -7
- package/dist/cjs/vega-color-swatch.cjs.entry.js +5 -5
- package/dist/cjs/vega-combo-box.cjs.entry.js +19 -13
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +17 -17
- package/dist/cjs/vega-dialog_2.cjs.entry.js +20 -9
- package/dist/cjs/vega-divider.cjs.entry.js +5 -5
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +693 -195
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/{vega-event-id-df22d80e.js → vega-event-id-58afed7a.js} +2 -0
- package/dist/cjs/vega-field-label.cjs.entry.js +5 -5
- package/dist/cjs/vega-file-uploader.cjs.entry.js +6 -6
- package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
- package/dist/cjs/vega-flex.cjs.entry.js +6 -6
- package/dist/cjs/vega-font.cjs.entry.js +5 -5
- package/dist/cjs/vega-form.cjs.entry.js +7 -7
- package/dist/cjs/vega-grid.cjs.entry.js +5 -5
- package/dist/cjs/vega-icon.cjs.entry.js +5 -5
- package/dist/cjs/vega-image-uploader.cjs.entry.js +9 -9
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +10 -10
- package/dist/cjs/vega-input-numeric.cjs.entry.js +9 -9
- package/dist/cjs/vega-input-passcode.cjs.entry.js +9 -9
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +8 -8
- package/dist/cjs/vega-input-range.cjs.entry.js +7 -7
- package/dist/cjs/vega-input-select.cjs.entry.js +9 -9
- package/dist/cjs/vega-input.cjs.entry.js +9 -9
- package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +316 -111
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +3 -3
- package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +3 -3
- package/dist/cjs/vega-pagination.cjs.entry.js +8 -8
- package/dist/cjs/vega-popover_2.cjs.entry.js +11 -11
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-radio_2.cjs.entry.js +9 -9
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +7 -7
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +510 -73
- package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +4 -4
- package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +8 -8
- package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +15 -15
- package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +8 -8
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +6 -6
- package/dist/cjs/vega-signature-capture.cjs.entry.js +10 -10
- package/dist/cjs/vega-stepper.cjs.entry.js +6 -6
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-table_11.cjs.entry.js +968 -425
- package/dist/cjs/vega-textarea.cjs.entry.js +7 -9
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +34 -14
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +5 -5
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
- package/dist/cjs/vega.cjs.js +14 -14
- package/dist/collection/components/vega-button/vega-button.css +4 -0
- package/dist/collection/components/vega-button/vega-button.js +4 -1
- package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +4 -1
- package/dist/collection/components/vega-combo-box/vega-combo-box.js +7 -1
- package/dist/collection/components/vega-dialog/vega-dialog.js +1 -1
- package/dist/collection/components/vega-dropdown/constants.js +1 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +9 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.js +97 -4
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-select-all-controller.js +219 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-selected-controller.js +78 -13
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.js +13 -1
- package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.js +7 -0
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.js +52 -1
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +4 -1
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.js +5 -0
- package/dist/collection/components/vega-dropdown/vega-dropdown.js +126 -1
- package/dist/collection/components/vega-field-label/vega-field-label.js +1 -1
- package/dist/collection/components/vega-hint/vega-hint.js +1 -1
- package/dist/collection/components/vega-modal/slimmers/renderers/vega-modal-renderer.js +4 -1
- package/dist/collection/components/vega-modal/vega-modal.css +0 -1
- package/dist/collection/components/vega-modal/vega-modal.js +38 -0
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-auto-collapse-controller.js +4 -6
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-controller.js +23 -68
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.js +74 -0
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.js +16 -2
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-zindex-controller.js +2 -2
- package/dist/collection/components/vega-nav/vega-left-nav/vega-left-nav.js +7 -2
- package/dist/collection/components/vega-rich-text-editor/assets/redo.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/assets/undo.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-strategy.js +11 -5
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-text-node-strategy.js +9 -4
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/paste-content-strategy.js +61 -5
- package/dist/collection/components/vega-rich-text-editor/dto/actions/paste-content-action.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/custom-style-annotation.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/code-block/code-node-filter-styles-strategy.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +6 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-interceptors/blockquote-exit-on-enter-interceptor.js +61 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/block-transform-to-blockquote-strategy.js +40 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/remove-blockquote-strategy.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/actions/remove-blockquote-action.js +17 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/actions/transform-to-blockquote-action.js +19 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/assets/quote-left.js +4 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/blockquote-extension.js +47 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/dto/blockquote-annotation.js +76 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/dto/rte-blockquote-block.js +70 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/element-to-dto-strategies/blockquote-to-blockquote-block-strategy.js +53 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/filter-styles-strategies/blockquote-block/blockquote-filter-styles-strategy.js +41 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-block-renderer.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.js +260 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.js +21 -7
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-enter.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-exit.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/controller/fullscreen-controller.js +156 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-extension.js +31 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.js +73 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/image/image-extension.js +34 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/image/type.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/assets/paste.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.js +145 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-constants.js +6 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-extension.js +442 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-toolbar-popover-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +4 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/helpers/utils.js +85 -15
- package/dist/collection/components/vega-rich-text-editor/public-api.js +5 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-line-break-handler.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +385 -25
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +69 -36
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +59 -14
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-color-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.js +11 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.js +19 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.js +6 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.js +28 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-image-editor/vega-rich-text-image-editor.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.js +1 -1
- package/dist/collection/components/vega-table/slimmers/controllers/dto/column-render-input-model.js +32 -0
- package/dist/collection/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.js +77 -0
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.js +121 -0
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-cell-renderer.js +41 -14
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.js +207 -7
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-row-renderer.js +16 -3
- package/dist/collection/components/vega-table/vega-table-cell/vega-table-cell.js +113 -11
- package/dist/collection/components/vega-table/vega-table-expand-row/slimmers/controllers/vega-table-expand-row-col-span-controller.js +11 -2
- package/dist/collection/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.js +5 -1
- package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.js +22 -1
- package/dist/collection/components/vega-table/vega-table.css +5 -0
- package/dist/collection/components/vega-table/vega-table.js +5 -0
- package/dist/collection/components/vega-text/vega-text.js +1 -1
- package/dist/collection/components/vega-textarea/vega-textarea.js +1 -3
- package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-range-dropdown-controller.js +4 -0
- package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-single-dropdown-controller.js +4 -0
- package/dist/collection/components/vega-time-picker/vega-time-picker.js +39 -0
- package/dist/collection/constants/ui.js +1 -0
- package/dist/collection/global/scripts/before-vega-load.js +8 -0
- package/dist/collection/helpers/backdrop/index.js +1 -0
- package/dist/collection/helpers/backdrop/shared-backdrop-manager.js +163 -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-event-id.js +1 -0
- package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +11 -4
- package/dist/collection/helpers/translation/locales/en.js +6 -0
- package/dist/collection/helpers/ui/element-appender.js +5 -2
- package/dist/esm/{app-globals-5e0d319a.js → app-globals-f2336686.js} +14 -9
- package/dist/esm/{child-nodes-event-prevent-slimmer-f24618c5.js → child-nodes-event-prevent-slimmer-96c14f5a.js} +1 -1
- package/dist/esm/{code-block-b71b2aa4.js → code-block-e12588fe.js} +117 -32
- package/dist/esm/{component-value-history-controller-slimmer.abstract-282df6e5.js → component-value-history-controller-slimmer.abstract-4e8eb313.js} +72 -39
- package/dist/esm/{content-state-909099f8.js → content-state-8032467a.js} +61 -7
- package/dist/esm/{date-required-rule-15edb04a.js → date-required-rule-b88e1650.js} +1 -1
- package/dist/esm/{design-token-cb5ed6b9.js → design-token-76bd217c.js} +3 -3
- package/dist/esm/{element-appender-slimmer-e41120ee.js → element-appender-slimmer-7fcb944b.js} +17 -8
- package/dist/esm/{event-emit-slimmer-03deba18.js → event-emit-slimmer-db4a82e0.js} +1 -1
- package/dist/esm/{form-field-controller-slimmer-cfe1d8a7.js → form-field-controller-slimmer-395c23e3.js} +1 -1
- package/dist/esm/{image-annotation-action-98232dc4.js → image-annotation-action-b3b6c308.js} +4 -4
- package/dist/esm/image-extension-b6c7e4a7.js +53 -0
- package/dist/esm/index.js +19 -19
- package/dist/esm/{inject-keyboard-manager-13cc77ab.js → inject-keyboard-manager-86126b5b.js} +1 -1
- package/dist/esm/{internal-calendar-period-factory-c3d70f3b.js → internal-calendar-period-factory-3a07dba0.js} +1 -1
- package/dist/esm/{internal-translation-controller-8e8a514a.js → internal-translation-controller-16709132.js} +6 -0
- package/dist/esm/{internal-vega-event-manager-75e5e3bb.js → internal-vega-event-manager-48690e5b.js} +2 -1
- package/dist/esm/{keyboard-manager-fe885db1.js → keyboard-manager-a0c3e1cf.js} +1 -1
- package/dist/esm/{keyboard-manager-slimmer-61d4c79b.js → keyboard-manager-slimmer-f3f66c15.js} +1 -1
- package/dist/esm/{link-extension-f1a3bea7.js → link-extension-97fcb8fb.js} +3 -3
- package/dist/esm/loader.js +14 -14
- package/dist/esm/{month-view-generator-85eecb95.js → month-view-generator-fd0e1856.js} +1 -1
- package/dist/esm/{public-rules-323bea4b.js → public-rules-c06f0d2a.js} +7 -7
- package/dist/esm/{range-e63068d1.js → range-e999837f.js} +1 -1
- package/dist/esm/{responsive-format-facade-fb424f5b.js → responsive-format-facade-ced96b0b.js} +1 -1
- package/dist/esm/{rich-text-editor-required-rule-0edb8ba7.js → rich-text-editor-required-rule-71f8ee98.js} +1 -1
- package/dist/esm/{split-cell-operation-93b4d775.js → split-cell-operation-359f8082.js} +3 -3
- package/dist/esm/{state-border-formatter-1a528ca4.js → state-border-formatter-b680e922.js} +1 -1
- package/dist/esm/{string-format-strategy.abstract-72fc98aa.js → string-format-strategy.abstract-23faab71.js} +1 -1
- package/dist/esm/{string-input-formatter-slimmer-b0c480d8.js → string-input-formatter-slimmer-4b4866a6.js} +1 -1
- package/dist/esm/{string-mask-strategy-4e00c173.js → string-mask-strategy-66586cd8.js} +2 -2
- package/dist/esm/{style-formatter-5c1bea8d.js → style-formatter-f4e16af5.js} +2 -2
- package/dist/esm/{time-required-rule-df500b14.js → time-required-rule-6e80a9ab.js} +1 -1
- package/dist/esm/{token-extension-32d1fa56.js → token-extension-9896879b.js} +3314 -1742
- package/dist/esm/{translation-slimmer-60408f13.js → translation-slimmer-21748a0e.js} +1 -1
- package/dist/esm/{type-guard-91087018.js → type-guard-ec5e8628.js} +1 -1
- package/dist/esm/{valid-credit-card-number-rule-681ecb75.js → valid-credit-card-number-rule-ca5a47d6.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +9 -9
- package/dist/esm/vega-app-footer.entry.js +3 -3
- package/dist/esm/vega-app-header-button.entry.js +9 -9
- package/dist/esm/vega-banner.entry.js +3 -3
- package/dist/esm/vega-box.entry.js +6 -6
- package/dist/esm/vega-breadcrumb.entry.js +4 -4
- package/dist/esm/vega-button-circle.entry.js +9 -9
- package/dist/esm/vega-button-group_2.entry.js +4 -4
- package/dist/esm/vega-button-link.entry.js +4 -4
- package/dist/esm/vega-button.entry.js +12 -9
- package/dist/esm/vega-calendar_5.entry.js +11 -11
- package/dist/esm/vega-card.entry.js +5 -5
- package/dist/esm/vega-carousel.entry.js +6 -6
- package/dist/esm/vega-checkbox_2.entry.js +6 -6
- package/dist/esm/vega-chip.entry.js +9 -9
- package/dist/esm/vega-code-block.entry.js +12 -12
- package/dist/esm/vega-color-picker.entry.js +5 -5
- package/dist/esm/vega-color-swatch-picker.entry.js +7 -7
- package/dist/esm/vega-color-swatch.entry.js +5 -5
- package/dist/esm/vega-combo-box.entry.js +19 -13
- package/dist/esm/vega-date-picker_2.entry.js +17 -17
- package/dist/esm/vega-dialog_2.entry.js +20 -9
- package/dist/esm/vega-divider.entry.js +5 -5
- package/dist/esm/vega-dropdown_5.entry.js +695 -197
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/{vega-event-id-d3017041.js → vega-event-id-270fe47e.js} +2 -1
- package/dist/esm/vega-field-label.entry.js +5 -5
- package/dist/esm/vega-file-uploader.entry.js +6 -6
- package/dist/esm/vega-flag-icon.entry.js +5 -5
- package/dist/esm/vega-flex.entry.js +6 -6
- package/dist/esm/vega-font.entry.js +5 -5
- package/dist/esm/vega-form.entry.js +7 -7
- package/dist/esm/vega-grid.entry.js +5 -5
- package/dist/esm/vega-icon.entry.js +5 -5
- package/dist/esm/vega-image-uploader.entry.js +9 -9
- package/dist/esm/vega-input-credit-card.entry.js +10 -10
- package/dist/esm/vega-input-numeric.entry.js +9 -9
- package/dist/esm/vega-input-passcode.entry.js +9 -9
- package/dist/esm/vega-input-phone-number.entry.js +8 -8
- package/dist/esm/vega-input-range.entry.js +7 -7
- package/dist/esm/vega-input-select.entry.js +9 -9
- package/dist/esm/vega-input.entry.js +9 -9
- package/dist/esm/vega-item-toggle.entry.js +3 -3
- package/dist/esm/vega-left-nav_5.entry.js +316 -111
- package/dist/esm/vega-loader-wrapper_2.entry.js +3 -3
- package/dist/esm/vega-page-notification_2.entry.js +1 -1
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +3 -3
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +3 -3
- package/dist/esm/vega-pagination.entry.js +8 -8
- package/dist/esm/vega-popover_2.entry.js +11 -11
- package/dist/esm/vega-progress-tracker_2.entry.js +6 -6
- package/dist/esm/vega-radio_2.entry.js +9 -9
- package/dist/esm/vega-rich-text-content.entry.js +7 -7
- package/dist/esm/vega-rich-text-editor_4.entry.js +507 -70
- package/dist/esm/vega-rich-text-find-replace-panel.entry.js +4 -4
- package/dist/esm/vega-rich-text-special-characters-panel.entry.js +8 -8
- package/dist/esm/vega-rich-text-table-properties_3.entry.js +15 -15
- package/dist/esm/vega-segment-control.entry.js +3 -3
- package/dist/esm/vega-selection-chip_2.entry.js +8 -8
- package/dist/esm/vega-selection-tile_2.entry.js +6 -6
- package/dist/esm/vega-sidenav_3.entry.js +6 -6
- package/dist/esm/vega-signature-capture.entry.js +10 -10
- package/dist/esm/vega-stepper.entry.js +6 -6
- package/dist/esm/vega-tab-group_2.entry.js +4 -4
- package/dist/esm/vega-table_11.entry.js +968 -425
- package/dist/esm/vega-textarea.entry.js +7 -9
- package/dist/esm/vega-time-picker_2.entry.js +34 -14
- package/dist/esm/vega-toggle-switch.entry.js +5 -5
- package/dist/esm/vega-tooltip_2.entry.js +6 -6
- package/dist/esm/vega.js +14 -14
- package/dist/sri/vega-sri-manifest.json +356 -356
- package/dist/types/components/vega-combo-box/types.d.ts +6 -1
- package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +1 -0
- package/dist/types/components/vega-dropdown/constants.d.ts +1 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +2 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.d.ts +36 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-select-all-controller.d.ts +107 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-selected-controller.d.ts +17 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.d.ts +5 -0
- package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.d.ts +2 -0
- package/dist/types/components/vega-dropdown/types.d.ts +8 -0
- package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.d.ts +25 -0
- package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.d.ts +1 -0
- package/dist/types/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.d.ts +4 -0
- package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +48 -0
- package/dist/types/components/vega-modal/slimmers/renderers/vega-modal-renderer.d.ts +2 -1
- package/dist/types/components/vega-modal/vega-modal.d.ts +9 -1
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-auto-collapse-controller.d.ts +0 -1
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-controller.d.ts +12 -19
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.d.ts +41 -0
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.d.ts +4 -1
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-zindex-controller.d.ts +1 -1
- package/dist/types/components/vega-nav/vega-left-nav/vega-left-nav.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/paste-content-strategy.d.ts +14 -4
- package/dist/types/components/vega-rich-text-editor/dto/actions/paste-content-action.d.ts +7 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-interceptors/blockquote-exit-on-enter-interceptor.d.ts +34 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/block-transform-to-blockquote-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/remove-blockquote-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/actions/remove-blockquote-action.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/actions/transform-to-blockquote-action.d.ts +18 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/assets/quote-left.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/blockquote-extension.d.ts +9 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/dto/blockquote-annotation.d.ts +48 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/dto/rte-blockquote-block.d.ts +56 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/element-to-dto-strategies/blockquote-to-blockquote-block-strategy.d.ts +35 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/filter-styles-strategies/blockquote-block/blockquote-filter-styles-strategy.d.ts +31 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-block-renderer.d.ts +18 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.d.ts +113 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.d.ts +15 -4
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-enter.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-exit.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/controller/fullscreen-controller.d.ts +63 -0
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-extension.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.d.ts +40 -0
- package/dist/types/components/vega-rich-text-editor/extensions/image/image-extension.d.ts +27 -0
- package/dist/types/components/vega-rich-text-editor/extensions/image/type.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/assets/paste.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.d.ts +58 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-constants.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-extension.d.ts +150 -0
- package/dist/types/components/vega-rich-text-editor/helpers/utils.d.ts +26 -0
- package/dist/types/components/vega-rich-text-editor/interface.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/public-api.d.ts +5 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.d.ts +114 -3
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/selection-controller.d.ts +22 -13
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +10 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.d.ts +5 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +4 -4
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-image-editor/vega-rich-text-image-editor.d.ts +1 -1
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.d.ts +1 -1
- package/dist/types/components/vega-table/interface.d.ts +31 -0
- package/dist/types/components/vega-table/slimmers/controllers/dto/column-render-input-model.d.ts +13 -0
- package/dist/types/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.d.ts +43 -0
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.d.ts +38 -0
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-cell-renderer.d.ts +11 -2
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.d.ts +4 -0
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-row-renderer.d.ts +1 -0
- package/dist/types/components/vega-table/vega-table-cell/slimmers/controllers/vega-table-row-state-subscriber.d.ts +1 -1
- package/dist/types/components/vega-table/vega-table-cell/vega-table-cell.d.ts +23 -0
- package/dist/types/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.d.ts +1 -0
- package/dist/types/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.d.ts +9 -0
- package/dist/types/components/vega-table/vega-table.d.ts +2 -0
- package/dist/types/components/vega-time-picker/slimmers/controllers/vega-time-picker-range-dropdown-controller.d.ts +1 -0
- package/dist/types/components/vega-time-picker/slimmers/controllers/vega-time-picker-single-dropdown-controller.d.ts +1 -0
- package/dist/types/components/vega-time-picker/types.d.ts +7 -0
- package/dist/types/components/vega-time-picker/vega-time-picker.d.ts +11 -1
- package/dist/types/components.d.ts +90 -3
- package/dist/types/constants/ui.d.ts +1 -1
- package/dist/types/helpers/backdrop/index.d.ts +1 -0
- package/dist/types/helpers/backdrop/shared-backdrop-manager.d.ts +67 -0
- package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
- package/dist/types/helpers/translation/interface.d.ts +7 -0
- package/dist/types/helpers/ui/element-appender.d.ts +4 -1
- package/dist/types/types/components.type.d.ts +5 -1
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-92823583.js → p-02355de8.js} +1 -1
- package/dist/vega/{p-481601c0.entry.js → p-0af32f31.entry.js} +1 -1
- package/dist/vega/{p-438b7404.entry.js → p-0b311599.entry.js} +1 -1
- package/dist/vega/{p-56cf1a65.entry.js → p-0b9c7c79.entry.js} +1 -1
- package/dist/vega/p-0be4df0a.js +1 -0
- package/dist/vega/p-0d18368b.js +1 -0
- package/dist/vega/{p-9fafc956.entry.js → p-1232b553.entry.js} +1 -1
- package/dist/vega/{p-70817cf5.js → p-140616fe.js} +1 -1
- package/dist/vega/{p-f365601c.entry.js → p-14559974.entry.js} +1 -1
- package/dist/vega/{p-aa32f2f3.js → p-14baa886.js} +1 -1
- package/dist/vega/p-2364be92.entry.js +1 -0
- package/dist/vega/{p-c0629528.entry.js → p-26c7fe8b.entry.js} +1 -1
- package/dist/vega/p-270697c0.entry.js +1 -0
- package/dist/vega/p-282b37cb.js +1 -0
- package/dist/vega/{p-06c2ce2c.entry.js → p-288d65ad.entry.js} +1 -1
- package/dist/vega/p-2bf17505.entry.js +1 -0
- package/dist/vega/{p-c78aeaf3.entry.js → p-2dc5edd0.entry.js} +1 -1
- package/dist/vega/{p-136226f8.js → p-320091b7.js} +1 -1
- package/dist/vega/{p-b799fc1f.entry.js → p-341a6b32.entry.js} +1 -1
- package/dist/vega/p-36949349.js +1 -0
- package/dist/vega/p-38c9d782.js +1 -0
- package/dist/vega/{p-a361456d.js → p-3c309a38.js} +1 -1
- package/dist/vega/{p-71e2a3ec.js → p-3dee1e55.js} +1 -1
- package/dist/vega/{p-ef2b9846.entry.js → p-3e8baeac.entry.js} +1 -1
- package/dist/vega/{p-8f078d0d.entry.js → p-44439ecc.entry.js} +1 -1
- package/dist/vega/{p-68e16c70.entry.js → p-45e8424a.entry.js} +1 -1
- package/dist/vega/{p-ce7e9515.entry.js → p-46fe3154.entry.js} +1 -1
- package/dist/vega/{p-c2e0f8b7.entry.js → p-48ee3e24.entry.js} +1 -1
- package/dist/vega/{p-e371738b.js → p-4fe40b76.js} +1 -1
- package/dist/vega/p-4ff48b84.js +1 -0
- package/dist/vega/{p-2e58d99e.entry.js → p-5107277d.entry.js} +1 -1
- package/dist/vega/{p-2def8e3e.js → p-51b68d25.js} +1 -1
- package/dist/vega/p-52c6a399.entry.js +1 -0
- package/dist/vega/p-579cdeae.js +1 -0
- package/dist/vega/{p-e9cee498.entry.js → p-595998d9.entry.js} +1 -1
- package/dist/vega/{p-7798254d.entry.js → p-5db61a12.entry.js} +1 -1
- package/dist/vega/{p-e41d9d0e.entry.js → p-5df2d6a1.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-d7369441.js → p-61ce8029.js} +1 -1
- package/dist/vega/{p-2da12975.entry.js → p-62d6e063.entry.js} +1 -1
- package/dist/vega/p-698fbd73.js +1 -0
- package/dist/vega/p-6ad7144a.entry.js +1 -0
- package/dist/vega/{p-f70f7ad8.entry.js → p-6c9c2f8c.entry.js} +1 -1
- package/dist/vega/{p-b730bf6e.js → p-6cde45fc.js} +1 -1
- package/dist/vega/p-6dfe2407.js +1 -0
- package/dist/vega/{p-d3c8b871.entry.js → p-6f01a71a.entry.js} +1 -1
- package/dist/vega/p-6f70a10f.entry.js +1 -0
- package/dist/vega/p-73f2c3c0.entry.js +1 -0
- package/dist/vega/{p-de885ef2.js → p-75e33859.js} +1 -1
- package/dist/vega/p-762ea523.entry.js +1 -0
- package/dist/vega/{p-f6bccb06.entry.js → p-782eb312.entry.js} +1 -1
- package/dist/vega/p-7a88a3d3.entry.js +1 -0
- package/dist/vega/{p-5038b6d7.entry.js → p-7b57a845.entry.js} +1 -1
- package/dist/vega/p-83a16285.entry.js +1 -0
- package/dist/vega/{p-8da860f6.js → p-8720816e.js} +1 -1
- package/dist/vega/{p-9219201a.entry.js → p-892edf88.entry.js} +1 -1
- package/dist/vega/{p-625351a3.entry.js → p-8c083255.entry.js} +1 -1
- package/dist/vega/{p-4d9061fb.js → p-8db904dc.js} +1 -1
- package/dist/vega/{p-22f73e6e.entry.js → p-91287214.entry.js} +1 -1
- package/dist/vega/{p-5946fadf.js → p-919cddc3.js} +1 -1
- package/dist/vega/{p-fc5dfb52.entry.js → p-95913e3c.entry.js} +1 -1
- package/dist/vega/p-97215133.js +1 -0
- package/dist/vega/{p-5829a66d.entry.js → p-9bdc6e11.entry.js} +1 -1
- package/dist/vega/{p-8b9a8603.entry.js → p-9d18ba7f.entry.js} +1 -1
- package/dist/vega/{p-f7739cbb.entry.js → p-9dca874d.entry.js} +1 -1
- package/dist/vega/{p-c67ce78c.entry.js → p-9f38448c.entry.js} +1 -1
- package/dist/vega/{p-e3803943.js → p-9f7154d2.js} +1 -1
- package/dist/vega/{p-2314494a.entry.js → p-a057285e.entry.js} +1 -1
- package/dist/vega/{p-f515d189.entry.js → p-a0a58295.entry.js} +1 -1
- package/dist/vega/p-a7209700.js +1 -0
- package/dist/vega/{p-40501057.entry.js → p-a890d60b.entry.js} +1 -1
- package/dist/vega/{p-450bf94d.entry.js → p-addbca58.entry.js} +1 -1
- package/dist/vega/{p-45ab490c.js → p-b1eb9ff0.js} +1 -1
- package/dist/vega/{p-5beec481.js → p-b1ff70bf.js} +1 -1
- package/dist/vega/{p-9cdedcfb.entry.js → p-b39d4a88.entry.js} +1 -1
- package/dist/vega/{p-ea22cba0.js → p-b4e7c967.js} +1 -1
- package/dist/vega/{p-228c5de8.js → p-b775e51f.js} +1 -1
- package/dist/vega/{p-43c3848f.entry.js → p-b8f8e480.entry.js} +1 -1
- package/dist/vega/{p-8d69b201.js → p-ba662fe5.js} +1 -1
- package/dist/vega/p-c66d2a1e.js +1 -0
- package/dist/vega/{p-a268a4fb.entry.js → p-c67b9aba.entry.js} +1 -1
- package/dist/vega/{p-2353b64f.entry.js → p-c9c6daa6.entry.js} +1 -1
- package/dist/vega/p-c9daabe1.entry.js +1 -0
- package/dist/vega/{p-37dffdf6.entry.js → p-cad5222a.entry.js} +1 -1
- package/dist/vega/{p-e160a727.entry.js → p-cb90163a.entry.js} +1 -1
- package/dist/vega/{p-5545a235.entry.js → p-d08ffdf1.entry.js} +1 -1
- package/dist/vega/{p-30561e1d.entry.js → p-d3a36d19.entry.js} +1 -1
- package/dist/vega/{p-cd1844ad.entry.js → p-e235020b.entry.js} +1 -1
- package/dist/vega/{p-9440a8a5.entry.js → p-e4266b45.entry.js} +1 -1
- package/dist/vega/{p-18413b62.entry.js → p-e48a870f.entry.js} +1 -1
- package/dist/vega/{p-590c8720.entry.js → p-e8ee70c5.entry.js} +1 -1
- package/dist/vega/p-ed103a1a.entry.js +1 -0
- package/dist/vega/p-f05a193e.entry.js +1 -0
- package/dist/vega/{p-7be548a7.js → p-f1974321.js} +1 -1
- package/dist/vega/{p-916dfa7e.entry.js → p-f246f125.entry.js} +1 -1
- package/dist/vega/p-f4da615a.js +3 -0
- package/dist/vega/{p-d0ce752f.entry.js → p-f5d7b89f.entry.js} +1 -1
- package/dist/vega/{p-c8eaf91c.entry.js → p-f651df3b.entry.js} +1 -1
- package/dist/vega/{p-93dfab05.js → p-f7e459cd.js} +1 -1
- package/dist/vega/{p-b6ebfd5c.entry.js → p-f8a29127.entry.js} +1 -1
- package/dist/vega/p-f906a7bc.entry.js +1 -0
- package/dist/vega/{p-d20587b4.entry.js → p-f96d0503.entry.js} +1 -1
- package/dist/vega/{p-cd9fb2ca.entry.js → p-fbd3be00.entry.js} +1 -1
- package/dist/vega/{p-f0bc2bbb.js → p-fe24b459.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +2 -16
- package/readme.md +0 -5
- package/dist/cjs/replace-selected-text-action-a31563ed.js +0 -20
- package/dist/esm/replace-selected-text-action-c0817b2b.js +0 -18
- package/dist/vega/p-0179f55d.js +0 -1
- package/dist/vega/p-07b56f2b.entry.js +0 -1
- package/dist/vega/p-209e0166.js +0 -1
- package/dist/vega/p-35df0f0a.entry.js +0 -1
- package/dist/vega/p-3cf4339a.entry.js +0 -1
- package/dist/vega/p-4953bb1a.js +0 -1
- package/dist/vega/p-4e39adf5.entry.js +0 -1
- package/dist/vega/p-5319da71.entry.js +0 -1
- package/dist/vega/p-53c76d9d.entry.js +0 -1
- package/dist/vega/p-5de1acdb.js +0 -1
- package/dist/vega/p-5df9047c.js +0 -1
- package/dist/vega/p-683cfe24.js +0 -1
- package/dist/vega/p-802bf369.js +0 -1
- package/dist/vega/p-82279b03.entry.js +0 -1
- package/dist/vega/p-8509c140.entry.js +0 -1
- package/dist/vega/p-8aa07ed0.js +0 -1
- package/dist/vega/p-970115d6.js +0 -1
- package/dist/vega/p-9b1d718c.entry.js +0 -1
- package/dist/vega/p-c78e8081.entry.js +0 -1
- package/dist/vega/p-ca9852bb.js +0 -1
- package/dist/vega/p-dee38163.entry.js +0 -1
- package/dist/vega/p-e5502873.entry.js +0 -1
- package/dist/vega/p-ea54ce0a.js +0 -3
- package/dist/vega/p-ee3155bd.js +0 -1
- package/dist/vega/p-eee01ba7.entry.js +0 -1
- package/dist/vega/p-f4a01959.js +0 -1
- package/dist/vega/p-f5aefb2f.entry.js +0 -1
|
@@ -89,6 +89,6 @@ export class InsertLineBreakHandler extends BaseHandler {
|
|
|
89
89
|
getNextRTENode(lineBreakNode) {
|
|
90
90
|
const index = lineBreakNode.parent.children.indexOf(lineBreakNode);
|
|
91
91
|
const nextNode = lineBreakNode.parent.children[index + 1];
|
|
92
|
-
return nextNode
|
|
92
|
+
return nextNode && nextNode.isContentEditable() ? nextNode : lineBreakNode;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -3,6 +3,11 @@ import { AppendChildrenAction } from '../../../../dto/actions/append-child-nodes
|
|
|
3
3
|
import ElementToDtoStrategyProcessor from '../element-to-dto-strategy/element-to-dto-strategy-processor';
|
|
4
4
|
import { StylePreservator } from '../../../../../../helpers/csp/styles-preservator';
|
|
5
5
|
import { PasteContentAction } from '../../../../dto/actions/paste-content-action';
|
|
6
|
+
import { RTETextBlock } from '../../../../dto/blocks/text-block';
|
|
7
|
+
import { RTETextNode } from '../../../../dto/nodes/text-node';
|
|
8
|
+
import { generateUUID } from '../../../../../../utils/misc';
|
|
9
|
+
import { escapeHtml } from '../../../../helpers/utils';
|
|
10
|
+
import { ReplaceSelectedTextAction } from '../../../../dto/actions/replace-selected-text-action';
|
|
6
11
|
/**
|
|
7
12
|
* Handle user paste
|
|
8
13
|
*/
|
|
@@ -13,19 +18,108 @@ export class InsertPasteHandler extends BaseHandler {
|
|
|
13
18
|
* @param {InputEvent} event - Paste event.
|
|
14
19
|
*/
|
|
15
20
|
handleEvent(event) {
|
|
21
|
+
const currentRange = this.selectionController.getCurrentRange();
|
|
22
|
+
const payload = this.getPastePayload(event);
|
|
23
|
+
if (this.insertPlainTextInline(payload, currentRange)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
16
26
|
const blocks = this.parsePastedElements(event);
|
|
17
|
-
const
|
|
18
|
-
if (
|
|
27
|
+
const startContainer = (currentRange === null || currentRange === void 0 ? void 0 : currentRange.startContainer) || undefined;
|
|
28
|
+
if (!startContainer) {
|
|
29
|
+
// When the selection/range is unavailable (e.g. the caret was lost while
|
|
30
|
+
// the paste-mode chooser had focus), still append the pasted content to
|
|
31
|
+
// the root so the paste is never silently dropped.
|
|
32
|
+
this.insertBlocksToRoot(blocks);
|
|
33
|
+
}
|
|
34
|
+
else if (this.isRootContainer(startContainer)) {
|
|
19
35
|
this.insertBlocksToRoot(blocks);
|
|
20
36
|
// TODO: Need to check below logic, it seems not correct https://gethired.atlassian.net/browse/VD-7779
|
|
21
37
|
}
|
|
22
38
|
else if (this.isEmptyParagraph(startContainer)) {
|
|
23
|
-
this.insertBlocksBeforeEmptyBlock(blocks);
|
|
39
|
+
this.insertBlocksBeforeEmptyBlock(blocks, currentRange);
|
|
24
40
|
}
|
|
25
41
|
else {
|
|
26
|
-
this.insertBlocksToContent(blocks);
|
|
42
|
+
this.insertBlocksToContent(blocks, currentRange);
|
|
27
43
|
}
|
|
28
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Inserts plain-text paste content into the current text node at caret position.
|
|
47
|
+
*
|
|
48
|
+
* @param {RTEPastePayload} payload - Clipboard payload.
|
|
49
|
+
* @param {RTERange} currentRange - Current selection range.
|
|
50
|
+
* @returns {boolean} True when inline insertion is handled.
|
|
51
|
+
*/
|
|
52
|
+
insertPlainTextInline(payload, currentRange) {
|
|
53
|
+
var _a, _b;
|
|
54
|
+
const selectedNodes = ((_b = (_a = this.selectionController).getSelectedNodes) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
|
|
55
|
+
if (!this.shouldPasteAsInlinePlainText(payload, currentRange, selectedNodes)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
const text = payload.text.replace(/\r\n?/g, '\n');
|
|
59
|
+
const cursorNode = selectedNodes.find((node) => node instanceof RTETextNode) || currentRange.startNode;
|
|
60
|
+
if (!(cursorNode instanceof RTETextNode)) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
cursorNode.apply(new ReplaceSelectedTextAction(text, currentRange));
|
|
64
|
+
this.selectionController.enqueueSelectionRangeFutureState(cursorNode, currentRange.startOffset + text.length);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Determines whether the payload should be inserted as inline plain text.
|
|
69
|
+
*
|
|
70
|
+
* @param {RTEPastePayload} payload - Clipboard payload.
|
|
71
|
+
* @param {RTERange} currentRange - Current selection range.
|
|
72
|
+
* @param {RTENode[]} selectedNodes - Currently selected nodes.
|
|
73
|
+
* @returns {boolean} True when inline plain-text insertion should be used.
|
|
74
|
+
*/
|
|
75
|
+
shouldPasteAsInlinePlainText(payload, currentRange, selectedNodes = []) {
|
|
76
|
+
if (!currentRange || !currentRange.startContainer) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
if (this.isRootContainer(currentRange.startContainer)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
const text = (payload.text || '').replace(/\r\n?/g, '\n');
|
|
83
|
+
if (!text) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
const html = payload.html || '';
|
|
87
|
+
if (!html) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
const hasTextNodeSelection = selectedNodes.some((node) => node instanceof RTETextNode) ||
|
|
91
|
+
currentRange.startNode instanceof RTETextNode;
|
|
92
|
+
if (!hasTextNodeSelection) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
// Use the inline plain‑text path only when HTML and plain text match exactly and no formatting exists;
|
|
96
|
+
// otherwise route through the block path to preserve styles.
|
|
97
|
+
const analysis = this.analyzeHtmlContent(html);
|
|
98
|
+
return analysis.plainText === text && !analysis.hasFormatting;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Analyzes HTML content to extract plain text and detect inline formatting,
|
|
102
|
+
* parsing the HTML once to avoid redundant StylePreservation and DOMParser calls.
|
|
103
|
+
*
|
|
104
|
+
* @param {string} html - Clipboard text/html payload.
|
|
105
|
+
* @returns {HtmlAnalysisResult} Analysis result with plainText and hasFormatting properties.
|
|
106
|
+
*/
|
|
107
|
+
analyzeHtmlContent(html) {
|
|
108
|
+
const safeHtml = StylePreservator.preserve(html).getProcessedHtml();
|
|
109
|
+
const parsedDoc = new DOMParser().parseFromString(safeHtml, 'text/html');
|
|
110
|
+
const body = parsedDoc.body;
|
|
111
|
+
// Extract plain text from the parsed document
|
|
112
|
+
const plainText = (body.textContent || '').replace(/\r\n?/g, '\n');
|
|
113
|
+
// Check for rich inline formatting
|
|
114
|
+
let hasFormatting = Boolean(body.querySelector('b,strong,i,em,s,del,strike,u,mark'));
|
|
115
|
+
if (!hasFormatting) {
|
|
116
|
+
hasFormatting = Array.from(body.querySelectorAll('span')).some((span) => {
|
|
117
|
+
const style = span.getAttribute('style') || span.getAttribute('data-style') || '';
|
|
118
|
+
return this.styleContainsRichFormatting(style);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return { plainText, hasFormatting };
|
|
122
|
+
}
|
|
29
123
|
/**
|
|
30
124
|
* Insert the blocks to root
|
|
31
125
|
*
|
|
@@ -35,37 +129,54 @@ export class InsertPasteHandler extends BaseHandler {
|
|
|
35
129
|
this.currentState.apply(new AppendChildrenAction(blocks));
|
|
36
130
|
}
|
|
37
131
|
/**
|
|
38
|
-
* Insert the blocks
|
|
132
|
+
* Insert the blocks into the current content block at the specified range.
|
|
39
133
|
*
|
|
40
134
|
* @param { RTEContentBlock[]} blocks - blocks
|
|
135
|
+
* @param { RTERange } rteRange - rteRange
|
|
41
136
|
*/
|
|
42
|
-
insertBlocksToContent(blocks) {
|
|
43
|
-
|
|
137
|
+
insertBlocksToContent(blocks, rteRange) {
|
|
138
|
+
var _a;
|
|
139
|
+
const isCollapsedRange = rteRange.startNode === rteRange.endNode && rteRange.startOffset === rteRange.endOffset;
|
|
140
|
+
const cursorNode = isCollapsedRange
|
|
141
|
+
? rteRange.startNode
|
|
142
|
+
: this.removeSelectionRange();
|
|
44
143
|
if (cursorNode && cursorNode.parent) {
|
|
45
|
-
const
|
|
46
|
-
const pasteAction = new PasteContentAction(blocks, cursorNode, startOffset);
|
|
144
|
+
const pasteAction = new PasteContentAction(blocks, cursorNode, rteRange.startOffset, rteRange);
|
|
47
145
|
cursorNode.parent.apply(pasteAction);
|
|
48
|
-
if (pasteAction.
|
|
49
|
-
this.
|
|
146
|
+
if (pasteAction.futureFocusNode) {
|
|
147
|
+
this.selectionController.enqueueSelectionRangeFutureState(pasteAction.futureFocusNode, (_a = pasteAction.futureFocusNodeOffset) !== null && _a !== void 0 ? _a : 0);
|
|
50
148
|
}
|
|
149
|
+
else if (pasteAction.futureFocusBlock) {
|
|
150
|
+
this.switchCaretPositionToNextElement(pasteAction.futureFocusBlock, pasteAction.futureFocusAtEnd);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// No resolvable cursor position: fall back to appending at the root so
|
|
155
|
+
// the pasted content is preserved instead of being discarded.
|
|
156
|
+
this.insertBlocksToRoot(blocks);
|
|
51
157
|
}
|
|
52
158
|
}
|
|
53
159
|
/**
|
|
54
160
|
* Insert the blocks before to current block
|
|
55
161
|
*
|
|
56
162
|
* @param { RTEContentBlock[]} blocks - blocks
|
|
163
|
+
* @param { RTERange } rteRange - rteRange
|
|
57
164
|
*/
|
|
58
|
-
insertBlocksBeforeEmptyBlock(blocks) {
|
|
165
|
+
insertBlocksBeforeEmptyBlock(blocks, rteRange) {
|
|
59
166
|
const cursorNode = this.removeSelectionRange();
|
|
60
|
-
/* istanbul ignore next */
|
|
61
167
|
const currentBlock = cursorNode === null || cursorNode === void 0 ? void 0 : cursorNode.parent;
|
|
62
168
|
if (currentBlock) {
|
|
63
|
-
const pasteAction = new PasteContentAction(blocks,
|
|
169
|
+
const pasteAction = new PasteContentAction(blocks, cursorNode, 0, rteRange);
|
|
64
170
|
currentBlock.apply(pasteAction);
|
|
65
171
|
if (pasteAction.futureFocusBlock) {
|
|
66
|
-
this.switchCaretPositionToNextElement(pasteAction.futureFocusBlock);
|
|
172
|
+
this.switchCaretPositionToNextElement(pasteAction.futureFocusBlock, pasteAction.futureFocusAtEnd);
|
|
67
173
|
}
|
|
68
174
|
}
|
|
175
|
+
else {
|
|
176
|
+
// No resolvable empty block: fall back to appending at the root so the
|
|
177
|
+
// pasted content is preserved instead of being discarded.
|
|
178
|
+
this.insertBlocksToRoot(blocks);
|
|
179
|
+
}
|
|
69
180
|
}
|
|
70
181
|
/**
|
|
71
182
|
* Format and parse elements from user paste with simple style preservation.
|
|
@@ -74,30 +185,76 @@ export class InsertPasteHandler extends BaseHandler {
|
|
|
74
185
|
* @returns {RTEContentBlock[]} - RTEContentBlock.
|
|
75
186
|
*/
|
|
76
187
|
parsePastedElements(event) {
|
|
77
|
-
|
|
188
|
+
const payload = this.getPastePayload(event);
|
|
189
|
+
let pastedHTML = payload.html || '';
|
|
78
190
|
if (!pastedHTML) {
|
|
79
|
-
|
|
80
|
-
|
|
191
|
+
pastedHTML = this.parsePlainText(payload.text || '');
|
|
192
|
+
}
|
|
193
|
+
else if (this.shouldTreatAsPlainTextPayload(pastedHTML)) {
|
|
194
|
+
const plainSource = payload.text || this.extractPlainTextFromHtml(pastedHTML);
|
|
195
|
+
pastedHTML = this.parsePlainText(plainSource);
|
|
81
196
|
}
|
|
82
197
|
const context = StylePreservator.preserve(pastedHTML);
|
|
83
198
|
const safeHtml = context.getProcessedHtml();
|
|
84
199
|
const parser = new DOMParser();
|
|
85
200
|
const parsedDoc = parser.parseFromString(safeHtml, 'text/html');
|
|
201
|
+
const rootElements = Array.from(parsedDoc.body.childNodes);
|
|
202
|
+
context.restore(rootElements);
|
|
203
|
+
this.normalizeImportedHtmlArtifacts(parsedDoc.body);
|
|
86
204
|
const htmlElements = Array.from(parsedDoc.body.childNodes);
|
|
87
|
-
|
|
88
|
-
return ElementToDtoStrategyProcessor.process(htmlElements)
|
|
205
|
+
const resultBlocks = ElementToDtoStrategyProcessor.process(htmlElements)
|
|
89
206
|
.filter(Boolean)
|
|
90
207
|
.map((output) => output.toDto())
|
|
91
208
|
.filter(Boolean);
|
|
209
|
+
// Fallback for synthetic payloads: if strategy conversion yields no blocks
|
|
210
|
+
// but we still have plain text, create paragraph/text blocks directly.
|
|
211
|
+
if (resultBlocks.length === 0 && (payload.text || '').trim() !== '') {
|
|
212
|
+
return this.buildPlainTextFallbackBlocks(payload.text);
|
|
213
|
+
}
|
|
214
|
+
return resultBlocks;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Extracts readable plain text from clipboard HTML.
|
|
218
|
+
*
|
|
219
|
+
* @param {string} html - Clipboard text/html payload.
|
|
220
|
+
* @returns {string} - Plain text extracted from HTML.
|
|
221
|
+
*/
|
|
222
|
+
extractPlainTextFromHtml(html) {
|
|
223
|
+
// Preserve inline styles before parsing to avoid style-src-attr CSP violations.
|
|
224
|
+
const safeHtml = StylePreservator.preserve(html).getProcessedHtml();
|
|
225
|
+
const parsedDoc = new DOMParser().parseFromString(safeHtml, 'text/html');
|
|
226
|
+
return (parsedDoc.body.textContent || '').replace(/\r\n?/g, '\n');
|
|
92
227
|
}
|
|
93
228
|
/**
|
|
94
|
-
*
|
|
229
|
+
* Builds plain-text paragraph blocks when element strategy parsing returns no output.
|
|
95
230
|
*
|
|
96
|
-
* @param {
|
|
231
|
+
* @param {string} text - Plain text clipboard content.
|
|
232
|
+
* @returns {RTEContentBlock[]} Fallback text blocks.
|
|
97
233
|
*/
|
|
98
|
-
|
|
234
|
+
buildPlainTextFallbackBlocks(text) {
|
|
235
|
+
return text.split('\n').map((line) => {
|
|
236
|
+
const paragraph = new RTETextBlock(generateUUID(), 'paragraph');
|
|
237
|
+
const textNode = new RTETextNode(`${paragraph.id}1`, line, paragraph);
|
|
238
|
+
paragraph.apply(new AppendChildrenAction([textNode]));
|
|
239
|
+
return paragraph;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Moves the caret to a block element in a rich text editor after paste.
|
|
244
|
+
*
|
|
245
|
+
* @param {RTEBlock} newBlock - Block element to move the caret to.
|
|
246
|
+
* @param {boolean} atEnd - When true, places the caret after the last character of the block's last node; otherwise at offset 0 of the first node.
|
|
247
|
+
*/
|
|
248
|
+
switchCaretPositionToNextElement(newBlock, atEnd = false) {
|
|
249
|
+
var _a, _b;
|
|
99
250
|
if (newBlock && newBlock.children) {
|
|
100
|
-
|
|
251
|
+
if (atEnd) {
|
|
252
|
+
const lastNode = newBlock.children[newBlock.children.length - 1];
|
|
253
|
+
this.selectionController.enqueueSelectionRangeFutureState(lastNode, (_b = (_a = lastNode.text) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
this.selectionController.enqueueSelectionRangeFutureState(newBlock.children[0], 0);
|
|
257
|
+
}
|
|
101
258
|
}
|
|
102
259
|
}
|
|
103
260
|
/**
|
|
@@ -107,14 +264,217 @@ export class InsertPasteHandler extends BaseHandler {
|
|
|
107
264
|
* @returns {string} - The formatted HTML string.
|
|
108
265
|
*/
|
|
109
266
|
parsePlainText(content) {
|
|
267
|
+
if (this.shouldRenderAsCodeBlock(content)) {
|
|
268
|
+
return `<pre><code>${escapeHtml(content)}</code></pre>`;
|
|
269
|
+
}
|
|
110
270
|
const lines = content.split('\n');
|
|
111
271
|
return lines
|
|
112
272
|
.map((line) => {
|
|
113
273
|
if (line === '') {
|
|
114
274
|
return '<p>\n</p>';
|
|
115
275
|
}
|
|
116
|
-
return `<p>${line}</p>`;
|
|
276
|
+
return `<p>${escapeHtml(line)}</p>`;
|
|
117
277
|
})
|
|
118
278
|
.join('');
|
|
119
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Detects whether plain text likely represents source code.
|
|
282
|
+
*
|
|
283
|
+
* @param {string} content - Clipboard plain text content.
|
|
284
|
+
* @returns {boolean} True when the content should render as a code block.
|
|
285
|
+
*/
|
|
286
|
+
shouldRenderAsCodeBlock(content) {
|
|
287
|
+
const normalized = content.replace(/\r\n?/g, '\n').trim();
|
|
288
|
+
if (!normalized) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
const hasMultipleLines = normalized.includes('\n');
|
|
292
|
+
const hasHtmlLikeTag = /<\/?[a-z][\w:-]*[^>]*>/i.test(normalized);
|
|
293
|
+
const hasCodeFence = normalized.startsWith('```') && normalized.endsWith('```');
|
|
294
|
+
const hasProgrammingTokens = /[{};]|=>|\b(function|const|let|var|class|import|export|return)\b/.test(normalized);
|
|
295
|
+
if (hasCodeFence) {
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
return hasHtmlLikeTag || (hasMultipleLines && hasProgrammingTokens);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Removes pasted website artifacts that can cause visual regressions in the editor,
|
|
302
|
+
* such as heading anchor tooltips and empty wrappers.
|
|
303
|
+
*
|
|
304
|
+
* @param {HTMLElement} body - Parsed clipboard html body.
|
|
305
|
+
*/
|
|
306
|
+
normalizeImportedHtmlArtifacts(body) {
|
|
307
|
+
this.removeHeadingArtifacts(body);
|
|
308
|
+
this.removeEmptyBlocks(body);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Removes heading copy-link/tooltip artifacts copied from documentation pages.
|
|
312
|
+
*
|
|
313
|
+
* @param {HTMLElement} body - Parsed clipboard html body.
|
|
314
|
+
*/
|
|
315
|
+
removeHeadingArtifacts(body) {
|
|
316
|
+
const selectors = [
|
|
317
|
+
'a.js-heading-link',
|
|
318
|
+
'a.c-heading-link',
|
|
319
|
+
'.js-tooltip-popover',
|
|
320
|
+
'.c-tooltip-popover',
|
|
321
|
+
'[role="tooltip"]',
|
|
322
|
+
];
|
|
323
|
+
body.querySelectorAll(selectors.join(',')).forEach((element) => element.remove());
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Removes empty block wrappers introduced by web copy/paste.
|
|
327
|
+
*
|
|
328
|
+
* @param {HTMLElement} body - Parsed clipboard html body.
|
|
329
|
+
*/
|
|
330
|
+
removeEmptyBlocks(body) {
|
|
331
|
+
const blockSelectors = ['p', 'div', 'section', 'article'];
|
|
332
|
+
body.querySelectorAll(blockSelectors.join(',')).forEach((element) => {
|
|
333
|
+
if (this.isEmptyVisualBlock(element)) {
|
|
334
|
+
element.remove();
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Checks whether a block is visually empty and safe to remove.
|
|
340
|
+
*
|
|
341
|
+
* @param {HTMLElement} element - Block element to inspect.
|
|
342
|
+
* @returns {boolean} True when the block has no visible content.
|
|
343
|
+
*/
|
|
344
|
+
isEmptyVisualBlock(element) {
|
|
345
|
+
if (element.tagName === 'DIV' && element.classList.contains('doc')) {
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
const hasVisualChild = Boolean(element.querySelector('img,video,audio,iframe,canvas,svg,table,hr,pre,code,blockquote'));
|
|
349
|
+
if (hasVisualChild) {
|
|
350
|
+
return false;
|
|
351
|
+
}
|
|
352
|
+
return (element.textContent || '').trim() === '';
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Checks whether a text/html payload is effectively plain text.
|
|
356
|
+
*
|
|
357
|
+
* Some sources (e.g. terminals, code editors) place the copied text inside an
|
|
358
|
+
* off-screen / visually hidden wrapper such as
|
|
359
|
+
* `<pre><div style="position: absolute; left: -9999px;">text</div></pre>`.
|
|
360
|
+
* Preserving that markup as rich content would render the pasted text
|
|
361
|
+
* off-screen (appearing empty), so such payloads are treated as plain text.
|
|
362
|
+
*
|
|
363
|
+
* @param {string} html - Clipboard text/html payload.
|
|
364
|
+
* @returns {boolean} True when the payload has no visible rich content.
|
|
365
|
+
*/
|
|
366
|
+
shouldTreatAsPlainTextPayload(html) {
|
|
367
|
+
// Preserve inline styles before parsing to avoid style-src-attr CSP violations
|
|
368
|
+
// triggered by DOMParser processing HTML with style= attributes.
|
|
369
|
+
const safeHtml = StylePreservator.preserve(html).getProcessedHtml();
|
|
370
|
+
const parsedDoc = new DOMParser().parseFromString(safeHtml, 'text/html');
|
|
371
|
+
const body = parsedDoc.body;
|
|
372
|
+
if (body.children.length === 0) {
|
|
373
|
+
return true;
|
|
374
|
+
}
|
|
375
|
+
const visibleClone = body.cloneNode(true);
|
|
376
|
+
visibleClone.querySelectorAll('[style],[data-style]').forEach((element) => {
|
|
377
|
+
if (this.isVisuallyHiddenElement(element)) {
|
|
378
|
+
element.remove();
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
if ((visibleClone.textContent || '').trim() !== '') {
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
const hasVisibleMedia = Boolean(visibleClone.querySelector('img,video,audio,iframe,table,svg,canvas,math,object,embed'));
|
|
385
|
+
if (hasVisibleMedia) {
|
|
386
|
+
return false;
|
|
387
|
+
}
|
|
388
|
+
// If no visible text/media remains but original HTML contained text, it was
|
|
389
|
+
// likely wrapped in hidden/off-screen containers and should be treated as plain text.
|
|
390
|
+
return (body.textContent || '').trim() !== '';
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Returns true when a CSS style string contains bold, italic, underline,
|
|
394
|
+
* strikethrough, or color declarations.
|
|
395
|
+
*
|
|
396
|
+
* @param {string} style - Inline CSS style string.
|
|
397
|
+
* @returns {boolean} True when the style contains rich formatting.
|
|
398
|
+
*/
|
|
399
|
+
styleContainsRichFormatting(style) {
|
|
400
|
+
if (!style.trim()) {
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
for (const declaration of style.split(';')) {
|
|
404
|
+
const colonIndex = declaration.indexOf(':');
|
|
405
|
+
if (colonIndex === -1) {
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
const prop = declaration.slice(0, colonIndex).trim().toLowerCase();
|
|
409
|
+
const value = declaration
|
|
410
|
+
.slice(colonIndex + 1)
|
|
411
|
+
.trim()
|
|
412
|
+
.toLowerCase();
|
|
413
|
+
switch (prop) {
|
|
414
|
+
case 'font-weight':
|
|
415
|
+
if (/bold|[5-9]\d{2}|1000/.test(value)) {
|
|
416
|
+
return true;
|
|
417
|
+
}
|
|
418
|
+
break;
|
|
419
|
+
case 'font-style':
|
|
420
|
+
if (/italic|oblique/.test(value)) {
|
|
421
|
+
return true;
|
|
422
|
+
}
|
|
423
|
+
break;
|
|
424
|
+
case 'text-decoration':
|
|
425
|
+
case 'text-decoration-line':
|
|
426
|
+
if (/underline|line-through/.test(value)) {
|
|
427
|
+
return true;
|
|
428
|
+
}
|
|
429
|
+
break;
|
|
430
|
+
case 'color':
|
|
431
|
+
case 'background-color':
|
|
432
|
+
return true;
|
|
433
|
+
default:
|
|
434
|
+
break;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
return false;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Determines whether an element is visually hidden or rendered off-screen
|
|
441
|
+
* via its inline style, indicating a clipboard plain-text wrapper.
|
|
442
|
+
*
|
|
443
|
+
* @param {HTMLElement} element - Element to inspect.
|
|
444
|
+
* @returns {boolean} True when the element is hidden or off-screen.
|
|
445
|
+
*/
|
|
446
|
+
isVisuallyHiddenElement(element) {
|
|
447
|
+
const style = (element.getAttribute('style') ||
|
|
448
|
+
element.getAttribute('data-style') ||
|
|
449
|
+
'').toLowerCase();
|
|
450
|
+
if (!style) {
|
|
451
|
+
return false;
|
|
452
|
+
}
|
|
453
|
+
if (/display\s*:\s*none/.test(style) || /visibility\s*:\s*hidden/.test(style)) {
|
|
454
|
+
return true;
|
|
455
|
+
}
|
|
456
|
+
if (/clip\s*:\s*rect\(\s*0/.test(style) || style.includes('clip-path')) {
|
|
457
|
+
return true;
|
|
458
|
+
}
|
|
459
|
+
const isPositioned = /position\s*:\s*(absolute|fixed)/.test(style);
|
|
460
|
+
const isOffScreen = /(left|top|right|bottom)\s*:\s*-\d{3,}px/.test(style);
|
|
461
|
+
return isPositioned && isOffScreen;
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Resolves paste payload from DataTransfer and synthetic-event fallback payload.
|
|
465
|
+
*
|
|
466
|
+
* @param {InputEvent} event - Paste event.
|
|
467
|
+
* @returns {RTEPastePayload} - Paste payload.
|
|
468
|
+
*/
|
|
469
|
+
getPastePayload(event) {
|
|
470
|
+
const eventPayload = event
|
|
471
|
+
.rtePastePayload || { html: '', text: '' };
|
|
472
|
+
if (!event.dataTransfer) {
|
|
473
|
+
return eventPayload;
|
|
474
|
+
}
|
|
475
|
+
return {
|
|
476
|
+
html: event.dataTransfer.getData('text/html') || eventPayload.html || '',
|
|
477
|
+
text: event.dataTransfer.getData('text/plain') || eventPayload.text || '',
|
|
478
|
+
};
|
|
479
|
+
}
|
|
120
480
|
}
|
|
@@ -169,58 +169,67 @@ export class SelectionController extends AutoRunWhenReRenderTaskQueueSlimmer {
|
|
|
169
169
|
return ShadowSelectionPolyfill.getSelection(richTextContentRef.shadowRoot);
|
|
170
170
|
}
|
|
171
171
|
/**
|
|
172
|
-
*
|
|
173
|
-
* Setting the selection range programmatically does not trigger the browser's
|
|
174
|
-
* native auto-scroll, so when the cursor is moved (e.g. after inserting a
|
|
175
|
-
* function block) it can land outside the visible area of a fixed-height
|
|
176
|
-
* (rows) editor. This keeps the caret within view.
|
|
172
|
+
* Keep the caret visible after the range is restored.
|
|
177
173
|
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
174
|
+
* Applying a range in code does not trigger browser auto-scroll. We first
|
|
175
|
+
* check whether the caret is already visible, and only then call
|
|
176
|
+
* scrollIntoView with center alignment. This works for both fixed-height
|
|
177
|
+
* content hosts (rows mode) and page scrolling (stretch mode), while avoiding
|
|
178
|
+
* unnecessary jumps during normal typing.
|
|
180
179
|
*
|
|
181
180
|
* @param {Range} range - The range that was applied to the selection.
|
|
182
181
|
*/
|
|
183
182
|
scrollCaretIntoView(range) {
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
if (!viewport || !caretRect) {
|
|
183
|
+
const element = this.getCaretElement(range);
|
|
184
|
+
if (!element || typeof element.scrollIntoView !== 'function') {
|
|
187
185
|
return;
|
|
188
186
|
}
|
|
189
|
-
|
|
190
|
-
if (viewportRect.width === 0 ||
|
|
191
|
-
viewportRect.height === 0 ||
|
|
192
|
-
(caretRect.top === 0 && caretRect.bottom === 0 && caretRect.left === 0 && caretRect.right === 0)) {
|
|
187
|
+
if (this.isCaretWithinViewport(range, element)) {
|
|
193
188
|
return;
|
|
194
189
|
}
|
|
195
|
-
|
|
196
|
-
viewport.scrollTop += caretRect.bottom - viewportRect.bottom;
|
|
197
|
-
}
|
|
198
|
-
else if (caretRect.top < viewportRect.top) {
|
|
199
|
-
viewport.scrollTop -= viewportRect.top - caretRect.top;
|
|
200
|
-
}
|
|
190
|
+
element.scrollIntoView({ block: 'center', inline: 'nearest' });
|
|
201
191
|
}
|
|
202
192
|
/**
|
|
203
|
-
*
|
|
204
|
-
* A collapsed range inside an empty node can return an empty rect, so in that
|
|
205
|
-
* case fall back to the nearest element's bounding rect.
|
|
193
|
+
* Resolve the nearest element for the caret start container.
|
|
206
194
|
*
|
|
207
|
-
* @param {Range} range - The range to
|
|
208
|
-
* @returns {Nullable<
|
|
195
|
+
* @param {Range} range - The range to inspect.
|
|
196
|
+
* @returns {Nullable<HTMLElement>} The caret's nearest element, or null.
|
|
209
197
|
*/
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
if (
|
|
198
|
+
getCaretElement(range) {
|
|
199
|
+
const startContainer = range.startContainer;
|
|
200
|
+
if (!startContainer) {
|
|
213
201
|
return null;
|
|
214
202
|
}
|
|
215
|
-
|
|
216
|
-
if (rangeRect.height > 0) {
|
|
217
|
-
return rangeRect;
|
|
218
|
-
}
|
|
219
|
-
const startContainer = range.startContainer;
|
|
220
|
-
const element = startContainer.nodeType === Node.TEXT_NODE
|
|
203
|
+
return startContainer.nodeType === Node.TEXT_NODE
|
|
221
204
|
? startContainer.parentElement
|
|
222
205
|
: startContainer;
|
|
223
|
-
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Determine whether the caret is currently visible within the viewport.
|
|
209
|
+
*
|
|
210
|
+
* The visible area is the intersection of the window and the content host,
|
|
211
|
+
* because in fixed-height (`rows`) mode the host clips its content while in
|
|
212
|
+
* the stretch mode the window is the binding constraint.
|
|
213
|
+
*
|
|
214
|
+
* @param {Range} range - The range that was applied to the selection.
|
|
215
|
+
* @param {HTMLElement} element - The caret's nearest element.
|
|
216
|
+
* @returns {boolean} True when the caret is fully inside the visible area.
|
|
217
|
+
*/
|
|
218
|
+
isCaretWithinViewport(range, element) {
|
|
219
|
+
const caretRect = range.getBoundingClientRect();
|
|
220
|
+
// A collapsed range can report an empty rect; fall back to the element.
|
|
221
|
+
const rect = caretRect.width === 0 && caretRect.height === 0 && caretRect.top === 0
|
|
222
|
+
? element.getBoundingClientRect()
|
|
223
|
+
: caretRect;
|
|
224
|
+
let top = 0;
|
|
225
|
+
let bottom = window.innerHeight;
|
|
226
|
+
const contentRef = this.vegaRichTextEditorRenderer.getRichTextContentRef();
|
|
227
|
+
if (contentRef) {
|
|
228
|
+
const contentRect = contentRef.getBoundingClientRect();
|
|
229
|
+
top = Math.max(top, contentRect.top);
|
|
230
|
+
bottom = Math.min(bottom, contentRect.bottom);
|
|
231
|
+
}
|
|
232
|
+
return rect.top >= top - 1 && rect.bottom <= bottom + 1;
|
|
224
233
|
}
|
|
225
234
|
/**
|
|
226
235
|
* Save the current selection range detail
|
|
@@ -272,6 +281,28 @@ export class SelectionController extends AutoRunWhenReRenderTaskQueueSlimmer {
|
|
|
272
281
|
const range = selection.getRangeAt(0);
|
|
273
282
|
const commonAncestor = range.commonAncestorContainer;
|
|
274
283
|
const selectedNodes = [];
|
|
284
|
+
if (range.collapsed) {
|
|
285
|
+
const { startContainer } = range;
|
|
286
|
+
if (startContainer.nodeType === Node.TEXT_NODE) {
|
|
287
|
+
const currentNode = startContainer.parentElement;
|
|
288
|
+
const nodeEntity = stateEntityRenderingRegistry.getEntityByDOM(currentNode);
|
|
289
|
+
if (nodeEntity instanceof RTENode) {
|
|
290
|
+
selectedNodes.push(nodeEntity);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
else if (isHTMLElement(startContainer)) {
|
|
294
|
+
const entityElement = RTEDecoratorNode.isDecoratorNodeContainerElement(startContainer)
|
|
295
|
+
? RTEDecoratorNode.getDecoratorNodeElement(startContainer)
|
|
296
|
+
: startContainer;
|
|
297
|
+
const nodeEntity = stateEntityRenderingRegistry.getEntityByDOM(entityElement);
|
|
298
|
+
if (nodeEntity instanceof RTENode) {
|
|
299
|
+
selectedNodes.push(nodeEntity);
|
|
300
|
+
}
|
|
301
|
+
else if (nodeEntity instanceof RTEBlock && range.collapsed) {
|
|
302
|
+
this.tryToFindTheNearestSelectedNode(range, selectedNodes);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
275
306
|
/**
|
|
276
307
|
* Rich text node filter
|
|
277
308
|
*
|
|
@@ -313,7 +344,9 @@ export class SelectionController extends AutoRunWhenReRenderTaskQueueSlimmer {
|
|
|
313
344
|
}
|
|
314
345
|
node.childNodes.forEach(filterNode);
|
|
315
346
|
};
|
|
316
|
-
|
|
347
|
+
if (!range.collapsed || selectedNodes.length === 0) {
|
|
348
|
+
filterNode(commonAncestor);
|
|
349
|
+
}
|
|
317
350
|
this.addNodesToSelectionMap(selectedNodes);
|
|
318
351
|
this.getSelectedNodes().forEach((node) => node.apply(new SelectionChangeAction(range)));
|
|
319
352
|
}
|
|
@@ -34,7 +34,7 @@ export class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonS
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
renderBtnWrapper(renderBtn) {
|
|
37
|
-
return (h("vega-popover", { showArrow: false, trigger: "click", placement: "bottom", alignment: "center", ref: (ref) => (this.popoverRef = ref) },
|
|
37
|
+
return (h("vega-popover", { showArrow: false, trigger: "click", placement: "bottom", alignment: "center", isScreenPosition: true, ref: (ref) => (this.popoverRef = ref) },
|
|
38
38
|
h("div", { slot: "popover-content" }, renderBtn({ showArrowIcon: true })),
|
|
39
39
|
h("div", { slot: "popover" }, this.renderContent())));
|
|
40
40
|
}
|
|
@@ -43,7 +43,7 @@ export class HorizontalAlignmentToolbarButtonSlimmer extends VisualModeToolbarBu
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
renderBtnWrapper(renderBtn) {
|
|
46
|
-
return (h("vega-popover", { trigger: "click", showArrow: false, alignment: "center", placement: "bottom", ref: (ref) => (this.popoverRef = ref) },
|
|
46
|
+
return (h("vega-popover", { trigger: "click", showArrow: false, alignment: "center", placement: "bottom", isScreenPosition: true, ref: (ref) => (this.popoverRef = ref) },
|
|
47
47
|
h("div", { slot: "popover-content" }, renderBtn({ showArrowIcon: true })),
|
|
48
48
|
h("div", { slot: "popover" }, this.renderContent())));
|
|
49
49
|
}
|