@heartlandone/vega 2.76.0 → 2.77.1

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 (508) hide show
  1. package/dist/cjs/{app-globals-12b7d808.js → app-globals-1021e33e.js} +7 -7
  2. package/dist/cjs/aria-attributes-value-mapper-9a41b9cf.js +143 -0
  3. package/dist/cjs/{child-nodes-event-prevent-slimmer-84435957.js → child-nodes-event-prevent-slimmer-cc6d2919.js} +1 -1
  4. package/dist/cjs/{code-block-f1480ec3.js → code-block-f9b86a25.js} +1 -1
  5. package/dist/cjs/{component-value-history-controller-slimmer.abstract-a9264cc8.js → component-value-history-controller-slimmer.abstract-6bcff70b.js} +3 -3
  6. package/dist/cjs/{date-required-rule-912469e0.js → date-required-rule-d3c2d088.js} +1 -1
  7. package/dist/cjs/{design-token-41baf118.js → design-token-b21879b6.js} +2 -2
  8. package/dist/cjs/{dto-renderer-manager-809c947b.js → dto-renderer-manager-e2823eb8.js} +2 -2
  9. package/dist/cjs/{element-appender-slimmer-34e4eb56.js → element-appender-slimmer-40d39bba.js} +179 -20
  10. package/dist/cjs/{form-field-controller-slimmer-102f37c7.js → form-field-controller-slimmer-1b3a1388.js} +1 -1
  11. package/dist/cjs/{image-annotation-action-8d9fa20c.js → image-annotation-action-b83283d4.js} +2 -2
  12. package/dist/cjs/index.cjs.js +13 -13
  13. package/dist/cjs/{inject-keyboard-manager-0f5bd568.js → inject-keyboard-manager-ea5c598e.js} +1 -1
  14. package/dist/cjs/{internal-translation-controller-053eb0f1.js → internal-translation-controller-1f84ab0a.js} +15 -0
  15. package/dist/cjs/{keyboard-manager-055e9f67.js → keyboard-manager-16494c34.js} +1 -1
  16. package/dist/cjs/{keyboard-manager-slimmer-0cc0c1c7.js → keyboard-manager-slimmer-5b8fa209.js} +1 -1
  17. package/dist/cjs/legend-input-processor-1e53e5bc.js +2126 -0
  18. package/dist/cjs/loader.cjs.js +9 -9
  19. package/dist/cjs/{month-view-generator-6a6dd527.js → month-view-generator-1a57578d.js} +1 -1
  20. package/dist/cjs/{public-rules-922849f3.js → public-rules-5bd1624d.js} +7 -7
  21. package/dist/cjs/{range-8aa49b08.js → range-7a038973.js} +1 -1
  22. package/dist/cjs/{responsive-format-facade-ea59bdcd.js → responsive-format-facade-0b65ce4a.js} +2 -2
  23. package/dist/cjs/{rich-text-editor-required-rule-22225840.js → rich-text-editor-required-rule-d984c0b6.js} +1 -1
  24. package/dist/cjs/{string-format-strategy.abstract-f2575647.js → string-format-strategy.abstract-714bfad2.js} +1 -1
  25. package/dist/cjs/{string-input-formatter-slimmer-0a334fc6.js → string-input-formatter-slimmer-9ef2ec7a.js} +1 -1
  26. package/dist/cjs/{string-mask-strategy-dda58395.js → string-mask-strategy-bd2c18df.js} +2 -2
  27. package/dist/cjs/{style-formatter-0c3ced39.js → style-formatter-7a4e9811.js} +2 -2
  28. package/dist/cjs/{time-required-rule-d6fa7aa8.js → time-required-rule-50784b9f.js} +1 -1
  29. package/dist/cjs/{token-extension-07cac85d.js → token-extension-5a1c473e.js} +102 -81
  30. package/dist/cjs/{translation-slimmer-4533bd67.js → translation-slimmer-2c207e34.js} +1 -1
  31. package/dist/cjs/{type-guard-407ba0b8.js → type-guard-cd0376d4.js} +36 -1
  32. package/dist/cjs/{valid-credit-card-number-rule-41a8b51b.js → valid-credit-card-number-rule-3f8dc897.js} +1 -1
  33. package/dist/cjs/vega-accordion.cjs.entry.js +7 -7
  34. package/dist/cjs/vega-app-header-button.cjs.entry.js +39 -146
  35. package/dist/cjs/vega-banner.cjs.entry.js +1 -1
  36. package/dist/cjs/vega-bar-chart.cjs.entry.js +2 -2
  37. package/dist/cjs/vega-box.cjs.entry.js +6 -6
  38. package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -2
  39. package/dist/cjs/vega-button-circle.cjs.entry.js +23 -8
  40. package/dist/cjs/vega-button-group_2.cjs.entry.js +2 -2
  41. package/dist/cjs/vega-button-link.cjs.entry.js +18 -2
  42. package/dist/cjs/vega-button.cjs.entry.js +5 -5
  43. package/dist/cjs/vega-calendar_4.cjs.entry.js +7 -7
  44. package/dist/cjs/vega-card.cjs.entry.js +5 -5
  45. package/dist/cjs/vega-carousel.cjs.entry.js +4 -4
  46. package/dist/cjs/vega-checkbox_2.cjs.entry.js +4 -4
  47. package/dist/cjs/vega-chip.cjs.entry.js +6 -6
  48. package/dist/cjs/vega-code-block.cjs.entry.js +10 -10
  49. package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
  50. package/dist/cjs/vega-combo-box.cjs.entry.js +7 -7
  51. package/dist/cjs/vega-date-picker_2.cjs.entry.js +128 -25
  52. package/dist/cjs/vega-dialog_2.cjs.entry.js +6 -6
  53. package/dist/cjs/vega-divider.cjs.entry.js +5 -5
  54. package/dist/cjs/vega-dropdown_5.cjs.entry.js +33 -9
  55. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  56. package/dist/cjs/vega-file-uploader.cjs.entry.js +3 -3
  57. package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
  58. package/dist/cjs/vega-flex.cjs.entry.js +6 -6
  59. package/dist/cjs/vega-font.cjs.entry.js +5 -5
  60. package/dist/cjs/vega-form.cjs.entry.js +5 -5
  61. package/dist/cjs/vega-grid.cjs.entry.js +5 -5
  62. package/dist/cjs/vega-icon.cjs.entry.js +5 -5
  63. package/dist/cjs/vega-image-uploader.cjs.entry.js +7 -7
  64. package/dist/cjs/vega-input-credit-card.cjs.entry.js +8 -8
  65. package/dist/cjs/vega-input-numeric.cjs.entry.js +7 -7
  66. package/dist/cjs/vega-input-passcode.cjs.entry.js +39 -9
  67. package/dist/cjs/vega-input-phone-number.cjs.entry.js +4757 -5589
  68. package/dist/cjs/vega-input-range.cjs.entry.js +5 -5
  69. package/dist/cjs/vega-input-select.cjs.entry.js +7 -7
  70. package/dist/cjs/vega-input.cjs.entry.js +220 -125
  71. package/dist/cjs/vega-left-nav_5.cjs.entry.js +7 -8
  72. package/dist/cjs/vega-line-chart.cjs.entry.js +325 -23
  73. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +4 -4
  74. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +2 -2
  75. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
  76. package/dist/cjs/vega-pagination.cjs.entry.js +6 -6
  77. package/dist/cjs/vega-pie-chart.cjs.entry.js +5 -88
  78. package/dist/cjs/vega-popover_2.cjs.entry.js +9 -9
  79. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +4 -4
  80. package/dist/cjs/vega-radio_2.cjs.entry.js +7 -7
  81. package/dist/cjs/vega-rich-text-content.cjs.entry.js +26 -6
  82. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +129 -31
  83. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +6 -6
  84. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +4 -4
  85. package/dist/cjs/vega-sidenav_3.cjs.entry.js +4 -4
  86. package/dist/cjs/vega-signature-capture.cjs.entry.js +7 -7
  87. package/dist/cjs/vega-stepper.cjs.entry.js +4 -4
  88. package/dist/cjs/vega-tab-group_2.cjs.entry.js +2 -2
  89. package/dist/cjs/vega-table_11.cjs.entry.js +6 -6
  90. package/dist/cjs/vega-textarea.cjs.entry.js +4 -4
  91. package/dist/cjs/vega-time-picker_2.cjs.entry.js +11 -11
  92. package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
  93. package/dist/cjs/vega-tooltip_2.cjs.entry.js +8 -8
  94. package/dist/cjs/vega.cjs.js +9 -9
  95. package/dist/cjs/y-axis-input-processor-54a26515.js +832 -0
  96. package/dist/collection/components/vega-accordion/slimmers/vega-accordion-renderer.js +1 -1
  97. package/dist/collection/components/vega-accordion/vega-accordion.css +5 -0
  98. package/dist/collection/components/vega-app-header-button/vega-app-header-button.js +44 -2
  99. package/dist/collection/components/vega-button-circle/vega-button-circle.js +17 -3
  100. package/dist/collection/components/vega-button-link/vega-button-link.js +16 -1
  101. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-preview-popover-renderer.js +1 -1
  102. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +64 -0
  103. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.js +3 -0
  104. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.js +3 -3
  105. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +19 -1
  106. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +3 -2
  107. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +18 -3
  108. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +196 -207
  109. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +32 -0
  110. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +25 -0
  111. package/dist/collection/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.js +1 -3
  112. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-container-renderer.js +1 -5
  113. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-renderer.js +1 -4
  114. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.js +5 -2
  115. package/dist/collection/components/vega-input/vega-input.js +24 -1
  116. package/dist/collection/components/vega-input-passcode/slimmers/controllers/vega-input-passcode-keyboard-controller.js +2 -0
  117. package/dist/collection/components/vega-input-passcode/slimmers/renderers/vega-input-passcode-renderer.js +30 -2
  118. package/dist/collection/components/vega-input-phone-number/slimmers/controllers/country-select-controller.js +1 -1
  119. package/dist/collection/components/vega-input-phone-number/slimmers/controllers/vega-input-phone-number-value-controller.js +1 -1
  120. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.js +1 -1
  121. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/phone-number-input-renderer.js +1 -1
  122. package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +4 -4
  123. package/dist/collection/components/vega-nav/vega-left-nav-link/slimmers/renderers/vega-left-nav-link-renderer.js +2 -3
  124. package/dist/collection/components/vega-popover/vega-popover-content-box/vega-popover-content-box.css +5 -0
  125. package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +15 -0
  126. package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/image-node-renderer.js +7 -1
  127. package/dist/collection/components/vega-rich-text-editor/extensions/base-extension-renderer.js +11 -0
  128. package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +15 -1
  129. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +2 -0
  130. package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +0 -11
  131. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.js +23 -23
  132. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-extension.js +0 -10
  133. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.js +7 -17
  134. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +12 -16
  135. package/dist/collection/components/vega-rich-text-editor/helpers/extension-context-manager.js +31 -0
  136. package/dist/collection/components/vega-rich-text-editor/helpers/extension-context-manager.test.js +19 -0
  137. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-image-controller.js +7 -4
  138. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +113 -12
  139. package/dist/collection/components/vega-rich-text-editor/test/extensions/extension-test-utils.js +41 -0
  140. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-image-editor/slimmers/renderers/vega-rich-text-image-editor-renderer.js +1 -1
  141. package/dist/collection/components/vega-tooltip/vega-tooltip-content-box/vega-tooltip-content-box.css +5 -0
  142. package/dist/collection/helpers/calendar/test/utils.test.js +54 -1
  143. package/dist/collection/helpers/calendar/utils.js +35 -0
  144. package/dist/collection/helpers/chart/input-processors/format-time-positions-input-processor.js +2 -2
  145. package/dist/collection/helpers/chart/input-processors/pie-chart-arc-path-input-processor.js +1 -1
  146. package/dist/collection/helpers/chart/input-processors/x-axis-input-processor.js +5 -3
  147. package/dist/collection/helpers/chart/input-processors/x-axis-label-formatter-input-processor.js +2 -1
  148. package/dist/collection/helpers/chart/input-processors/y-axis-input-processor.js +7 -5
  149. package/dist/collection/helpers/chart/interacting-entry-generator/arc-path-hover-generator.js +1 -1
  150. package/dist/collection/helpers/chart/interacting-entry-generator/pie-legend-hover-generator.js +1 -1
  151. package/dist/collection/helpers/chart/renderers/canvas-renderer.js +1 -1
  152. package/dist/collection/helpers/chart/renderers/svg-renderer.js +1 -1
  153. package/dist/collection/helpers/chart/test/drawers/arc-path-drawer.test.js +1 -1
  154. package/dist/collection/helpers/chart/test/input-processors/format-time-positions-input-processor.test.js +1 -1
  155. package/dist/collection/helpers/chart/test/input-processors/sort-positions-input-processor.test.js +1 -1
  156. package/dist/collection/helpers/chart/test/input-processors/x-axis-input-processor.test.js +39 -0
  157. package/dist/collection/helpers/chart/test/input-processors/x-axis-label-formatter-input-processor.test.js +61 -14
  158. package/dist/collection/helpers/chart/test/input-processors/y-axis-input-processor.coverage.test.js +39 -0
  159. package/dist/collection/helpers/chart/test/input-processors/y-axis-input-processor.test.js +14 -0
  160. package/dist/collection/helpers/chart/test/renderers/svg-renderer.test.js +1 -1
  161. package/dist/collection/helpers/common/test/wait-for-component-did-render.test.js +67 -0
  162. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +27 -0
  163. package/dist/collection/helpers/slimmers/element-appender/test/element-appender-slimmer.test.js +50 -0
  164. package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +14 -3
  165. package/dist/collection/helpers/slimmers/mutation-observer/data-tab-index-value-mapper.js +80 -0
  166. package/dist/collection/helpers/slimmers/mutation-observer/test/aria-attributes-value-mapper.test.js +55 -3
  167. package/dist/collection/helpers/slimmers/mutation-observer/test/data-tab-index-value-mapper.test.js +120 -0
  168. package/dist/collection/helpers/slimmers/position-calculation/base-position-calculation-strategy.js +123 -9
  169. package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +14 -4
  170. package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +13 -4
  171. package/dist/collection/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.js +7 -6
  172. package/dist/collection/helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.js +162 -7
  173. package/dist/collection/helpers/translation/locales/en.js +15 -0
  174. package/dist/collection/helpers/translation/tests/internal-translation-controller.test.js +15 -0
  175. package/dist/collection/helpers/ui/test/element-appender.test.js +7 -5
  176. package/dist/collection/helpers/validator/rules/valid-phone-number-rule.js +1 -1
  177. package/dist/collection/helpers/validator/test/rules/valid-phone-number-rule.test.js +10 -0
  178. package/dist/collection/polyfill/d3/d3-array-polyfill.js +89 -0
  179. package/dist/collection/polyfill/d3/d3-axis-polyfill.js +195 -0
  180. package/dist/collection/polyfill/d3/d3-scale-polyfill.js +582 -0
  181. package/dist/collection/polyfill/d3/d3-selection-polyfill.js +274 -0
  182. package/dist/collection/polyfill/d3/d3-shape-polyfill.js +252 -0
  183. package/dist/collection/polyfill/d3/d3-time-format-polyfill.js +207 -0
  184. package/dist/collection/polyfill/d3/d3-time-polyfill.js +99 -0
  185. package/dist/collection/polyfill/d3/index.js +31 -0
  186. package/dist/collection/polyfill/d3/test/d3-array-polyfill.test.js +72 -0
  187. package/dist/collection/polyfill/d3/test/d3-axis-polyfill.test.js +171 -0
  188. package/dist/collection/polyfill/d3/test/d3-integration.test.js +137 -0
  189. package/dist/collection/polyfill/d3/test/d3-scale-polyfill.test.js +382 -0
  190. package/dist/collection/polyfill/d3/test/d3-selection-polyfill.test.js +239 -0
  191. package/dist/collection/polyfill/d3/test/d3-shape-polyfill.test.js +225 -0
  192. package/dist/collection/polyfill/d3/test/d3-time-format-polyfill.test.js +162 -0
  193. package/dist/collection/polyfill/d3/test/d3-time-polyfill.test.js +76 -0
  194. package/dist/collection/polyfill/d3/test/index.test.js +78 -0
  195. package/dist/collection/polyfill/libphonenumber/as-you-type.js +405 -0
  196. package/dist/collection/polyfill/libphonenumber/format-helpers.js +186 -0
  197. package/dist/collection/polyfill/libphonenumber/index.js +22 -0
  198. package/dist/collection/polyfill/libphonenumber/metadata.js +150 -0
  199. package/dist/collection/polyfill/libphonenumber/metadata.json.js +3900 -0
  200. package/dist/collection/polyfill/libphonenumber/parse-phone-number.js +127 -0
  201. package/dist/collection/polyfill/libphonenumber/phone-number.js +38 -0
  202. package/dist/collection/polyfill/libphonenumber/test/as-you-type.test.js +309 -0
  203. package/dist/collection/polyfill/libphonenumber/test/format-helpers.test.js +192 -0
  204. package/dist/collection/polyfill/libphonenumber/test/index.test.js +16 -0
  205. package/dist/collection/polyfill/libphonenumber/test/metadata.test.js +196 -0
  206. package/dist/collection/polyfill/libphonenumber/test/parse-phone-number.test.js +218 -0
  207. package/dist/collection/polyfill/libphonenumber/test/phone-number.test.js +56 -0
  208. package/dist/collection/polyfill/libphonenumber/types.js +23 -0
  209. package/dist/collection/utils/e2e-utils.js +6 -0
  210. package/dist/esm/{app-globals-c0676920.js → app-globals-0b3b7111.js} +7 -7
  211. package/dist/esm/aria-attributes-value-mapper-2c632641.js +141 -0
  212. package/dist/esm/{child-nodes-event-prevent-slimmer-649b9d30.js → child-nodes-event-prevent-slimmer-331312b8.js} +1 -1
  213. package/dist/esm/{code-block-b6247a45.js → code-block-2408a812.js} +1 -1
  214. package/dist/esm/{component-value-history-controller-slimmer.abstract-2bb8533d.js → component-value-history-controller-slimmer.abstract-ac40820f.js} +3 -3
  215. package/dist/esm/{date-required-rule-e771e7d9.js → date-required-rule-09d5aa16.js} +1 -1
  216. package/dist/esm/{design-token-4aee1c56.js → design-token-7dec1eab.js} +2 -2
  217. package/dist/esm/{dto-renderer-manager-6fd22ab7.js → dto-renderer-manager-d413de1e.js} +2 -2
  218. package/dist/esm/{element-appender-slimmer-e4713a72.js → element-appender-slimmer-5d573612.js} +179 -20
  219. package/dist/esm/{form-field-controller-slimmer-5817d14d.js → form-field-controller-slimmer-e1a5a884.js} +1 -1
  220. package/dist/esm/{image-annotation-action-6701b4c9.js → image-annotation-action-54936eaa.js} +2 -2
  221. package/dist/esm/index.js +13 -13
  222. package/dist/esm/{inject-keyboard-manager-78730062.js → inject-keyboard-manager-9339bba8.js} +1 -1
  223. package/dist/esm/{internal-translation-controller-911515f9.js → internal-translation-controller-113a6288.js} +15 -0
  224. package/dist/esm/{keyboard-manager-38934f94.js → keyboard-manager-f9bfa678.js} +1 -1
  225. package/dist/esm/{keyboard-manager-slimmer-9984d922.js → keyboard-manager-slimmer-c8898843.js} +1 -1
  226. package/dist/esm/legend-input-processor-122008c5.js +2116 -0
  227. package/dist/esm/loader.js +9 -9
  228. package/dist/esm/{month-view-generator-eaf9029c.js → month-view-generator-160a9feb.js} +1 -1
  229. package/dist/esm/{public-rules-25cc3a39.js → public-rules-41561e6e.js} +7 -7
  230. package/dist/esm/{range-663f44dc.js → range-a5d78e69.js} +1 -1
  231. package/dist/esm/{responsive-format-facade-7a071174.js → responsive-format-facade-2a36c54a.js} +2 -2
  232. package/dist/esm/{rich-text-editor-required-rule-a238b862.js → rich-text-editor-required-rule-b09039da.js} +1 -1
  233. package/dist/esm/{string-format-strategy.abstract-713fba36.js → string-format-strategy.abstract-944f759b.js} +1 -1
  234. package/dist/esm/{string-input-formatter-slimmer-5b413ff9.js → string-input-formatter-slimmer-2508d88b.js} +1 -1
  235. package/dist/esm/{string-mask-strategy-6beaf664.js → string-mask-strategy-f9e252a2.js} +2 -2
  236. package/dist/esm/{style-formatter-3d06b72d.js → style-formatter-6db1e890.js} +2 -2
  237. package/dist/esm/{time-required-rule-e4138a76.js → time-required-rule-c7cfb257.js} +1 -1
  238. package/dist/esm/{token-extension-e33fd151.js → token-extension-25df8dbb.js} +102 -81
  239. package/dist/esm/{translation-slimmer-2394b173.js → translation-slimmer-9f0339aa.js} +1 -1
  240. package/dist/esm/{type-guard-f50e34d6.js → type-guard-af324dcd.js} +36 -2
  241. package/dist/esm/{valid-credit-card-number-rule-22ce81db.js → valid-credit-card-number-rule-099dba7d.js} +1 -1
  242. package/dist/esm/vega-accordion.entry.js +7 -7
  243. package/dist/esm/vega-app-header-button.entry.js +38 -145
  244. package/dist/esm/vega-banner.entry.js +1 -1
  245. package/dist/esm/vega-bar-chart.entry.js +2 -2
  246. package/dist/esm/vega-box.entry.js +6 -6
  247. package/dist/esm/vega-breadcrumb.entry.js +2 -2
  248. package/dist/esm/vega-button-circle.entry.js +23 -8
  249. package/dist/esm/vega-button-group_2.entry.js +2 -2
  250. package/dist/esm/vega-button-link.entry.js +18 -2
  251. package/dist/esm/vega-button.entry.js +5 -5
  252. package/dist/esm/vega-calendar_4.entry.js +7 -7
  253. package/dist/esm/vega-card.entry.js +5 -5
  254. package/dist/esm/vega-carousel.entry.js +4 -4
  255. package/dist/esm/vega-checkbox_2.entry.js +4 -4
  256. package/dist/esm/vega-chip.entry.js +6 -6
  257. package/dist/esm/vega-code-block.entry.js +10 -10
  258. package/dist/esm/vega-color-picker.entry.js +2 -2
  259. package/dist/esm/vega-combo-box.entry.js +7 -7
  260. package/dist/esm/vega-date-picker_2.entry.js +129 -26
  261. package/dist/esm/vega-dialog_2.entry.js +6 -6
  262. package/dist/esm/vega-divider.entry.js +5 -5
  263. package/dist/esm/vega-dropdown_5.entry.js +34 -10
  264. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  265. package/dist/esm/vega-file-uploader.entry.js +3 -3
  266. package/dist/esm/vega-flag-icon.entry.js +5 -5
  267. package/dist/esm/vega-flex.entry.js +6 -6
  268. package/dist/esm/vega-font.entry.js +5 -5
  269. package/dist/esm/vega-form.entry.js +5 -5
  270. package/dist/esm/vega-grid.entry.js +5 -5
  271. package/dist/esm/vega-icon.entry.js +5 -5
  272. package/dist/esm/vega-image-uploader.entry.js +7 -7
  273. package/dist/esm/vega-input-credit-card.entry.js +8 -8
  274. package/dist/esm/vega-input-numeric.entry.js +7 -7
  275. package/dist/esm/vega-input-passcode.entry.js +39 -9
  276. package/dist/esm/vega-input-phone-number.entry.js +4757 -5589
  277. package/dist/esm/vega-input-range.entry.js +5 -5
  278. package/dist/esm/vega-input-select.entry.js +7 -7
  279. package/dist/esm/vega-input.entry.js +220 -125
  280. package/dist/esm/vega-left-nav_5.entry.js +7 -8
  281. package/dist/esm/vega-line-chart.entry.js +311 -9
  282. package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
  283. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +2 -2
  284. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
  285. package/dist/esm/vega-pagination.entry.js +6 -6
  286. package/dist/esm/vega-pie-chart.entry.js +5 -88
  287. package/dist/esm/vega-popover_2.entry.js +9 -9
  288. package/dist/esm/vega-progress-tracker_2.entry.js +4 -4
  289. package/dist/esm/vega-radio_2.entry.js +7 -7
  290. package/dist/esm/vega-rich-text-content.entry.js +26 -6
  291. package/dist/esm/vega-rich-text-editor_4.entry.js +130 -32
  292. package/dist/esm/vega-selection-chip_2.entry.js +6 -6
  293. package/dist/esm/vega-selection-tile_2.entry.js +4 -4
  294. package/dist/esm/vega-sidenav_3.entry.js +4 -4
  295. package/dist/esm/vega-signature-capture.entry.js +7 -7
  296. package/dist/esm/vega-stepper.entry.js +4 -4
  297. package/dist/esm/vega-tab-group_2.entry.js +2 -2
  298. package/dist/esm/vega-table_11.entry.js +6 -6
  299. package/dist/esm/vega-textarea.entry.js +4 -4
  300. package/dist/esm/vega-time-picker_2.entry.js +11 -11
  301. package/dist/esm/vega-toggle-switch.entry.js +2 -2
  302. package/dist/esm/vega-tooltip_2.entry.js +8 -8
  303. package/dist/esm/vega.js +9 -9
  304. package/dist/esm/y-axis-input-processor-c7e05353.js +826 -0
  305. package/dist/sri/vega-sri-manifest.json +317 -313
  306. package/dist/types/components/vega-app-header-button/types.d.ts +18 -0
  307. package/dist/types/components/vega-app-header-button/vega-app-header-button.d.ts +8 -1
  308. package/dist/types/components/vega-button-circle/vega-button-circle.d.ts +2 -0
  309. package/dist/types/components/vega-button-link/vega-button-link.d.ts +2 -0
  310. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.d.ts +21 -0
  311. package/dist/types/components/vega-date-picker/types.d.ts +14 -0
  312. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.d.ts +1 -0
  313. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +7 -0
  314. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +3 -0
  315. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +9 -1
  316. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +11 -0
  317. package/dist/types/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.d.ts +0 -1
  318. package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-renderer.d.ts +0 -1
  319. package/dist/types/components/vega-input/vega-input.d.ts +4 -0
  320. package/dist/types/components/vega-input-passcode/slimmers/renderers/vega-input-passcode-renderer.d.ts +14 -0
  321. package/dist/types/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.d.ts +6 -0
  322. package/dist/types/components/vega-rich-text-editor/extensions/base-extension-renderer.d.ts +9 -1
  323. package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +9 -1
  324. package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +0 -7
  325. package/dist/types/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.d.ts +5 -10
  326. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +1 -5
  327. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.d.ts +3 -8
  328. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.d.ts +5 -9
  329. package/dist/types/components/vega-rich-text-editor/helpers/extension-context-manager.d.ts +26 -0
  330. package/dist/types/components/vega-rich-text-editor/helpers/extension-context-manager.test.d.ts +1 -0
  331. package/dist/types/components/vega-rich-text-editor/interface.d.ts +4 -0
  332. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/insert-image-controller.d.ts +7 -1
  333. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +30 -2
  334. package/dist/types/components/vega-rich-text-editor/test/extensions/extension-test-utils.d.ts +21 -0
  335. package/dist/types/components.d.ts +22 -2
  336. package/dist/types/helpers/calendar/utils.d.ts +17 -0
  337. package/dist/types/helpers/chart/test/input-processors/y-axis-input-processor.coverage.test.d.ts +1 -0
  338. package/dist/types/helpers/common/test/wait-for-component-did-render.test.d.ts +1 -0
  339. package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +12 -0
  340. package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +2 -1
  341. package/dist/types/helpers/slimmers/mutation-observer/data-tab-index-value-mapper.d.ts +35 -0
  342. package/dist/types/helpers/slimmers/mutation-observer/test/data-tab-index-value-mapper.test.d.ts +1 -0
  343. package/dist/types/helpers/slimmers/position-calculation/base-position-calculation-strategy.d.ts +60 -3
  344. package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +3 -2
  345. package/dist/types/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.d.ts +1 -1
  346. package/dist/types/helpers/translation/interface.d.ts +15 -0
  347. package/dist/types/polyfill/d3/d3-array-polyfill.d.ts +48 -0
  348. package/dist/types/polyfill/d3/d3-axis-polyfill.d.ts +53 -0
  349. package/dist/types/polyfill/d3/d3-scale-polyfill.d.ts +42 -0
  350. package/dist/types/polyfill/d3/d3-selection-polyfill.d.ts +173 -0
  351. package/dist/types/polyfill/d3/d3-shape-polyfill.d.ts +129 -0
  352. package/dist/types/polyfill/d3/d3-time-format-polyfill.d.ts +28 -0
  353. package/dist/types/polyfill/d3/d3-time-polyfill.d.ts +68 -0
  354. package/dist/types/polyfill/d3/index.d.ts +27 -0
  355. package/dist/types/polyfill/d3/test/d3-array-polyfill.test.d.ts +1 -0
  356. package/dist/types/polyfill/d3/test/d3-axis-polyfill.test.d.ts +1 -0
  357. package/dist/types/polyfill/d3/test/d3-integration.test.d.ts +1 -0
  358. package/dist/types/polyfill/d3/test/d3-scale-polyfill.test.d.ts +1 -0
  359. package/dist/types/polyfill/d3/test/d3-selection-polyfill.test.d.ts +1 -0
  360. package/dist/types/polyfill/d3/test/d3-shape-polyfill.test.d.ts +1 -0
  361. package/dist/types/polyfill/d3/test/d3-time-format-polyfill.test.d.ts +1 -0
  362. package/dist/types/polyfill/d3/test/d3-time-polyfill.test.d.ts +1 -0
  363. package/dist/types/polyfill/d3/test/index.test.d.ts +1 -0
  364. package/dist/types/polyfill/libphonenumber/as-you-type.d.ts +154 -0
  365. package/dist/types/polyfill/libphonenumber/format-helpers.d.ts +64 -0
  366. package/dist/types/polyfill/libphonenumber/index.d.ts +22 -0
  367. package/dist/types/polyfill/libphonenumber/metadata.d.ts +45 -0
  368. package/dist/types/polyfill/libphonenumber/metadata.json.d.ts +470 -0
  369. package/dist/types/polyfill/libphonenumber/parse-phone-number.d.ts +26 -0
  370. package/dist/types/polyfill/libphonenumber/phone-number.d.ts +24 -0
  371. package/dist/types/polyfill/libphonenumber/test/as-you-type.test.d.ts +1 -0
  372. package/dist/types/polyfill/libphonenumber/test/format-helpers.test.d.ts +1 -0
  373. package/dist/types/polyfill/libphonenumber/test/index.test.d.ts +1 -0
  374. package/dist/types/polyfill/libphonenumber/test/metadata.test.d.ts +1 -0
  375. package/dist/types/polyfill/libphonenumber/test/parse-phone-number.test.d.ts +1 -0
  376. package/dist/types/polyfill/libphonenumber/test/phone-number.test.d.ts +1 -0
  377. package/dist/types/polyfill/libphonenumber/types.d.ts +77 -0
  378. package/dist/types/types/components.type.d.ts +2 -0
  379. package/dist/types/types/flag.type.d.ts +255 -4
  380. package/dist/types/types/ui.type.d.ts +3 -2
  381. package/dist/types/types/vega-chart.d.ts +10 -11
  382. package/dist/types/utils/e2e-utils.d.ts +2 -0
  383. package/dist/vega/index.esm.js +1 -1
  384. package/dist/vega/{p-d8fadcdc.entry.js → p-0037068c.entry.js} +1 -1
  385. package/dist/vega/{p-4bffdb28.js → p-051bbce6.js} +1 -1
  386. package/dist/vega/{p-02a7d60c.entry.js → p-0a3a285b.entry.js} +1 -1
  387. package/dist/vega/{p-1a3236e7.entry.js → p-0ac9a732.entry.js} +1 -1
  388. package/dist/vega/{p-2b49686d.entry.js → p-1033e4c4.entry.js} +1 -1
  389. package/dist/vega/{p-0e679d8c.js → p-10e51081.js} +1 -1
  390. package/dist/vega/p-15335b69.entry.js +1 -0
  391. package/dist/vega/{p-b366deff.entry.js → p-19270396.entry.js} +1 -1
  392. package/dist/vega/{p-10734a00.js → p-1a51bf6f.js} +1 -1
  393. package/dist/vega/{p-2d69632d.js → p-1a9b361b.js} +1 -1
  394. package/dist/vega/p-1ccba615.entry.js +1 -0
  395. package/dist/vega/{p-6dcdb580.entry.js → p-1deedff2.entry.js} +1 -1
  396. package/dist/vega/{p-6d60b66a.entry.js → p-22f3d35c.entry.js} +1 -1
  397. package/dist/vega/{p-3d8122ab.entry.js → p-23427f6a.entry.js} +1 -1
  398. package/dist/vega/p-2466316a.js +1 -0
  399. package/dist/vega/p-27b0af38.entry.js +1 -0
  400. package/dist/vega/{p-bb5e0192.entry.js → p-2c2193f2.entry.js} +1 -1
  401. package/dist/vega/{p-dd3a94f4.entry.js → p-3237be8b.entry.js} +1 -1
  402. package/dist/vega/{p-94a77fbe.entry.js → p-36a09524.entry.js} +1 -1
  403. package/dist/vega/{p-7181861a.js → p-38e850c3.js} +1 -1
  404. package/dist/vega/{p-e2af0e24.entry.js → p-3b9fc697.entry.js} +1 -1
  405. package/dist/vega/{p-3244c605.entry.js → p-41d14339.entry.js} +1 -1
  406. package/dist/vega/{p-a0b66c25.js → p-4c060ba9.js} +1 -1
  407. package/dist/vega/p-4d4bf82a.entry.js +1 -0
  408. package/dist/vega/{p-415ffa35.js → p-4d7d5583.js} +1 -1
  409. package/dist/vega/{p-2a10e2e5.js → p-4f146dae.js} +1 -1
  410. package/dist/vega/p-5f377954.js +1 -1
  411. package/dist/vega/{p-b256b7a4.js → p-600f7d6c.js} +1 -1
  412. package/dist/vega/{p-4ea30592.js → p-6188e783.js} +1 -1
  413. package/dist/vega/p-638d30a5.entry.js +1 -0
  414. package/dist/vega/{p-a7a8a4eb.entry.js → p-67b0ccdc.entry.js} +1 -1
  415. package/dist/vega/p-68846f0d.js +1 -0
  416. package/dist/vega/{p-d7a78c5e.entry.js → p-70444f6f.entry.js} +1 -1
  417. package/dist/vega/{p-e632475e.js → p-7127f966.js} +1 -1
  418. package/dist/vega/{p-49845a91.js → p-718c74ba.js} +1 -1
  419. package/dist/vega/p-77167587.entry.js +1 -0
  420. package/dist/vega/p-78ecfea0.entry.js +1 -0
  421. package/dist/vega/{p-b201f379.js → p-7cde8489.js} +1 -1
  422. package/dist/vega/p-8e34b266.js +1 -0
  423. package/dist/vega/p-9466619f.entry.js +1 -0
  424. package/dist/vega/p-9863e7a1.entry.js +1 -0
  425. package/dist/vega/p-999950d1.js +1 -0
  426. package/dist/vega/{p-9339c6c4.js → p-9a3a5b9e.js} +1 -1
  427. package/dist/vega/{p-b136ebba.entry.js → p-9adfcd47.entry.js} +1 -1
  428. package/dist/vega/{p-d555f677.entry.js → p-9e36f7ff.entry.js} +1 -1
  429. package/dist/vega/{p-8dbdd609.entry.js → p-9f9d9a53.entry.js} +1 -1
  430. package/dist/vega/{p-7958614a.entry.js → p-9feaac4b.entry.js} +1 -1
  431. package/dist/vega/{p-ca5898dc.entry.js → p-a0e69236.entry.js} +1 -1
  432. package/dist/vega/{p-95528b47.js → p-a17312a6.js} +1 -1
  433. package/dist/vega/p-a46e977b.entry.js +1 -0
  434. package/dist/vega/p-a79fdf2f.js +1 -0
  435. package/dist/vega/p-a800bf6d.js +1 -0
  436. package/dist/vega/{p-c29068fb.entry.js → p-aaf9b39f.entry.js} +1 -1
  437. package/dist/vega/{p-2e91295d.entry.js → p-acbb96b3.entry.js} +1 -1
  438. package/dist/vega/p-af2110fc.entry.js +1 -0
  439. package/dist/vega/{p-f14a5eae.entry.js → p-b35bb4a2.entry.js} +1 -1
  440. package/dist/vega/p-b8c10187.js +1 -0
  441. package/dist/vega/p-bdb5180c.js +1 -0
  442. package/dist/vega/{p-01d58eb8.entry.js → p-c086529c.entry.js} +1 -1
  443. package/dist/vega/{p-154f9cf7.entry.js → p-c61bcd92.entry.js} +1 -1
  444. package/dist/vega/{p-bebfbe95.entry.js → p-c7a9960f.entry.js} +1 -1
  445. package/dist/vega/{p-81b044b9.js → p-c7b9b7c2.js} +1 -1
  446. package/dist/vega/{p-f2b0b58a.js → p-c857e6e2.js} +1 -1
  447. package/dist/vega/{p-89f2e16d.entry.js → p-c871619c.entry.js} +1 -1
  448. package/dist/vega/{p-1f3cd061.entry.js → p-cbeb47be.entry.js} +1 -1
  449. package/dist/vega/{p-a786259a.js → p-cf6bfac7.js} +1 -1
  450. package/dist/vega/{p-57927b10.entry.js → p-d07f5d5a.entry.js} +1 -1
  451. package/dist/vega/{p-033c31d8.entry.js → p-d0975995.entry.js} +1 -1
  452. package/dist/vega/{p-d6dbbe61.entry.js → p-d2ee5711.entry.js} +1 -1
  453. package/dist/vega/{p-8950987b.entry.js → p-d2fc470e.entry.js} +1 -1
  454. package/dist/vega/{p-a560d8c5.entry.js → p-d70e1b75.entry.js} +1 -1
  455. package/dist/vega/p-d8180e42.entry.js +1 -0
  456. package/dist/vega/{p-3afc025e.entry.js → p-da0fd3dc.entry.js} +1 -1
  457. package/dist/vega/{p-087ea379.entry.js → p-da552ddf.entry.js} +1 -1
  458. package/dist/vega/{p-eda988d5.entry.js → p-ddce3e0e.entry.js} +1 -1
  459. package/dist/vega/{p-aa1174dc.js → p-dfb12762.js} +1 -1
  460. package/dist/vega/{p-8b153acd.entry.js → p-e0fb1f60.entry.js} +1 -1
  461. package/dist/vega/{p-249df6d2.entry.js → p-e1c017d1.entry.js} +1 -1
  462. package/dist/vega/p-e4917e76.js +1 -0
  463. package/dist/vega/{p-fd7ddd64.entry.js → p-e4c99b72.entry.js} +1 -1
  464. package/dist/vega/{p-9a137bab.entry.js → p-e841c1fe.entry.js} +1 -1
  465. package/dist/vega/{p-f05b8f76.entry.js → p-ea96b0f9.entry.js} +1 -1
  466. package/dist/vega/{p-76181a70.entry.js → p-eab9d999.entry.js} +1 -1
  467. package/dist/vega/{p-2cc9d126.entry.js → p-ed9ad4fd.entry.js} +1 -1
  468. package/dist/vega/{p-2ba78982.entry.js → p-ef603656.entry.js} +1 -1
  469. package/dist/vega/p-f5fcd13e.entry.js +1 -0
  470. package/dist/vega/{p-6d219c44.entry.js → p-f65cb0b6.entry.js} +1 -1
  471. package/dist/vega/p-faa9a3bd.js +1 -0
  472. package/dist/vega/{p-a8792e3d.js → p-fc049028.js} +1 -1
  473. package/dist/vega/p-ff287001.entry.js +1 -0
  474. package/dist/vega/{p-32183637.entry.js → p-ffb3e479.entry.js} +1 -1
  475. package/dist/vega/p-ffd080db.js +1 -0
  476. package/dist/vega/vega.esm.js +1 -1
  477. package/package.json +2 -6
  478. package/dist/cjs/legend-input-processor-27c65353.js +0 -4759
  479. package/dist/cjs/y-axis-input-processor-9fbfd5e7.js +0 -2302
  480. package/dist/esm/legend-input-processor-5ecae3a7.js +0 -4742
  481. package/dist/esm/y-axis-input-processor-bc54314a.js +0 -2290
  482. package/dist/vega/p-179aad4f.entry.js +0 -1
  483. package/dist/vega/p-1f5e35dc.entry.js +0 -1
  484. package/dist/vega/p-28ad1864.entry.js +0 -1
  485. package/dist/vega/p-32033e7a.js +0 -1
  486. package/dist/vega/p-32faa460.entry.js +0 -1
  487. package/dist/vega/p-464559e3.js +0 -1
  488. package/dist/vega/p-46b077d9.js +0 -1
  489. package/dist/vega/p-4e017458.entry.js +0 -1
  490. package/dist/vega/p-4e4a0228.entry.js +0 -1
  491. package/dist/vega/p-5831d6d3.entry.js +0 -1
  492. package/dist/vega/p-644f701a.js +0 -1
  493. package/dist/vega/p-6a62e476.entry.js +0 -1
  494. package/dist/vega/p-6b6f0fb4.js +0 -1
  495. package/dist/vega/p-a13a73fa.entry.js +0 -1
  496. package/dist/vega/p-b597393b.entry.js +0 -1
  497. package/dist/vega/p-be23bef2.js +0 -1
  498. package/dist/vega/p-c1d13eec.entry.js +0 -1
  499. package/dist/vega/p-c3d2f316.js +0 -1
  500. package/dist/vega/p-dad3ba5f.js +0 -1
  501. package/dist/vega/p-e1431c14.entry.js +0 -1
  502. package/dist/vega/p-e89e3ede.entry.js +0 -1
  503. package/dist/vega/p-f3d0f2dc.js +0 -1
  504. package/dist/vega/p-f5bafc45.entry.js +0 -1
  505. package/dist/vega/p-fc1fa345.js +0 -1
  506. /package/dist/cjs/{feature-flag-controller-04cb1e69.js → feature-flag-controller-9129ef52.js} +0 -0
  507. /package/dist/esm/{feature-flag-controller-09ea7e87.js → feature-flag-controller-30f7b625.js} +0 -0
  508. /package/dist/vega/{p-07cb0243.js → p-18e8d9b7.js} +0 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Manager for storing and retrieving the extension context associated with each rich text editor host element.
