@globalpayments/vega 2.98.0 → 2.100.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/{accessibility-88f8af84.js → accessibility-6ca2a237.js} +21 -0
- package/dist/cjs/{action-color-accessibility-validator-24498816.js → action-color-accessibility-validator-b8a9ef0f.js} +2 -2
- package/dist/cjs/{app-globals-b3f05631.js → app-globals-48d067a7.js} +11 -10
- package/dist/cjs/{aria-attributes-value-mapper-9a41b9cf.js → aria-attributes-value-mapper-e8c6b0e0.js} +1 -1
- package/dist/cjs/{code-block-d78c2b2c.js → code-block-3b42c364.js} +95 -6
- package/dist/cjs/{component-global-style-slimmer-93c5fb50.js → component-global-style-slimmer-ba588eb4.js} +1 -1
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-beb00fea.js → component-value-history-controller-slimmer.abstract-bbe3bcaf.js} +24 -5
- package/dist/cjs/{content-state-78a620a9.js → content-state-87a06c1a.js} +104 -8
- package/dist/cjs/{dark-mode-style-controller-32d4054a.js → dark-mode-style-controller-f3da3342.js} +2 -2
- package/dist/cjs/{date-required-rule-5250f26d.js → date-required-rule-45c802d3.js} +1 -1
- package/dist/cjs/{design-token-74674ee7.js → design-token-9d762da0.js} +3 -3
- package/dist/cjs/{element-appender-slimmer-597e9e48.js → element-appender-slimmer-f7ba5d9a.js} +2 -2
- package/dist/cjs/{form-field-controller-slimmer-a743be34.js → form-field-controller-slimmer-fbaddc91.js} +2 -2
- package/dist/cjs/{image-annotation-action-85c4bd83.js → image-annotation-action-03d3e01a.js} +7 -6
- package/dist/cjs/{image-extension-260fa69c.js → image-extension-ccda26d3.js} +2 -2
- package/dist/cjs/{index-592b4052.js → index-5d1adcd1.js} +86 -0
- package/dist/cjs/index.cjs.js +20 -19
- package/dist/cjs/{inject-keyboard-manager-6a6f5c9f.js → inject-keyboard-manager-540f0876.js} +1 -1
- package/dist/cjs/{internal-calendar-period-factory-dfcdd3f6.js → internal-calendar-period-factory-b11918ee.js} +1 -1
- package/dist/cjs/{internal-translation-controller-1dac2df8.js → internal-translation-controller-27bfc8c7.js} +17 -0
- package/dist/cjs/{keyboard-manager-c56033b1.js → keyboard-manager-16e96b62.js} +12 -5
- package/dist/cjs/{keyboard-manager-slimmer-7043a106.js → keyboard-manager-slimmer-0a4e556d.js} +1 -1
- package/dist/cjs/{link-extension-220ff6a9.js → link-extension-71eeaa9f.js} +26 -7
- package/dist/cjs/loader.cjs.js +14 -14
- package/dist/cjs/{month-view-generator-7b704a80.js → month-view-generator-0a3e04de.js} +1 -1
- package/dist/cjs/overlay-escape-coordination-901d8942.js +38 -0
- package/dist/cjs/{public-rules-5657bce4.js → public-rules-3dc5d02d.js} +9 -9
- package/dist/cjs/{range-c5afd53a.js → range-d29751e3.js} +1 -1
- package/dist/cjs/{responsive-format-facade-493d1763.js → responsive-format-facade-c6d7f0a1.js} +1 -1
- package/dist/cjs/{rich-text-editor-required-rule-385c1b61.js → rich-text-editor-required-rule-05de7f0c.js} +1 -1
- package/dist/cjs/{split-cell-operation-873d5db7.js → split-cell-operation-ef783850.js} +14 -4
- package/dist/cjs/{state-border-formatter-711c7aaa.js → state-border-formatter-dda9109a.js} +1 -1
- package/dist/cjs/{string-format-strategy.abstract-b61bdcbd.js → string-format-strategy.abstract-3a968a59.js} +1 -1
- package/dist/cjs/{string-input-formatter-slimmer-ef65cca7.js → string-input-formatter-slimmer-9747039f.js} +1 -1
- package/dist/cjs/{string-mask-strategy-ad3fa0ac.js → string-mask-strategy-d9f85c21.js} +2 -2
- package/dist/cjs/{style-formatter-8f711cb0.js → style-formatter-d21a9784.js} +2 -2
- package/dist/cjs/{time-required-rule-87417359.js → time-required-rule-580cbd3d.js} +1 -1
- package/dist/cjs/{token-extension-78b5a026.js → token-extension-8d7bd451.js} +3773 -252
- package/dist/cjs/{translation-slimmer-77c7f37d.js → translation-slimmer-31cd5a57.js} +1 -1
- package/dist/cjs/{type-guard-a57ef3ac.js → type-guard-00b8efc0.js} +1 -1
- package/dist/cjs/{valid-credit-card-number-rule-4c0a3040.js → valid-credit-card-number-rule-70885128.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +6 -6
- package/dist/cjs/vega-app-footer.cjs.entry.js +2 -2
- package/dist/cjs/vega-app-header-button.cjs.entry.js +6 -6
- package/dist/cjs/vega-banner.cjs.entry.js +1 -1
- package/dist/cjs/vega-box.cjs.entry.js +7 -7
- package/dist/cjs/vega-brand-logo.cjs.entry.js +2 -2
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -2
- package/dist/cjs/vega-button-circle.cjs.entry.js +7 -7
- package/dist/cjs/vega-button-group_2.cjs.entry.js +13 -6
- package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
- package/dist/cjs/vega-button.cjs.entry.js +22 -6
- package/dist/cjs/vega-calendar_5.cjs.entry.js +22 -11
- package/dist/cjs/vega-card.cjs.entry.js +5 -5
- package/dist/cjs/vega-carousel.cjs.entry.js +4 -4
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-chip.cjs.entry.js +6 -6
- package/dist/cjs/vega-code-block.cjs.entry.js +12 -12
- package/dist/cjs/vega-color-picker.cjs.entry.js +4 -4
- package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +4 -4
- package/dist/cjs/vega-color-swatch.cjs.entry.js +3 -3
- package/dist/cjs/vega-combo-box.cjs.entry.js +10 -10
- package/dist/cjs/vega-counter-badge.cjs.entry.js +2 -2
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +15 -15
- package/dist/cjs/vega-dialog_2.cjs.entry.js +72 -6
- package/dist/cjs/vega-divider.cjs.entry.js +5 -5
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +116 -24
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-field-label.cjs.entry.js +27 -34
- package/dist/cjs/vega-file-uploader.cjs.entry.js +5 -5
- 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 +2 -2
- package/dist/cjs/vega-grid.cjs.entry.js +5 -5
- package/dist/cjs/vega-icon.cjs.entry.js +6 -6
- package/dist/cjs/vega-image-uploader.cjs.entry.js +8 -8
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +7 -7
- package/dist/cjs/vega-input-numeric.cjs.entry.js +6 -6
- package/dist/cjs/vega-input-passcode.cjs.entry.js +6 -6
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +42 -8
- package/dist/cjs/vega-input-range.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-select.cjs.entry.js +25 -8
- package/dist/cjs/vega-input.cjs.entry.js +9 -9
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +10 -10
- 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-size-selector-mobile.cjs.entry.js +2 -2
- package/dist/cjs/vega-pagination.cjs.entry.js +4 -4
- package/dist/cjs/vega-popover_2.cjs.entry.js +58 -9
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-radio_2.cjs.entry.js +7 -7
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +44 -13
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +767 -248
- package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +3 -3
- package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +5 -5
- package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +158 -105
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +4 -4
- package/dist/cjs/vega-signature-capture.cjs.entry.js +8 -8
- package/dist/cjs/vega-stepper.cjs.entry.js +3 -3
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +22 -9
- package/dist/cjs/vega-table_11.cjs.entry.js +82 -46
- package/dist/cjs/vega-textarea.cjs.entry.js +3 -3
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +11 -11
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +4 -4
- 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.js +17 -2
- package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.js +13 -6
- package/dist/collection/components/vega-button-link/vega-button-link.js +2 -2
- package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-item-renderer.js +5 -2
- package/dist/collection/components/vega-calendar/vega-calendar-event-preview/slimmers/renderers/vega-calendar-event-preview-detail-renderer.js +9 -1
- package/dist/collection/components/vega-code-block/vega-code-block.css +4 -4
- package/dist/collection/components/vega-counter-badge/vega-counter-badge.js +2 -2
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-keyboard-controller.js +148 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.js +5 -2
- package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.js +17 -0
- package/dist/collection/components/vega-dropdown/vega-dropdown-group/slimmers/renderers/vega-dropdown-group-renderer.js +6 -4
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +12 -4
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.css +2 -1
- package/dist/collection/components/vega-dropdown/vega-dropdown.js +1 -1
- package/dist/collection/components/vega-field-label/slimmers/renderers/vega-field-label-label-announcement-renderer.js +21 -30
- package/dist/collection/components/vega-field-label/vega-field-label.css +1 -0
- package/dist/collection/components/vega-field-label/vega-field-label.js +7 -5
- package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +19 -2
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.js +66 -0
- package/dist/collection/components/vega-popover/slimmers/renderers/vega-popover-appender-renderer.js +17 -0
- package/dist/collection/components/vega-popover/vega-popover.js +33 -1
- package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +4 -1
- package/dist/collection/components/vega-rich-text-editor/constants/constant.js +25 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/commit-value-strategy.js +13 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/commit-value-action.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/text-style-default-styles.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +22 -0
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +10 -0
- package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +11 -0
- package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy-registry.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy.abstract.js +5 -2
- package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/title-heading-node-filter-styles-strategy.js +36 -2
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/code-block-node.js +6 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +8 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +6 -0
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.js +20 -3
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +30 -18
- package/dist/collection/components/vega-rich-text-editor/extensions/block-boundary-registry.js +34 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/copy/copy-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/cut/cut-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +51 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/slimmers/renderers/find-replace-panel-renderer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/action-handler-strategies/insert-function-block-strategy.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/constants.js +8 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/function-block.js +14 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/logic-control-block.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/logic-control-node.js +6 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-containing-function-block-strategy.js +19 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-function-block-strategy.js +9 -5
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-function-content-strategy.js +3 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-logic-control-block-strategy.js +4 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +18 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-block-renderer.js +5 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/logic-control-block-renderer.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/utils.js +36 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/horizontal-line/renderers/horizontal-line-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/line-height/line-height-toolbar-button-renderer.js +16 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/action-handler-strategies/image-replace-src-strategy.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/actions/image-replace-src-action.js +13 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/paste-image-parser.js +295 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/pending-image-registry.js +116 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.js +13 -4
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-extension.js +70 -7
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/default-paste-strategy.js +38 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/paste-processing-strategy.abstract.js +55 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/paste-strategy-selector.js +59 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/word-paste-strategy.js +416 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-code-block-transformer.js +106 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-image-transformer.js +198 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-list-transformer.js +591 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-paragraph-transformer.js +112 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-table-transformer.js +551 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-transformer.js +7 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/special-characters/special-characters-toolbar-button-renderer.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-block.js +10 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.js +3 -9
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-cell-renderer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.js +81 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-popover-base-renderer.js +148 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +151 -5
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.js +144 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/table/table-selection.js +26 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/table-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-cell-properties-form-field-renderer.js +11 -2
- 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 +5 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-form-field-renderer.js +5 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.css +5 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.js +16 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/caption-button-slimmer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/cell-properties-button-slimmer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.js +10 -9
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.js +9 -8
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +25 -10
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-properties-button-slimmer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-setting-button-slimmer.abstract.js +5 -4
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/vega-rich-text-table-setting-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.css +10 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.js +4 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node.js +44 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/word-count/action-handler-interceptors/prevent-hard-limit-exceed-interceptor.js +70 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/word-count/type.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/word-count/word-count-extension.js +62 -0
- package/dist/collection/components/vega-rich-text-editor/public-api.js +1 -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/element-to-dto-strategy/annotation-handler/text-style-annotation-handler.js +7 -4
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.js +17 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +18 -4
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-composition-text-controller.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +21 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +7 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/value-controller.js +52 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/word-count-controller.js +79 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.js +6 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +111 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.js +24 -6
- 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/tools/toolbar-button-slimmer.abstract.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.js +59 -8
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.js +5 -2
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.js +13 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +16 -0
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.js +124 -0
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +9 -1
- package/dist/collection/components/vega-tab-group/slimmers/vega-tab-group/renderers/vega-tab-group-tab-list-renderer.js +14 -7
- package/dist/collection/components/vega-tab-group/vega-tab-group.css +6 -0
- package/dist/collection/components/vega-tab-group/vega-tab-group.js +5 -0
- package/dist/collection/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.js +31 -1
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.js +18 -11
- package/dist/collection/global/scripts/before-vega-load.js +2 -0
- package/dist/collection/helpers/keyboard/keyboard-manager.js +11 -4
- package/dist/collection/helpers/keyboard/overlay-escape-coordination.js +33 -0
- package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +1 -1
- package/dist/collection/helpers/translation/locales/en.js +17 -0
- package/dist/collection/polyfill/libphonenumber/as-you-type.js +21 -3
- package/dist/collection/polyfill/libphonenumber/metadata.js +16 -0
- package/dist/collection/utils/accessibility.js +20 -0
- package/dist/collection/utils/sanitize/index.js +3 -2
- package/dist/collection/utils/sanitize/strategies/index.js +1 -0
- package/dist/collection/utils/sanitize/strategies/label-sanitize-strategy.js +14 -0
- package/dist/collection/utils/sanitize/strategies/plain-text-sanitize-strategy.js +70 -0
- package/dist/esm/{accessibility-6af5cf2e.js → accessibility-c899a968.js} +21 -1
- package/dist/esm/{action-color-accessibility-validator-ce55cb07.js → action-color-accessibility-validator-08877515.js} +2 -2
- package/dist/esm/{app-globals-95c7110a.js → app-globals-1e1371d5.js} +11 -10
- package/dist/esm/{aria-attributes-value-mapper-2c632641.js → aria-attributes-value-mapper-a5c7478e.js} +1 -1
- package/dist/esm/{aria-dialog-focusable-trap-slimmer-f069f54d.js → aria-dialog-focusable-trap-slimmer-b2a24a45.js} +2 -2
- package/dist/esm/{child-nodes-notify-observer-slimmer-499a3aa7.js → child-nodes-notify-observer-slimmer-034bc78c.js} +1 -1
- package/dist/esm/{code-block-9c513169.js → code-block-741d6b8e.js} +91 -9
- package/dist/esm/{component-global-style-slimmer-ac703085.js → component-global-style-slimmer-7d60a04a.js} +1 -1
- package/dist/esm/{component-value-history-controller-slimmer.abstract-9cef2a2a.js → component-value-history-controller-slimmer.abstract-2bcd749e.js} +26 -7
- package/dist/esm/{content-state-25c81c08.js → content-state-2f6f4204.js} +104 -11
- package/dist/esm/{dark-mode-style-controller-ca5afd2d.js → dark-mode-style-controller-352f15ff.js} +2 -2
- package/dist/esm/{date-required-rule-85334d0c.js → date-required-rule-2ea3aec8.js} +1 -1
- package/dist/esm/{design-token-10ff79b5.js → design-token-82a4e107.js} +3 -3
- package/dist/esm/{dom-node-subject-observer-factory-ddff8662.js → dom-node-subject-observer-factory-bb7e68a0.js} +1 -1
- package/dist/esm/{element-appender-slimmer-8a06ecdd.js → element-appender-slimmer-c820c0bf.js} +4 -4
- package/dist/esm/{event-emit-slimmer-2452278f.js → event-emit-slimmer-e8bb2292.js} +1 -1
- package/dist/esm/{form-field-controller-slimmer-68fc5380.js → form-field-controller-slimmer-02165dbe.js} +5 -5
- package/dist/esm/{image-annotation-action-d7f2aecc.js → image-annotation-action-972c1074.js} +8 -7
- package/dist/esm/{image-extension-fbd1ed6e.js → image-extension-59484e9a.js} +2 -2
- package/dist/esm/{index-3b327f29.js → index-35451d12.js} +86 -1
- package/dist/esm/index.js +21 -21
- package/dist/esm/{inject-keyboard-manager-ea1aad5b.js → inject-keyboard-manager-6a10c9b7.js} +1 -1
- package/dist/esm/{internal-calendar-period-factory-7b294fb6.js → internal-calendar-period-factory-d1a60f81.js} +1 -1
- package/dist/esm/{internal-translation-controller-fac22598.js → internal-translation-controller-fff376d2.js} +17 -0
- package/dist/esm/{keyboard-manager-50da85d7.js → keyboard-manager-a58288df.js} +13 -6
- package/dist/esm/{keyboard-manager-slimmer-1f7c8bfb.js → keyboard-manager-slimmer-133b86cd.js} +1 -1
- package/dist/esm/{link-extension-e8ee103e.js → link-extension-e89acb5c.js} +26 -7
- package/dist/esm/loader.js +16 -16
- package/dist/esm/{month-view-generator-a1a9a4ec.js → month-view-generator-20e32b22.js} +1 -1
- package/dist/esm/overlay-escape-coordination-439f7d6f.js +35 -0
- package/dist/esm/{public-rules-49de79c7.js → public-rules-c154201b.js} +11 -11
- package/dist/esm/{range-b678c693.js → range-c818a1eb.js} +2 -2
- package/dist/esm/{responsive-format-facade-f19b601c.js → responsive-format-facade-07843ec3.js} +1 -1
- package/dist/esm/{rich-text-editor-required-rule-578e0958.js → rich-text-editor-required-rule-878e91c6.js} +1 -1
- package/dist/esm/{split-cell-operation-1c8e7585.js → split-cell-operation-cc0cdf90.js} +15 -5
- package/dist/esm/{state-border-formatter-bfda33aa.js → state-border-formatter-3b3dcfe8.js} +1 -1
- package/dist/esm/{string-format-strategy.abstract-1f4ff1b3.js → string-format-strategy.abstract-44381dcb.js} +1 -1
- package/dist/esm/{string-input-formatter-slimmer-0006a107.js → string-input-formatter-slimmer-76fe52d3.js} +3 -3
- package/dist/esm/{string-mask-strategy-bbbcdbef.js → string-mask-strategy-999fba4b.js} +2 -2
- package/dist/esm/{style-formatter-e9adc8f4.js → style-formatter-c4192c99.js} +2 -2
- package/dist/esm/{sub-state-notify-slimmer-23b7d0e8.js → sub-state-notify-slimmer-e306c849.js} +1 -1
- package/dist/esm/{sub-state-observer-slimmer-722f6b92.js → sub-state-observer-slimmer-bd85f381.js} +2 -2
- package/dist/esm/{time-required-rule-1ce2d0a0.js → time-required-rule-0554b114.js} +1 -1
- package/dist/esm/{token-extension-f2d009e3.js → token-extension-35c66684.js} +3773 -253
- package/dist/esm/{translation-slimmer-ee0f0e76.js → translation-slimmer-77022f2e.js} +1 -1
- package/dist/esm/{type-guard-f2624334.js → type-guard-26d83e7e.js} +1 -1
- package/dist/esm/{ui-d73f756a.js → ui-80e610f4.js} +1 -1
- package/dist/esm/{valid-credit-card-number-rule-60212b1d.js → valid-credit-card-number-rule-f60b6904.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +9 -9
- package/dist/esm/vega-app-footer.entry.js +5 -5
- package/dist/esm/vega-app-header-button.entry.js +9 -9
- package/dist/esm/vega-backdrop.entry.js +1 -1
- package/dist/esm/vega-banner.entry.js +4 -4
- package/dist/esm/vega-box.entry.js +8 -8
- package/dist/esm/vega-brand-logo.entry.js +2 -2
- package/dist/esm/vega-breadcrumb.entry.js +5 -5
- package/dist/esm/vega-button-circle.entry.js +10 -10
- package/dist/esm/vega-button-group_2.entry.js +18 -11
- package/dist/esm/vega-button-link.entry.js +7 -7
- package/dist/esm/vega-button.entry.js +25 -9
- package/dist/esm/vega-calendar_5.entry.js +27 -16
- package/dist/esm/vega-card.entry.js +6 -6
- package/dist/esm/vega-carousel.entry.js +7 -7
- package/dist/esm/vega-checkbox_2.entry.js +9 -9
- package/dist/esm/vega-chip.entry.js +9 -9
- package/dist/esm/vega-code-block.entry.js +15 -15
- package/dist/esm/vega-color-picker.entry.js +8 -8
- package/dist/esm/vega-color-swatch-picker.entry.js +8 -8
- package/dist/esm/vega-color-swatch.entry.js +6 -6
- package/dist/esm/vega-combo-box.entry.js +14 -14
- package/dist/esm/vega-counter-badge.entry.js +2 -2
- package/dist/esm/vega-date-picker_2.entry.js +21 -21
- package/dist/esm/vega-dialog_2.entry.js +76 -10
- package/dist/esm/vega-divider.entry.js +5 -5
- package/dist/esm/vega-dropdown_5.entry.js +123 -31
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-field-label.entry.js +30 -37
- package/dist/esm/vega-file-uploader.entry.js +9 -9
- package/dist/esm/vega-flag-icon.entry.js +5 -5
- package/dist/esm/vega-flex.entry.js +7 -7
- package/dist/esm/vega-font.entry.js +6 -6
- package/dist/esm/vega-form.entry.js +8 -8
- package/dist/esm/vega-grid.entry.js +6 -6
- package/dist/esm/vega-icon.entry.js +7 -7
- package/dist/esm/vega-image-uploader.entry.js +12 -12
- package/dist/esm/vega-input-credit-card.entry.js +11 -11
- package/dist/esm/vega-input-numeric.entry.js +11 -11
- package/dist/esm/vega-input-passcode.entry.js +10 -10
- package/dist/esm/vega-input-phone-number.entry.js +46 -12
- package/dist/esm/vega-input-range.entry.js +9 -9
- package/dist/esm/vega-input-select.entry.js +29 -12
- package/dist/esm/vega-input.entry.js +14 -14
- package/dist/esm/vega-item-toggle.entry.js +3 -3
- package/dist/esm/vega-left-nav_5.entry.js +15 -15
- package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
- package/dist/esm/vega-page-notification_2.entry.js +3 -3
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +2 -2
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +4 -4
- package/dist/esm/vega-pagination.entry.js +7 -7
- package/dist/esm/vega-popover_2.entry.js +62 -13
- package/dist/esm/vega-progress-tracker_2.entry.js +9 -9
- package/dist/esm/vega-radio_2.entry.js +12 -12
- package/dist/esm/vega-rich-text-content.entry.js +48 -17
- package/dist/esm/vega-rich-text-editor_4.entry.js +774 -255
- package/dist/esm/vega-rich-text-find-replace-panel.entry.js +6 -6
- package/dist/esm/vega-rich-text-special-characters-panel.entry.js +8 -8
- package/dist/esm/vega-rich-text-table-properties_3.entry.js +160 -107
- package/dist/esm/vega-segment-control.entry.js +3 -3
- package/dist/esm/vega-selection-chip_2.entry.js +11 -11
- package/dist/esm/vega-selection-tile_2.entry.js +9 -9
- package/dist/esm/vega-sidenav_3.entry.js +9 -9
- package/dist/esm/vega-signature-capture.entry.js +12 -12
- package/dist/esm/vega-stepper.entry.js +7 -7
- package/dist/esm/vega-tab-group_2.entry.js +25 -12
- package/dist/esm/vega-table_11.entry.js +59 -23
- package/dist/esm/vega-textarea.entry.js +7 -7
- package/dist/esm/vega-time-picker_2.entry.js +15 -15
- package/dist/esm/vega-toggle-switch.entry.js +8 -8
- package/dist/esm/vega-tooltip_2.entry.js +8 -8
- package/dist/esm/vega.js +16 -16
- package/dist/esm/{wait-for-component-did-render-ff7062aa.js → wait-for-component-did-render-9b91a826.js} +1 -1
- package/dist/sri/vega-sri-manifest.json +399 -395
- package/dist/types/components/vega-button/vega-button.d.ts +2 -0
- package/dist/types/components/vega-button-group/types.d.ts +12 -6
- package/dist/types/components/vega-calendar/vega-calendar-event-preview/slimmers/renderers/vega-calendar-event-preview-detail-renderer.d.ts +2 -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.d.ts +1 -1
- package/dist/types/components/vega-field-label/slimmers/renderers/vega-field-label-label-announcement-renderer.d.ts +3 -10
- package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.d.ts +8 -0
- package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.d.ts +33 -0
- package/dist/types/components/vega-modal/types.d.ts +2 -1
- package/dist/types/components/vega-popover/slimmers/renderers/vega-popover-appender-renderer.d.ts +9 -0
- package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +22 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/commit-value-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/commit-value-action.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/text-style-default-styles.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +15 -0
- 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/content-state.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy-registry.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy.abstract.d.ts +3 -2
- package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/title-heading-node-filter-styles-strategy.d.ts +25 -3
- package/dist/types/components/vega-rich-text-editor/dto/nodes/code-block-node.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/node.abstract.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.d.ts +7 -0
- package/dist/types/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.d.ts +11 -0
- package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +5 -0
- package/dist/types/components/vega-rich-text-editor/extensions/block-boundary-registry.d.ts +21 -0
- package/dist/types/components/vega-rich-text-editor/extensions/extension.abstract.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.d.ts +19 -0
- package/dist/types/components/vega-rich-text-editor/extensions/functions/constants.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/extensions/functions/dto/function-block.d.ts +7 -0
- package/dist/types/components/vega-rich-text-editor/extensions/functions/dto/logic-control-node.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-containing-function-block-strategy.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/extensions/functions/utils.d.ts +29 -0
- package/dist/types/components/vega-rich-text-editor/extensions/line-height/line-height-toolbar-button-renderer.d.ts +14 -1
- package/dist/types/components/vega-rich-text-editor/extensions/paste/action-handler-strategies/image-replace-src-strategy.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/actions/image-replace-src-action.d.ts +11 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/paste-image-parser.d.ts +136 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/pending-image-registry.d.ts +68 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.d.ts +9 -4
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-extension.d.ts +39 -2
- package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/default-paste-strategy.d.ts +29 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/paste-processing-strategy.abstract.d.ts +61 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/paste-strategy-selector.d.ts +45 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/word-paste-strategy.d.ts +186 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-code-block-transformer.d.ts +51 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-image-transformer.d.ts +86 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-list-transformer.d.ts +271 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-paragraph-transformer.d.ts +25 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-table-transformer.d.ts +240 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-transformer.d.ts +36 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-block.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.d.ts +31 -1
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-popover-base-renderer.d.ts +91 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.d.ts +46 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.d.ts +58 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/table-selection.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.d.ts +2 -1
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-setting-button-slimmer.abstract.d.ts +3 -1
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node.d.ts +19 -1
- package/dist/types/components/vega-rich-text-editor/extensions/word-count/action-handler-interceptors/prevent-hard-limit-exceed-interceptor.d.ts +38 -0
- package/dist/types/components/vega-rich-text-editor/extensions/word-count/type.d.ts +46 -0
- package/dist/types/components/vega-rich-text-editor/extensions/word-count/word-count-extension.d.ts +38 -0
- package/dist/types/components/vega-rich-text-editor/interface.d.ts +22 -0
- package/dist/types/components/vega-rich-text-editor/public-api.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/text-style-annotation-handler.d.ts +4 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/value-controller.d.ts +11 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/word-count-controller.d.ts +40 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.d.ts +4 -1
- 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/vega-rich-text-editor-renderer.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.d.ts +68 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.d.ts +3 -0
- package/dist/types/components/vega-tab-group/slimmers/vega-tab-group/renderers/vega-tab-group-tab-list-renderer.d.ts +1 -0
- package/dist/types/components/vega-tab-group/types.d.ts +3 -1
- package/dist/types/components/vega-tab-group/vega-tab-group.d.ts +2 -0
- package/dist/types/components/vega-table/interface.d.ts +4 -4
- package/dist/types/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.d.ts +16 -0
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.d.ts +8 -10
- package/dist/types/helpers/keyboard/keyboard-manager.d.ts +9 -0
- package/dist/types/helpers/keyboard/overlay-escape-coordination.d.ts +28 -0
- package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +1 -1
- package/dist/types/helpers/translation/interface.d.ts +18 -1
- package/dist/types/polyfill/libphonenumber/as-you-type.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/metadata.d.ts +10 -0
- package/dist/types/types/public-api.d.ts +2 -0
- package/dist/types/utils/accessibility.d.ts +9 -0
- package/dist/types/utils/sanitize/index.d.ts +3 -2
- package/dist/types/utils/sanitize/strategies/index.d.ts +1 -0
- package/dist/types/utils/sanitize/strategies/label-sanitize-strategy.d.ts +9 -0
- package/dist/types/utils/sanitize/strategies/plain-text-sanitize-strategy.d.ts +36 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-6f537797.entry.js → p-01ca92e6.entry.js} +1 -1
- package/dist/vega/{p-02d3ce79.entry.js → p-02b5d4ac.entry.js} +1 -1
- package/dist/vega/p-06a42a9f.entry.js +1 -0
- package/dist/vega/{p-fd23c365.entry.js → p-0cd362f3.entry.js} +1 -1
- package/dist/vega/p-0e10798b.entry.js +1 -0
- package/dist/vega/{p-2c2e8615.js → p-0eea1ca8.js} +1 -1
- package/dist/vega/{p-c98c2f5f.entry.js → p-0f344e02.entry.js} +1 -1
- package/dist/vega/{p-4cbfc01e.entry.js → p-23db0a92.entry.js} +1 -1
- package/dist/vega/{p-ccbe3f1b.entry.js → p-284a8828.entry.js} +1 -1
- package/dist/vega/{p-ac94ba1b.entry.js → p-2b26e182.entry.js} +1 -1
- package/dist/vega/{p-56598858.entry.js → p-2c8dc0d2.entry.js} +1 -1
- package/dist/vega/{p-2bb5a232.js → p-3091b105.js} +1 -1
- package/dist/vega/{p-9abf7d0a.entry.js → p-35d37477.entry.js} +1 -1
- package/dist/vega/{p-526e3634.js → p-36a57431.js} +1 -1
- package/dist/vega/{p-810c9c29.js → p-379736e2.js} +1 -1
- package/dist/vega/p-3abb793c.entry.js +1 -0
- package/dist/vega/{p-f29ea345.entry.js → p-3d6a43df.entry.js} +1 -1
- package/dist/vega/{p-c2277448.entry.js → p-3f2a4b34.entry.js} +1 -1
- package/dist/vega/p-401c6764.js +1 -0
- package/dist/vega/{p-da867019.entry.js → p-411cadbc.entry.js} +1 -1
- package/dist/vega/{p-ec64cc59.entry.js → p-46f22f6c.entry.js} +1 -1
- package/dist/vega/{p-8d2501b2.js → p-493108d5.js} +1 -1
- package/dist/vega/{p-085d1647.entry.js → p-49de5559.entry.js} +1 -1
- package/dist/vega/{p-781b7a54.js → p-4b35c748.js} +1 -1
- package/dist/vega/{p-a8174ad8.entry.js → p-4d1896e0.entry.js} +1 -1
- package/dist/vega/{p-b00ec194.entry.js → p-4e23e56c.entry.js} +1 -1
- package/dist/vega/{p-1cff027b.entry.js → p-5006404e.entry.js} +1 -1
- package/dist/vega/{p-56417ec5.entry.js → p-5789690b.entry.js} +1 -1
- package/dist/vega/{p-461100b8.entry.js → p-594cb986.entry.js} +1 -1
- package/dist/vega/p-5a086e93.js +1 -0
- package/dist/vega/{p-3e09aeed.js → p-5b3c8a56.js} +1 -1
- package/dist/vega/p-5b9b1631.entry.js +1 -0
- package/dist/vega/{p-c41a2d4a.js → p-5c3649f9.js} +1 -1
- package/dist/vega/{p-fb9475ab.entry.js → p-5d9be870.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-d609c3fd.js → p-60a74fb7.js} +1 -1
- package/dist/vega/{p-2acf9b42.entry.js → p-61ed7268.entry.js} +1 -1
- package/dist/vega/p-6336d446.entry.js +1 -0
- package/dist/vega/{p-dbb4b1d1.js → p-638b6a7d.js} +1 -1
- package/dist/vega/{p-bdb5180c.js → p-68744e7e.js} +1 -1
- package/dist/vega/p-6e9e7131.js +1 -0
- package/dist/vega/{p-014cd411.js → p-6eedbc4f.js} +1 -1
- package/dist/vega/{p-a090b2be.js → p-6fd8f14b.js} +1 -1
- package/dist/vega/{p-0cf3b5c1.entry.js → p-7469d0d1.entry.js} +1 -1
- package/dist/vega/p-74b20563.entry.js +1 -0
- package/dist/vega/{p-17c69503.entry.js → p-76999ea1.entry.js} +1 -1
- package/dist/vega/p-77bcdd35.js +1 -0
- package/dist/vega/{p-035e2f05.entry.js → p-79b49e8d.entry.js} +1 -1
- package/dist/vega/{p-8d96f0e8.entry.js → p-7a03ef96.entry.js} +1 -1
- package/dist/vega/{p-c5fb8a69.entry.js → p-7ae4cf82.entry.js} +1 -1
- package/dist/vega/{p-f9bfee81.entry.js → p-7cc8855d.entry.js} +1 -1
- package/dist/vega/{p-d470fce2.entry.js → p-7ddc0bec.entry.js} +1 -1
- package/dist/vega/{p-ca3c1317.entry.js → p-7e22610b.entry.js} +1 -1
- package/dist/vega/p-7f395622.entry.js +1 -0
- package/dist/vega/{p-3737b9e2.entry.js → p-816b5fd2.entry.js} +1 -1
- package/dist/vega/p-8387896e.js +1 -0
- package/dist/vega/p-844ad6aa.entry.js +1 -0
- package/dist/vega/p-853a05eb.js +1 -0
- package/dist/vega/p-85de755f.js +1 -0
- package/dist/vega/p-8663314e.js +1 -0
- package/dist/vega/{p-95c18f79.entry.js → p-86fb46d2.entry.js} +1 -1
- package/dist/vega/p-8cfdd0e8.entry.js +1 -0
- package/dist/vega/p-8ebe30a8.js +1 -0
- package/dist/vega/p-8f00dfe6.js +1 -0
- package/dist/vega/{p-66647244.js → p-8fc0a820.js} +1 -1
- package/dist/vega/{p-4fd0cf01.js → p-9034f709.js} +1 -1
- package/dist/vega/{p-456f678b.js → p-941a83db.js} +1 -1
- package/dist/vega/{p-ae2abdfa.js → p-96c090c4.js} +1 -1
- package/dist/vega/p-9ba2fdff.js +1 -0
- package/dist/vega/{p-d319ebb5.js → p-9e9f49f4.js} +1 -1
- package/dist/vega/p-9efa5d76.js +1 -0
- package/dist/vega/{p-a81ad3bd.js → p-a306bb39.js} +1 -1
- package/dist/vega/{p-db11134b.entry.js → p-a48468b5.entry.js} +1 -1
- package/dist/vega/{p-56db3323.js → p-a488447f.js} +1 -1
- package/dist/vega/p-a647c856.entry.js +1 -0
- package/dist/vega/{p-a484e32d.entry.js → p-a6a89f09.entry.js} +1 -1
- package/dist/vega/p-a92cd703.js +1 -0
- package/dist/vega/p-a93b3aed.js +1 -0
- package/dist/vega/{p-528748fa.js → p-aa135628.js} +1 -1
- package/dist/vega/{p-4bfe3258.entry.js → p-aaaf21eb.entry.js} +1 -1
- package/dist/vega/{p-36d9e782.entry.js → p-ab253867.entry.js} +1 -1
- package/dist/vega/{p-dcd3e3a7.js → p-ab9d53e9.js} +1 -1
- package/dist/vega/p-ad367b48.entry.js +1 -0
- package/dist/vega/{p-e18c0656.entry.js → p-af0cfea0.entry.js} +1 -1
- package/dist/vega/p-b07f587a.entry.js +1 -0
- package/dist/vega/p-b21cc390.entry.js +1 -0
- package/dist/vega/{p-12e8a1b2.js → p-b2a4314a.js} +1 -1
- package/dist/vega/p-b52d7724.js +3 -0
- package/dist/vega/{p-5f96e741.entry.js → p-b97ed9f7.entry.js} +1 -1
- package/dist/vega/{p-7dcd2850.entry.js → p-bc0e5598.entry.js} +1 -1
- package/dist/vega/p-bc119e75.entry.js +1 -0
- package/dist/vega/{p-0cbf09f7.entry.js → p-bedb575c.entry.js} +1 -1
- package/dist/vega/{p-cb81126a.entry.js → p-bfe5dff7.entry.js} +1 -1
- package/dist/vega/{p-52c69f9e.entry.js → p-c032f626.entry.js} +1 -1
- package/dist/vega/{p-1ea9ad9a.js → p-c34f4cbc.js} +1 -1
- package/dist/vega/{p-72ab5cd5.entry.js → p-c422ee02.entry.js} +1 -1
- package/dist/vega/{p-39c5054b.js → p-c576e846.js} +1 -1
- package/dist/vega/{p-c70748f7.entry.js → p-c7d46740.entry.js} +1 -1
- package/dist/vega/p-cc569b54.js +1 -0
- package/dist/vega/{p-4e065ef7.entry.js → p-cd04b149.entry.js} +1 -1
- package/dist/vega/{p-2a245138.entry.js → p-cd0a108b.entry.js} +1 -1
- package/dist/vega/{p-8c56d74d.entry.js → p-d1bb6e7a.entry.js} +1 -1
- package/dist/vega/{p-200c8914.entry.js → p-d340ee3d.entry.js} +1 -1
- package/dist/vega/p-d897acd5.js +1 -0
- package/dist/vega/p-debf9e06.entry.js +1 -0
- package/dist/vega/p-e0a51e49.js +1 -0
- package/dist/vega/{p-1aedbfd2.entry.js → p-e11c6ec4.entry.js} +1 -1
- package/dist/vega/{p-1e0a8fd3.js → p-e14323f3.js} +1 -1
- package/dist/vega/{p-6d4518d7.entry.js → p-e5abc288.entry.js} +1 -1
- package/dist/vega/{p-544ce391.entry.js → p-ea1a0046.entry.js} +1 -1
- package/dist/vega/{p-72fd17a1.entry.js → p-edd7aa92.entry.js} +1 -1
- package/dist/vega/p-ef1bbf14.js +1 -0
- package/dist/vega/{p-9834d5d4.entry.js → p-efc08027.entry.js} +1 -1
- package/dist/vega/{p-874e5624.js → p-f485448a.js} +1 -1
- package/dist/vega/{p-92528dc9.entry.js → p-f8b2dbb9.entry.js} +1 -1
- package/dist/vega/{p-cf4b3d40.entry.js → p-f8bf379c.entry.js} +1 -1
- package/dist/vega/{p-b98ead05.entry.js → p-f902305d.entry.js} +1 -1
- package/dist/vega/p-fe985b52.js +1 -0
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-keyboard-conttroller.js +0 -85
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-constants.js +0 -6
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-constants.d.ts +0 -6
- package/dist/vega/p-03eeadc1.entry.js +0 -1
- package/dist/vega/p-0eb29065.js +0 -3
- package/dist/vega/p-10d30c03.js +0 -1
- package/dist/vega/p-1250b1ab.entry.js +0 -1
- package/dist/vega/p-1abd3c17.js +0 -1
- package/dist/vega/p-2d158cbd.js +0 -1
- package/dist/vega/p-2f07d719.entry.js +0 -1
- package/dist/vega/p-36d2df7a.entry.js +0 -1
- package/dist/vega/p-373541fa.js +0 -1
- package/dist/vega/p-3a620268.js +0 -1
- package/dist/vega/p-3d0b4074.js +0 -1
- package/dist/vega/p-56493601.js +0 -1
- package/dist/vega/p-571ec00b.js +0 -1
- package/dist/vega/p-585e4f1c.entry.js +0 -1
- package/dist/vega/p-5b1f5e4a.entry.js +0 -1
- package/dist/vega/p-6234852e.entry.js +0 -1
- package/dist/vega/p-67eaf77e.js +0 -1
- package/dist/vega/p-6c95a6a3.js +0 -1
- package/dist/vega/p-6fd4f2c6.js +0 -1
- package/dist/vega/p-7e8fdac4.js +0 -1
- package/dist/vega/p-83ad8988.js +0 -1
- package/dist/vega/p-94975537.entry.js +0 -1
- package/dist/vega/p-a91927eb.entry.js +0 -1
- package/dist/vega/p-b3733762.entry.js +0 -1
- package/dist/vega/p-b622c455.js +0 -1
- package/dist/vega/p-c6d775b8.entry.js +0 -1
- package/dist/vega/p-cd69aeae.js +0 -1
- package/dist/vega/p-cfe268a8.entry.js +0 -1
- package/dist/vega/p-daba4af1.js +0 -1
- package/dist/vega/p-de8f0d98.js +0 -1
- package/dist/vega/p-f0e828d8.js +0 -1
- package/dist/vega/p-f62c5a20.entry.js +0 -1
- package/dist/vega/p-f6c0e9e7.entry.js +0 -1
- package/dist/vega/p-fa65956c.entry.js +0 -1
- /package/dist/types/components/vega-dropdown/slimmers/controllers/{vega-dropdown-keyboard-conttroller.d.ts → vega-dropdown-keyboard-controller.d.ts} +0 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { generateUUID } from '../../../../../utils/misc';
|
|
2
|
+
/**
|
|
3
|
+
* Extracts pasted image files from clipboard payloads and swaps matching
|
|
4
|
+
* `<img>` elements to local object-URL previews.
|
|
5
|
+
*
|
|
6
|
+
* The parser is stateless: callers own the returned {@link PasteImagePreview}
|
|
7
|
+
* list and decide how to track pending uploads.
|
|
8
|
+
*/
|
|
9
|
+
export class PasteImageParser {
|
|
10
|
+
/**
|
|
11
|
+
* Parses local `file://` images from the HTML, swaps matching `<img>`
|
|
12
|
+
* elements to object-URL previews, and returns the rewritten HTML alongside
|
|
13
|
+
* the resolved pending previews.
|
|
14
|
+
*
|
|
15
|
+
* When no local images are resolved, the original HTML is returned unchanged
|
|
16
|
+
* with an empty preview list.
|
|
17
|
+
*
|
|
18
|
+
* @param {string} html HTML content to parse.
|
|
19
|
+
* @param {ClipboardFileContent | null} clipboardFileContent Clipboard payload for image extraction.
|
|
20
|
+
* @returns {ParseLocalImagesResult} Rewritten HTML and resolved previews.
|
|
21
|
+
*/
|
|
22
|
+
parseLocalImages(html, clipboardFileContent) {
|
|
23
|
+
if (!html.includes('<img')) {
|
|
24
|
+
return { html, previews: [] };
|
|
25
|
+
}
|
|
26
|
+
const safeHtml = html.replace(/\s+style=/g, ' data-style=');
|
|
27
|
+
const parser = new DOMParser();
|
|
28
|
+
const parsedDoc = parser.parseFromString(safeHtml, 'text/html');
|
|
29
|
+
const localImageElements = Array.from(parsedDoc.querySelectorAll('img')).filter((img) => img.src.startsWith('file://'));
|
|
30
|
+
if (localImageElements.length === 0) {
|
|
31
|
+
return { html, previews: [] };
|
|
32
|
+
}
|
|
33
|
+
const imageFiles = this.extractImageFiles(clipboardFileContent, localImageElements);
|
|
34
|
+
if (imageFiles.length === 0) {
|
|
35
|
+
return { html, previews: [] };
|
|
36
|
+
}
|
|
37
|
+
const previews = this.createImagePreviews(localImageElements, imageFiles);
|
|
38
|
+
const rewrittenHtml = parsedDoc.body.innerHTML.replace(/ data-style=/g, ' style=');
|
|
39
|
+
return { html: rewrittenHtml, previews };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Swaps each `<img>` src to a local object-URL preview using the provided
|
|
43
|
+
* image files (paired by order), returning one preview per resolved image.
|
|
44
|
+
*
|
|
45
|
+
* Images that live inside a list are dropped instead of being previewed: the
|
|
46
|
+
* RTE does not support list images. They are removed here (after holding their
|
|
47
|
+
* position while the RTF images are paired by order) so the remaining images
|
|
48
|
+
* stay aligned with their files even when a list image is not the last one.
|
|
49
|
+
*
|
|
50
|
+
* @param {HTMLImageElement[]} images Placeholder `<img>` elements in document order.
|
|
51
|
+
* @param {File[]} files Image files to pair with the elements, in the same order.
|
|
52
|
+
* @returns {PasteImagePreview[]} Previews for the images that were resolved to a file.
|
|
53
|
+
*/
|
|
54
|
+
createImagePreviews(images, files) {
|
|
55
|
+
const previews = [];
|
|
56
|
+
images.forEach((imageElement, index) => {
|
|
57
|
+
// List images have no editor representation, so drop them here instead of
|
|
58
|
+
// creating a preview. Removing them at this stage (rather than earlier)
|
|
59
|
+
// keeps the remaining images aligned with their files.
|
|
60
|
+
if (this.isListImage(imageElement)) {
|
|
61
|
+
imageElement.remove();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const file = files[index];
|
|
65
|
+
if (!file) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const objectUrl = URL.createObjectURL(file);
|
|
69
|
+
imageElement.setAttribute('src', objectUrl);
|
|
70
|
+
const imageId = generateUUID();
|
|
71
|
+
imageElement.setAttribute(PasteImageParser.PREVIEW_IMG_KEY, imageId);
|
|
72
|
+
previews.push({ id: imageId, file, objectUrl });
|
|
73
|
+
});
|
|
74
|
+
return previews;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extracts image files from clipboard data, preferring Word RTF-decoded
|
|
78
|
+
* images and falling back to the clipboard file list when RTF yields none.
|
|
79
|
+
*
|
|
80
|
+
* @param {ClipboardFileContent | null} clipboardFileContent Clipboard payload from a paste event.
|
|
81
|
+
* @param {HTMLElement[]} images `<img>` elements the files will be paired with.
|
|
82
|
+
* @returns {File[]} Image files found on the clipboard.
|
|
83
|
+
*/
|
|
84
|
+
extractImageFiles(clipboardFileContent, images) {
|
|
85
|
+
let result = [];
|
|
86
|
+
if (clipboardFileContent) {
|
|
87
|
+
if (clipboardFileContent.rtf) {
|
|
88
|
+
result = this.safeExtractWordImages(clipboardFileContent.rtf, images);
|
|
89
|
+
}
|
|
90
|
+
if (result.length === 0 && clipboardFileContent.files) {
|
|
91
|
+
result = clipboardFileContent.files.filter((file) => file.type.startsWith('image/'));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Safely extracts image files from Word RTF clipboard data.
|
|
98
|
+
*
|
|
99
|
+
* @param {string} rtf Clipboard payload from a paste event.
|
|
100
|
+
* @param {HTMLElement[]} images Array of `<img>` elements that may be updated with staged previews.
|
|
101
|
+
* @returns {File[]} Image files found in the clipboard data.
|
|
102
|
+
*/
|
|
103
|
+
safeExtractWordImages(rtf, images) {
|
|
104
|
+
// Word defines a list's picture bullet once in the list table
|
|
105
|
+
// (`{\*\listpicture ...}`) with no rendered counterpart. Drop that
|
|
106
|
+
// definition so its blip is not counted as a content image; the per-item
|
|
107
|
+
// `{\listtext ...}` bullet blips are kept because each still pairs with a
|
|
108
|
+
// preserved bullet placeholder `<img>`.
|
|
109
|
+
const contentRtf = this.stripListPictureDefinitions(rtf);
|
|
110
|
+
const fileObjects = [];
|
|
111
|
+
const imageRegex = /\\pngblip|\\jpegblip/g;
|
|
112
|
+
const matches = [...contentRtf.matchAll(imageRegex)];
|
|
113
|
+
matches.forEach((match, index) => {
|
|
114
|
+
if (index >= images.length || match.index === undefined) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const mimeType = match[0].includes('png') ? 'image/png' : 'image/jpeg';
|
|
118
|
+
const startIndex = match.index + match[0].length;
|
|
119
|
+
const bytes = this.extractImageBytes(contentRtf, startIndex);
|
|
120
|
+
if (bytes.length === 0) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const extension = mimeType.split('/')[1];
|
|
124
|
+
const file = new File(
|
|
125
|
+
// eslint-disable-next-line spellcheck/spell-checker
|
|
126
|
+
[new Uint8Array(bytes)], `word_img_${Date.now()}_${index}.${extension}`, { type: mimeType });
|
|
127
|
+
fileObjects.push(file);
|
|
128
|
+
});
|
|
129
|
+
return fileObjects;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Removes Word list-table picture-bullet definitions from the RTF so they are
|
|
133
|
+
* not counted as content images.
|
|
134
|
+
*
|
|
135
|
+
* Word declares a list's picture bullet once as a `{\*\listpicture ...}`
|
|
136
|
+
* destination inside the list table. It renders nothing on its own, so its
|
|
137
|
+
* blip has no matching content `<img>`; leaving it in shifts the ordinal
|
|
138
|
+
* pairing and makes the first real image resolve to the bullet. The per-item
|
|
139
|
+
* `{\listtext ...}` bullets are intentionally left untouched because each is
|
|
140
|
+
* kept as a placeholder `<img>` that consumes its blip downstream.
|
|
141
|
+
*
|
|
142
|
+
* @param {string} rtf Full RTF clipboard payload.
|
|
143
|
+
* @returns {string} RTF with list-table picture-bullet definitions removed.
|
|
144
|
+
*/
|
|
145
|
+
stripListPictureDefinitions(rtf) {
|
|
146
|
+
// eslint-disable-next-line spellcheck/spell-checker
|
|
147
|
+
return this.removeBalancedGroups(rtf, '{\\*\\listpicture');
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Removes every balanced-brace RTF group that starts with the given marker.
|
|
151
|
+
*
|
|
152
|
+
* @param {string} rtf RTF payload to scan.
|
|
153
|
+
* @param {string} marker Opening delimiter of the group to remove (including its `{`).
|
|
154
|
+
* @returns {string} RTF with the matching groups removed.
|
|
155
|
+
*/
|
|
156
|
+
removeBalancedGroups(rtf, marker) {
|
|
157
|
+
let index = rtf.indexOf(marker);
|
|
158
|
+
while (index !== -1) {
|
|
159
|
+
const end = this.findGroupEnd(rtf, index);
|
|
160
|
+
rtf = rtf.slice(0, index) + rtf.slice(end);
|
|
161
|
+
index = rtf.indexOf(marker, index);
|
|
162
|
+
}
|
|
163
|
+
return rtf;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Finds the index just past the brace that closes the group opened at `start`.
|
|
167
|
+
*
|
|
168
|
+
* A backslash escapes the next character (such as `\{` or `\}`) so escaped
|
|
169
|
+
* braces are not counted. When the group is unbalanced the RTF length is
|
|
170
|
+
* returned so the trailing remainder is dropped.
|
|
171
|
+
*
|
|
172
|
+
* @param {string} rtf RTF payload to scan.
|
|
173
|
+
* @param {number} start Index of the group's opening `{`.
|
|
174
|
+
* @returns {number} Index immediately after the matching closing `}`.
|
|
175
|
+
*/
|
|
176
|
+
findGroupEnd(rtf, start) {
|
|
177
|
+
const length = rtf.length;
|
|
178
|
+
let depth = 0;
|
|
179
|
+
let position = start;
|
|
180
|
+
while (position < length) {
|
|
181
|
+
const char = rtf[position];
|
|
182
|
+
if (char === '\\') {
|
|
183
|
+
position += 2;
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (char === '{') {
|
|
187
|
+
depth++;
|
|
188
|
+
}
|
|
189
|
+
else if (char === '}') {
|
|
190
|
+
depth--;
|
|
191
|
+
if (depth === 0) {
|
|
192
|
+
return position + 1;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
position++;
|
|
196
|
+
}
|
|
197
|
+
return length;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Extracts the raw image bytes that follow a Word RTF blip marker.
|
|
201
|
+
*
|
|
202
|
+
* Starting just after the blip control word, RTF control words (such as
|
|
203
|
+
* `\bliptag`) and nested groups (such as `{\*\blipuid ...}`) are skipped so
|
|
204
|
+
* their hex is not mistaken for image data. Hex digits are decoded into bytes
|
|
205
|
+
* until the enclosing `{\pict}` group is closed.
|
|
206
|
+
*
|
|
207
|
+
* @param {string} rtf Full RTF clipboard payload.
|
|
208
|
+
* @param {number} startIndex Index immediately after the blip marker.
|
|
209
|
+
* @returns {number[]} Decoded image byte values.
|
|
210
|
+
*/
|
|
211
|
+
extractImageBytes(rtf, startIndex) {
|
|
212
|
+
const length = rtf.length;
|
|
213
|
+
const bytes = [];
|
|
214
|
+
let depth = 0;
|
|
215
|
+
let highNibble = -1;
|
|
216
|
+
let position = startIndex;
|
|
217
|
+
while (position < length) {
|
|
218
|
+
const char = rtf[position];
|
|
219
|
+
if (char === '{') {
|
|
220
|
+
depth++;
|
|
221
|
+
position++;
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
if (char === '}') {
|
|
225
|
+
if (depth === 0) {
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
depth--;
|
|
229
|
+
position++;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
if (depth > 0) {
|
|
233
|
+
position++;
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
if (char === '\\') {
|
|
237
|
+
position++;
|
|
238
|
+
while (position < length && /[a-zA-Z]/.test(rtf[position])) {
|
|
239
|
+
position++;
|
|
240
|
+
}
|
|
241
|
+
if (position < length && rtf[position] === '-') {
|
|
242
|
+
position++;
|
|
243
|
+
}
|
|
244
|
+
while (position < length && /[0-9]/.test(rtf[position])) {
|
|
245
|
+
position++;
|
|
246
|
+
}
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
const nibble = this.hexNibble(char);
|
|
250
|
+
if (nibble >= 0) {
|
|
251
|
+
if (highNibble < 0) {
|
|
252
|
+
highNibble = nibble;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
bytes.push((highNibble << 4) | nibble);
|
|
256
|
+
highNibble = -1;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
position++;
|
|
260
|
+
}
|
|
261
|
+
return bytes;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Converts a single hex character to its numeric value.
|
|
265
|
+
*
|
|
266
|
+
* @param {string} char Candidate hex character.
|
|
267
|
+
* @returns {number} Value in `[0, 15]`, or `-1` when not a hex digit.
|
|
268
|
+
*/
|
|
269
|
+
hexNibble(char) {
|
|
270
|
+
if (char >= '0' && char <= '9') {
|
|
271
|
+
return char.charCodeAt(0) - 48;
|
|
272
|
+
}
|
|
273
|
+
if (char >= 'a' && char <= 'f') {
|
|
274
|
+
return char.charCodeAt(0) - 87;
|
|
275
|
+
}
|
|
276
|
+
if (char >= 'A' && char <= 'F') {
|
|
277
|
+
return char.charCodeAt(0) - 55;
|
|
278
|
+
}
|
|
279
|
+
return -1;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Returns whether an `<img>` element is nested inside list content.
|
|
283
|
+
*
|
|
284
|
+
* The Word paste sanitizer strips non-allowlisted attributes but keeps the
|
|
285
|
+
* `ul`/`ol`/`li` structure, so list membership is detected by DOM ancestry
|
|
286
|
+
* here rather than by a marker attribute set upstream.
|
|
287
|
+
*
|
|
288
|
+
* @param {HTMLImageElement} imageElement Image element to test.
|
|
289
|
+
* @returns {boolean} Whether the image is part of list content.
|
|
290
|
+
*/
|
|
291
|
+
isListImage(imageElement) {
|
|
292
|
+
return Boolean(imageElement.closest('li,ul,ol'));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
PasteImageParser.PREVIEW_IMG_KEY = 'data-rte-id';
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { ImageReplaceSrcAction } from '../actions/image-replace-src-action';
|
|
2
|
+
/**
|
|
3
|
+
* Owns the lifecycle of pasted images awaiting upload: it tracks their local
|
|
4
|
+
* object-URL previews, notifies the consumer once they are inserted, applies the
|
|
5
|
+
* uploaded URL back onto the live preview, and revokes object URLs on teardown.
|
|
6
|
+
*
|
|
7
|
+
* Keeping this state here rather than on the paste extension keeps the extension
|
|
8
|
+
* focused on clipboard capture and the chooser UI.
|
|
9
|
+
*/
|
|
10
|
+
export class PendingImageRegistry {
|
|
11
|
+
constructor() {
|
|
12
|
+
/** Ids of pending images still holding an object URL owned by this registry. */
|
|
13
|
+
this.ownedImageIds = new Set();
|
|
14
|
+
/** Ids queued for the next {@link notifyInserted} call. */
|
|
15
|
+
this.pendingNotifyImageIds = [];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Registers freshly created previews so they can be notified and later
|
|
19
|
+
* resolved to their uploaded URLs.
|
|
20
|
+
*
|
|
21
|
+
* @param {PasteImagePreview[]} previews Previews produced for the current paste.
|
|
22
|
+
*/
|
|
23
|
+
register(previews) {
|
|
24
|
+
this.pendingNotifyImageIds = [];
|
|
25
|
+
previews.forEach((preview) => {
|
|
26
|
+
this.pendingNotifyImageIds.push(preview.id);
|
|
27
|
+
this.ownedImageIds.add(preview.id);
|
|
28
|
+
PendingImageRegistry.pendingImages.set(preview.id, preview);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @returns {boolean} Whether previews are queued for notification.
|
|
33
|
+
*/
|
|
34
|
+
hasPendingNotifications() {
|
|
35
|
+
return this.pendingNotifyImageIds.length > 0;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Notifies the consumer about newly inserted pasted images so they can upload
|
|
39
|
+
* them and fill in the real URLs via the supplied `replaceUrl` callback.
|
|
40
|
+
*
|
|
41
|
+
* @param {ImageInsertedCallback | undefined} callback Consumer callback to invoke.
|
|
42
|
+
* @param {GetEditableElement} getEditableElement Resolves the live editable element.
|
|
43
|
+
* @param {ResolveImageNode} resolveImageNode Resolves the DTO node for a preview element.
|
|
44
|
+
*/
|
|
45
|
+
notifyInserted(callback, getEditableElement, resolveImageNode) {
|
|
46
|
+
const images = this.pendingNotifyImageIds
|
|
47
|
+
.map((id) => PendingImageRegistry.pendingImages.get(id))
|
|
48
|
+
.filter((preview) => !!preview);
|
|
49
|
+
this.pendingNotifyImageIds = [];
|
|
50
|
+
if (images.length && typeof callback === 'function') {
|
|
51
|
+
// Mark as handed to the consumer so teardown keeps them for a later replaceUrl.
|
|
52
|
+
images.forEach((image) => (image.notified = true));
|
|
53
|
+
const pasteImages = images.map((image) => ({
|
|
54
|
+
id: image.id,
|
|
55
|
+
file: image.file,
|
|
56
|
+
}));
|
|
57
|
+
callback(pasteImages, (imageId, url) => this.replaceUrl(imageId, url, getEditableElement, resolveImageNode));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Revokes and forgets only previews that were never handed to a consumer for
|
|
62
|
+
* upload. Previews already notified via {@link notifyInserted} are left intact
|
|
63
|
+
* so an async {@link replaceUrl} can still resolve them after the extension is
|
|
64
|
+
* recreated; that callback owns their teardown.
|
|
65
|
+
*/
|
|
66
|
+
discardUnsentPreviews() {
|
|
67
|
+
this.ownedImageIds.forEach((imageId) => {
|
|
68
|
+
const pending = PendingImageRegistry.pendingImages.get(imageId);
|
|
69
|
+
if (pending && pending.notified) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (pending && pending.objectUrl.startsWith('blob:')) {
|
|
73
|
+
URL.revokeObjectURL(pending.objectUrl);
|
|
74
|
+
}
|
|
75
|
+
PendingImageRegistry.pendingImages.delete(imageId);
|
|
76
|
+
this.ownedImageIds.delete(imageId);
|
|
77
|
+
});
|
|
78
|
+
this.pendingNotifyImageIds = [];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Applies the uploaded URL for a pending pasted image, replacing its local
|
|
82
|
+
* preview `src` and revoking the object URL.
|
|
83
|
+
*
|
|
84
|
+
* @param {string} imageId Pending image id supplied to the consumer callback.
|
|
85
|
+
* @param {string} url Uploaded image URL to apply.
|
|
86
|
+
* @param {GetEditableElement} getEditableElement Resolves the live editable element.
|
|
87
|
+
* @param {ResolveImageNode} resolveImageNode Resolves the DTO node for a preview element.
|
|
88
|
+
*/
|
|
89
|
+
replaceUrl(imageId, url, getEditableElement, resolveImageNode) {
|
|
90
|
+
var _a;
|
|
91
|
+
const editableEl = getEditableElement();
|
|
92
|
+
if (editableEl) {
|
|
93
|
+
const imageElement = (_a = editableEl.querySelector(`img[data-rte-id="${imageId}"]`)) !== null && _a !== void 0 ? _a : null;
|
|
94
|
+
if (imageElement) {
|
|
95
|
+
const imageNode = resolveImageNode(imageElement);
|
|
96
|
+
imageNode && imageNode.apply(new ImageReplaceSrcAction(imageElement, url));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const pending = PendingImageRegistry.pendingImages.get(imageId);
|
|
100
|
+
if (pending) {
|
|
101
|
+
if (pending.objectUrl.startsWith('blob:')) {
|
|
102
|
+
URL.revokeObjectURL(pending.objectUrl);
|
|
103
|
+
}
|
|
104
|
+
PendingImageRegistry.pendingImages.delete(imageId);
|
|
105
|
+
this.ownedImageIds.delete(imageId);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Pasted images awaiting upload, keyed by their {@link VegaRTEPasteImage.id}.
|
|
111
|
+
*
|
|
112
|
+
* Shared statically across instances so previews survive a paste-extension
|
|
113
|
+
* re-instantiation: the consumer may resolve `replaceUrl` after the editor
|
|
114
|
+
* has re-mounted and created a new extension/registry instance.
|
|
115
|
+
*/
|
|
116
|
+
PendingImageRegistry.pendingImages = new Map();
|
package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { VegaInternalIconManager } from '../../../../helpers/icon/internal-icon-manager';
|
|
2
2
|
import { VegaInternalTranslation } from '../../../../helpers/translation/internal-translation-controller';
|
|
3
|
+
import { RTEPasteMode } from './strategies/paste-processing-strategy.abstract';
|
|
3
4
|
import paste from './assets/paste';
|
|
4
5
|
/**
|
|
5
6
|
* Renders and manages the paste format chooser UI.
|
|
6
7
|
*/
|
|
7
8
|
export class RTEPasteChooserUI {
|
|
8
|
-
constructor(hostRoot, callbacks) {
|
|
9
|
+
constructor(hostRoot, callbacks, options = {}) {
|
|
9
10
|
this.hostRoot = hostRoot;
|
|
10
11
|
this.callbacks = callbacks;
|
|
12
|
+
this.options = options;
|
|
11
13
|
this.chooserEl = null;
|
|
12
14
|
this.dropdownEl = null;
|
|
13
15
|
this.triggerButtonEl = null;
|
|
@@ -108,11 +110,17 @@ export class RTEPasteChooserUI {
|
|
|
108
110
|
dropdownEl.append(tooltipEl);
|
|
109
111
|
const itemsContainer = doc.createElement('div');
|
|
110
112
|
itemsContainer.setAttribute('slot', 'items');
|
|
111
|
-
|
|
113
|
+
const dropdownItems = [
|
|
114
|
+
this.createDropdownItem(doc, RTEPasteMode.RICH, VegaInternalTranslation.t('Use rich text'), RTEPasteChooserUI.CHOOSER_RICH_ATTR),
|
|
115
|
+
];
|
|
116
|
+
if (this.options.showWordOption) {
|
|
117
|
+
dropdownItems.push(this.createDropdownItem(doc, RTEPasteMode.WORD, VegaInternalTranslation.t('Use Word'), RTEPasteChooserUI.CHOOSER_WORD_ATTR));
|
|
118
|
+
}
|
|
119
|
+
itemsContainer.append(...dropdownItems);
|
|
112
120
|
dropdownEl.append(itemsContainer);
|
|
113
121
|
dropdownEl.addEventListener('vegaDropdownClick', (event) => {
|
|
114
122
|
const mode = event.detail;
|
|
115
|
-
if (mode ===
|
|
123
|
+
if (mode === RTEPasteMode.RICH || mode === RTEPasteMode.WORD) {
|
|
116
124
|
this.callbacks.onModeSelect(mode);
|
|
117
125
|
}
|
|
118
126
|
});
|
|
@@ -122,7 +130,7 @@ export class RTEPasteChooserUI {
|
|
|
122
130
|
* Creates a single dropdown item element for a paste mode.
|
|
123
131
|
*
|
|
124
132
|
* @param {Document} doc Document used to create the element.
|
|
125
|
-
* @param {
|
|
133
|
+
* @param {RTEPasteMode} key Paste mode key for the item.
|
|
126
134
|
* @param {string} label Display label for the item.
|
|
127
135
|
* @param {string} dataAttrName Data attribute marker for the item.
|
|
128
136
|
* @returns {HTMLVegaDropdownItemElement} Configured dropdown item element.
|
|
@@ -142,4 +150,5 @@ export class RTEPasteChooserUI {
|
|
|
142
150
|
})();
|
|
143
151
|
RTEPasteChooserUI.CHOOSER_ATTR = 'data-rte-paste-chooser';
|
|
144
152
|
RTEPasteChooserUI.CHOOSER_RICH_ATTR = 'data-rte-paste-type-rich';
|
|
153
|
+
RTEPasteChooserUI.CHOOSER_WORD_ATTR = 'data-rte-paste-type-word';
|
|
145
154
|
RTEPasteChooserUI.CHOOSER_TRIGGER_ATTR = 'data-rte-paste-trigger';
|
package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-extension.js
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
1
|
import { VegaRTEExtension } from '../extension.abstract';
|
|
2
2
|
import { RTEPasteChooserUI } from './paste-chooser-ui';
|
|
3
|
-
import { RTE_PASTE_MODE_DATA_TYPE } from '
|
|
3
|
+
import { RTE_PASTE_MODE_DATA_TYPE } from '../../constants/constant';
|
|
4
|
+
import { PasteStrategySelector } from './strategies/paste-strategy-selector';
|
|
5
|
+
import { RTEPasteMode, } from './strategies/paste-processing-strategy.abstract';
|
|
6
|
+
import { PasteImageParser } from './parse-local-images-helper/paste-image-parser';
|
|
7
|
+
import { RTEImageNode } from '../../dto/nodes/image-node';
|
|
8
|
+
import { REPLACE_IMAGE_SRC } from './actions/image-replace-src-action';
|
|
9
|
+
import { ImageReplaceSrcStrategy } from './action-handler-strategies/image-replace-src-strategy';
|
|
10
|
+
import { PendingImageRegistry } from './parse-local-images-helper/pending-image-registry';
|
|
4
11
|
/**
|
|
5
12
|
* Vega Rich Text Editor paste extension.
|
|
6
13
|
* Intercepts keyboard paste and allows users to choose paste mode.
|
|
7
14
|
*/
|
|
8
15
|
export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
super();
|
|
11
18
|
this.editableEl = null;
|
|
12
19
|
this.contentHostEl = null;
|
|
13
20
|
this.chooserUI = null;
|
|
14
21
|
this.pendingPastePayload = null;
|
|
15
22
|
this.listenerDocument = null;
|
|
16
23
|
this.listenerWindow = null;
|
|
24
|
+
this.options = {};
|
|
25
|
+
this.strategySelector = new PasteStrategySelector();
|
|
26
|
+
this.clipboardFileContent = null;
|
|
27
|
+
this.imageParser = new PasteImageParser();
|
|
28
|
+
/** Owns pending pasted-image previews awaiting upload and their URL replacement. */
|
|
29
|
+
this.pendingImageRegistry = new PendingImageRegistry();
|
|
17
30
|
/**
|
|
18
31
|
* Handles a native paste event by capturing the clipboard payload and
|
|
19
32
|
* rendering the paste-mode chooser.
|
|
@@ -29,6 +42,9 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
29
42
|
// HTML is sanitized via DOMParser and ElementToDtoStrategyProcessor pipeline
|
|
30
43
|
const html = clipboardData.getData('text/html') || '';
|
|
31
44
|
const text = clipboardData.getData('text/plain') || '';
|
|
45
|
+
// RTF must be read synchronously here: the paste event's DataTransfer is only
|
|
46
|
+
// readable during event dispatch, so reading it later (after the chooser) returns ''.
|
|
47
|
+
const rtf = clipboardData.getData('text/rtf') || '';
|
|
32
48
|
if (!html && !text) {
|
|
33
49
|
// Empty clipboard paste should not mutate editor content.
|
|
34
50
|
event.preventDefault();
|
|
@@ -40,6 +56,10 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
40
56
|
const range = this.cloneCurrentSelectionRange();
|
|
41
57
|
const selectedNodes = ((_b = (_a = this.extensionContext) === null || _a === void 0 ? void 0 : _a.getSelectedNodes) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
|
|
42
58
|
this.pendingPastePayload = { html, text, range, selectedNodes: [...selectedNodes] };
|
|
59
|
+
this.clipboardFileContent = {
|
|
60
|
+
files: clipboardData.files ? Array.from(clipboardData.files) : [],
|
|
61
|
+
rtf,
|
|
62
|
+
};
|
|
43
63
|
this.renderPasteChooser(event);
|
|
44
64
|
};
|
|
45
65
|
/**
|
|
@@ -73,6 +93,7 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
73
93
|
this.handleOutsideScroll = () => {
|
|
74
94
|
this.clearPasteChooser();
|
|
75
95
|
};
|
|
96
|
+
this.options = options;
|
|
76
97
|
}
|
|
77
98
|
/** @inheritDoc */
|
|
78
99
|
initialExtensionAfterLoad(context) {
|
|
@@ -84,6 +105,7 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
84
105
|
destroyExtension() {
|
|
85
106
|
this.detachPasteListener();
|
|
86
107
|
this.clearPasteChooser();
|
|
108
|
+
this.pendingImageRegistry.discardUnsentPreviews();
|
|
87
109
|
}
|
|
88
110
|
/**
|
|
89
111
|
* Attaches the paste listener to the editable element.
|
|
@@ -146,7 +168,7 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
146
168
|
* @param {ClipboardEvent} pasteEvent Originating paste event used for positioning.
|
|
147
169
|
*/
|
|
148
170
|
renderPasteChooser(pasteEvent) {
|
|
149
|
-
var _a, _b;
|
|
171
|
+
var _a, _b, _c;
|
|
150
172
|
const hostRoot = (_b = (_a = this.hostEl) === null || _a === void 0 ? void 0 : _a.shadowRoot) !== null && _b !== void 0 ? _b : null;
|
|
151
173
|
if (!hostRoot) {
|
|
152
174
|
return;
|
|
@@ -158,6 +180,8 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
158
180
|
onModeSelect: (mode) => {
|
|
159
181
|
this.applyPasteMode(mode);
|
|
160
182
|
},
|
|
183
|
+
}, {
|
|
184
|
+
showWordOption: ((_c = this.options) === null || _c === void 0 ? void 0 : _c.enableWordPaste) === true,
|
|
161
185
|
});
|
|
162
186
|
this.chooserUI.open(position);
|
|
163
187
|
this.listenerDocument = this.hostEl.ownerDocument;
|
|
@@ -287,7 +311,10 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
287
311
|
/**
|
|
288
312
|
* Applies the chosen paste mode by dispatching a synthetic paste input event.
|
|
289
313
|
*
|
|
290
|
-
*
|
|
314
|
+
* `rich` keeps auto-detection enabled; any other explicit mode forces the
|
|
315
|
+
* corresponding registered strategy.
|
|
316
|
+
*
|
|
317
|
+
* @param {RTEPasteMode} mode Selected paste mode.
|
|
291
318
|
*/
|
|
292
319
|
applyPasteMode(mode) {
|
|
293
320
|
var _a;
|
|
@@ -303,9 +330,42 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
303
330
|
editableEl.focus();
|
|
304
331
|
this.restoreSelectionRange(this.pendingPastePayload.range);
|
|
305
332
|
this.restoreSelectionControllerState(this.pendingPastePayload);
|
|
306
|
-
const
|
|
333
|
+
const strategy = mode === RTEPasteMode.RICH
|
|
334
|
+
? this.strategySelector.selectStrategy(this.pendingPastePayload.html)
|
|
335
|
+
: this.strategySelector.selectStrategyByType(mode);
|
|
336
|
+
let processedHtml = strategy.process(this.pendingPastePayload.html);
|
|
337
|
+
// If the strategy supports image processing and there is clipboard file content, parse local images.
|
|
338
|
+
if (strategy.supportsImageProcessing && this.clipboardFileContent) {
|
|
339
|
+
processedHtml = this.parseLocalImages(processedHtml, this.clipboardFileContent);
|
|
340
|
+
}
|
|
341
|
+
this.clipboardFileContent = null;
|
|
342
|
+
const dataTransfer = this.createDataTransfer(processedHtml, this.pendingPastePayload.text, strategy.type);
|
|
307
343
|
this.dispatchBeforeInputPaste(editableEl, dataTransfer);
|
|
308
344
|
this.clearPasteChooser();
|
|
345
|
+
this.emitLocalImageInsertedEvent();
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Parses local images from the HTML and emits events for further processing.
|
|
349
|
+
*
|
|
350
|
+
* @param {string} html HTML content to parse.
|
|
351
|
+
* @param {ClipboardFileContent} clipboardFileContent Clipboard file content for image extraction.
|
|
352
|
+
* @returns {string} Processed HTML with local image references replaced.
|
|
353
|
+
*/
|
|
354
|
+
parseLocalImages(html, clipboardFileContent) {
|
|
355
|
+
const { html: result, previews } = this.imageParser.parseLocalImages(html, clipboardFileContent);
|
|
356
|
+
if (previews.length > 0) {
|
|
357
|
+
this.pendingImageRegistry.register(previews);
|
|
358
|
+
}
|
|
359
|
+
return result;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Emits the `imageInsertedCallback` for any pending previews, allowing the
|
|
363
|
+
* consumer to upload them and resolve their URLs.
|
|
364
|
+
*/
|
|
365
|
+
emitLocalImageInsertedEvent() {
|
|
366
|
+
if (this.pendingImageRegistry.hasPendingNotifications()) {
|
|
367
|
+
this.pendingImageRegistry.notifyInserted(this.options.imageInsertedCallback, () => { var _a; return (_a = this.editableEl) !== null && _a !== void 0 ? _a : this.getEditableElement(); }, (imageElement) => this.getDTOEntityByDom(imageElement));
|
|
368
|
+
}
|
|
309
369
|
}
|
|
310
370
|
/**
|
|
311
371
|
* Restores SelectionController state from the captured selection so synthetic
|
|
@@ -379,7 +439,7 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
379
439
|
*
|
|
380
440
|
* @param {string} html HTML clipboard content.
|
|
381
441
|
* @param {string} text Plain text clipboard content.
|
|
382
|
-
* @param {
|
|
442
|
+
* @param {RTEPasteMode} [mode] Selected paste mode marker.
|
|
383
443
|
* @returns {DataTransfer} Populated data transfer payload.
|
|
384
444
|
*/
|
|
385
445
|
createDataTransfer(html, text, mode) {
|
|
@@ -440,3 +500,6 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
|
|
|
440
500
|
}
|
|
441
501
|
}
|
|
442
502
|
}
|
|
503
|
+
(() => {
|
|
504
|
+
VegaRTEExtension.registerActionHandleStrategy(RTEImageNode.name, REPLACE_IMAGE_SRC, new ImageReplaceSrcStrategy());
|
|
505
|
+
})();
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AbstractPasteProcessingStrategy, PasteProcessingStrategyPriority, } from './paste-processing-strategy.abstract';
|
|
2
|
+
/**
|
|
3
|
+
* Default paste processing strategy that acts as a fallback when no other
|
|
4
|
+
* strategy matches. This strategy always accepts the content and passes it
|
|
5
|
+
* through unchanged — the normal RTE paste pipeline (DOMParser +
|
|
6
|
+
* ElementToDtoStrategyProcessor) handles the rest.
|
|
7
|
+
*/
|
|
8
|
+
export class DefaultPasteProcessingStrategy extends AbstractPasteProcessingStrategy {
|
|
9
|
+
/**
|
|
10
|
+
* Always matches as the terminal fallback strategy.
|
|
11
|
+
*
|
|
12
|
+
* @param {string} html Raw clipboard HTML.
|
|
13
|
+
* @returns {boolean} Always `true`.
|
|
14
|
+
*/
|
|
15
|
+
canHandle(html) {
|
|
16
|
+
// Default strategy is the fallback — always returns true.
|
|
17
|
+
return html !== undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns the original HTML unchanged.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} html Raw clipboard HTML.
|
|
23
|
+
* @returns {string} Unchanged HTML.
|
|
24
|
+
*/
|
|
25
|
+
process(html) {
|
|
26
|
+
// Current default behavior: pass through unchanged
|
|
27
|
+
// (DOMParser + ElementToDtoStrategyProcessor handles the rest)
|
|
28
|
+
return html;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Fallback priority so other strategies can win when matched.
|
|
32
|
+
*
|
|
33
|
+
* @returns {number} Strategy priority.
|
|
34
|
+
*/
|
|
35
|
+
get priority() {
|
|
36
|
+
return PasteProcessingStrategyPriority.DEFAULT_FALLBACK;
|
|
37
|
+
}
|
|
38
|
+
}
|