@heartlandone/vega 2.80.0 → 2.82.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.
Files changed (712) hide show
  1. package/dist/cjs/{app-globals-7a48292d.js → app-globals-3350d580.js} +7 -7
  2. package/dist/cjs/{aria-dialog-focusable-trap-slimmer-5a0a78fe.js → aria-dialog-focusable-trap-slimmer-5507f917.js} +15 -70
  3. package/dist/cjs/{child-nodes-event-prevent-slimmer-dd0bb8b6.js → child-nodes-event-prevent-slimmer-9b7095a4.js} +1 -1
  4. package/dist/cjs/{child-nodes-notify-observer-slimmer-a8d13f4c.js → child-nodes-notify-observer-slimmer-2631c381.js} +1 -1
  5. package/dist/cjs/{code-block-71a330a1.js → code-block-b1f8aded.js} +804 -63
  6. package/dist/cjs/{component-value-history-controller-slimmer.abstract-fd077a6c.js → component-value-history-controller-slimmer.abstract-99fbd1f2.js} +6 -6
  7. package/dist/cjs/{content-state-afa26456.js → content-state-648652b4.js} +970 -467
  8. package/dist/cjs/{dark-mode-style-controller-3a04af3d.js → dark-mode-style-controller-bd765afb.js} +2 -322
  9. package/dist/cjs/{date-required-rule-9f0e3e99.js → date-required-rule-6addf5dd.js} +1 -1
  10. package/dist/cjs/{design-token-3f9589eb.js → design-token-93070bb8.js} +6 -130
  11. package/dist/cjs/{dom-node-subject-observer-factory-a3a60da4.js → dom-node-subject-observer-factory-9110cb94.js} +1 -1
  12. package/dist/cjs/drop-file-accept-filter-slimmer-cd619cc7.js +64 -0
  13. package/dist/cjs/{element-appender-slimmer-7a66229b.js → element-appender-slimmer-dedd3a34.js} +5 -5
  14. package/dist/cjs/{event-emit-slimmer-024e26bb.js → event-emit-slimmer-bcb458b2.js} +2 -2
  15. package/dist/cjs/{form-field-controller-slimmer-c487cf2b.js → form-field-controller-slimmer-0f3a028e.js} +5 -5
  16. package/dist/cjs/{image-annotation-action-4e72af4b.js → image-annotation-action-0339e983.js} +4 -4
  17. package/dist/cjs/index-58ea899e.js +4 -0
  18. package/dist/cjs/index.cjs.js +21 -18
  19. package/dist/cjs/{inject-keyboard-manager-d1a82089.js → inject-keyboard-manager-2d9c4f92.js} +1 -1
  20. package/dist/cjs/{internal-translation-controller-9f58a4e4.js → internal-translation-controller-fb1532f4.js} +3 -0
  21. package/dist/cjs/{internal-vega-event-manager-cc0f511c.js → internal-vega-event-manager-fef893bf.js} +1 -0
  22. package/dist/cjs/{keyboard-manager-9dbbb0d4.js → keyboard-manager-5ed6c472.js} +2 -2
  23. package/dist/cjs/{keyboard-manager-slimmer-68cff676.js → keyboard-manager-slimmer-879ff4f3.js} +1 -1
  24. package/dist/cjs/loader.cjs.js +15 -14
  25. package/dist/cjs/{month-view-generator-65a2f883.js → month-view-generator-d262e6ce.js} +1 -1
  26. package/dist/cjs/page-size-option-utils-d038dd3a.js +68 -0
  27. package/dist/cjs/{public-rules-36f202b3.js → public-rules-bce88d4e.js} +12 -11
  28. package/dist/cjs/{range-fa15d524.js → range-5bd6d72b.js} +2 -2
  29. package/dist/cjs/{responsive-format-facade-4419b4ae.js → responsive-format-facade-2cab7344.js} +3 -3
  30. package/dist/cjs/{rich-text-editor-required-rule-7d4c2973.js → rich-text-editor-required-rule-e8a922be.js} +1 -1
  31. package/dist/cjs/{split-cell-operation-19f98afb.js → split-cell-operation-bb388de6.js} +59 -24
  32. package/dist/cjs/state-border-formatter-4e5e4ed0.js +133 -0
  33. package/dist/cjs/{string-format-strategy.abstract-c65d9861.js → string-format-strategy.abstract-9a35e3b4.js} +1 -1
  34. package/dist/cjs/{string-input-formatter-slimmer-c2e04acc.js → string-input-formatter-slimmer-1018ddec.js} +4 -4
  35. package/dist/cjs/{string-mask-strategy-418fc0b8.js → string-mask-strategy-3aa17744.js} +2 -2
  36. package/dist/cjs/{style-formatter-3c9ce0e5.js → style-formatter-2226c869.js} +2 -2
  37. package/dist/cjs/{sub-state-notify-slimmer-7a4c6061.js → sub-state-notify-slimmer-b33171b0.js} +2 -2
  38. package/dist/cjs/{sub-state-observer-slimmer-f728e068.js → sub-state-observer-slimmer-b8f6f27b.js} +3 -3
  39. package/dist/cjs/{time-required-rule-ad091302.js → time-required-rule-970dfdca.js} +1 -1
  40. package/dist/cjs/tinycolor-polyfill-502efaa8.js +325 -0
  41. package/dist/cjs/{token-extension-90396de7.js → token-extension-9b213b6b.js} +212 -38
  42. package/dist/cjs/{translation-slimmer-c069ca84.js → translation-slimmer-d0c77ad2.js} +1 -1
  43. package/dist/cjs/{type-guard-d760850a.js → type-guard-3ec852d7.js} +51 -1
  44. package/dist/cjs/{ui-9e8c9732.js → ui-ae4ee13d.js} +69 -0
  45. package/dist/cjs/{valid-credit-card-number-rule-5ce8e973.js → valid-credit-card-number-rule-99d1bb34.js} +1 -1
  46. package/dist/cjs/vega-accordion.cjs.entry.js +9 -8
  47. package/dist/cjs/vega-app-footer.cjs.entry.js +2 -1
  48. package/dist/cjs/vega-app-header-button.cjs.entry.js +10 -9
  49. package/dist/cjs/vega-backdrop.cjs.entry.js +1 -1
  50. package/dist/cjs/vega-banner.cjs.entry.js +6 -5
  51. package/dist/cjs/vega-box.cjs.entry.js +7 -6
  52. package/dist/cjs/vega-brand-logo.cjs.entry.js +2 -1
  53. package/dist/cjs/vega-breadcrumb.cjs.entry.js +29 -12
  54. package/dist/cjs/vega-button-circle.cjs.entry.js +11 -10
  55. package/dist/cjs/vega-button-group_2.cjs.entry.js +104 -15
  56. package/dist/cjs/vega-button-link.cjs.entry.js +5 -5
  57. package/dist/cjs/vega-button.cjs.entry.js +10 -10
  58. package/dist/cjs/vega-calendar_4.cjs.entry.js +12 -12
  59. package/dist/cjs/vega-card.cjs.entry.js +7 -6
  60. package/dist/cjs/vega-carousel.cjs.entry.js +7 -7
  61. package/dist/cjs/vega-checkbox_2.cjs.entry.js +10 -10
  62. package/dist/cjs/vega-chip.cjs.entry.js +11 -10
  63. package/dist/cjs/vega-code-block.cjs.entry.js +16 -15
  64. package/dist/cjs/vega-color-picker.cjs.entry.js +28 -10
  65. package/dist/cjs/vega-color-swatch.cjs.entry.js +245 -0
  66. package/dist/cjs/vega-combo-box.cjs.entry.js +12 -12
  67. package/dist/cjs/vega-date-picker_2.cjs.entry.js +342 -284
  68. package/dist/cjs/vega-dialog_2.cjs.entry.js +76 -202
  69. package/dist/cjs/vega-divider.cjs.entry.js +7 -6
  70. package/dist/cjs/vega-dropdown_5.cjs.entry.js +75 -19
  71. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  72. package/dist/cjs/vega-field-label.cjs.entry.js +4 -4
  73. package/dist/cjs/vega-file-uploader.cjs.entry.js +42 -92
  74. package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -4
  75. package/dist/cjs/vega-flex.cjs.entry.js +8 -7
  76. package/dist/cjs/vega-font.cjs.entry.js +6 -5
  77. package/dist/cjs/vega-form.cjs.entry.js +12 -12
  78. package/dist/cjs/vega-grid.cjs.entry.js +6 -5
  79. package/dist/cjs/vega-icon.cjs.entry.js +6 -5
  80. package/dist/cjs/vega-image-uploader.cjs.entry.js +80 -15
  81. package/dist/cjs/vega-input-credit-card.cjs.entry.js +13 -13
  82. package/dist/cjs/vega-input-numeric.cjs.entry.js +13 -13
  83. package/dist/cjs/vega-input-passcode.cjs.entry.js +12 -12
  84. package/dist/cjs/vega-input-phone-number.cjs.entry.js +11 -11
  85. package/dist/cjs/vega-input-range.cjs.entry.js +10 -10
  86. package/dist/cjs/vega-input-select.cjs.entry.js +52 -17
  87. package/dist/cjs/vega-input.cjs.entry.js +17 -14
  88. package/dist/cjs/{vega-internal-event-id-a1837fa2.js → vega-internal-event-id-87014e4f.js} +2 -0
  89. package/dist/cjs/vega-item-toggle.cjs.entry.js +4 -4
  90. package/dist/cjs/vega-left-nav_5.cjs.entry.js +122 -15
  91. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +4 -4
  92. package/dist/cjs/vega-page-notification_2.cjs.entry.js +2 -2
  93. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +5 -5
  94. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +26 -10
  95. package/dist/cjs/vega-pagination.cjs.entry.js +48 -24
  96. package/dist/cjs/vega-popover_2.cjs.entry.js +14 -13
  97. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +72 -17
  98. package/dist/cjs/vega-radio_2.cjs.entry.js +13 -13
  99. package/dist/cjs/vega-rich-text-content.cjs.entry.js +104 -22
  100. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +36 -24
  101. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +15 -14
  102. package/dist/cjs/vega-section-title.cjs.entry.js +21 -3
  103. package/dist/cjs/vega-segment-control.cjs.entry.js +4 -4
  104. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +12 -12
  105. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +11 -11
  106. package/dist/cjs/vega-sidenav_3.cjs.entry.js +10 -10
  107. package/dist/cjs/vega-signature-capture.cjs.entry.js +13 -12
  108. package/dist/cjs/vega-stepper.cjs.entry.js +11 -11
  109. package/dist/cjs/vega-tab-group_2.cjs.entry.js +5 -5
  110. package/dist/cjs/vega-table_11.cjs.entry.js +436 -289
  111. package/dist/cjs/vega-text.cjs.entry.js +7 -3
  112. package/dist/cjs/vega-textarea.cjs.entry.js +9 -9
  113. package/dist/cjs/vega-time-picker_2.cjs.entry.js +16 -16
  114. package/dist/cjs/vega-toggle-switch.cjs.entry.js +8 -8
  115. package/dist/cjs/vega-tooltip_2.cjs.entry.js +11 -10
  116. package/dist/cjs/vega.cjs.js +15 -14
  117. package/dist/cjs/{wait-for-component-did-render-b6aba2de.js → wait-for-component-did-render-16863a21.js} +2 -2
  118. package/dist/collection/collection-manifest.json +6 -0
  119. package/dist/collection/components/vega-banner/slimmers/renderers/vega-banner-renderer.js +1 -0
  120. package/dist/collection/components/vega-banner/vega-banner.css +36 -0
  121. package/dist/collection/components/vega-box/vega-box.js +1 -1
  122. package/dist/collection/components/vega-breadcrumb/slimmers/renderers/vega-breadcrumb-item-renderer.js +9 -6
  123. package/dist/collection/components/vega-breadcrumb/slimmers/renderers/vega-breadcrumb-renderer.js +4 -0
  124. package/dist/collection/components/vega-breadcrumb/vega-breadcrumb.css +6 -0
  125. package/dist/collection/components/vega-breadcrumb/vega-breadcrumb.js +31 -0
  126. package/dist/collection/components/vega-button/vega-button.css +4 -0
  127. package/dist/collection/components/vega-button-group/slimmers/controllers/vega-button-group-all-items-disabled-controller.js +64 -0
  128. package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/controllers/vega-button-group-item-sub-state-controller.js +7 -0
  129. package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.js +6 -2
  130. package/dist/collection/components/vega-button-group/vega-button-group-item/vega-button-group-item.js +4 -2
  131. package/dist/collection/components/vega-button-group/vega-button-group.js +20 -1
  132. package/dist/collection/components/vega-card/vega-card.css +157 -0
  133. package/dist/collection/components/vega-card/vega-card.js +1 -1
  134. package/dist/collection/components/vega-chip/vega-chip.js +26 -1
  135. package/dist/collection/components/vega-color-picker/vega-color-picker.css +0 -1
  136. package/dist/collection/components/vega-color-picker/vega-color-picker.js +40 -1
  137. package/dist/collection/components/vega-color-swatch/slimmers/renderers/vega-color-swatch-renderer.js +127 -0
  138. package/dist/collection/components/vega-color-swatch/vega-color-swatch.css +155 -0
  139. package/dist/collection/components/vega-color-swatch/vega-color-swatch.js +314 -0
  140. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-current-period-controller.js +5 -10
  141. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-is-dual-months-controller.js +64 -0
  142. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.js +3 -6
  143. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +3 -11
  144. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +2 -2
  145. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +4 -5
  146. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +13 -15
  147. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +41 -2
  148. package/dist/collection/components/vega-dialog/vega-dialog.js +1 -1
  149. package/dist/collection/components/vega-divider/slimmers/controllers/vega-divider-size-controller.js +1 -1
  150. package/dist/collection/components/vega-divider/vega-divider.css +157 -0
  151. package/dist/collection/components/vega-divider/vega-divider.js +1 -1
  152. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +37 -1
  153. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.js +4 -1
  154. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.js +7 -0
  155. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +5 -1
  156. package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.js +2 -1
  157. package/dist/collection/components/vega-dropdown/vega-dropdown.js +38 -0
  158. package/dist/collection/components/vega-file-uploader/vega-file-uploader.js +2 -2
  159. package/dist/collection/components/vega-flex/vega-flex.css +157 -0
  160. package/dist/collection/components/vega-flex/vega-flex.js +1 -1
  161. package/dist/collection/components/vega-image-uploader/slimmers/renderers/vega-image-uploader-default-content-renderer.js +45 -1
  162. package/dist/collection/components/vega-image-uploader/slimmers/renderers/vega-image-uploader-preview-content-renderer.js +16 -1
  163. package/dist/collection/components/vega-image-uploader/vega-image-uploader.js +5 -0
  164. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-renderer.js +4 -1
  165. package/dist/collection/components/vega-input/vega-input.js +25 -0
  166. package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +17 -4
  167. package/dist/collection/components/vega-input-select/vega-input-select.js +76 -0
  168. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.js +0 -4
  169. package/dist/collection/components/vega-modal/slimmers/renderers/vega-modal-renderer.js +31 -21
  170. package/dist/collection/components/vega-modal/vega-modal.css +2685 -9
  171. package/dist/collection/components/vega-modal/vega-modal.js +75 -5
  172. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.js +85 -2
  173. package/dist/collection/components/vega-nav/vega-left-nav/vega-left-nav.js +23 -0
  174. package/dist/collection/components/vega-pagination/constants/page-size.js +2 -0
  175. package/dist/collection/components/vega-pagination/internal/vega-pagination-page-size-selector.js +11 -7
  176. package/dist/collection/components/vega-pagination/slimmers/controllers/vega-pagination-page-size-observer-controller.js +11 -1
  177. package/dist/collection/components/vega-pagination/utils/page-size-option-utils.js +57 -0
  178. package/dist/collection/components/vega-pagination/vega-pagination-page-size-selector-mobile/slimmers/renderers/page-size-selector-mobile-dropdown-renderer.js +15 -5
  179. package/dist/collection/components/vega-pagination/vega-pagination-page-size-selector-mobile/vega-pagination-page-size-selector-mobile.js +39 -3
  180. package/dist/collection/components/vega-pagination/vega-pagination.js +32 -11
  181. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-direction-controller.js +34 -3
  182. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-step-controller.js +10 -2
  183. package/dist/collection/components/vega-progress-tracker/slimmers/renderers/vega-progress-tracker-renderer.js +4 -3
  184. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +37 -0
  185. package/dist/collection/components/vega-rich-text-editor/constants/constant.js +20 -0
  186. package/dist/collection/components/vega-rich-text-editor/dto/annotations/image-annotation.js +1 -0
  187. package/dist/collection/components/vega-rich-text-editor/dto/annotations/inline-html-annotation.js +12 -0
  188. package/dist/collection/components/vega-rich-text-editor/dto/annotations/link-group-annotation.js +8 -2
  189. package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +15 -4
  190. package/dist/collection/components/vega-rich-text-editor/dto/blocks/code-block.js +6 -2
  191. package/dist/collection/components/vega-rich-text-editor/dto/blocks/html-block.js +9 -15
  192. package/dist/collection/components/vega-rich-text-editor/dto/blocks/image-block.js +3 -3
  193. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-block.js +3 -3
  194. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +3 -7
  195. package/dist/collection/components/vega-rich-text-editor/dto/blocks/text-block.js +50 -9
  196. package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +25 -6
  197. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/code-block/code-block-filter-styles-strategy.js +39 -0
  198. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/code-block/code-node-filter-styles-strategy.js +47 -0
  199. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy-registry.js +64 -0
  200. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy.abstract.js +147 -14
  201. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/image-node/image-filter-styles-strategy.js +26 -3
  202. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-block-filter-styles-strategy.js +24 -0
  203. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-heading-item-block-filter-styles-strategy.js +29 -0
  204. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-item-block-filter-styles-strategy.js +39 -1
  205. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-title-item-block-filter-styles-strategy.js +29 -0
  206. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/predicate.js +94 -0
  207. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-block/heading-filter-styles-strategy.js +15 -0
  208. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-block/paragraph-filter-styles-strategy.js +48 -0
  209. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-block/title-filter-styles-strategy.js +16 -0
  210. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/code-filter-styles-strategy.js +32 -3
  211. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/link-filter-styles-strategy.js +42 -3
  212. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/title-heading-node-filter-styles-strategy.js +108 -0
  213. package/dist/collection/components/vega-rich-text-editor/dto/nodes/code-block-node.js +7 -2
  214. package/dist/collection/components/vega-rich-text-editor/dto/nodes/image-node.js +2 -2
  215. package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +15 -4
  216. package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +84 -14
  217. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.js +61 -6
  218. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/text-block-renderer.js +16 -0
  219. package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.js +14 -3
  220. package/dist/collection/components/vega-rich-text-editor/dto/setup.js +36 -6
  221. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +10 -0
  222. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +9 -3
  223. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-annotation.js +17 -1
  224. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-caption-annotation.js +17 -18
  225. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-cell-annotation.js +19 -0
  226. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-block.js +3 -3
  227. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-body-block.js +3 -3
  228. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-caption-block.js +21 -4
  229. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-cell-block.js +3 -3
  230. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-head-block.js +3 -3
  231. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-head-cell-block.js +3 -3
  232. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-row-block.js +3 -3
  233. package/dist/collection/components/vega-rich-text-editor/extensions/table/element-to-dto-strategies/caption-to-caption-block-strategy.js +2 -1
  234. package/dist/collection/components/vega-rich-text-editor/extensions/table/element-to-dto-strategies/td-to-table-cell-block-strategy.js +2 -2
  235. package/dist/collection/components/vega-rich-text-editor/extensions/table/filter-styles-strategies/table-block/table-block-filter-styles-strategy.js +39 -0
  236. package/dist/collection/components/vega-rich-text-editor/extensions/table/filter-styles-strategies/table-caption/table-caption-filter-styles-strategy.js +39 -0
  237. package/dist/collection/components/vega-rich-text-editor/extensions/table/filter-styles-strategies/table-cell/table-cell-filter-styles-strategy.js +63 -0
  238. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +7 -0
  239. package/dist/collection/components/vega-rich-text-editor/helpers/utils.js +24 -0
  240. package/dist/collection/components/vega-rich-text-editor/public-api.js +2 -0
  241. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/custom-style-annotation-handler.js +2 -25
  242. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/html-element-to-annotation-generator.js +8 -2
  243. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/inline-html-annotation-handler.js +30 -53
  244. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/link-annotation-handler.js +2 -1
  245. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/text-style-annotation-handler.js +2 -1
  246. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.js +85 -17
  247. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/element-to-dto-strategy-processor.js +12 -5
  248. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/html-block-strategy.js +95 -43
  249. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/inline-element-to-text-node-strategy.js +1 -2
  250. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/predicate.js +29 -0
  251. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/strategy-tags.js +142 -0
  252. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.js +1 -0
  253. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.js +12 -2
  254. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +1 -1
  255. package/dist/collection/components/vega-section-title/slimmers/renderers/vega-section-title-renderer.js +8 -2
  256. package/dist/collection/components/vega-section-title/vega-section-title.css +35 -0
  257. package/dist/collection/components/vega-section-title/vega-section-title.js +64 -0
  258. package/dist/collection/components/vega-stepper/vega-stepper.css +15 -0
  259. package/dist/collection/components/vega-stepper/vega-stepper.js +2 -1
  260. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-render-input-controller.js +25 -2
  261. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.js +28 -1
  262. package/dist/collection/components/vega-table/vega-table-cell/vega-table-cell.js +12 -10
  263. package/dist/collection/components/vega-table/vega-table-head-cell/vega-table-head-cell.js +14 -12
  264. package/dist/collection/components/vega-table/vega-table-head-row/slimmers/renderers/vega-table-head-row-renderer.js +5 -4
  265. package/dist/collection/components/vega-table/vega-table-head-row/vega-table-head-row.js +8 -1
  266. package/dist/collection/components/vega-text/slimmers/renderers/vega-text-tooltip-renderer.js +6 -2
  267. package/dist/collection/components/vega-text/vega-text.js +1 -1
  268. package/dist/collection/components/vega-tooltip/slimmers/controllers/vega-tooltip-element-appender-controller.js +1 -0
  269. package/dist/collection/components/vega-tooltip/vega-tooltip-content-box/vega-tooltip-content-box.css +1 -0
  270. package/dist/collection/components/vega-tooltip/vega-tooltip-content-box/vega-tooltip-content-box.js +1 -1
  271. package/dist/collection/components/vega-tooltip/vega-tooltip.js +1 -1
  272. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +1 -0
  273. package/dist/collection/helpers/event-manager/event-id/vega-internal-event-id.js +1 -0
  274. package/dist/collection/helpers/formatter/responsive-map-formatter/responsive-margin-formatter.js +3 -3
  275. package/dist/collection/helpers/slimmers/aria-dialog-focusable-trap-slimmer.js +13 -68
  276. package/dist/collection/{components/vega-file-uploader/slimmers/controllers/vega-file-uploader-drop-file-filter-controller.js → helpers/slimmers/drop-file-accept-filter-slimmer.js} +13 -5
  277. package/dist/collection/helpers/slimmers/vega-table-child-render-input-consumer-slimmer.js +96 -0
  278. package/dist/collection/helpers/translation/locales/en.js +3 -0
  279. package/dist/collection/types/type-guard.js +47 -0
  280. package/dist/collection/utils/ui.js +68 -0
  281. package/dist/esm/{app-globals-e77015e3.js → app-globals-0b7e8b50.js} +7 -7
  282. package/dist/esm/{aria-dialog-focusable-trap-slimmer-5a2f92be.js → aria-dialog-focusable-trap-slimmer-853a91de.js} +15 -70
  283. package/dist/esm/{child-nodes-event-prevent-slimmer-2ecc3e1f.js → child-nodes-event-prevent-slimmer-9c24d4fc.js} +1 -1
  284. package/dist/esm/{child-nodes-notify-observer-slimmer-b7f0e419.js → child-nodes-notify-observer-slimmer-a8cb19cf.js} +1 -1
  285. package/dist/esm/{code-block-7d6f231b.js → code-block-b8be290a.js} +798 -64
  286. package/dist/esm/{component-value-history-controller-slimmer.abstract-acf65b17.js → component-value-history-controller-slimmer.abstract-10ccf8e6.js} +6 -6
  287. package/dist/esm/{content-state-084cd705.js → content-state-72b513d1.js} +959 -456
  288. package/dist/esm/{dark-mode-style-controller-82e5c1c6.js → dark-mode-style-controller-e9a6b097.js} +1 -321
  289. package/dist/esm/{date-required-rule-29608215.js → date-required-rule-891a6a57.js} +1 -1
  290. package/dist/esm/{design-token-edcd787b.js → design-token-59d07aa2.js} +6 -130
  291. package/dist/esm/{dom-node-subject-observer-factory-cea9248d.js → dom-node-subject-observer-factory-aca0116e.js} +1 -1
  292. package/dist/esm/drop-file-accept-filter-slimmer-ad759e4a.js +62 -0
  293. package/dist/esm/{element-appender-slimmer-08ec429b.js → element-appender-slimmer-5aca1bca.js} +5 -5
  294. package/dist/esm/{event-emit-slimmer-4fba1b35.js → event-emit-slimmer-32da9d90.js} +2 -2
  295. package/dist/esm/{form-field-controller-slimmer-8dd39707.js → form-field-controller-slimmer-899864a8.js} +5 -5
  296. package/dist/esm/{image-annotation-action-a6b33a81.js → image-annotation-action-ebd6c421.js} +4 -4
  297. package/dist/esm/index-090d31ca.js +4 -0
  298. package/dist/esm/index.js +20 -18
  299. package/dist/esm/{inject-keyboard-manager-7557816f.js → inject-keyboard-manager-dc1d7135.js} +1 -1
  300. package/dist/esm/{internal-translation-controller-b08aa9ab.js → internal-translation-controller-4fb104b2.js} +3 -0
  301. package/dist/esm/{internal-vega-event-manager-59f5bd47.js → internal-vega-event-manager-8a657bac.js} +1 -0
  302. package/dist/esm/{keyboard-manager-1846c6a5.js → keyboard-manager-6ea9968b.js} +2 -2
  303. package/dist/esm/{keyboard-manager-slimmer-1ae0aa4d.js → keyboard-manager-slimmer-7eed4734.js} +1 -1
  304. package/dist/esm/loader.js +15 -14
  305. package/dist/esm/{month-view-generator-b700ed08.js → month-view-generator-aaa27fce.js} +1 -1
  306. package/dist/esm/page-size-option-utils-50afc81a.js +61 -0
  307. package/dist/esm/{public-rules-fe2c7934.js → public-rules-f2005e11.js} +12 -11
  308. package/dist/esm/{range-00afe462.js → range-ed532278.js} +2 -2
  309. package/dist/esm/{responsive-format-facade-37d4d850.js → responsive-format-facade-e9926018.js} +3 -3
  310. package/dist/esm/{rich-text-editor-required-rule-6487ec94.js → rich-text-editor-required-rule-b559cf1a.js} +1 -1
  311. package/dist/esm/{split-cell-operation-9445e642.js → split-cell-operation-5587f594.js} +59 -24
  312. package/dist/esm/state-border-formatter-be51463d.js +129 -0
  313. package/dist/esm/{string-format-strategy.abstract-ec6d627b.js → string-format-strategy.abstract-0157b3c5.js} +1 -1
  314. package/dist/esm/{string-input-formatter-slimmer-959dff7a.js → string-input-formatter-slimmer-33ed3478.js} +4 -4
  315. package/dist/esm/{string-mask-strategy-49be41f0.js → string-mask-strategy-b58891b5.js} +2 -2
  316. package/dist/esm/{style-formatter-ad0b2bac.js → style-formatter-9662ae88.js} +2 -2
  317. package/dist/esm/{sub-state-notify-slimmer-ee8c417b.js → sub-state-notify-slimmer-1f907173.js} +2 -2
  318. package/dist/esm/{sub-state-observer-slimmer-4d30fa5c.js → sub-state-observer-slimmer-090c500a.js} +3 -3
  319. package/dist/esm/{time-required-rule-414b1590.js → time-required-rule-a9dc8473.js} +1 -1
  320. package/dist/esm/tinycolor-polyfill-7be0eb93.js +322 -0
  321. package/dist/esm/{token-extension-600b1c88.js → token-extension-9d717a35.js} +212 -38
  322. package/dist/esm/{translation-slimmer-35b1d0fa.js → translation-slimmer-4faae5a3.js} +1 -1
  323. package/dist/esm/{type-guard-23a08026.js → type-guard-152070e9.js} +49 -2
  324. package/dist/esm/{ui-ba5a4758.js → ui-b7600a48.js} +69 -1
  325. package/dist/esm/{valid-credit-card-number-rule-60abddac.js → valid-credit-card-number-rule-a7907cb7.js} +1 -1
  326. package/dist/esm/vega-accordion.entry.js +9 -8
  327. package/dist/esm/vega-app-footer.entry.js +2 -1
  328. package/dist/esm/vega-app-header-button.entry.js +10 -9
  329. package/dist/esm/vega-backdrop.entry.js +1 -1
  330. package/dist/esm/vega-banner.entry.js +6 -5
  331. package/dist/esm/vega-box.entry.js +7 -6
  332. package/dist/esm/vega-brand-logo.entry.js +2 -1
  333. package/dist/esm/vega-breadcrumb.entry.js +29 -12
  334. package/dist/esm/vega-button-circle.entry.js +11 -10
  335. package/dist/esm/vega-button-group_2.entry.js +104 -15
  336. package/dist/esm/vega-button-link.entry.js +5 -5
  337. package/dist/esm/vega-button.entry.js +10 -10
  338. package/dist/esm/vega-calendar_4.entry.js +12 -12
  339. package/dist/esm/vega-card.entry.js +7 -6
  340. package/dist/esm/vega-carousel.entry.js +7 -7
  341. package/dist/esm/vega-checkbox_2.entry.js +10 -10
  342. package/dist/esm/vega-chip.entry.js +11 -10
  343. package/dist/esm/vega-code-block.entry.js +16 -15
  344. package/dist/esm/vega-color-picker.entry.js +28 -10
  345. package/dist/esm/vega-color-swatch.entry.js +241 -0
  346. package/dist/esm/vega-combo-box.entry.js +12 -12
  347. package/dist/esm/vega-date-picker_2.entry.js +342 -284
  348. package/dist/esm/vega-dialog_2.entry.js +76 -202
  349. package/dist/esm/vega-divider.entry.js +7 -6
  350. package/dist/esm/vega-dropdown_5.entry.js +76 -20
  351. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  352. package/dist/esm/vega-field-label.entry.js +4 -4
  353. package/dist/esm/vega-file-uploader.entry.js +42 -92
  354. package/dist/esm/vega-flag-icon.entry.js +5 -4
  355. package/dist/esm/vega-flex.entry.js +8 -7
  356. package/dist/esm/vega-font.entry.js +6 -5
  357. package/dist/esm/vega-form.entry.js +12 -12
  358. package/dist/esm/vega-grid.entry.js +6 -5
  359. package/dist/esm/vega-icon.entry.js +6 -5
  360. package/dist/esm/vega-image-uploader.entry.js +80 -15
  361. package/dist/esm/vega-input-credit-card.entry.js +13 -13
  362. package/dist/esm/vega-input-numeric.entry.js +13 -13
  363. package/dist/esm/vega-input-passcode.entry.js +12 -12
  364. package/dist/esm/vega-input-phone-number.entry.js +11 -11
  365. package/dist/esm/vega-input-range.entry.js +10 -10
  366. package/dist/esm/vega-input-select.entry.js +52 -17
  367. package/dist/esm/vega-input.entry.js +17 -14
  368. package/dist/esm/{vega-internal-event-id-70bd893d.js → vega-internal-event-id-194bac82.js} +2 -1
  369. package/dist/esm/vega-item-toggle.entry.js +4 -4
  370. package/dist/esm/vega-left-nav_5.entry.js +122 -15
  371. package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
  372. package/dist/esm/vega-page-notification_2.entry.js +2 -2
  373. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +5 -5
  374. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +26 -10
  375. package/dist/esm/vega-pagination.entry.js +48 -24
  376. package/dist/esm/vega-popover_2.entry.js +14 -13
  377. package/dist/esm/vega-progress-tracker_2.entry.js +72 -17
  378. package/dist/esm/vega-radio_2.entry.js +13 -13
  379. package/dist/esm/vega-rich-text-content.entry.js +104 -22
  380. package/dist/esm/vega-rich-text-editor_4.entry.js +36 -24
  381. package/dist/esm/vega-rich-text-table-properties_3.entry.js +15 -14
  382. package/dist/esm/vega-section-title.entry.js +21 -3
  383. package/dist/esm/vega-segment-control.entry.js +4 -4
  384. package/dist/esm/vega-selection-chip_2.entry.js +12 -12
  385. package/dist/esm/vega-selection-tile_2.entry.js +11 -11
  386. package/dist/esm/vega-sidenav_3.entry.js +10 -10
  387. package/dist/esm/vega-signature-capture.entry.js +13 -12
  388. package/dist/esm/vega-stepper.entry.js +11 -11
  389. package/dist/esm/vega-tab-group_2.entry.js +5 -5
  390. package/dist/esm/vega-table_11.entry.js +436 -289
  391. package/dist/esm/vega-text.entry.js +7 -3
  392. package/dist/esm/vega-textarea.entry.js +9 -9
  393. package/dist/esm/vega-time-picker_2.entry.js +16 -16
  394. package/dist/esm/vega-toggle-switch.entry.js +8 -8
  395. package/dist/esm/vega-tooltip_2.entry.js +11 -10
  396. package/dist/esm/vega.js +15 -14
  397. package/dist/esm/{wait-for-component-did-render-03e7ccb2.js → wait-for-component-did-render-30cde59c.js} +2 -2
  398. package/dist/sri/vega-sri-manifest.json +389 -369
  399. package/dist/types/components/vega-breadcrumb/slimmers/renderers/vega-breadcrumb-item-renderer.d.ts +1 -0
  400. package/dist/types/components/vega-breadcrumb/slimmers/renderers/vega-breadcrumb-renderer.d.ts +1 -0
  401. package/dist/types/components/vega-breadcrumb/vega-breadcrumb.d.ts +10 -0
  402. package/dist/types/components/vega-button-group/slimmers/controllers/vega-button-group-all-items-disabled-controller.d.ts +21 -0
  403. package/dist/types/components/vega-button-group/vega-button-group-item/slimmers/controllers/vega-button-group-item-sub-state-controller.d.ts +1 -0
  404. package/dist/types/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.d.ts +1 -0
  405. package/dist/types/components/vega-button-group/vega-button-group-item/vega-button-group-item.d.ts +1 -0
  406. package/dist/types/components/vega-button-group/vega-button-group.d.ts +5 -0
  407. package/dist/types/components/vega-chip/vega-chip.d.ts +9 -0
  408. package/dist/types/components/vega-color-picker/vega-color-picker.d.ts +14 -0
  409. package/dist/types/components/vega-color-swatch/slimmers/renderers/vega-color-swatch-renderer.d.ts +48 -0
  410. package/dist/types/components/vega-color-swatch/types.d.ts +5 -0
  411. package/dist/types/components/vega-color-swatch/vega-color-swatch.d.ts +86 -0
  412. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-current-period-controller.d.ts +1 -6
  413. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-is-dual-months-controller.d.ts +28 -0
  414. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.d.ts +1 -2
  415. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +1 -2
  416. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.d.ts +1 -1
  417. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +1 -1
  418. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +12 -0
  419. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +12 -0
  420. package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.d.ts +1 -0
  421. package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.d.ts +1 -0
  422. package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.d.ts +1 -0
  423. package/dist/types/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.d.ts +4 -0
  424. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +10 -0
  425. package/dist/types/components/vega-file-uploader/vega-file-uploader.d.ts +2 -2
  426. package/dist/types/components/vega-image-uploader/slimmers/renderers/vega-image-uploader-default-content-renderer.d.ts +25 -0
  427. package/dist/types/components/vega-image-uploader/slimmers/renderers/vega-image-uploader-preview-content-renderer.d.ts +10 -0
  428. package/dist/types/components/vega-image-uploader/vega-image-uploader.d.ts +2 -0
  429. package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-renderer.d.ts +1 -0
  430. package/dist/types/components/vega-input/types.d.ts +5 -0
  431. package/dist/types/components/vega-input/vega-input.d.ts +17 -1
  432. package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.d.ts +3 -0
  433. package/dist/types/components/vega-input-select/types.d.ts +14 -0
  434. package/dist/types/components/vega-input-select/vega-input-select.d.ts +19 -1
  435. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.d.ts +0 -1
  436. package/dist/types/components/vega-modal/slimmers/renderers/vega-modal-renderer.d.ts +4 -0
  437. package/dist/types/components/vega-modal/vega-modal.d.ts +24 -3
  438. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.d.ts +17 -0
  439. package/dist/types/components/vega-pagination/constants/page-size.d.ts +2 -0
  440. package/dist/types/components/vega-pagination/internal/vega-pagination-page-size-selector.d.ts +3 -2
  441. package/dist/types/components/vega-pagination/slimmers/controllers/vega-pagination-page-size-observer-controller.d.ts +2 -0
  442. package/dist/types/components/vega-pagination/types.d.ts +15 -0
  443. package/dist/types/components/vega-pagination/utils/page-size-option-utils.d.ts +42 -0
  444. package/dist/types/components/vega-pagination/vega-pagination-page-size-selector-mobile/slimmers/renderers/page-size-selector-mobile-dropdown-renderer.d.ts +2 -0
  445. package/dist/types/components/vega-pagination/vega-pagination-page-size-selector-mobile/vega-pagination-page-size-selector-mobile.d.ts +9 -2
  446. package/dist/types/components/vega-pagination/vega-pagination.d.ts +8 -3
  447. package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-direction-controller.d.ts +14 -2
  448. package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-step-controller.d.ts +1 -0
  449. package/dist/types/components/vega-progress-tracker/slimmers/renderers/vega-progress-tracker-renderer.d.ts +1 -1
  450. package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +16 -0
  451. package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +5 -0
  452. package/dist/types/components/vega-rich-text-editor/dto/annotations/image-annotation.d.ts +1 -0
  453. package/dist/types/components/vega-rich-text-editor/dto/annotations/inline-html-annotation.d.ts +14 -0
  454. package/dist/types/components/vega-rich-text-editor/dto/annotations/link-group-annotation.d.ts +8 -2
  455. package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +4 -2
  456. package/dist/types/components/vega-rich-text-editor/dto/blocks/code-block.d.ts +2 -2
  457. package/dist/types/components/vega-rich-text-editor/dto/blocks/html-block.d.ts +1 -11
  458. package/dist/types/components/vega-rich-text-editor/dto/blocks/image-block.d.ts +1 -1
  459. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-block.d.ts +1 -1
  460. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +1 -1
  461. package/dist/types/components/vega-rich-text-editor/dto/blocks/text-block.d.ts +15 -2
  462. package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +9 -3
  463. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/code-block/code-block-filter-styles-strategy.d.ts +27 -0
  464. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/code-block/code-node-filter-styles-strategy.d.ts +27 -0
  465. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy-registry.d.ts +27 -1
  466. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy.abstract.d.ts +92 -8
  467. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/image-node/image-filter-styles-strategy.d.ts +21 -3
  468. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-block-filter-styles-strategy.d.ts +15 -0
  469. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-heading-item-block-filter-styles-strategy.d.ts +19 -0
  470. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-item-block-filter-styles-strategy.d.ts +25 -0
  471. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-title-item-block-filter-styles-strategy.d.ts +19 -0
  472. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/predicate.d.ts +72 -0
  473. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-block/heading-filter-styles-strategy.d.ts +10 -0
  474. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-block/paragraph-filter-styles-strategy.d.ts +34 -0
  475. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-block/title-filter-styles-strategy.d.ts +11 -0
  476. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/code-filter-styles-strategy.d.ts +25 -2
  477. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/link-filter-styles-strategy.d.ts +24 -4
  478. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/title-heading-node-filter-styles-strategy.d.ts +62 -0
  479. package/dist/types/components/vega-rich-text-editor/dto/nodes/code-block-node.d.ts +7 -3
  480. package/dist/types/components/vega-rich-text-editor/dto/nodes/image-node.d.ts +1 -1
  481. package/dist/types/components/vega-rich-text-editor/dto/nodes/node.abstract.d.ts +5 -3
  482. package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +43 -4
  483. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.d.ts +25 -0
  484. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/text-block-renderer.d.ts +5 -0
  485. package/dist/types/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.d.ts +12 -0
  486. package/dist/types/components/vega-rich-text-editor/extensions/extension.abstract.d.ts +8 -0
  487. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-annotation.d.ts +8 -0
  488. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-caption-annotation.d.ts +7 -1
  489. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-cell-annotation.d.ts +9 -1
  490. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-block.d.ts +1 -1
  491. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-body-block.d.ts +1 -1
  492. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-caption-block.d.ts +5 -2
  493. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-cell-block.d.ts +1 -1
  494. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-head-block.d.ts +1 -1
  495. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-head-cell-block.d.ts +1 -1
  496. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-row-block.d.ts +1 -1
  497. package/dist/types/components/vega-rich-text-editor/extensions/table/filter-styles-strategies/table-block/table-block-filter-styles-strategy.d.ts +29 -0
  498. package/dist/types/components/vega-rich-text-editor/extensions/table/filter-styles-strategies/table-caption/table-caption-filter-styles-strategy.d.ts +29 -0
  499. package/dist/types/components/vega-rich-text-editor/extensions/table/filter-styles-strategies/table-cell/table-cell-filter-styles-strategy.d.ts +46 -0
  500. package/dist/types/components/vega-rich-text-editor/helpers/utils.d.ts +8 -0
  501. package/dist/types/components/vega-rich-text-editor/interface.d.ts +27 -5
  502. package/dist/types/components/vega-rich-text-editor/public-api.d.ts +1 -0
  503. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/custom-style-annotation-handler.d.ts +0 -7
  504. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/html-element-to-annotation-generator.d.ts +1 -1
  505. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/inline-html-annotation-handler.d.ts +11 -1
  506. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.d.ts +43 -7
  507. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/element-to-dto-strategy-processor.d.ts +8 -3
  508. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/html-block-strategy.d.ts +34 -1
  509. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/predicate.d.ts +21 -0
  510. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/strategy-tags.d.ts +83 -0
  511. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.d.ts +6 -0
  512. package/dist/types/components/vega-section-title/slimmers/renderers/vega-section-title-renderer.d.ts +2 -0
  513. package/dist/types/components/vega-section-title/types.d.ts +1 -0
  514. package/dist/types/components/vega-section-title/vega-section-title.d.ts +14 -0
  515. package/dist/types/components/vega-table/slimmers/controllers/vega-table-render-input-controller.d.ts +8 -1
  516. package/dist/types/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.d.ts +5 -1
  517. package/dist/types/components/vega-table/vega-table-cell/vega-table-cell.d.ts +5 -0
  518. package/dist/types/components/vega-table/vega-table-head-cell/vega-table-head-cell.d.ts +5 -0
  519. package/dist/types/components/vega-table/vega-table-head-row/slimmers/renderers/vega-table-head-row-renderer.d.ts +1 -0
  520. package/dist/types/components/vega-table/vega-table-head-row/vega-table-head-row.d.ts +4 -0
  521. package/dist/types/components/vega-text/types.d.ts +5 -3
  522. package/dist/types/components/vega-tooltip/vega-tooltip-content-box/vega-tooltip-content-box.d.ts +4 -0
  523. package/dist/types/components/vega-tooltip/vega-tooltip.d.ts +4 -0
  524. package/dist/types/components.d.ts +247 -13
  525. package/dist/types/helpers/event-manager/event-id/vega-internal-event-id.d.ts +1 -0
  526. package/dist/types/helpers/formatter/string-formatter/string-mask-strategy.d.ts +56 -3
  527. package/dist/types/helpers/slimmers/aria-dialog-focusable-trap-slimmer.d.ts +4 -12
  528. package/dist/types/helpers/slimmers/drop-file-accept-filter-slimmer.d.ts +29 -0
  529. package/dist/types/helpers/slimmers/vega-table-child-render-input-consumer-slimmer.d.ts +48 -0
  530. package/dist/types/helpers/translation/interface.d.ts +4 -1
  531. package/dist/types/types/components.type.d.ts +10 -0
  532. package/dist/types/types/public-api.d.ts +3 -1
  533. package/dist/types/types/type-guard.d.ts +29 -1
  534. package/dist/types/types/ui.type.d.ts +11 -1
  535. package/dist/types/utils/ui.d.ts +14 -0
  536. package/dist/vega/index.esm.js +1 -1
  537. package/dist/vega/{p-7618dde4.js → p-02467b61.js} +1 -1
  538. package/dist/vega/p-075bb809.entry.js +1 -0
  539. package/dist/vega/p-085de8fc.js +1 -0
  540. package/dist/vega/p-0915a8d3.entry.js +1 -0
  541. package/dist/vega/p-0caf52e0.js +1 -0
  542. package/dist/vega/{p-19ad4f15.entry.js → p-0dbd7723.entry.js} +1 -1
  543. package/dist/vega/{p-cf70c57d.js → p-103d20f5.js} +1 -1
  544. package/dist/vega/p-115d6053.entry.js +1 -0
  545. package/dist/vega/p-116e3963.js +1 -0
  546. package/dist/vega/p-14de7ba0.entry.js +1 -0
  547. package/dist/vega/p-19a30f98.entry.js +1 -0
  548. package/dist/vega/{p-90137c68.entry.js → p-1ca95601.entry.js} +1 -1
  549. package/dist/vega/p-1dd6ba67.js +1 -0
  550. package/dist/vega/p-1efb47fe.entry.js +1 -0
  551. package/dist/vega/p-23c840dc.entry.js +1 -0
  552. package/dist/vega/p-246eb001.entry.js +1 -0
  553. package/dist/vega/p-25ab7a33.entry.js +1 -0
  554. package/dist/vega/p-264b3309.entry.js +1 -0
  555. package/dist/vega/{p-c045e4c1.entry.js → p-280f63fa.entry.js} +1 -1
  556. package/dist/vega/p-295326ca.entry.js +1 -0
  557. package/dist/vega/p-29d31c98.entry.js +1 -0
  558. package/dist/vega/{p-382b71a3.entry.js → p-29f42c27.entry.js} +1 -1
  559. package/dist/vega/p-2b5cf2b3.js +1 -0
  560. package/dist/vega/{p-0313393d.entry.js → p-30445cd9.entry.js} +1 -1
  561. package/dist/vega/p-318f0df5.js +1 -0
  562. package/dist/vega/p-337a5e76.js +1 -0
  563. package/dist/vega/p-3505f7cc.entry.js +1 -0
  564. package/dist/vega/p-38af89b9.js +1 -0
  565. package/dist/vega/p-3fae8d3f.entry.js +1 -0
  566. package/dist/vega/{p-b696a861.js → p-42141782.js} +1 -1
  567. package/dist/vega/{p-d1ca70a1.js → p-44044ed7.js} +1 -1
  568. package/dist/vega/p-475bd8bf.entry.js +1 -0
  569. package/dist/vega/{p-df5bfbc4.entry.js → p-47611a83.entry.js} +1 -1
  570. package/dist/vega/p-4e95248c.entry.js +1 -0
  571. package/dist/vega/p-4f938ee4.entry.js +1 -0
  572. package/dist/vega/{p-f3456993.entry.js → p-513f51ec.entry.js} +1 -1
  573. package/dist/vega/{p-ba415db6.entry.js → p-51d2e0ab.entry.js} +1 -1
  574. package/dist/vega/{p-ab21fdf6.entry.js → p-58b6ac33.entry.js} +1 -1
  575. package/dist/vega/{p-7362723e.entry.js → p-596bc4f6.entry.js} +1 -1
  576. package/dist/vega/{p-70f1cf4e.entry.js → p-597588d0.entry.js} +1 -1
  577. package/dist/vega/p-5f377954.js +1 -1
  578. package/dist/vega/p-5ffdea8e.js +1 -0
  579. package/dist/vega/{p-3224e47c.js → p-6572e038.js} +1 -1
  580. package/dist/vega/{p-b5c2fff3.entry.js → p-6d95390b.entry.js} +1 -1
  581. package/dist/vega/p-6e70d3cc.js +1 -0
  582. package/dist/vega/p-6e9f832f.js +1 -0
  583. package/dist/vega/{p-c9201bf4.js → p-76063dcb.js} +1 -1
  584. package/dist/vega/p-783531cf.entry.js +1 -0
  585. package/dist/vega/{p-35386999.entry.js → p-7d85cc74.entry.js} +1 -1
  586. package/dist/vega/p-7df43192.entry.js +1 -0
  587. package/dist/vega/p-7faaa5e1.entry.js +1 -0
  588. package/dist/vega/{p-517434d4.entry.js → p-8583dd34.entry.js} +1 -1
  589. package/dist/vega/p-85abe824.entry.js +1 -0
  590. package/dist/vega/p-874bf8b2.js +1 -0
  591. package/dist/vega/p-88b6184c.entry.js +1 -0
  592. package/dist/vega/p-8aee6b74.js +1 -0
  593. package/dist/vega/{p-1557ed92.entry.js → p-8b217c7e.entry.js} +1 -1
  594. package/dist/vega/p-8da66d41.entry.js +1 -0
  595. package/dist/vega/{p-b3e40faf.js → p-956b170c.js} +1 -1
  596. package/dist/vega/{p-1c45565d.js → p-9751c801.js} +1 -1
  597. package/dist/vega/{p-7ceab8c7.entry.js → p-97f36f4e.entry.js} +1 -1
  598. package/dist/vega/p-988401c3.entry.js +1 -0
  599. package/dist/vega/{p-47ca1f69.entry.js → p-9c1a48b9.entry.js} +1 -1
  600. package/dist/vega/p-9d854d43.js +1 -0
  601. package/dist/vega/p-9dcecdd3.js +1 -0
  602. package/dist/vega/{p-612e3ded.js → p-a07c0f8c.js} +1 -1
  603. package/dist/vega/{p-576fe408.js → p-a0c3968b.js} +1 -1
  604. package/dist/vega/p-a30ae8a1.js +1 -0
  605. package/dist/vega/p-a5bd3ecd.entry.js +1 -0
  606. package/dist/vega/p-a6dbc63d.entry.js +1 -0
  607. package/dist/vega/p-aa985d73.js +1 -0
  608. package/dist/vega/{p-44c5cbb7.js → p-ab829745.js} +1 -1
  609. package/dist/vega/p-b08a70e6.entry.js +1 -0
  610. package/dist/vega/p-b19b1c08.js +1 -0
  611. package/dist/vega/p-b5497af2.entry.js +1 -0
  612. package/dist/vega/p-b7624ce4.js +1 -0
  613. package/dist/vega/p-b9386dd0.js +1 -0
  614. package/dist/vega/{p-e84b95d4.js → p-b9947846.js} +1 -1
  615. package/dist/vega/p-b9a95aca.entry.js +1 -0
  616. package/dist/vega/{p-dc9b5063.entry.js → p-bb46d8e6.entry.js} +1 -1
  617. package/dist/vega/{p-ec1d76c6.entry.js → p-c366e7f7.entry.js} +1 -1
  618. package/dist/vega/p-c36afa21.entry.js +1 -0
  619. package/dist/vega/{p-60cf2a68.js → p-c8435185.js} +1 -1
  620. package/dist/vega/{p-04e56b0c.entry.js → p-c8d41cdc.entry.js} +1 -1
  621. package/dist/vega/p-cab70b95.entry.js +1 -0
  622. package/dist/vega/p-cc18970f.entry.js +1 -0
  623. package/dist/vega/p-d320496e.entry.js +1 -0
  624. package/dist/vega/{p-89e56502.js → p-d32e83e7.js} +1 -1
  625. package/dist/vega/{p-65900dbf.entry.js → p-d456386a.entry.js} +1 -1
  626. package/dist/vega/p-d4f1f007.js +3 -0
  627. package/dist/vega/{p-82016096.js → p-d5531d3c.js} +1 -1
  628. package/dist/vega/{p-4eb282ef.entry.js → p-d7bd2470.entry.js} +1 -1
  629. package/dist/vega/p-d872beb1.entry.js +1 -0
  630. package/dist/vega/p-d9d5c693.entry.js +1 -0
  631. package/dist/vega/{p-be3517be.entry.js → p-da742a7f.entry.js} +1 -1
  632. package/dist/vega/{p-204c7d41.js → p-dd6211cd.js} +1 -1
  633. package/dist/vega/{p-f48c43f4.entry.js → p-e340d58c.entry.js} +1 -1
  634. package/dist/vega/p-e71864ff.js +1 -0
  635. package/dist/vega/{p-7912741f.entry.js → p-e7a4b760.entry.js} +1 -1
  636. package/dist/vega/{p-ffa2e3a6.entry.js → p-ea564928.entry.js} +1 -1
  637. package/dist/vega/p-eb0ebf50.entry.js +1 -0
  638. package/dist/vega/p-ebdb489c.entry.js +1 -0
  639. package/dist/vega/{p-7c2fecfd.entry.js → p-ed01657b.entry.js} +1 -1
  640. package/dist/vega/p-eda7cd76.entry.js +1 -0
  641. package/dist/vega/{p-68a531cf.js → p-edda10f7.js} +1 -1
  642. package/dist/vega/{p-2c2df248.js → p-ef59f6f0.js} +1 -1
  643. package/dist/vega/{p-1a2f92a3.entry.js → p-efc8c09e.entry.js} +1 -1
  644. package/dist/vega/p-f020738c.entry.js +1 -0
  645. package/dist/vega/{p-878851f6.js → p-f28a6074.js} +1 -1
  646. package/dist/vega/{p-07a2b42a.js → p-f7a5746b.js} +1 -1
  647. package/dist/vega/{p-9dc23325.entry.js → p-f89cf75a.entry.js} +1 -1
  648. package/dist/vega/p-fb5ea4b2.js +1 -0
  649. package/dist/vega/p-fc7ab79d.js +1 -0
  650. package/dist/vega/vega.esm.js +1 -1
  651. package/package.json +1 -1
  652. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-layout-controller.js +0 -146
  653. package/dist/types/components/vega-file-uploader/slimmers/controllers/vega-file-uploader-drop-file-filter-controller.d.ts +0 -22
  654. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-layout-controller.d.ts +0 -42
  655. package/dist/vega/p-010b5e74.js +0 -1
  656. package/dist/vega/p-01883ffc.entry.js +0 -1
  657. package/dist/vega/p-02578a59.js +0 -1
  658. package/dist/vega/p-043e685a.entry.js +0 -1
  659. package/dist/vega/p-08780df0.entry.js +0 -1
  660. package/dist/vega/p-10fa4eac.js +0 -1
  661. package/dist/vega/p-18619467.js +0 -1
  662. package/dist/vega/p-1feb4f2a.entry.js +0 -1
  663. package/dist/vega/p-203bc4db.entry.js +0 -1
  664. package/dist/vega/p-21c9e1ca.entry.js +0 -1
  665. package/dist/vega/p-22336063.js +0 -1
  666. package/dist/vega/p-224b67ff.entry.js +0 -1
  667. package/dist/vega/p-2d917e2d.entry.js +0 -1
  668. package/dist/vega/p-2e73582d.entry.js +0 -1
  669. package/dist/vega/p-334e3b02.entry.js +0 -1
  670. package/dist/vega/p-33860e54.js +0 -1
  671. package/dist/vega/p-365d21ac.entry.js +0 -1
  672. package/dist/vega/p-367d44d9.entry.js +0 -1
  673. package/dist/vega/p-3d2d267d.js +0 -1
  674. package/dist/vega/p-3f3c771a.entry.js +0 -1
  675. package/dist/vega/p-434fc427.entry.js +0 -1
  676. package/dist/vega/p-559197f8.js +0 -1
  677. package/dist/vega/p-5ae4ea20.entry.js +0 -1
  678. package/dist/vega/p-68124bc5.js +0 -1
  679. package/dist/vega/p-6af55f1c.entry.js +0 -1
  680. package/dist/vega/p-6c5250b3.js +0 -1
  681. package/dist/vega/p-6f2e5bc6.js +0 -1
  682. package/dist/vega/p-716c71e6.js +0 -1
  683. package/dist/vega/p-76b80a0c.js +0 -1
  684. package/dist/vega/p-7942c042.entry.js +0 -1
  685. package/dist/vega/p-8327635d.js +0 -1
  686. package/dist/vega/p-840ad046.entry.js +0 -1
  687. package/dist/vega/p-8ac2d165.js +0 -1
  688. package/dist/vega/p-8adf9732.entry.js +0 -1
  689. package/dist/vega/p-8b891f36.entry.js +0 -1
  690. package/dist/vega/p-9341c1a9.js +0 -1
  691. package/dist/vega/p-9390a94b.entry.js +0 -1
  692. package/dist/vega/p-9551da9c.entry.js +0 -1
  693. package/dist/vega/p-9862d1a8.entry.js +0 -1
  694. package/dist/vega/p-a4dbf2cc.js +0 -1
  695. package/dist/vega/p-a99e75a1.entry.js +0 -1
  696. package/dist/vega/p-b5a6bd0f.entry.js +0 -1
  697. package/dist/vega/p-c4e32125.entry.js +0 -1
  698. package/dist/vega/p-c5b698f6.entry.js +0 -1
  699. package/dist/vega/p-c61279a7.entry.js +0 -1
  700. package/dist/vega/p-c6d62f0d.js +0 -1
  701. package/dist/vega/p-c8feb644.entry.js +0 -1
  702. package/dist/vega/p-cc055723.entry.js +0 -1
  703. package/dist/vega/p-cca5042b.entry.js +0 -1
  704. package/dist/vega/p-cda45d2a.entry.js +0 -1
  705. package/dist/vega/p-cdf5b2f0.entry.js +0 -1
  706. package/dist/vega/p-d1494c7c.entry.js +0 -1
  707. package/dist/vega/p-d202e69d.entry.js +0 -1
  708. package/dist/vega/p-dcd18ab1.js +0 -1
  709. package/dist/vega/p-e4726dcd.entry.js +0 -1
  710. package/dist/vega/p-ea21462f.js +0 -1
  711. package/dist/vega/p-f4190826.entry.js +0 -1
  712. package/dist/vega/p-fdac91c4.entry.js +0 -1
