@heartlandone/vega 2.75.0 → 2.76.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.
- package/dist/cjs/{app-globals-bf183914.js → app-globals-12b7d808.js} +28 -32
- package/dist/cjs/breakpoints-751d433a.js +56 -0
- package/dist/cjs/{child-nodes-event-prevent-slimmer-aca87dac.js → child-nodes-event-prevent-slimmer-84435957.js} +2 -2
- package/dist/cjs/{child-nodes-notify-observer-slimmer-257fedb3.js → child-nodes-notify-observer-slimmer-ed39283b.js} +1 -1
- package/dist/cjs/{code-block-c1d2e6a8.js → code-block-f1480ec3.js} +17 -17
- package/dist/cjs/{component-global-style-slimmer-adfa2e59.js → component-global-style-slimmer-93c5fb50.js} +2 -1
- package/dist/cjs/{component-usage-runtime-metrics-d10ace87.js → component-usage-runtime-metrics-4572c5b7.js} +1 -1
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-787c67dc.js → component-value-history-controller-slimmer.abstract-a9264cc8.js} +5 -5
- package/dist/cjs/{create-public-api-runtime-metrics-slimmer-e2e274e1.js → create-public-api-runtime-metrics-slimmer-9cb09fb2.js} +3 -41
- package/dist/cjs/{dark-mode-style-controller-c21172aa.js → dark-mode-style-controller-3a04af3d.js} +292 -1254
- package/dist/cjs/{date-required-rule-30ee62d0.js → date-required-rule-912469e0.js} +1 -1
- package/dist/cjs/{design-token-cbc01283.js → design-token-41baf118.js} +2 -2
- package/dist/cjs/dom-node-subject-observer-factory-c62823de.js +141 -0
- package/dist/cjs/{dto-renderer-manager-2fc24151.js → dto-renderer-manager-809c947b.js} +230 -55
- package/dist/cjs/{element-appender-slimmer-318d29c7.js → element-appender-slimmer-34e4eb56.js} +349 -166
- package/dist/cjs/{event-emit-slimmer-2dacabbd.js → event-emit-slimmer-062cdcb8.js} +2 -2
- package/dist/cjs/{feature-flag-controller-ce2162c8.js → feature-flag-controller-04cb1e69.js} +7 -1
- package/dist/cjs/{form-field-controller-slimmer-aef2fb1e.js → form-field-controller-slimmer-102f37c7.js} +13 -14
- package/dist/cjs/{internal-icon-manager-32f9ed63.js → icon-manager-c12c6ea9.js} +1 -52
- package/dist/cjs/{image-annotation-action-e4a35325.js → image-annotation-action-8d9fa20c.js} +10 -9
- package/dist/cjs/index-592b4052.js +220 -0
- package/dist/cjs/{index-4d7bce1a.js → index-f054eb5d.js} +15 -3
- package/dist/cjs/index.cjs.js +68 -65
- package/dist/cjs/{inject-keyboard-manager-d21b4387.js → inject-keyboard-manager-0f5bd568.js} +1 -1
- package/dist/cjs/internal-icon-manager-c989189a.js +55 -0
- package/dist/cjs/{translation-5f9f9c0c.js → internal-translation-controller-053eb0f1.js} +0 -93
- package/dist/cjs/{internal-vega-event-manager-6befeb34.js → internal-vega-event-manager-f7ecf3d4.js} +81 -81
- package/dist/cjs/internal-vega-z-index-manager-f03ddb37.js +180 -0
- package/dist/cjs/{keyboard-manager-3dea6b28.js → keyboard-manager-055e9f67.js} +2 -2
- package/dist/cjs/{keyboard-manager-slimmer-0d45f944.js → keyboard-manager-slimmer-0cc0c1c7.js} +1 -1
- package/dist/cjs/loader.cjs.js +26 -23
- package/dist/cjs/misc-3d30df91.js +41 -0
- package/dist/cjs/{month-view-generator-49cc5fc2.js → month-view-generator-6a6dd527.js} +1 -1
- package/dist/cjs/{page-resize-observer-slimmer-11937d6f.js → page-resize-observer-slimmer-7f065ee1.js} +2 -54
- package/dist/cjs/{public-rules-661823fa.js → public-rules-922849f3.js} +12 -13
- package/dist/cjs/{range-79b668e7.js → range-8aa49b08.js} +2 -2
- package/dist/cjs/{responsive-format-facade-f71d399c.js → responsive-format-facade-ea59bdcd.js} +13 -22
- package/dist/cjs/{rich-text-editor-required-rule-d5feeffd.js → rich-text-editor-required-rule-22225840.js} +1 -1
- package/dist/cjs/{string-format-strategy.abstract-63514c60.js → string-format-strategy.abstract-f2575647.js} +1 -1
- package/dist/cjs/{string-input-formatter-slimmer-f3e0bbc7.js → string-input-formatter-slimmer-0a334fc6.js} +5 -5
- package/dist/cjs/{string-mask-strategy-d23ac21a.js → string-mask-strategy-dda58395.js} +2 -2
- package/dist/cjs/{style-formatter-566df206.js → style-formatter-0c3ced39.js} +2 -2
- package/dist/cjs/{sub-state-notify-slimmer-468e19aa.js → sub-state-notify-slimmer-58121111.js} +1 -1
- package/dist/cjs/{sub-state-observer-slimmer-5d0b8ac3.js → sub-state-observer-slimmer-1dfbc4c3.js} +2 -2
- package/dist/cjs/{time-required-rule-c96ecdc9.js → time-required-rule-d6fa7aa8.js} +1 -1
- package/dist/cjs/{function-extension-ca9aa115.js → token-extension-07cac85d.js} +501 -387
- package/dist/cjs/{translation-slimmer-f0ebe710.js → translation-slimmer-4533bd67.js} +4 -4
- package/dist/cjs/{type-guard-a0f026d8.js → type-guard-407ba0b8.js} +3 -3
- package/dist/cjs/{ui-9e181079.js → ui-234ea151.js} +12 -0
- package/dist/cjs/{valid-credit-card-number-rule-c854bed9.js → valid-credit-card-number-rule-41a8b51b.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +21 -30
- package/dist/cjs/vega-app-footer.cjs.entry.js +3 -3
- package/dist/cjs/vega-app-header-button.cjs.entry.js +183 -49
- package/dist/cjs/vega-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/vega-banner.cjs.entry.js +15 -13
- package/dist/cjs/vega-bar-chart.cjs.entry.js +1 -1
- package/dist/cjs/vega-box.cjs.entry.js +18 -33
- package/dist/cjs/vega-brand-logo.cjs.entry.js +7 -5
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +14 -13
- package/dist/cjs/vega-button-circle.cjs.entry.js +20 -30
- package/dist/cjs/vega-button-group_2.cjs.entry.js +15 -15
- package/dist/cjs/vega-button-link.cjs.entry.js +15 -14
- package/dist/cjs/vega-button.cjs.entry.js +21 -30
- package/dist/cjs/vega-calendar_4.cjs.entry.js +48 -45
- package/dist/cjs/vega-card.cjs.entry.js +9 -28
- package/dist/cjs/vega-carousel.cjs.entry.js +15 -26
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +22 -20
- package/dist/cjs/vega-chip.cjs.entry.js +22 -33
- package/dist/cjs/vega-code-block.cjs.entry.js +658 -2709
- package/dist/cjs/vega-color-picker.cjs.entry.js +15 -12
- package/dist/cjs/vega-combo-box.cjs.entry.js +29 -28
- package/dist/cjs/vega-counter-badge.cjs.entry.js +1 -1
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +53 -56
- package/dist/cjs/vega-dialog-controller-03ef4d9a.js +84 -0
- package/dist/cjs/vega-dialog_2.cjs.entry.js +37 -44
- package/dist/cjs/vega-divider.cjs.entry.js +12 -30
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +49 -55
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/{dom-node-subject-observer-factory-b5e71bf6.js → vega-event-id-ee01d8dd.js} +0 -139
- package/dist/cjs/vega-field-error.cjs.entry.js +1 -1
- package/dist/cjs/vega-field-label.cjs.entry.js +9 -8
- package/dist/cjs/vega-file-uploader.cjs.entry.js +28 -23
- package/dist/cjs/vega-flag-icon.cjs.entry.js +13 -27
- package/dist/cjs/vega-flex.cjs.entry.js +11 -28
- package/dist/cjs/vega-font.cjs.entry.js +12 -29
- package/dist/cjs/vega-form.cjs.entry.js +24 -22
- package/dist/cjs/vega-grid.cjs.entry.js +9 -28
- package/dist/cjs/vega-hint.cjs.entry.js +1 -1
- package/dist/cjs/vega-icon.cjs.entry.js +18 -31
- package/dist/cjs/vega-image-uploader.cjs.entry.js +34 -37
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +31 -27
- package/dist/cjs/vega-input-numeric.cjs.entry.js +24 -22
- package/dist/cjs/vega-input-passcode.cjs.entry.js +26 -24
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +31 -35
- package/dist/cjs/vega-input-range.cjs.entry.js +22 -20
- package/dist/cjs/vega-input-select.cjs.entry.js +41 -46
- package/dist/cjs/vega-input.cjs.entry.js +43 -31
- package/dist/cjs/vega-item-toggle.cjs.entry.js +8 -7
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +38 -40
- package/dist/cjs/vega-line-chart.cjs.entry.js +1 -1
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +16 -32
- package/dist/cjs/vega-page-notification_2.cjs.entry.js +5 -4
- package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +12 -12
- package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +9 -10
- package/dist/cjs/vega-pagination.cjs.entry.js +28 -38
- package/dist/cjs/vega-pie-chart.cjs.entry.js +1 -1
- package/dist/cjs/vega-popover_2.cjs.entry.js +21 -31
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +66 -39
- package/dist/cjs/vega-radio_2.cjs.entry.js +25 -23
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +22 -20
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +115 -62
- package/dist/cjs/vega-section-title.cjs.entry.js +1 -1
- package/dist/cjs/vega-segment-control.cjs.entry.js +10 -8
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +25 -32
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +22 -20
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +34 -40
- package/dist/cjs/vega-signature-capture.cjs.entry.js +27 -31
- package/dist/cjs/vega-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/vega-slot-container.cjs.entry.js +1 -1
- package/dist/cjs/vega-stepper.cjs.entry.js +23 -21
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +15 -14
- package/dist/cjs/vega-table_11.cjs.entry.js +67 -68
- package/dist/cjs/vega-text.cjs.entry.js +4 -3
- package/dist/cjs/vega-textarea.cjs.entry.js +22 -20
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +35 -41
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +15 -12
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +17 -28
- package/dist/cjs/vega.cjs.js +26 -23
- package/dist/cjs/{index-95fca64f.js → wait-for-component-did-render-70a01bf9.js} +1 -12
- package/dist/collection/components/vega-app-header-button/vega-app-header-button.js +17 -2
- package/dist/collection/components/vega-box/slimmers/controllers/vega-box-responsive-style-controller.js +2 -1
- package/dist/collection/components/vega-box/slimmers/controllers/vega-box-state-styles-controller.js +2 -1
- package/dist/collection/components/vega-button/vega-button.js +2 -1
- package/dist/collection/components/vega-button-circle/vega-button-circle.js +2 -1
- package/dist/collection/components/vega-button-link/vega-button-link.css +1 -1
- package/dist/collection/components/vega-button-link/vega-button-link.js +2 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/base-repeat-pattern.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/calendar-event-daily-repeat-pattern.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/calendar-event-monthly-repeat-pattern.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/calendar-event-weekly-repeat-pattern.js +1 -1
- package/dist/collection/components/vega-calendar/slimmers/common/helpers/repeat-pattern/calendar-event-yearly-repeat-pattern.js +1 -1
- package/dist/collection/components/vega-code-block/slimmers/controllers/prism-code-highlight-parse-controller.js +5 -14
- package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +2 -2
- package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +1 -1
- package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-renderer.js +1 -1
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-search-controller.js +2 -2
- package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.js +2 -2
- package/dist/collection/components/vega-dropdown/vega-dropdown-group/slimmers/renderers/vega-dropdown-group-renderer.js +3 -3
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +6 -4
- package/dist/collection/components/vega-icon/vega-icon.js +2 -1
- package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-container-renderer.js +10 -2
- package/dist/collection/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.js +1 -1
- package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +2 -2
- package/dist/collection/components/vega-pagination/vega-pagination.js +1 -1
- package/dist/collection/components/vega-progress-tracker/slimmers/controllers/dto/internal-progress-tracker-step.js +30 -6
- package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-steps-controller.js +1 -1
- package/dist/collection/components/vega-progress-tracker/slimmers/renderers/vega-progress-tracker-renderer.js +8 -1
- package/dist/collection/components/vega-progress-tracker/vega-progress-tracker-step/vega-progress-tracker-step.js +27 -0
- package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.css +12 -0
- package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +8 -3
- package/dist/collection/components/vega-rich-text-content/vega-rich-text-content.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/html-block.js +16 -0
- package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +3 -22
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/html-content-cleaner.js +59 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/index.js +4 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/processors/remove-whitespace-after-opening-tag-processor.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/processors/remove-whitespace-before-closing-tag-processor.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/processors/remove-whitespace-between-tags-processor.js +77 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/value-controller.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/test/dto/blocks/html-block.test.js +39 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/content-state.test.js +166 -1
- package/dist/collection/components/vega-rich-text-editor/test/html-cleaner/html-content-cleaner.test.js +186 -0
- package/dist/collection/components/vega-rich-text-editor/test/html-cleaner/remove-whitespace-after-opening-tag-processor.test.js +22 -0
- package/dist/collection/components/vega-rich-text-editor/test/html-cleaner/remove-whitespace-before-closing-tag-processor.test.js +22 -0
- package/dist/collection/components/vega-rich-text-editor/test/html-cleaner/remove-whitespace-between-tags-processor.test.js +26 -0
- package/dist/collection/components/vega-signature-capture/slimmers/written-mode/controllers/written-mode-svg-controller.js +2 -1
- package/dist/collection/components/vega-table/interface.js +3 -0
- package/dist/collection/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.js +1 -1
- package/dist/collection/global/scripts/before-vega-load.js +4 -3
- package/dist/collection/helpers/calendar/calendar-date.js +1 -1
- package/dist/collection/helpers/calendar/calendar-event.js +1 -1
- package/dist/collection/helpers/calendar/calendar-time.js +1 -1
- package/dist/collection/helpers/code-format/code-formatter.js +57 -7
- package/dist/collection/helpers/code-format/test/code-formatter.test.js +49 -1
- package/dist/collection/helpers/common/index.js +2 -37
- package/dist/collection/helpers/common/test/wait-for-vega-handler.test.js +2 -2
- package/dist/collection/helpers/common/wait-for-component-did-render.js +27 -0
- package/dist/collection/helpers/common/wait-for-vega-handler.js +12 -1
- package/dist/collection/helpers/feature-control/feature-flags-map.js +6 -0
- package/dist/collection/helpers/formatter/responsive-map-formatter/responsive-border-radius-style-formatter.js +1 -1
- package/dist/collection/helpers/public-api.js +0 -2
- package/dist/collection/helpers/slimmers/component-global-style-slimmer.js +2 -1
- package/dist/collection/helpers/slimmers/field-error-ui-controller-slimmer.js +3 -4
- package/dist/collection/helpers/slimmers/form-field-message-translator.js +1 -1
- package/dist/collection/helpers/slimmers/global/vega-translate-observer-slimmer.js +1 -1
- package/dist/collection/helpers/slimmers/global/vega-watch-method-cancel-slimmer.js +1 -1
- package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +128 -0
- package/dist/collection/helpers/slimmers/mutation-observer/test/aria-attributes-value-mapper.test.js +196 -0
- package/dist/collection/helpers/slimmers/position-calculation/base-position-calculation-strategy.js +162 -151
- package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +9 -0
- package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +112 -1
- package/dist/collection/helpers/slimmers/position-calculation/screen-scroll-position-update.js +53 -0
- package/dist/collection/helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.js +103 -6
- package/dist/collection/helpers/slimmers/string-input-formatter-slimmer.js +1 -1
- package/dist/collection/helpers/slimmers/translation/translation-slimmer.js +1 -1
- package/dist/collection/helpers/theme/controllers/brand-style-controller.js +3 -1
- package/dist/collection/helpers/theme/controllers/color-schema-overriding-controller.js +8 -6
- package/dist/collection/helpers/theme/controllers/dark-mode-style-controller.js +3 -1
- package/dist/collection/helpers/theme/internal-theme-manager.js +2 -1
- package/dist/collection/helpers/theme/tests/theme-manager-controller.test.js +1 -2
- package/dist/collection/helpers/ui/element-appender.js +4 -5
- package/dist/collection/helpers/ui/test/element-appender.test.js +66 -17
- package/dist/collection/index.js +2 -0
- package/dist/collection/polyfill/prism/index.js +2 -0
- package/dist/collection/polyfill/prism/languages/css.js +86 -0
- package/dist/collection/polyfill/prism/languages/javascript.js +96 -0
- package/dist/collection/polyfill/prism/languages/jsx.js +46 -0
- package/dist/collection/polyfill/prism/languages/language-registry.js +41 -0
- package/dist/collection/polyfill/prism/languages/markup.js +71 -0
- package/dist/collection/polyfill/prism/languages/tsx.js +10 -0
- package/dist/collection/polyfill/prism/languages/typescript.js +64 -0
- package/dist/collection/polyfill/prism/test/css.test.js +61 -0
- package/dist/collection/polyfill/prism/test/javascript.test.js +113 -0
- package/dist/collection/polyfill/prism/test/jsx.test.js +48 -0
- package/dist/collection/polyfill/prism/test/language-registry.test.js +77 -0
- package/dist/collection/polyfill/prism/test/markup.test.js +57 -0
- package/dist/collection/polyfill/prism/test/test-utils.js +22 -0
- package/dist/collection/polyfill/prism/test/tokenizer.test.js +180 -0
- package/dist/collection/polyfill/prism/test/tsx.test.js +87 -0
- package/dist/collection/polyfill/prism/test/typescript.test.js +86 -0
- package/dist/collection/polyfill/prism/tokenizer.js +242 -0
- package/dist/collection/polyfill/prism/types.js +1 -0
- package/dist/collection/polyfill/tinycolor/tinycolor-polyfill.js +320 -0
- package/dist/collection/polyfill/tinycolor/tinycolor-polyfill.test.js +361 -0
- package/dist/collection/types/ui.type.js +12 -0
- package/dist/collection/utils/e2e-utils.js +10 -3
- package/dist/collection/utils/sanitize/constants/tag-sets.js +5 -0
- package/dist/collection/utils/sanitize/core/html-sanitizer.js +39 -0
- package/dist/collection/utils/sanitize/core/sanitize-strategy.js +62 -0
- package/dist/collection/utils/sanitize/core/types.js +4 -0
- package/dist/collection/utils/sanitize/index.js +12 -0
- package/dist/collection/utils/sanitize/strategies/empty-sanitize-strategy.js +17 -0
- package/dist/collection/utils/sanitize/strategies/index.js +3 -0
- package/dist/collection/utils/sanitize/strategies/label-sanitize-strategy.js +13 -0
- package/dist/collection/utils/sanitize/strategies/style-sanitize-strategy.js +50 -0
- package/dist/collection/utils/sanitize/test/empty-strategy.test.js +12 -0
- package/dist/collection/utils/sanitize/test/html-sanitizer.test.js +57 -0
- package/dist/collection/utils/sanitize/test/label-strategy.test.js +56 -0
- package/dist/collection/utils/sanitize/test/sanitize-strategy.test.js +85 -0
- package/dist/collection/utils/sanitize/test/sanitize.test.js +22 -0
- package/dist/collection/utils/sanitize/test/serialize-fragment.test.js +25 -0
- package/dist/collection/utils/sanitize/test/style-strategy.test.js +45 -0
- package/dist/collection/utils/sanitize/utils/serialize-fragment.js +17 -0
- package/dist/esm/{app-globals-f3414aca.js → app-globals-c0676920.js} +12 -16
- package/dist/esm/breakpoints-56e5407b.js +53 -0
- package/dist/esm/{child-nodes-event-prevent-slimmer-e662bee2.js → child-nodes-event-prevent-slimmer-649b9d30.js} +2 -2
- package/dist/esm/{child-nodes-notify-observer-slimmer-b676cd2b.js → child-nodes-notify-observer-slimmer-541dd6a4.js} +1 -1
- package/dist/esm/{code-block-8ee34ab6.js → code-block-b6247a45.js} +7 -7
- package/dist/esm/{component-global-style-slimmer-08046b38.js → component-global-style-slimmer-ac703085.js} +2 -1
- package/dist/esm/{component-usage-runtime-metrics-a84cc93e.js → component-usage-runtime-metrics-46020a03.js} +1 -1
- package/dist/esm/{component-value-history-controller-slimmer.abstract-a61bf821.js → component-value-history-controller-slimmer.abstract-2bb8533d.js} +6 -6
- package/dist/esm/{create-public-api-runtime-metrics-slimmer-bedf3a1e.js → create-public-api-runtime-metrics-slimmer-aaadaa08.js} +3 -38
- package/dist/esm/{dark-mode-style-controller-de88a117.js → dark-mode-style-controller-82e5c1c6.js} +292 -1254
- package/dist/esm/{date-required-rule-47ecc28f.js → date-required-rule-e771e7d9.js} +1 -1
- package/dist/esm/{design-token-9b299589.js → design-token-4aee1c56.js} +2 -2
- package/dist/esm/dom-node-subject-observer-factory-82f346e3.js +138 -0
- package/dist/esm/{dto-renderer-manager-f07cf2d9.js → dto-renderer-manager-6fd22ab7.js} +204 -29
- package/dist/esm/{element-appender-slimmer-7cb08343.js → element-appender-slimmer-e4713a72.js} +348 -165
- package/dist/esm/{event-emit-slimmer-09827cec.js → event-emit-slimmer-ffaecb9a.js} +2 -2
- package/dist/esm/{feature-flag-controller-51659753.js → feature-flag-controller-09ea7e87.js} +7 -1
- package/dist/esm/{form-field-controller-slimmer-5d9dc384.js → form-field-controller-slimmer-5817d14d.js} +10 -11
- package/dist/esm/{internal-icon-manager-f0486245.js → icon-manager-539d7cf7.js} +2 -52
- package/dist/esm/{image-annotation-action-53529cd9.js → image-annotation-action-6701b4c9.js} +6 -5
- package/dist/esm/index-3b327f29.js +215 -0
- package/dist/esm/{index-e9da316f.js → index-bfc6dfa2.js} +13 -1
- package/dist/esm/index.js +32 -29
- package/dist/esm/{inject-keyboard-manager-83d76ff5.js → inject-keyboard-manager-78730062.js} +1 -1
- package/dist/esm/internal-icon-manager-bd80b3bb.js +53 -0
- package/dist/esm/{translation-96e5debd.js → internal-translation-controller-911515f9.js} +1 -93
- package/dist/esm/{internal-vega-event-manager-efb6786e.js → internal-vega-event-manager-32a3d848.js} +1 -1
- package/dist/esm/internal-vega-z-index-manager-7d2b54c3.js +178 -0
- package/dist/esm/{keyboard-manager-c92808d8.js → keyboard-manager-38934f94.js} +2 -2
- package/dist/esm/{keyboard-manager-slimmer-79c78ce8.js → keyboard-manager-slimmer-9984d922.js} +1 -1
- package/dist/esm/loader.js +27 -24
- package/dist/esm/misc-9fdbcfbb.js +37 -0
- package/dist/esm/{month-view-generator-16192182.js → month-view-generator-eaf9029c.js} +1 -1
- package/dist/esm/{page-resize-observer-slimmer-8744cb44.js → page-resize-observer-slimmer-d6af0d86.js} +2 -52
- package/dist/esm/{public-rules-6ebdfcf5.js → public-rules-25cc3a39.js} +13 -14
- package/dist/esm/{range-5257c062.js → range-663f44dc.js} +2 -2
- package/dist/esm/{responsive-format-facade-05e53016.js → responsive-format-facade-7a071174.js} +3 -12
- package/dist/esm/{rich-text-editor-required-rule-f63a37d1.js → rich-text-editor-required-rule-a238b862.js} +1 -1
- package/dist/esm/{string-format-strategy.abstract-fc60db79.js → string-format-strategy.abstract-713fba36.js} +1 -1
- package/dist/esm/{string-input-formatter-slimmer-ee32b1fd.js → string-input-formatter-slimmer-5b413ff9.js} +4 -4
- package/dist/esm/{string-mask-strategy-0b0accaa.js → string-mask-strategy-6beaf664.js} +2 -2
- package/dist/esm/{style-formatter-5f5bd714.js → style-formatter-3d06b72d.js} +2 -2
- package/dist/esm/{sub-state-notify-slimmer-4453047a.js → sub-state-notify-slimmer-5133f1a8.js} +2 -2
- package/dist/esm/{sub-state-observer-slimmer-202ec7dc.js → sub-state-observer-slimmer-478c9f41.js} +3 -3
- package/dist/esm/{time-required-rule-5fa43804.js → time-required-rule-e4138a76.js} +1 -1
- package/dist/esm/{function-extension-63028f20.js → token-extension-e33fd151.js} +488 -376
- package/dist/esm/{translation-slimmer-c936cb1b.js → translation-slimmer-2394b173.js} +1 -1
- package/dist/esm/{type-guard-c65a227d.js → type-guard-f50e34d6.js} +1 -1
- package/dist/esm/{ui-bb99c0c2.js → ui-ee31416b.js} +12 -0
- package/dist/esm/{valid-credit-card-number-rule-666c415d.js → valid-credit-card-number-rule-22ce81db.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +19 -28
- package/dist/esm/vega-app-footer.entry.js +3 -3
- package/dist/esm/vega-app-header-button.entry.js +174 -40
- package/dist/esm/vega-backdrop.entry.js +2 -2
- package/dist/esm/vega-banner.entry.js +12 -10
- package/dist/esm/vega-bar-chart.entry.js +1 -1
- package/dist/esm/vega-box.entry.js +14 -29
- package/dist/esm/vega-brand-logo.entry.js +7 -5
- package/dist/esm/vega-breadcrumb.entry.js +11 -10
- package/dist/esm/vega-button-circle.entry.js +19 -29
- package/dist/esm/vega-button-group_2.entry.js +12 -12
- package/dist/esm/vega-button-link.entry.js +13 -12
- package/dist/esm/vega-button.entry.js +19 -28
- package/dist/esm/vega-calendar_4.entry.js +23 -20
- package/dist/esm/vega-card.entry.js +9 -28
- package/dist/esm/vega-carousel.entry.js +14 -25
- package/dist/esm/vega-checkbox_2.entry.js +19 -17
- package/dist/esm/vega-chip.entry.js +18 -29
- package/dist/esm/vega-code-block.entry.js +653 -2704
- package/dist/esm/vega-color-picker.entry.js +15 -12
- package/dist/esm/vega-combo-box.entry.js +22 -21
- package/dist/esm/vega-counter-badge.entry.js +1 -1
- package/dist/esm/vega-date-picker_2.entry.js +34 -37
- package/dist/esm/vega-dialog-controller-bbb2fc52.js +82 -0
- package/dist/esm/vega-dialog_2.entry.js +23 -30
- package/dist/esm/vega-divider.entry.js +11 -29
- package/dist/esm/vega-dropdown_5.entry.js +39 -45
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-event-id-38aa77a0.js +113 -0
- package/dist/esm/vega-field-error.entry.js +1 -1
- package/dist/esm/vega-field-label.entry.js +7 -6
- package/dist/esm/vega-file-uploader.entry.js +19 -14
- package/dist/esm/vega-flag-icon.entry.js +12 -26
- package/dist/esm/vega-flex.entry.js +11 -28
- package/dist/esm/vega-font.entry.js +11 -28
- package/dist/esm/vega-form.entry.js +20 -18
- package/dist/esm/vega-grid.entry.js +9 -28
- package/dist/esm/vega-hint.entry.js +1 -1
- package/dist/esm/vega-icon.entry.js +15 -28
- package/dist/esm/vega-image-uploader.entry.js +28 -31
- package/dist/esm/vega-input-credit-card.entry.js +25 -21
- package/dist/esm/vega-input-numeric.entry.js +21 -19
- package/dist/esm/vega-input-passcode.entry.js +20 -18
- package/dist/esm/vega-input-phone-number.entry.js +27 -31
- package/dist/esm/vega-input-range.entry.js +19 -17
- package/dist/esm/vega-input-select.entry.js +27 -32
- package/dist/esm/vega-input.entry.js +33 -21
- package/dist/esm/{vega-internal-event-id-4a06d705.js → vega-internal-event-id-799d012e.js} +1 -1
- package/dist/esm/vega-item-toggle.entry.js +6 -5
- package/dist/esm/vega-left-nav_5.entry.js +29 -31
- package/dist/esm/vega-line-chart.entry.js +1 -1
- package/dist/esm/vega-loader-wrapper_2.entry.js +13 -29
- package/dist/esm/vega-page-notification_2.entry.js +4 -3
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +9 -9
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +7 -8
- package/dist/esm/vega-pagination.entry.js +20 -30
- package/dist/esm/vega-pie-chart.entry.js +1 -1
- package/dist/esm/vega-popover_2.entry.js +20 -30
- package/dist/esm/vega-progress-tracker_2.entry.js +64 -37
- package/dist/esm/vega-radio_2.entry.js +21 -19
- package/dist/esm/vega-rich-text-content.entry.js +18 -16
- package/dist/esm/vega-rich-text-editor_4.entry.js +90 -37
- package/dist/esm/vega-section-title.entry.js +1 -1
- package/dist/esm/vega-segment-control.entry.js +9 -7
- package/dist/esm/vega-selection-chip_2.entry.js +22 -29
- package/dist/esm/vega-selection-tile_2.entry.js +19 -17
- package/dist/esm/vega-sidenav_3.entry.js +24 -30
- package/dist/esm/vega-signature-capture.entry.js +24 -28
- package/dist/esm/vega-skeleton.entry.js +1 -1
- package/dist/esm/vega-slot-container.entry.js +1 -1
- package/dist/esm/vega-stepper.entry.js +18 -16
- package/dist/esm/vega-tab-group_2.entry.js +11 -10
- package/dist/esm/vega-table_11.entry.js +28 -29
- package/dist/esm/vega-text.entry.js +4 -3
- package/dist/esm/vega-textarea.entry.js +18 -16
- package/dist/esm/vega-time-picker_2.entry.js +26 -32
- package/dist/esm/vega-toggle-switch.entry.js +15 -12
- package/dist/esm/vega-tooltip_2.entry.js +18 -29
- package/dist/esm/vega.js +27 -24
- package/dist/esm/{index-51a7da7f.js → wait-for-component-did-render-b08ef07b.js} +3 -13
- package/dist/sri/vega-sri-manifest.json +415 -403
- package/dist/types/components/vega-app-footer/types.d.ts +18 -0
- package/dist/types/components/vega-app-header-button/types.d.ts +31 -0
- package/dist/types/components/vega-app-header-button/vega-app-header-button.d.ts +2 -0
- package/dist/types/components/vega-banner/types.d.ts +9 -0
- package/dist/types/components/vega-box/interface.d.ts +46 -0
- package/dist/types/components/vega-breadcrumb/types.d.ts +28 -0
- package/dist/types/components/vega-button/types.d.ts +12 -0
- package/dist/types/components/vega-button-circle/types.d.ts +9 -0
- package/dist/types/components/vega-button-group/types.d.ts +48 -0
- package/dist/types/components/vega-button-link/types.d.ts +3 -0
- package/dist/types/components/vega-calendar/types.d.ts +189 -0
- package/dist/types/components/vega-calendar/vega-calendar-event-preview/types.d.ts +6 -0
- package/dist/types/components/vega-chart/vega-bar-chart/types.d.ts +3 -0
- package/dist/types/components/vega-chip/types.d.ts +12 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/prism-code-highlight-parse-controller.d.ts +2 -10
- package/dist/types/components/vega-combo-box/types.d.ts +6 -0
- package/dist/types/components/vega-date-picker/types.d.ts +39 -0
- package/dist/types/components/vega-dialog/types.d.ts +5 -0
- package/dist/types/components/vega-divider/interface.d.ts +18 -0
- package/dist/types/components/vega-dropdown/types.d.ts +30 -0
- package/dist/types/components/vega-dropdown/vega-dropdown-item/types.d.ts +9 -1
- package/dist/types/components/vega-field-error/types.d.ts +12 -0
- package/dist/types/components/vega-field-label/types.d.ts +16 -0
- package/dist/types/components/vega-file-uploader/types.d.ts +12 -0
- package/dist/types/components/vega-font/types.d.ts +3 -0
- package/dist/types/components/vega-form/types.d.ts +45 -0
- package/dist/types/components/vega-image-uploader/types.d.ts +33 -1
- package/dist/types/components/vega-input/types.d.ts +31 -0
- package/dist/types/components/vega-input-phone-number/types.d.ts +15 -0
- package/dist/types/components/vega-input-range/types.d.ts +9 -0
- package/dist/types/components/vega-input-select/types.d.ts +45 -0
- package/dist/types/components/vega-item-toggle/types.d.ts +21 -0
- package/dist/types/components/vega-loading-indicator/types.d.ts +3 -0
- package/dist/types/components/vega-modal/types.d.ts +9 -0
- package/dist/types/components/vega-nav/interface.d.ts +108 -0
- package/dist/types/components/vega-page-notification/types.d.ts +15 -0
- package/dist/types/components/vega-pagination/types.d.ts +11 -0
- package/dist/types/components/vega-progress-tracker/slimmers/controllers/dto/internal-progress-tracker-step.d.ts +16 -4
- package/dist/types/components/vega-progress-tracker/type.d.ts +8 -0
- package/dist/types/components/vega-progress-tracker/vega-progress-tracker-step/vega-progress-tracker-step.d.ts +6 -0
- package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/dto/blocks/html-block.d.ts +10 -0
- package/dist/types/components/vega-rich-text-editor/interface.d.ts +473 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/html-content-cleaner-processor.interface.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/html-content-cleaner.d.ts +35 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/index.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/processors/remove-whitespace-after-opening-tag-processor.d.ts +19 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/processors/remove-whitespace-before-closing-tag-processor.d.ts +19 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/processors/remove-whitespace-between-tags-processor.d.ts +59 -0
- package/dist/types/components/vega-rich-text-editor/test/html-cleaner/html-content-cleaner.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/html-cleaner/remove-whitespace-after-opening-tag-processor.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/html-cleaner/remove-whitespace-before-closing-tag-processor.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/html-cleaner/remove-whitespace-between-tags-processor.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-image-editor/types.d.ts +24 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/types.d.ts +24 -0
- package/dist/types/components/vega-segment-control/types.d.ts +18 -0
- package/dist/types/components/vega-selection-chip/interface.d.ts +12 -0
- package/dist/types/components/vega-selection-chip/vega-selection-chip-group/interface.d.ts +4 -0
- package/dist/types/components/vega-selection-tile/interface.d.ts +9 -0
- package/dist/types/components/vega-sidenav/types.d.ts +51 -0
- package/dist/types/components/vega-signature-capture/types.d.ts +29 -2
- package/dist/types/components/vega-skeleton/interface.d.ts +6 -0
- package/dist/types/components/vega-tab-group/types.d.ts +36 -0
- package/dist/types/components/vega-table/interface.d.ts +237 -20
- package/dist/types/components/vega-table/vega-table-expand-row/types.d.ts +6 -0
- package/dist/types/components/vega-table/vega-table-foot/types.d.ts +9 -0
- package/dist/types/components/vega-table/vega-table-foot-row/types.d.ts +9 -0
- package/dist/types/components/vega-table/vega-table-head/types.d.ts +9 -0
- package/dist/types/components/vega-table/vega-table-head-row/types.d.ts +12 -0
- package/dist/types/components/vega-table/vega-table-row/types.d.ts +18 -0
- package/dist/types/components/vega-text/types.d.ts +6 -0
- package/dist/types/components/vega-time-picker/types.d.ts +33 -0
- package/dist/types/components/vega-virtual-scroll/types.d.ts +30 -1
- package/dist/types/components.d.ts +13 -3
- package/dist/types/helpers/code-format/code-formatter.d.ts +14 -0
- package/dist/types/helpers/common/index.d.ts +2 -15
- package/dist/types/helpers/common/wait-for-component-did-render.d.ts +8 -0
- package/dist/types/helpers/common/wait-for-vega-handler.d.ts +6 -15
- package/dist/types/helpers/feature-control/feature-flag.d.ts +2 -1
- package/dist/types/helpers/public-api.d.ts +0 -2
- package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +44 -0
- package/dist/types/helpers/slimmers/mutation-observer/test/aria-attributes-value-mapper.test.d.ts +1 -0
- package/dist/types/helpers/slimmers/position-calculation/base-position-calculation-strategy.d.ts +57 -48
- package/dist/types/helpers/slimmers/position-calculation/position-calculation-controller.d.ts +5 -0
- package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +41 -1
- package/dist/types/helpers/slimmers/position-calculation/screen-scroll-position-update.d.ts +39 -0
- package/dist/types/helpers/ui/element-appender.d.ts +0 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/polyfill/prism/index.d.ts +3 -0
- package/dist/types/polyfill/prism/languages/css.d.ts +6 -0
- package/dist/types/polyfill/prism/languages/javascript.d.ts +7 -0
- package/dist/types/polyfill/prism/languages/jsx.d.ts +7 -0
- package/dist/types/polyfill/prism/languages/language-registry.d.ts +8 -0
- package/dist/types/polyfill/prism/languages/markup.d.ts +6 -0
- package/dist/types/polyfill/prism/languages/tsx.d.ts +7 -0
- package/dist/types/polyfill/prism/languages/typescript.d.ts +2 -0
- package/dist/types/polyfill/prism/test/css.test.d.ts +1 -0
- package/dist/types/polyfill/prism/test/javascript.test.d.ts +1 -0
- package/dist/types/polyfill/prism/test/jsx.test.d.ts +1 -0
- package/dist/types/polyfill/prism/test/language-registry.test.d.ts +1 -0
- package/dist/types/polyfill/prism/test/markup.test.d.ts +1 -0
- package/dist/types/polyfill/prism/test/test-utils.d.ts +10 -0
- package/dist/types/polyfill/prism/test/tokenizer.test.d.ts +1 -0
- package/dist/types/polyfill/prism/test/tsx.test.d.ts +1 -0
- package/dist/types/polyfill/prism/test/typescript.test.d.ts +1 -0
- package/dist/types/polyfill/prism/tokenizer.d.ts +17 -0
- package/dist/types/polyfill/prism/types.d.ts +25 -0
- package/dist/types/polyfill/tinycolor/tinycolor-polyfill.d.ts +149 -0
- package/dist/types/polyfill/tinycolor/tinycolor-polyfill.test.d.ts +1 -0
- package/dist/types/types/components.type.d.ts +4 -1
- package/dist/types/types/design-token.type.d.ts +36 -0
- package/dist/types/types/flag.type.d.ts +3 -0
- package/dist/types/types/general.d.ts +12 -0
- package/dist/types/types/ui.type.d.ts +372 -0
- package/dist/types/types/vega-chart.d.ts +281 -2
- package/dist/types/utils/e2e-utils.d.ts +2 -0
- package/dist/types/utils/sanitize/constants/tag-sets.d.ts +6 -0
- package/dist/types/utils/sanitize/core/html-sanitizer.d.ts +22 -0
- package/dist/types/utils/sanitize/core/sanitize-strategy.d.ts +27 -0
- package/dist/types/utils/sanitize/core/types.d.ts +13 -0
- package/dist/types/utils/sanitize/index.d.ts +12 -0
- package/dist/types/utils/sanitize/strategies/empty-sanitize-strategy.d.ts +14 -0
- package/dist/types/utils/sanitize/strategies/index.d.ts +3 -0
- package/dist/types/utils/sanitize/strategies/label-sanitize-strategy.d.ts +10 -0
- package/dist/types/utils/sanitize/strategies/style-sanitize-strategy.d.ts +24 -0
- package/dist/types/utils/sanitize/test/empty-strategy.test.d.ts +1 -0
- package/dist/types/utils/sanitize/test/html-sanitizer.test.d.ts +1 -0
- package/dist/types/utils/sanitize/test/label-strategy.test.d.ts +1 -0
- package/dist/types/utils/sanitize/test/sanitize-strategy.test.d.ts +1 -0
- package/dist/types/utils/sanitize/test/sanitize.test.d.ts +1 -0
- package/dist/types/utils/sanitize/test/serialize-fragment.test.d.ts +1 -0
- package/dist/types/utils/sanitize/test/style-strategy.test.d.ts +1 -0
- package/dist/types/utils/sanitize/utils/serialize-fragment.d.ts +12 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/p-01d58eb8.entry.js +1 -0
- package/dist/vega/p-021d4ae4.js +1 -0
- package/dist/vega/p-02a7d60c.entry.js +1 -0
- package/dist/vega/{p-66fa700b.js → p-02c9796a.js} +1 -1
- package/dist/vega/p-033c31d8.entry.js +1 -0
- package/dist/vega/{p-e77a83e4.js → p-07cb0243.js} +1 -1
- package/dist/vega/p-087ea379.entry.js +1 -0
- package/dist/vega/{p-e5af5a4d.entry.js → p-0b4880bd.entry.js} +1 -1
- package/dist/vega/{p-920719ad.js → p-0e679d8c.js} +1 -1
- package/dist/vega/{p-c9b6b5a9.js → p-10734a00.js} +1 -1
- package/dist/vega/p-154f9cf7.entry.js +1 -0
- package/dist/vega/p-179aad4f.entry.js +1 -0
- package/dist/vega/p-1a3236e7.entry.js +1 -0
- package/dist/vega/p-1f3cd061.entry.js +1 -0
- package/dist/vega/p-1f5e35dc.entry.js +1 -0
- package/dist/vega/p-242fbcad.entry.js +1 -0
- package/dist/vega/p-249df6d2.entry.js +1 -0
- package/dist/vega/p-28ad1864.entry.js +1 -0
- package/dist/vega/p-2a10e2e5.js +1 -0
- package/dist/vega/p-2b49686d.entry.js +1 -0
- package/dist/vega/p-2ba78982.entry.js +1 -0
- package/dist/vega/p-2bb5a232.js +1 -0
- package/dist/vega/{p-e9b86dac.entry.js → p-2c1a85dd.entry.js} +1 -1
- package/dist/vega/p-2cc9d126.entry.js +1 -0
- package/dist/vega/p-2d69632d.js +1 -0
- package/dist/vega/p-2e91295d.entry.js +1 -0
- package/dist/vega/p-31ac7386.js +1 -0
- package/dist/vega/p-32033e7a.js +1 -0
- package/dist/vega/p-32183637.entry.js +1 -0
- package/dist/vega/p-3244c605.entry.js +1 -0
- package/dist/vega/p-32faa460.entry.js +1 -0
- package/dist/vega/p-33f9ad94.entry.js +1 -0
- package/dist/vega/{p-4897bedd.entry.js → p-358b4a06.entry.js} +1 -1
- package/dist/vega/p-3afc025e.entry.js +1 -0
- package/dist/vega/p-3d8122ab.entry.js +1 -0
- package/dist/vega/{p-ea04a387.entry.js → p-3f3c771a.entry.js} +1 -1
- package/dist/vega/{p-1f83cebf.js → p-415ffa35.js} +1 -1
- package/dist/vega/{p-d849e0f5.js → p-4415ad28.js} +1 -1
- package/dist/vega/{p-ce1a2982.js → p-464559e3.js} +1 -1
- package/dist/vega/p-49845a91.js +1 -0
- package/dist/vega/{p-e16b3adf.js → p-4bffdb28.js} +1 -1
- package/dist/vega/p-4e017458.entry.js +1 -0
- package/dist/vega/p-4e4a0228.entry.js +1 -0
- package/dist/vega/{p-a2aeb646.js → p-4ea30592.js} +1 -1
- package/dist/vega/{p-0b38a01f.entry.js → p-51fcb07f.entry.js} +1 -1
- package/dist/vega/p-57927b10.entry.js +1 -0
- package/dist/vega/p-5831d6d3.entry.js +1 -0
- package/dist/vega/p-593e0f80.js +1 -0
- package/dist/vega/p-5a25014f.js +1 -0
- package/dist/vega/p-5eb7f382.js +1 -0
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/p-644f701a.js +1 -0
- package/dist/vega/p-6a62e476.entry.js +1 -0
- package/dist/vega/{p-75f981ce.js → p-6b6f0fb4.js} +1 -1
- package/dist/vega/p-6d219c44.entry.js +1 -0
- package/dist/vega/p-6d60b66a.entry.js +1 -0
- package/dist/vega/{p-ad2055f4.entry.js → p-6dcdb580.entry.js} +1 -1
- package/dist/vega/{p-c8f1b9d5.js → p-7181861a.js} +1 -1
- package/dist/vega/p-76181a70.entry.js +1 -0
- package/dist/vega/p-781fd6e0.js +1 -0
- package/dist/vega/p-7958614a.entry.js +1 -0
- package/dist/vega/{p-5b71c85e.js → p-7c39ce96.js} +1 -1
- package/dist/vega/p-7d7aaff9.entry.js +1 -0
- package/dist/vega/{p-4dd6554e.entry.js → p-7f46cc1e.entry.js} +1 -1
- package/dist/vega/{p-badad9ed.js → p-81b044b9.js} +1 -1
- package/dist/vega/p-8950987b.entry.js +1 -0
- package/dist/vega/p-89f2e16d.entry.js +1 -0
- package/dist/vega/p-8ac2d165.js +1 -0
- package/dist/vega/p-8b153acd.entry.js +1 -0
- package/dist/vega/p-8b5d3a52.js +1 -0
- package/dist/vega/{p-fff13ed1.entry.js → p-8b891f36.entry.js} +1 -1
- package/dist/vega/p-8dbdd609.entry.js +1 -0
- package/dist/vega/{p-dd11f735.js → p-9339c6c4.js} +1 -1
- package/dist/vega/p-94a77fbe.entry.js +1 -0
- package/dist/vega/p-95528b47.js +1 -0
- package/dist/vega/p-9a137bab.entry.js +1 -0
- package/dist/vega/{p-6f8be8ea.js → p-a0b66c25.js} +1 -1
- package/dist/vega/{p-0bb3be0b.entry.js → p-a13a73fa.entry.js} +1 -1
- package/dist/vega/p-a560d8c5.entry.js +1 -0
- package/dist/vega/{p-d0e31633.js → p-a786259a.js} +1 -1
- package/dist/vega/p-a7a8a4eb.entry.js +1 -0
- package/dist/vega/p-a8792e3d.js +1 -0
- package/dist/vega/{p-60851f9d.js → p-aa1174dc.js} +1 -1
- package/dist/vega/p-ab834f06.js +1 -0
- package/dist/vega/p-b136ebba.entry.js +1 -0
- package/dist/vega/p-b201f379.js +1 -0
- package/dist/vega/p-b256b7a4.js +1 -0
- package/dist/vega/p-b366deff.entry.js +1 -0
- package/dist/vega/p-b597393b.entry.js +1 -0
- package/dist/vega/p-b7f3221f.js +1 -0
- package/dist/vega/p-bb5e0192.entry.js +1 -0
- package/dist/vega/p-be1a210b.js +1 -0
- package/dist/vega/p-bebfbe95.entry.js +1 -0
- package/dist/vega/p-bf6fc19f.entry.js +1 -0
- package/dist/vega/p-c1d13eec.entry.js +1 -0
- package/dist/vega/p-c29068fb.entry.js +1 -0
- package/dist/vega/p-c3d2f316.js +1 -0
- package/dist/vega/{p-671afda4.entry.js → p-c72e08c6.entry.js} +1 -1
- package/dist/vega/p-c801c85d.js +1 -0
- package/dist/vega/p-c8feb644.entry.js +1 -0
- package/dist/vega/p-ca5898dc.entry.js +1 -0
- package/dist/vega/p-d555f677.entry.js +1 -0
- package/dist/vega/p-d64fab3d.js +1 -0
- package/dist/vega/p-d6dbbe61.entry.js +1 -0
- package/dist/vega/p-d7a78c5e.entry.js +1 -0
- package/dist/vega/p-d8fadcdc.entry.js +1 -0
- package/dist/vega/p-dad3ba5f.js +1 -0
- package/dist/vega/p-dd3a94f4.entry.js +1 -0
- package/dist/vega/p-e1431c14.entry.js +1 -0
- package/dist/vega/p-e1fbfd20.js +1 -0
- package/dist/vega/p-e2af0e24.entry.js +1 -0
- package/dist/vega/{p-521d1d07.js → p-e52890db.js} +1 -1
- package/dist/vega/{p-1298b126.js → p-e632475e.js} +1 -1
- package/dist/vega/p-e6adf829.js +1 -0
- package/dist/vega/{p-77edf50c.js → p-e827d56d.js} +1 -1
- package/dist/vega/p-e8775a56.entry.js +1 -0
- package/dist/vega/p-e89e3ede.entry.js +1 -0
- package/dist/vega/p-eda988d5.entry.js +1 -0
- package/dist/vega/p-f05b8f76.entry.js +1 -0
- package/dist/vega/p-f0e828d8.js +1 -0
- package/dist/vega/p-f14a5eae.entry.js +1 -0
- package/dist/vega/p-f2b0b58a.js +1 -0
- package/dist/vega/p-f3d0f2dc.js +1 -0
- package/dist/vega/{p-5910be31.entry.js → p-f5bafc45.entry.js} +1 -1
- package/dist/vega/p-fc1fa345.js +1 -0
- package/dist/vega/p-fd7ddd64.entry.js +1 -0
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +3 -5
- package/dist/cjs/_commonjsHelpers-537d719a.js +0 -20
- package/dist/cjs/language-extension-38e4905e.js +0 -210
- package/dist/cjs/sanitize-fb222510.js +0 -131
- package/dist/cjs/wait-for-vega-handler-5469ff80.js +0 -63
- package/dist/collection/utils/sanitize.js +0 -126
- package/dist/collection/utils/test/sanitize.test.js +0 -65
- package/dist/esm/_commonjsHelpers-9943807e.js +0 -17
- package/dist/esm/dom-node-subject-observer-factory-064ee2b2.js +0 -250
- package/dist/esm/language-extension-c4ff21dd.js +0 -207
- package/dist/esm/sanitize-fd0cb40d.js +0 -129
- package/dist/esm/wait-for-vega-handler-c2c07ac3.js +0 -61
- package/dist/types/utils/sanitize.d.ts +0 -71
- package/dist/vega/p-011b94b1.entry.js +0 -1
- package/dist/vega/p-06aaced4.js +0 -1
- package/dist/vega/p-07d3df01.entry.js +0 -1
- package/dist/vega/p-08f18b22.entry.js +0 -1
- package/dist/vega/p-10ac8b57.js +0 -1
- package/dist/vega/p-112455b1.js +0 -1
- package/dist/vega/p-17c55205.entry.js +0 -1
- package/dist/vega/p-1e0d8228.entry.js +0 -1
- package/dist/vega/p-20ad42be.js +0 -1
- package/dist/vega/p-22b2841f.entry.js +0 -1
- package/dist/vega/p-22c5d83b.js +0 -1
- package/dist/vega/p-34246870.entry.js +0 -1
- package/dist/vega/p-35bf5789.entry.js +0 -1
- package/dist/vega/p-3bbc0c7d.entry.js +0 -1
- package/dist/vega/p-3bf66be2.js +0 -1
- package/dist/vega/p-3c5a28e4.entry.js +0 -1
- package/dist/vega/p-3cfd8616.entry.js +0 -1
- package/dist/vega/p-3e5f362f.js +0 -1
- package/dist/vega/p-43f585f7.entry.js +0 -1
- package/dist/vega/p-476a173a.js +0 -1
- package/dist/vega/p-4a537391.entry.js +0 -1
- package/dist/vega/p-509eb52e.entry.js +0 -1
- package/dist/vega/p-50ab977c.entry.js +0 -1
- package/dist/vega/p-53a694d1.entry.js +0 -1
- package/dist/vega/p-56e97df8.js +0 -1
- package/dist/vega/p-5a27084e.entry.js +0 -1
- package/dist/vega/p-5d676a94.js +0 -1
- package/dist/vega/p-5df9a856.entry.js +0 -1
- package/dist/vega/p-5ea2e43c.entry.js +0 -1
- package/dist/vega/p-60274fb1.js +0 -1
- package/dist/vega/p-60da99c6.entry.js +0 -1
- package/dist/vega/p-67f18b9e.entry.js +0 -1
- package/dist/vega/p-67fcf6f2.entry.js +0 -9
- package/dist/vega/p-6a2205a1.entry.js +0 -1
- package/dist/vega/p-6a4277df.entry.js +0 -1
- package/dist/vega/p-6e136980.js +0 -1
- package/dist/vega/p-6f239144.entry.js +0 -1
- package/dist/vega/p-7045e84c.entry.js +0 -1
- package/dist/vega/p-7288f8c4.js +0 -1
- package/dist/vega/p-747d6afc.entry.js +0 -1
- package/dist/vega/p-75651f32.entry.js +0 -1
- package/dist/vega/p-7ae55fd5.js +0 -1
- package/dist/vega/p-81134e9e.entry.js +0 -1
- package/dist/vega/p-87238c4c.entry.js +0 -1
- package/dist/vega/p-8a887843.entry.js +0 -1
- package/dist/vega/p-8c0eb12f.entry.js +0 -1
- package/dist/vega/p-8c9ea6f4.js +0 -1
- package/dist/vega/p-8d0ca805.js +0 -1
- package/dist/vega/p-8e42a14c.entry.js +0 -1
- package/dist/vega/p-91ec2e30.js +0 -1
- package/dist/vega/p-94394df7.entry.js +0 -1
- package/dist/vega/p-991008a8.entry.js +0 -1
- package/dist/vega/p-9fd503e9.entry.js +0 -1
- package/dist/vega/p-a20854d6.entry.js +0 -1
- package/dist/vega/p-a4670e23.js +0 -1
- package/dist/vega/p-a530797f.entry.js +0 -1
- package/dist/vega/p-a5bd3c15.entry.js +0 -1
- package/dist/vega/p-a65941d0.entry.js +0 -1
- package/dist/vega/p-a85ad369.entry.js +0 -1
- package/dist/vega/p-a86010f7.entry.js +0 -1
- package/dist/vega/p-aa10eeb3.entry.js +0 -1
- package/dist/vega/p-ab2f35af.entry.js +0 -1
- package/dist/vega/p-ac4563d7.js +0 -1
- package/dist/vega/p-aedf7146.js +0 -1
- package/dist/vega/p-b4ea3fad.js +0 -1
- package/dist/vega/p-bb4a558d.entry.js +0 -1
- package/dist/vega/p-bb8339ed.entry.js +0 -1
- package/dist/vega/p-be930e85.entry.js +0 -1
- package/dist/vega/p-bf2bd6d0.entry.js +0 -1
- package/dist/vega/p-c379a5a5.entry.js +0 -1
- package/dist/vega/p-c616c592.js +0 -1
- package/dist/vega/p-ca3472c1.entry.js +0 -1
- package/dist/vega/p-cc43bffb.js +0 -1
- package/dist/vega/p-d6ed3d76.entry.js +0 -1
- package/dist/vega/p-db8cdba6.js +0 -1
- package/dist/vega/p-e1610196.entry.js +0 -1
- package/dist/vega/p-e87b0b4a.entry.js +0 -1
- package/dist/vega/p-e9c4fd24.entry.js +0 -1
- package/dist/vega/p-eb60cfe1.entry.js +0 -1
- package/dist/vega/p-ef001c70.entry.js +0 -1
- package/dist/vega/p-ef9cbad1.js +0 -1
- package/dist/vega/p-f383c856.js +0 -1
- package/dist/vega/p-f3c3ff26.entry.js +0 -1
- package/dist/vega/p-f52a0155.entry.js +0 -1
- package/dist/vega/p-f69f84a7.js +0 -1
- package/dist/vega/p-f8f7cf48.entry.js +0 -1
- package/dist/vega/p-fba14ad2.entry.js +0 -1
- package/dist/vega/p-fbd64f9c.entry.js +0 -1
- package/dist/vega/p-fdc270b8.entry.js +0 -1
- package/dist/vega/p-fe12eff6.js +0 -1
- package/dist/vega/p-ffbff9b5.entry.js +0 -1
- /package/dist/{types/utils/test/sanitize.test.d.ts → collection/components/vega-rich-text-editor/slimmers/controllers/html-cleaner/html-content-cleaner-processor.interface.js} +0 -0
- /package/dist/vega/{p-d9671d27.js → p-6c170474.js} +0 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { tokenize } from '../tokenizer';
|
|
2
|
+
describe('Syntax Highlight Tokenizer', () => {
|
|
3
|
+
describe('tokenize', () => {
|
|
4
|
+
it('should return the original string when grammar is not provided', () => {
|
|
5
|
+
const result = tokenize('hello world', undefined);
|
|
6
|
+
expect(result).toEqual(['hello world']);
|
|
7
|
+
});
|
|
8
|
+
it('should return the original string when code is empty', () => {
|
|
9
|
+
const result = tokenize('', { keyword: { pattern: /\bvar\b/ } });
|
|
10
|
+
expect(result).toEqual(['']);
|
|
11
|
+
});
|
|
12
|
+
it('should tokenize a simple keyword', () => {
|
|
13
|
+
const grammar = {
|
|
14
|
+
keyword: { pattern: /\bvar\b/ },
|
|
15
|
+
};
|
|
16
|
+
const result = tokenize('var x = 1', grammar);
|
|
17
|
+
expect(result.length).toBe(2);
|
|
18
|
+
expect(result[0].type).toBe('keyword');
|
|
19
|
+
expect(result[0].content).toBe('var');
|
|
20
|
+
expect(result[1]).toBe(' x = 1');
|
|
21
|
+
});
|
|
22
|
+
it('should tokenize multiple keywords in a string', () => {
|
|
23
|
+
const grammar = {
|
|
24
|
+
keyword: { pattern: /\b(?:var|let|const)\b/ },
|
|
25
|
+
};
|
|
26
|
+
const result = tokenize('var x; let y; const z;', grammar);
|
|
27
|
+
const keywords = result.filter((t) => typeof t !== 'string' && t.type === 'keyword');
|
|
28
|
+
expect(keywords.length).toBe(3);
|
|
29
|
+
expect(keywords[0].content).toBe('var');
|
|
30
|
+
expect(keywords[1].content).toBe('let');
|
|
31
|
+
expect(keywords[2].content).toBe('const');
|
|
32
|
+
});
|
|
33
|
+
it('should handle multiple grammar rules', () => {
|
|
34
|
+
const grammar = {
|
|
35
|
+
keyword: { pattern: /\b(?:var|let|const)\b/ },
|
|
36
|
+
number: { pattern: /\b\d+\b/ },
|
|
37
|
+
};
|
|
38
|
+
const result = tokenize('var x = 42', grammar);
|
|
39
|
+
const tokens = result.filter((t) => typeof t !== 'string');
|
|
40
|
+
expect(tokens.length).toBe(2);
|
|
41
|
+
expect(tokens[0].type).toBe('keyword');
|
|
42
|
+
expect(tokens[0].content).toBe('var');
|
|
43
|
+
expect(tokens[1].type).toBe('number');
|
|
44
|
+
expect(tokens[1].content).toBe('42');
|
|
45
|
+
});
|
|
46
|
+
it('should handle greedy matching', () => {
|
|
47
|
+
const grammar = {
|
|
48
|
+
string: {
|
|
49
|
+
pattern: /(["'])(?:\\[\s\S]|(?!\1)[^\\\n\r])*\1/,
|
|
50
|
+
greedy: true,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
const result = tokenize('"hello world"', grammar);
|
|
54
|
+
expect(result.length).toBe(1);
|
|
55
|
+
expect(result[0].type).toBe('string');
|
|
56
|
+
expect(result[0].content).toBe('"hello world"');
|
|
57
|
+
});
|
|
58
|
+
it('should handle lookbehind patterns', () => {
|
|
59
|
+
const grammar = {
|
|
60
|
+
function: {
|
|
61
|
+
pattern: /(\b)(\w+)(?=\s*\()/,
|
|
62
|
+
lookbehind: true,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
const result = tokenize('call foo()', grammar);
|
|
66
|
+
const funcTokens = result.filter((t) => typeof t !== 'string' && t.type === 'function');
|
|
67
|
+
expect(funcTokens.length).toBeGreaterThanOrEqual(1);
|
|
68
|
+
});
|
|
69
|
+
it('should handle array of patterns for a single token type', () => {
|
|
70
|
+
const grammar = {
|
|
71
|
+
comment: [
|
|
72
|
+
{ pattern: /\/\/.*/, greedy: true },
|
|
73
|
+
{ pattern: /\/\*[\s\S]*?\*\//, greedy: true },
|
|
74
|
+
],
|
|
75
|
+
};
|
|
76
|
+
const singleLineResult = tokenize('x = 1; // comment', grammar);
|
|
77
|
+
const multiLineResult = tokenize('x = 1; /* block */', grammar);
|
|
78
|
+
const singleComments = singleLineResult.filter((t) => typeof t !== 'string' && t.type === 'comment');
|
|
79
|
+
const multiComments = multiLineResult.filter((t) => typeof t !== 'string' && t.type === 'comment');
|
|
80
|
+
expect(singleComments.length).toBe(1);
|
|
81
|
+
expect(multiComments.length).toBe(1);
|
|
82
|
+
});
|
|
83
|
+
it('should handle nested grammar via inside property', () => {
|
|
84
|
+
const grammar = {
|
|
85
|
+
'template-string': {
|
|
86
|
+
pattern: /`[^`]*`/,
|
|
87
|
+
greedy: true,
|
|
88
|
+
inside: {
|
|
89
|
+
'template-punctuation': { pattern: /^`|`$/ },
|
|
90
|
+
'string': { pattern: /[\s\S]+/ },
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
const result = tokenize('`hello`', grammar);
|
|
95
|
+
expect(result.length).toBe(1);
|
|
96
|
+
const templateToken = result[0];
|
|
97
|
+
expect(templateToken.type).toBe('template-string');
|
|
98
|
+
expect(Array.isArray(templateToken.content)).toBe(true);
|
|
99
|
+
});
|
|
100
|
+
it('should preserve unmatched text as plain strings', () => {
|
|
101
|
+
const grammar = {
|
|
102
|
+
keyword: { pattern: /\bvar\b/ },
|
|
103
|
+
};
|
|
104
|
+
const result = tokenize('var x = hello', grammar);
|
|
105
|
+
const strings = result.filter((t) => typeof t === 'string');
|
|
106
|
+
expect(strings.length).toBe(1);
|
|
107
|
+
expect(strings[0]).toBe(' x = hello');
|
|
108
|
+
});
|
|
109
|
+
it('should handle code with no matches', () => {
|
|
110
|
+
const grammar = {
|
|
111
|
+
keyword: { pattern: /\bxyz\b/ },
|
|
112
|
+
};
|
|
113
|
+
const result = tokenize('hello world', grammar);
|
|
114
|
+
expect(result).toEqual(['hello world']);
|
|
115
|
+
});
|
|
116
|
+
it('greedy string patterns should prevent keywords inside strings from being tokenized', () => {
|
|
117
|
+
const grammar = {
|
|
118
|
+
string: {
|
|
119
|
+
pattern: /(["'])(?:\\[\s\S]|(?!\1)[^\\\n\r])*\1/,
|
|
120
|
+
greedy: true,
|
|
121
|
+
},
|
|
122
|
+
keyword: { pattern: /\b(?:var|let|const|function|return)\b/ },
|
|
123
|
+
};
|
|
124
|
+
const code = 'var x = "function return let"';
|
|
125
|
+
const result = tokenize(code, grammar);
|
|
126
|
+
const keywords = result.filter((t) => typeof t !== 'string' && t.type === 'keyword');
|
|
127
|
+
const strings = result.filter((t) => typeof t !== 'string' && t.type === 'string');
|
|
128
|
+
// Only 'var' should be a keyword; keywords inside the string should NOT be tokenized
|
|
129
|
+
expect(keywords.length).toBe(1);
|
|
130
|
+
expect(keywords[0].content).toBe('var');
|
|
131
|
+
expect(strings.length).toBe(1);
|
|
132
|
+
expect(strings[0].content).toBe('"function return let"');
|
|
133
|
+
});
|
|
134
|
+
it('greedy comment patterns should prevent tokens inside comments from being tokenized', () => {
|
|
135
|
+
const grammar = {
|
|
136
|
+
comment: {
|
|
137
|
+
pattern: /\/\*[\s\S]*?\*\//,
|
|
138
|
+
greedy: true,
|
|
139
|
+
},
|
|
140
|
+
keyword: { pattern: /\b(?:var|let|const)\b/ },
|
|
141
|
+
number: { pattern: /\b\d+\b/ },
|
|
142
|
+
};
|
|
143
|
+
const code = 'var x = 1; /* let y = 42 */';
|
|
144
|
+
const result = tokenize(code, grammar);
|
|
145
|
+
const keywords = result.filter((t) => typeof t !== 'string' && t.type === 'keyword');
|
|
146
|
+
const numbers = result.filter((t) => typeof t !== 'string' && t.type === 'number');
|
|
147
|
+
const comments = result.filter((t) => typeof t !== 'string' && t.type === 'comment');
|
|
148
|
+
expect(keywords.length).toBe(1);
|
|
149
|
+
expect(keywords[0].content).toBe('var');
|
|
150
|
+
expect(numbers.length).toBe(1);
|
|
151
|
+
expect(numbers[0].content).toBe('1');
|
|
152
|
+
expect(comments.length).toBe(1);
|
|
153
|
+
expect(comments[0].content).toBe('/* let y = 42 */');
|
|
154
|
+
});
|
|
155
|
+
it('multiple greedy patterns should not interfere with each other', () => {
|
|
156
|
+
const grammar = {
|
|
157
|
+
string: {
|
|
158
|
+
pattern: /(["'])(?:\\[\s\S]|(?!\1)[^\\\n\r])*\1/,
|
|
159
|
+
greedy: true,
|
|
160
|
+
},
|
|
161
|
+
comment: {
|
|
162
|
+
pattern: /\/\/.*|\/\*[\s\S]*?\*\//,
|
|
163
|
+
greedy: true,
|
|
164
|
+
},
|
|
165
|
+
keyword: { pattern: /\b(?:var|let|const)\b/ },
|
|
166
|
+
};
|
|
167
|
+
const code = 'var x = "hello"; // let y';
|
|
168
|
+
const result = tokenize(code, grammar);
|
|
169
|
+
const keywords = result.filter((t) => typeof t !== 'string' && t.type === 'keyword');
|
|
170
|
+
const strings = result.filter((t) => typeof t !== 'string' && t.type === 'string');
|
|
171
|
+
const comments = result.filter((t) => typeof t !== 'string' && t.type === 'comment');
|
|
172
|
+
expect(keywords.length).toBe(1);
|
|
173
|
+
expect(keywords[0].content).toBe('var');
|
|
174
|
+
expect(strings.length).toBe(1);
|
|
175
|
+
expect(strings[0].content).toBe('"hello"');
|
|
176
|
+
expect(comments.length).toBe(1);
|
|
177
|
+
expect(comments[0].content).toBe('// let y');
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
});
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { tokenize } from '../tokenizer';
|
|
2
|
+
import { tsxGrammar } from '../languages/tsx';
|
|
3
|
+
import { findTokensByType } from './test-utils';
|
|
4
|
+
describe('TSX Language Grammar', () => {
|
|
5
|
+
it('should tokenize JSX tags in TSX', () => {
|
|
6
|
+
const code = '<div>Hello</div>';
|
|
7
|
+
const tokens = tokenize(code, tsxGrammar);
|
|
8
|
+
const tags = findTokensByType(tokens, 'tag');
|
|
9
|
+
expect(tags.length).toBe(2);
|
|
10
|
+
});
|
|
11
|
+
it('should tokenize TypeScript keywords in TSX', () => {
|
|
12
|
+
const code = 'interface Props { name: string; }';
|
|
13
|
+
const tokens = tokenize(code, tsxGrammar);
|
|
14
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
15
|
+
const interfaceKw = keywords.find((t) => t.content === 'interface');
|
|
16
|
+
expect(interfaceKw).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
it('should tokenize TypeScript builtin types in TSX', () => {
|
|
19
|
+
const code = 'const x: number = 42;';
|
|
20
|
+
const tokens = tokenize(code, tsxGrammar);
|
|
21
|
+
const builtins = findTokensByType(tokens, 'builtin');
|
|
22
|
+
expect(builtins.length).toBeGreaterThanOrEqual(1);
|
|
23
|
+
});
|
|
24
|
+
it('should tokenize a typed TSX component', () => {
|
|
25
|
+
const code = `const App: React.FC<Props> = ({ name }) => {
|
|
26
|
+
return <div>{name}</div>;
|
|
27
|
+
};`;
|
|
28
|
+
const tokens = tokenize(code, tsxGrammar);
|
|
29
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
30
|
+
const tags = findTokensByType(tokens, 'tag');
|
|
31
|
+
expect(keywords.length).toBeGreaterThanOrEqual(2);
|
|
32
|
+
// 3 tags: <Props> (generic false positive), <div>, </div>
|
|
33
|
+
expect(tags.length).toBe(3);
|
|
34
|
+
});
|
|
35
|
+
it('should tokenize TSX with generics and JSX', () => {
|
|
36
|
+
const code = `function useHook<T>(initial: T): T {
|
|
37
|
+
return initial;
|
|
38
|
+
}`;
|
|
39
|
+
const tokens = tokenize(code, tsxGrammar);
|
|
40
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
41
|
+
expect(keywords.length).toBeGreaterThanOrEqual(2);
|
|
42
|
+
});
|
|
43
|
+
it('should tokenize enum in TSX', () => {
|
|
44
|
+
const code = 'enum Direction { Up, Down, Left, Right }';
|
|
45
|
+
const tokens = tokenize(code, tsxGrammar);
|
|
46
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
47
|
+
const enumKw = keywords.find((t) => t.content === 'enum');
|
|
48
|
+
expect(enumKw).toBeDefined();
|
|
49
|
+
});
|
|
50
|
+
it('should tokenize function names before parentheses in TSX', () => {
|
|
51
|
+
const code = `interface MyComponentProps {
|
|
52
|
+
name: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function MyComponent({ name }: MyComponentProps) {
|
|
56
|
+
return (
|
|
57
|
+
<h1>Hello, {name}!</h1>
|
|
58
|
+
);
|
|
59
|
+
}`;
|
|
60
|
+
const tokens = tokenize(code, tsxGrammar);
|
|
61
|
+
const functions = findTokensByType(tokens, 'function');
|
|
62
|
+
const myComponent = functions.find((t) => t.content === 'MyComponent');
|
|
63
|
+
expect(myComponent).toBeDefined();
|
|
64
|
+
});
|
|
65
|
+
it('should tokenize complete TSX component with types', () => {
|
|
66
|
+
const code = `interface CardProps {
|
|
67
|
+
title: string;
|
|
68
|
+
count: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const Card: React.FC<CardProps> = ({ title, count }) => {
|
|
72
|
+
return (
|
|
73
|
+
<div className="card">
|
|
74
|
+
<h1>{title}</h1>
|
|
75
|
+
<span>{count}</span>
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
};`;
|
|
79
|
+
const tokens = tokenize(code, tsxGrammar);
|
|
80
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
81
|
+
const builtins = findTokensByType(tokens, 'builtin');
|
|
82
|
+
const tags = findTokensByType(tokens, 'tag');
|
|
83
|
+
expect(keywords.length).toBeGreaterThanOrEqual(2);
|
|
84
|
+
expect(builtins.length).toBeGreaterThanOrEqual(2);
|
|
85
|
+
expect(tags.length).toBeGreaterThan(0);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { tokenize } from '../tokenizer';
|
|
2
|
+
import { typescriptGrammar } from '../languages/typescript';
|
|
3
|
+
import { findTokensByType } from './test-utils';
|
|
4
|
+
describe('TypeScript Language Grammar', () => {
|
|
5
|
+
it('should tokenize TypeScript-specific keywords', () => {
|
|
6
|
+
const code = 'interface Foo { bar: string; }';
|
|
7
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
8
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
9
|
+
const interfaceKw = keywords.find((t) => t.content === 'interface');
|
|
10
|
+
expect(interfaceKw).toBeDefined();
|
|
11
|
+
});
|
|
12
|
+
it('should tokenize type annotations with builtin types', () => {
|
|
13
|
+
const code = 'const x: number = 42;';
|
|
14
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
15
|
+
const builtins = findTokensByType(tokens, 'builtin');
|
|
16
|
+
expect(builtins.length).toBeGreaterThanOrEqual(1);
|
|
17
|
+
});
|
|
18
|
+
it('should tokenize enum declarations', () => {
|
|
19
|
+
const code = 'enum Color { Red, Green, Blue }';
|
|
20
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
21
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
22
|
+
const enumKw = keywords.find((t) => t.content === 'enum');
|
|
23
|
+
expect(enumKw).toBeDefined();
|
|
24
|
+
});
|
|
25
|
+
it('should tokenize access modifiers', () => {
|
|
26
|
+
const code = 'class Foo { private bar: string; protected baz: number; public qux: boolean; }';
|
|
27
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
28
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
29
|
+
const privateKw = keywords.find((t) => t.content === 'private');
|
|
30
|
+
const protectedKw = keywords.find((t) => t.content === 'protected');
|
|
31
|
+
const publicKw = keywords.find((t) => t.content === 'public');
|
|
32
|
+
expect(privateKw).toBeDefined();
|
|
33
|
+
expect(protectedKw).toBeDefined();
|
|
34
|
+
expect(publicKw).toBeDefined();
|
|
35
|
+
});
|
|
36
|
+
it('should tokenize readonly keyword', () => {
|
|
37
|
+
const code = 'readonly name: string;';
|
|
38
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
39
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
40
|
+
const readonlyKw = keywords.find((t) => t.content === 'readonly');
|
|
41
|
+
expect(readonlyKw).toBeDefined();
|
|
42
|
+
});
|
|
43
|
+
it('should tokenize type keyword', () => {
|
|
44
|
+
const code = 'type Result = string | number;';
|
|
45
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
46
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
47
|
+
const typeKw = keywords.find((t) => t.content === 'type');
|
|
48
|
+
expect(typeKw).toBeDefined();
|
|
49
|
+
});
|
|
50
|
+
it('should tokenize builtin types', () => {
|
|
51
|
+
const code = 'let a: string; let b: number; let c: boolean; let d: void;';
|
|
52
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
53
|
+
const builtins = findTokensByType(tokens, 'builtin');
|
|
54
|
+
expect(builtins.length).toBe(4);
|
|
55
|
+
});
|
|
56
|
+
it('should still tokenize JS-inherited features', () => {
|
|
57
|
+
const code = 'const fn = async () => { await fetch(url); };';
|
|
58
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
59
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
60
|
+
const constKw = keywords.find((t) => t.content === 'const');
|
|
61
|
+
const asyncKw = keywords.find((t) => t.content === 'async');
|
|
62
|
+
const awaitKw = keywords.find((t) => t.content === 'await');
|
|
63
|
+
expect(constKw).toBeDefined();
|
|
64
|
+
expect(asyncKw).toBeDefined();
|
|
65
|
+
expect(awaitKw).toBeDefined();
|
|
66
|
+
});
|
|
67
|
+
it('should tokenize a complete TypeScript interface', () => {
|
|
68
|
+
const code = `interface User {
|
|
69
|
+
name: string;
|
|
70
|
+
age: number;
|
|
71
|
+
isActive: boolean;
|
|
72
|
+
}`;
|
|
73
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
74
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
75
|
+
const builtins = findTokensByType(tokens, 'builtin');
|
|
76
|
+
expect(keywords.length).toBeGreaterThanOrEqual(1);
|
|
77
|
+
expect(builtins.length).toBe(3);
|
|
78
|
+
});
|
|
79
|
+
it('should tokenize namespace keyword', () => {
|
|
80
|
+
const code = 'namespace MyNamespace { }';
|
|
81
|
+
const tokens = tokenize(code, typescriptGrammar);
|
|
82
|
+
const keywords = findTokensByType(tokens, 'keyword');
|
|
83
|
+
const namespaceKw = keywords.find((t) => t.content === 'namespace');
|
|
84
|
+
expect(namespaceKw).toBeDefined();
|
|
85
|
+
});
|
|
86
|
+
});
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unique placeholder used to mark greedy-matched regions so they are not
|
|
3
|
+
* re-tokenized by later grammar rules. The surrounding curly-brace pairs
|
|
4
|
+
* make an accidental collision with real source code extremely unlikely.
|
|
5
|
+
*/
|
|
6
|
+
const GREEDY_PLACEHOLDER = '\x00GREEDY_PLACEHOLDER\x00';
|
|
7
|
+
/**
|
|
8
|
+
* Core tokenizer that converts source code into syntax tokens based on a grammar definition.
|
|
9
|
+
* This is a local replacement for Prism tokenize.
|
|
10
|
+
*
|
|
11
|
+
* The tokenizer works by:
|
|
12
|
+
* 1. Pre-processing greedy patterns to claim their matched regions first
|
|
13
|
+
* 2. Iterating through all grammar rules in order
|
|
14
|
+
* 3. Finding regex matches in the source text
|
|
15
|
+
* 4. Splitting the text into matched (typed) and unmatched (plain) segments
|
|
16
|
+
* 5. Recursively tokenizing nested content when an `inside` grammar is specified
|
|
17
|
+
*
|
|
18
|
+
* @param {string} code - The source code string to tokenize.
|
|
19
|
+
* @param {Grammar} grammar - The grammar rules to apply for tokenization.
|
|
20
|
+
* @returns {(string | SyntaxToken)[]} An array of plain strings and syntax tokens.
|
|
21
|
+
*/
|
|
22
|
+
export function tokenize(code, grammar) {
|
|
23
|
+
if (!code || !grammar) {
|
|
24
|
+
return [code];
|
|
25
|
+
}
|
|
26
|
+
const tokens = [code];
|
|
27
|
+
matchGrammar(tokens, grammar);
|
|
28
|
+
return tokens;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Apply grammar rules to tokenize string entries in the token list.
|
|
32
|
+
* Greedy patterns are applied first: their matched regions are replaced with
|
|
33
|
+
* opaque placeholder tokens so that subsequent (non-greedy) rules cannot
|
|
34
|
+
* match inside those regions. After all rules have run the placeholders are
|
|
35
|
+
* restored to the original matched text.
|
|
36
|
+
*
|
|
37
|
+
* @param {(string | SyntaxToken)[]} tokens - The current token list to process in-place.
|
|
38
|
+
* @param {Grammar} grammar - The grammar rules to apply.
|
|
39
|
+
*/
|
|
40
|
+
function matchGrammar(tokens, grammar) {
|
|
41
|
+
const greedyEntries = [];
|
|
42
|
+
const nonGreedyEntries = [];
|
|
43
|
+
for (const tokenType of Object.keys(grammar)) {
|
|
44
|
+
const grammarEntry = grammar[tokenType];
|
|
45
|
+
const patterns = Array.isArray(grammarEntry) ? grammarEntry : [grammarEntry];
|
|
46
|
+
for (const patternDef of patterns) {
|
|
47
|
+
if (patternDef.greedy) {
|
|
48
|
+
greedyEntries.push({ tokenType, patternDef });
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
nonGreedyEntries.push({ tokenType, patternDef });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// --- Phase 1: Apply greedy patterns first --------------------------------
|
|
56
|
+
// Greedy patterns claim regions of the source text exclusively.
|
|
57
|
+
// We replace matched regions with a placeholder string of equal length so
|
|
58
|
+
// that character offsets remain stable. Each greedy match is recorded so
|
|
59
|
+
// we can later restore the original text inside the token.
|
|
60
|
+
if (greedyEntries.length > 0) {
|
|
61
|
+
applyGreedyPatterns(tokens, greedyEntries);
|
|
62
|
+
}
|
|
63
|
+
// --- Phase 2: Apply remaining non-greedy patterns ------------------------
|
|
64
|
+
for (const { tokenType, patternDef } of nonGreedyEntries) {
|
|
65
|
+
applyPattern(tokens, tokenType, patternDef);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Process all greedy patterns against the current token list.
|
|
70
|
+
*
|
|
71
|
+
* For every plain-string entry in the list the function builds a *mask* string
|
|
72
|
+
* of the same length. Greedy matches are recorded and their corresponding
|
|
73
|
+
* character ranges in the mask are overwritten with a placeholder character so
|
|
74
|
+
* that later greedy patterns (and all non-greedy patterns) will never match
|
|
75
|
+
* inside an already-claimed region.
|
|
76
|
+
*
|
|
77
|
+
* After all greedy patterns have been collected the affected string entries are
|
|
78
|
+
* rebuilt by splicing in SyntaxToken objects for each greedy match.
|
|
79
|
+
*
|
|
80
|
+
* @param {(string | SyntaxToken)[]} tokens - The token list to process in-place.
|
|
81
|
+
* @param {{ tokenType: string; patternDef: GrammarPattern }[]} greedyEntries - Greedy patterns to apply.
|
|
82
|
+
*/
|
|
83
|
+
function applyGreedyPatterns(tokens, greedyEntries) {
|
|
84
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
85
|
+
const token = tokens[i];
|
|
86
|
+
/* istanbul ignore next -- defensive: greedy phase only sees strings from initial tokenize() call */
|
|
87
|
+
if (typeof token !== 'string') {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// Build the full text by concatenating all consecutive string segments
|
|
91
|
+
// so greedy regex can match across them — but for simplicity we operate
|
|
92
|
+
// per-segment, which matches prismjs behavior for the patterns we use.
|
|
93
|
+
const originalText = token;
|
|
94
|
+
// Mask tracks which characters have been claimed. A GREEDY_PLACEHOLDER
|
|
95
|
+
// character at position j means that character is already part of a greedy match.
|
|
96
|
+
let mask = originalText;
|
|
97
|
+
const matches = [];
|
|
98
|
+
for (const { tokenType, patternDef } of greedyEntries) {
|
|
99
|
+
const { pattern, lookbehind, inside } = patternDef;
|
|
100
|
+
const regex = new RegExp(pattern.source, pattern.flags.replace(/g/g, '') + 'g');
|
|
101
|
+
let execResult;
|
|
102
|
+
while ((execResult = regex.exec(mask)) !== null) {
|
|
103
|
+
let matchIndex = execResult.index;
|
|
104
|
+
let match = execResult[0];
|
|
105
|
+
/* istanbul ignore next -- defensive: prevents infinite loop on zero-length regex matches */
|
|
106
|
+
if (match.length === 0) {
|
|
107
|
+
regex.lastIndex++;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
// If matched text contains a placeholder char it overlaps a
|
|
111
|
+
// previously claimed region — skip it.
|
|
112
|
+
/* istanbul ignore next -- defensive: prevents re-tokenizing already-claimed greedy regions */
|
|
113
|
+
if (match.indexOf(GREEDY_PLACEHOLDER) !== -1) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (lookbehind && execResult[1]) {
|
|
117
|
+
const lookbehindLength = execResult[1].length;
|
|
118
|
+
matchIndex += lookbehindLength;
|
|
119
|
+
match = match.slice(lookbehindLength);
|
|
120
|
+
}
|
|
121
|
+
// Record the match and blank out the region in the mask.
|
|
122
|
+
const matchEnd = matchIndex + match.length;
|
|
123
|
+
matches.push({
|
|
124
|
+
tokenType,
|
|
125
|
+
matchStart: matchIndex,
|
|
126
|
+
matchEnd,
|
|
127
|
+
matchText: originalText.slice(matchIndex, matchEnd),
|
|
128
|
+
inside,
|
|
129
|
+
});
|
|
130
|
+
// Replace matched region in the mask with placeholder so later
|
|
131
|
+
// patterns cannot match inside it.
|
|
132
|
+
mask =
|
|
133
|
+
mask.slice(0, matchIndex) +
|
|
134
|
+
GREEDY_PLACEHOLDER.repeat(match.length).slice(0, match.length) +
|
|
135
|
+
mask.slice(matchEnd);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (matches.length === 0) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
// Sort matches by start position for deterministic splicing.
|
|
142
|
+
matches.sort((a, b) => a.matchStart - b.matchStart);
|
|
143
|
+
// Build replacement array.
|
|
144
|
+
const replacement = [];
|
|
145
|
+
let lastIndex = 0;
|
|
146
|
+
for (const m of matches) {
|
|
147
|
+
if (m.matchStart > lastIndex) {
|
|
148
|
+
replacement.push(originalText.slice(lastIndex, m.matchStart));
|
|
149
|
+
}
|
|
150
|
+
let content = m.matchText;
|
|
151
|
+
if (m.inside) {
|
|
152
|
+
const nested = tokenize(m.matchText, m.inside);
|
|
153
|
+
content = nested.length === 1 ? nested[0] : nested;
|
|
154
|
+
}
|
|
155
|
+
replacement.push({ type: m.tokenType, content });
|
|
156
|
+
lastIndex = m.matchEnd;
|
|
157
|
+
}
|
|
158
|
+
if (lastIndex < originalText.length) {
|
|
159
|
+
replacement.push(originalText.slice(lastIndex));
|
|
160
|
+
}
|
|
161
|
+
tokens.splice(i, 1, ...replacement);
|
|
162
|
+
i += replacement.length - 1;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Apply a single pattern definition across all string entries in the token list.
|
|
167
|
+
* For each string entry, finds ALL matches of the pattern and splits the string
|
|
168
|
+
* into alternating unmatched/matched segments in one pass.
|
|
169
|
+
*
|
|
170
|
+
* @param {(string | SyntaxToken)[]} tokens - The token list to process.
|
|
171
|
+
* @param {string} tokenType - The token type name for matched content.
|
|
172
|
+
* @param {GrammarPattern} patternDef - The pattern definition to apply.
|
|
173
|
+
*/
|
|
174
|
+
function applyPattern(tokens, tokenType, patternDef) {
|
|
175
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
176
|
+
const token = tokens[i];
|
|
177
|
+
// Only process string tokens, skip already-tokenized entries
|
|
178
|
+
if (typeof token !== 'string') {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
const replacement = tokenizeStringByPattern(token, tokenType, patternDef);
|
|
182
|
+
// Only splice if matches were found (replacement differs from original)
|
|
183
|
+
if (replacement.length === 1 && typeof replacement[0] === 'string') {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
tokens.splice(i, 1, ...replacement);
|
|
187
|
+
// Skip past the entire replacement — all matches in this string are handled
|
|
188
|
+
i += replacement.length - 1;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Find all matches of a pattern within a string and return the split result
|
|
193
|
+
* as an array of alternating plain strings and syntax tokens.
|
|
194
|
+
*
|
|
195
|
+
* @param {string} text - The string to tokenize.
|
|
196
|
+
* @param {string} tokenType - The token type name for matched content.
|
|
197
|
+
* @param {GrammarPattern} patternDef - The pattern definition to apply.
|
|
198
|
+
* @returns {(string | SyntaxToken)[]} The tokenized result.
|
|
199
|
+
*/
|
|
200
|
+
function tokenizeStringByPattern(text, tokenType, patternDef) {
|
|
201
|
+
const { pattern, lookbehind, inside } = patternDef;
|
|
202
|
+
const regex = new RegExp(pattern.source, pattern.flags.replace(/g/g, '') + 'g');
|
|
203
|
+
const result = [];
|
|
204
|
+
let lastIndex = 0;
|
|
205
|
+
let execResult;
|
|
206
|
+
while ((execResult = regex.exec(text)) !== null) {
|
|
207
|
+
let matchIndex = execResult.index;
|
|
208
|
+
let match = execResult[0];
|
|
209
|
+
// Prevent zero-length match infinite loops
|
|
210
|
+
if (match.length === 0) {
|
|
211
|
+
regex.lastIndex++;
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
// Handle lookbehind: adjust match position and content
|
|
215
|
+
if (lookbehind && execResult[1]) {
|
|
216
|
+
const lookbehindLength = execResult[1].length;
|
|
217
|
+
matchIndex += lookbehindLength;
|
|
218
|
+
match = match.slice(lookbehindLength);
|
|
219
|
+
}
|
|
220
|
+
// Add unmatched text before this match
|
|
221
|
+
if (matchIndex > lastIndex) {
|
|
222
|
+
result.push(text.slice(lastIndex, matchIndex));
|
|
223
|
+
}
|
|
224
|
+
// Process nested grammar if specified
|
|
225
|
+
let content = match;
|
|
226
|
+
if (inside) {
|
|
227
|
+
const nestedTokens = tokenize(match, inside);
|
|
228
|
+
content = nestedTokens.length === 1 ? nestedTokens[0] : nestedTokens;
|
|
229
|
+
}
|
|
230
|
+
result.push({ type: tokenType, content });
|
|
231
|
+
lastIndex = matchIndex + match.length;
|
|
232
|
+
}
|
|
233
|
+
// Add remaining unmatched text
|
|
234
|
+
if (lastIndex < text.length) {
|
|
235
|
+
result.push(text.slice(lastIndex));
|
|
236
|
+
}
|
|
237
|
+
/* istanbul ignore next -- defensive: tokenizeStringByPattern always has remainder text */
|
|
238
|
+
if (result.length === 0) {
|
|
239
|
+
return [text];
|
|
240
|
+
}
|
|
241
|
+
return result;
|
|
242
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|