@heartlandone/vega 2.94.0 → 2.96.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-d05c3410.js → app-globals-38afea36.js} +7 -7
- package/dist/cjs/{child-nodes-event-prevent-slimmer-e67ee84c.js → child-nodes-event-prevent-slimmer-e0ac8467.js} +1 -1
- package/dist/cjs/{code-block-493c7ce7.js → code-block-4126dc3b.js} +1501 -55
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-ab21fcbf.js → component-value-history-controller-slimmer.abstract-38ba956e.js} +2 -2
- package/dist/cjs/{content-state-fc34a814.js → content-state-50e8a03c.js} +142 -580
- package/dist/cjs/{element-appender-slimmer-1d6323c2.js → element-appender-slimmer-7773fdab.js} +115 -0
- package/dist/cjs/{event-emit-slimmer-d234a619.js → event-emit-slimmer-34aa195e.js} +1 -1
- package/dist/cjs/{image-annotation-action-7c4cd316.js → image-annotation-action-89363de8.js} +2 -2
- package/dist/cjs/{image-extension-30a7c10f.js → image-extension-c881c454.js} +2 -2
- package/dist/cjs/index.cjs.js +11 -11
- package/dist/cjs/{internal-vega-event-manager-13c4012b.js → internal-vega-event-manager-7003c84a.js} +10 -2
- package/dist/cjs/{link-extension-92a63cb7.js → link-extension-b7f99a52.js} +2 -2
- package/dist/cjs/loader.cjs.js +9 -9
- package/dist/cjs/{public-rules-9e1ea1d9.js → public-rules-72894208.js} +3 -3
- package/dist/cjs/{range-30219330.js → range-95d41dea.js} +1 -1
- package/dist/cjs/{rich-text-editor-required-rule-23bf7485.js → rich-text-editor-required-rule-4d6d2493.js} +1 -1
- package/dist/cjs/shared-backdrop-manager-71e54fdb.js +199 -0
- package/dist/cjs/{split-cell-operation-43752212.js → split-cell-operation-70be116d.js} +2 -2
- package/dist/cjs/{token-extension-ea891d54.js → token-extension-eb828948.js} +36 -12
- package/dist/cjs/vega-accordion.cjs.entry.js +2 -2
- package/dist/cjs/vega-app-footer.cjs.entry.js +2 -2
- package/dist/cjs/vega-app-header-button.cjs.entry.js +3 -3
- package/dist/cjs/vega-banner.cjs.entry.js +2 -2
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +3 -3
- package/dist/cjs/vega-button-circle.cjs.entry.js +3 -3
- package/dist/cjs/vega-button-group_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-button-link.cjs.entry.js +3 -3
- package/dist/cjs/vega-button.cjs.entry.js +3 -3
- package/dist/cjs/vega-calendar_5.cjs.entry.js +3 -3
- package/dist/cjs/vega-carousel.cjs.entry.js +2 -2
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-chip.cjs.entry.js +3 -3
- package/dist/cjs/vega-code-block.cjs.entry.js +6 -6
- package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
- package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +3 -3
- package/dist/cjs/vega-color-swatch.cjs.entry.js +2 -2
- package/dist/cjs/vega-combo-box.cjs.entry.js +22 -4
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-dialog_2.cjs.entry.js +160 -70
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +41 -13
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-field-label.cjs.entry.js +2 -2
- package/dist/cjs/vega-file-uploader.cjs.entry.js +2 -2
- package/dist/cjs/vega-form.cjs.entry.js +3 -3
- package/dist/cjs/vega-image-uploader.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-numeric.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-passcode.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-range.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-select.cjs.entry.js +54 -5
- package/dist/cjs/vega-input.cjs.entry.js +2 -2
- package/dist/cjs/vega-item-toggle.cjs.entry.js +2 -2
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +32 -193
- package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +2 -2
- package/dist/cjs/vega-pagination.cjs.entry.js +3 -3
- package/dist/cjs/vega-popover_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +13 -3
- package/dist/cjs/vega-radio_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +58 -9
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +611 -93
- package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +2 -2
- package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +2 -2
- package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +5 -5
- package/dist/cjs/vega-section-title.cjs.entry.js +896 -14
- package/dist/cjs/vega-segment-control.cjs.entry.js +2 -2
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +2 -2
- package/dist/cjs/vega-signature-capture.cjs.entry.js +2 -2
- package/dist/cjs/vega-stepper.cjs.entry.js +3 -3
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-table_11.cjs.entry.js +3 -3
- package/dist/cjs/vega-textarea.cjs.entry.js +3 -3
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +1 -1
- package/dist/cjs/vega.cjs.js +9 -9
- package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +5 -1
- package/dist/collection/components/vega-combo-box/vega-combo-box.js +52 -1
- package/dist/collection/components/vega-dialog/vega-dialog.js +1 -1
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-render-mode-controller.js +7 -6
- package/dist/collection/components/vega-dropdown/vega-dropdown.js +36 -8
- package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.js +11 -1
- package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-items-slot-controler.js +23 -2
- package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +4 -0
- package/dist/collection/components/vega-input-select/vega-input-select.js +53 -2
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-backdrop-manager.js +141 -0
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.js +10 -17
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-z-index-controller.js +2 -2
- package/dist/collection/components/vega-modal/slimmers/renderers/vega-modal-renderer.js +3 -2
- package/dist/collection/components/vega-modal/vega-modal.js +77 -8
- package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-steps-controller.js +7 -0
- package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +6 -0
- package/dist/collection/components/vega-rich-text-content/vega-rich-text-content.css +4 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-node-content-strategy.js +29 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-or-decorator-node-strategy.js +10 -1
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-list-strategy.js +8 -3
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-annotation-strategy.abstract.js +60 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.js +36 -4
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-items-strategy.abstract.js +27 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-nest-items-strategy.js +74 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.js +81 -1
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-selection.js +30 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.js +160 -9
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.js +376 -10
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-unnest-items-strategy.js +104 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/nest-list-items-action.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/unnest-list-items-action.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/list-annotation.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-block.js +10 -1
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +11 -3
- package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +7 -1
- package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-block-filter-styles-strategy.js +8 -4
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-block-renderer.js +34 -1
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-item-block-renderer.js +20 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/table/annotation-handler/table-annotation-handler-base.js +25 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/li-to-rte-list-item-block-strategy.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/abstract-delete-content-handler.js +29 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +30 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/abstract-list-keyboard-handler.js +204 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-shift-tab-outdent-handler.js +42 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-tab-indent-handler.js +34 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/list-keyboard-slimmer.js +180 -0
- package/dist/collection/components/vega-section-title/slimmers/a11y-tree/build-section-title-a11y-tree.js +54 -0
- package/dist/collection/components/vega-section-title/slimmers/renderers/vega-section-title-renderer.js +4 -4
- package/dist/collection/components/vega-section-title/vega-section-title.js +18 -2
- package/dist/collection/helpers/a11y-tree/a11y-node-dto.js +210 -0
- package/dist/collection/helpers/a11y-tree/a11y-tree-applier.js +189 -0
- package/dist/collection/helpers/a11y-tree/a11y-tree.types.js +48 -0
- package/dist/collection/helpers/a11y-tree/strategies/baseline-strategy.js +78 -0
- package/dist/collection/helpers/a11y-tree/strategies/firefox-nvda-strategy.js +56 -0
- package/dist/collection/helpers/a11y-tree/strategies/webkit-voiceover-strategy.js +140 -0
- package/dist/collection/helpers/a11y-tree/strategy-resolver.js +172 -0
- package/dist/collection/helpers/backdrop/shared-backdrop-manager.js +32 -1
- package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +11 -3
- package/dist/collection/helpers/slimmers/a11y-tree-slimmer.js +54 -0
- package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +29 -0
- package/dist/collection/helpers/slimmers/element-appender/visibility-modifiers/clip-on-scroll-modifier.js +70 -0
- package/dist/collection/helpers/slimmers/element-appender/visibility-modifiers/visibility-modifier.interface.js +1 -0
- package/dist/collection/helpers/ui/element-appender.js +16 -0
- package/dist/esm/{app-globals-f2336686.js → app-globals-d7b651c1.js} +7 -7
- package/dist/esm/{child-nodes-event-prevent-slimmer-96c14f5a.js → child-nodes-event-prevent-slimmer-82626871.js} +1 -1
- package/dist/esm/{code-block-e12588fe.js → code-block-0a88b481.js} +1495 -51
- package/dist/esm/{component-value-history-controller-slimmer.abstract-4e8eb313.js → component-value-history-controller-slimmer.abstract-6846edfa.js} +2 -2
- package/dist/esm/{content-state-8032467a.js → content-state-79ca99e5.js} +105 -541
- package/dist/esm/{element-appender-slimmer-7fcb944b.js → element-appender-slimmer-73ad10ae.js} +115 -0
- package/dist/esm/{event-emit-slimmer-db4a82e0.js → event-emit-slimmer-2452278f.js} +1 -1
- package/dist/esm/{image-annotation-action-b3b6c308.js → image-annotation-action-bb299ef1.js} +3 -3
- package/dist/esm/{image-extension-b6c7e4a7.js → image-extension-48a96f98.js} +2 -2
- package/dist/esm/index.js +10 -10
- package/dist/esm/{internal-vega-event-manager-48690e5b.js → internal-vega-event-manager-2ecc9186.js} +11 -3
- package/dist/esm/{link-extension-97fcb8fb.js → link-extension-09534514.js} +2 -2
- package/dist/esm/loader.js +10 -10
- package/dist/esm/{public-rules-c06f0d2a.js → public-rules-5eb03ef0.js} +3 -3
- package/dist/esm/{range-e999837f.js → range-d4deb7df.js} +1 -1
- package/dist/esm/{rich-text-editor-required-rule-71f8ee98.js → rich-text-editor-required-rule-5bbbce23.js} +1 -1
- package/dist/esm/shared-backdrop-manager-a7c63838.js +197 -0
- package/dist/esm/{split-cell-operation-359f8082.js → split-cell-operation-7f3058ad.js} +2 -2
- package/dist/esm/{token-extension-9896879b.js → token-extension-40c32bcc.js} +32 -8
- package/dist/esm/vega-accordion.entry.js +3 -3
- package/dist/esm/vega-app-footer.entry.js +3 -3
- package/dist/esm/vega-app-header-button.entry.js +4 -4
- package/dist/esm/vega-banner.entry.js +3 -3
- package/dist/esm/vega-breadcrumb.entry.js +4 -4
- package/dist/esm/vega-button-circle.entry.js +4 -4
- 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 +4 -4
- package/dist/esm/vega-calendar_5.entry.js +4 -4
- package/dist/esm/vega-carousel.entry.js +3 -3
- package/dist/esm/vega-checkbox_2.entry.js +4 -4
- package/dist/esm/vega-chip.entry.js +4 -4
- package/dist/esm/vega-code-block.entry.js +7 -7
- package/dist/esm/vega-color-picker.entry.js +3 -3
- package/dist/esm/vega-color-swatch-picker.entry.js +4 -4
- package/dist/esm/vega-color-swatch.entry.js +3 -3
- package/dist/esm/vega-combo-box.entry.js +23 -5
- package/dist/esm/vega-date-picker_2.entry.js +5 -5
- package/dist/esm/vega-dialog_2.entry.js +161 -71
- package/dist/esm/vega-dropdown_5.entry.js +42 -14
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/{vega-event-id-270fe47e.js → vega-event-id-f55f6977.js} +1 -1
- package/dist/esm/vega-field-label.entry.js +3 -3
- package/dist/esm/vega-file-uploader.entry.js +3 -3
- package/dist/esm/vega-form.entry.js +4 -4
- package/dist/esm/vega-image-uploader.entry.js +4 -4
- package/dist/esm/vega-input-credit-card.entry.js +4 -4
- package/dist/esm/vega-input-numeric.entry.js +4 -4
- package/dist/esm/vega-input-passcode.entry.js +4 -4
- package/dist/esm/vega-input-phone-number.entry.js +4 -4
- package/dist/esm/vega-input-range.entry.js +4 -4
- package/dist/esm/vega-input-select.entry.js +55 -6
- package/dist/esm/vega-input.entry.js +3 -3
- package/dist/esm/vega-item-toggle.entry.js +3 -3
- package/dist/esm/vega-left-nav_5.entry.js +32 -193
- 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 +1 -1
- package/dist/esm/vega-pagination.entry.js +4 -4
- package/dist/esm/vega-popover_2.entry.js +4 -4
- package/dist/esm/vega-progress-tracker_2.entry.js +14 -4
- package/dist/esm/vega-radio_2.entry.js +4 -4
- package/dist/esm/vega-rich-text-content.entry.js +59 -10
- package/dist/esm/vega-rich-text-editor_4.entry.js +608 -90
- package/dist/esm/vega-rich-text-find-replace-panel.entry.js +3 -3
- package/dist/esm/vega-rich-text-special-characters-panel.entry.js +3 -3
- package/dist/esm/vega-rich-text-table-properties_3.entry.js +6 -6
- package/dist/esm/vega-section-title.entry.js +897 -15
- package/dist/esm/vega-segment-control.entry.js +3 -3
- package/dist/esm/vega-selection-chip_2.entry.js +4 -4
- package/dist/esm/vega-selection-tile_2.entry.js +4 -4
- package/dist/esm/vega-sidenav_3.entry.js +3 -3
- package/dist/esm/vega-signature-capture.entry.js +3 -3
- package/dist/esm/vega-stepper.entry.js +4 -4
- package/dist/esm/vega-tab-group_2.entry.js +4 -4
- package/dist/esm/vega-table_11.entry.js +4 -4
- package/dist/esm/vega-textarea.entry.js +4 -4
- package/dist/esm/vega-time-picker_2.entry.js +5 -5
- package/dist/esm/vega-toggle-switch.entry.js +3 -3
- package/dist/esm/vega-tooltip_2.entry.js +1 -1
- package/dist/esm/vega.js +10 -10
- package/dist/sri/vega-sri-manifest.json +272 -268
- package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.d.ts +1 -0
- package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +21 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-render-mode-controller.d.ts +2 -1
- package/dist/types/components/vega-dropdown/types.d.ts +2 -2
- package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +36 -9
- package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.d.ts +2 -0
- package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-items-slot-controler.d.ts +10 -0
- package/dist/types/components/vega-input-select/types.d.ts +1 -0
- package/dist/types/components/vega-input-select/vega-input-select.d.ts +21 -0
- package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-backdrop-manager.d.ts +66 -0
- package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.d.ts +1 -5
- package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-z-index-controller.d.ts +1 -1
- package/dist/types/components/vega-modal/slimmers/renderers/vega-modal-renderer.d.ts +1 -1
- package/dist/types/components/vega-modal/vega-modal.d.ts +34 -6
- package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-steps-controller.d.ts +2 -0
- package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-annotation-strategy.abstract.d.ts +36 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.d.ts +14 -2
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-items-strategy.abstract.d.ts +22 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-nest-items-strategy.d.ts +21 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-selection.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.d.ts +30 -3
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.d.ts +99 -3
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-unnest-items-strategy.d.ts +22 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/nest-list-items-action.d.ts +11 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/unnest-list-items-action.d.ts +11 -0
- package/dist/types/components/vega-rich-text-editor/dto/annotations/list-annotation.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/dto/blocks/list-block.d.ts +6 -1
- package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +5 -1
- package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/list-block-renderer.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/list-item-block-renderer.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/annotation-handler/table-annotation-handler-base.d.ts +18 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/abstract-list-keyboard-handler.d.ts +99 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-shift-tab-outdent-handler.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-tab-indent-handler.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/list-keyboard-slimmer.d.ts +73 -0
- package/dist/types/components/vega-section-title/slimmers/a11y-tree/build-section-title-a11y-tree.d.ts +41 -0
- package/dist/types/components/vega-section-title/vega-section-title.d.ts +9 -0
- package/dist/types/components.d.ts +42 -8
- package/dist/types/helpers/a11y-tree/a11y-node-dto.d.ts +173 -0
- package/dist/types/helpers/a11y-tree/a11y-tree-applier.d.ts +28 -0
- package/dist/types/helpers/a11y-tree/a11y-tree.types.d.ts +137 -0
- package/dist/types/helpers/a11y-tree/strategies/baseline-strategy.d.ts +18 -0
- package/dist/types/helpers/a11y-tree/strategies/firefox-nvda-strategy.d.ts +16 -0
- package/dist/types/helpers/a11y-tree/strategies/webkit-voiceover-strategy.d.ts +23 -0
- package/dist/types/helpers/a11y-tree/strategy-resolver.d.ts +59 -0
- package/dist/types/helpers/backdrop/shared-backdrop-manager.d.ts +16 -0
- package/dist/types/helpers/slimmers/a11y-tree-slimmer.d.ts +49 -0
- package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +9 -0
- package/dist/types/helpers/slimmers/element-appender/visibility-modifiers/clip-on-scroll-modifier.d.ts +37 -0
- package/dist/types/helpers/slimmers/element-appender/visibility-modifiers/visibility-modifier.interface.d.ts +56 -0
- package/dist/types/helpers/ui/element-appender.d.ts +7 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-3e8baeac.entry.js → p-0512308f.entry.js} +1 -1
- package/dist/vega/{p-46fe3154.entry.js → p-1d8312d3.entry.js} +1 -1
- package/dist/vega/{p-f5d7b89f.entry.js → p-1dfbc542.entry.js} +1 -1
- package/dist/vega/{p-fbd3be00.entry.js → p-200c8914.entry.js} +1 -1
- package/dist/vega/{p-e235020b.entry.js → p-22cc174e.entry.js} +1 -1
- package/dist/vega/{p-b1ff70bf.js → p-2c737fc8.js} +1 -1
- package/dist/vega/{p-782eb312.entry.js → p-2d77ae73.entry.js} +1 -1
- package/dist/vega/{p-cb90163a.entry.js → p-2d8d4d5b.entry.js} +1 -1
- package/dist/vega/{p-f651df3b.entry.js → p-2df5d59b.entry.js} +1 -1
- package/dist/vega/p-31216140.js +1 -0
- package/dist/vega/{p-f7e459cd.js → p-312d8205.js} +1 -1
- package/dist/vega/{p-a7209700.js → p-3345d903.js} +1 -1
- package/dist/vega/{p-44439ecc.entry.js → p-36d2df7a.entry.js} +1 -1
- package/dist/vega/{p-02355de8.js → p-3c23ec90.js} +1 -1
- package/dist/vega/{p-2bf17505.entry.js → p-3d6f761a.entry.js} +1 -1
- package/dist/vega/p-4151f53a.entry.js +1 -0
- package/dist/vega/{p-a057285e.entry.js → p-49e1cf4d.entry.js} +1 -1
- package/dist/vega/{p-698fbd73.js → p-5447a8e8.js} +1 -1
- package/dist/vega/p-55e0014a.js +3 -0
- package/dist/vega/{p-45e8424a.entry.js → p-56d19601.entry.js} +1 -1
- package/dist/vega/{p-addbca58.entry.js → p-5924adae.entry.js} +1 -1
- package/dist/vega/{p-9dca874d.entry.js → p-5e4517eb.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/p-65fee02f.entry.js +1 -0
- package/dist/vega/{p-140616fe.js → p-66647244.js} +1 -1
- package/dist/vega/{p-62d6e063.entry.js → p-6680ba17.entry.js} +1 -1
- package/dist/vega/p-6a51d720.js +1 -0
- package/dist/vega/{p-fe24b459.js → p-6c7b6d45.js} +1 -1
- package/dist/vega/{p-288d65ad.entry.js → p-6fcec7c7.entry.js} +1 -1
- package/dist/vega/{p-d08ffdf1.entry.js → p-74f86ff9.entry.js} +1 -1
- package/dist/vega/{p-6ad7144a.entry.js → p-775ecfad.entry.js} +1 -1
- package/dist/vega/{p-6f70a10f.entry.js → p-7950f3e2.entry.js} +1 -1
- package/dist/vega/{p-f246f125.entry.js → p-80b7945a.entry.js} +1 -1
- package/dist/vega/p-8354cff0.entry.js +1 -0
- package/dist/vega/{p-5db61a12.entry.js → p-841b3281.entry.js} +1 -1
- package/dist/vega/{p-579cdeae.js → p-84b7a775.js} +1 -1
- package/dist/vega/p-87e5cb56.entry.js +1 -0
- package/dist/vega/p-8c30a60d.js +1 -0
- package/dist/vega/{p-f8a29127.entry.js → p-8d96f0e8.entry.js} +1 -1
- package/dist/vega/{p-95913e3c.entry.js → p-91303402.entry.js} +1 -1
- package/dist/vega/p-96da7d30.entry.js +1 -0
- package/dist/vega/{p-51b68d25.js → p-9d3f69cb.js} +1 -1
- package/dist/vega/{p-ed103a1a.entry.js → p-9d96d83f.entry.js} +1 -1
- package/dist/vega/{p-6dfe2407.js → p-9f11b579.js} +1 -1
- package/dist/vega/p-9f201152.entry.js +1 -0
- package/dist/vega/{p-48ee3e24.entry.js → p-a775825e.entry.js} +1 -1
- package/dist/vega/{p-9d18ba7f.entry.js → p-acaff62d.entry.js} +1 -1
- package/dist/vega/{p-b8f8e480.entry.js → p-ae146458.entry.js} +1 -1
- package/dist/vega/{p-e8ee70c5.entry.js → p-b3a2ce06.entry.js} +1 -1
- package/dist/vega/{p-5107277d.entry.js → p-b4c26035.entry.js} +1 -1
- package/dist/vega/p-b63319e9.entry.js +1 -0
- package/dist/vega/{p-c9daabe1.entry.js → p-b660f38c.entry.js} +1 -1
- package/dist/vega/{p-8c083255.entry.js → p-b8c13ac9.entry.js} +1 -1
- package/dist/vega/p-b8ffa42f.entry.js +1 -0
- package/dist/vega/{p-7b57a845.entry.js → p-b9e72de2.entry.js} +1 -1
- package/dist/vega/{p-0af32f31.entry.js → p-bb60e381.entry.js} +1 -1
- package/dist/vega/p-bbad318e.entry.js +1 -0
- package/dist/vega/p-c0e42c03.entry.js +1 -0
- package/dist/vega/{p-c67b9aba.entry.js → p-c41f5684.entry.js} +1 -1
- package/dist/vega/{p-4fe40b76.js → p-c4564904.js} +1 -1
- package/dist/vega/{p-341a6b32.entry.js → p-c54b5a8f.entry.js} +1 -1
- package/dist/vega/p-cd1e976c.entry.js +1 -0
- package/dist/vega/p-d9158512.js +1 -0
- package/dist/vega/{p-2dc5edd0.entry.js → p-db11134b.entry.js} +1 -1
- package/dist/vega/{p-14559974.entry.js → p-e1737c8e.entry.js} +1 -1
- package/dist/vega/{p-0b311599.entry.js → p-e1b57e8f.entry.js} +1 -1
- package/dist/vega/{p-9f38448c.entry.js → p-e5ff77f7.entry.js} +1 -1
- package/dist/vega/p-e62d41ee.js +1 -0
- package/dist/vega/{p-6f01a71a.entry.js → p-ebe32b25.entry.js} +1 -1
- package/dist/vega/p-ec162599.entry.js +1 -0
- package/dist/vega/{p-9f7154d2.js → p-ec5dee32.js} +1 -1
- package/dist/vega/{p-d3a36d19.entry.js → p-ec64cc59.entry.js} +1 -1
- package/dist/vega/p-f29d9707.entry.js +1 -0
- package/dist/vega/{p-5df2d6a1.entry.js → p-f78944d7.entry.js} +1 -1
- package/dist/vega/{p-c9c6daa6.entry.js → p-f9bfee81.entry.js} +1 -1
- package/dist/vega/{p-26c7fe8b.entry.js → p-fa65956c.entry.js} +1 -1
- package/dist/vega/{p-f96d0503.entry.js → p-fc7e4c8a.entry.js} +1 -1
- package/dist/vega/{p-b39d4a88.entry.js → p-fd23c365.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +3 -2
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-backdrop-controller.js +0 -73
- package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-backdrop-controller.d.ts +0 -27
- package/dist/vega/p-0b9c7c79.entry.js +0 -1
- package/dist/vega/p-0be4df0a.js +0 -1
- package/dist/vega/p-2364be92.entry.js +0 -1
- package/dist/vega/p-270697c0.entry.js +0 -1
- package/dist/vega/p-282b37cb.js +0 -1
- package/dist/vega/p-38c9d782.js +0 -1
- package/dist/vega/p-52c6a399.entry.js +0 -1
- package/dist/vega/p-73f2c3c0.entry.js +0 -1
- package/dist/vega/p-762ea523.entry.js +0 -1
- package/dist/vega/p-7a88a3d3.entry.js +0 -1
- package/dist/vega/p-83a16285.entry.js +0 -1
- package/dist/vega/p-91287214.entry.js +0 -1
- package/dist/vega/p-c66d2a1e.js +0 -1
- package/dist/vega/p-cad5222a.entry.js +0 -1
- package/dist/vega/p-d25ca0c3.entry.js +0 -1
- package/dist/vega/p-f05a193e.entry.js +0 -1
- package/dist/vega/p-f4da615a.js +0 -3
- package/dist/vega/p-f906a7bc.entry.js +0 -1
|
@@ -24,6 +24,7 @@ import { LogUtility } from '../../../utils/log';
|
|
|
24
24
|
import { HTMLContentCleaner } from '../slimmers/controllers/html-cleaner';
|
|
25
25
|
import { RTEFilterStylesStrategyRegistry } from './filter-styles-strategies/filter-styles-strategy-registry';
|
|
26
26
|
import { DeleteSelectedContentStrategy } from './action-handle-strategies/modify-content-strategies/delete-selected-content-strategy';
|
|
27
|
+
import { ReplaceNestListAction } from './actions/replace-nest-list-action';
|
|
27
28
|
/**
|
|
28
29
|
* Class representing the content state of the rich text editor.
|
|
29
30
|
*/
|
|
@@ -191,14 +192,19 @@ export class VegaRTEContent {
|
|
|
191
192
|
/**
|
|
192
193
|
* Convert text to list.
|
|
193
194
|
*
|
|
194
|
-
* @param {RTETextBlock} block -
|
|
195
|
+
* @param {RTETextBlock | RTEListItemBlock} block - Block to convert or rebuild.
|
|
195
196
|
* @returns {RTEListItemBlock} list item block dto.
|
|
196
197
|
*/
|
|
197
198
|
toListItem(block) {
|
|
199
|
+
var _a;
|
|
198
200
|
block.children.map((node) => node.apply(new SyncUpSelectionAction()));
|
|
199
201
|
const listItemBlock = new RTEListItemBlock(generateUUID());
|
|
200
202
|
listItemBlock.apply(new AppendChildrenAction(block['children']));
|
|
201
203
|
listItemBlock['annotationMap'] = block['annotationMap'];
|
|
204
|
+
if (block instanceof RTEListItemBlock && ((_a = block.nestList) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
205
|
+
listItemBlock.apply(new ReplaceNestListAction([...block.nestList]));
|
|
206
|
+
block.apply(new ReplaceNestListAction([]));
|
|
207
|
+
}
|
|
202
208
|
return listItemBlock;
|
|
203
209
|
}
|
|
204
210
|
/**
|
|
@@ -27,10 +27,14 @@ export class ListBlockFilterStylesStrategy extends RTEFilterStylesStrategy {
|
|
|
27
27
|
* @inheritDoc
|
|
28
28
|
*/
|
|
29
29
|
toCssText() {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
const containerClass = RTEFilterStylesStrategy.RTE_CONTENT_CONTAINER_CLASS_NAME;
|
|
31
|
+
const tags = this.elementTagName.split(',').map((tag) => tag.trim());
|
|
32
|
+
const baseSelector = tags.map((tag) => `.${containerClass} ${tag}`).join(', ');
|
|
33
|
+
const markerSelector = tags
|
|
34
|
+
.map((tag) => `.${containerClass} ${tag} > li::marker`)
|
|
33
35
|
.join(', ');
|
|
34
|
-
|
|
36
|
+
const markerStyles = this.convertStylesMapToCssText(ListAnnotation.getDefaultMarkerStyles());
|
|
37
|
+
return (`${baseSelector} { ${this.convertStylesMapToCssText(this.stylesToBeFiltered)} } ` +
|
|
38
|
+
`${markerSelector} { ${markerStyles} }`);
|
|
35
39
|
}
|
|
36
40
|
}
|
package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-block-renderer.js
CHANGED
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
import { h } from '@stencil/core';
|
|
2
|
+
import { RTEListItemBlock } from '../../blocks/list-item-block';
|
|
2
3
|
import { RTEBlockRenderer } from './block-renderer.abstract';
|
|
3
4
|
import RTEListItemBlockRenderer from './list-item-block-renderer';
|
|
5
|
+
const defaultOrderedListMarkerRule = ['decimal', 'lower-alpha', 'lower-roman'];
|
|
6
|
+
const defaultBulletListMarkerRule = ['disc', 'circle', 'square'];
|
|
4
7
|
class RTEListBlockRenderer extends RTEBlockRenderer {
|
|
5
8
|
render(block, renderContext) {
|
|
6
9
|
const BlockTag = block.getBlockTag();
|
|
7
|
-
|
|
10
|
+
const styles = block.getStyles(renderContext);
|
|
11
|
+
const resolvedListMarker = this.resolveListMarker(block, styles);
|
|
12
|
+
if (resolvedListMarker) {
|
|
13
|
+
styles.listStyleType = resolvedListMarker;
|
|
14
|
+
}
|
|
15
|
+
return (h(BlockTag, Object.assign({}, this.getCustomAttrs(block), { key: block.id, ref: (ref) => super.registerRef(ref, block), style: styles, class: block.getClasses() }), block.children.map((listItemBlock) => RTEListItemBlockRenderer.render(listItemBlock, renderContext))));
|
|
16
|
+
}
|
|
17
|
+
resolveListMarker(block, styles) {
|
|
18
|
+
if (styles.listStyleType || styles['list-style-type']) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const depth = this.getListDepth(block, block.type);
|
|
22
|
+
if (block.type === 'number-list') {
|
|
23
|
+
return defaultOrderedListMarkerRule[depth % defaultOrderedListMarkerRule.length];
|
|
24
|
+
}
|
|
25
|
+
if (block.type === 'bullet-list') {
|
|
26
|
+
return defaultBulletListMarkerRule[depth % defaultBulletListMarkerRule.length];
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
getListDepth(block, targetType) {
|
|
31
|
+
let depth = 0;
|
|
32
|
+
let currentList = block;
|
|
33
|
+
while (currentList.parent instanceof RTEListItemBlock) {
|
|
34
|
+
const parentList = currentList.parent.parent;
|
|
35
|
+
if (parentList.type === targetType) {
|
|
36
|
+
depth++;
|
|
37
|
+
}
|
|
38
|
+
currentList = parentList;
|
|
39
|
+
}
|
|
40
|
+
return depth;
|
|
8
41
|
}
|
|
9
42
|
}
|
|
10
43
|
export default new RTEListBlockRenderer();
|
|
@@ -3,9 +3,26 @@ import RTEListBlockRenderer from './list-block-renderer';
|
|
|
3
3
|
import { RTEBlockTextNodesRenderer } from './block-text-nodes-renderer.abstract';
|
|
4
4
|
class RTEListItemBlockRenderer extends RTEBlockTextNodesRenderer {
|
|
5
5
|
render(block, renderContext) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
var _a;
|
|
7
|
+
const hasNestList = ((_a = block.nestList) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
8
|
+
return (h("li", Object.assign({}, this.getCustomAttrs(block), { key: this.getRenderKey(block), ref: (ref) => super.registerRef(ref, block), style: block.getStyles(), class: block.getClasses() }),
|
|
9
|
+
hasNestList ? (
|
|
10
|
+
// Keep text nodes wrapped as a block-level element when a nested list exists.
|
|
11
|
+
// This preserves stable marker/text flow and selection behavior before the child list.
|
|
12
|
+
h("span", { style: { display: 'block' } }, super.renderNodes(block, renderContext))) : (super.renderNodes(block, renderContext)),
|
|
13
|
+
hasNestList && this.renderChildren(block.nestList, renderContext)));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Include structural ownership and direct nested-list identity in the key so
|
|
17
|
+
* list mutations recreate the li when its rendered child shape changes.
|
|
18
|
+
*
|
|
19
|
+
* @param {RTEListItemBlock} block - List item being rendered.
|
|
20
|
+
* @returns {string} Structure-aware render key.
|
|
21
|
+
*/
|
|
22
|
+
getRenderKey(block) {
|
|
23
|
+
var _a;
|
|
24
|
+
const nestListIds = ((_a = block.nestList) !== null && _a !== void 0 ? _a : []).map((list) => list.id);
|
|
25
|
+
return JSON.stringify([block.parent.id, block.id, nestListIds]);
|
|
9
26
|
}
|
|
10
27
|
renderChildren(children, renderContext) {
|
|
11
28
|
return children === null || children === void 0 ? void 0 : children.map((block) => RTEListBlockRenderer.render(block, renderContext));
|
|
@@ -33,12 +33,29 @@ export class TableAnnotationHandlerBase extends AnnotationGeneratorStrategyAbstr
|
|
|
33
33
|
const updatedBorderColor = borderColor === 'initial' ? '' : borderColor;
|
|
34
34
|
return {
|
|
35
35
|
style: borderStyle === 'initial' ? '' : borderStyle,
|
|
36
|
-
width: borderWidth
|
|
36
|
+
width: this.normalizeBorderWidth(borderWidth),
|
|
37
37
|
color: RTETableColorManager.getColorKey(updatedBorderColor) || updatedBorderColor,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
return null;
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Normalize a border width read from the DOM, dropping the `initial` value and the
|
|
44
|
+
* CSS keyword widths (`thin`/`medium`/`thick`). Those only appear as serialization
|
|
45
|
+
* artifacts of shorthand borders (e.g. `border: none` → `border-width: medium`) and
|
|
46
|
+
* are not valid numeric dimensions, so leaving them in would populate the properties
|
|
47
|
+
* "Weight" field with an invalid value and block the whole form from saving.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} borderWidth - The raw border width read from the element style.
|
|
50
|
+
* @returns {string} The normalized border width (empty string when it is a keyword).
|
|
51
|
+
*/
|
|
52
|
+
normalizeBorderWidth(borderWidth) {
|
|
53
|
+
if (borderWidth === 'initial' ||
|
|
54
|
+
TableAnnotationHandlerBase.BORDER_WIDTH_KEYWORDS.includes(borderWidth)) {
|
|
55
|
+
return '';
|
|
56
|
+
}
|
|
57
|
+
return borderWidth;
|
|
58
|
+
}
|
|
42
59
|
/**
|
|
43
60
|
* Extract width from element.
|
|
44
61
|
*
|
|
@@ -76,3 +93,10 @@ export class TableAnnotationHandlerBase extends AnnotationGeneratorStrategyAbstr
|
|
|
76
93
|
return null;
|
|
77
94
|
}
|
|
78
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* CSS border-width keywords. These are produced as serialization artifacts when a
|
|
98
|
+
* shorthand border without an explicit width is round-tripped (e.g. `border: none`
|
|
99
|
+
* expands to `border-width: medium`). They are not valid numeric dimensions for the
|
|
100
|
+
* table/cell properties "Weight" field, so they are normalized away on import.
|
|
101
|
+
*/
|
|
102
|
+
TableAnnotationHandlerBase.BORDER_WIDTH_KEYWORDS = ['thin', 'medium', 'thick'];
|
|
@@ -53,6 +53,8 @@ export class LiToRTEListItemBlockStrategy extends BlockToRTEBlockStrategyAbstrac
|
|
|
53
53
|
*/
|
|
54
54
|
appendChildBlocks(currentBlock, childBlocks) {
|
|
55
55
|
currentBlock.nestList = childBlocks.filter((block) => ['bullet-list', 'number-list'].includes(block.type));
|
|
56
|
+
// Maintain bidirectional parent link so that nested list blocks can traverse up to the list item.
|
|
57
|
+
currentBlock.nestList.forEach((block) => (block.parent = currentBlock));
|
|
56
58
|
}
|
|
57
59
|
/**
|
|
58
60
|
* Should continue process to child elements.
|
|
@@ -61,11 +61,25 @@ export class AbstractDeleteContentHandler extends BaseHandler {
|
|
|
61
61
|
* @returns {Nullable<RTENode>} The next node, or null when the given node is the last node of the content.
|
|
62
62
|
*/
|
|
63
63
|
getNextNode(node) {
|
|
64
|
+
var _a;
|
|
64
65
|
const block = node.parent;
|
|
65
66
|
const nodeIndex = block.children.indexOf(node);
|
|
66
67
|
if (nodeIndex >= 0 && nodeIndex < block.children.length - 1) {
|
|
67
68
|
return block.children[nodeIndex + 1];
|
|
68
69
|
}
|
|
70
|
+
// When the caret is at the end of a list item that owns nested lists, the next
|
|
71
|
+
// caret position is the first node of the first non-empty nested list, not the following sibling
|
|
72
|
+
// block. Descend into the item's own nestList before ascending to siblings so that
|
|
73
|
+
// a forward delete merges the first nested item up instead of skipping the whole
|
|
74
|
+
// nested list and merging the following sibling into the deepest nested item.
|
|
75
|
+
if (block.isListItemBlock() && ((_a = block.nestList) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
76
|
+
for (const nestedList of block.nestList) {
|
|
77
|
+
const firstNestedNode = nestedList.getFirstNode();
|
|
78
|
+
if (firstNestedNode) {
|
|
79
|
+
return firstNestedNode;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
69
83
|
const nextBlock = this.getNextBlock(block);
|
|
70
84
|
return nextBlock ? nextBlock.getFirstNode() : null;
|
|
71
85
|
}
|
|
@@ -76,10 +90,25 @@ export class AbstractDeleteContentHandler extends BaseHandler {
|
|
|
76
90
|
* @returns {Nullable<RTEBlock>} The next block, or null when the given block is the last block of the content.
|
|
77
91
|
*/
|
|
78
92
|
getNextBlock(block) {
|
|
93
|
+
var _a, _b;
|
|
79
94
|
const parent = block.parent;
|
|
80
95
|
if (!parent || !parent.children) {
|
|
81
96
|
return null;
|
|
82
97
|
}
|
|
98
|
+
// Nested lists are owned through a list item's nestList collection rather than
|
|
99
|
+
// its children collection. Traverse the remaining nested-list branches before
|
|
100
|
+
// ascending to the owning item and its following siblings.
|
|
101
|
+
if (parent instanceof RTEBlock && parent.isListItemBlock()) {
|
|
102
|
+
const nestedListIndex = ((_a = parent.nestList) !== null && _a !== void 0 ? _a : []).indexOf(block);
|
|
103
|
+
if (nestedListIndex >= 0) {
|
|
104
|
+
for (const nestedList of ((_b = parent.nestList) !== null && _b !== void 0 ? _b : []).slice(nestedListIndex + 1)) {
|
|
105
|
+
if (nestedList.getFirstNode()) {
|
|
106
|
+
return nestedList;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return this.getNextBlock(parent);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
83
112
|
const siblings = parent.children;
|
|
84
113
|
const blockIndex = siblings.indexOf(block);
|
|
85
114
|
if (blockIndex >= 0 && siblings[blockIndex + 1]) {
|
|
@@ -5,10 +5,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { h } from '@stencil/core';
|
|
8
|
-
import { InjectVegaSlimmer, MapToComponentField, MapToComponentMethod } from 'vega-slimmer/core';
|
|
8
|
+
import { InjectVegaSlimmer, MapToComponentField, MapToComponentMethod, methodPlaceholder, } from 'vega-slimmer/core';
|
|
9
9
|
import { VegaInternalIconManager } from '../../../../../../helpers/icon/internal-icon-manager';
|
|
10
10
|
import ListUL from '../../../../assets/list-ul';
|
|
11
11
|
import ListOL from '../../../../assets/list-ol';
|
|
12
|
+
import { ListKeyboardSlimmer } from './list-keyboard-slimmer';
|
|
12
13
|
import { BulletsToolbarButtonSlimmer } from './bullets-toolbar-button-slimmer';
|
|
13
14
|
import { NumbersToolbarButtonSlimmer } from './numbers-toolbar-button-slimmer';
|
|
14
15
|
import { VisualModeToolbarButtonSlimmer } from '../visual-mode-toolbar-button-slimmer.abstract';
|
|
@@ -24,6 +25,13 @@ export class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonS
|
|
|
24
25
|
});
|
|
25
26
|
this.bulletsToolbarButtonSlimmer = new BulletsToolbarButtonSlimmer();
|
|
26
27
|
this.numbersToolbarButtonSlimmer = new NumbersToolbarButtonSlimmer();
|
|
28
|
+
this.listKeyboardSlimmer = new ListKeyboardSlimmer();
|
|
29
|
+
}
|
|
30
|
+
disconnectedCallback() {
|
|
31
|
+
methodPlaceholder();
|
|
32
|
+
}
|
|
33
|
+
componentDidLoad() {
|
|
34
|
+
methodPlaceholder();
|
|
27
35
|
}
|
|
28
36
|
componentWillRender() {
|
|
29
37
|
if (this.numbersToolbarButtonSlimmer.isSelected()) {
|
|
@@ -86,12 +94,33 @@ export class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonS
|
|
|
86
94
|
__decorate([
|
|
87
95
|
MapToComponentField()
|
|
88
96
|
], BulletsNumbersToolbarButtonSlimmer.prototype, "selectionController", void 0);
|
|
97
|
+
__decorate([
|
|
98
|
+
MapToComponentField()
|
|
99
|
+
], BulletsNumbersToolbarButtonSlimmer.prototype, "valueController", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
MapToComponentField()
|
|
102
|
+
], BulletsNumbersToolbarButtonSlimmer.prototype, "value", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
MapToComponentField()
|
|
105
|
+
], BulletsNumbersToolbarButtonSlimmer.prototype, "toolbarItems", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
MapToComponentField()
|
|
108
|
+
], BulletsNumbersToolbarButtonSlimmer.prototype, "vegaRichTextEditorRenderer", void 0);
|
|
89
109
|
__decorate([
|
|
90
110
|
InjectVegaSlimmer()
|
|
91
111
|
], BulletsNumbersToolbarButtonSlimmer.prototype, "bulletsToolbarButtonSlimmer", void 0);
|
|
92
112
|
__decorate([
|
|
93
113
|
InjectVegaSlimmer()
|
|
94
114
|
], BulletsNumbersToolbarButtonSlimmer.prototype, "numbersToolbarButtonSlimmer", void 0);
|
|
115
|
+
__decorate([
|
|
116
|
+
InjectVegaSlimmer()
|
|
117
|
+
], BulletsNumbersToolbarButtonSlimmer.prototype, "listKeyboardSlimmer", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
MapToComponentMethod('disconnectedCallback')
|
|
120
|
+
], BulletsNumbersToolbarButtonSlimmer.prototype, "disconnectedCallback", null);
|
|
121
|
+
__decorate([
|
|
122
|
+
MapToComponentMethod('componentDidLoad')
|
|
123
|
+
], BulletsNumbersToolbarButtonSlimmer.prototype, "componentDidLoad", null);
|
|
95
124
|
__decorate([
|
|
96
125
|
MapToComponentMethod('componentWillRender')
|
|
97
126
|
], BulletsNumbersToolbarButtonSlimmer.prototype, "componentWillRender", null);
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { RTEListItemBlock } from '../../../../../dto/blocks/list-item-block';
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base for list keyboard (Tab / Shift+Tab) handlers.
|
|
4
|
+
* Provides shared selection-normalization utilities used by both the indent
|
|
5
|
+
* and outdent concrete handlers.
|
|
6
|
+
*/
|
|
7
|
+
export class AbstractListKeyboardHandler {
|
|
8
|
+
/**
|
|
9
|
+
* Filter the ordered selection down to only the "root" items —
|
|
10
|
+
* items whose ancestor is not also present in the selection.
|
|
11
|
+
*
|
|
12
|
+
* @param {RTEListItemBlock[]} selection - Ordered selected list items.
|
|
13
|
+
* @returns {RTEListItemBlock[]} Root items that do not have selected ancestors.
|
|
14
|
+
*/
|
|
15
|
+
getOutdentRoots(selection) {
|
|
16
|
+
const selectedItems = new Set(selection);
|
|
17
|
+
return selection.filter((item) => !this.hasSelectedAncestor(item, selectedItems));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check whether a list item has an ancestor that is also selected.
|
|
21
|
+
*
|
|
22
|
+
* @param {RTEListItemBlock} item - Item to inspect.
|
|
23
|
+
* @param {Set<RTEListItemBlock>} selectedItems - Selected items lookup set.
|
|
24
|
+
* @returns {boolean} True when an ancestor item is selected.
|
|
25
|
+
*/
|
|
26
|
+
hasSelectedAncestor(item, selectedItems) {
|
|
27
|
+
var _a, _b;
|
|
28
|
+
let currentParent = (_a = item.parent) === null || _a === void 0 ? void 0 : _a.parent;
|
|
29
|
+
while (currentParent instanceof RTEListItemBlock) {
|
|
30
|
+
if (selectedItems.has(currentParent)) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
currentParent = (_b = currentParent.parent) === null || _b === void 0 ? void 0 : _b.parent;
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Split an ordered flat list of items into groups that share the same
|
|
39
|
+
* parent list and are contiguous siblings.
|
|
40
|
+
*
|
|
41
|
+
* @param {RTEListItemBlock[]} selection - Ordered list-item selection.
|
|
42
|
+
* @returns {RTEListItemBlock[][]} Contiguous parent-based segments.
|
|
43
|
+
*/
|
|
44
|
+
splitSelectionIntoParentSegments(selection) {
|
|
45
|
+
const segments = [];
|
|
46
|
+
let currentSegment = [];
|
|
47
|
+
selection.forEach((item) => {
|
|
48
|
+
if (currentSegment.length === 0) {
|
|
49
|
+
currentSegment.push(item);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const previousItem = currentSegment[currentSegment.length - 1];
|
|
53
|
+
const isSameParent = previousItem.parent === item.parent;
|
|
54
|
+
const isContiguousSibling = isSameParent &&
|
|
55
|
+
item.parent.children.indexOf(item) - item.parent.children.indexOf(previousItem) === 1;
|
|
56
|
+
if (isContiguousSibling) {
|
|
57
|
+
currentSegment.push(item);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
segments.push(currentSegment);
|
|
61
|
+
currentSegment = [item];
|
|
62
|
+
});
|
|
63
|
+
if (currentSegment.length > 0) {
|
|
64
|
+
segments.push(currentSegment);
|
|
65
|
+
}
|
|
66
|
+
return segments;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Normalize the selection and split into parent-based contiguous segments.
|
|
70
|
+
* Returns null when the result is empty.
|
|
71
|
+
*
|
|
72
|
+
* @param {RTEBlock[]} selectedBlocks - Raw selected blocks.
|
|
73
|
+
* @returns {RTEListItemBlock[][] | null} Contiguous segments or null when invalid.
|
|
74
|
+
*/
|
|
75
|
+
normalizeToSegments(selectedBlocks) {
|
|
76
|
+
const normalizedSelection = this.getOrderedListItems(selectedBlocks);
|
|
77
|
+
if (!normalizedSelection) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const roots = this.getOutdentRoots(normalizedSelection);
|
|
81
|
+
const segments = this.splitSelectionIntoParentSegments(roots);
|
|
82
|
+
return segments.length ? segments : null;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Return the first and last RTETextNode spanning the provided blocks,
|
|
86
|
+
* or null when either boundary cannot be resolved.
|
|
87
|
+
*
|
|
88
|
+
* @param {RTEBlock[]} blocks - Blocks defining the range boundary.
|
|
89
|
+
* @returns {Nullable<[RTETextNode, RTETextNode]>} First and last boundary nodes.
|
|
90
|
+
*/
|
|
91
|
+
getSelectionBoundary(blocks) {
|
|
92
|
+
var _a, _b, _c, _d;
|
|
93
|
+
const firstNode = (_b = (_a = blocks[0]) === null || _a === void 0 ? void 0 : _a.getFirstNode()) !== null && _b !== void 0 ? _b : null;
|
|
94
|
+
const lastNode = (_d = (_c = blocks[blocks.length - 1]) === null || _c === void 0 ? void 0 : _c.getLastNode()) !== null && _d !== void 0 ? _d : null;
|
|
95
|
+
if (!firstNode || !lastNode) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
return [firstNode, lastNode];
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Normalize the raw selectedBlocks into an ordered list of RTEListItemBlocks,
|
|
102
|
+
* truncating at the first non-list block. Returns null when no list items
|
|
103
|
+
* are present.
|
|
104
|
+
*
|
|
105
|
+
* @param {RTEBlock[]} selectedBlocks - Raw selected blocks.
|
|
106
|
+
* @returns {RTEListItemBlock[] | null} Ordered list items or null.
|
|
107
|
+
*/
|
|
108
|
+
getOrderedListItems(selectedBlocks) {
|
|
109
|
+
const selectedListItems = this.getSelectedListItemsUntilFirstNonList(selectedBlocks);
|
|
110
|
+
if (!selectedListItems.length) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
return [...selectedListItems].sort((a, b) => this.compareTreePath(this.getTreePath(a), this.getTreePath(b)));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Collect contiguous selected list items until a non-list block is found.
|
|
117
|
+
*
|
|
118
|
+
* @param {RTEBlock[]} selectedBlocks - Raw selected blocks.
|
|
119
|
+
* @returns {RTEListItemBlock[]} Selected list items up to first non-list block.
|
|
120
|
+
*/
|
|
121
|
+
getSelectedListItemsUntilFirstNonList(selectedBlocks) {
|
|
122
|
+
const selectedListItems = [];
|
|
123
|
+
for (const block of selectedBlocks) {
|
|
124
|
+
if (!(block instanceof RTEListItemBlock)) {
|
|
125
|
+
if (selectedListItems.length > 0) {
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
selectedListItems.push(block);
|
|
131
|
+
}
|
|
132
|
+
return selectedListItems;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Build a hierarchical index path for a list item in the list tree.
|
|
136
|
+
*
|
|
137
|
+
* @param {RTEListItemBlock} item - Item whose tree path is being resolved.
|
|
138
|
+
* @returns {number[]} Tree index path from root to the item.
|
|
139
|
+
*/
|
|
140
|
+
getTreePath(item) {
|
|
141
|
+
var _a;
|
|
142
|
+
const path = [];
|
|
143
|
+
const visitedLists = new Set();
|
|
144
|
+
let currentItem = item;
|
|
145
|
+
let currentList = item.parent;
|
|
146
|
+
while (currentList && this.hasChildren(currentList) && !visitedLists.has(currentList)) {
|
|
147
|
+
visitedLists.add(currentList);
|
|
148
|
+
const itemIndex = currentList.children.indexOf(currentItem);
|
|
149
|
+
if (itemIndex < 0) {
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
path.unshift(itemIndex);
|
|
153
|
+
const listParent = currentList.parent;
|
|
154
|
+
if (listParent instanceof RTEListItemBlock) {
|
|
155
|
+
const nestListIndex = ((_a = listParent.nestList) !== null && _a !== void 0 ? _a : []).indexOf(currentList);
|
|
156
|
+
if (nestListIndex < 0) {
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
path.unshift(nestListIndex);
|
|
160
|
+
currentItem = listParent;
|
|
161
|
+
currentList = listParent.parent;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
let child = currentList;
|
|
165
|
+
let container = listParent;
|
|
166
|
+
while (container && this.hasChildren(container)) {
|
|
167
|
+
const childIndex = container.children.indexOf(child);
|
|
168
|
+
if (childIndex < 0) {
|
|
169
|
+
return path;
|
|
170
|
+
}
|
|
171
|
+
path.unshift(childIndex);
|
|
172
|
+
child = container;
|
|
173
|
+
container = container.parent;
|
|
174
|
+
}
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
return path;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Compare two list-item tree paths.
|
|
181
|
+
*
|
|
182
|
+
* @param {number[]} a - First tree path.
|
|
183
|
+
* @param {number[]} b - Second tree path.
|
|
184
|
+
* @returns {number} Negative when a < b, positive when a > b, otherwise 0.
|
|
185
|
+
*/
|
|
186
|
+
compareTreePath(a, b) {
|
|
187
|
+
const length = Math.min(a.length, b.length);
|
|
188
|
+
for (let i = 0; i < length; i++) {
|
|
189
|
+
if (a[i] !== b[i]) {
|
|
190
|
+
return a[i] - b[i];
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return a.length - b.length;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Check whether a value exposes a children array.
|
|
197
|
+
*
|
|
198
|
+
* @param {unknown} entity - Candidate value.
|
|
199
|
+
* @returns {boolean} True when entity has children array.
|
|
200
|
+
*/
|
|
201
|
+
hasChildren(entity) {
|
|
202
|
+
return !!entity && Array.isArray(entity.children);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { RTEListItemBlock } from '../../../../../dto/blocks/list-item-block';
|
|
2
|
+
import { UnnestListItemsAction } from '../../../../../dto/actions/unnest-list-items-action';
|
|
3
|
+
import { TransformParagraphAction } from '../../../../../dto/actions/transform-paragraph-action';
|
|
4
|
+
import { VegaRTEContent } from '../../../../../dto/content-state';
|
|
5
|
+
import { RTEHtmlBlock } from '../../../../../dto/blocks/html-block';
|
|
6
|
+
import { AbstractListKeyboardHandler } from './abstract-list-keyboard-handler';
|
|
7
|
+
/**
|
|
8
|
+
* Handles Shift+Tab key list outdent.
|
|
9
|
+
* Normalizes the selection, then promotes each segment, either moving nested
|
|
10
|
+
* items or promoting top-level items to paragraphs.
|
|
11
|
+
*/
|
|
12
|
+
export class ListShiftTabOutdentHandler extends AbstractListKeyboardHandler {
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
execute(selectedBlocks) {
|
|
17
|
+
const segments = this.normalizeToSegments(selectedBlocks);
|
|
18
|
+
if (!segments) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const segmentSelectionBoundaries = new Array(segments.length).fill(null);
|
|
22
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
23
|
+
const segment = segments[i];
|
|
24
|
+
const parentList = segment[0].parent;
|
|
25
|
+
if (parentList.parent instanceof VegaRTEContent || parentList.parent instanceof RTEHtmlBlock) {
|
|
26
|
+
// Capture boundary before action moves text nodes into new paragraphs
|
|
27
|
+
const boundary = this.getSelectionBoundary(segment);
|
|
28
|
+
parentList.apply(new TransformParagraphAction(segment));
|
|
29
|
+
segmentSelectionBoundaries[i] = boundary;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (parentList.parent instanceof RTEListItemBlock) {
|
|
33
|
+
parentList.apply(new UnnestListItemsAction(segment));
|
|
34
|
+
segmentSelectionBoundaries[i] = this.getSelectionBoundary(segment);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (segmentSelectionBoundaries.some(Boolean)) {
|
|
38
|
+
return segmentSelectionBoundaries;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { NestListItemsAction } from '../../../../../dto/actions/nest-list-items-action';
|
|
2
|
+
import { AbstractListKeyboardHandler } from './abstract-list-keyboard-handler';
|
|
3
|
+
/**
|
|
4
|
+
* Handles Tab key list indentation.
|
|
5
|
+
* Normalizes the selection, applies a command-style gate on the first
|
|
6
|
+
* eligible segment, then nests each qualifying segment.
|
|
7
|
+
*/
|
|
8
|
+
export class ListTabIndentHandler extends AbstractListKeyboardHandler {
|
|
9
|
+
/**
|
|
10
|
+
* @inheritDoc
|
|
11
|
+
*/
|
|
12
|
+
execute(selectedBlocks) {
|
|
13
|
+
const segments = this.normalizeToSegments(selectedBlocks);
|
|
14
|
+
if (!segments) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const firstSegment = segments[0];
|
|
18
|
+
const firstParentList = firstSegment[0].parent;
|
|
19
|
+
if (firstParentList.children.indexOf(firstSegment[0]) <= 0) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const segmentSelectionBoundaries = new Array(segments.length).fill(null);
|
|
23
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
24
|
+
const segment = segments[i];
|
|
25
|
+
const parentList = segment[0].parent;
|
|
26
|
+
if (parentList.children.indexOf(segment[0]) <= 0) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
parentList.apply(new NestListItemsAction(segment));
|
|
30
|
+
segmentSelectionBoundaries[i] = this.getSelectionBoundary(segment);
|
|
31
|
+
}
|
|
32
|
+
return segmentSelectionBoundaries.some(Boolean) ? segmentSelectionBoundaries : null;
|
|
33
|
+
}
|
|
34
|
+
}
|