@@ -1,11 +1,10 @@
1
- import { f as ActionHandleStrategy, d as RTETextBlock, b as RTETextNode, g as AppendChildrenAction, A as ActionHandleStrategyRegistry, T as TextStyleAnnotationAction, o as BlockUpdateTextStyleStrategy, H as HorizontalAlignmentAnnotationAction, p as BlockUpdateHorizontalAlignmentStrategy, k as ModifyContentActionType, q as BlockInsertLineBreakStrategy, r as BlockInsertLineBreakWithBlocksStrategy, t as BlockSplitWithTextNodeStrategy, u as BlockReplaceNodesStrategy, v as BlockMergeNodesStrategy, I as InsertChildrenAfterAction, m as RemoveChildrenAction, S as SyncUpSelectionAction, i as InsertChildrenBeforeAction, B as BlockAnnotation, w as BlockAnnotationTypeEnum, c as RTEBlock, x as CustomStyleAnnotation, y as CustomClassAnnotation, n as CustomAttributeAnnotation, z as RTECodeBlock, s as stateEntityRenderingRegistry, N as NodeAnnotation, D as NodeAnnotationTypeEnum, E as RTEDecoratorNode, F as NodeTypeEnum, G as CommonAnnotation, l as AnnotationAction, J as ReplaceChildNodesAction, M as ModifyContentAction, K as SplitBlockWithNodeAction, L as BlockDeleteNodeContentStrategy, U as UpdateTextAction, O as RemoveChildrenStrategy, P as BOLD_FONT_WEIGHT_KEYWORD, Q as BOLD_FONT_WEIGHT, W as RTE_TEXT_COLORS, X as RTE_DEFAULT_TEXT_COLOR, Y as ITALIC_FONT_STYLE, Z as STRIKETHROUGH_TEXT_DECORATION, _ as UNDERLINE_TEXT_DECORATION, $ as TextStyleAnnotation, a0 as HorizontalAlignmentAnnotation, a1 as CodeAnnotation, a2 as LinkGroupAnnotation, R as RTEDTOClassManager } from './code-block-7d6f231b.js';
1
+ import { g as ActionHandleStrategy, e as RTETextBlock, c as RTETextNode, h as AppendChildrenAction, A as ActionHandleStrategyRegistry, T as TextStyleAnnotationAction, q as BlockUpdateTextStyleStrategy, H as HorizontalAlignmentAnnotationAction, r as BlockUpdateHorizontalAlignmentStrategy, l as ModifyContentActionType, t as BlockInsertLineBreakStrategy, u as BlockInsertLineBreakWithBlocksStrategy, v as BlockSplitWithTextNodeStrategy, w as BlockReplaceNodesStrategy, x as BlockMergeNodesStrategy, I as InsertChildrenAfterAction, n as RemoveChildrenAction, S as SyncUpSelectionAction, j as InsertChildrenBeforeAction, B as BlockAnnotation, y as BlockAnnotationTypeEnum, d as RTEBlock, z as CustomStyleAnnotation, D as CustomClassAnnotation, o as CustomAttributeAnnotation, E as RTECodeBlock, s as stateEntityRenderingRegistry, N as NodeAnnotation, F as NodeAnnotationTypeEnum, G as RTEDecoratorNode, J as NodeTypeEnum, K as CommonAnnotation, m as AnnotationAction, L as ReplaceChildNodesAction, M as ModifyContentAction, O as SplitBlockWithNodeAction, P as HTML_VOID_TAGS, Q as BlockDeleteNodeContentStrategy, U as UpdateTextAction, W as RemoveChildrenStrategy, X as BOLD_FONT_WEIGHT_KEYWORD, Y as BOLD_FONT_WEIGHT, Z as createStyleMapFromElement, _ as RTE_TEXT_COLORS, $ as RTE_DEFAULT_TEXT_COLOR, a0 as ITALIC_FONT_STYLE, a1 as STRIKETHROUGH_TEXT_DECORATION, a2 as UNDERLINE_TEXT_DECORATION, R as RTEFilterStylesStrategyRegistry, a3 as TextStyleAnnotation, p as RTEFilterStylesStrategy, a4 as Predicate$1, a5 as HorizontalAlignmentAnnotation, a6 as CodeAnnotation, b as RTEDTOClassManager, a7 as LinkFilterStylesStrategy, a8 as CodeBlockFilterStylesStrategy, a9 as RTECodeBlockNode, aa as CodeBlockNodeFilterStylesStrategy } from './code-block-b8be290a.js';
2
2
  import { g as generateUUID } from './misc-9fdbcfbb.js';
