@heartlandone/vega 2.76.0 → 2.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/dist/cjs/{app-globals-12b7d808.js → app-globals-04e7024b.js} +2 -2
  2. package/dist/cjs/aria-attributes-value-mapper-f58c73f8.js +136 -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/{design-token-41baf118.js → design-token-c49717c8.js} +1 -1
  5. package/dist/cjs/{element-appender-slimmer-34e4eb56.js → element-appender-slimmer-38583ca9.js} +2 -2
  6. package/dist/cjs/index.cjs.js +4 -4
  7. package/dist/cjs/legend-input-processor-1e53e5bc.js +2126 -0
  8. package/dist/cjs/loader.cjs.js +4 -4
  9. package/dist/cjs/{responsive-format-facade-ea59bdcd.js → responsive-format-facade-acc39a40.js} +1 -1
  10. package/dist/cjs/{style-formatter-0c3ced39.js → style-formatter-028af284.js} +1 -1
  11. package/dist/cjs/{token-extension-07cac85d.js → token-extension-ffcaeae0.js} +98 -77
  12. package/dist/cjs/vega-accordion.cjs.entry.js +5 -5
  13. package/dist/cjs/vega-app-header-button.cjs.entry.js +18 -143
  14. package/dist/cjs/vega-banner.cjs.entry.js +1 -1
  15. package/dist/cjs/vega-bar-chart.cjs.entry.js +2 -2
  16. package/dist/cjs/vega-box.cjs.entry.js +4 -4
  17. package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -2
  18. package/dist/cjs/vega-button-circle.cjs.entry.js +21 -6
  19. package/dist/cjs/vega-button-group_2.cjs.entry.js +2 -2
  20. package/dist/cjs/vega-button-link.cjs.entry.js +2 -2
  21. package/dist/cjs/vega-button.cjs.entry.js +3 -3
  22. package/dist/cjs/vega-calendar_4.cjs.entry.js +2 -2
  23. package/dist/cjs/vega-card.cjs.entry.js +3 -3
  24. package/dist/cjs/vega-carousel.cjs.entry.js +2 -2
  25. package/dist/cjs/vega-checkbox_2.cjs.entry.js +2 -2
  26. package/dist/cjs/vega-chip.cjs.entry.js +4 -4
  27. package/dist/cjs/vega-code-block.cjs.entry.js +2 -2
  28. package/dist/cjs/vega-combo-box.cjs.entry.js +2 -2
  29. package/dist/cjs/vega-date-picker_2.cjs.entry.js +29 -7
  30. package/dist/cjs/vega-dialog_2.cjs.entry.js +4 -4
  31. package/dist/cjs/vega-divider.cjs.entry.js +3 -3
  32. package/dist/cjs/vega-dropdown_5.cjs.entry.js +4 -4
  33. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  34. package/dist/cjs/vega-flag-icon.cjs.entry.js +3 -3
  35. package/dist/cjs/vega-flex.cjs.entry.js +4 -4
  36. package/dist/cjs/vega-font.cjs.entry.js +3 -3
  37. package/dist/cjs/vega-form.cjs.entry.js +2 -2
  38. package/dist/cjs/vega-grid.cjs.entry.js +3 -3
  39. package/dist/cjs/vega-icon.cjs.entry.js +3 -3
  40. package/dist/cjs/vega-image-uploader.cjs.entry.js +3 -3
  41. package/dist/cjs/vega-input-credit-card.cjs.entry.js +2 -2
  42. package/dist/cjs/vega-input-numeric.cjs.entry.js +2 -2
  43. package/dist/cjs/vega-input-passcode.cjs.entry.js +2 -2
  44. package/dist/cjs/vega-input-phone-number.cjs.entry.js +4753 -5585
  45. package/dist/cjs/vega-input-range.cjs.entry.js +2 -2
  46. package/dist/cjs/vega-input-select.cjs.entry.js +3 -3
  47. package/dist/cjs/vega-left-nav_5.cjs.entry.js +3 -3
  48. package/dist/cjs/vega-line-chart.cjs.entry.js +325 -23
  49. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +2 -2
  50. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +2 -2
  51. package/dist/cjs/vega-pagination.cjs.entry.js +3 -3
  52. package/dist/cjs/vega-pie-chart.cjs.entry.js +5 -88
  53. package/dist/cjs/vega-popover_2.cjs.entry.js +4 -4
  54. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +2 -2
  55. package/dist/cjs/vega-radio_2.cjs.entry.js +2 -2
  56. package/dist/cjs/vega-rich-text-content.cjs.entry.js +14 -0
  57. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +2 -2
  58. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +3 -3
  59. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +2 -2
  60. package/dist/cjs/vega-sidenav_3.cjs.entry.js +2 -2
  61. package/dist/cjs/vega-signature-capture.cjs.entry.js +3 -3
  62. package/dist/cjs/vega-stepper.cjs.entry.js +2 -2
  63. package/dist/cjs/vega-tab-group_2.cjs.entry.js +2 -2
  64. package/dist/cjs/vega-table_11.cjs.entry.js +3 -3
  65. package/dist/cjs/vega-textarea.cjs.entry.js +2 -2
  66. package/dist/cjs/vega-time-picker_2.cjs.entry.js +4 -4
  67. package/dist/cjs/vega-tooltip_2.cjs.entry.js +3 -3
  68. package/dist/cjs/vega.cjs.js +4 -4
  69. package/dist/cjs/y-axis-input-processor-54a26515.js +832 -0
  70. package/dist/collection/components/vega-accordion/slimmers/vega-accordion-renderer.js +1 -1
  71. package/dist/collection/components/vega-accordion/vega-accordion.css +5 -0
  72. package/dist/collection/components/vega-button-circle/vega-button-circle.js +17 -3
  73. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +16 -2
  74. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +184 -207
  75. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +32 -0
  76. package/dist/collection/components/vega-input-phone-number/slimmers/controllers/country-select-controller.js +1 -1
  77. package/dist/collection/components/vega-input-phone-number/slimmers/controllers/vega-input-phone-number-value-controller.js +1 -1
  78. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.js +1 -1
  79. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/phone-number-input-renderer.js +1 -1
  80. package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +4 -4
  81. package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +15 -0
  82. package/dist/collection/components/vega-rich-text-editor/extensions/base-extension-renderer.js +11 -0
  83. package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +15 -1
  84. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +2 -0
  85. package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +0 -11
  86. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.js +23 -23
  87. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-extension.js +0 -10
  88. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.js +7 -17
  89. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +12 -16
  90. package/dist/collection/components/vega-rich-text-editor/helpers/extension-context-manager.js +31 -0
  91. package/dist/collection/components/vega-rich-text-editor/helpers/extension-context-manager.test.js +19 -0
  92. package/dist/collection/components/vega-rich-text-editor/test/extensions/extension-test-utils.js +41 -0
  93. package/dist/collection/helpers/chart/input-processors/format-time-positions-input-processor.js +2 -2
  94. package/dist/collection/helpers/chart/input-processors/pie-chart-arc-path-input-processor.js +1 -1
  95. package/dist/collection/helpers/chart/input-processors/x-axis-input-processor.js +5 -3
  96. package/dist/collection/helpers/chart/input-processors/x-axis-label-formatter-input-processor.js +2 -1
  97. package/dist/collection/helpers/chart/input-processors/y-axis-input-processor.js +7 -5
  98. package/dist/collection/helpers/chart/interacting-entry-generator/arc-path-hover-generator.js +1 -1
  99. package/dist/collection/helpers/chart/interacting-entry-generator/pie-legend-hover-generator.js +1 -1
  100. package/dist/collection/helpers/chart/renderers/canvas-renderer.js +1 -1
  101. package/dist/collection/helpers/chart/renderers/svg-renderer.js +1 -1
  102. package/dist/collection/helpers/chart/test/drawers/arc-path-drawer.test.js +1 -1
  103. package/dist/collection/helpers/chart/test/input-processors/format-time-positions-input-processor.test.js +1 -1
  104. package/dist/collection/helpers/chart/test/input-processors/sort-positions-input-processor.test.js +1 -1
  105. package/dist/collection/helpers/chart/test/input-processors/x-axis-input-processor.test.js +39 -0
  106. package/dist/collection/helpers/chart/test/input-processors/x-axis-label-formatter-input-processor.test.js +61 -14
  107. package/dist/collection/helpers/chart/test/input-processors/y-axis-input-processor.coverage.test.js +39 -0
  108. package/dist/collection/helpers/chart/test/input-processors/y-axis-input-processor.test.js +14 -0
  109. package/dist/collection/helpers/chart/test/renderers/svg-renderer.test.js +1 -1
  110. package/dist/collection/helpers/common/test/wait-for-component-did-render.test.js +67 -0
  111. package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +4 -0
  112. package/dist/collection/helpers/slimmers/mutation-observer/test/aria-attributes-value-mapper.test.js +1 -1
  113. package/dist/collection/helpers/validator/rules/valid-phone-number-rule.js +1 -1
  114. package/dist/collection/helpers/validator/test/rules/valid-phone-number-rule.test.js +10 -0
  115. package/dist/collection/polyfill/d3/d3-array-polyfill.js +89 -0
  116. package/dist/collection/polyfill/d3/d3-axis-polyfill.js +195 -0
  117. package/dist/collection/polyfill/d3/d3-scale-polyfill.js +582 -0
  118. package/dist/collection/polyfill/d3/d3-selection-polyfill.js +274 -0
  119. package/dist/collection/polyfill/d3/d3-shape-polyfill.js +252 -0
  120. package/dist/collection/polyfill/d3/d3-time-format-polyfill.js +207 -0
  121. package/dist/collection/polyfill/d3/d3-time-polyfill.js +99 -0
  122. package/dist/collection/polyfill/d3/index.js +31 -0
  123. package/dist/collection/polyfill/d3/test/d3-array-polyfill.test.js +72 -0
  124. package/dist/collection/polyfill/d3/test/d3-axis-polyfill.test.js +171 -0
  125. package/dist/collection/polyfill/d3/test/d3-integration.test.js +137 -0
  126. package/dist/collection/polyfill/d3/test/d3-scale-polyfill.test.js +382 -0
  127. package/dist/collection/polyfill/d3/test/d3-selection-polyfill.test.js +239 -0
  128. package/dist/collection/polyfill/d3/test/d3-shape-polyfill.test.js +225 -0
  129. package/dist/collection/polyfill/d3/test/d3-time-format-polyfill.test.js +162 -0
  130. package/dist/collection/polyfill/d3/test/d3-time-polyfill.test.js +76 -0
  131. package/dist/collection/polyfill/d3/test/index.test.js +78 -0
  132. package/dist/collection/polyfill/libphonenumber/as-you-type.js +405 -0
  133. package/dist/collection/polyfill/libphonenumber/format-helpers.js +186 -0
  134. package/dist/collection/polyfill/libphonenumber/index.js +22 -0
  135. package/dist/collection/polyfill/libphonenumber/metadata.js +150 -0
  136. package/dist/collection/polyfill/libphonenumber/metadata.json.js +3900 -0
  137. package/dist/collection/polyfill/libphonenumber/parse-phone-number.js +127 -0
  138. package/dist/collection/polyfill/libphonenumber/phone-number.js +38 -0
  139. package/dist/collection/polyfill/libphonenumber/test/as-you-type.test.js +309 -0
  140. package/dist/collection/polyfill/libphonenumber/test/format-helpers.test.js +192 -0
  141. package/dist/collection/polyfill/libphonenumber/test/index.test.js +16 -0
  142. package/dist/collection/polyfill/libphonenumber/test/metadata.test.js +196 -0
  143. package/dist/collection/polyfill/libphonenumber/test/parse-phone-number.test.js +218 -0
  144. package/dist/collection/polyfill/libphonenumber/test/phone-number.test.js +56 -0
  145. package/dist/collection/polyfill/libphonenumber/types.js +23 -0
  146. package/dist/esm/{app-globals-c0676920.js → app-globals-32055795.js} +2 -2
  147. package/dist/esm/aria-attributes-value-mapper-d4fef46a.js +134 -0
  148. package/dist/esm/{child-nodes-event-prevent-slimmer-649b9d30.js → child-nodes-event-prevent-slimmer-331312b8.js} +1 -1
  149. package/dist/esm/{design-token-4aee1c56.js → design-token-5bc034e1.js} +1 -1
  150. package/dist/esm/{element-appender-slimmer-e4713a72.js → element-appender-slimmer-9ea377d0.js} +2 -2
  151. package/dist/esm/index.js +4 -4
  152. package/dist/esm/legend-input-processor-122008c5.js +2116 -0
  153. package/dist/esm/loader.js +4 -4
  154. package/dist/esm/{responsive-format-facade-7a071174.js → responsive-format-facade-aa705823.js} +1 -1
  155. package/dist/esm/{style-formatter-3d06b72d.js → style-formatter-28138f5c.js} +1 -1
  156. package/dist/esm/{token-extension-e33fd151.js → token-extension-73e4460a.js} +98 -77
  157. package/dist/esm/vega-accordion.entry.js +5 -5
  158. package/dist/esm/vega-app-header-button.entry.js +17 -142
  159. package/dist/esm/vega-banner.entry.js +1 -1
  160. package/dist/esm/vega-bar-chart.entry.js +2 -2
  161. package/dist/esm/vega-box.entry.js +4 -4
  162. package/dist/esm/vega-breadcrumb.entry.js +2 -2
  163. package/dist/esm/vega-button-circle.entry.js +21 -6
  164. package/dist/esm/vega-button-group_2.entry.js +2 -2
  165. package/dist/esm/vega-button-link.entry.js +2 -2
  166. package/dist/esm/vega-button.entry.js +3 -3
  167. package/dist/esm/vega-calendar_4.entry.js +2 -2
  168. package/dist/esm/vega-card.entry.js +3 -3
  169. package/dist/esm/vega-carousel.entry.js +2 -2
  170. package/dist/esm/vega-checkbox_2.entry.js +2 -2
  171. package/dist/esm/vega-chip.entry.js +4 -4
  172. package/dist/esm/vega-code-block.entry.js +2 -2
  173. package/dist/esm/vega-combo-box.entry.js +2 -2
  174. package/dist/esm/vega-date-picker_2.entry.js +29 -7
  175. package/dist/esm/vega-dialog_2.entry.js +4 -4
  176. package/dist/esm/vega-divider.entry.js +3 -3
  177. package/dist/esm/vega-dropdown_5.entry.js +4 -4
  178. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  179. package/dist/esm/vega-flag-icon.entry.js +3 -3
  180. package/dist/esm/vega-flex.entry.js +4 -4
  181. package/dist/esm/vega-font.entry.js +3 -3
  182. package/dist/esm/vega-form.entry.js +2 -2
  183. package/dist/esm/vega-grid.entry.js +3 -3
  184. package/dist/esm/vega-icon.entry.js +3 -3
  185. package/dist/esm/vega-image-uploader.entry.js +3 -3
  186. package/dist/esm/vega-input-credit-card.entry.js +2 -2
  187. package/dist/esm/vega-input-numeric.entry.js +2 -2
  188. package/dist/esm/vega-input-passcode.entry.js +2 -2
  189. package/dist/esm/vega-input-phone-number.entry.js +4753 -5585
  190. package/dist/esm/vega-input-range.entry.js +2 -2
  191. package/dist/esm/vega-input-select.entry.js +3 -3
  192. package/dist/esm/vega-left-nav_5.entry.js +3 -3
  193. package/dist/esm/vega-line-chart.entry.js +311 -9
  194. package/dist/esm/vega-loader-wrapper_2.entry.js +2 -2
  195. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +2 -2
  196. package/dist/esm/vega-pagination.entry.js +3 -3
  197. package/dist/esm/vega-pie-chart.entry.js +5 -88
  198. package/dist/esm/vega-popover_2.entry.js +4 -4
  199. package/dist/esm/vega-progress-tracker_2.entry.js +2 -2
  200. package/dist/esm/vega-radio_2.entry.js +2 -2
  201. package/dist/esm/vega-rich-text-content.entry.js +14 -0
  202. package/dist/esm/vega-rich-text-editor_4.entry.js +2 -2
  203. package/dist/esm/vega-selection-chip_2.entry.js +3 -3
  204. package/dist/esm/vega-selection-tile_2.entry.js +2 -2
  205. package/dist/esm/vega-sidenav_3.entry.js +2 -2
  206. package/dist/esm/vega-signature-capture.entry.js +3 -3
  207. package/dist/esm/vega-stepper.entry.js +2 -2
  208. package/dist/esm/vega-tab-group_2.entry.js +2 -2
  209. package/dist/esm/vega-table_11.entry.js +3 -3
  210. package/dist/esm/vega-textarea.entry.js +2 -2
  211. package/dist/esm/vega-time-picker_2.entry.js +4 -4
  212. package/dist/esm/vega-tooltip_2.entry.js +3 -3
  213. package/dist/esm/vega.js +4 -4
  214. package/dist/esm/y-axis-input-processor-c7e05353.js +826 -0
  215. package/dist/sri/vega-sri-manifest.json +234 -230
  216. package/dist/types/components/vega-button-circle/vega-button-circle.d.ts +2 -0
  217. package/dist/types/components/vega-date-picker/types.d.ts +14 -0
  218. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +3 -0
  219. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +9 -1
  220. package/dist/types/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.d.ts +6 -0
  221. package/dist/types/components/vega-rich-text-editor/extensions/base-extension-renderer.d.ts +9 -1
  222. package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +9 -1
  223. package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +0 -7
  224. package/dist/types/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.d.ts +5 -10
  225. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +1 -5
  226. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.d.ts +3 -8
  227. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.d.ts +5 -9
  228. package/dist/types/components/vega-rich-text-editor/helpers/extension-context-manager.d.ts +26 -0
  229. package/dist/types/components/vega-rich-text-editor/helpers/extension-context-manager.test.d.ts +1 -0
  230. package/dist/types/components/vega-rich-text-editor/interface.d.ts +4 -0
  231. package/dist/types/components/vega-rich-text-editor/test/extensions/extension-test-utils.d.ts +21 -0
  232. package/dist/types/components.d.ts +11 -1
  233. package/dist/types/helpers/chart/test/input-processors/y-axis-input-processor.coverage.test.d.ts +1 -0
  234. package/dist/types/helpers/common/test/wait-for-component-did-render.test.d.ts +1 -0
  235. package/dist/types/polyfill/d3/d3-array-polyfill.d.ts +48 -0
  236. package/dist/types/polyfill/d3/d3-axis-polyfill.d.ts +53 -0
  237. package/dist/types/polyfill/d3/d3-scale-polyfill.d.ts +42 -0
  238. package/dist/types/polyfill/d3/d3-selection-polyfill.d.ts +173 -0
  239. package/dist/types/polyfill/d3/d3-shape-polyfill.d.ts +129 -0
  240. package/dist/types/polyfill/d3/d3-time-format-polyfill.d.ts +28 -0
  241. package/dist/types/polyfill/d3/d3-time-polyfill.d.ts +68 -0
  242. package/dist/types/polyfill/d3/index.d.ts +27 -0
  243. package/dist/types/polyfill/d3/test/d3-array-polyfill.test.d.ts +1 -0
  244. package/dist/types/polyfill/d3/test/d3-axis-polyfill.test.d.ts +1 -0
  245. package/dist/types/polyfill/d3/test/d3-integration.test.d.ts +1 -0
  246. package/dist/types/polyfill/d3/test/d3-scale-polyfill.test.d.ts +1 -0
  247. package/dist/types/polyfill/d3/test/d3-selection-polyfill.test.d.ts +1 -0
  248. package/dist/types/polyfill/d3/test/d3-shape-polyfill.test.d.ts +1 -0
  249. package/dist/types/polyfill/d3/test/d3-time-format-polyfill.test.d.ts +1 -0
  250. package/dist/types/polyfill/d3/test/d3-time-polyfill.test.d.ts +1 -0
  251. package/dist/types/polyfill/d3/test/index.test.d.ts +1 -0
  252. package/dist/types/polyfill/libphonenumber/as-you-type.d.ts +154 -0
  253. package/dist/types/polyfill/libphonenumber/format-helpers.d.ts +64 -0
  254. package/dist/types/polyfill/libphonenumber/index.d.ts +22 -0
  255. package/dist/types/polyfill/libphonenumber/metadata.d.ts +45 -0
  256. package/dist/types/polyfill/libphonenumber/metadata.json.d.ts +470 -0
  257. package/dist/types/polyfill/libphonenumber/parse-phone-number.d.ts +26 -0
  258. package/dist/types/polyfill/libphonenumber/phone-number.d.ts +24 -0
  259. package/dist/types/polyfill/libphonenumber/test/as-you-type.test.d.ts +1 -0
  260. package/dist/types/polyfill/libphonenumber/test/format-helpers.test.d.ts +1 -0
  261. package/dist/types/polyfill/libphonenumber/test/index.test.d.ts +1 -0
  262. package/dist/types/polyfill/libphonenumber/test/metadata.test.d.ts +1 -0
  263. package/dist/types/polyfill/libphonenumber/test/parse-phone-number.test.d.ts +1 -0
  264. package/dist/types/polyfill/libphonenumber/test/phone-number.test.d.ts +1 -0
  265. package/dist/types/polyfill/libphonenumber/types.d.ts +77 -0
  266. package/dist/types/types/components.type.d.ts +1 -0
  267. package/dist/types/types/flag.type.d.ts +255 -4
  268. package/dist/types/types/vega-chart.d.ts +10 -11
  269. package/dist/vega/index.esm.js +1 -1
  270. package/dist/vega/{p-d8fadcdc.entry.js → p-0037068c.entry.js} +1 -1
  271. package/dist/vega/{p-3d8122ab.entry.js → p-010ff53d.entry.js} +1 -1
  272. package/dist/vega/{p-bb5e0192.entry.js → p-03004a05.entry.js} +1 -1
  273. package/dist/vega/{p-f05b8f76.entry.js → p-0572c393.entry.js} +1 -1
  274. package/dist/vega/{p-02a7d60c.entry.js → p-0a3a285b.entry.js} +1 -1
  275. package/dist/vega/p-0d4cb1c7.entry.js +1 -0
  276. package/dist/vega/{p-a7a8a4eb.entry.js → p-100b44c3.entry.js} +1 -1
  277. package/dist/vega/{p-8dbdd609.entry.js → p-168bb296.entry.js} +1 -1
  278. package/dist/vega/{p-b136ebba.entry.js → p-1a011d47.entry.js} +1 -1
  279. package/dist/vega/{p-10734a00.js → p-1a51bf6f.js} +1 -1
  280. package/dist/vega/{p-6dcdb580.entry.js → p-1deedff2.entry.js} +1 -1
  281. package/dist/vega/{p-3244c605.entry.js → p-1fa0c7da.entry.js} +1 -1
  282. package/dist/vega/{p-dd3a94f4.entry.js → p-22056609.entry.js} +1 -1
  283. package/dist/vega/{p-c29068fb.entry.js → p-2b142818.entry.js} +1 -1
  284. package/dist/vega/{p-2ba78982.entry.js → p-34bcf4ed.entry.js} +1 -1
  285. package/dist/vega/{p-94a77fbe.entry.js → p-36a09524.entry.js} +1 -1
  286. package/dist/vega/{p-154f9cf7.entry.js → p-3c05abd9.entry.js} +1 -1
  287. package/dist/vega/{p-fd7ddd64.entry.js → p-3ce2b05c.entry.js} +1 -1
  288. package/dist/vega/{p-28ad1864.entry.js → p-43ff48c0.entry.js} +1 -1
  289. package/dist/vega/{p-ca5898dc.entry.js → p-4742feef.entry.js} +1 -1
  290. package/dist/vega/{p-eda988d5.entry.js → p-4aa52ed2.entry.js} +1 -1
  291. package/dist/vega/{p-d555f677.entry.js → p-4aa94940.entry.js} +1 -1
  292. package/dist/vega/p-4bee4202.entry.js +1 -0
  293. package/dist/vega/{p-01d58eb8.entry.js → p-50d074ed.entry.js} +1 -1
  294. package/dist/vega/{p-033c31d8.entry.js → p-5485c387.entry.js} +1 -1
  295. package/dist/vega/{p-f14a5eae.entry.js → p-560d2f48.entry.js} +1 -1
  296. package/dist/vega/{p-bebfbe95.entry.js → p-5833f33b.entry.js} +1 -1
  297. package/dist/vega/{p-b366deff.entry.js → p-592296d7.entry.js} +1 -1
  298. package/dist/vega/{p-5831d6d3.entry.js → p-5cfce62d.entry.js} +1 -1
  299. package/dist/vega/p-5f377954.js +1 -1
  300. package/dist/vega/{p-e1431c14.entry.js → p-60f77f5f.entry.js} +1 -1
  301. package/dist/vega/p-641cdb5c.entry.js +1 -0
  302. package/dist/vega/{p-32183637.entry.js → p-67745549.entry.js} +1 -1
  303. package/dist/vega/{p-087ea379.entry.js → p-70df91fb.entry.js} +1 -1
  304. package/dist/vega/{p-76181a70.entry.js → p-7425cedc.entry.js} +1 -1
  305. package/dist/vega/{p-89f2e16d.entry.js → p-857069a5.entry.js} +1 -1
  306. package/dist/vega/p-8e34b266.js +1 -0
  307. package/dist/vega/{p-32faa460.entry.js → p-9441f2ba.entry.js} +1 -1
  308. package/dist/vega/{p-2b49686d.entry.js → p-9fb877c1.entry.js} +1 -1
  309. package/dist/vega/p-a46e977b.entry.js +1 -0
  310. package/dist/vega/p-ac82b9f9.entry.js +1 -0
  311. package/dist/vega/p-b1773281.entry.js +1 -0
  312. package/dist/vega/{p-6d60b66a.entry.js → p-b54dc37c.entry.js} +1 -1
  313. package/dist/vega/{p-179aad4f.entry.js → p-b5f18f4b.entry.js} +1 -1
  314. package/dist/vega/{p-7181861a.js → p-bff57aa4.js} +1 -1
  315. package/dist/vega/{p-d7a78c5e.entry.js → p-c165232c.entry.js} +1 -1
  316. package/dist/vega/{p-8950987b.entry.js → p-c292ade4.entry.js} +1 -1
  317. package/dist/vega/p-c2d2faa0.js +1 -0
  318. package/dist/vega/{p-fc1fa345.js → p-cc5eaa1b.js} +1 -1
  319. package/dist/vega/p-cccd7648.entry.js +1 -0
  320. package/dist/vega/{p-7958614a.entry.js → p-cfecc1cb.entry.js} +1 -1
  321. package/dist/vega/{p-57927b10.entry.js → p-d07f5d5a.entry.js} +1 -1
  322. package/dist/vega/{p-9a137bab.entry.js → p-d1cfe972.entry.js} +1 -1
  323. package/dist/vega/{p-d6dbbe61.entry.js → p-d2ee5711.entry.js} +1 -1
  324. package/dist/vega/{p-b256b7a4.js → p-d78f6ede.js} +1 -1
  325. package/dist/vega/p-d8180e42.entry.js +1 -0
  326. package/dist/vega/{p-8b153acd.entry.js → p-daa60a59.entry.js} +1 -1
  327. package/dist/vega/{p-249df6d2.entry.js → p-db5fa164.entry.js} +1 -1
  328. package/dist/vega/p-de64f6e6.js +1 -0
  329. package/dist/vega/p-e4917e76.js +1 -0
  330. package/dist/vega/{p-2cc9d126.entry.js → p-e6cf2ace.entry.js} +1 -1
  331. package/dist/vega/p-e7fbef97.js +1 -0
  332. package/dist/vega/p-f3e6483c.js +1 -0
  333. package/dist/vega/{p-a560d8c5.entry.js → p-f428086c.entry.js} +1 -1
  334. package/dist/vega/{p-4e017458.entry.js → p-fc9ac6e9.entry.js} +1 -1
  335. package/dist/vega/{p-e2af0e24.entry.js → p-ffd48e37.entry.js} +1 -1
  336. package/dist/vega/vega.esm.js +1 -1
  337. package/package.json +2 -6
  338. package/dist/cjs/legend-input-processor-27c65353.js +0 -4759
  339. package/dist/cjs/y-axis-input-processor-9fbfd5e7.js +0 -2302
  340. package/dist/esm/legend-input-processor-5ecae3a7.js +0 -4742
  341. package/dist/esm/y-axis-input-processor-bc54314a.js +0 -2290
  342. package/dist/vega/p-1f5e35dc.entry.js +0 -1
  343. package/dist/vega/p-2e91295d.entry.js +0 -1
  344. package/dist/vega/p-32033e7a.js +0 -1
  345. package/dist/vega/p-46b077d9.js +0 -1
  346. package/dist/vega/p-4e4a0228.entry.js +0 -1
  347. package/dist/vega/p-644f701a.js +0 -1
  348. package/dist/vega/p-6a62e476.entry.js +0 -1
  349. package/dist/vega/p-a13a73fa.entry.js +0 -1
  350. package/dist/vega/p-be23bef2.js +0 -1
  351. package/dist/vega/p-c1d13eec.entry.js +0 -1
  352. package/dist/vega/p-e89e3ede.entry.js +0 -1
  353. package/dist/vega/p-f3d0f2dc.js +0 -1
  354. package/dist/vega/p-f5bafc45.entry.js +0 -1
  355. /package/dist/cjs/{feature-flag-controller-04cb1e69.js → feature-flag-controller-9129ef52.js} +0 -0
  356. /package/dist/esm/{feature-flag-controller-09ea7e87.js → feature-flag-controller-30f7b625.js} +0 -0
  357. /package/dist/vega/{p-07cb0243.js → p-18e8d9b7.js} +0 -0
