@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.
- package/dist/cjs/{app-globals-12b7d808.js → app-globals-1021e33e.js} +7 -7
- package/dist/cjs/aria-attributes-value-mapper-9a41b9cf.js +143 -0
- package/dist/cjs/{child-nodes-event-prevent-slimmer-84435957.js → child-nodes-event-prevent-slimmer-cc6d2919.js} +1 -1
- package/dist/cjs/{code-block-f1480ec3.js → code-block-f9b86a25.js} +1 -1
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-a9264cc8.js → component-value-history-controller-slimmer.abstract-6bcff70b.js} +3 -3
- package/dist/cjs/{date-required-rule-912469e0.js → date-required-rule-d3c2d088.js} +1 -1
- package/dist/cjs/{design-token-41baf118.js → design-token-b21879b6.js} +2 -2
- package/dist/cjs/{dto-renderer-manager-809c947b.js → dto-renderer-manager-e2823eb8.js} +2 -2
- package/dist/cjs/{element-appender-slimmer-34e4eb56.js → element-appender-slimmer-40d39bba.js} +179 -20
- package/dist/cjs/{form-field-controller-slimmer-102f37c7.js → form-field-controller-slimmer-1b3a1388.js} +1 -1
- package/dist/cjs/{image-annotation-action-8d9fa20c.js → image-annotation-action-b83283d4.js} +2 -2
- package/dist/cjs/index.cjs.js +13 -13
- package/dist/cjs/{inject-keyboard-manager-0f5bd568.js → inject-keyboard-manager-ea5c598e.js} +1 -1
- package/dist/cjs/{internal-translation-controller-053eb0f1.js → internal-translation-controller-1f84ab0a.js} +15 -0
- package/dist/cjs/{keyboard-manager-055e9f67.js → keyboard-manager-16494c34.js} +1 -1
- package/dist/cjs/{keyboard-manager-slimmer-0cc0c1c7.js → keyboard-manager-slimmer-5b8fa209.js} +1 -1
- package/dist/cjs/legend-input-processor-1e53e5bc.js +2126 -0
- package/dist/cjs/loader.cjs.js +9 -9
- package/dist/cjs/{month-view-generator-6a6dd527.js → month-view-generator-1a57578d.js} +1 -1
- package/dist/cjs/{public-rules-922849f3.js → public-rules-5bd1624d.js} +7 -7
- package/dist/cjs/{range-8aa49b08.js → range-7a038973.js} +1 -1
- package/dist/cjs/{responsive-format-facade-ea59bdcd.js → responsive-format-facade-0b65ce4a.js} +2 -2
- package/dist/cjs/{rich-text-editor-required-rule-22225840.js → rich-text-editor-required-rule-d984c0b6.js} +1 -1
- package/dist/cjs/{string-format-strategy.abstract-f2575647.js → string-format-strategy.abstract-714bfad2.js} +1 -1
- package/dist/cjs/{string-input-formatter-slimmer-0a334fc6.js → string-input-formatter-slimmer-9ef2ec7a.js} +1 -1
- package/dist/cjs/{string-mask-strategy-dda58395.js → string-mask-strategy-bd2c18df.js} +2 -2
- package/dist/cjs/{style-formatter-0c3ced39.js → style-formatter-7a4e9811.js} +2 -2
- package/dist/cjs/{time-required-rule-d6fa7aa8.js → time-required-rule-50784b9f.js} +1 -1
- package/dist/cjs/{token-extension-07cac85d.js → token-extension-5a1c473e.js} +102 -81
- package/dist/cjs/{translation-slimmer-4533bd67.js → translation-slimmer-2c207e34.js} +1 -1
- package/dist/cjs/{type-guard-407ba0b8.js → type-guard-cd0376d4.js} +36 -1
- package/dist/cjs/{valid-credit-card-number-rule-41a8b51b.js → valid-credit-card-number-rule-3f8dc897.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +7 -7
- package/dist/cjs/vega-app-header-button.cjs.entry.js +39 -146
- package/dist/cjs/vega-banner.cjs.entry.js +1 -1
- package/dist/cjs/vega-bar-chart.cjs.entry.js +2 -2
- package/dist/cjs/vega-box.cjs.entry.js +6 -6
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -2
- package/dist/cjs/vega-button-circle.cjs.entry.js +23 -8
- package/dist/cjs/vega-button-group_2.cjs.entry.js +2 -2
- package/dist/cjs/vega-button-link.cjs.entry.js +18 -2
- package/dist/cjs/vega-button.cjs.entry.js +5 -5
- package/dist/cjs/vega-calendar_4.cjs.entry.js +7 -7
- package/dist/cjs/vega-card.cjs.entry.js +5 -5
- package/dist/cjs/vega-carousel.cjs.entry.js +4 -4
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-chip.cjs.entry.js +6 -6
- package/dist/cjs/vega-code-block.cjs.entry.js +10 -10
- package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
- package/dist/cjs/vega-combo-box.cjs.entry.js +7 -7
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +128 -25
- package/dist/cjs/vega-dialog_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-divider.cjs.entry.js +5 -5
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +33 -9
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-file-uploader.cjs.entry.js +3 -3
- package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
- package/dist/cjs/vega-flex.cjs.entry.js +6 -6
- package/dist/cjs/vega-font.cjs.entry.js +5 -5
- package/dist/cjs/vega-form.cjs.entry.js +5 -5
- package/dist/cjs/vega-grid.cjs.entry.js +5 -5
- package/dist/cjs/vega-icon.cjs.entry.js +5 -5
- package/dist/cjs/vega-image-uploader.cjs.entry.js +7 -7
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +8 -8
- package/dist/cjs/vega-input-numeric.cjs.entry.js +7 -7
- package/dist/cjs/vega-input-passcode.cjs.entry.js +39 -9
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +4757 -5589
- package/dist/cjs/vega-input-range.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-select.cjs.entry.js +7 -7
- package/dist/cjs/vega-input.cjs.entry.js +220 -125
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +7 -8
- package/dist/cjs/vega-line-chart.cjs.entry.js +325 -23
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +2 -2
- package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
- package/dist/cjs/vega-pagination.cjs.entry.js +6 -6
- package/dist/cjs/vega-pie-chart.cjs.entry.js +5 -88
- package/dist/cjs/vega-popover_2.cjs.entry.js +9 -9
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-radio_2.cjs.entry.js +7 -7
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +26 -6
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +129 -31
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +4 -4
- package/dist/cjs/vega-signature-capture.cjs.entry.js +7 -7
- package/dist/cjs/vega-stepper.cjs.entry.js +4 -4
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +2 -2
- package/dist/cjs/vega-table_11.cjs.entry.js +6 -6
- package/dist/cjs/vega-textarea.cjs.entry.js +4 -4
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +11 -11
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +8 -8
- package/dist/cjs/vega.cjs.js +9 -9
- package/dist/cjs/y-axis-input-processor-54a26515.js +832 -0
- package/dist/collection/components/vega-accordion/slimmers/vega-accordion-renderer.js +1 -1
- package/dist/collection/components/vega-accordion/vega-accordion.css +5 -0
- package/dist/collection/components/vega-app-header-button/vega-app-header-button.js +44 -2
- package/dist/collection/components/vega-button-circle/vega-button-circle.js +17 -3
- package/dist/collection/components/vega-button-link/vega-button-link.js +16 -1
- package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-preview-popover-renderer.js +1 -1
- package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +64 -0
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.js +3 -0
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.js +3 -3
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +19 -1
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +3 -2
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +18 -3
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +196 -207
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +32 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +25 -0
- package/dist/collection/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.js +1 -3
- package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-container-renderer.js +1 -5
- package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-renderer.js +1 -4
- package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.js +5 -2
- package/dist/collection/components/vega-input/vega-input.js +24 -1
- package/dist/collection/components/vega-input-passcode/slimmers/controllers/vega-input-passcode-keyboard-controller.js +2 -0
- package/dist/collection/components/vega-input-passcode/slimmers/renderers/vega-input-passcode-renderer.js +30 -2
- package/dist/collection/components/vega-input-phone-number/slimmers/controllers/country-select-controller.js +1 -1
- package/dist/collection/components/vega-input-phone-number/slimmers/controllers/vega-input-phone-number-value-controller.js +1 -1
- package/dist/collection/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.js +1 -1
- package/dist/collection/components/vega-input-phone-number/slimmers/renderers/phone-number-input-renderer.js +1 -1
- package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +4 -4
- package/dist/collection/components/vega-nav/vega-left-nav-link/slimmers/renderers/vega-left-nav-link-renderer.js +2 -3
- package/dist/collection/components/vega-popover/vega-popover-content-box/vega-popover-content-box.css +5 -0
- package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/image-node-renderer.js +7 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/base-extension-renderer.js +11 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +15 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +0 -11
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.js +23 -23
- package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-extension.js +0 -10
- package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.js +7 -17
- package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +12 -16
- package/dist/collection/components/vega-rich-text-editor/helpers/extension-context-manager.js +31 -0
- package/dist/collection/components/vega-rich-text-editor/helpers/extension-context-manager.test.js +19 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-image-controller.js +7 -4
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +113 -12
- package/dist/collection/components/vega-rich-text-editor/test/extensions/extension-test-utils.js +41 -0
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-image-editor/slimmers/renderers/vega-rich-text-image-editor-renderer.js +1 -1
- package/dist/collection/components/vega-tooltip/vega-tooltip-content-box/vega-tooltip-content-box.css +5 -0
- package/dist/collection/helpers/calendar/test/utils.test.js +54 -1
- package/dist/collection/helpers/calendar/utils.js +35 -0
- package/dist/collection/helpers/chart/input-processors/format-time-positions-input-processor.js +2 -2
- package/dist/collection/helpers/chart/input-processors/pie-chart-arc-path-input-processor.js +1 -1
- package/dist/collection/helpers/chart/input-processors/x-axis-input-processor.js +5 -3
- package/dist/collection/helpers/chart/input-processors/x-axis-label-formatter-input-processor.js +2 -1
- package/dist/collection/helpers/chart/input-processors/y-axis-input-processor.js +7 -5
- package/dist/collection/helpers/chart/interacting-entry-generator/arc-path-hover-generator.js +1 -1
- package/dist/collection/helpers/chart/interacting-entry-generator/pie-legend-hover-generator.js +1 -1
- package/dist/collection/helpers/chart/renderers/canvas-renderer.js +1 -1
- package/dist/collection/helpers/chart/renderers/svg-renderer.js +1 -1
- package/dist/collection/helpers/chart/test/drawers/arc-path-drawer.test.js +1 -1
- package/dist/collection/helpers/chart/test/input-processors/format-time-positions-input-processor.test.js +1 -1
- package/dist/collection/helpers/chart/test/input-processors/sort-positions-input-processor.test.js +1 -1
- package/dist/collection/helpers/chart/test/input-processors/x-axis-input-processor.test.js +39 -0
- package/dist/collection/helpers/chart/test/input-processors/x-axis-label-formatter-input-processor.test.js +61 -14
- package/dist/collection/helpers/chart/test/input-processors/y-axis-input-processor.coverage.test.js +39 -0
- package/dist/collection/helpers/chart/test/input-processors/y-axis-input-processor.test.js +14 -0
- package/dist/collection/helpers/chart/test/renderers/svg-renderer.test.js +1 -1
- package/dist/collection/helpers/common/test/wait-for-component-did-render.test.js +67 -0
- package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +27 -0
- package/dist/collection/helpers/slimmers/element-appender/test/element-appender-slimmer.test.js +50 -0
- package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +14 -3
- package/dist/collection/helpers/slimmers/mutation-observer/data-tab-index-value-mapper.js +80 -0
- package/dist/collection/helpers/slimmers/mutation-observer/test/aria-attributes-value-mapper.test.js +55 -3
- package/dist/collection/helpers/slimmers/mutation-observer/test/data-tab-index-value-mapper.test.js +120 -0
- package/dist/collection/helpers/slimmers/position-calculation/base-position-calculation-strategy.js +123 -9
- package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +14 -4
- package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +13 -4
- package/dist/collection/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.js +7 -6
- package/dist/collection/helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.js +162 -7
- package/dist/collection/helpers/translation/locales/en.js +15 -0
- package/dist/collection/helpers/translation/tests/internal-translation-controller.test.js +15 -0
- package/dist/collection/helpers/ui/test/element-appender.test.js +7 -5
- package/dist/collection/helpers/validator/rules/valid-phone-number-rule.js +1 -1
- package/dist/collection/helpers/validator/test/rules/valid-phone-number-rule.test.js +10 -0
- package/dist/collection/polyfill/d3/d3-array-polyfill.js +89 -0
- package/dist/collection/polyfill/d3/d3-axis-polyfill.js +195 -0
- package/dist/collection/polyfill/d3/d3-scale-polyfill.js +582 -0
- package/dist/collection/polyfill/d3/d3-selection-polyfill.js +274 -0
- package/dist/collection/polyfill/d3/d3-shape-polyfill.js +252 -0
- package/dist/collection/polyfill/d3/d3-time-format-polyfill.js +207 -0
- package/dist/collection/polyfill/d3/d3-time-polyfill.js +99 -0
- package/dist/collection/polyfill/d3/index.js +31 -0
- package/dist/collection/polyfill/d3/test/d3-array-polyfill.test.js +72 -0
- package/dist/collection/polyfill/d3/test/d3-axis-polyfill.test.js +171 -0
- package/dist/collection/polyfill/d3/test/d3-integration.test.js +137 -0
- package/dist/collection/polyfill/d3/test/d3-scale-polyfill.test.js +382 -0
- package/dist/collection/polyfill/d3/test/d3-selection-polyfill.test.js +239 -0
- package/dist/collection/polyfill/d3/test/d3-shape-polyfill.test.js +225 -0
- package/dist/collection/polyfill/d3/test/d3-time-format-polyfill.test.js +162 -0
- package/dist/collection/polyfill/d3/test/d3-time-polyfill.test.js +76 -0
- package/dist/collection/polyfill/d3/test/index.test.js +78 -0
- package/dist/collection/polyfill/libphonenumber/as-you-type.js +405 -0
- package/dist/collection/polyfill/libphonenumber/format-helpers.js +186 -0
- package/dist/collection/polyfill/libphonenumber/index.js +22 -0
- package/dist/collection/polyfill/libphonenumber/metadata.js +150 -0
- package/dist/collection/polyfill/libphonenumber/metadata.json.js +3900 -0
- package/dist/collection/polyfill/libphonenumber/parse-phone-number.js +127 -0
- package/dist/collection/polyfill/libphonenumber/phone-number.js +38 -0
- package/dist/collection/polyfill/libphonenumber/test/as-you-type.test.js +309 -0
- package/dist/collection/polyfill/libphonenumber/test/format-helpers.test.js +192 -0
- package/dist/collection/polyfill/libphonenumber/test/index.test.js +16 -0
- package/dist/collection/polyfill/libphonenumber/test/metadata.test.js +196 -0
- package/dist/collection/polyfill/libphonenumber/test/parse-phone-number.test.js +218 -0
- package/dist/collection/polyfill/libphonenumber/test/phone-number.test.js +56 -0
- package/dist/collection/polyfill/libphonenumber/types.js +23 -0
- package/dist/collection/utils/e2e-utils.js +6 -0
- package/dist/esm/{app-globals-c0676920.js → app-globals-0b3b7111.js} +7 -7
- package/dist/esm/aria-attributes-value-mapper-2c632641.js +141 -0
- package/dist/esm/{child-nodes-event-prevent-slimmer-649b9d30.js → child-nodes-event-prevent-slimmer-331312b8.js} +1 -1
- package/dist/esm/{code-block-b6247a45.js → code-block-2408a812.js} +1 -1
- package/dist/esm/{component-value-history-controller-slimmer.abstract-2bb8533d.js → component-value-history-controller-slimmer.abstract-ac40820f.js} +3 -3
- package/dist/esm/{date-required-rule-e771e7d9.js → date-required-rule-09d5aa16.js} +1 -1
- package/dist/esm/{design-token-4aee1c56.js → design-token-7dec1eab.js} +2 -2
- package/dist/esm/{dto-renderer-manager-6fd22ab7.js → dto-renderer-manager-d413de1e.js} +2 -2
- package/dist/esm/{element-appender-slimmer-e4713a72.js → element-appender-slimmer-5d573612.js} +179 -20
- package/dist/esm/{form-field-controller-slimmer-5817d14d.js → form-field-controller-slimmer-e1a5a884.js} +1 -1
- package/dist/esm/{image-annotation-action-6701b4c9.js → image-annotation-action-54936eaa.js} +2 -2
- package/dist/esm/index.js +13 -13
- package/dist/esm/{inject-keyboard-manager-78730062.js → inject-keyboard-manager-9339bba8.js} +1 -1
- package/dist/esm/{internal-translation-controller-911515f9.js → internal-translation-controller-113a6288.js} +15 -0
- package/dist/esm/{keyboard-manager-38934f94.js → keyboard-manager-f9bfa678.js} +1 -1
- package/dist/esm/{keyboard-manager-slimmer-9984d922.js → keyboard-manager-slimmer-c8898843.js} +1 -1
- package/dist/esm/legend-input-processor-122008c5.js +2116 -0
- package/dist/esm/loader.js +9 -9
- package/dist/esm/{month-view-generator-eaf9029c.js → month-view-generator-160a9feb.js} +1 -1
- package/dist/esm/{public-rules-25cc3a39.js → public-rules-41561e6e.js} +7 -7
- package/dist/esm/{range-663f44dc.js → range-a5d78e69.js} +1 -1
- package/dist/esm/{responsive-format-facade-7a071174.js → responsive-format-facade-2a36c54a.js} +2 -2
- package/dist/esm/{rich-text-editor-required-rule-a238b862.js → rich-text-editor-required-rule-b09039da.js} +1 -1
- package/dist/esm/{string-format-strategy.abstract-713fba36.js → string-format-strategy.abstract-944f759b.js} +1 -1
- package/dist/esm/{string-input-formatter-slimmer-5b413ff9.js → string-input-formatter-slimmer-2508d88b.js} +1 -1
- package/dist/esm/{string-mask-strategy-6beaf664.js → string-mask-strategy-f9e252a2.js} +2 -2
- package/dist/esm/{style-formatter-3d06b72d.js → style-formatter-6db1e890.js} +2 -2
- package/dist/esm/{time-required-rule-e4138a76.js → time-required-rule-c7cfb257.js} +1 -1
- package/dist/esm/{token-extension-e33fd151.js → token-extension-25df8dbb.js} +102 -81
- package/dist/esm/{translation-slimmer-2394b173.js → translation-slimmer-9f0339aa.js} +1 -1
- package/dist/esm/{type-guard-f50e34d6.js → type-guard-af324dcd.js} +36 -2
- package/dist/esm/{valid-credit-card-number-rule-22ce81db.js → valid-credit-card-number-rule-099dba7d.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +7 -7
- package/dist/esm/vega-app-header-button.entry.js +38 -145
- package/dist/esm/vega-banner.entry.js +1 -1
- package/dist/esm/vega-bar-chart.entry.js +2 -2
- package/dist/esm/vega-box.entry.js +6 -6
- package/dist/esm/vega-breadcrumb.entry.js +2 -2
- package/dist/esm/vega-button-circle.entry.js +23 -8
- package/dist/esm/vega-button-group_2.entry.js +2 -2
- package/dist/esm/vega-button-link.entry.js +18 -2
- package/dist/esm/vega-button.entry.js +5 -5
- package/dist/esm/vega-calendar_4.entry.js +7 -7
- package/dist/esm/vega-card.entry.js +5 -5
- package/dist/esm/vega-carousel.entry.js +4 -4
- package/dist/esm/vega-checkbox_2.entry.js +4 -4
- package/dist/esm/vega-chip.entry.js +6 -6
- package/dist/esm/vega-code-block.entry.js +10 -10
- package/dist/esm/vega-color-picker.entry.js +2 -2
- package/dist/esm/vega-combo-box.entry.js +7 -7
- package/dist/esm/vega-date-picker_2.entry.js +129 -26
- package/dist/esm/vega-dialog_2.entry.js +6 -6
- package/dist/esm/vega-divider.entry.js +5 -5
- package/dist/esm/vega-dropdown_5.entry.js +34 -10
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-file-uploader.entry.js +3 -3
- package/dist/esm/vega-flag-icon.entry.js +5 -5
- package/dist/esm/vega-flex.entry.js +6 -6
- package/dist/esm/vega-font.entry.js +5 -5
- package/dist/esm/vega-form.entry.js +5 -5
- package/dist/esm/vega-grid.entry.js +5 -5
- package/dist/esm/vega-icon.entry.js +5 -5
- package/dist/esm/vega-image-uploader.entry.js +7 -7
- package/dist/esm/vega-input-credit-card.entry.js +8 -8
- package/dist/esm/vega-input-numeric.entry.js +7 -7
- package/dist/esm/vega-input-passcode.entry.js +39 -9
- package/dist/esm/vega-input-phone-number.entry.js +4757 -5589
- package/dist/esm/vega-input-range.entry.js +5 -5
- package/dist/esm/vega-input-select.entry.js +7 -7
- package/dist/esm/vega-input.entry.js +220 -125
- package/dist/esm/vega-left-nav_5.entry.js +7 -8
- package/dist/esm/vega-line-chart.entry.js +311 -9
- package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +2 -2
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
- package/dist/esm/vega-pagination.entry.js +6 -6
- package/dist/esm/vega-pie-chart.entry.js +5 -88
- package/dist/esm/vega-popover_2.entry.js +9 -9
- package/dist/esm/vega-progress-tracker_2.entry.js +4 -4
- package/dist/esm/vega-radio_2.entry.js +7 -7
- package/dist/esm/vega-rich-text-content.entry.js +26 -6
- package/dist/esm/vega-rich-text-editor_4.entry.js +130 -32
- package/dist/esm/vega-selection-chip_2.entry.js +6 -6
- package/dist/esm/vega-selection-tile_2.entry.js +4 -4
- package/dist/esm/vega-sidenav_3.entry.js +4 -4
- package/dist/esm/vega-signature-capture.entry.js +7 -7
- package/dist/esm/vega-stepper.entry.js +4 -4
- package/dist/esm/vega-tab-group_2.entry.js +2 -2
- package/dist/esm/vega-table_11.entry.js +6 -6
- package/dist/esm/vega-textarea.entry.js +4 -4
- package/dist/esm/vega-time-picker_2.entry.js +11 -11
- package/dist/esm/vega-toggle-switch.entry.js +2 -2
- package/dist/esm/vega-tooltip_2.entry.js +8 -8
- package/dist/esm/vega.js +9 -9
- package/dist/esm/y-axis-input-processor-c7e05353.js +826 -0
- package/dist/sri/vega-sri-manifest.json +317 -313
- package/dist/types/components/vega-app-header-button/types.d.ts +18 -0
- package/dist/types/components/vega-app-header-button/vega-app-header-button.d.ts +8 -1
- package/dist/types/components/vega-button-circle/vega-button-circle.d.ts +2 -0
- package/dist/types/components/vega-button-link/vega-button-link.d.ts +2 -0
- package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.d.ts +21 -0
- package/dist/types/components/vega-date-picker/types.d.ts +14 -0
- package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.d.ts +1 -0
- package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +7 -0
- package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +3 -0
- package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +9 -1
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +11 -0
- package/dist/types/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.d.ts +0 -1
- package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-renderer.d.ts +0 -1
- package/dist/types/components/vega-input/vega-input.d.ts +4 -0
- package/dist/types/components/vega-input-passcode/slimmers/renderers/vega-input-passcode-renderer.d.ts +14 -0
- package/dist/types/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/extensions/base-extension-renderer.d.ts +9 -1
- package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +9 -1
- package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +0 -7
- package/dist/types/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.d.ts +5 -10
- package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +1 -5
- package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.d.ts +3 -8
- package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.d.ts +5 -9
- package/dist/types/components/vega-rich-text-editor/helpers/extension-context-manager.d.ts +26 -0
- package/dist/types/components/vega-rich-text-editor/helpers/extension-context-manager.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/interface.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/insert-image-controller.d.ts +7 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +30 -2
- package/dist/types/components/vega-rich-text-editor/test/extensions/extension-test-utils.d.ts +21 -0
- package/dist/types/components.d.ts +22 -2
- package/dist/types/helpers/calendar/utils.d.ts +17 -0
- package/dist/types/helpers/chart/test/input-processors/y-axis-input-processor.coverage.test.d.ts +1 -0
- package/dist/types/helpers/common/test/wait-for-component-did-render.test.d.ts +1 -0
- package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +12 -0
- package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +2 -1
- package/dist/types/helpers/slimmers/mutation-observer/data-tab-index-value-mapper.d.ts +35 -0
- package/dist/types/helpers/slimmers/mutation-observer/test/data-tab-index-value-mapper.test.d.ts +1 -0
- package/dist/types/helpers/slimmers/position-calculation/base-position-calculation-strategy.d.ts +60 -3
- package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +3 -2
- package/dist/types/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.d.ts +1 -1
- package/dist/types/helpers/translation/interface.d.ts +15 -0
- package/dist/types/polyfill/d3/d3-array-polyfill.d.ts +48 -0
- package/dist/types/polyfill/d3/d3-axis-polyfill.d.ts +53 -0
- package/dist/types/polyfill/d3/d3-scale-polyfill.d.ts +42 -0
- package/dist/types/polyfill/d3/d3-selection-polyfill.d.ts +173 -0
- package/dist/types/polyfill/d3/d3-shape-polyfill.d.ts +129 -0
- package/dist/types/polyfill/d3/d3-time-format-polyfill.d.ts +28 -0
- package/dist/types/polyfill/d3/d3-time-polyfill.d.ts +68 -0
- package/dist/types/polyfill/d3/index.d.ts +27 -0
- package/dist/types/polyfill/d3/test/d3-array-polyfill.test.d.ts +1 -0
- package/dist/types/polyfill/d3/test/d3-axis-polyfill.test.d.ts +1 -0
- package/dist/types/polyfill/d3/test/d3-integration.test.d.ts +1 -0
- package/dist/types/polyfill/d3/test/d3-scale-polyfill.test.d.ts +1 -0
- package/dist/types/polyfill/d3/test/d3-selection-polyfill.test.d.ts +1 -0
- package/dist/types/polyfill/d3/test/d3-shape-polyfill.test.d.ts +1 -0
- package/dist/types/polyfill/d3/test/d3-time-format-polyfill.test.d.ts +1 -0
- package/dist/types/polyfill/d3/test/d3-time-polyfill.test.d.ts +1 -0
- package/dist/types/polyfill/d3/test/index.test.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/as-you-type.d.ts +154 -0
- package/dist/types/polyfill/libphonenumber/format-helpers.d.ts +64 -0
- package/dist/types/polyfill/libphonenumber/index.d.ts +22 -0
- package/dist/types/polyfill/libphonenumber/metadata.d.ts +45 -0
- package/dist/types/polyfill/libphonenumber/metadata.json.d.ts +470 -0
- package/dist/types/polyfill/libphonenumber/parse-phone-number.d.ts +26 -0
- package/dist/types/polyfill/libphonenumber/phone-number.d.ts +24 -0
- package/dist/types/polyfill/libphonenumber/test/as-you-type.test.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/test/format-helpers.test.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/test/index.test.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/test/metadata.test.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/test/parse-phone-number.test.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/test/phone-number.test.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/types.d.ts +77 -0
- package/dist/types/types/components.type.d.ts +2 -0
- package/dist/types/types/flag.type.d.ts +255 -4
- package/dist/types/types/ui.type.d.ts +3 -2
- package/dist/types/types/vega-chart.d.ts +10 -11
- package/dist/types/utils/e2e-utils.d.ts +2 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-d8fadcdc.entry.js → p-0037068c.entry.js} +1 -1
- package/dist/vega/{p-4bffdb28.js → p-051bbce6.js} +1 -1
- package/dist/vega/{p-02a7d60c.entry.js → p-0a3a285b.entry.js} +1 -1
- package/dist/vega/{p-1a3236e7.entry.js → p-0ac9a732.entry.js} +1 -1
- package/dist/vega/{p-2b49686d.entry.js → p-1033e4c4.entry.js} +1 -1
- package/dist/vega/{p-0e679d8c.js → p-10e51081.js} +1 -1
- package/dist/vega/p-15335b69.entry.js +1 -0
- package/dist/vega/{p-b366deff.entry.js → p-19270396.entry.js} +1 -1
- package/dist/vega/{p-10734a00.js → p-1a51bf6f.js} +1 -1
- package/dist/vega/{p-2d69632d.js → p-1a9b361b.js} +1 -1
- package/dist/vega/p-1ccba615.entry.js +1 -0
- package/dist/vega/{p-6dcdb580.entry.js → p-1deedff2.entry.js} +1 -1
- package/dist/vega/{p-6d60b66a.entry.js → p-22f3d35c.entry.js} +1 -1
- package/dist/vega/{p-3d8122ab.entry.js → p-23427f6a.entry.js} +1 -1
- package/dist/vega/p-2466316a.js +1 -0
- package/dist/vega/p-27b0af38.entry.js +1 -0
- package/dist/vega/{p-bb5e0192.entry.js → p-2c2193f2.entry.js} +1 -1
- package/dist/vega/{p-dd3a94f4.entry.js → p-3237be8b.entry.js} +1 -1
- package/dist/vega/{p-94a77fbe.entry.js → p-36a09524.entry.js} +1 -1
- package/dist/vega/{p-7181861a.js → p-38e850c3.js} +1 -1
- package/dist/vega/{p-e2af0e24.entry.js → p-3b9fc697.entry.js} +1 -1
- package/dist/vega/{p-3244c605.entry.js → p-41d14339.entry.js} +1 -1
- package/dist/vega/{p-a0b66c25.js → p-4c060ba9.js} +1 -1
- package/dist/vega/p-4d4bf82a.entry.js +1 -0
- package/dist/vega/{p-415ffa35.js → p-4d7d5583.js} +1 -1
- package/dist/vega/{p-2a10e2e5.js → p-4f146dae.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-b256b7a4.js → p-600f7d6c.js} +1 -1
- package/dist/vega/{p-4ea30592.js → p-6188e783.js} +1 -1
- package/dist/vega/p-638d30a5.entry.js +1 -0
- package/dist/vega/{p-a7a8a4eb.entry.js → p-67b0ccdc.entry.js} +1 -1
- package/dist/vega/p-68846f0d.js +1 -0
- package/dist/vega/{p-d7a78c5e.entry.js → p-70444f6f.entry.js} +1 -1
- package/dist/vega/{p-e632475e.js → p-7127f966.js} +1 -1
- package/dist/vega/{p-49845a91.js → p-718c74ba.js} +1 -1
- package/dist/vega/p-77167587.entry.js +1 -0
- package/dist/vega/p-78ecfea0.entry.js +1 -0
- package/dist/vega/{p-b201f379.js → p-7cde8489.js} +1 -1
- package/dist/vega/p-8e34b266.js +1 -0
- package/dist/vega/p-9466619f.entry.js +1 -0
- package/dist/vega/p-9863e7a1.entry.js +1 -0
- package/dist/vega/p-999950d1.js +1 -0
- package/dist/vega/{p-9339c6c4.js → p-9a3a5b9e.js} +1 -1
- package/dist/vega/{p-b136ebba.entry.js → p-9adfcd47.entry.js} +1 -1
- package/dist/vega/{p-d555f677.entry.js → p-9e36f7ff.entry.js} +1 -1
- package/dist/vega/{p-8dbdd609.entry.js → p-9f9d9a53.entry.js} +1 -1
- package/dist/vega/{p-7958614a.entry.js → p-9feaac4b.entry.js} +1 -1
- package/dist/vega/{p-ca5898dc.entry.js → p-a0e69236.entry.js} +1 -1
- package/dist/vega/{p-95528b47.js → p-a17312a6.js} +1 -1
- package/dist/vega/p-a46e977b.entry.js +1 -0
- package/dist/vega/p-a79fdf2f.js +1 -0
- package/dist/vega/p-a800bf6d.js +1 -0
- package/dist/vega/{p-c29068fb.entry.js → p-aaf9b39f.entry.js} +1 -1
- package/dist/vega/{p-2e91295d.entry.js → p-acbb96b3.entry.js} +1 -1
- package/dist/vega/p-af2110fc.entry.js +1 -0
- package/dist/vega/{p-f14a5eae.entry.js → p-b35bb4a2.entry.js} +1 -1
- package/dist/vega/p-b8c10187.js +1 -0
- package/dist/vega/p-bdb5180c.js +1 -0
- package/dist/vega/{p-01d58eb8.entry.js → p-c086529c.entry.js} +1 -1
- package/dist/vega/{p-154f9cf7.entry.js → p-c61bcd92.entry.js} +1 -1
- package/dist/vega/{p-bebfbe95.entry.js → p-c7a9960f.entry.js} +1 -1
- package/dist/vega/{p-81b044b9.js → p-c7b9b7c2.js} +1 -1
- package/dist/vega/{p-f2b0b58a.js → p-c857e6e2.js} +1 -1
- package/dist/vega/{p-89f2e16d.entry.js → p-c871619c.entry.js} +1 -1
- package/dist/vega/{p-1f3cd061.entry.js → p-cbeb47be.entry.js} +1 -1
- package/dist/vega/{p-a786259a.js → p-cf6bfac7.js} +1 -1
- package/dist/vega/{p-57927b10.entry.js → p-d07f5d5a.entry.js} +1 -1
- package/dist/vega/{p-033c31d8.entry.js → p-d0975995.entry.js} +1 -1
- package/dist/vega/{p-d6dbbe61.entry.js → p-d2ee5711.entry.js} +1 -1
- package/dist/vega/{p-8950987b.entry.js → p-d2fc470e.entry.js} +1 -1
- package/dist/vega/{p-a560d8c5.entry.js → p-d70e1b75.entry.js} +1 -1
- package/dist/vega/p-d8180e42.entry.js +1 -0
- package/dist/vega/{p-3afc025e.entry.js → p-da0fd3dc.entry.js} +1 -1
- package/dist/vega/{p-087ea379.entry.js → p-da552ddf.entry.js} +1 -1
- package/dist/vega/{p-eda988d5.entry.js → p-ddce3e0e.entry.js} +1 -1
- package/dist/vega/{p-aa1174dc.js → p-dfb12762.js} +1 -1
- package/dist/vega/{p-8b153acd.entry.js → p-e0fb1f60.entry.js} +1 -1
- package/dist/vega/{p-249df6d2.entry.js → p-e1c017d1.entry.js} +1 -1
- package/dist/vega/p-e4917e76.js +1 -0
- package/dist/vega/{p-fd7ddd64.entry.js → p-e4c99b72.entry.js} +1 -1
- package/dist/vega/{p-9a137bab.entry.js → p-e841c1fe.entry.js} +1 -1
- package/dist/vega/{p-f05b8f76.entry.js → p-ea96b0f9.entry.js} +1 -1
- package/dist/vega/{p-76181a70.entry.js → p-eab9d999.entry.js} +1 -1
- package/dist/vega/{p-2cc9d126.entry.js → p-ed9ad4fd.entry.js} +1 -1
- package/dist/vega/{p-2ba78982.entry.js → p-ef603656.entry.js} +1 -1
- package/dist/vega/p-f5fcd13e.entry.js +1 -0
- package/dist/vega/{p-6d219c44.entry.js → p-f65cb0b6.entry.js} +1 -1
- package/dist/vega/p-faa9a3bd.js +1 -0
- package/dist/vega/{p-a8792e3d.js → p-fc049028.js} +1 -1
- package/dist/vega/p-ff287001.entry.js +1 -0
- package/dist/vega/{p-32183637.entry.js → p-ffb3e479.entry.js} +1 -1
- package/dist/vega/p-ffd080db.js +1 -0
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +2 -6
- package/dist/cjs/legend-input-processor-27c65353.js +0 -4759
- package/dist/cjs/y-axis-input-processor-9fbfd5e7.js +0 -2302
- package/dist/esm/legend-input-processor-5ecae3a7.js +0 -4742
- package/dist/esm/y-axis-input-processor-bc54314a.js +0 -2290
- package/dist/vega/p-179aad4f.entry.js +0 -1
- package/dist/vega/p-1f5e35dc.entry.js +0 -1
- package/dist/vega/p-28ad1864.entry.js +0 -1
- package/dist/vega/p-32033e7a.js +0 -1
- package/dist/vega/p-32faa460.entry.js +0 -1
- package/dist/vega/p-464559e3.js +0 -1
- package/dist/vega/p-46b077d9.js +0 -1
- package/dist/vega/p-4e017458.entry.js +0 -1
- package/dist/vega/p-4e4a0228.entry.js +0 -1
- package/dist/vega/p-5831d6d3.entry.js +0 -1
- package/dist/vega/p-644f701a.js +0 -1
- package/dist/vega/p-6a62e476.entry.js +0 -1
- package/dist/vega/p-6b6f0fb4.js +0 -1
- package/dist/vega/p-a13a73fa.entry.js +0 -1
- package/dist/vega/p-b597393b.entry.js +0 -1
- package/dist/vega/p-be23bef2.js +0 -1
- package/dist/vega/p-c1d13eec.entry.js +0 -1
- package/dist/vega/p-c3d2f316.js +0 -1
- package/dist/vega/p-dad3ba5f.js +0 -1
- package/dist/vega/p-e1431c14.entry.js +0 -1
- package/dist/vega/p-e89e3ede.entry.js +0 -1
- package/dist/vega/p-f3d0f2dc.js +0 -1
- package/dist/vega/p-f5bafc45.entry.js +0 -1
- package/dist/vega/p-fc1fa345.js +0 -1
- /package/dist/cjs/{feature-flag-controller-04cb1e69.js → feature-flag-controller-9129ef52.js} +0 -0
- /package/dist/esm/{feature-flag-controller-09ea7e87.js → feature-flag-controller-30f7b625.js} +0 -0
- /package/dist/vega/{p-07cb0243.js → p-18e8d9b7.js} +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/typedef */
|
|
2
|
+
/**
|
|
3
|
+
* D3 Polyfill Integration Tests
|
|
4
|
+
*
|
|
5
|
+
* Cross-module integration tests verifying Vega chart usage patterns
|
|
6
|
+
* work correctly with the polyfill modules.
|
|
7
|
+
*
|
|
8
|
+
* @see VD-5022 - [Zero Dependencies] remove d3 dependency
|
|
9
|
+
*/
|
|
10
|
+
import { select, create } from '../d3-selection-polyfill';
|
|
11
|
+
import { line, arc, pie } from '../d3-shape-polyfill';
|
|
12
|
+
import { scaleLinear, scaleTime, scaleBand } from '../d3-scale-polyfill';
|
|
13
|
+
import { min, max, extent, map } from '../d3-array-polyfill';
|
|
14
|
+
import { timeParse } from '../d3-time-format-polyfill';
|
|
15
|
+
// ─── Integration Tests (Vega Chart Patterns) ────────────────────────
|
|
16
|
+
describe('D3 Polyfill Integration - Vega Chart Patterns', () => {
|
|
17
|
+
it('should work with SVG renderer setLayout pattern', () => {
|
|
18
|
+
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
19
|
+
select(svg)
|
|
20
|
+
.attr('width', 300)
|
|
21
|
+
.attr('height', 200)
|
|
22
|
+
.attr('viewBox', [0, 0, 300, 200])
|
|
23
|
+
.property('style', 'display:block;max-width:100%;height:auto;')
|
|
24
|
+
.call(g => {
|
|
25
|
+
g.append('g').attr('class', 'vega-chart-draw-g').attr('transform', 'translate(10,10)');
|
|
26
|
+
})
|
|
27
|
+
.call(g => {
|
|
28
|
+
g.append('g').attr('class', 'vega-chart-legend-g').attr('transform', 'translate(3,2)');
|
|
29
|
+
});
|
|
30
|
+
expect(svg.getAttribute('width')).toBe('300');
|
|
31
|
+
expect(svg.querySelector('.vega-chart-draw-g')).not.toBeNull();
|
|
32
|
+
expect(svg.querySelector('.vega-chart-legend-g')).not.toBeNull();
|
|
33
|
+
});
|
|
34
|
+
it('should work with line path drawing pattern', () => {
|
|
35
|
+
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
36
|
+
const drawG = document.createElementNS('http://www.w3.org/2000/svg', 'g');
|
|
37
|
+
drawG.setAttribute('class', 'vega-chart-draw-g');
|
|
38
|
+
svg.appendChild(drawG);
|
|
39
|
+
const positions = [
|
|
40
|
+
{ x: 0, y: 100 },
|
|
41
|
+
{ x: 50, y: 50 },
|
|
42
|
+
{ x: 100, y: 75 },
|
|
43
|
+
];
|
|
44
|
+
select(svg)
|
|
45
|
+
.select('.vega-chart-draw-g')
|
|
46
|
+
.append('path')
|
|
47
|
+
.attr('class', 'vega-chart-line-path')
|
|
48
|
+
.datum(positions)
|
|
49
|
+
.attr('fill', 'none')
|
|
50
|
+
.attr('stroke', '#1362E2')
|
|
51
|
+
.attr('d', line()
|
|
52
|
+
.x(p => p.x)
|
|
53
|
+
.y(p => p.y));
|
|
54
|
+
const path = svg.querySelector('.vega-chart-line-path');
|
|
55
|
+
expect(path).not.toBeNull();
|
|
56
|
+
expect(path === null || path === void 0 ? void 0 : path.getAttribute('d')).toBe('M0,100L50,50L100,75');
|
|
57
|
+
});
|
|
58
|
+
it('should work with pie chart arc path pattern', () => {
|
|
59
|
+
const data = [
|
|
60
|
+
{ name: 'Slice1', value: 40 },
|
|
61
|
+
{ name: 'Slice2', value: 60 },
|
|
62
|
+
];
|
|
63
|
+
const arcs = pie().value(d => d.value)(data);
|
|
64
|
+
expect(arcs.length).toBe(2);
|
|
65
|
+
// Generate arc paths
|
|
66
|
+
for (const arcItem of arcs) {
|
|
67
|
+
const path = arc().innerRadius(0).outerRadius(100)(arcItem);
|
|
68
|
+
expect(path.length).toBeGreaterThan(0);
|
|
69
|
+
expect(path).toContain('A');
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
it('should work with format-time-positions pattern', () => {
|
|
73
|
+
const parseDate = timeParse('%Y-%m-%d');
|
|
74
|
+
const dateStringArray = [
|
|
75
|
+
{ x: '2021-01-01', y: 10 },
|
|
76
|
+
{ x: '2022-01-01', y: 20 },
|
|
77
|
+
];
|
|
78
|
+
const result = map(dateStringArray, d => ({
|
|
79
|
+
x: typeof d.x === 'string' ? parseDate(d.x) : d.x,
|
|
80
|
+
y: d.y,
|
|
81
|
+
}));
|
|
82
|
+
expect(result[0].x instanceof Date).toBe(true);
|
|
83
|
+
expect(result[0].x.getFullYear()).toBe(2021);
|
|
84
|
+
expect(result[1].y).toBe(20);
|
|
85
|
+
});
|
|
86
|
+
it('should work with y-axis-input-processor pattern', () => {
|
|
87
|
+
const yData = [10, 20, 30, 0];
|
|
88
|
+
const maxY = max(yData);
|
|
89
|
+
const minY = min(yData);
|
|
90
|
+
expect(maxY).toBe(30);
|
|
91
|
+
expect(minY).toBe(0);
|
|
92
|
+
const scale = scaleLinear().domain([minY, maxY]);
|
|
93
|
+
const ticks = scale.ticks(4);
|
|
94
|
+
expect(ticks.length).toBeGreaterThan(0);
|
|
95
|
+
const [minTick, maxTick] = extent(ticks);
|
|
96
|
+
expect(minTick).toBeLessThanOrEqual(minY);
|
|
97
|
+
expect(maxTick).toBeGreaterThanOrEqual(maxY);
|
|
98
|
+
});
|
|
99
|
+
it('should work with x-axis-input-processor scaleTime pattern', () => {
|
|
100
|
+
const dates = [new Date(2020, 0, 1), new Date(2022, 0, 1)];
|
|
101
|
+
const [minDate, maxDate] = extent(dates);
|
|
102
|
+
const scale = scaleTime().domain([minDate, maxDate]).range([0, 400]);
|
|
103
|
+
expect(scale(minDate)).toBe(0);
|
|
104
|
+
expect(scale(maxDate)).toBe(400);
|
|
105
|
+
});
|
|
106
|
+
it('should work with x-axis-input-processor scaleBand pattern', () => {
|
|
107
|
+
const categories = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'];
|
|
108
|
+
const scale = scaleBand(categories, [0, 500]).padding(0.1);
|
|
109
|
+
expect(scale('Mon')).toBeDefined();
|
|
110
|
+
expect(scale.bandwidth()).toBeGreaterThan(0);
|
|
111
|
+
});
|
|
112
|
+
it('should work with canvas-renderer drawLinePath pattern', () => {
|
|
113
|
+
const positions = [
|
|
114
|
+
{ x: 0, y: 100 },
|
|
115
|
+
{ x: 50, y: 50 },
|
|
116
|
+
];
|
|
117
|
+
const pathNode = create('svg:path')
|
|
118
|
+
.datum(positions)
|
|
119
|
+
.attr('d', line()
|
|
120
|
+
.x(p => p.x)
|
|
121
|
+
.y(p => p.y))
|
|
122
|
+
.node();
|
|
123
|
+
expect(pathNode === null || pathNode === void 0 ? void 0 : pathNode.getAttribute('d')).toBe('M0,100L50,50');
|
|
124
|
+
});
|
|
125
|
+
it('should work with clear() pattern', () => {
|
|
126
|
+
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
127
|
+
const drawG = document.createElementNS('http://www.w3.org/2000/svg', 'g');
|
|
128
|
+
drawG.setAttribute('class', 'vega-chart-draw-g');
|
|
129
|
+
const legendG = document.createElementNS('http://www.w3.org/2000/svg', 'g');
|
|
130
|
+
legendG.setAttribute('class', 'vega-chart-legend-g');
|
|
131
|
+
svg.appendChild(drawG);
|
|
132
|
+
svg.appendChild(legendG);
|
|
133
|
+
select(svg).selectAll('.vega-chart-draw-g').remove();
|
|
134
|
+
select(svg).selectAll('.vega-chart-legend-g').remove();
|
|
135
|
+
expect(svg.childNodes.length).toBe(0);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/typedef */
|
|
2
|
+
/**
|
|
3
|
+
* D3 Scale Polyfill Tests
|
|
4
|
+
*
|
|
5
|
+
* Tests for the d3-scale-polyfill module: scaleLinear(), scaleTime(), and scaleBand().
|
|
6
|
+
*
|
|
7
|
+
* @see VD-5022 - [Zero Dependencies] remove d3 dependency
|
|
8
|
+
*/
|
|
9
|
+
import { scaleLinear, scaleTime, scaleBand } from '../d3-scale-polyfill';
|
|
10
|
+
// ─── Scale Tests ────────────────────────────────────────────────────
|
|
11
|
+
describe('D3 Scale Polyfill', () => {
|
|
12
|
+
describe('scaleLinear()', () => {
|
|
13
|
+
it('should map domain values to range values', () => {
|
|
14
|
+
const scale = scaleLinear().domain([0, 100]).range([0, 200]);
|
|
15
|
+
expect(scale(0)).toBe(0);
|
|
16
|
+
expect(scale(50)).toBe(100);
|
|
17
|
+
expect(scale(100)).toBe(200);
|
|
18
|
+
});
|
|
19
|
+
it('should handle inverse range', () => {
|
|
20
|
+
const scale = scaleLinear().domain([0, 100]).range([200, 0]);
|
|
21
|
+
expect(scale(0)).toBe(200);
|
|
22
|
+
expect(scale(100)).toBe(0);
|
|
23
|
+
});
|
|
24
|
+
it('should generate ticks', () => {
|
|
25
|
+
const scale = scaleLinear().domain([0, 100]);
|
|
26
|
+
const ticks = scale.ticks(5);
|
|
27
|
+
expect(ticks.length).toBeGreaterThan(0);
|
|
28
|
+
expect(ticks[0]).toBeGreaterThanOrEqual(0);
|
|
29
|
+
expect(ticks[ticks.length - 1]).toBeLessThanOrEqual(100);
|
|
30
|
+
});
|
|
31
|
+
it('should return domain and range', () => {
|
|
32
|
+
const scale = scaleLinear().domain([10, 50]).range([0, 300]);
|
|
33
|
+
expect(scale.domain()).toEqual([10, 50]);
|
|
34
|
+
expect(scale.range()).toEqual([0, 300]);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('scaleTime()', () => {
|
|
38
|
+
it('should map Date domain to numeric range', () => {
|
|
39
|
+
const d0 = new Date(2020, 0, 1);
|
|
40
|
+
const d1 = new Date(2020, 11, 31);
|
|
41
|
+
const scale = scaleTime().domain([d0, d1]).range([0, 100]);
|
|
42
|
+
expect(scale(d0)).toBe(0);
|
|
43
|
+
expect(scale(d1)).toBe(100);
|
|
44
|
+
});
|
|
45
|
+
it('should have tickFormat function', () => {
|
|
46
|
+
const scale = scaleTime();
|
|
47
|
+
expect(typeof scale.tickFormat).toBe('function');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('scaleBand()', () => {
|
|
51
|
+
it('should map discrete domain to band positions', () => {
|
|
52
|
+
const scale = scaleBand(['Mon', 'Tue', 'Wed'], [0, 300]);
|
|
53
|
+
const monPosition = scale('Mon');
|
|
54
|
+
const tuePosition = scale('Tue');
|
|
55
|
+
expect(monPosition).toBeDefined();
|
|
56
|
+
expect(tuePosition).toBeDefined();
|
|
57
|
+
expect(tuePosition).toBeGreaterThan(monPosition);
|
|
58
|
+
});
|
|
59
|
+
it('should return undefined for unknown domain values', () => {
|
|
60
|
+
const scale = scaleBand(['A', 'B'], [0, 100]);
|
|
61
|
+
expect(scale('Z')).toBeUndefined();
|
|
62
|
+
});
|
|
63
|
+
it('should calculate bandwidth', () => {
|
|
64
|
+
const scale = scaleBand(['A', 'B', 'C'], [0, 300]);
|
|
65
|
+
expect(scale.bandwidth()).toBe(100);
|
|
66
|
+
});
|
|
67
|
+
it('should apply padding', () => {
|
|
68
|
+
const scale = scaleBand(['A', 'B'], [0, 100]).padding(0.5);
|
|
69
|
+
expect(scale.bandwidth()).toBe(20);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
// ─── Additional Scale Coverage ──────────────────────────────────────
|
|
74
|
+
describe('D3 Scale Polyfill - Additional Coverage', () => {
|
|
75
|
+
describe('scaleLinear() - copy()', () => {
|
|
76
|
+
it('should create an independent copy of the scale', () => {
|
|
77
|
+
// Covers LinearScale.copy() (lines 108-111) and scaleLinearFromInstance (lines 171-194)
|
|
78
|
+
const original = scaleLinear().domain([0, 100]).range([0, 500]);
|
|
79
|
+
const copied = original.copy();
|
|
80
|
+
expect(copied(50)).toBe(250);
|
|
81
|
+
// Modify original, copy should be unaffected
|
|
82
|
+
original.domain([0, 200]);
|
|
83
|
+
expect(copied(50)).toBe(250);
|
|
84
|
+
expect(original(50)).toBe(125);
|
|
85
|
+
});
|
|
86
|
+
it('should allow chaining domain/range on copied scale', () => {
|
|
87
|
+
const original = scaleLinear().domain([0, 100]).range([0, 500]);
|
|
88
|
+
const copied = original.copy();
|
|
89
|
+
// Use domain setter on copied scale (scaleLinearFromInstance domain setter)
|
|
90
|
+
copied.domain([0, 50]);
|
|
91
|
+
expect(copied(25)).toBe(250);
|
|
92
|
+
// Use range setter on copied scale (scaleLinearFromInstance range setter)
|
|
93
|
+
copied.range([0, 100]);
|
|
94
|
+
expect(copied(25)).toBe(50);
|
|
95
|
+
});
|
|
96
|
+
it('should support get methods on copied scale', () => {
|
|
97
|
+
const original = scaleLinear().domain([10, 90]).range([0, 400]);
|
|
98
|
+
const copied = original.copy();
|
|
99
|
+
// Use domain/range get methods on copied scale (from copy)
|
|
100
|
+
expect(copied.domain()).toEqual([10, 90]);
|
|
101
|
+
expect(copied.range()).toEqual([0, 400]);
|
|
102
|
+
});
|
|
103
|
+
it('should support ticks and tickFormat on copied scale', () => {
|
|
104
|
+
const original = scaleLinear().domain([0, 100]).range([0, 500]);
|
|
105
|
+
const copied = original.copy();
|
|
106
|
+
// ticks on copied scale (scaleLinearFromInstance ticks)
|
|
107
|
+
const ticks = copied.ticks(5);
|
|
108
|
+
expect(ticks.length).toBeGreaterThan(0);
|
|
109
|
+
// tickFormat on copied scale (scaleLinearFromInstance tickFormat)
|
|
110
|
+
const formatter = copied.tickFormat();
|
|
111
|
+
expect(formatter(42)).toBe('42');
|
|
112
|
+
});
|
|
113
|
+
it('should support nested copy', () => {
|
|
114
|
+
const original = scaleLinear().domain([0, 100]).range([0, 500]);
|
|
115
|
+
const copy1 = original.copy();
|
|
116
|
+
const copy2 = copy1.copy();
|
|
117
|
+
expect(copy2(50)).toBe(250);
|
|
118
|
+
});
|
|
119
|
+
it('should return 0 bandwidth for copied linear scale', () => {
|
|
120
|
+
const original = scaleLinear().domain([0, 100]).range([0, 500]);
|
|
121
|
+
const copied = original.copy();
|
|
122
|
+
expect(copied.bandwidth()).toBe(0);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe('scaleLinear() - tickFormat()', () => {
|
|
126
|
+
it('should return a function that converts values to strings', () => {
|
|
127
|
+
// Covers LinearScale.tickFormat() (lines 159-160)
|
|
128
|
+
const scale = scaleLinear().domain([0, 100]);
|
|
129
|
+
const formatter = scale.tickFormat();
|
|
130
|
+
expect(formatter(42)).toBe('42');
|
|
131
|
+
// domain [0,100] with step=10 yields precision=0, so decimals are truncated
|
|
132
|
+
expect(formatter(3.14)).toBe('3');
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('scaleTime() - ticks and tickFormat', () => {
|
|
136
|
+
it('should return ticks as time values', () => {
|
|
137
|
+
// Covers TimeScale.ticks() (lines 255-256)
|
|
138
|
+
const d0 = new Date(2020, 0, 1);
|
|
139
|
+
const d1 = new Date(2020, 11, 31);
|
|
140
|
+
const scale = scaleTime().domain([d0, d1]).range([0, 100]);
|
|
141
|
+
const ticks = scale.ticks();
|
|
142
|
+
// ~365 day domain with count=10 defaults to monthly ticks
|
|
143
|
+
expect(ticks.length).toBeGreaterThanOrEqual(2);
|
|
144
|
+
const firstTick = ticks[0];
|
|
145
|
+
const lastTick = ticks[ticks.length - 1];
|
|
146
|
+
expect(firstTick.getTime()).toBeGreaterThanOrEqual(d0.getTime());
|
|
147
|
+
expect(lastTick.getTime()).toBeLessThanOrEqual(d1.getTime());
|
|
148
|
+
});
|
|
149
|
+
it('should generate second-based ticks for small time', () => {
|
|
150
|
+
const start = new Date('2020-01-01T00:00:00.000Z');
|
|
151
|
+
const end = new Date('2020-01-01T00:00:10.000Z');
|
|
152
|
+
const ticks = scaleTime().domain([start, end]).ticks(10);
|
|
153
|
+
expect(ticks.length).toBeGreaterThanOrEqual(2);
|
|
154
|
+
});
|
|
155
|
+
it('should generate minute-based ticks for medium time', () => {
|
|
156
|
+
const start = new Date('2020-01-01T00:00:00.000Z');
|
|
157
|
+
const end = new Date('2020-01-01T00:10:00.000Z');
|
|
158
|
+
const ticks = scaleTime().domain([start, end]).ticks(10);
|
|
159
|
+
expect(ticks.length).toBeGreaterThanOrEqual(2);
|
|
160
|
+
});
|
|
161
|
+
it('should generate hour-based ticks for hourly time', () => {
|
|
162
|
+
const start = new Date('2020-01-01T00:00:00.000Z');
|
|
163
|
+
const end = new Date('2020-01-01T12:00:00.000Z');
|
|
164
|
+
const ticks = scaleTime().domain([start, end]).ticks(12);
|
|
165
|
+
expect(ticks.length).toBeGreaterThanOrEqual(2);
|
|
166
|
+
});
|
|
167
|
+
it('should generate week-based ticks for weekly time', () => {
|
|
168
|
+
const start = new Date('2020-01-05T00:00:00.000Z'); // Sunday
|
|
169
|
+
const end = new Date('2020-02-02T00:00:00.000Z');
|
|
170
|
+
const ticks = scaleTime().domain([start, end]).ticks(4);
|
|
171
|
+
expect(ticks.length).toBeGreaterThanOrEqual(2);
|
|
172
|
+
});
|
|
173
|
+
it('should generate year-based ticks for very large time', () => {
|
|
174
|
+
const start = new Date('1900-01-01T00:00:00.000Z');
|
|
175
|
+
const end = new Date('2000-01-01T00:00:00.000Z');
|
|
176
|
+
const ticks = scaleTime().domain([start, end]).ticks(10);
|
|
177
|
+
expect(ticks.length).toBeGreaterThanOrEqual(2);
|
|
178
|
+
});
|
|
179
|
+
it('should return tickFormat that formats dates', () => {
|
|
180
|
+
// Covers TimeScale.tickFormat() (lines 265-266)
|
|
181
|
+
const scale = scaleTime();
|
|
182
|
+
const formatter = scale.tickFormat();
|
|
183
|
+
const date = new Date(2023, 5, 15);
|
|
184
|
+
const result = formatter(date);
|
|
185
|
+
expect(typeof result).toBe('string');
|
|
186
|
+
expect(result.length).toBeGreaterThan(0);
|
|
187
|
+
});
|
|
188
|
+
it('should use tickFormat to handle non-Date values', () => {
|
|
189
|
+
const scale = scaleTime();
|
|
190
|
+
const formatter = scale.tickFormat();
|
|
191
|
+
expect(formatter(42)).toBe('42');
|
|
192
|
+
});
|
|
193
|
+
it('should return domain and range for scaleTime', () => {
|
|
194
|
+
// Covers scaleTime domain/range getter methods (lines 293-294)
|
|
195
|
+
const d0 = new Date(2020, 0, 1);
|
|
196
|
+
const d1 = new Date(2020, 11, 31);
|
|
197
|
+
const scale = scaleTime().domain([d0, d1]).range([0, 400]);
|
|
198
|
+
const domain = scale.domain();
|
|
199
|
+
expect(domain.length).toBe(2);
|
|
200
|
+
const range = scale.range();
|
|
201
|
+
expect(range).toEqual([0, 400]);
|
|
202
|
+
});
|
|
203
|
+
it('should return a single tick when duration is zero', () => {
|
|
204
|
+
const d0 = new Date('2020-01-01T00:00:00.000Z');
|
|
205
|
+
const ticks = scaleTime().domain([d0, d0]).ticks();
|
|
206
|
+
expect(ticks).toHaveLength(1);
|
|
207
|
+
expect(ticks[0].getTime()).toBe(d0.getTime());
|
|
208
|
+
});
|
|
209
|
+
it('should support copy() for scaleTime', () => {
|
|
210
|
+
const original = scaleTime().domain([
|
|
211
|
+
new Date('2020-01-01T00:00:00.000Z'),
|
|
212
|
+
new Date('2020-02-01T00:00:00.000Z'),
|
|
213
|
+
]);
|
|
214
|
+
const copied = original.copy();
|
|
215
|
+
expect(typeof copied).toBe('function');
|
|
216
|
+
expect(typeof copied.tickFormat).toBe('function');
|
|
217
|
+
});
|
|
218
|
+
it('should choose week interval for ~10-week domains', () => {
|
|
219
|
+
const start = new Date('2020-01-05T00:00:00.000Z'); // Sunday boundary
|
|
220
|
+
const end = new Date('2020-03-15T00:00:00.000Z'); // ~10 weeks later
|
|
221
|
+
const ticks = scaleTime().domain([start, end]).ticks();
|
|
222
|
+
expect(ticks.length).toBeGreaterThanOrEqual(2);
|
|
223
|
+
// After ceiling to next Sunday, all ticks should land on Sunday (day 0)
|
|
224
|
+
expect(ticks.every(d => d.getUTCDay() === 0)).toBe(true);
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
describe('scaleBand() - additional coverage', () => {
|
|
228
|
+
it('should return positions for all domain values via call()', () => {
|
|
229
|
+
// Covers BandScale.call positions (lines 347-362)
|
|
230
|
+
const scale = scaleBand(['A', 'B', 'C', 'D'], [0, 400]);
|
|
231
|
+
const positionA = scale('A');
|
|
232
|
+
const positionB = scale('B');
|
|
233
|
+
const positionC = scale('C');
|
|
234
|
+
const positionD = scale('D');
|
|
235
|
+
expect(positionA).toBeDefined();
|
|
236
|
+
expect(positionB).toBeDefined();
|
|
237
|
+
expect(positionC).toBeDefined();
|
|
238
|
+
expect(positionD).toBeDefined();
|
|
239
|
+
expect(positionA).toBeLessThan(positionB);
|
|
240
|
+
expect(positionB).toBeLessThan(positionC);
|
|
241
|
+
expect(positionC).toBeLessThan(positionD);
|
|
242
|
+
});
|
|
243
|
+
it('should return 0 bandwidth for empty domain', () => {
|
|
244
|
+
// Covers BandScale.bandwidth empty domain (line 396)
|
|
245
|
+
const scale = scaleBand([], [0, 400]);
|
|
246
|
+
expect(scale.bandwidth()).toBe(0);
|
|
247
|
+
});
|
|
248
|
+
it('should support domain setter on scaleBand', () => {
|
|
249
|
+
// Covers scaleBand domain setter (lines 415-418)
|
|
250
|
+
const scale = scaleBand([], [0, 300]);
|
|
251
|
+
scale.domain(['X', 'Y', 'Z']);
|
|
252
|
+
expect(scale('X')).toBeDefined();
|
|
253
|
+
expect(scale('Y')).toBeDefined();
|
|
254
|
+
expect(scale.bandwidth()).toBeGreaterThan(0);
|
|
255
|
+
});
|
|
256
|
+
it('should support range setter on scaleBand', () => {
|
|
257
|
+
// Covers scaleBand range setter (lines 420-423)
|
|
258
|
+
const scale = scaleBand(['A', 'B'], [0, 100]);
|
|
259
|
+
scale.range([0, 200]);
|
|
260
|
+
expect(scale.bandwidth()).toBe(100);
|
|
261
|
+
});
|
|
262
|
+
it('should support domain and range get methods on scaleBand', () => {
|
|
263
|
+
const scale = scaleBand(['A', 'B'], [0, 100]);
|
|
264
|
+
expect(scale.domain()).toEqual(['A', 'B']);
|
|
265
|
+
expect(scale.range()).toEqual([0, 100]);
|
|
266
|
+
});
|
|
267
|
+
it('should handle padding with positions', () => {
|
|
268
|
+
const scale = scaleBand(['A', 'B'], [0, 100]).padding(0.2);
|
|
269
|
+
const positionA = scale('A');
|
|
270
|
+
const positionB = scale('B');
|
|
271
|
+
expect(positionA).toBeDefined();
|
|
272
|
+
expect(positionB).toBeDefined();
|
|
273
|
+
expect(positionA).toBeLessThan(positionB);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
// ─── Scale Branch Edge Cases ────────────────────────────────────────
|
|
278
|
+
describe('D3 Scale Polyfill - Branch Edge Cases', () => {
|
|
279
|
+
describe('LinearScale edge cases', () => {
|
|
280
|
+
it('should return range midpoint when domain values are equal', () => {
|
|
281
|
+
const scale = scaleLinear().domain([50, 50]).range([100, 300]);
|
|
282
|
+
expect(scale(50)).toBe(200);
|
|
283
|
+
});
|
|
284
|
+
it('should return domain start when step is 0 or non-finite', () => {
|
|
285
|
+
const scale = scaleLinear().domain([5, 5]).range([0, 100]);
|
|
286
|
+
const ticks = scale.ticks(5);
|
|
287
|
+
expect(ticks).toEqual([5]);
|
|
288
|
+
});
|
|
289
|
+
it('should return domain start when step is non-finite (NaN)', () => {
|
|
290
|
+
const scale = scaleLinear().domain([0, 0]).range([0, 100]);
|
|
291
|
+
const ticks = scale.ticks(0);
|
|
292
|
+
expect(ticks).toEqual([0]);
|
|
293
|
+
});
|
|
294
|
+
it('should use default tick count when calling ticks() without arguments', () => {
|
|
295
|
+
// Cover default-arg branch: ticks(count: number = 10) — use default
|
|
296
|
+
const scale = scaleLinear().domain([0, 100]).range([0, 500]);
|
|
297
|
+
const ticks = scale.ticks();
|
|
298
|
+
expect(ticks.length).toBeGreaterThan(0);
|
|
299
|
+
});
|
|
300
|
+
it('should handle reversed domain where stop < start', () => {
|
|
301
|
+
// Cover tickStep stop < start branch — produces negative step
|
|
302
|
+
const scale = scaleLinear().domain([100, 0]).range([0, 500]);
|
|
303
|
+
const ticks = scale.ticks(5);
|
|
304
|
+
// With reversed domain, ticks may be empty due to loop direction
|
|
305
|
+
expect(Array.isArray(ticks)).toBe(true);
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
describe('tickStep branches', () => {
|
|
309
|
+
it('should multiply step by 10 when error >= 7.5', () => {
|
|
310
|
+
// Covers tickStep error >= 7.5 branch (line 129)
|
|
311
|
+
const scale = scaleLinear().domain([0, 80]).range([0, 100]);
|
|
312
|
+
const ticks = scale.ticks(1);
|
|
313
|
+
expect(ticks.length).toBeGreaterThanOrEqual(1);
|
|
314
|
+
});
|
|
315
|
+
it('should multiply step by 5 when error >= 3.5 but < 7.5', () => {
|
|
316
|
+
// Covers tickStep error >= 3.5 branch (line 131)
|
|
317
|
+
const scale = scaleLinear().domain([0, 50]).range([0, 100]);
|
|
318
|
+
const ticks = scale.ticks(1);
|
|
319
|
+
expect(ticks.length).toBeGreaterThanOrEqual(1);
|
|
320
|
+
});
|
|
321
|
+
it('should not multiply step when error < 1.5', () => {
|
|
322
|
+
// Covers tickStep error < 1.5 branch (line 131 else)
|
|
323
|
+
// Need: span/count/step results in error < 1.5
|
|
324
|
+
// span=10, count=10 → raw step=1, error=10/10/1=1 < 1.5
|
|
325
|
+
const scale = scaleLinear().domain([0, 10]).range([0, 100]);
|
|
326
|
+
const ticks = scale.ticks(10);
|
|
327
|
+
expect(ticks.length).toBeGreaterThanOrEqual(1);
|
|
328
|
+
// Step should be 1 (not multiplied)
|
|
329
|
+
if (ticks.length > 1) {
|
|
330
|
+
expect(ticks[1] - ticks[0]).toBe(1);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
describe('scaleTime domain/range getter methods', () => {
|
|
335
|
+
it('should get domain and range independently', () => {
|
|
336
|
+
// Cover scaleTime get methods (lines 318-319)
|
|
337
|
+
const d0 = new Date(2020, 0, 1);
|
|
338
|
+
const d1 = new Date(2020, 11, 31);
|
|
339
|
+
const scale = scaleTime().domain([d0, d1]).range([50, 250]);
|
|
340
|
+
const domain = scale.domain();
|
|
341
|
+
expect(domain.length).toBe(2);
|
|
342
|
+
const range = scale.range();
|
|
343
|
+
expect(range).toEqual([50, 250]);
|
|
344
|
+
});
|
|
345
|
+
it('should handle numeric value (non-Date) in scaleTime', () => {
|
|
346
|
+
// Cover TimeScale.call non-Date branch (line 214)
|
|
347
|
+
const d0 = new Date(2020, 0, 1);
|
|
348
|
+
const d1 = new Date(2020, 11, 31);
|
|
349
|
+
const scale = scaleTime().domain([d0, d1]).range([0, 100]);
|
|
350
|
+
const midTimestamp = (d0.getTime() + d1.getTime()) / 2;
|
|
351
|
+
expect(scale(midTimestamp)).toBeCloseTo(50, 0);
|
|
352
|
+
});
|
|
353
|
+
it('should return range start when time domain values are equal', () => {
|
|
354
|
+
// Cover TimeScale.call t1 === t0 branch (line 219)
|
|
355
|
+
const sameDate = new Date(2020, 6, 1);
|
|
356
|
+
const scale = scaleTime().domain([sameDate, sameDate]).range([0, 100]);
|
|
357
|
+
expect(scale(sameDate)).toBe(0);
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
describe('scaleBand no-argument constructor paths', () => {
|
|
361
|
+
it('should create scaleBand without domain or range arguments', () => {
|
|
362
|
+
// Cover BandScale constructor when domain/range are undefined (lines 318-319 false branches)
|
|
363
|
+
const scale = scaleBand();
|
|
364
|
+
expect(scale.domain()).toEqual([]);
|
|
365
|
+
expect(scale.range()).toEqual([0, 1]);
|
|
366
|
+
});
|
|
367
|
+
it('should create scaleBand with domain only', () => {
|
|
368
|
+
const scale = scaleBand(['A', 'B']);
|
|
369
|
+
expect(scale.domain()).toEqual(['A', 'B']);
|
|
370
|
+
expect(scale.range()).toEqual([0, 1]);
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
describe('scaleLinear domain/range getter methods through scaleLinearFromInstance', () => {
|
|
374
|
+
it('should get domain from copied scale (scaleLinearFromInstance getter)', () => {
|
|
375
|
+
// Covers line 214-219 (scaleLinearFromInstance domain/range getter branches)
|
|
376
|
+
const original = scaleLinear().domain([5, 95]).range([10, 490]);
|
|
377
|
+
const copied = original.copy();
|
|
378
|
+
expect(copied.domain()).toEqual([5, 95]);
|
|
379
|
+
expect(copied.range()).toEqual([10, 490]);
|
|
380
|
+
});
|
|
381
|
+
});
|
|
382
|
+
});
|