3
- import { i as isNonNullable } from './type-guard-23a08026.js';
3
+ import { i as isNonNullable } from './type-guard-152070e9.js';
4
4
  import { C as ChangeManager } from './change-manager-6a7eb88c.js';
5
- import { d as domNodeSubjectFactory } from './dom-node-subject-observer-factory-cea9248d.js';
6
- import { c as VegaInternalUpdateRTECursorPosition, d as VegaInternalRichTextEditorFlushChanges } from './vega-internal-event-id-70bd893d.js';
7
- import { d as dashCaseToCamel } from './string-a953eafc.js';
8
- import { r as rgbToHex, i as isHTMLElement } from './ui-ba5a4758.js';
5
+ import { d as domNodeSubjectFactory } from './dom-node-subject-observer-factory-aca0116e.js';
6
+ import { c as VegaInternalUpdateRTECursorPosition, d as VegaInternalRichTextEditorFlushChanges } from './vega-internal-event-id-194bac82.js';
7
+ import { r as rgbToHex, i as isHTMLElement } from './ui-b7600a48.js';
9
8
  import { c as cleanObject } from './object-0c277f57.js';
10
9
  import { L as LogUtility } from './global-slimmer-registry-17c4efd4.js';
11
10
 
@@ -114,13 +113,9 @@ class RTEListItemBlock extends RTETextBlock {
114
113
  /**
115
114
  * @inheritDoc
116
115
  */
117
- toHtml() {
118
- const attrStr = super.generateAttributeString();
119
- return [
120
- `<li${attrStr}>`,
121
- this.children.map((node) => node.toHtml()).join(''),
122
- `</li>`,
123
- ].join('');
116
+ toHtml(options) {
117
+ const attrStr = super.generateAttributeString(options);
118
+ return [`<li${attrStr}>`, this.getChildrenHtml(options), `</li>`].join('');
124
119
  }
125
120
  /**
126
121
  * @inheritDoc
@@ -403,12 +398,12 @@ class RTEListBlock extends RTEBlock {
403
398
  /**
404
399
  * @inheritDoc
405
400
  */
406
- toHtml() {
401
+ toHtml(options) {
407
402
  const BlockTag = this.getBlockTag();
408
- const attrStr = super.generateAttributeString();
403
+ const attrStr = super.generateAttributeString(options);
409
404
  return [
410
405
  `<${BlockTag}${attrStr}>`,
411
- this.children.map((block) => block.toHtml()).join(''),
406
+ this.children.map((block) => block.toHtml(options)).join(''),
412
407
  `</${BlockTag}>`,
413
408
  ].join('');
414
409
  }
@@ -602,7 +597,7 @@ class ElementToDtoStrategyProcessor {
602
597
  const strategies = this.getElementToBlockStrategies();
603
598
  const outputs = [];
604
599
  for (let i = 0; i < elements.length; i++) {
605
- if (this.isInvalidElement(elements[i]))
600
+ if (this.isInvalidElement(elements[i], options))
606
601
  continue;
607
602
  let canHandledCount = 0;
608
603
  for (const strategy of strategies) {
@@ -629,14 +624,21 @@ class ElementToDtoStrategyProcessor {
629
624
  return outputs;
630
625
  }
631
626
  /**
632
- * Checks if the given element is valid to parse.
627
+ * Checks if the given element should be skipped during processing.
633
628
  *
634
- * @param {HTMLElement} element - The pasted element.
635
- * @returns {boolean} Is valid
629
+ * Comment nodes are always skipped. META and STYLE elements are skipped only
630
+ * in auto-match mode; in raw-HTML mode (autoMatchFormat: false) they are passed
631
+ * through so downstream strategies can decide how to handle them.
632
+ *
633
+ * @param {HTMLElement} element - The element to check.
634
+ * @param {VegaRTETransformOptions} options - Transform options.
635
+ * @returns {boolean} True when the element should be skipped.
636
636
  */
637
- isInvalidElement(element) {
637
+ isInvalidElement(element, options) {
638
638
  if (element.nodeType === Node.COMMENT_NODE)
639
639
  return true;
640
+ if (options.autoMatchFormat === false)
641
+ return false;
640
642
  return ['META', 'STYLE'].includes(element.nodeName);
641
643
  }
642
644
  /**
@@ -822,6 +824,7 @@ class ImageAnnotation extends NodeAnnotation {
822
824
  }
823
825
  }
824
826
  }
827
+ ImageAnnotation.BASE_STYLES = { verticalAlign: 'bottom' };
825
828
 
826
829
  /**
827
830
  * Update the image node annotation map strategy.
@@ -914,9 +917,9 @@ class RTEImageNode extends RTEDecoratorNode {
914
917
  /**
915
918
  * @inheritDoc
916
919
  */
917
- toHtml() {
920
+ toHtml(options) {
918
921
  const imageAnnotation = this.getAnnotationByType(NodeAnnotationTypeEnum.IMAGE);
919
- const attrStr = super.generateAttributeString(...[
922
+ const attrStr = super.generateAttributeString(options, ...[
920
923
  imageAnnotation && imageAnnotation.alt ? `alt="${imageAnnotation.alt}"` : null,
921
924
  `src="${this.url}"`,
922
925
  imageAnnotation && imageAnnotation.size ? `data-size="${imageAnnotation.size}"` : null,
@@ -1136,9 +1139,9 @@ class RTEImageBlock extends RTEBlock {
1136
1139
  /**
1137
1140
  * @inheritDoc
1138
1141
  */
1139
- toHtml() {
1140
- const attrStr = super.generateAttributeString();
1141
- const children = this.children.map((node) => node.toHtml()).join('');
1142
+ toHtml(options) {
1143
+ const attrStr = super.generateAttributeString(options);
1144
+ const children = this.children.map((node) => node.toHtml(options)).join('');
1142
1145
  return super.shouldRenderAsInternalWrapper()
1143
1146
  ? children
1144
1147
  : [`<div${attrStr}>`, children, `</div>`].join('');
@@ -1230,23 +1233,26 @@ class RTEHtmlBlock extends RTEBlock {
1230
1233
  * @inheritDoc
1231
1234
  */
1232
1235
  isNotEmpty() {
1233
- return this.children.length > 0;
1236
+ // Any RTEHtmlBlock — whether void (hr, br), childless (canvas, iframe),
1237
+ // or with children — represents real user content. Only the default empty
1238
+ // text paragraph should make the editor report as empty.
1239
+ return true;
1234
1240
  }
1235
1241
  /**
1236
1242
  * @inheritDoc
1237
1243
  */
1238
- toHtml() {
1244
+ toHtml(options) {
1239
1245
  const BlockTag = this.htmlTag;
1240
- const attrStr = super.generateAttributeString();
1246
+ const attrStr = super.generateAttributeString(options);
1241
1247
  // Handle void/self-closing tags (hr, input, col, etc.)
1242
1248
  // Uses HTML5 syntax without self-closing slash for consistency with img and br tags
1243
- if (RTEHtmlBlock.VOID_TAGS.has(this.htmlTag)) {
1249
+ if (HTML_VOID_TAGS.has(this.htmlTag)) {
1244
1250
  return `<${BlockTag}${attrStr}>`;
1245
1251
  }
1246
1252
  // Handle normal tags with children
1247
1253
  return [
1248
1254
  `<${BlockTag}${attrStr}>`,
1249
- this.children.map((block) => block.toHtml()).join(''),
1255
+ this.children.map((block) => block.toHtml(options)).join(''),
1250
1256
  `</${BlockTag}>`,
1251
1257
  ].join('');
1252
1258
  }
@@ -1257,16 +1263,6 @@ class RTEHtmlBlock extends RTEBlock {
1257
1263
  return Object.assign(Object.assign({}, super.toJSON()), { id: this.id, type: this.type, htmlTag: this.htmlTag, children: this.children.map((child) => child.toJSON()) });
1258
1264
  }
1259
1265
  }
1260
- /**
1261
- * Void/self-closing tags that don't have closing tags and don't contain children.
1262
- * These tags should be rendered as <tag> or <tag/> instead of <tag></tag>.
1263
- *
1264
- * Based on canHandleTags from html-block-strategy.ts, the following are void tags:
1265
- * - HR: horizontal rule
1266
- * - INPUT: form input
1267
- * - COL: table column
1268
- */
1269
- RTEHtmlBlock.VOID_TAGS = new Set(['hr', 'input', 'col']);
1270
1266
 
1271
1267
  /**
1272
1268
  * Merge the two blocks node into first block if the two blocks nodes type is same(text node or image node)
@@ -1923,32 +1919,9 @@ class CustomStyleAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
1923
1919
  * @returns {VegaRTETextAnnotations} - Annotation.
1924
1920
  */
1925
1921
  handle(element) {
1926
- const styles = this.generateCustomStyleAnnotations(element);
1922
+ const styles = createStyleMapFromElement(element);
1927
1923
  return Object.keys(styles).length > 0 ? { customStyle: styles } : {};
1928
1924
  }
1929
- /**
1930
- * Obtain and format the style of element.
1931
- *
1932
- * @param {HTMLElement} element - current element.
1933
- * @returns {AnnotationStyle} - Record<string, string>.
1934
- */
1935
- generateCustomStyleAnnotations(element) {
1936
- const customStyle = element.getAttribute('style');
1937
- if (!customStyle)
1938
- return {};
1939
- const styleValue = customStyle.split(';').filter(Boolean);
1940
- return styleValue
1941
- .filter((key) => key !== ' ')
1942
- .map((key) => {
1943
- // to remove redundant quote pairs if needed, for example: ['fontFamily: "Roboto Mono"'] will be updated to ['fontFamily: Roboto Mono']
1944
- const styleObject = key.replace(/(['"])(.*?)\1/g, '$2').split(':');
1945
- const styleKey = dashCaseToCamel(styleObject[0].trim());
1946
- return {
1947
- [styleKey]: styleObject[1].trim().replace(';', ''),
1948
- };
1949
- })
1950
- .reduce((current, obj) => (Object.assign(Object.assign({}, current), obj)), {});
1951
- }
1952
1925
  }
1953
1926
 
1954
1927
  /** Handle indent annotation */
@@ -2173,157 +2146,6 @@ class ItalicAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2173
2146
  }
2174
2147
  }
2175
2148
 
2176
- /** Handle link annotation */
2177
- class LinkAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2178
- constructor() {
2179
- super(...arguments);
2180
- this.handlers = [
2181
- new CustomAttributeAnnotationHandler(),
2182
- new CustomClassAnnotationHandler(),
2183
- new CustomStyleAnnotationHandler(),
2184
- ];
2185
- }
2186
- /**
2187
- * Can be handle.
2188
- *
2189
- * @param {RTEDtoClassPrototype} targetDto - Target DTO.
2190
- * @returns {boolean} - .
2191
- */
2192
- canHandle(targetDto) {
2193
- return targetDto.name === 'RTETextNode';
2194
- }
2195
- /**
2196
- * Handle annotation.
2197
- *
2198
- * @param {HTMLElement} element - Current elements.
2199
- * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2200
- * @returns {VegaRTETextAnnotations} - Annotation.
2201
- */
2202
- handle(element, parentAnnotations = {}) {
2203
- if (parentAnnotations.link)
2204
- return { link: parentAnnotations.link };
2205
- return element.tagName === 'A' ? { link: this.generateLinkAnnotations(element) } : {};
2206
- }
2207
- /**
2208
- * Generate link annotations.
2209
- *
2210
- * @param {HTMLElement} element - Current elements.
2211
- * @returns {VegaRTELink} - link annotations.
2212
- */
2213
- generateLinkAnnotations(element) {
2214
- const annotations = {
2215
- href: element.getAttribute('href') || '',
2216
- groupKey: generateUUID(),
2217
- };
2218
- this.handlers.forEach((handler) => {
2219
- Object.assign(annotations, handler.handle(element));
2220
- });
2221
- return annotations;
2222
- }
2223
- }
2224
-
2225
- /** Handle strike through annotation */
2226
- class StrikeThroughAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2227
- /**
2228
- * @inheritDoc
2229
- */
2230
- canHandle(targetDto) {
2231
- return targetDto.name === 'RTETextNode';
2232
- }
2233
- /**
2234
- * Handle annotation.
2235
- *
2236
- * @param {HTMLElement} element - Current elements.
2237
- * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2238
- * @returns {VegaRTETextAnnotations} - Annotation.
2239
- */
2240
- handle(element, parentAnnotations = {}) {
2241
- return this.isStrikethrough(element) || parentAnnotations.strikethrough
2242
- ? { strikethrough: true }
2243
- : {};
2244
- }
2245
- /**
2246
- * Is strikethrough element.
2247
- *
2248
- * @param {HTMLElement} element - current element.
2249
- * @returns {boolean} - boolean.
2250
- */
2251
- isStrikethrough(element) {
2252
- return (element.style.textDecoration.includes(STRIKETHROUGH_TEXT_DECORATION) ||
2253
- element.nodeName === 'S' ||
2254
- element.nodeName === 'DEL' ||
2255
- element.classList.contains('v-rte--strikethrough'));
2256
- }
2257
- }
2258
-
2259
- /** Handle underline annotation */
2260
- class UnderlineAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2261
- /**
2262
- * @inheritDoc
2263
- */
2264
- canHandle(targetDto) {
2265
- return targetDto.name === 'RTETextNode';
2266
- }
2267
- /**
2268
- * Handle annotation.
2269
- *
2270
- * @param {HTMLElement} element - Current elements.
2271
- * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2272
- * @returns {VegaRTETextAnnotations} - Annotation.
2273
- */
2274
- handle(element, parentAnnotations = {}) {
2275
- return this.isUnderline(element) || parentAnnotations.underline ? { underline: true } : {};
2276
- }
2277
- /**
2278
- * Is underline element.
2279
- *
2280
- * @param {HTMLElement} element - current element.
2281
- * @returns {boolean} - boolean.
2282
- */
2283
- isUnderline(element) {
2284
- return (element.style.textDecoration.includes(UNDERLINE_TEXT_DECORATION) ||
2285
- element.nodeName === 'U' ||
2286
- element.nodeName === 'INS' ||
2287
- element.classList.contains('v-rte--underline'));
2288
- }
2289
- }
2290
-
2291
- /**
2292
- * Registry for managing filter styles strategies keyed by DTO class name.
2293
- *
2294
- * Provides common `register` / `getStrategies` primitives that both output-
2295
- * filtering strategies (DTO → HTML) and annotation-parsing strategies
2296
- * (HTML → DTO) build upon.
2297
- *
2298
- * TODO: Currently, the filter styles strategies are applied for all rich text editors. We need to apply the strategies with a specific rich text editor instance when we have multiple rich text editors in the future.
2299
- */
2300
- class RTEFilterStylesStrategyRegistry {
2301
- /**
2302
- * Registers a filter styles strategy for a specific DTO class name.
2303
- * Duplicate strategy instances are ignored.
2304
- *
2305
- * @param {string} dtoClassName - The DTO class name (e.g. `RTEListBlock.name`).
2306
- * @param {RTEFilterStylesStrategy} strategy - The strategy instance to register.
2307
- */
2308
- static register(dtoClassName, strategy) {
2309
- var _a;
2310
- const set = (_a = this.registry.get(dtoClassName)) !== null && _a !== void 0 ? _a : new Set();
2311
- set.add(strategy);
2312
- this.registry.set(dtoClassName, set);
2313
- }
2314
- /**
2315
- * Retrieves all strategies registered for a given DTO class name.
2316
- *
2317
- * @param {string} dtoClassName - The DTO class name to look up.
2318
- * @returns {RTEFilterStylesStrategy[]} Registered strategies (empty array if none).
2319
- */
2320
- static getStrategies(dtoClassName) {
2321
- var _a;
2322
- return Array.from((_a = this.registry.get(dtoClassName)) !== null && _a !== void 0 ? _a : []);
2323
- }
2324
- }
2325
- RTEFilterStylesStrategyRegistry.registry = new Map();
2326
-
2327
2149
  /** Handle text style annotation */
2328
2150
  class TextStyleAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2329
2151
  /**
@@ -2437,7 +2259,8 @@ class TextStyleAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2437
2259
  */
2438
2260
  getElementTypeByClassName(element) {
2439
2261
  if (element.className) {
2440
- const match = /\bv-rte--text-style-(title|subtitle|heading-1|heading-2|heading-3|heading-4|heading-5|heading-6|paragraph)\b/.exec(element.className);
2262
+ // Match class name with pattern "v-rte--text-style-{textStyle}" or "v-rte-{textStyle}".
2263
+ const match = /\bv-rte-(?:-text-style-)?(title|subtitle|heading-1|heading-2|heading-3|heading-4|heading-5|heading-6|paragraph)\b/.exec(element.className);
2441
2264
  if (match) {
2442
2265
  return match[1];
2443
2266
  }
@@ -2446,131 +2269,311 @@ class TextStyleAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2446
2269
  }
2447
2270
  }
2448
2271
 
2449
- /** Handle image size annotation */
2450
- class ImageSizeAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2272
+ /**
2273
+ * Predicate class provides static methods to check specific conditions on HTML elements.
2274
+ */
2275
+ class Predicate {
2451
2276
  /**
2452
- * @inheritDoc
2277
+ * Checks if the given element is a title or subtitle.
2278
+ *
2279
+ * @param {HTMLElement} element The element to check.
2280
+ * @returns {boolean} True if the element is a title or subtitle, false otherwise.
2281
+ */
2282
+ static isTitleOrSubtitle(element) {
2283
+ if (element.nodeName === 'DIV') {
2284
+ const textBlockType = Predicate.textStyleHandler['getTextStyle'](element);
2285
+ return textBlockType === 'title' || textBlockType === 'subtitle';
2286
+ }
2287
+ return false;
2288
+ }
2289
+ /**
2290
+ * Check if the given element is a link element (anchor tag).
2291
+ *
2292
+ * @param {HTMLElement} element The element to check.
2293
+ * @returns {boolean} True if the element is a link element, false otherwise.
2294
+ */
2295
+ static isLinkElement(element) {
2296
+ return element.nodeName === 'A';
2297
+ }
2298
+ }
2299
+ Predicate.textStyleHandler = new TextStyleAnnotationHandler();
2300
+
2301
+ /** Handle link annotation */
2302
+ class LinkAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2303
+ constructor() {
2304
+ super(...arguments);
2305
+ this.handlers = [
2306
+ new CustomAttributeAnnotationHandler(),
2307
+ new CustomClassAnnotationHandler(),
2308
+ new CustomStyleAnnotationHandler(),
2309
+ ];
2310
+ }
2311
+ /**
2312
+ * Can be handle.
2313
+ *
2314
+ * @param {RTEDtoClassPrototype} targetDto - Target DTO.
2315
+ * @returns {boolean} - .
2453
2316
  */
2454
2317
  canHandle(targetDto) {
2455
- return targetDto.name === 'RTEImageNode';
2318
+ return targetDto.name === 'RTETextNode';
2456
2319
  }
2457
2320
  /**
2458
2321
  * Handle annotation.
2459
2322
  *
2460
2323
  * @param {HTMLElement} element - Current elements.
2461
- * @returns {VegaRTEImageAnnotations} - Annotation.
2324
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2325
+ * @returns {VegaRTETextAnnotations} - Annotation.
2462
2326
  */
2463
- handle(element) {
2464
- const size = this.getImageSize(element);
2465
- return size ? { size: size } : {};
2327
+ handle(element, parentAnnotations = {}) {
2328
+ if (parentAnnotations.link)
2329
+ return { link: parentAnnotations.link };
2330
+ return Predicate.isLinkElement(element) ? { link: this.generateLinkAnnotations(element) } : {};
2466
2331
  }
2467
2332
  /**
2468
- * Determine the image display size based on the width of the current element.
2333
+ * Generate link annotations.
2469
2334
  *
2470
- * @param {HTMLElement} element - current element.
2471
- * @returns {Nullable<VegaRichTextImageEditorSizeType>} -Image size, default 'md'.
2335
+ * @param {HTMLElement} element - Current elements.
2336
+ * @returns {VegaRTELink} - link annotations.
2472
2337
  */
2473
- getImageSize(element) {
2474
- if (element.getAttribute('data-size')) {
2475
- return element.getAttribute('data-size');
2476
- }
2477
- return null;
2338
+ generateLinkAnnotations(element) {
2339
+ const annotations = {
2340
+ href: element.getAttribute('href') || '',
2341
+ groupKey: generateUUID(),
2342
+ };
2343
+ this.handlers.forEach((handler) => {
2344
+ Object.assign(annotations, handler.handle(element));
2345
+ });
2346
+ return annotations;
2478
2347
  }
2479
2348
  }
2480
2349
 
2481
- /** Handle image alt annotation */
2482
- class ImageAltAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2350
+ /** Handle strike through annotation */
2351
+ class StrikeThroughAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2483
2352
  /**
2484
2353
  * @inheritDoc
2485
2354
  */
2486
2355
  canHandle(targetDto) {
2487
- return targetDto.name === 'RTEImageNode';
2356
+ return targetDto.name === 'RTETextNode';
2488
2357
  }
2489
2358
  /**
2490
2359
  * Handle annotation.
2491
2360
  *
2492
2361
  * @param {HTMLElement} element - Current elements.
2493
- * @returns {VegaRTEImageAnnotations} - Annotation.
2362
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2363
+ * @returns {VegaRTETextAnnotations} - Annotation.
2494
2364
  */
2495
- handle(element) {
2496
- return element.hasAttribute('alt') ? { alt: element.getAttribute('alt') } : {};
2365
+ handle(element, parentAnnotations = {}) {
2366
+ return this.isStrikethrough(element) || parentAnnotations.strikethrough
2367
+ ? { strikethrough: true }
2368
+ : {};
2369
+ }
2370
+ /**
2371
+ * Is strikethrough element.
2372
+ *
2373
+ * @param {HTMLElement} element - current element.
2374
+ * @returns {boolean} - boolean.
2375
+ */
2376
+ isStrikethrough(element) {
2377
+ return (element.style.textDecoration.includes(STRIKETHROUGH_TEXT_DECORATION) ||
2378
+ element.nodeName === 'S' ||
2379
+ element.nodeName === 'DEL' ||
2380
+ element.classList.contains('v-rte--strikethrough'));
2497
2381
  }
2498
2382
  }
2499
2383
 
2500
- /**
2501
- * Handle inline html annotation
2502
- */
2503
- class InlineHtmlAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2504
- constructor() {
2505
- super(...arguments);
2506
- this.customAttributeHandler = new CustomAttributeAnnotationHandler();
2507
- this.customStyleAnnotationHandler = new CustomStyleAnnotationHandler();
2508
- this.customClassAnnotationHandler = new CustomClassAnnotationHandler();
2509
- }
2384
+ /** Handle underline annotation */
2385
+ class UnderlineAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2510
2386
  /**
2511
2387
  * @inheritDoc
2512
2388
  */
2513
- canHandle(targetDto, options) {
2514
- return targetDto.name === 'RTETextNode' && options.autoMatchFormat === false;
2389
+ canHandle(targetDto) {
2390
+ return targetDto.name === 'RTETextNode';
2391
+ }
2392
+ /**
2393
+ * Handle annotation.
2394
+ *
2395
+ * @param {HTMLElement} element - Current elements.
2396
+ * @param {VegaRTETextAnnotations} parentAnnotations - Parent annotations.
2397
+ * @returns {VegaRTETextAnnotations} - Annotation.
2398
+ */
2399
+ handle(element, parentAnnotations = {}) {
2400
+ return this.isUnderline(element) || parentAnnotations.underline ? { underline: true } : {};
2401
+ }
2402
+ /**
2403
+ * Is underline element.
2404
+ *
2405
+ * @param {HTMLElement} element - current element.
2406
+ * @returns {boolean} - boolean.
2407
+ */
2408
+ isUnderline(element) {
2409
+ return (element.style.textDecoration.includes(UNDERLINE_TEXT_DECORATION) ||
2410
+ element.nodeName === 'U' ||
2411
+ element.nodeName === 'INS' ||
2412
+ element.classList.contains('v-rte--underline'));
2515
2413
  }
2414
+ }
2415
+
2416
+ /** Handle image size annotation */
2417
+ class ImageSizeAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2516
2418
  /**
2517
2419
  * @inheritDoc
2518
2420
  */
2519
- handle(element, parentAnnotations) {
2520
- const canHandle = InlineHtmlAnnotationHandler.canHandleTags.includes(element.nodeName);
2521
- if (canHandle) {
2522
- const inlineHtml = this.generateInlineHtmlAnnotation(element, Object.assign({}, parentAnnotations));
2523
- if (inlineHtml) {
2524
- return { inlineHtml: inlineHtml };
2525
- }
2526
- }
2527
- return {};
2421
+ canHandle(targetDto) {
2422
+ return targetDto.name === 'RTEImageNode';
2528
2423
  }
2529
2424
  /**
2530
- * Generate inline html annotation.
2425
+ * Handle annotation.
2531
2426
  *
2532
- * @param {HTMLElement} child - Current element.
2533
- * @param {VegaRTETextAnnotations} annotations - Current annotations.
2534
- * @returns {Nullable<VegaInlineHtmlSchema>} - Inline html annotation.
2427
+ * @param {HTMLElement} element - Current elements.
2428
+ * @returns {VegaRTEImageAnnotations} - Annotation.
2535
2429
  */
2536
- generateInlineHtmlAnnotation(child, annotations) {
2537
- let { inlineHtml } = annotations;
2538
- if (!RTETextNode.supportsHtmlTag(child.nodeName.toLowerCase()) ||
2539
- (child.childNodes.length === 1 && child.childNodes[0].nodeType !== Node.TEXT_NODE)) {
2540
- const childInlineHtmlNode = {
2541
- htmlTag: child.nodeName.toLowerCase(),
2542
- customAttribute: this.customAttributeHandler.handle(child).customAttribute,
2543
- customStyle: this.customStyleAnnotationHandler.handle(child).customStyle,
2544
- customClass: this.customClassAnnotationHandler.handle(child).customClass,
2545
- };
2546
- if (!inlineHtml) {
2547
- inlineHtml = childInlineHtmlNode;
2548
- }
2549
- else {
2550
- let lastChild = inlineHtml;
2551
- while (lastChild.child &&
2552
- child.parentNode &&
2553
- lastChild.child.htmlTag === child.parentNode.nodeName.toLowerCase()) {
2554
- lastChild = lastChild.child;
2555
- }
2556
- lastChild.child = childInlineHtmlNode;
2557
- }
2430
+ handle(element) {
2431
+ const size = this.getImageSize(element);
2432
+ return size ? { size: size } : {};
2433
+ }
2434
+ /**
2435
+ * Determine the image display size based on the width of the current element.
2436
+ *
2437
+ * @param {HTMLElement} element - current element.
2438
+ * @returns {Nullable<VegaRichTextImageEditorSizeType>} -Image size, default 'md'.
2439
+ */
2440
+ getImageSize(element) {
2441
+ if (element.getAttribute('data-size')) {
2442
+ return element.getAttribute('data-size');
2558
2443
  }
2559
- return inlineHtml ? Object.assign({}, inlineHtml) : null;
2444
+ return null;
2445
+ }
2446
+ }
2447
+
2448
+ /** Handle image alt annotation */
2449
+ class ImageAltAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2450
+ /**
2451
+ * @inheritDoc
2452
+ */
2453
+ canHandle(targetDto) {
2454
+ return targetDto.name === 'RTEImageNode';
2455
+ }
2456
+ /**
2457
+ * Handle annotation.
2458
+ *
2459
+ * @param {HTMLElement} element - Current elements.
2460
+ * @returns {VegaRTEImageAnnotations} - Annotation.
2461
+ */
2462
+ handle(element) {
2463
+ return element.hasAttribute('alt') ? { alt: element.getAttribute('alt') } : {};
2560
2464
  }
2561
2465
  }
2562
- InlineHtmlAnnotationHandler.canHandleTags = [
2563
- 'A',
2466
+
2467
+ /**
2468
+ * Tags whose direct children are always phrasing (inline) content (P, H1-H6, LI).
2469
+ *
2470
+ * This is spec knowledge from the HTML Living Standard — these grouping-content
2471
+ * elements have a phrasing-content content model and cannot contain block-level
2472
+ * descendants. It cannot be derived from the strategy registry and must be
2473
+ * maintained alongside the HTML spec.
2474
+ *
2475
+ * @see https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
2476
+ */
2477
+ const BLOCK_TEXT_CONTAINER_TAGS = new Set([
2478
+ 'P',
2479
+ 'H1',
2480
+ 'H2',
2481
+ 'H3',
2482
+ 'H4',
2483
+ 'H5',
2484
+ 'H6',
2485
+ 'LI',
2486
+ ]);
2487
+ /**
2488
+ * Tags with dedicated element-to-DTO block strategies
2489
+ * (P, H1-H6, LI, UL, OL, IMG, CODE).
2490
+ *
2491
+ * HtmlBlockStrategy skips these to avoid double-processing or overriding their
2492
+ * specialized block semantics.
2493
+ *
2494
+ * Why hard-coded: strategies use heterogeneous matching (`tagName ===`,
2495
+ * `matchTextBlockType` via font-size/class, etc.) so there is no single
2496
+ * declarative contract to derive this set from. It must be kept in sync with
2497
+ * the strategies registered in `dto/setup.ts`.
2498
+ *
2499
+ * Intentionally independent of {@link BLOCK_TEXT_CONTAINER_TAGS} — the two
2500
+ * sets encode different concepts (app architecture vs. HTML spec) and must
2501
+ * be maintained separately.
2502
+ */
2503
+ const DEDICATED_STRATEGY_TAGS = new Set([
2504
+ 'P',
2505
+ 'H1',
2506
+ 'H2',
2507
+ 'H3',
2508
+ 'H4',
2509
+ 'H5',
2510
+ 'H6',
2511
+ 'LI',
2512
+ 'UL',
2513
+ 'OL',
2514
+ 'IMG',
2515
+ 'CODE',
2516
+ ]);
2517
+ /**
2518
+ * Tags that are always treated as phrasing (inline) content, even when they
2519
+ * also appear in {@link DEDICATED_STRATEGY_TAGS} (CODE).
2520
+ * A tag in this set overrides the dedicated-strategy skip in HtmlBlockStrategy.
2521
+ *
2522
+ * Mix of HTML5 spec phrasing-content elements (BR, CODE, A) and
2523
+ * RTE-internal custom elements (VEGA-RICH-TEXT-LINK-EDITOR).
2524
+ */
2525
+ const ALWAYS_INLINE_TAGS = new Set(['BR', 'VEGA-RICH-TEXT-LINK-EDITOR', 'CODE', 'A']);
2526
+ /**
2527
+ * Tags whose content model requires each child to be a distinct block-level
2528
+ * element (table model and definition list).
2529
+ *
2530
+ * TABLE expects CAPTION/THEAD/TBODY/TFOOT/TR; TR expects TH/TD;
2531
+ * THEAD/TBODY/TFOOT expect TR; DL expects DT/DD.
2532
+ *
2533
+ * Used by HtmlBlockStrategy to prevent text-only children (e.g. CAPTION,
2534
+ * TH, TD) from being treated as inline — they must become html-blocks so
2535
+ * the table structure round-trips correctly.
2536
+ *
2537
+ * Note: COLGROUP is intentionally excluded. Its only permitted child is the
2538
+ * void element COL, which can never produce text-node children, so the
2539
+ * text-only heuristic in HtmlBlockStrategy can never fire for a COLGROUP
2540
+ * parent.
2541
+ *
2542
+ * @see https://html.spec.whatwg.org/multipage/tables.html#the-table-element
2543
+ * @see https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element
2544
+ */
2545
+ const STRUCTURED_CONTAINER_TAGS = new Set([
2546
+ 'TABLE',
2547
+ 'THEAD',
2548
+ 'TBODY',
2549
+ 'TFOOT',
2550
+ 'TR',
2551
+ 'DL',
2552
+ ]);
2553
+ /**
2554
+ * Formatting phrasing-content elements that CAN remain inline even when empty.
2555
+ *
2556
+ * Any element NOT in this set (DIV, SECTION, ARTICLE, custom elements, etc.)
2557
+ * is treated as a block separator. Phrasing content is a closed, finite set
2558
+ * per the HTML Living Standard, making an allowlist safer than blocklisting
2559
+ * block containers (which is open-ended — custom elements default to block).
2560
+ *
2561
+ * Intentionally excludes:
2562
+ * - BR, CODE, A, VEGA-RICH-TEXT-LINK-EDITOR → handled by {@link ALWAYS_INLINE_TAGS}
2563
+ * - P, H1-H6, LI, UL, OL, IMG → handled by {@link DEDICATED_STRATEGY_TAGS}
2564
+ * - VIDEO, AUDIO, EMBED → embedded content that carries media even when empty;
2565
+ * must be treated as block-level, not as inline formatting artifacts
2566
+ *
2567
+ * @see https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
2568
+ */
2569
+ const PHRASING_CONTENT_TAGS = new Set([
2564
2570
  'ABBR',
2565
- 'AUDIO',
2566
2571
  'B',
2567
2572
  'BDI',
2568
2573
  'BDO',
2569
2574
  'CITE',
2570
- 'CODE',
2571
2575
  'DEL',
2572
2576
  'DFN',
2573
- 'EMBED',
2574
2577
  'EM',
2575
2578
  'I',
2576
2579
  'INS',
@@ -2581,6 +2584,7 @@ InlineHtmlAnnotationHandler.canHandleTags = [
2581
2584
  'PROGRESS',
2582
2585
  'Q',
2583
2586
  'S',
2587
+ 'SAMP',
2584
2588
  'SMALL',
2585
2589
  'SPAN',
2586
2590
  'STRONG',
@@ -2589,8 +2593,89 @@ InlineHtmlAnnotationHandler.canHandleTags = [
2589
2593
  'TIME',
2590
2594
  'U',
2591
2595
  'VAR',
2592
- 'VIDEO',
2593
- ];
2596
+ ]);
2597
+ /**
2598
+ * Returns true when the element is a direct child of a block text container
2599
+ * (P, H1-H6, LI), meaning it must be treated as phrasing content regardless
2600
+ * of its own DOM structure.
2601
+ *
2602
+ * @param {HTMLElement} element - Element to test.
2603
+ * @returns {boolean} True if the element is inside a block text container.
2604
+ */
2605
+ function isInBlockTextContext(element) {
2606
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2607
+ return BLOCK_TEXT_CONTAINER_TAGS.has(element.parentElement.nodeName);
2608
+ }
2609
+
2610
+ /**
2611
+ * Handle inline html annotation
2612
+ */
2613
+ class InlineHtmlAnnotationHandler extends AnnotationGeneratorStrategyAbstract {
2614
+ constructor() {
2615
+ super(...arguments);
2616
+ this.customAttributeHandler = new CustomAttributeAnnotationHandler();
2617
+ this.customStyleAnnotationHandler = new CustomStyleAnnotationHandler();
2618
+ this.customClassAnnotationHandler = new CustomClassAnnotationHandler();
2619
+ }
2620
+ /**
2621
+ * @inheritDoc
2622
+ */
2623
+ canHandle(targetDto, options) {
2624
+ return targetDto.name === 'RTETextNode' && options.autoMatchFormat === false;
2625
+ }
2626
+ /**
2627
+ * @inheritDoc
2628
+ */
2629
+ handle(element, parentAnnotations) {
2630
+ // Skip block-level dedicated tags (P, H1-H6, LI, UL, OL, IMG).
2631
+ // Tags in ALWAYS_INLINE_TAGS (CODE, A) are exempt and still produce inlineHtml annotations.
2632
+ if (DEDICATED_STRATEGY_TAGS.has(element.nodeName) && !ALWAYS_INLINE_TAGS.has(element.nodeName)) {
2633
+ return {};
2634
+ }
2635
+ const inlineHtml = this.generateInlineHtmlAnnotation(element, Object.assign({}, parentAnnotations));
2636
+ if (inlineHtml) {
2637
+ return { inlineHtml: inlineHtml };
2638
+ }
2639
+ return {};
2640
+ }
2641
+ /**
2642
+ * Generate inline html annotation.
2643
+ *
2644
+ * @param {HTMLElement} child - Current element.
2645
+ * @param {VegaRTETextAnnotations} annotations - Current annotations.
2646
+ * @returns {Nullable<VegaInlineHtmlSchema>} - Inline html annotation.
2647
+ */
2648
+ generateInlineHtmlAnnotation(child, annotations) {
2649
+ let { inlineHtml } = annotations;
2650
+ const hasElementChildren = Array.from(child.childNodes).some((c) => c.nodeType === Node.ELEMENT_NODE);
2651
+ if (!RTETextNode.supportsHtmlTag(child.nodeName.toLowerCase()) || hasElementChildren) {
2652
+ const childInlineHtmlNode = Object.assign(Object.assign({ htmlTag: child.nodeName.toLowerCase() }, (hasElementChildren ? { groupId: generateUUID() } : {})), { customAttribute: this.customAttributeHandler.handle(child).customAttribute, customStyle: this.customStyleAnnotationHandler.handle(child).customStyle, customClass: this.customClassAnnotationHandler.handle(child).customClass });
2653
+ if (!inlineHtml) {
2654
+ inlineHtml = childInlineHtmlNode;
2655
+ }
2656
+ else {
2657
+ inlineHtml = this.appendToInlineHtmlChain(inlineHtml, childInlineHtmlNode, child.parentNode);
2658
+ }
2659
+ }
2660
+ return inlineHtml ? Object.assign({}, inlineHtml) : null;
2661
+ }
2662
+ /**
2663
+ * Immutably appends `toAppend` at the correct position in the chain — the
2664
+ * deepest node whose `child.htmlTag` still matches `parentNode.nodeName`.
2665
+ * Each level is reconstructed via spread so the original chain is never mutated.
2666
+ *
2667
+ * @param {VegaInlineHtmlSchema} node - Current chain node.
2668
+ * @param {VegaInlineHtmlSchema} toAppend - Node to append at the tail.
2669
+ * @param {ParentNode | null} parentNode - DOM parent of the element being processed.
2670
+ * @returns {VegaInlineHtmlSchema} A new chain with `toAppend` inserted.
2671
+ */
2672
+ appendToInlineHtmlChain(node, toAppend, parentNode) {
2673
+ if (node.child && parentNode && node.child.htmlTag === parentNode.nodeName.toLowerCase()) {
2674
+ return Object.assign(Object.assign({}, node), { child: this.appendToInlineHtmlChain(node.child, toAppend, parentNode) });
2675
+ }
2676
+ return Object.assign(Object.assign({}, node), { child: toAppend });
2677
+ }
2678
+ }
2594
2679
 
2595
2680
  /** Html element to annotations generator */
2596
2681
  class HtmlElementToAnnotationGenerator {
@@ -2636,7 +2721,12 @@ class HtmlElementToAnnotationGenerator {
2636
2721
  * @returns {V} Generated annotations.
2637
2722
  */
2638
2723
  generate(targetDto, element, options = { autoMatchFormat: true }) {
2639
- const isLinkElement = element.tagName === 'A';
2724
+ if (options && options.filterInlineStyles) {
2725
+ RTEFilterStylesStrategyRegistry.executeTheStrategyRefillAction(targetDto.name, element);
2726
+ }
2727
+ // Guard against <a> wrapping block content (e.g. <a><video></a>), which is processed as an
2728
+ // html-block (targetDto !== RTETextNode) — link-only mode should not apply in that case.
2729
+ const isLinkElement = Predicate.isLinkElement(element) && targetDto.name === 'RTETextNode';
2640
2730
  const annotations = this.handlers
2641
2731
  .filter((handler) => !options.autoMatchFormat && isLinkElement ? handler instanceof LinkAnnotationHandler : true)
2642
2732
  .filter((handler) => element.nodeType !== Node.TEXT_NODE &&
@@ -2767,13 +2857,17 @@ class HtmlBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2767
2857
  */
2768
2858
  canHandle(elementsArray, currentIndex, options) {
2769
2859
  const element = elementsArray[currentIndex];
2770
- // - div + img should be handled by RTEImageBlock
2771
- const isCustomContainer = element.nodeName === 'DIV'
2772
- ? element.childNodes.length > 0 && element.childNodes[0].nodeName !== 'IMG'
2773
- : true;
2860
+ if (element.nodeType === Node.TEXT_NODE || this.isInlineTagWithoutBlockChildren(element, options)) {
2861
+ return 0;
2862
+ }
2863
+ // Skip dedicated-strategy tags unless all children are block-level embedded
2864
+ // elements (e.g. <p><video></p>), in which case fall back to html-block.
2865
+ if (DEDICATED_STRATEGY_TAGS.has(element.nodeName) && !this.shouldFallBackToHtmlBlock(element)) {
2866
+ return 0;
2867
+ }
2774
2868
  return !options.autoMatchFormat &&
2775
- isCustomContainer &&
2776
- HtmlBlockStrategy.canHandleTags.includes(elementsArray[currentIndex].nodeName)
2869
+ this.isCustomHtmlContainer(element) &&
2870
+ !Predicate.isTitleOrSubtitle(element)
2777
2871
  ? 1
2778
2872
  : 0;
2779
2873
  }
@@ -2799,6 +2893,89 @@ class HtmlBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2799
2893
  shouldProceedToElementChildren() {
2800
2894
  return true;
2801
2895
  }
2896
+ /**
2897
+ * Returns true for elements that should be treated as inline content even if they have no element children (e.g. <span>text</span>).
2898
+ * This includes any element in a block text context (P, H1-H6, LI) and any element with text-node children but no element-node children.
2899
+ *
2900
+ * In raw-HTML mode (autoMatchFormat: false), the text-only heuristic only
2901
+ * applies to elements whose parent is itself a text-only wrapper (e.g.
2902
+ * {@code <div><span>Title</span></div>}). Structural children of non-text
2903
+ * containers (TABLE → CAPTION, TR → TH/TD, etc.) skip this heuristic so
2904
+ * they reach {@link isCustomHtmlContainer} and become html-blocks.
2905
+ *
2906
+ * @param {HTMLElement} element - Element to check.
2907
+ * @param {VegaRTETransformOptions} options - Transform options.
2908
+ * @returns {boolean} True if the element should be treated as inline content.
2909
+ */
2910
+ isInlineTagWithoutBlockChildren(element, options) {
2911
+ if (isInBlockTextContext(element)) {
2912
+ // Empty elements that are not recognized inline elements should not
2913
+ // be forced inline — they may represent block-level embedded content
2914
+ // (e.g. <video src="...">, <audio>, <iframe src="...">).
2915
+ if (element.childNodes.length === 0 &&
2916
+ element.textContent === '' &&
2917
+ !ALWAYS_INLINE_TAGS.has(element.nodeName) &&
2918
+ !PHRASING_CONTENT_TAGS.has(element.nodeName)) {
2919
+ return false;
2920
+ }
2921
+ return true;
2922
+ }
2923
+ const childNodes = Array.from(element.childNodes);
2924
+ const isTextOnly = !childNodes.some((child) => child.nodeType === Node.ELEMENT_NODE) &&
2925
+ childNodes.some((child) => child.nodeType === Node.TEXT_NODE);
2926
+ if (!isTextOnly) {
2927
+ return false;
2928
+ }
2929
+ // In raw-HTML mode, a text-only element is inline only if:
2930
+ // 1. Its parent is not a structured container (TABLE, TR, …)
2931
+ // 2. The element itself is phrasing content (SPAN, EM, …)
2932
+ // Non-phrasing text-only elements (SUMMARY, FIGCAPTION, OPTION, SVG TEXT,
2933
+ // etc.) must fall through to become html-blocks.
2934
+ if (options.autoMatchFormat === false) {
2935
+ if (STRUCTURED_CONTAINER_TAGS.has(element.parentElement.nodeName))
2936
+ return false; // eslint-disable-line @typescript-eslint/no-non-null-assertion
2937
+ return PHRASING_CONTENT_TAGS.has(element.nodeName) || ALWAYS_INLINE_TAGS.has(element.nodeName);
2938
+ }
2939
+ return true;
2940
+ }
2941
+ /**
2942
+ * Returns true when a dedicated-strategy element should fall back to html-block
2943
+ * because all its children are non-text, non-inline, non-dedicated elements
2944
+ * — indicating purely block-level embedded content that the dedicated text-block
2945
+ * strategy cannot represent.
2946
+ *
2947
+ * @param {HTMLElement} element - The dedicated-strategy element to check.
2948
+ * @returns {boolean} True when the element should be treated as html-block.
2949
+ */
2950
+ shouldFallBackToHtmlBlock(element) {
2951
+ const childNodes = Array.from(element.childNodes);
2952
+ if (childNodes.length === 0)
2953
+ return false;
2954
+ // List items are structural children whose dedicated strategies manage
2955
+ // both block and inline children independently — never override them.
2956
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2957
+ const parentTag = element.parentElement.nodeName;
2958
+ if (parentTag === 'UL' || parentTag === 'OL')
2959
+ return false;
2960
+ return childNodes.every((child) => child.nodeType === Node.ELEMENT_NODE &&
2961
+ child.textContent === '' &&
2962
+ !ALWAYS_INLINE_TAGS.has(child.nodeName) &&
2963
+ !PHRASING_CONTENT_TAGS.has(child.nodeName));
2964
+ }
2965
+ /**
2966
+ * Returns true for elements that should be treated as html containers.
2967
+ * A DIV is only a valid container when its first child is not an IMG
2968
+ * (IMG children are handled by the image strategy instead).
2969
+ *
2970
+ * @param {HTMLElement} element - Element to check.
2971
+ * @returns {boolean} True if the element qualifies as a html container.
2972
+ */
2973
+ isCustomHtmlContainer(element) {
2974
+ if (element.nodeName !== 'DIV') {
2975
+ return true;
2976
+ }
2977
+ return element.childNodes.length > 0 && element.childNodes[0].nodeName !== 'IMG';
2978
+ }
2802
2979
  /**
2803
2980
  * Generate HTML block DTO from an HTML element.
2804
2981
  *
@@ -2816,43 +2993,6 @@ class HtmlBlockStrategy extends BlockToRTEBlockStrategyAbstract {
2816
2993
  };
2817
2994
  }
2818
2995
  }
2819
- HtmlBlockStrategy.canHandleTags = [
2820
- 'ADDRESS',
2821
- 'ARTICLE',
2822
- 'ASIDE',
2823
- 'BLOCKQUOTE',
2824
- 'BUTTON',
2825
- 'CAPTION',
2826
- 'COL',
2827
- 'COLGROUP',
2828
- 'DIV',
2829
- 'DD',
2830
- 'DETAILS',
2831
- 'DL',
2832
- 'DT',
2833
- 'FIELDSET',
2834
- 'FIGCAPTION',
2835
- 'FIGURE',
2836
- 'FOOTER',
2837
- 'FORM',
2838
- 'HEADER',
2839
- 'HR',
2840
- 'HX',
2841
- 'INPUT',
2842
- 'LEGEND',
2843
- 'MAIN',
2844
- 'NAV',
2845
- 'PRE',
2846
- 'SECTION',
2847
- 'SUMMARY',
2848
- 'TABLE',
2849
- 'TBODY',
2850
- 'TD',
2851
- 'TFOOT',
2852
- 'TH',
2853
- 'THEAD',
2854
- 'TR',
2855
- ];
2856
2996
 
2857
2997
  /** Transform ul element to list block DTO */
2858
2998
  class UlToRTEListBlockStrategy extends BlockToRTEBlockStrategyAbstract {
@@ -3444,19 +3584,13 @@ class SpanImageToRTEImageBlockStrategy extends ElementToRTEImageBlockStrategyAbs
3444
3584
  /** Transform continue inline block elements to text block DTO */
3445
3585
  class ContinueInlineToRTETextBlockStrategy extends BlockToRTEBlockStrategyAbstract {
3446
3586
  /**
3447
- * Can be handle.
3448
- *
3449
- * @param {HTMLElement[]} elementsArray - Current elements.
3450
- * @param {number} currentIndex - Current element index.
3451
- * @returns {number} - can be handled element count.
3587
+ * @inheritDoc
3452
3588
  */
3453
- canHandle(elementsArray, currentIndex) {
3589
+ canHandle(elementsArray, currentIndex, options) {
3454
3590
  let count = 0;
3455
3591
  for (let i = currentIndex; i < elementsArray.length; i++) {
3456
3592
  const element = elementsArray[i];
3457
- if (element.nodeType === Node.TEXT_NODE ||
3458
- (ContinueInlineToRTETextBlockStrategy.canHandleTags.includes(element.nodeName) &&
3459
- !(element.textContent === '' && element.querySelector('IMG')))) {
3593
+ if (this.isInlineCandidate(element, options)) {
3460
3594
  count++;
3461
3595
  }
3462
3596
  else {
@@ -3516,14 +3650,88 @@ class ContinueInlineToRTETextBlockStrategy extends BlockToRTEBlockStrategyAbstra
3516
3650
  return null;
3517
3651
  }
3518
3652
  }
3653
+ /**
3654
+ * Check if the element is an inline candidate to be included in the text block.
3655
+ *
3656
+ * @param {HTMLElement} element - The element to check.
3657
+ * @param {VegaRTETransformOptions} [options] - Options for transformation.
3658
+ * @returns {boolean} - Whether the element is an inline candidate.
3659
+ */
3660
+ isInlineCandidate(element, options) {
3661
+ if (element.nodeType === Node.TEXT_NODE)
3662
+ return true;
3663
+ if (ALWAYS_INLINE_TAGS.has(element.nodeName))
3664
+ return true;
3665
+ if (this.isDedicatedBlockTag(element.nodeName))
3666
+ return false;
3667
+ if (options.autoMatchFormat === false && isInBlockTextContext(element))
3668
+ return true;
3669
+ return this.isInlineLeafOrWrapper(element);
3670
+ }
3671
+ /**
3672
+ * Returns true when the tag has a dedicated block strategy (excludes inline annotation tags CODE and A).
3673
+ *
3674
+ * @param {string} nodeName - The node name to check.
3675
+ * @returns {boolean} - Whether the tag is a dedicated block tag.
3676
+ */
3677
+ isDedicatedBlockTag(nodeName) {
3678
+ return DEDICATED_STRATEGY_TAGS.has(nodeName) && !ALWAYS_INLINE_TAGS.has(nodeName);
3679
+ }
3680
+ /**
3681
+ * Returns true for empty elements, text-only elements, or elements whose entire
3682
+ * descendant tree contains no block-level elements (e.g. {@code <u><i><b>text</b></i></u>}).
3683
+ *
3684
+ * @param {HTMLElement} element - The element to check.
3685
+ * @returns {boolean} - Whether the element is an inline leaf or wrapper.
3686
+ */
3687
+ isInlineLeafOrWrapper(element) {
3688
+ if (element.childNodes.length === 0) {
3689
+ // An empty element is inline only if it is a known HTML phrasing-content
3690
+ // element (SPAN, EM, STRONG, …). Block containers (DIV, SECTION, …)
3691
+ // and unknown/custom elements default to block separators.
3692
+ return PHRASING_CONTENT_TAGS.has(element.nodeName);
3693
+ }
3694
+ if (this.isTextOnlyElement(element)) {
3695
+ return PHRASING_CONTENT_TAGS.has(element.nodeName) || ALWAYS_INLINE_TAGS.has(element.nodeName);
3696
+ }
3697
+ return this.hasOnlyInlineDescendants(element);
3698
+ }
3699
+ /**
3700
+ * Returns true when the element has text-node children but no element children.
3701
+ *
3702
+ * @param {HTMLElement} element - The element to check.
3703
+ * @returns {boolean} - Whether the element contains only text nodes.
3704
+ */
3705
+ isTextOnlyElement(element) {
3706
+ const childNodes = Array.from(element.childNodes);
3707
+ return (!childNodes.some((child) => child.nodeType === Node.ELEMENT_NODE) &&
3708
+ childNodes.some((child) => child.nodeType === Node.TEXT_NODE));
3709
+ }
3710
+ /**
3711
+ * Returns true if the element's subtree contains only inline formatting wrappers.
3712
+ * Instead of maintaining a hard coded tag allowlist, the check derives from:
3713
+ * 1. {@link DEDICATED_STRATEGY_TAGS} — rejects known block/media tags
3714
+ * 2. Void-element check — elements with no child nodes (INPUT, COL, HR, …)
3715
+ * are replaced/embedded content, not formatting wrappers
3716
+ *
3717
+ * @param {HTMLElement} element - Element to inspect.
3718
+ * @returns {boolean} True if the element has no block-level descendants.
3719
+ */
3720
+ hasOnlyInlineDescendants(element) {
3721
+ for (let i = 0; i < element.children.length; i++) {
3722
+ const child = element.children[i];
3723
+ if (this.isDedicatedBlockTag(child.nodeName))
3724
+ return false;
3725
+ // An empty element is not a formatting wrapper — it is likely a void/embedded
3726
+ // element (INPUT, HR, COL, empty SPAN) that acts as a block separator.
3727
+ if (!child.hasChildNodes())
3728
+ return false;
3729
+ if (!this.hasOnlyInlineDescendants(child))
3730
+ return false;
3731
+ }
3732
+ return true;
3733
+ }
3519
3734
  }
3520
- ContinueInlineToRTETextBlockStrategy.canHandleTags = [
3521
- ...InlineHtmlAnnotationHandler.canHandleTags,
3522
- 'CODE',
3523
- 'A',
3524
- 'VEGA-RICH-TEXT-LINK-EDITOR',
3525
- 'BR',
3526
- ];
3527
3735
 
3528
3736
  /**
3529
3737
  * Class to handle text node elements and convert them to text node DTOs
@@ -3624,7 +3832,7 @@ class InlineElementToTextNodeStrategy extends ElementToTextNodeStrategy {
3624
3832
  // For empty dom, there will be no internal iteration, we need to handle it directly here.
3625
3833
  // Example: <span></span>, <video src='...'></video>
3626
3834
  const emptyNodeAnnotations = disableAutoMatchFormat
3627
- ? cleanObject(Object.assign(Object.assign({}, (RTETextNode.supportsHtmlTag(child.nodeName.toLowerCase()) ? curAnnotations : {})), { inlineHtml: curAnnotations.inlineHtml, plainText: isNonNullable(curAnnotations.inlineHtml) }))
3835
+ ? cleanObject(Object.assign(Object.assign({}, (RTETextNode.supportsHtmlTag(child.nodeName.toLowerCase()) ? curAnnotations : {})), { inlineHtml: curAnnotations.inlineHtml }))
3628
3836
  : curAnnotations;
3629
3837
  return Object.assign({}, this.generateTextNode('', emptyNodeAnnotations));
3630
3838
  }
@@ -3632,80 +3840,39 @@ class InlineElementToTextNodeStrategy extends ElementToTextNodeStrategy {
3632
3840
  }
3633
3841
 
3634
3842
  /**
3635
- * Abstract strategy class for filtering default styles in the rich text editor.
3636
- * Concrete strategies define which styles to strip via `stylesToBeFiltered`.
3637
- *
3638
- * This base is shared by two kinds of concrete strategies:
3639
- * 1. Block/node output strategies – filter inline styles when converting DTO → HTML.
3640
- * 2. Annotation parsing strategies – strip redundant defaults when converting HTML → DTO.
3843
+ * Filter styles strategy for image node, which defines the styles to be filtered and the conditions for filtering and refilling styles for image nodes.
3641
3844
  */
3642
- class RTEFilterStylesStrategy {
3845
+ class ImageFilterStylesStrategy extends RTEFilterStylesStrategy {
3846
+ constructor() {
3847
+ super(...arguments);
3848
+ this.stylesToBeFiltered = ImageAnnotation.getDefaultStyles();
3849
+ this.elementTagName = 'img';
3850
+ }
3643
3851
  /**
3644
- * Whether this strategy should always filter, regardless of `autoMatchFormat`.
3645
- * Override to `true` when the filtered styles are always emitted as inline
3646
- * styles by the DTO (e.g. image `vertical-align`), so stripping them from
3647
- * `customStyle` is always safe.
3852
+ * Used for the filterAnnotations method.
3648
3853
  *
3649
- * Defaults to `false` the strategy only runs when `autoMatchFormat` is enabled.
3650
- *
3651
- * @returns {boolean} Whether filtering should always apply.
3854
+ * @returns {boolean} Always `true` image defaults are emitted as inline styles.
3652
3855
  */
3653
3856
  get alwaysFilter() {
3654
- return false;
3857
+ return true;
3655
3858
  }
3656
3859
  /**
3657
- * Removes matched default styles from the `customStyle` property of the given annotations object.
3658
- * If all custom styles are defaults, the `customStyle` key is deleted entirely.
3659
- *
3660
- * @param {VegaRTEAnnotations} annotations - The annotations object (mutated in place).
3661
- * @returns {VegaRTEAnnotations} The same annotations reference.
3860
+ * @inheritDoc
3662
3861
  */
3663
- filterAnnotations(annotations) {
3664
- const customStyle = annotations.customStyle;
3665
- if (!customStyle) {
3666
- return annotations;
3667
- }
3668
- this.extractAndDeleteMatchedStyles(customStyle);
3669
- if (Object.keys(customStyle).length === 0) {
3670
- delete annotations.customStyle;
3671
- }
3672
- return annotations;
3862
+ canFilter(blockOrNodeInstance) {
3863
+ return Predicate$1.isImageNode(blockOrNodeInstance);
3673
3864
  }
3674
3865
  /**
3675
- * Removes configured default style properties from the target styles object.
3676
- * Only properties whose value matches the configured default exactly are deleted.
3677
- *
3678
- * @param {Nullable<RTEFilterStyles>} styles - The styles object to mutate.
3679
- * @returns {boolean} `true` if at least one style was extracted.
3866
+ * @inheritDoc
3680
3867
  */
3681
- extractAndDeleteMatchedStyles(styles) {
3682
- let wasExtracted = false;
3683
- if (styles) {
3684
- const defaults = this.stylesToBeFiltered;
3685
- const styleKeys = Object.keys(defaults);
3686
- for (const key of styleKeys) {
3687
- if (styles[key] === defaults[key]) {
3688
- delete styles[key];
3689
- wasExtracted = true;
3690
- }
3691
- }
3692
- }
3693
- return wasExtracted;
3868
+ canRefill(_blockOrNodeClassName, element) {
3869
+ return element.tagName.toLowerCase() === this.elementTagName;
3694
3870
  }
3695
- }
3696
-
3697
- /**
3698
- * Filters the default ImageAnnotation base styles (verticalAlign) from
3699
- * customStyle when parsing an RTEImageNode.
3700
- */
3701
- class ImageFilterStylesStrategy extends RTEFilterStylesStrategy {
3702
- constructor() {
3703
- super(...arguments);
3704
- this.stylesToBeFiltered = ImageAnnotation.getDefaultStyles();
3705
- }
3706
- /** @returns {boolean} Always `true` — image defaults are emitted as inline styles. */
3707
- get alwaysFilter() {
3708
- return true;
3871
+ /**
3872
+ * @inheritDoc
3873
+ */
3874
+ toCssText() {
3875
+ return this.buildCssTextForStyles(this.elementTagName, this.classNameToBeAdded);
3709
3876
  }
3710
3877
  }
3711
3878
 
@@ -3717,6 +3884,29 @@ class ListBlockFilterStylesStrategy extends RTEFilterStylesStrategy {
3717
3884
  constructor() {
3718
3885
  super(...arguments);
3719
3886
  this.stylesToBeFiltered = ListAnnotation.getDefaultStyles();
3887
+ this.elementTagName = 'ol,ul';
3888
+ }
3889
+ /**
3890
+ * @inheritDoc
3891
+ */
3892
+ canFilter(blockOrNodeInstance) {
3893
+ return Predicate$1.isListBlock(blockOrNodeInstance.constructor.name);
3894
+ }
3895
+ /**
3896
+ * @inheritDoc
3897
+ */
3898
+ canRefill(blockOrNodeClassName, element) {
3899
+ return Predicate$1.isListBlock(blockOrNodeClassName) && element.matches(this.elementTagName);
3900
+ }
3901
+ /**
3902
+ * @inheritDoc
3903
+ */
3904
+ toCssText() {
3905
+ const selector = this.elementTagName
3906
+ .split(',')
3907
+ .map((tag) => `.${RTEFilterStylesStrategy.RTE_CONTENT_CONTAINER_CLASS_NAME} ${tag.trim()}`)
3908
+ .join(', ');
3909
+ return `${selector} { ${this.convertStylesMapToCssText(this.stylesToBeFiltered)} }`;
3720
3910
  }
3721
3911
  }
3722
3912
 
@@ -3728,7 +3918,44 @@ class ListBlockFilterStylesStrategy extends RTEFilterStylesStrategy {
3728
3918
  class ListItemBlockFilterStylesStrategy extends RTEFilterStylesStrategy {
3729
3919
  constructor() {
3730
3920
  super(...arguments);
3731
- this.stylesToBeFiltered = TextStyleAnnotation.getDefaultStyles('paragraph') || {};
3921
+ this.stylesToBeFiltered = TextStyleAnnotation.getDefaultStyles('paragraph');
3922
+ this.elementTagName = 'li';
3923
+ this.headingOrTitleClassNamePattern = /^v-rte-(h[1-6]|title|subtitle)$/;
3924
+ }
3925
+ /**
3926
+ * Check the important font-size for list item block are default styles, and the block is a list item block.
3927
+ *
3928
+ * @inheritDoc
3929
+ */
3930
+ canFilter(blockOrNodeInstance) {
3931
+ const styles = blockOrNodeInstance.getStyles();
3932
+ const isDefaultStyles = !styles.fontSize ||
3933
+ this.isBlockOrNodeStylesMatchFilterStyles(blockOrNodeInstance, ['fontSize', 'lineHeight']);
3934
+ return Predicate$1.isListItemBlock(blockOrNodeInstance.constructor.name) && isDefaultStyles;
3935
+ }
3936
+ /**
3937
+ * @inheritDoc
3938
+ */
3939
+ canRefill(blockOrNodeClassName, element) {
3940
+ return (Predicate$1.isListItemBlock(blockOrNodeClassName) &&
3941
+ element.matches(this.elementTagName) &&
3942
+ this.isElementNotHeadingOrTitle(element));
3943
+ }
3944
+ /**
3945
+ * @inheritDoc
3946
+ */
3947
+ toCssText() {
3948
+ return this.buildCssTextForStyles(this.elementTagName);
3949
+ }
3950
+ /**
3951
+ * Check the list item element does not have heading or title class names.
3952
+ *
3953
+ * @param {HTMLElement} element - The list item element to check.
3954
+ * @returns {boolean} - True if the element does not have heading or title class names, false otherwise.
3955
+ */
3956
+ isElementNotHeadingOrTitle(element) {
3957
+ const classNames = element.className.split(' ');
3958
+ return !classNames.some((className) => this.headingOrTitleClassNamePattern.test(className.trim()));
3732
3959
  }
3733
3960
  }
3734
3961
 
@@ -3771,13 +3998,13 @@ class AlignmentFilterStylesStrategy extends RTEFilterStylesStrategy {
3771
3998
  }
3772
3999
 
3773
4000
  /**
3774
- * Filters the default CodeAnnotation styles (fontFamily, whiteSpace) from
3775
- * customStyle when parsing an RTETextNode that has a `code` annotation.
4001
+ * The CodeFilterStylesStrategy is responsible for filtering code styles from text nodes that are annotated as code.
3776
4002
  */
3777
4003
  class CodeFilterStylesStrategy extends RTEFilterStylesStrategy {
3778
4004
  constructor() {
3779
4005
  super(...arguments);
3780
4006
  this.stylesToBeFiltered = CodeAnnotation.getDefaultStyles();
4007
+ this.elementTagName = 'code';
3781
4008
  }
3782
4009
  /**
3783
4010
  * Only strips code-default styles when the `code` annotation is present,
@@ -3793,34 +4020,33 @@ class CodeFilterStylesStrategy extends RTEFilterStylesStrategy {
3793
4020
  }
3794
4021
  return super.filterAnnotations(annotations);
3795
4022
  }
3796
- }
3797
-
3798
- /**
3799
- * Filters the default internal link styles (color) from `link.customStyle` when
3800
- * parsing an RTETextNode. Vega applies these styles during standalone rendering;
3801
- * they are redundant when parsed back and must not be persisted as custom overrides.
3802
- */
3803
- class LinkFilterStylesStrategy extends RTEFilterStylesStrategy {
3804
- constructor() {
3805
- super(...arguments);
3806
- this.stylesToBeFiltered = LinkGroupAnnotation.getDefaultStyles();
4023
+ /**
4024
+ * Determines whether the dto instance is a code text node.
4025
+ *
4026
+ * @param {RTEBlock | RTENode} blockOrNodeInstance - The block or node instance to check.
4027
+ * @returns {boolean} - True if the instance is a code text node, false otherwise.
4028
+ */
4029
+ canFilter(blockOrNodeInstance) {
4030
+ return Predicate$1.isCodeNode(blockOrNodeInstance);
3807
4031
  }
3808
4032
  /**
3809
- * Filter default link styles from `link.customStyle` in annotations.
4033
+ * Check if the node is a text node and it is a code node.
3810
4034
  *
3811
- * @param {VegaRTEAnnotations} annotations - The annotations to filter.
3812
- * @returns {VegaRTEAnnotations} The same annotations reference with link.customStyle cleaned up.
4035
+ * @param {string} blockOrNodeClassName - The class name of the block or node instance to check.
4036
+ * @param {HTMLElement} element - The HTML element of the node instance.
4037
+ * @returns {boolean} True if the node is a text node it a code element.
3813
4038
  */
3814
- filterAnnotations(annotations) {
3815
- const link = annotations.link;
3816
- if (!(link === null || link === void 0 ? void 0 : link.customStyle)) {
3817
- return annotations;
3818
- }
3819
- this.extractAndDeleteMatchedStyles(link.customStyle);
3820
- if (Object.keys(link.customStyle).length === 0) {
3821
- delete link.customStyle;
3822
- }
3823
- return annotations;
4039
+ canRefill(blockOrNodeClassName, element) {
4040
+ return Predicate$1.isTextNode(blockOrNodeClassName) && element.matches(this.elementTagName);
4041
+ }
4042
+ /**
4043
+ * The code style in title and heading no need to be bold in default.
4044
+ *
4045
+ * @returns {string} The CSS text string for code styles.
4046
+ */
4047
+ toCssText() {
4048
+ const selector = `.${RTEFilterStylesStrategy.RTE_CONTENT_CONTAINER_CLASS_NAME} ${this.elementTagName}`;
4049
+ return `${selector} { ${this.convertStylesMapToCssText(Object.assign(Object.assign({}, this.stylesToBeFiltered), { fontWeight: '500' }))} }`;
3824
4050
  }
3825
4051
  }
3826
4052
 
@@ -3912,6 +4138,244 @@ class TextFormatFilterStylesStrategy extends RTEFilterStylesStrategy {
3912
4138
  }
3913
4139
  }
3914
4140
 
4141
+ /**
4142
+ *
4143
+ */
4144
+ class ParagraphFilterStylesStrategy extends RTEFilterStylesStrategy {
4145
+ constructor() {
4146
+ super(...arguments);
4147
+ this.stylesToBeFiltered = TextStyleAnnotation.getDefaultStyles('paragraph');
4148
+ this.type = 'paragraph';
4149
+ this.elementTagName = 'p';
4150
+ }
4151
+ /**
4152
+ * Don't run the filterAnnotations for paragraph heading, title, subtitle, list heading item, list title item, list subtitle item.
4153
+ * Already handle it in html-element-to-annotation-generator.ts#removeTextStyleDefaultsFromCustomStyle
4154
+ *
4155
+ * @inheritDoc
4156
+ */
4157
+ filterAnnotations(annotations) {
4158
+ return annotations;
4159
+ }
4160
+ /**
4161
+ * Determines whether the dto instance is text block and has the same type as the strategy's configured type.
4162
+ *
4163
+ * @param {RTEBlock | RTENode} blockOrNodeInstance - The block or node instance to check.
4164
+ * @returns {boolean} - True if the instance is a text block with the same type as the strategy, false otherwise.
4165
+ */
4166
+ canFilter(blockOrNodeInstance) {
4167
+ return (Predicate$1.isTextBlock(blockOrNodeInstance.constructor.name) &&
4168
+ blockOrNodeInstance.type === this.type);
4169
+ }
4170
+ /**
4171
+ * @inheritDoc
4172
+ */
4173
+ canRefill(blockOrNodeClassName, element) {
4174
+ const selector = this.classNameToBeAdded
4175
+ ? `.${this.classNameToBeAdded}`
4176
+ : this.elementTagName;
4177
+ return Predicate$1.isTextBlock(blockOrNodeClassName) && element.matches(selector);
4178
+ }
4179
+ /**
4180
+ * @inheritDoc
4181
+ */
4182
+ toCssText() {
4183
+ return this.buildCssTextForStyles(this.elementTagName, this.classNameToBeAdded);
4184
+ }
4185
+ }
4186
+
4187
+ /**
4188
+ * The HeadingFilterStylesStrategy class is responsible for filtering and refilling styles for heading text blocks (h1 to h6) in the rich text editor.
4189
+ */
4190
+ class HeadingFilterStylesStrategy extends ParagraphFilterStylesStrategy {
4191
+ constructor(level) {
4192
+ super();
4193
+ this.type = 'heading-1';
4194
+ this.elementTagName = 'h1';
4195
+ this.type = `heading-${level}`;
4196
+ this.elementTagName = `h${level}`;
4197
+ this.stylesToBeFiltered = TextStyleAnnotation.getDefaultStyles(this.type);
4198
+ }
4199
+ }
4200
+
4201
+ /**
4202
+ * The TitleFilterStylesStrategy class is responsible for filtering and refilling styles for title and subtitle text blocks in the rich text editor.
4203
+ */
4204
+ class TitleFilterStylesStrategy extends ParagraphFilterStylesStrategy {
4205
+ constructor(titleType) {
4206
+ super();
4207
+ this.type = 'title';
4208
+ this.elementTagName = 'div';
4209
+ this.classNameToBeAdded = 'v-rte-title';
4210
+ this.type = titleType;
4211
+ this.classNameToBeAdded = `v-rte-${titleType}`;
4212
+ this.stylesToBeFiltered = TextStyleAnnotation.getDefaultStyles(this.type);
4213
+ }
4214
+ }
4215
+
4216
+ /**
4217
+ * The TitleHeadingNodeFilterStylesStrategy is responsible for filtering styles from text nodes that are children of title and heading blocks.
4218
+ * In title and heading blocks, the text nodes will have a default bold style.
4219
+ */
4220
+ class TitleHeadingNodeFilterStylesStrategy extends RTEFilterStylesStrategy {
4221
+ constructor() {
4222
+ super(...arguments);
4223
+ this.stylesToBeFiltered = TitleHeadingNodeFilterStylesStrategy.BOLD_STYLES;
4224
+ this.elementTagName = 'span';
4225
+ this.parentBlockTypes = [
4226
+ 'heading-1',
4227
+ 'heading-2',
4228
+ 'heading-3',
4229
+ 'heading-4',
4230
+ 'heading-5',
4231
+ 'heading-6',
4232
+ 'title',
4233
+ ];
4234
+ this.parentElementSelectors = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', '.v-rte-title'];
4235
+ this.toBeCheckedSelector = this.parentElementSelectors.join(',');
4236
+ }
4237
+ /**
4238
+ * Don't run filterAnnotations method, because already handle it in text format filter strategy.
4239
+ *
4240
+ * @inheritDoc
4241
+ */
4242
+ filterAnnotations(annotations) {
4243
+ return annotations;
4244
+ }
4245
+ /**
4246
+ * Determines whether the dto instance is text node and its parent block is a heading or title.
4247
+ *
4248
+ * @param {RTEBlock | RTENode} blockOrNodeInstance - The block or node instance to check.
4249
+ * @returns {boolean} - True if the instance is a text node and its parent block is a heading or title, false otherwise.
4250
+ */
4251
+ canFilter(blockOrNodeInstance) {
4252
+ return (Predicate$1.isTextNode(blockOrNodeInstance.constructor.name) &&
4253
+ this.parentBlockIsHeadingOrTitle(blockOrNodeInstance));
4254
+ }
4255
+ /**
4256
+ * Check if the node is a text node and its parent block is a heading or title.
4257
+ *
4258
+ * @param {string} blockOrNodeClassName - The class name of the block or node instance to check.
4259
+ * @param {HTMLElement} element - The HTML element of the node instance.
4260
+ * @returns {boolean} True if the node is a text node and its parent block is a heading or title, false otherwise.
4261
+ */
4262
+ canRefill(blockOrNodeClassName, element) {
4263
+ return (Predicate$1.isTextNode(blockOrNodeClassName) &&
4264
+ element.nodeName === 'SPAN' &&
4265
+ this.isHeadingOrTitleChild(element));
4266
+ }
4267
+ /**
4268
+ * @inheritDoc
4269
+ */
4270
+ toCssText() {
4271
+ const selectors = this.parentElementSelectors.map((key) => `.${TitleHeadingNodeFilterStylesStrategy.RTE_CONTENT_CONTAINER_CLASS_NAME} ${key}`);
4272
+ return `${selectors.join(',')} { ${this.convertStylesMapToCssText()} }`;
4273
+ }
4274
+ /**
4275
+ * Checks if the parent block of the given node instance is a heading or title.
4276
+ *
4277
+ * @param {RTENode | RTEBlock} blockOrNodeInstance - The node instance to check.
4278
+ * @returns {boolean} True if the parent block is a heading or title, false otherwise.
4279
+ */
4280
+ parentBlockIsHeadingOrTitle(blockOrNodeInstance) {
4281
+ const parentBlock = blockOrNodeInstance.parent;
4282
+ return parentBlock ? this.parentBlockTypes.includes(parentBlock.type) : false;
4283
+ }
4284
+ /**
4285
+ * Check if the element is a descendant of a heading or title element.
4286
+ * Traverses upward through the DOM, stopping at the block element or body element
4287
+ * to avoid unbounded traversal to the document root.
4288
+ *
4289
+ * <h1><span>bold text</span></h1>
4290
+ * <h1><a><span>link text</span></a></h1>
4291
+ * <h1><a><b><span>nested text</span></b></a></h1>
4292
+ *
4293
+ * @param {HTMLElement} element - The element to check.
4294
+ * @returns {boolean} True if the element is a descendant of a heading or title, false otherwise.
4295
+ */
4296
+ isHeadingOrTitleChild(element) {
4297
+ let current = element.parentElement;
4298
+ while (current) {
4299
+ if (current.matches(this.toBeCheckedSelector))
4300
+ return true;
4301
+ // Stop traversing upward if we reach a block element to prevent unbounded traversal to the document root. The title children will always be wrapped in a div, so we can safely stop at div as well.
4302
+ if (TitleHeadingNodeFilterStylesStrategy.NON_HEADING_TITLE_ELEMENT_TAGS.includes(current.tagName))
4303
+ return false;
4304
+ current = current.parentElement;
4305
+ }
4306
+ return false;
4307
+ }
4308
+ }
4309
+ TitleHeadingNodeFilterStylesStrategy.BOLD_STYLES = {
4310
+ fontWeight: '700',
4311
+ };
4312
+ TitleHeadingNodeFilterStylesStrategy.NON_HEADING_TITLE_ELEMENT_TAGS = [
4313
+ 'TD',
4314
+ 'TH',
4315
+ 'TR',
4316
+ 'TABLE',
4317
+ 'THEAD',
4318
+ 'TBODY',
4319
+ 'DIV',
4320
+ 'BODY',
4321
+ ];
4322
+
4323
+ /**
4324
+ * Filters the default heading styles from customStyle when parsing an RTEListItemBlock that is supposed to be a heading.
4325
+ */
4326
+ class ListHeadingItemBlockFilterStylesStrategy extends HeadingFilterStylesStrategy {
4327
+ constructor(level) {
4328
+ super(level);
4329
+ this.classNameToBeAdded = `v-rte-h${level}`;
4330
+ this.elementTagName = 'li';
4331
+ }
4332
+ /**
4333
+ * Check the important font-size and line-height for list item block are default styles, and the block is a list item block.
4334
+ *
4335
+ * @inheritDoc
4336
+ */
4337
+ canFilter(blockOrNodeInstance) {
4338
+ return (Predicate$1.isListItemBlock(blockOrNodeInstance.constructor.name) &&
4339
+ this.isBlockOrNodeStylesMatchFilterStyles(blockOrNodeInstance, ['fontSize', 'lineHeight']));
4340
+ }
4341
+ /**
4342
+ * @inheritDoc
4343
+ */
4344
+ canRefill(blockOrNodeClassName, element) {
4345
+ return (Predicate$1.isListItemBlock(blockOrNodeClassName) &&
4346
+ element.matches(this.elementTagName) &&
4347
+ element.classList.contains(this.classNameToBeAdded));
4348
+ }
4349
+ }
4350
+
4351
+ /**
4352
+ * Filters the default title/subtitle styles from customStyle when parsing an RTEListItemBlock that is supposed to be a title/subtitle.
4353
+ */
4354
+ class ListTitleItemBlockFilterStylesStrategy extends TitleFilterStylesStrategy {
4355
+ constructor(type) {
4356
+ super(type);
4357
+ this.classNameToBeAdded = `v-rte-${type}`;
4358
+ this.elementTagName = 'li';
4359
+ }
4360
+ /**
4361
+ * Check the important font-size and line-height for list item block are default styles, and the block is a list item block.
4362
+ *
4363
+ * @inheritDoc
4364
+ */
4365
+ canFilter(blockOrNodeInstance) {
4366
+ return (Predicate$1.isListItemBlock(blockOrNodeInstance.constructor.name) &&
4367
+ this.isBlockOrNodeStylesMatchFilterStyles(blockOrNodeInstance, ['fontSize', 'lineHeight']));
4368
+ }
4369
+ /**
4370
+ * @inheritDoc
4371
+ */
4372
+ canRefill(blockOrNodeClassName, element) {
4373
+ return (Predicate$1.isListItemBlock(blockOrNodeClassName) &&
4374
+ element.matches(this.elementTagName) &&
4375
+ element.classList.contains(this.classNameToBeAdded));
4376
+ }
4377
+ }
4378
+
3915
4379
  /**
3916
4380
  * Register and setup the default DTO classes and their basic action strategies.
3917
4381
  */
@@ -3947,25 +4411,46 @@ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new SpanImageToR
3947
4411
  ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new VegaImageToRTEImageBlockStrategy());
3948
4412
  ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new ImgToRTEImageBlockStrategy());
3949
4413
  ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new InlineBlockToRTETextBlockStrategy());
3950
- ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new JiraCodeToRTECodeBlockStrategy());
3951
- ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new VegaCodeBlockToRTECodeBlockStrategy());
3952
4414
  ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new LiToRTEListItemBlockStrategy());
3953
4415
  ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new ULNotLiChildToRTEListItemBlockStrategy());
3954
4416
  ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new OlToRTEListBlockStrategy());
3955
4417
  ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new UlToRTEListBlockStrategy());
3956
4418
  ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new HtmlBlockStrategy());
4419
+ //!important: Code block strategies must be registered after HtmlBlockStrategy because registerElementToBlockStrategy uses unshift, giving later registrations higher priority.
4420
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new JiraCodeToRTECodeBlockStrategy());
4421
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(new VegaCodeBlockToRTECodeBlockStrategy());
3957
4422
  ElementToDTOClassStrategyManager.registerElementToNodeStrategy(new InlineElementToTextNodeStrategy());
3958
4423
  ElementToDTOClassStrategyManager.registerElementToNodeStrategy(new PlainTextToTextNodeStrategy());
3959
4424
  // Register filter styles strategies (remove redundant default styles during HTML → DTO conversion)
3960
- RTEFilterStylesStrategyRegistry.register(RTEListBlock.name, new ListBlockFilterStylesStrategy());
3961
- RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListItemBlockFilterStylesStrategy());
3962
4425
  RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new AlignmentFilterStylesStrategy());
3963
4426
  RTEFilterStylesStrategyRegistry.register(RTEListBlock.name, new AlignmentFilterStylesStrategy());
3964
4427
  RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new AlignmentFilterStylesStrategy());
3965
- RTEFilterStylesStrategyRegistry.register(RTEImageNode.name, new ImageFilterStylesStrategy());
3966
- RTEFilterStylesStrategyRegistry.register(RTETextNode.name, new LinkFilterStylesStrategy());
3967
4428
  RTEFilterStylesStrategyRegistry.register(RTETextNode.name, new TextFormatFilterStylesStrategy());
4429
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new ParagraphFilterStylesStrategy());
4430
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new HeadingFilterStylesStrategy(1));
4431
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new HeadingFilterStylesStrategy(2));
4432
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new HeadingFilterStylesStrategy(3));
4433
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new HeadingFilterStylesStrategy(4));
4434
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new HeadingFilterStylesStrategy(5));
4435
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new HeadingFilterStylesStrategy(6));
4436
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new TitleFilterStylesStrategy('title'));
4437
+ RTEFilterStylesStrategyRegistry.register(RTETextBlock.name, new TitleFilterStylesStrategy('subtitle'));
4438
+ RTEFilterStylesStrategyRegistry.register(RTETextNode.name, new TitleHeadingNodeFilterStylesStrategy());
3968
4439
  RTEFilterStylesStrategyRegistry.register(RTETextNode.name, new CodeFilterStylesStrategy());
4440
+ RTEFilterStylesStrategyRegistry.register(RTETextNode.name, new LinkFilterStylesStrategy());
4441
+ RTEFilterStylesStrategyRegistry.register(RTEImageNode.name, new ImageFilterStylesStrategy());
4442
+ RTEFilterStylesStrategyRegistry.register(RTECodeBlock.name, new CodeBlockFilterStylesStrategy());
4443
+ RTEFilterStylesStrategyRegistry.register(RTECodeBlockNode.name, new CodeBlockNodeFilterStylesStrategy());
4444
+ RTEFilterStylesStrategyRegistry.register(RTEListBlock.name, new ListBlockFilterStylesStrategy());
4445
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListItemBlockFilterStylesStrategy());
4446
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListHeadingItemBlockFilterStylesStrategy(1));
4447
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListHeadingItemBlockFilterStylesStrategy(2));
4448
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListHeadingItemBlockFilterStylesStrategy(3));
4449
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListHeadingItemBlockFilterStylesStrategy(4));
4450
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListHeadingItemBlockFilterStylesStrategy(5));
4451
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListHeadingItemBlockFilterStylesStrategy(6));
4452
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListTitleItemBlockFilterStylesStrategy('title'));
4453
+ RTEFilterStylesStrategyRegistry.register(RTEListItemBlock.name, new ListTitleItemBlockFilterStylesStrategy('subtitle'));
3969
4454
 
3970
4455
  /**
3971
4456
  * StylePreservator handles CSP-compliant style management by temporarily converting
@@ -4292,6 +4777,15 @@ class VegaRTEContent {
4292
4777
  .filter(isNonNullable);
4293
4778
  return new VegaRTEContent(blocks);
4294
4779
  }
4780
+ /**
4781
+ * Generates the content style file for the rich text editor based on the registered filter styles strategies.
4782
+ *
4783
+ * @param {VegaRTEGenerateStyleOptions} options - Options for generating the content style file.
4784
+ * @returns {string} The html template style text.
4785
+ */
4786
+ static generateContentStyles(options) {
4787
+ return RTEFilterStylesStrategyRegistry.generateAllStylesContent(options === null || options === void 0 ? void 0 : options.enableFontImports);
4788
+ }
4295
4789
  /**
4296
4790
  * Clones the content state.
4297
4791
  *
@@ -4314,18 +4808,20 @@ class VegaRTEContent {
4314
4808
  /**
4315
4809
  * Converts the content state to HTML.
4316
4810
  *
4317
- * @deprecated The [`options`]{@link options} parameter is deprecated and will be removed in the future.
4318
- * @param {VegaRTETransformOptions} [options] - Deprecated. Optional rendering context (currently unused).
4811
+ * @param {VegaRTETransformOptions} [options] - The conversion options.
4319
4812
  * @returns {string} The HTML representation of the content state.
4320
4813
  */
4321
4814
  toHtml(options) {
4322
- if (options) {
4323
- LogUtility.warn(`The 'options' parameter in toHtml method is deprecated and will be removed in the future.`);
4815
+ if (options &&
4816
+ (isNonNullable(options.autoMatchFormat) || isNonNullable(options.skipCustomAnnotations))) {
4817
+ LogUtility.warn(`The 'options' parameter's properties 'autoMatchFormat' and 'skipCustomAnnotations' in toHtml method are deprecated and will be removed in the future.`);
4324
4818
  }
4325
4819
  if (this.isEmpty()) {
4326
4820
  return '';
4327
4821
  }
4328
- return this.children.map((block) => block.toHtml()).join('');
4822
+ return this.children
4823
+ .map((block) => block.toHtml({ filterInlineStyles: options === null || options === void 0 ? void 0 : options.filterInlineStyles }))
4824
+ .join('');
4329
4825
  }
4330
4826
  /**
4331
4827
  * Checks if the content state is empty.
@@ -4333,7 +4829,14 @@ class VegaRTEContent {
4333
4829
  * @returns {boolean} True if the content state is empty, false otherwise.
4334
4830
  */
4335
4831
  isEmpty() {
4336
- return this.children.length === 0 || (this.children.length === 1 && !this.children[0].isNotEmpty());
4832
+ if (this.children.length === 0) {
4833
+ return true;
4834
+ }
4835
+ if (this.children.length === 1) {
4836
+ const block = this.children[0];
4837
+ return !block.isNotEmpty();
4838
+ }
4839
+ return false;
4337
4840
  }
4338
4841
  /**
4339
4842
  * Internal method to add the block item, remove the block item