@@ -0,0 +1,207 @@
1
+ /**
2
+ * D3 Time Format Polyfill - Lightweight date formatting and parsing.
3
+ *
4
+ * This is a drop-in replacement for d3-time-format, implementing only the methods
5
+ * used in the Vega chart rendering system: timeFormat and timeParse.
6
+ *
7
+ * @see VD-5022 - [Zero Dependencies] remove d3 dependency
8
+ */
9
+ /**
10
+ * Mapping of format directives (e.g. %Y, %m) to their format functions.
11
+ * Each function takes a Date and returns the formatted string segment.
12
+ */
13
+ /* eslint-disable jsdoc/require-jsdoc */
14
+ const FORMAT_DIRECTIVES = {
15
+ '%Y': (d) => String(d.getFullYear()),
16
+ '%m': (d) => String(d.getMonth() + 1).padStart(2, '0'),
17
+ '%d': (d) => String(d.getDate()).padStart(2, '0'),
18
+ '%H': (d) => String(d.getHours()).padStart(2, '0'),
19
+ '%I': (d) => {
20
+ const hours = d.getHours() % 12;
21
+ return String(hours === 0 ? 12 : hours).padStart(2, '0');
22
+ },
23
+ '%M': (d) => String(d.getMinutes()).padStart(2, '0'),
24
+ '%S': (d) => String(d.getSeconds()).padStart(2, '0'),
25
+ '%L': (d) => String(d.getMilliseconds()).padStart(3, '0'),
26
+ '%b': (d) => {
27
+ const months = [
28
+ 'Jan',
29
+ 'Feb',
30
+ 'Mar',
31
+ 'Apr',
32
+ 'May',
33
+ 'Jun',
34
+ 'Jul',
35
+ 'Aug',
36
+ 'Sep',
37
+ 'Oct',
38
+ 'Nov',
39
+ 'Dec',
40
+ ];
41
+ return months[d.getMonth()];
42
+ },
43
+ '%B': (d) => {
44
+ const months = [
45
+ 'January',
46
+ 'February',
47
+ 'March',
48
+ 'April',
49
+ 'May',
50
+ 'June',
51
+ 'July',
52
+ 'August',
53
+ 'September',
54
+ 'October',
55
+ 'November',
56
+ 'December',
57
+ ];
58
+ return months[d.getMonth()];
59
+ },
60
+ '%a': (d) => {
61
+ const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
62
+ return days[d.getDay()];
63
+ },
64
+ '%p': (d) => (d.getHours() >= 12 ? 'PM' : 'AM'),
65
+ '%%': () => '%',
66
+ };
67
+ /* eslint-enable jsdoc/require-jsdoc */
68
+ /**
69
+ * Creates a date formatter function for the given specifier.
70
+ * Mimics d3.timeFormat().
71
+ *
72
+ * Supported directives: %Y, %m, %d, %H, %I, %M, %S, %L, %b, %B, %a, %p, %%
73
+ *
74
+ * @param {string} specifier - Format specifier string (e.g., '%Y-%m-%d', '.%L', ':%S').
75
+ * @returns {Function} A function that formats a Date into a string.
76
+ */
77
+ export function timeFormat(specifier) {
78
+ return (date) => {
79
+ let result = specifier;
80
+ // Sort directives by length (longest first) to avoid partial matches
81
+ const directives = Object.keys(FORMAT_DIRECTIVES).sort((a, b) => b.length - a.length);
82
+ for (const directive of directives) {
83
+ if (result.includes(directive)) {
84
+ result = result.split(directive).join(FORMAT_DIRECTIVES[directive](date));
85
+ }
86
+ }
87
+ return result;
88
+ };
89
+ }
90
+ /**
91
+ * Mapping of format directives to regex capture patterns for parsing.
92
+ */
93
+ /* eslint-disable jsdoc/require-jsdoc */
94
+ const PARSE_PATTERNS = {
95
+ /** Parses a 4-digit year. */
96
+ '%Y': {
97
+ regex: '(\\d{4})',
98
+ handler: (m, p) => {
99
+ p.year = parseInt(m, 10);
100
+ },
101
+ },
102
+ /** Parses a 2-digit month. */
103
+ '%m': {
104
+ regex: '(\\d{2})',
105
+ handler: (m, p) => {
106
+ p.month = parseInt(m, 10) - 1;
107
+ },
108
+ },
109
+ /** Parses a 2-digit day. */
110
+ '%d': {
111
+ regex: '(\\d{2})',
112
+ handler: (m, p) => {
113
+ p.day = parseInt(m, 10);
114
+ },
115
+ },
116
+ /** Parses a 2-digit hour (24h). */
117
+ '%H': {
118
+ regex: '(\\d{2})',
119
+ handler: (m, p) => {
120
+ p.hours = parseInt(m, 10);
121
+ },
122
+ },
123
+ /** Parses a 2-digit hour (12h). */
124
+ '%I': {
125
+ regex: '(\\d{2})',
126
+ handler: (m, p) => {
127
+ p.hours = parseInt(m, 10);
128
+ },
129
+ },
130
+ /** Parses a 2-digit minute. */
131
+ '%M': {
132
+ regex: '(\\d{2})',
133
+ handler: (m, p) => {
134
+ p.minutes = parseInt(m, 10);
135
+ },
136
+ },
137
+ /** Parses a 2-digit second. */
138
+ '%S': {
139
+ regex: '(\\d{2})',
140
+ handler: (m, p) => {
141
+ p.seconds = parseInt(m, 10);
142
+ },
143
+ },
144
+ /** Parses a 3-digit millisecond. */
145
+ '%L': {
146
+ regex: '(\\d{3})',
147
+ handler: (m, p) => {
148
+ p.milliseconds = parseInt(m, 10);
149
+ },
150
+ },
151
+ };
152
+ /**
153
+ * Creates a date parser function for the given specifier.
154
+ * Mimics d3.timeParse().
155
+ *
156
+ * Supported directives: %Y, %m, %d, %H, %I, %M, %S, %L
157
+ *
158
+ * @param {string} specifier - Parse specifier string (e.g., '%Y-%m-%d').
159
+ * @returns {Function} A function that parses a string into a Date, or null on failure.
160
+ */
161
+ // eslint-disable-next-line spellcheck/spell-checker
162
+ // eslint-disable-next-line @heartlandone/vega-eslint/vega-mandatory-method-return-corresponds-to-comments-tag-verify
163
+ export function timeParse(specifier) {
164
+ // Build regex and capture order from specifier
165
+ const captureOrder = [];
166
+ let regexStr = '^';
167
+ let remaining = specifier;
168
+ while (remaining.length > 0) {
169
+ let matched = false;
170
+ // Sort by key length (longest first) to avoid partial matches
171
+ const keys = Object.keys(PARSE_PATTERNS).sort((a, b) => b.length - a.length);
172
+ for (const key of keys) {
173
+ if (remaining.startsWith(key)) {
174
+ regexStr += PARSE_PATTERNS[key].regex;
175
+ captureOrder.push({ handler: PARSE_PATTERNS[key].handler });
176
+ remaining = remaining.slice(key.length);
177
+ matched = true;
178
+ break;
179
+ }
180
+ }
181
+ if (!matched) {
182
+ // Escape special regex chars for literal characters
183
+ regexStr += remaining[0].replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
184
+ remaining = remaining.slice(1);
185
+ }
186
+ }
187
+ regexStr += '$';
188
+ const regex = new RegExp(regexStr);
189
+ return (dateString) => {
190
+ const match = dateString.match(regex);
191
+ if (!match)
192
+ return null;
193
+ const parts = {
194
+ year: 1970,
195
+ month: 0,
196
+ day: 1,
197
+ hours: 0,
198
+ minutes: 0,
199
+ seconds: 0,
200
+ milliseconds: 0,
201
+ };
202
+ for (let i = 0; i < captureOrder.length; i++) {
203
+ captureOrder[i].handler(match[i + 1], parts);
204
+ }
205
+ return new Date(parts.year, parts.month, parts.day, parts.hours, parts.minutes, parts.seconds, parts.milliseconds);
206
+ };
207
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * D3 Time Polyfill - Lightweight time interval functions.
3
+ *
4
+ * This is a drop-in replacement for d3-time, implementing only the time interval
5
+ * floor functions used in the Vega chart time axis label formatter:
6
+ * timeSecond, timeMinute, timeHour, timeDay, timeWeek, timeMonth, timeYear.
7
+ *
8
+ * Each function floors a Date to the nearest interval boundary, which is used
9
+ * to determine the appropriate label granularity for time-series chart axes.
10
+ *
11
+ * @see VD-5022 - [Zero Dependencies] remove d3 dependency
12
+ */
13
+ /**
14
+ * Floors a date to the nearest second boundary.
15
+ * Used to detect sub-second (millisecond) granularity.
16
+ *
17
+ * @param {Date} date - Input date.
18
+ * @returns {Date} A new Date floored to the nearest second.
19
+ */
20
+ export function timeSecond(date) {
21
+ const d = new Date(date);
22
+ d.setMilliseconds(0);
23
+ return d;
24
+ }
25
+ /**
26
+ * Floors a date to the nearest minute boundary.
27
+ * Used to detect sub-minute (second) granularity.
28
+ *
29
+ * @param {Date} date - Input date.
30
+ * @returns {Date} A new Date floored to the nearest minute.
31
+ */
32
+ export function timeMinute(date) {
33
+ const d = new Date(date);
34
+ d.setSeconds(0, 0);
35
+ return d;
36
+ }
37
+ /**
38
+ * Floors a date to the nearest hour boundary.
39
+ * Used to detect sub-hour (minute) granularity.
40
+ *
41
+ * @param {Date} date - Input date.
42
+ * @returns {Date} A new Date floored to the nearest hour.
43
+ */
44
+ export function timeHour(date) {
45
+ const d = new Date(date);
46
+ d.setMinutes(0, 0, 0);
47
+ return d;
48
+ }
49
+ /**
50
+ * Floors a date to the start of the day (midnight).
51
+ * Used to detect sub-day (hour) granularity.
52
+ *
53
+ * @param {Date} date - Input date.
54
+ * @returns {Date} A new Date floored to midnight.
55
+ */
56
+ export function timeDay(date) {
57
+ const d = new Date(date);
58
+ d.setHours(0, 0, 0, 0);
59
+ return d;
60
+ }
61
+ /**
62
+ * Floors a date to the start of the week (Sunday).
63
+ * Used to distinguish day vs week label granularity.
64
+ *
65
+ * @param {Date} date - Input date.
66
+ * @returns {Date} A new Date floored to the start of the week (Sunday at midnight).
67
+ */
68
+ export function timeWeek(date) {
69
+ const d = new Date(date);
70
+ d.setHours(0, 0, 0, 0);
71
+ d.setDate(d.getDate() - d.getDay());
72
+ return d;
73
+ }
74
+ /**
75
+ * Floors a date to the first of the month.
76
+ * Used to detect sub-month granularity.
77
+ *
78
+ * @param {Date} date - Input date.
79
+ * @returns {Date} A new Date floored to the 1st of the month at midnight.
80
+ */
81
+ export function timeMonth(date) {
82
+ const d = new Date(date);
83
+ d.setDate(1);
84
+ d.setHours(0, 0, 0, 0);
85
+ return d;
86
+ }
87
+ /**
88
+ * Floors a date to January 1st of the year.
89
+ * Used to detect sub-year (month) granularity.
90
+ *
91
+ * @param {Date} date - Input date.
92
+ * @returns {Date} A new Date floored to January 1st at midnight.
93
+ */
94
+ export function timeYear(date) {
95
+ const d = new Date(date);
96
+ d.setMonth(0, 1);
97
+ d.setHours(0, 0, 0, 0);
98
+ return d;
99
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * D3 Polyfill - A lightweight drop-in replacement for the d3 library.
3
+ *
4
+ * This module re-exports only the d3 functions and types used by the Vega
5
+ * chart rendering system, implemented without any external dependencies.
6
+ *
7
+ * Replaces the following d3 sub-packages:
8
+ * - d3-selection: select, create
9
+ * - d3-shape: line, arc, pie
10
+ * - d3-scale: scaleLinear, scaleTime, scaleBand
11
+ * - d3-axis: axisBottom, axisLeft, AxisDomain, AxisScale, Axis
12
+ * - d3-array: min, max, extent, map
13
+ * - d3-time-format: timeFormat, timeParse
14
+ * - d3-time: timeSecond, timeMinute, timeHour, timeDay, timeWeek, timeMonth, timeYear
15
+ *
16
+ * @see VD-5022 - [Zero Dependencies] remove d3 dependency
17
+ */
18
+ // Selection
19
+ export { select, create, D3SelectionPolyfill } from './d3-selection-polyfill';
20
+ // Shapes
21
+ export { line, arc, pie } from './d3-shape-polyfill';
22
+ // Scales
23
+ export { scaleLinear, scaleTime, scaleBand } from './d3-scale-polyfill';
24
+ // Axes
25
+ export { axisBottom, axisLeft } from './d3-axis-polyfill';
26
+ // Array utilities
27
+ export { min, max, extent, map } from './d3-array-polyfill';
28
+ // Time formatting
29
+ export { timeFormat, timeParse } from './d3-time-format-polyfill';
30
+ // Time intervals
31
+ export { timeSecond, timeMinute, timeHour, timeDay, timeWeek, timeMonth, timeYear } from './d3-time-polyfill';
@@ -0,0 +1,72 @@
1
+ /* eslint-disable @typescript-eslint/typedef */
2
+ /**
3
+ * D3 Array Polyfill Tests
4
+ *
5
+ * Tests for the d3-array-polyfill module: min(), max(), extent(), and map().
6
+ *
7
+ * @see VD-5022 - [Zero Dependencies] remove d3 dependency
8
+ */
9
+ import { min, max, extent, map } from '../d3-array-polyfill';
10
+ // ─── Array Tests ────────────────────────────────────────────────────
11
+ describe('D3 Array Polyfill', () => {
12
+ it('should find min value', () => {
13
+ expect(min([3, 1, 4, 1, 5])).toBe(1);
14
+ });
15
+ it('should find max value', () => {
16
+ expect(max([3, 1, 4, 1, 5])).toBe(5);
17
+ });
18
+ it('should return undefined for empty arrays', () => {
19
+ expect(min([])).toBeUndefined();
20
+ expect(max([])).toBeUndefined();
21
+ });
22
+ it('should compute extent', () => {
23
+ expect(extent([3, 1, 4, 1, 5])).toEqual([1, 5]);
24
+ });
25
+ it('should compute extent of dates', () => {
26
+ const d1 = new Date(2020, 0, 1);
27
+ const d2 = new Date(2022, 0, 1);
28
+ const d3 = new Date(2021, 0, 1);
29
+ expect(extent([d1, d2, d3])).toEqual([d1, d2]);
30
+ });
31
+ it('should return [undefined, undefined] for empty extent', () => {
32
+ expect(extent([])).toEqual([undefined, undefined]);
33
+ });
34
+ it('should map array elements', () => {
35
+ const result = map([1, 2, 3], d => d * 2);
36
+ expect(result).toEqual([2, 4, 6]);
37
+ });
38
+ it('should map with transform function (chart data pattern)', () => {
39
+ const data = [
40
+ { x: '2021-01-01', y: 10 },
41
+ { x: '2022-01-01', y: 20 },
42
+ ];
43
+ const result = map(data, d => ({ x: new Date(d.x), y: d.y }));
44
+ expect(result.length).toBe(2);
45
+ expect(result[0].x instanceof Date).toBe(true);
46
+ });
47
+ });
48
+ // ─── Additional Array Coverage ──────────────────────────────────────
49
+ describe('D3 Array Polyfill - Additional Coverage', () => {
50
+ it('should find min with accessor function', () => {
51
+ // Covers min with accessor (lines 21-22)
52
+ const data = [{ value: 10 }, { value: 3 }, { value: 7 }];
53
+ expect(min(data, d => d.value)).toBe(3);
54
+ });
55
+ it('should find max with accessor function', () => {
56
+ // Covers max with accessor (lines 42-43)
57
+ const data = [{ value: 10 }, { value: 3 }, { value: 7 }];
58
+ expect(max(data, d => d.value)).toBe(10);
59
+ });
60
+ it('should handle NaN values in min with accessor', () => {
61
+ const data = [{ v: NaN }, { v: 5 }, { v: 2 }];
62
+ expect(min(data, d => d.v)).toBe(2);
63
+ });
64
+ it('should handle NaN values in max with accessor', () => {
65
+ const data = [{ v: NaN }, { v: 5 }, { v: 2 }];
66
+ expect(max(data, d => d.v)).toBe(5);
67
+ });
68
+ it('should return [undefined, undefined] for extent of values that are all NaN', () => {
69
+ // Covers extent empty/all-NaN path (line 63)
70
+ expect(extent([NaN, NaN])).toEqual([undefined, undefined]);
71
+ });
72
+ });
@@ -0,0 +1,171 @@
1
+ /* eslint-disable @typescript-eslint/typedef */
2
+ /**
3
+ * D3 Axis Polyfill Tests
4
+ *
5
+ * Tests for the d3-axis-polyfill module: axisBottom() and axisLeft() generators.
6
+ *
7
+ * @see VD-5022 - [Zero Dependencies] remove d3 dependency
8
+ */
9
+ import { axisBottom, axisLeft } from '../d3-axis-polyfill';
10
+ import { scaleLinear } from '../d3-scale-polyfill';
11
+ import { select } from '../d3-selection-polyfill';
12
+ // ─── Axis Tests ─────────────────────────────────────────────────────
13
+ describe('D3 Axis Polyfill', () => {
14
+ it('should render bottom axis into an SVG g element', () => {
15
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
16
+ const scale = scaleLinear().domain([0, 100]).range([0, 300]);
17
+ const selection = select(g);
18
+ axisBottom(scale)(selection);
19
+ expect(g.querySelector('.domain')).not.toBeNull();
20
+ expect(g.querySelectorAll('.tick').length).toBeGreaterThan(0);
21
+ });
22
+ it('should render left axis into an SVG g element', () => {
23
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
24
+ const scale = scaleLinear().domain([0, 100]).range([200, 0]);
25
+ const selection = select(g);
26
+ axisLeft(scale).ticks(4)(selection);
27
+ expect(g.querySelector('.domain')).not.toBeNull();
28
+ });
29
+ it('should support custom tick format', () => {
30
+ var _a;
31
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
32
+ const scale = scaleLinear().domain([0, 100]).range([0, 300]);
33
+ const selection = select(g);
34
+ axisBottom(scale).tickFormat(d => `$${d}`)(selection);
35
+ const firstTickText = g.querySelector('.tick text');
36
+ expect((_a = firstTickText === null || firstTickText === void 0 ? void 0 : firstTickText.textContent) === null || _a === void 0 ? void 0 : _a.startsWith('$')).toBe(true);
37
+ });
38
+ });
39
+ // ─── Additional Axis Coverage ───────────────────────────────────────
40
+ describe('D3 Axis Polyfill - Additional Coverage', () => {
41
+ it('should fall back to domain() when scale has no ticks method', () => {
42
+ // Covers getTickValues fallback to domain (lines 155-158)
43
+ const mockScale = Object.assign((value) => Number(value) * 10, {
44
+ domain: ((d) => {
45
+ if (d === undefined)
46
+ return [0, 50, 100];
47
+ return mockScale;
48
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
+ }),
50
+ range: ((r) => {
51
+ if (r === undefined)
52
+ return [0, 300];
53
+ return mockScale;
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ }),
56
+ });
57
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
58
+ axisBottom(mockScale)(select(g));
59
+ const ticks = g.querySelectorAll('.tick');
60
+ expect(ticks.length).toBe(3); // Uses domain values [0, 50, 100]
61
+ });
62
+ it('should return empty ticks when scale has no ticks and no domain', () => {
63
+ // Covers getTickValues return [] fallback (line 158)
64
+ const mockScale = Object.assign((value) => Number(value), {
65
+ domain: undefined,
66
+ range: ((r) => {
67
+ if (r === undefined)
68
+ return [0, 300];
69
+ return mockScale;
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ }),
72
+ });
73
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
74
+ axisBottom(mockScale)(select(g));
75
+ const ticks = g.querySelectorAll('.tick');
76
+ expect(ticks.length).toBe(0);
77
+ });
78
+ it('should fall back to String() when scale has no tickFormat', () => {
79
+ var _a, _b;
80
+ // Covers getFormatter fallback to String (line 173)
81
+ const mockScale = Object.assign((value) => Number(value) * 3, {
82
+ domain: ((d) => {
83
+ if (d === undefined)
84
+ return [10, 20];
85
+ return mockScale;
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ }),
88
+ range: ((r) => {
89
+ if (r === undefined)
90
+ return [0, 200];
91
+ return mockScale;
92
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
93
+ }),
94
+ });
95
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
96
+ axisBottom(mockScale)(select(g));
97
+ const tickTexts = g.querySelectorAll('.tick text');
98
+ expect((_a = tickTexts[0]) === null || _a === void 0 ? void 0 : _a.textContent).toBe('10');
99
+ expect((_b = tickTexts[1]) === null || _b === void 0 ? void 0 : _b.textContent).toBe('20');
100
+ });
101
+ it('should support chaining ticks() and tickFormat() on axisBottom', () => {
102
+ var _a, _b;
103
+ // Covers axisBottom ticks/tickFormat chaining (lines 193-194)
104
+ const scale = scaleLinear().domain([0, 100]).range([0, 300]);
105
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
106
+ const axis = axisBottom(scale)
107
+ .ticks(3)
108
+ .tickFormat(d => `${d}%`);
109
+ axis(select(g));
110
+ const tickTexts = g.querySelectorAll('.tick text');
111
+ expect(tickTexts.length).toBeGreaterThan(0);
112
+ for (let i = 0; i < tickTexts.length; i++) {
113
+ expect((_b = (_a = tickTexts[i]) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.endsWith('%')).toBe(true);
114
+ }
115
+ });
116
+ it('should support chaining ticks() and tickFormat() on axisLeft', () => {
117
+ var _a, _b;
118
+ // Covers axisLeft ticks/tickFormat chaining (lines 226-227)
119
+ const scale = scaleLinear().domain([0, 100]).range([200, 0]);
120
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
121
+ const axis = axisLeft(scale)
122
+ .ticks(3)
123
+ .tickFormat(d => `$${d}`);
124
+ axis(select(g));
125
+ const tickTexts = g.querySelectorAll('.tick text');
126
+ expect(tickTexts.length).toBeGreaterThan(0);
127
+ for (let i = 0; i < tickTexts.length; i++) {
128
+ expect((_b = (_a = tickTexts[i]) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.startsWith('$')).toBe(true);
129
+ }
130
+ });
131
+ });
132
+ // ─── Axis Branch Edge Cases ─────────────────────────────────────────
133
+ describe('D3 Axis Polyfill - Branch Edge Cases', () => {
134
+ describe('AxisGenerator edge cases', () => {
135
+ it('should handle null g element gracefully', () => {
136
+ // Covers if (!g) return branch in render (line 89)
137
+ const scale = scaleLinear().domain([0, 100]).range([0, 300]);
138
+ const axis = axisBottom(scale);
139
+ // Call axis with an empty selection (no node)
140
+ const emptySelection = select(document.createElement('div')).selectAll('.nonexistent');
141
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
142
+ axis(emptySelection);
143
+ // Should not throw
144
+ });
145
+ it('should skip ticks where scale returns undefined', () => {
146
+ // Covers if (position === undefined) continue branch (line 114)
147
+ const mockScale = Object.assign((value) => {
148
+ // Return undefined for some values
149
+ return value === 'B' ? undefined : Number(value === 'A' ? 0 : 100);
150
+ }, {
151
+ domain: ((d) => {
152
+ if (d === undefined)
153
+ return ['A', 'B', 'C'];
154
+ return mockScale;
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
+ }),
157
+ range: ((r) => {
158
+ if (r === undefined)
159
+ return [0, 300];
160
+ return mockScale;
161
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
162
+ }),
163
+ });
164
+ const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
165
+ axisBottom(mockScale)(select(g));
166
+ const ticks = g.querySelectorAll('.tick');
167
+ // Only 'A' and 'C' should have ticks; 'B' returns undefined
168
+ expect(ticks.length).toBe(2);
169
+ });
170
+ });
171
+ });