3
+ *
4
+ * @todo Currently, there are three types of contexts in RTE: toolbar render context, extension context, and DTO render context. The second and third types are bound to the extension context via host props. We are considering optimizing these three types of contexts to make the program more flexible and easier to maintain.
5
+ */
6
+ class RTEExtensionContextManager {
7
+ constructor() {
8
+ this.extensionContextMap = new WeakMap();
9
+ }
10
+ /**
11
+ * Store the extension context for the given rich text editor host element.
12
+ *
13
+ * @param {RTEExtensionContext} context - The extension context to store.
14
+ */
15
+ setExtensionContext(context) {
16
+ if (context && context.host) {
17
+ this.extensionContextMap.set(context.host, context);
18
+ }
19
+ }
20
+ /**
21
+ * Get the extension context for the given rich text editor host element.
22
+ *
23
+ * @typedef HTMLVegaRichTextEditorElement - The type definition for the rich text editor host element.
24
+ * @param {Nullable<HTMLVegaRichTextEditorElement>} el - The host rich text editor element.
25
+ * @returns {Nullable<RTEExtensionContext>} - The extension context associated with the host.
26
+ */
27
+ getExtensionContext(el) {
28
+ return el ? this.extensionContextMap.get(el) : null;
29
+ }
30
+ }
31
+ export default new RTEExtensionContextManager();
@@ -0,0 +1,19 @@
1
+ import extensionContextManager from './extension-context-manager';
2
+ describe('extension context manager', () => {
3
+ it('should store and retrieve context by host element', () => {
4
+ const host = document.createElement('vega-rich-text-editor');
5
+ const context = {
6
+ host,
7
+ isSourceEditMode: jest.fn().mockReturnValue(false),
8
+ getSelectedNodes: jest.fn().mockReturnValue([]),
9
+ flushValue: jest.fn(),
10
+ };
11
+ extensionContextManager.setExtensionContext(context);
12
+ expect(extensionContextManager.getExtensionContext(host)).toBe(context);
13
+ expect(extensionContextManager.getExtensionContext(null)).toBeNull();
14
+ });
15
+ it('should return null when no context registered for host', () => {
16
+ const host = document.createElement('vega-rich-text-editor');
17
+ expect(extensionContextManager.getExtensionContext(host)).toBeUndefined();
18
+ });
19
+ });
@@ -20,10 +20,13 @@ export class InsertImageController extends VegaSlimmer {
20
20
  * Insert a image to current state
21
21
  *
22
22
  * @param {string} imageUrl The image url
23
+ * @param {RTEBlock[]} selectedBlocks The current selected blocks, if not provided, will get from selectionController
24
+ * @param {RTENode[]} selectedNodes The current selected nodes, if not provided, will get from selectionController
25
+ * @param {RTERange} currentRange The current selected range, if not provided, will get from selectionController
23
26
  * @returns {RTEImageNode} RTEImageNode
24
27
  */
25
- insertImageToCaretPosition(imageUrl) {
26
- const selectedBlocks = this.selectionController.getSelectedBlocks();
28
+ insertImageToCaretPosition(imageUrl, selectedBlocks, selectedNodes, currentRange) {
29
+ selectedBlocks || (selectedBlocks = this.selectionController.getSelectedBlocks());
27
30
  const imageBlock = new RTEImageBlock(generateUUID());
28
31
  const newImageNode = new RTEImageNode(generateUUID(), imageUrl, imageBlock);
29
32
  newImageNode.apply(new ImageAnnotationAction('md', ''));
@@ -33,8 +36,8 @@ export class InsertImageController extends VegaSlimmer {
33
36
  void this.valueController.flushChanges(this.value);
34
37
  }
35
38
  else {
36
- const { startOffset } = this.selectionController.getCurrentRange();
37
- const selectedNodes = this.selectionController.getSelectedNodes();
39
+ const { startOffset } = currentRange || this.selectionController.getCurrentRange();
40
+ selectedNodes || (selectedNodes = this.selectionController.getSelectedNodes());
38
41
  selectedBlocks[0].apply(new InsertImageToBlockAction(selectedNodes[0], startOffset, imageBlock));
39
42
  }
40
43
  this.updateCaretPosition(newImageNode);
@@ -6,20 +6,46 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { VegaInternalIconManager } from '../../../../../helpers/icon/internal-icon-manager';
8
8
  import image from '../../../assets/image';
9
- import { h } from '@stencil/core';
9
+ import { Fragment, h } from '@stencil/core';
10
10
  import { MapToComponentField } from 'vega-slimmer/core';
11
11
  import { NodeAnnotationTypeEnum } from '../../../dto/annotations/node-annotation.abstract';
12
12
  import { ImageUpdateUrlAction } from '../../../dto/actions/image-update-url-action';
13
13
  import { VisualModeToolbarButtonSlimmer } from './visual-mode-toolbar-button-slimmer.abstract';
14
14
  import { ModifyContentActionType } from '../../../dto/actions/modify-content-action.abstract';
15
+ import { DomNodeSubjectObserverFactory } from '../../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-observer-factory';
16
+ import { VegaClick, VegaDropdownClick } from '../../../../../helpers/event-manager/event-id/vega-event-id';
17
+ import { tryGetDocument } from '../../../../../utils/try-get-document';
15
18
  export class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
16
19
  constructor() {
17
20
  super({
18
21
  icon: 'image',
19
22
  tooltip: { text: 'Image' },
20
23
  });
21
- this.onClick = () => {
22
- this.inputElementRef.click();
24
+ this.insertURLImage = async () => {
25
+ const url = this.normalizeSafeImageUrl(this.insertURLInputRef.value);
26
+ this.applyImageNode(url, 'url');
27
+ await this.insertURLModalRef.modal('hide');
28
+ };
29
+ this.handleDropdownItemClick = async (payload) => {
30
+ const safeDocument = tryGetDocument();
31
+ switch (payload.detail) {
32
+ case 'upload':
33
+ this.uploadInputRef.click();
34
+ break;
35
+ case 'url':
36
+ this.currentRange = this.selectionController.getCurrentRange();
37
+ this.currentSelectedNodes = this.selectionController.getSelectedNodes();
38
+ this.currentSelectedBlocks = this.selectionController.getSelectedBlocks();
39
+ safeDocument && safeDocument.body.append(this.insertURLModalRef);
40
+ this.insertURLInputRef.value = '';
41
+ await this.insertURLModalRef.modal('show');
42
+ await this.insertURLInputRef.doFocus();
43
+ break;
44
+ /* istanbul ignore next */
45
+ default:
46
+ break;
47
+ }
48
+ await this.dropdownRef.hide();
23
49
  };
24
50
  /**
25
51
  * The below method is e2e-test covered in
@@ -32,13 +58,7 @@ export class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
32
58
  if (!input.files.length) {
33
59
  return;
34
60
  }
35
- const node = this.insertImageController.insertImageToCaretPosition(URL.createObjectURL(input.files[0]));
36
- if (!this.updateNodeURLMap) {
37
- this.updateNodeURLMap = new Map();
38
- }
39
- this.updateNodeURLMap.set(node, (url) => {
40
- node.apply(new ImageUpdateUrlAction(url));
41
- });
61
+ const node = this.applyImageNode(URL.createObjectURL(input.files[0]), 'upload');
42
62
  const payload = {
43
63
  file: input.files[0],
44
64
  sendBackUploadedURLCallback: this.updateNodeURLMap.get(node),
@@ -49,8 +69,14 @@ export class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
49
69
  }
50
70
  renderBtnWrapper(renderBtn) {
51
71
  return (h("vega-box", null,
52
- renderBtn({ showArrowIcon: false }),
53
- h("input", { type: "file", style: { display: 'none' }, ref: (node) => (this.inputElementRef = node), accept: "image/*", onChange: this.fileInputChange })));
72
+ h("vega-dropdown", { selectType: "none", trigger: "click", alignment: "center", ref: (ref) => {
73
+ this.dropdownRef = ref;
74
+ this.addDropdownObserver(ref);
75
+ } },
76
+ renderBtn({ showArrowIcon: true }),
77
+ h("div", Object.assign({ slot: "items" }, super.preventLostFocus()), this.renderDropdownContent())),
78
+ this.renderUploadInput(),
79
+ this.renderInsertURLModal()));
54
80
  }
55
81
  isSelected() {
56
82
  return false;
@@ -62,10 +88,85 @@ export class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
62
88
  selectedNodes.some((node) => node.getAnnotationByType(NodeAnnotationTypeEnum.LINK)) ||
63
89
  this.shouldDisabledToolbar(selectedBlock, ModifyContentActionType.INSERT_IMAGE_TO_BLOCK));
64
90
  }
91
+ renderDropdownContent() {
92
+ return (h(Fragment, null, ImageToolbarButtonSlimmer.items.map((item) => {
93
+ return (h("vega-dropdown-item", { key: item.key, itemKey: item.key }, this.translationSlimmer.t(item.label)));
94
+ })));
95
+ }
96
+ renderUploadInput() {
97
+ return (h("input", { type: "file", style: { display: 'none' }, ref: (node) => (this.uploadInputRef = node), accept: "image/*", onChange: this.fileInputChange }));
98
+ }
99
+ renderInsertURLModal() {
100
+ return (h("vega-modal", { size: 500, backdropColor: "semi", ref: (node) => (this.insertURLModalRef = node) },
101
+ h("div", { slot: "modal-title" }, this.translationSlimmer.t('Image via URL')),
102
+ h("div", { slot: "modal-content" },
103
+ h("vega-input", { placeholder: this.translationSlimmer.t('URL'), ref: (ref) => (this.insertURLInputRef = ref),
104
+ /* istanbul ignore next */
105
+ // eslint-disable-next-line react/jsx-no-bind
106
+ onKeyDown: async (event) => {
107
+ event.key === 'Enter' && (await this.insertURLImage());
108
+ } })),
109
+ h("vega-flex", { slot: "modal-footer", gap: "size-8", alignItems: "center", justifyContent: "end" },
110
+ h("vega-button", { label: this.translationSlimmer.t('Cancel'), variant: "secondary", ref: (ref) => {
111
+ this.addModalCancelObserver(ref);
112
+ } }),
113
+ h("vega-button", { label: this.translationSlimmer.t('Insert'), ref: (ref) => {
114
+ this.addModalInsertObserver(ref);
115
+ } }))));
116
+ }
117
+ addDropdownObserver(dropdownRef) {
118
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(dropdownRef, VegaDropdownClick, this.handleDropdownItemClick);
119
+ }
120
+ addModalCancelObserver(buttonRef) {
121
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(buttonRef, VegaClick, async () => {
122
+ await this.insertURLModalRef.modal('hide');
123
+ });
124
+ }
125
+ addModalInsertObserver(buttonRef) {
126
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(buttonRef, VegaClick, this.insertURLImage);
127
+ }
128
+ /**
129
+ * The below method is e2e-test covered in
130
+ * @see{module:should-update-url-properly-when-upload-images}
131
+ */
132
+ /* istanbul ignore next */
133
+ applyImageNode(url, type) {
134
+ const node = type === 'url'
135
+ ? this.insertImageController.insertImageToCaretPosition(url, this.currentSelectedBlocks, this.currentSelectedNodes, this.currentRange)
136
+ : this.insertImageController.insertImageToCaretPosition(url);
137
+ if (!this.updateNodeURLMap) {
138
+ this.updateNodeURLMap = new Map();
139
+ }
140
+ this.updateNodeURLMap.set(node, (url) => {
141
+ node.apply(new ImageUpdateUrlAction(url));
142
+ });
143
+ return node;
144
+ }
145
+ normalizeSafeImageUrl(url) {
146
+ try {
147
+ const parsedUrl = new URL(url);
148
+ if (parsedUrl.protocol === 'javascript:') {
149
+ return '';
150
+ }
151
+ // eslint-disable-next-line no-empty
152
+ }
153
+ catch (_error) { }
154
+ return url;
155
+ }
65
156
  }
