@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,239 @@
1
+ /* eslint-disable @typescript-eslint/typedef */
2
+ /**
3
+ * D3 Selection Polyfill Tests
4
+ *
5
+ * Tests for the d3-selection-polyfill module: select() and create() functions.
6
+ *
7
+ * @see VD-5022 - [Zero Dependencies] remove d3 dependency
8
+ */
9
+ import { select, create } from '../d3-selection-polyfill';
10
+ // ─── Selection Tests ────────────────────────────────────────────────
11
+ describe('D3 Selection Polyfill', () => {
12
+ it('should wrap a DOM element with select()', () => {
13
+ const el = document.createElement('div');
14
+ const selection = select(el);
15
+ expect(selection.node()).toBe(el);
16
+ });
17
+ it('should set attributes with attr()', () => {
18
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
19
+ const selection = select(el);
20
+ selection.attr('width', 300).attr('height', 200);
21
+ expect(el.getAttribute('width')).toBe('300');
22
+ expect(el.getAttribute('height')).toBe('200');
23
+ });
24
+ it('should set viewBox with array value', () => {
25
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
26
+ select(el).attr('viewBox', [0, 0, 300, 200]);
27
+ expect(el.getAttribute('viewBox')).toBe('0,0,300,200');
28
+ });
29
+ it('should set properties with property()', () => {
30
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
31
+ select(el).property('__data__', { test: true });
32
+ expect(el['__data__']).toEqual({ test: true });
33
+ });
34
+ it('should set text content with text()', () => {
35
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'text');
36
+ select(el).text('hello');
37
+ expect(el.textContent).toBe('hello');
38
+ });
39
+ it('should select child elements', () => {
40
+ const parent = document.createElement('div');
41
+ const child = document.createElement('span');
42
+ child.className = 'test';
43
+ parent.appendChild(child);
44
+ const selection = select(parent).select('.test');
45
+ expect(selection.node()).toBe(child);
46
+ });
47
+ it('should selectAll matching elements', () => {
48
+ const parent = document.createElement('div');
49
+ const child1 = document.createElement('span');
50
+ const child2 = document.createElement('span');
51
+ child1.className = 'item';
52
+ child2.className = 'item';
53
+ parent.appendChild(child1);
54
+ parent.appendChild(child2);
55
+ const nodes = select(parent).selectAll('.item').nodes();
56
+ expect(nodes.length).toBe(2);
57
+ });
58
+ it('should append child elements', () => {
59
+ var _a;
60
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
61
+ const g = select(svg).append('g');
62
+ expect((_a = g.node()) === null || _a === void 0 ? void 0 : _a.tagName).toBe('g');
63
+ expect(svg.childNodes.length).toBe(1);
64
+ });
65
+ it('should append with factory function', () => {
66
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
67
+ const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
68
+ select(svg).append(() => circle);
69
+ expect(svg.childNodes[0]).toBe(circle);
70
+ });
71
+ it('should bind datum with datum()', () => {
72
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'path');
73
+ const data = { startAngle: 0, endAngle: Math.PI };
74
+ const selection = select(el).datum(data);
75
+ expect(selection.node()).toBe(el);
76
+ });
77
+ it('should support attr with function value using datum', () => {
78
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'path');
79
+ const data = { name: 'test-item' };
80
+ select(el)
81
+ .datum(data)
82
+ .attr('data-name', (d) => d.name);
83
+ expect(el.getAttribute('data-name')).toBe('test-item');
84
+ });
85
+ it('should call() a function with the selection', () => {
86
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
87
+ const fn = jest.fn();
88
+ const selection = select(svg);
89
+ selection.call(fn);
90
+ expect(fn).toHaveBeenCalledWith(selection);
91
+ });
92
+ it('should iterate with each()', () => {
93
+ const parent = document.createElement('div');
94
+ parent.innerHTML = '<span class="item">a</span><span class="item">b</span>';
95
+ const elements = [];
96
+ select(parent)
97
+ .selectAll('.item')
98
+ .each(function () {
99
+ elements.push(this);
100
+ });
101
+ expect(elements.length).toBe(2);
102
+ });
103
+ it('should remove elements', () => {
104
+ const parent = document.createElement('div');
105
+ const child = document.createElement('span');
106
+ child.className = 'removable';
107
+ parent.appendChild(child);
108
+ select(parent).selectAll('.removable').remove();
109
+ expect(parent.childNodes.length).toBe(0);
110
+ });
111
+ it('should clone elements', () => {
112
+ const parent = document.createElement('div');
113
+ const child = document.createElement('span');
114
+ child.className = 'original';
115
+ parent.appendChild(child);
116
+ const cloned = select(parent).selectAll('.original').clone();
117
+ expect(parent.childNodes.length).toBe(2);
118
+ expect(cloned.nodes().length).toBe(1);
119
+ });
120
+ it('should handle transition() and duration() as no-ops', () => {
121
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'path');
122
+ select(el).transition(100).duration(100).attr('d', 'M0,0');
123
+ expect(el.getAttribute('d')).toBe('M0,0');
124
+ });
125
+ it('should create detached SVG elements with create()', () => {
126
+ const textSelection = create('svg:text');
127
+ const textNode = textSelection.node();
128
+ expect(textNode).not.toBeNull();
129
+ expect(textNode === null || textNode === void 0 ? void 0 : textNode.tagName).toBe('text');
130
+ });
131
+ it('should create circle elements with create()', () => {
132
+ const circleSelection = create('svg:circle');
133
+ circleSelection.attr('r', 5).attr('cx', 10).attr('cy', 20);
134
+ const circle = circleSelection.node();
135
+ expect(circle === null || circle === void 0 ? void 0 : circle.getAttribute('r')).toBe('5');
136
+ expect(circle === null || circle === void 0 ? void 0 : circle.getAttribute('cx')).toBe('10');
137
+ expect(circle === null || circle === void 0 ? void 0 : circle.getAttribute('cy')).toBe('20');
138
+ });
139
+ it('should create element with plain tag name (no namespace prefix)', () => {
140
+ var _a;
141
+ // Cover create() single-part path (line 284 branch)
142
+ const rectangleSelection = create('rect');
143
+ expect((_a = rectangleSelection.node()) === null || _a === void 0 ? void 0 : _a.tagName).toBe('rect');
144
+ });
145
+ });
146
+ // ─── Additional Selection Coverage ──────────────────────────────────
147
+ describe('D3 Selection Polyfill - Additional Coverage', () => {
148
+ it('should return empty selection when select() is called on empty selection', () => {
149
+ const emptySelection = select(document.createElement('div'));
150
+ // Create a selection with no elements
151
+ const emptyChild = emptySelection.selectAll('.nonexistent');
152
+ // select on an empty selection (line 47)
153
+ const result = emptyChild.select('.anything');
154
+ expect(result.node()).toBeNull();
155
+ });
156
+ it('should return empty selection when selectAll() is called on empty selection', () => {
157
+ const emptySelection = select(document.createElement('div'));
158
+ const emptyChild = emptySelection.selectAll('.nonexistent');
159
+ // selectAll on an empty selection (line 64)
160
+ const result = emptyChild.selectAll('.anything');
161
+ expect(result.nodes()).toEqual([]);
162
+ });
163
+ it('should remove attribute when attr value is null', () => {
164
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
165
+ el.setAttribute('stroke', 'red');
166
+ expect(el.getAttribute('stroke')).toBe('red');
167
+ // attr with null value (line 109)
168
+ select(el).attr('stroke', null);
169
+ expect(el.getAttribute('stroke')).toBeNull();
170
+ });
171
+ it('should remove attribute when attr value is undefined', () => {
172
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
173
+ el.setAttribute('fill', 'blue');
174
+ expect(el.getAttribute('fill')).toBe('blue');
175
+ // attr with undefined value (line 110)
176
+ select(el).attr('fill', undefined);
177
+ expect(el.getAttribute('fill')).toBeNull();
178
+ });
179
+ it('should return null when getting attr on empty selection', () => {
180
+ const emptySelection = select(document.createElement('div')).selectAll('.nonexistent');
181
+ // attr getter on empty selection (line 118)
182
+ const result = emptySelection.attr('class');
183
+ expect(result).toBeNull();
184
+ });
185
+ it('should return attribute value when getting attr on non-empty selection', () => {
186
+ // Cover line 110 — el ? el.getAttribute(name) : null (truthy branch)
187
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
188
+ el.setAttribute('width', '300');
189
+ const result = select(el).attr('width');
190
+ expect(result).toBe('300');
191
+ });
192
+ });
193
+ // ─── Selection Branch Edge Cases ────────────────────────────────────
194
+ describe('D3 Selection Polyfill - Branch Edge Cases', () => {
195
+ it('should handle select on empty selectAll result (no first element)', () => {
196
+ // Covers line 50 — select() when _groups[0] is undefined
197
+ const parent = document.createElement('div');
198
+ const selection = select(parent).selectAll('.missing');
199
+ const innerSelection = selection.select('.anything');
200
+ expect(innerSelection.node()).toBeNull();
201
+ expect(innerSelection.nodes()).toEqual([]);
202
+ });
203
+ it('should return empty array when select finds no match', () => {
204
+ // Covers line 50 — found ? [found] : [] (the [] branch)
205
+ const parent = document.createElement('div');
206
+ const selection = select(parent).select('.nonexistent');
207
+ expect(selection.node()).toBeNull();
208
+ });
209
+ it('should remove attribute when function accessor returns null', () => {
210
+ // Covers line 110 — resolvedValue is null from function
211
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
212
+ el.setAttribute('fill', 'red');
213
+ select(el).attr('fill', () => null);
214
+ expect(el.getAttribute('fill')).toBeNull();
215
+ });
216
+ it('should set attribute when function accessor returns non-null/undefined value', () => {
217
+ // Covers line 110 — the else branch (resolvedValue is not null/undefined)
218
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
219
+ select(el).attr('width', () => 42);
220
+ expect(el.getAttribute('width')).toBe('42');
221
+ });
222
+ it('should remove attribute when function accessor returns undefined', () => {
223
+ // Covers line 110 — resolvedValue === undefined from function
224
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
225
+ el.setAttribute('opacity', '0.5');
226
+ select(el).attr('opacity', () => undefined);
227
+ expect(el.getAttribute('opacity')).toBeNull();
228
+ });
229
+ it('should not throw when removing a detached element (no parentNode)', () => {
230
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
231
+ expect(() => select(el).remove()).not.toThrow();
232
+ });
233
+ it('should clone a detached element without inserting (no parentNode)', () => {
234
+ const el = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
235
+ const cloned = select(el).clone();
236
+ expect(cloned.nodes().length).toBe(1);
237
+ expect(cloned.node()).not.toBeNull();
238
+ });
239
+ });
@@ -0,0 +1,225 @@
1
+ /* eslint-disable @typescript-eslint/typedef */
2
+ /**
3
+ * D3 Shape Polyfill Tests
4
+ *
5
+ * Tests for the d3-shape-polyfill module: line(), arc(), and pie() factories.
6
+ *
7
+ * @see VD-5022 - [Zero Dependencies] remove d3 dependency
8
+ */
9
+ import { line, arc, pie } from '../d3-shape-polyfill';
10
+ // ─── Shape Tests ────────────────────────────────────────────────────
11
+ describe('D3 Shape Polyfill', () => {
12
+ describe('line()', () => {
13
+ it('should generate SVG path data from data points', () => {
14
+ const positions = [
15
+ { x: 0, y: 0 },
16
+ { x: 10, y: 20 },
17
+ { x: 30, y: 15 },
18
+ ];
19
+ const pathData = line()
20
+ .x(d => d.x)
21
+ .y(d => d.y)(positions);
22
+ expect(pathData).toBe('M0,0L10,20L30,15');
23
+ });
24
+ it('should return empty string for empty array', () => {
25
+ const pathData = line()
26
+ .x(d => d.x)
27
+ .y(d => d.y)([]);
28
+ expect(pathData).toBe('');
29
+ });
30
+ it('should handle single data point', () => {
31
+ const pathData = line()
32
+ .x(d => d.x)
33
+ .y(d => d.y)([{ x: 5, y: 10 }]);
34
+ expect(pathData).toBe('M5,10');
35
+ });
36
+ });
37
+ describe('arc()', () => {
38
+ it('should generate SVG arc path data', () => {
39
+ const arcData = {
40
+ startAngle: 0,
41
+ endAngle: Math.PI / 2,
42
+ data: { name: 'test', value: 25 },
43
+ index: 0,
44
+ value: 25,
45
+ padAngle: 0,
46
+ };
47
+ const pathStr = arc().innerRadius(0).outerRadius(100)(arcData);
48
+ expect(pathStr).toContain('M');
49
+ expect(pathStr).toContain('A');
50
+ expect(pathStr).toContain('Z');
51
+ });
52
+ it('should generate donut arc with inner radius', () => {
53
+ const arcData = {
54
+ startAngle: 0,
55
+ endAngle: Math.PI,
56
+ data: { name: 'test', value: 50 },
57
+ index: 0,
58
+ value: 50,
59
+ padAngle: 0,
60
+ };
61
+ const pathStr = arc().innerRadius(50).outerRadius(100)(arcData);
62
+ expect(pathStr).toContain('M');
63
+ expect(pathStr).toContain('A');
64
+ // Donut arcs should have two arcs (outer and inner)
65
+ expect((pathStr.match(/A/g) || []).length).toBe(2);
66
+ });
67
+ });
68
+ describe('pie()', () => {
69
+ it('should generate pie arc data from values', () => {
70
+ const data = [
71
+ { name: 'A', value: 30 },
72
+ { name: 'B', value: 70 },
73
+ ];
74
+ const arcs = pie().value(d => d.value)(data);
75
+ expect(arcs.length).toBe(2);
76
+ // Sorted descending: B(70) gets startAngle=0, A(30) ends at 2π
77
+ expect(arcs[1].startAngle).toBe(0);
78
+ expect(arcs[0].data).toEqual({ name: 'A', value: 30 });
79
+ expect(arcs[1].data).toEqual({ name: 'B', value: 70 });
80
+ expect(arcs[0].endAngle).toBeCloseTo(2 * Math.PI, 5);
81
+ });
82
+ it('should set correct angles proportional to values', () => {
83
+ const data = [
84
+ { name: 'Equal1', value: 50 },
85
+ { name: 'Equal2', value: 50 },
86
+ ];
87
+ const arcs = pie().value(d => d.value)(data);
88
+ const angle1 = arcs[0].endAngle - arcs[0].startAngle;
89
+ const angle2 = arcs[1].endAngle - arcs[1].startAngle;
90
+ expect(angle1).toBeCloseTo(Math.PI, 5);
91
+ expect(angle2).toBeCloseTo(Math.PI, 5);
92
+ });
93
+ it('should handle single value', () => {
94
+ const data = [{ name: 'Only', value: 100 }];
95
+ const arcs = pie().value(d => d.value)(data);
96
+ expect(arcs[0].startAngle).toBe(0);
97
+ expect(arcs[0].endAngle).toBeCloseTo(2 * Math.PI, 5);
98
+ });
99
+ });
100
+ });
101
+ // ─── Additional Shape Coverage ──────────────────────────────────────
102
+ describe('D3 Shape Polyfill - Additional Coverage', () => {
103
+ it('should generate path from callable line factory', () => {
104
+ const lineFn = line()
105
+ .x(d => d.x)
106
+ .y(d => d.y);
107
+ expect(typeof lineFn).toBe('function');
108
+ const result = lineFn([
109
+ { x: 0, y: 0 },
110
+ { x: 10, y: 20 },
111
+ ]);
112
+ expect(result).toBe('M0,0L10,20');
113
+ });
114
+ it('should use default x/y value extractor for objects with x/y properties', () => {
115
+ // Cover default _x and _y value extractor (lines 19-20) — object.x and object.y path
116
+ const pathData = line()([
117
+ { x: 5, y: 10 },
118
+ { x: 15, y: 25 },
119
+ ]);
120
+ expect(pathData).toBe('M5,10L15,25');
121
+ });
122
+ it('should use default pie value accessor when .value() not called', () => {
123
+ // Cover default _value accessor (line 218) — object.value path
124
+ const data = [{ value: 40 }, { value: 60 }];
125
+ const arcs = pie()(data);
126
+ expect(arcs.length).toBe(2);
127
+ expect(arcs[0].value).toBe(40);
128
+ expect(arcs[1].value).toBe(60);
129
+ // Sorted descending: 60 starts at 0, 40 ends at 2π
130
+ expect(arcs[0].endAngle).toBeCloseTo(2 * Math.PI, 5);
131
+ });
132
+ });
133
+ // ─── Shape Factory Edge Cases ───────────────────────────────────────
134
+ describe('D3 Shape Polyfill - Branch Edge Cases', () => {
135
+ describe('Shape factory default value extractor', () => {
136
+ it('should use default value extractor on line factory', () => {
137
+ // Covers default x and y value extractor — object.x and object.y path
138
+ const lineFn = line();
139
+ // Don't set custom value extractor — use defaults
140
+ const result = lineFn.generate([
141
+ { x: 5, y: 10 },
142
+ { x: 15, y: 25 },
143
+ ]);
144
+ expect(result).toBe('M5,10L15,25');
145
+ });
146
+ });
147
+ describe('Pie and line factory direct usage', () => {
148
+ it('should use pie().value() and generate() methods directly', () => {
149
+ // Cover pie factory value and generate methods
150
+ const pieFn = pie();
151
+ pieFn.value((d) => d.v);
152
+ const result = pieFn.generate([{ v: 30 }, { v: 70 }]);
153
+ expect(result.length).toBe(2);
154
+ expect(result[0].value).toBe(30);
155
+ expect(result[1].value).toBe(70);
156
+ // Sorted descending: 70 starts at 0, 30 ends at 2π
157
+ expect(result[0].endAngle).toBeCloseTo(2 * Math.PI, 5);
158
+ });
159
+ it('should use pie default value extractor', () => {
160
+ // Cover pie default value extractor path
161
+ const pieFn = pie();
162
+ const result = pieFn.generate([{ value: 50 }, { value: 50 }]);
163
+ expect(result.length).toBe(2);
164
+ expect(result[0].value).toBe(50);
165
+ });
166
+ it('should use pie default extractor fallback to 0', () => {
167
+ // Cover pie default value extractor fallback path
168
+ const pieFn = pie();
169
+ const result = pieFn.generate([{ name: 'test' }]);
170
+ expect(result.length).toBe(1);
171
+ expect(result[0].value).toBe(0);
172
+ });
173
+ it('should use arc factory methods directly', () => {
174
+ const arcFn = arc();
175
+ arcFn.innerRadius(0).outerRadius(100);
176
+ const path = arcFn.generate({ startAngle: 0, endAngle: Math.PI / 2 });
177
+ expect(path).toContain('A');
178
+ });
179
+ it('should use line default value extractor via factory', () => {
180
+ // Cover line default x and y value extractor
181
+ const lineFn = line();
182
+ const result = lineFn.generate([{ x: 3, y: 7 }]);
183
+ expect(result).toBe('M3,7');
184
+ });
185
+ it('should use line default extractor fallback to array indices', () => {
186
+ // Cover line default x/y fallback paths
187
+ const lineFn = line();
188
+ const result = lineFn.generate([
189
+ [5, 10],
190
+ [15, 25],
191
+ ]);
192
+ expect(result).toBe('M5,10L15,25');
193
+ });
194
+ });
195
+ describe('Factory wrapper .generate() method coverage', () => {
196
+ it('should call .generate() on line() factory wrapper (line 91)', () => {
197
+ const lineFn = line()
198
+ .x(d => d.x)
199
+ .y(d => d.y);
200
+ const result = lineFn.generate([
201
+ { x: 0, y: 0 },
202
+ { x: 10, y: 20 },
203
+ ]);
204
+ expect(typeof result).toBe('string');
205
+ expect(result).toBe('M0,0L10,20');
206
+ });
207
+ it('should call .generate() on arc() factory wrapper (line 193)', () => {
208
+ const arcFn = arc().innerRadius(0).outerRadius(50);
209
+ const result = arcFn.generate({ startAngle: 0, endAngle: Math.PI / 2 });
210
+ expect(typeof result).toBe('string');
211
+ expect(result).toContain('A');
212
+ });
213
+ it('should call .generate() on pie() factory wrapper (line 274)', () => {
214
+ const pieFn = pie().value(d => d.v);
215
+ const result = pieFn.generate([{ v: 10 }, { v: 20 }, { v: 30 }]);
216
+ expect(Array.isArray(result)).toBe(true);
217
+ expect(result).toHaveLength(3);
218
+ result.forEach(d => {
219
+ expect(d).toHaveProperty('startAngle');
220
+ expect(d).toHaveProperty('endAngle');
221
+ expect(d).toHaveProperty('data');
222
+ });
223
+ });
224
+ });
225
+ });
@@ -0,0 +1,162 @@
1
+ /* eslint-disable @typescript-eslint/typedef */
2
+ /**
3
+ * D3 Time Format Polyfill Tests
4
+ *
5
+ * Tests for the d3-time-format-polyfill module: timeFormat() and timeParse().
6
+ *
7
+ * @see VD-5022 - [Zero Dependencies] remove d3 dependency
8
+ */
9
+ import { timeFormat, timeParse } from '../d3-time-format-polyfill';
10
+ // ─── Time Format Tests ──────────────────────────────────────────────
11
+ describe('D3 Time Format Polyfill', () => {
12
+ describe('timeFormat()', () => {
13
+ it('should format year', () => {
14
+ const format = timeFormat('%Y');
15
+ expect(format(new Date(2023, 0, 1))).toBe('2023');
16
+ });
17
+ it('should format date string %Y-%m-%d', () => {
18
+ const format = timeFormat('%Y-%m-%d');
19
+ expect(format(new Date(2023, 2, 15))).toBe('2023-03-15');
20
+ });
21
+ it('should format milliseconds .%L', () => {
22
+ const format = timeFormat('.%L');
23
+ const date = new Date(2023, 0, 1, 0, 0, 0, 42);
24
+ expect(format(date)).toBe('.042');
25
+ });
26
+ it('should format seconds :%S', () => {
27
+ const format = timeFormat(':%S');
28
+ const date = new Date(2023, 0, 1, 0, 0, 30);
29
+ expect(format(date)).toBe(':30');
30
+ });
31
+ it('should format minutes %I:%M', () => {
32
+ const format = timeFormat('%I:%M');
33
+ const date = new Date(2023, 0, 1, 14, 30);
34
+ expect(format(date)).toBe('02:30');
35
+ });
36
+ it('should format hours %H:00', () => {
37
+ const format = timeFormat('%H:00');
38
+ const date = new Date(2023, 0, 1, 14, 0);
39
+ expect(format(date)).toBe('14:00');
40
+ });
41
+ it('should format day %d', () => {
42
+ const format = timeFormat('%d');
43
+ expect(format(new Date(2023, 0, 5))).toBe('05');
44
+ });
45
+ it('should format month abbreviation %b', () => {
46
+ const format = timeFormat('%b');
47
+ expect(format(new Date(2023, 0, 1))).toBe('Jan');
48
+ expect(format(new Date(2023, 11, 1))).toBe('Dec');
49
+ });
50
+ it('should format week %b %d', () => {
51
+ const format = timeFormat('%b %d');
52
+ expect(format(new Date(2023, 2, 15))).toBe('Mar 15');
53
+ });
54
+ });
55
+ describe('timeParse()', () => {
56
+ it('should parse %Y-%m-%d format', () => {
57
+ const parse = timeParse('%Y-%m-%d');
58
+ const date = parse('2023-03-15');
59
+ expect(date).not.toBeNull();
60
+ expect(date === null || date === void 0 ? void 0 : date.getFullYear()).toBe(2023);
61
+ expect(date === null || date === void 0 ? void 0 : date.getMonth()).toBe(2);
62
+ expect(date === null || date === void 0 ? void 0 : date.getDate()).toBe(15);
63
+ });
64
+ it('should return null for invalid strings', () => {
65
+ const parse = timeParse('%Y-%m-%d');
66
+ expect(parse('invalid')).toBeNull();
67
+ });
68
+ it('should parse same format as Vega chart uses', () => {
69
+ const parse = timeParse('%Y-%m-%d');
70
+ const date1 = parse('2011-01-01');
71
+ const date2 = parse('2022-01-01');
72
+ expect(date1 === null || date1 === void 0 ? void 0 : date1.getFullYear()).toBe(2011);
73
+ expect(date2 === null || date2 === void 0 ? void 0 : date2.getFullYear()).toBe(2022);
74
+ });
75
+ it('should parse dates consistently across multiple calls', () => {
76
+ const parse = timeParse('%Y-%m-%d');
77
+ const d1 = parse('2021-01-01');
78
+ const d2 = parse('2021-01-01');
79
+ expect(d1 === null || d1 === void 0 ? void 0 : d1.getTime()).toBe(d2 === null || d2 === void 0 ? void 0 : d2.getTime());
80
+ });
81
+ });
82
+ });
83
+ // ─── Additional Time Format Coverage ────────────────────────────────
84
+ describe('D3 Time Format Polyfill - Additional Coverage', () => {
85
+ describe('timeFormat() - uncovered directives', () => {
86
+ it('should format full month name %B', () => {
87
+ // Covers FORMAT_DIRECTIVES['%B'] (lines 31-36)
88
+ const format = timeFormat('%B');
89
+ expect(format(new Date(2023, 0, 1))).toBe('January');
90
+ expect(format(new Date(2023, 5, 1))).toBe('June');
91
+ expect(format(new Date(2023, 11, 1))).toBe('December');
92
+ });
93
+ it('should format abbreviated day name %a', () => {
94
+ // Covers FORMAT_DIRECTIVES['%a'] (lines 37-40)
95
+ const format = timeFormat('%a');
96
+ const firstDate = new Date(2023, 0, 1); // Jan 1, 2023 is Sun
97
+ expect(format(firstDate)).toBe('Sun');
98
+ const secondDate = new Date(2023, 0, 2);
99
+ expect(format(secondDate)).toBe('Mon');
100
+ });
101
+ it('should format AM/PM indicator %p', () => {
102
+ // Covers FORMAT_DIRECTIVES['%p'] (line 41)
103
+ const format = timeFormat('%p');
104
+ expect(format(new Date(2023, 0, 1, 9, 0))).toBe('AM');
105
+ expect(format(new Date(2023, 0, 1, 0, 0))).toBe('AM');
106
+ expect(format(new Date(2023, 0, 1, 12, 0))).toBe('PM');
107
+ expect(format(new Date(2023, 0, 1, 23, 0))).toBe('PM');
108
+ });
109
+ it('should format literal percent %%', () => {
110
+ // Covers FORMAT_DIRECTIVES['%%'] (line 42)
111
+ const format = timeFormat('100%%');
112
+ expect(format(new Date(2023, 0, 1))).toBe('100%');
113
+ });
114
+ it('should format combined %I:%M %p', () => {
115
+ const format = timeFormat('%I:%M %p');
116
+ expect(format(new Date(2023, 0, 1, 14, 30))).toBe('02:30 PM');
117
+ expect(format(new Date(2023, 0, 1, 0, 0))).toBe('12:00 AM');
118
+ });
119
+ it('should format %a, %B %d, %Y', () => {
120
+ const format = timeFormat('%a, %B %d, %Y');
121
+ // Jan 1, 2023 is a Sunday
122
+ expect(format(new Date(2023, 0, 1))).toBe('Sun, January 01, 2023');
123
+ });
124
+ });
125
+ describe('timeParse() - uncovered patterns', () => {
126
+ it('should parse 12-hour format %I', () => {
127
+ // Covers PARSE_PATTERNS['%I'] (lines 88-91)
128
+ const parse = timeParse('%Y-%m-%d %I');
129
+ const date = parse('2023-03-15 02');
130
+ expect(date).not.toBeNull();
131
+ expect(date === null || date === void 0 ? void 0 : date.getHours()).toBe(2);
132
+ });
133
+ it('should parse minutes %M', () => {
134
+ // Covers PARSE_PATTERNS['%M'] (lines 92-95)
135
+ const parse = timeParse('%Y-%m-%d %H:%M');
136
+ const date = parse('2023-03-15 14:30');
137
+ expect(date).not.toBeNull();
138
+ expect(date === null || date === void 0 ? void 0 : date.getHours()).toBe(14);
139
+ expect(date === null || date === void 0 ? void 0 : date.getMinutes()).toBe(30);
140
+ });
141
+ it('should parse seconds %S', () => {
142
+ // Covers PARSE_PATTERNS['%S'] (lines 96-99)
143
+ const parse = timeParse('%Y-%m-%d %H:%M:%S');
144
+ const date = parse('2023-03-15 14:30:45');
145
+ expect(date).not.toBeNull();
146
+ expect(date === null || date === void 0 ? void 0 : date.getSeconds()).toBe(45);
147
+ });
148
+ it('should parse milliseconds %L', () => {
149
+ // Covers PARSE_PATTERNS['%L'] (lines 100-103)
150
+ const parse = timeParse('%Y-%m-%d %H:%M:%S.%L');
151
+ const date = parse('2023-03-15 14:30:45.123');
152
+ expect(date).not.toBeNull();
153
+ expect(date === null || date === void 0 ? void 0 : date.getMilliseconds()).toBe(123);
154
+ });
155
+ it('should parse %H (24-hour hours)', () => {
156
+ const parse = timeParse('%H');
157
+ const date = parse('23');
158
+ expect(date).not.toBeNull();
159
+ expect(date === null || date === void 0 ? void 0 : date.getHours()).toBe(23);
160
+ });
161
+ });
162
+ });