66
157
  (() => {
67
158
  VegaInternalIconManager.register({ image: image });
68
159
  })();
160
+ ImageToolbarButtonSlimmer.items = [
161
+ {
162
+ key: 'upload',
163
+ label: 'Upload from computer',
164
+ },
165
+ {
166
+ key: 'url',
167
+ label: 'Insert via URL',
168
+ },
169
+ ];
69
170
  __decorate([
70
171
  MapToComponentField()
71
172
  ], ImageToolbarButtonSlimmer.prototype, "insertImageController", void 0);
@@ -0,0 +1,41 @@
1
+ import extensionContextManager from '../../helpers/extension-context-manager';
2
+ import { tryGetDocument } from '../../../../utils/try-get-document';
3
+ import { RTERange } from '../../dto/range';
4
+ /**
5
+ * Gets a mock rich text editor element for testing purposes.
6
+ *
7
+ * @returns {HTMLElement} A mock rich text editor element.
8
+ */
9
+ export function getMockRichTextEditor() {
10
+ var _a;
11
+ return (_a = tryGetDocument()) === null || _a === void 0 ? void 0 : _a.createElement('vega-rich-text-editor');
12
+ }
13
+ /**
14
+ * Mocks the extension context for testing purposes.
15
+ *
16
+ * @param {Partial<RTEExtensionContext>} context - Partial context to override default mock values.
17
+ * @returns {RTEExtensionContext} The mocked extension context.
18
+ */
19
+ export function mockExtensionContext(context = {}) {
20
+ const extensionContext = {
21
+ host: context.host || getMockRichTextEditor(),
22
+ isSourceEditMode: context.isSourceEditMode || jest.fn().mockReturnValue(false),
23
+ getSelectedNodes: context.getSelectedNodes || jest.fn().mockReturnValue([]),
24
+ flushValue: context.flushValue || jest.fn(),
25
+ };
26
+ extensionContextManager.setExtensionContext(extensionContext);
27
+ return extensionContext;
28
+ }
29
+ /**
30
+ * Mocks the toolbar render context for testing purposes.
31
+ *
32
+ * @param {Partial<VegaRTEToolbarRenderContext>} context - Partial context to override default mock values.
33
+ * @returns {VegaRTEToolbarRenderContext} The mocked toolbar render context.
34
+ */
35
+ export function mockToolbarRenderContext(context = {}) {
36
+ return {
37
+ host: context.host || getMockRichTextEditor(),
38
+ rteRange: context.rteRange || new RTERange(),
39
+ sourceEditMode: context.sourceEditMode || false,
40
+ };
41
+ }
@@ -27,7 +27,7 @@ export class VegaRichTextImageEditorRenderer extends VegaSlimmer {
27
27
  };
28
28
  }
29
29
  render() {
30
- return (h("vega-popover", { style: { width: '100%' }, trigger: "click", alignment: "start", placement: "bottom", showArrow: false, ref: (ref) => {
30
+ return (h("vega-popover", { style: { width: '100%' }, trigger: "click", alignment: "start", placement: "bottom", showArrow: false, isScreenPosition: true, ref: (ref) => {
31
31
  this.popoverRef = ref;
32
32
  DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaPopoverShow, () => {
33
33
  this.selected = true;
@@ -66,6 +66,11 @@
66
66
  }
67
67
  }
68
68
 
69
+ :host(.vega-no-suitable-placement) .vega-tooltip-content::after,
70
+ :host(.vega-no-suitable-alignment) .vega-tooltip-content::after {
71
+ display: none;
72
+ }
73
+
69
74
  .vega-tooltip-content::after {
70
75
  content: "";
71
76
  position: absolute;
@@ -1,4 +1,5 @@
1
- import { getWeekdays } from '../utils';
1
+ import { getWeekdays, buildDatePickerAnnouncement, getSystemTimezone } from '../utils';
2
+ import { CalendarDate } from '../calendar-date';
2
3
  describe('utils', () => {
3
4
  it('should return weekdays as expected by default', () => {
4
5
  expect(getWeekdays()).toEqual([0, 1, 2, 3, 4, 5, 6]);
@@ -6,4 +7,56 @@ describe('utils', () => {
6
7
  it('should return weekdays as expected when change the firstWeekDay', () => {
7
8
  expect(getWeekdays(1)).toEqual([1, 2, 3, 4, 5, 6, 0]);
8
9
  });
10
+ it('should return a non-empty string for getSystemTimezone', () => {
11
+ expect(typeof getSystemTimezone()).toBe('string');
12
+ expect(getSystemTimezone().length).toBeGreaterThan(0);
13
+ });
14
+ describe('buildDatePickerAnnouncement', () => {
15
+ it('should return empty string when both startDate and endDate are null', () => {
16
+ expect(buildDatePickerAnnouncement({ mode: 'single', startDate: null })).toBe('');
17
+ expect(buildDatePickerAnnouncement({ mode: 'range', startDate: null, endDate: null })).toBe('');
18
+ });
19
+ it('should return single mode announcement with startDate', () => {
20
+ const startDate = new CalendarDate(2025, 3, 15);
21
+ const result = buildDatePickerAnnouncement({ mode: 'single', startDate });
22
+ expect(result).toContain('Selected result');
23
+ expect(result).toContain('March');
24
+ expect(result).toContain('15');
25
+ expect(result).toContain('2025');
26
+ });
27
+ it('should return empty string for single mode without startDate', () => {
28
+ expect(buildDatePickerAnnouncement({ mode: 'single', startDate: null })).toBe('');
29
+ });
30
+ it('should return range mode announcement with both startDate and endDate', () => {
31
+ const startDate = new CalendarDate(2025, 3, 10);
32
+ const endDate = new CalendarDate(2025, 3, 20);
33
+ const result = buildDatePickerAnnouncement({ mode: 'range', startDate, endDate });
34
+ expect(result).toContain('Selected result');
35
+ expect(result).toContain('Start Date');
36
+ expect(result).toContain('End Date');
37
+ expect(result).toContain('March');
38
+ expect(result).toContain('10');
39
+ expect(result).toContain('20');
40
+ });
41
+ it('should return range mode announcement with only startDate', () => {
42
+ const startDate = new CalendarDate(2025, 6, 1);
43
+ const result = buildDatePickerAnnouncement({ mode: 'range', startDate, endDate: null });
44
+ expect(result).toContain('Selected result');
45
+ expect(result).toContain('Start Date');
46
+ expect(result).toContain('June');
47
+ expect(result).toContain('1');
48
+ expect(result).not.toContain('End Date');
49
+ });
50
+ it('should return empty string for range mode without any dates', () => {
51
+ expect(buildDatePickerAnnouncement({ mode: 'range', startDate: null, endDate: null })).toBe('');
52
+ });
53
+ it('should return empty string for range mode with only endDate', () => {
54
+ const endDate = new CalendarDate(2025, 3, 20);
55
+ expect(buildDatePickerAnnouncement({ mode: 'range', startDate: null, endDate })).toBe('');
56
+ });
57
+ it('should return empty string for single mode with only endDate', () => {
58
+ const endDate = new CalendarDate(2025, 3, 20);
59
+ expect(buildDatePickerAnnouncement({ mode: 'single', startDate: null, endDate })).toBe('');
60
+ });
61
+ });
9
62
  });
@@ -1,3 +1,4 @@
1
+ import { VegaInternalTranslation } from '../translation/internal-translation-controller';
1
2
  /**
2
3
  * Get a week days array
3
4
  *
@@ -26,3 +27,37 @@ export var WeekdayLongNames;
26
27
  export const getSystemTimezone = () => {
27
28
  return Intl.DateTimeFormat().resolvedOptions().timeZone;
28
29
  };
30
+ /**
31
+ * Build an aria announcement string for date picker selection.
32
+ * TODO: consider to implement i18n for aria announcement .
33
+ *
34
+ * @param {object} options - The options for building the announcement.
35
+ * @param {'single' | 'range'} options.mode - The date picker selection mode.
36
+ * @param {Nullable<CalendarDate>} options.startDate - The start date.
37
+ * @param {Nullable<CalendarDate>} [options.endDate] - The end date (used in range mode).
38
+ * @returns {string} - The aria announcement string.
39
+ */
40
+ export const buildDatePickerAnnouncement = (options) => {
41
+ const mode = options.mode;
42
+ const startDate = options.startDate;
43
+ const endDate = options.endDate;
44
+ if (!startDate && !endDate) {
45
+ return '';
46
+ }
47
+ // eslint-disable-next-line jsdoc/require-jsdoc
48
+ const formatDate = (d) => `${d.getMonthName()} ${d.date} ${d.year}`;
49
+ if (mode === 'single' && startDate) {
50
+ return `${VegaInternalTranslation.t('Selected result')}: ${formatDate(startDate)}`;
51
+ }
52
+ if (mode === 'range') {
53
+ const startDateLabel = VegaInternalTranslation.t('Start Date');
54
+ const endDateLabel = VegaInternalTranslation.t('End Date');
55
+ if (startDate && endDate) {
56
+ return `${VegaInternalTranslation.t('Selected result')} ${startDateLabel}: ${formatDate(startDate)}. ${endDateLabel}: ${formatDate(endDate)}.`;
57
+ }
58
+ if (startDate) {
59
+ return `${VegaInternalTranslation.t('Selected result')} ${startDateLabel}: ${formatDate(startDate)}.`;
60
+ }
61
+ }
62
+ return '';
63
+ };
@@ -1,5 +1,5 @@
1
1
  import { convertArrayToNestedArray, flatNestedArray } from '../../../utils/array';
2
- import { map as d3Map, timeParse as d3TimeParse } from 'd3';
2
+ import { map as d3Map, timeParse as d3TimeParse } from '../../../polyfill/d3';
3
3
  /** The FormatTimePositionsInputProcessor class processes input data for a line chart by formatting time positions if the x-axis type is 'time'. */
4
4
  export class FormatTimePositionsInputProcessor {
5
5
  /**
@@ -30,7 +30,7 @@ export class FormatTimePositionsInputProcessor {
30
30
  let lengthArray = [];
31
31
  const flatArray = flatNestedArray(data);
32
32
  const flatArray_date = d3Map(flatArray, (d) => {
33
- return { x: typeof d.x === 'string' ? d3TimeParse('%Y-%m-%d')(d.x) : d.x, y: d.y };
33
+ return { x: (typeof d.x === 'string' ? d3TimeParse('%Y-%m-%d')(d.x) : d.x), y: d.y };
34
34
  });
35
35
  if (data && Array.isArray(data[0])) {
36
36
  lengthArray = data.map((item) => item.length);
@@ -1,4 +1,4 @@
1
- import { pie as d3Pie } from 'd3';
1
+ import { pie as d3Pie } from '../../../polyfill/d3';
2
2
  /** The PieChartArchPathInputProcessor class processes input data to generate options for rendering a pie or donut chart with D3.js. */
3
3
  export class PieChartArchPathInputProcessor {
4
4
  /**
@@ -1,5 +1,5 @@
1
1
  import { flatNestedArray } from '../../../utils/array';
2
- import { scaleTime, scaleLinear, scaleBand, extent as d3Extent } from 'd3';
2
+ import { scaleTime, scaleLinear, scaleBand, extent as d3Extent } from '../../../polyfill/d3';
3
3
  /** The XAxisInputProcessor class generates X-axis options for a line chart based on input data and previous layout results. */
4
4
  export class XAxisInputProcessor {
5
5
  /**
@@ -43,16 +43,18 @@ export class XAxisInputProcessor {
43
43
  const xData = flatData.map((item) => item.x);
44
44
  let xScale;
45
45
  if (xAxisType === 'time') {
46
+ const ext = d3Extent(xData);
46
47
  xScale = scaleTime()
47
- .domain(d3Extent(xData))
48
+ .domain(ext[0] !== undefined ? ext : [new Date(), new Date()])
48
49
  .range([0, width]);
49
50
  }
50
51
  else if (xAxisType === 'category') {
51
52
  xScale = scaleBand(typeof sorter === 'function' ? xData.sort(sorter) : xData, [0, width]).padding(padding);
52
53
  }
53
54
  else {
55
+ const ext = d3Extent(xData);
54
56
  xScale = scaleLinear()
55
- .domain(d3Extent(xData))
57
+ .domain(ext[0] !== undefined ? ext : [0, 0])
56
58
  .range([0, width]);
57
59
  }
58
60
  return xScale;
@@ -1,4 +1,5 @@
1
- import { timeFormat, timeSecond, timeMinute, timeHour, timeDay, timeMonth, timeWeek, timeYear } from 'd3';
1
+ import { timeFormat } from '../../../polyfill/d3/d3-time-format-polyfill';
2
+ import { timeSecond, timeMinute, timeHour, timeDay, timeMonth, timeWeek, timeYear, } from '../../../polyfill/d3/d3-time-polyfill';
2
3
  /** The XAxisInputProcessor class generates X-axis options for a line chart based on input data and previous layout results. */
3
4
  export class XAxisLabelFormatterInputProcessor {
4
5
  constructor() {
@@ -1,5 +1,5 @@
1
1
  import { flatNestedArray } from '../../../utils/array';
2
- import { min as d3Min, max as d3Max, extent as d3Extent, scaleLinear } from 'd3';
2
+ import { min as d3Min, max as d3Max, extent as d3Extent, scaleLinear } from '../../../polyfill/d3';
3
3
  /** The YAxisInputProcessor class generates Y-axis options for a line chart based on input data and previous layout results. */
4
4
  export class YAxisInputProcessor {
5
5
  /**
@@ -37,14 +37,16 @@ export class YAxisInputProcessor {
37
37
  * @returns {ScaleType}y scale
38
38
  */
39
39
  getScale(data, range, ticks) {
40
+ var _a, _b;
40
41
  const flatData = flatNestedArray(data);
41
42
  const yData = flatData.map((item) => item.y).concat(0);
42
- let maxYData = d3Max(yData);
43
- let minYData = d3Min(yData);
43
+ let maxYData = (_a = d3Max(yData)) !== null && _a !== void 0 ? _a : 0;
44
+ let minYData = (_b = d3Min(yData)) !== null && _b !== void 0 ? _b : 0;
44
45
  let yScale = scaleLinear().domain([minYData, maxYData]);
45
- const ticksValue = yScale.ticks(ticks);
46
+ const ticksValue = (yScale.ticks ? yScale.ticks(ticks) : []);
46
47
  const step = Math.abs(ticksValue[ticksValue.length - 1] - ticksValue[ticksValue.length - 2]);
47
- const [minTickValue, maxTickValue] = d3Extent(ticksValue);
48
+ const ext = d3Extent(ticksValue);
49
+ const [minTickValue, maxTickValue] = ext[0] !== undefined ? ext : [0, 0];
48
50
  if (minYData < minTickValue) {
49
51
  minYData = minTickValue - step;
50
52
  ticks += 1;
@@ -1,5 +1,5 @@
1
1
  import { InteractingEntryGenerator } from './interacting-entry-generator';
2
- import { select as d3Select } from 'd3';
2
+ import { select as d3Select } from '../../../polyfill/d3';
3
3
  /** The `ArcPathHoverGenerator` class is a TypeScript function that handles mouseover events on SVG elements with a specific class and modifies their appearance. */
4
4
  export class ArcPathHoverGenerator extends InteractingEntryGenerator {
5
5
  constructor() {
@@ -1,5 +1,5 @@
1
1
  import { InteractingEntryGenerator } from './interacting-entry-generator';
2
- import { select as d3Select } from 'd3';
2
+ import { select as d3Select } from '../../../polyfill/d3';
3
3
  /** The PieLegendHoverGenerator class generates an InteractingEntry object that handles mouseover events on a legend of a D3 pie chart and triggers a mouseover event on the corresponding path element. */
4
4
  export class PieLegendHoverGenerator extends InteractingEntryGenerator {
5
5
  constructor() {
@@ -1,5 +1,5 @@
1
1
  import { BaseRenderer } from './base-renderer';
2
- import { line as d3Line, create as d3Create } from 'd3';
2
+ import { line as d3Line, create as d3Create } from '../../../polyfill/d3';
3
3
  /**
4
4
  * The CanvasRenderer class is a TypeScript class that extends the BaseRenderer class and provides
5
5
  * methods for drawing various shapes and elements on a canvas.
@@ -1,5 +1,5 @@
1
1
  import { BaseRenderer } from './base-renderer';
2
- import { select as d3Select, create as d3Create, line as d3Line, axisBottom, axisLeft, arc as d3Arc, } from 'd3';
2
+ import { select as d3Select, create as d3Create, line as d3Line, axisBottom, axisLeft, arc as d3Arc, } from '../../../polyfill/d3';
3
3
  /** This class is used to render charts using SVG elements. */
4
4
  export class SVGRenderer extends BaseRenderer {
5
5
  /**
@@ -1,6 +1,6 @@
1
1
  import { SVGRenderer } from '../../renderers/svg-renderer';
2
2
  import { ArcPathDrawer } from '../../drawers/arc-path-drawer';
3
- import { pie as d3Pie } from 'd3';
3
+ import { pie as d3Pie } from '../../../../polyfill/d3';
4
4
  import { SVGInteractor } from '../../interactors/svg-interactor';
5
5
  describe('path drawer', () => {
6
6
  it('should call renderer function when run the execute function', () => {
@@ -1,5 +1,5 @@
1
1
  import { FormatTimePositionsInputProcessor } from '../../input-processors/format-time-positions-input-processor';
2
- import { timeParse as d3TimeParse } from 'd3';
2
+ import { timeParse as d3TimeParse } from '../../../../polyfill/d3';
3
3
  describe('formatTimePositionsInputProcessor', () => {
4
4
  const formatTimePositionsInputProcessor = new FormatTimePositionsInputProcessor();
5
5
  it('should return expect result when call the process function ', () => {
@@ -1,5 +1,5 @@
1
1
  import { SortPositionsInputProcessor } from '../../input-processors/sort-positions-input-processor';
2
- import { timeParse as d3TimeParse } from 'd3';
2
+ import { timeParse as d3TimeParse } from '../../../../polyfill/d3';
3
3
  describe('sortPositionsInputProcessor', () => {
4
4
  const sortPositionsInputProcessor = new SortPositionsInputProcessor();
5
5
  it('should return expect result when call the process function ', () => {
@@ -36,4 +36,43 @@ describe('scaleGenerator', () => {
36
36
  expect(xAxisInputProcessor['getScale'](stringData, width, 'category').domain()).toEqual(stringData.map((item) => item.x));
37
37
  expect(xAxisInputProcessor['getScale'](stringDataNeedSort, width, 'category', 1, (item, nextItem) => 'ABCD'.indexOf(item) - 'ABCD'.indexOf(nextItem)).domain()).toEqual(['A', 'B', 'C', 'D']);
38
38
  });
39
+ it('should fall back to default domains when input data is empty', () => {
40
+ const width = 200;
41
+ expect(xAxisInputProcessor['getScale']([], width, 'value').domain()).toEqual([0, 0]);
42
+ const timeDomain = xAxisInputProcessor['getScale']([], width, 'time', 1).domain();
43
+ expect(timeDomain[0]).toBeInstanceOf(Date);
44
+ expect(timeDomain[1]).toBeInstanceOf(Date);
45
+ expect(Math.abs(timeDomain[1].getTime() - timeDomain[0].getTime())).toBeLessThan(10);
46
+ });
47
+ it('should pass correct padding to getScale based on container tagName', () => {
48
+ const getScaleSpy = jest
49
+ .spyOn(xAxisInputProcessor, 'getScale')
50
+ .mockReturnValue({});
51
+ const previousOutput = {
52
+ width: 200,
53
+ height: 100,
54
+ innerWidth: 200,
55
+ innerHeight: 100,
56
+ top: 0,
57
+ left: 0,
58
+ right: 0,
59
+ bottom: 0,
60
+ };
61
+ const dataSource = [];
62
+ const lineChartInput = {
63
+ dataSource,
64
+ container: document.createElement('vega-line-chart'),
65
+ xAxis: { type: 'value' },
66
+ };
67
+ xAxisInputProcessor.process(lineChartInput, previousOutput);
68
+ expect(getScaleSpy).toHaveBeenLastCalledWith(dataSource, 200, 'value', 1, undefined);
69
+ const divChartInput = {
70
+ dataSource,
71
+ container: document.createElement('div'),
72
+ xAxis: { type: 'value' },
73
+ };
74
+ xAxisInputProcessor.process(divChartInput, previousOutput);
75
+ expect(getScaleSpy).toHaveBeenLastCalledWith(dataSource, 200, 'value', 0.1, undefined);
76
+ getScaleSpy.mockRestore();
77
+ });
39
78
  });