@awc-ui/core 1.0.0-beta.2 → 1.0.0-beta.4
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/README.md +18 -0
- package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
- package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
- package/dist/cjs/engine.wasm-9JtXME10.js +12 -0
- package/dist/cjs/engine.wasm-9JtXME10.js.map +1 -0
- package/dist/cjs/{index-DlQ_5_Mv.js → index-Bm07YAg9.js} +4 -15
- package/dist/cjs/index-Bm07YAg9.js.map +1 -0
- package/dist/cjs/lazy-loading-indicator-CoC-_DMs.js +69 -0
- package/dist/cjs/lazy-loading-indicator-CoC-_DMs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +4 -3
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/md-accordion-item.cjs.entry.js +4 -4
- package/dist/cjs/md-accordion.cjs.entry.js +1 -1
- package/dist/cjs/md-app-bar.cjs.entry.js +2 -2
- package/dist/cjs/md-area-chart.cjs.entry.js +3 -3
- package/dist/cjs/md-autocomplete.cjs.entry.js +6 -5
- package/dist/cjs/md-autocomplete.cjs.entry.js.map +1 -1
- package/dist/cjs/md-avatar_2.cjs.entry.js +4 -4
- package/dist/cjs/md-badge.cjs.entry.js +3 -3
- package/dist/cjs/md-bar-chart.cjs.entry.js +3 -3
- package/dist/cjs/md-bottom-sheet.cjs.entry.js +5 -5
- package/dist/cjs/md-breadcrumb-item.cjs.entry.js +1 -1
- package/dist/cjs/md-breadcrumbs.cjs.entry.js +3 -3
- package/dist/cjs/md-button-group.cjs.entry.js +3 -3
- package/dist/cjs/{md-button_7.cjs.entry.js → md-button_6.cjs.entry.js} +14 -39
- package/dist/cjs/md-button_6.cjs.entry.js.map +1 -0
- package/dist/cjs/md-checkbox.cjs.entry.js +3 -3
- package/dist/cjs/md-chip.cjs.entry.js +3 -3
- package/dist/cjs/md-color-picker.cjs.entry.js +1 -1
- package/dist/cjs/md-date-picker.cjs.entry.js +2 -2
- package/dist/cjs/md-dialog.cjs.entry.js +3 -3
- package/dist/cjs/md-divider.cjs.entry.js +3 -3
- package/dist/cjs/md-fab-menu-item.cjs.entry.js +3 -3
- package/dist/cjs/md-fab-menu.cjs.entry.js +3 -3
- package/dist/cjs/md-fab.cjs.entry.js +3 -3
- package/dist/cjs/md-line-chart.cjs.entry.js +3 -3
- package/dist/cjs/md-list-item.cjs.entry.js +4 -4
- package/dist/cjs/md-list.cjs.entry.js +4 -4
- package/dist/cjs/md-loading-indicator-CmzdcYLR.js +33 -0
- package/dist/cjs/md-loading-indicator-CmzdcYLR.js.map +1 -0
- package/dist/cjs/md-loading-indicator.cjs.entry.js +11 -0
- package/dist/cjs/md-loading-indicator.cjs.entry.js.map +1 -0
- package/dist/cjs/md-menu-item-group.cjs.entry.js +1 -1
- package/dist/cjs/md-menu_2.cjs.entry.js +6 -6
- package/dist/cjs/md-meter.cjs.entry.js +1 -1
- package/dist/cjs/md-multi-select.cjs.entry.js +7 -6
- package/dist/cjs/md-multi-select.cjs.entry.js.map +1 -1
- package/dist/cjs/md-navigation-bar.cjs.entry.js +2 -2
- package/dist/cjs/md-navigation-rail-tab.cjs.entry.js +1 -1
- package/dist/cjs/md-navigation-rail.cjs.entry.js +1 -1
- package/dist/cjs/md-navigation-tab.cjs.entry.js +3 -3
- package/dist/cjs/md-number-field.cjs.entry.js +3 -3
- package/dist/cjs/md-organization-chart.cjs.entry.js +3 -3
- package/dist/cjs/md-otp-field.cjs.entry.js +4 -4
- package/dist/cjs/md-pie-chart.cjs.entry.js +1 -1
- package/dist/cjs/md-progress-indicator.cjs.entry.js +1 -1
- package/dist/cjs/md-rating.cjs.entry.js +1 -1
- package/dist/cjs/md-search.cjs.entry.js +8 -7
- package/dist/cjs/md-search.cjs.entry.js.map +1 -1
- package/dist/cjs/md-segmented-button-set.cjs.entry.js +1 -1
- package/dist/cjs/md-segmented-button.cjs.entry.js +1 -1
- package/dist/cjs/md-select-option.cjs.entry.js +2 -2
- package/dist/cjs/md-select.cjs.entry.js +7 -6
- package/dist/cjs/md-select.cjs.entry.js.map +1 -1
- package/dist/cjs/md-side-sheet.cjs.entry.js +1 -1
- package/dist/cjs/md-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/md-slider.cjs.entry.js +3 -3
- package/dist/cjs/md-sparkline.cjs.entry.js +3 -3
- package/dist/cjs/md-split-button.cjs.entry.js +1 -1
- package/dist/cjs/md-status-dot.cjs.entry.js +2 -2
- package/dist/cjs/md-step.cjs.entry.js +1 -1
- package/dist/cjs/md-stepper.cjs.entry.js +1 -1
- package/dist/cjs/md-sub-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/md-switch.cjs.entry.js +1 -1
- package/dist/cjs/md-tab-panel.cjs.entry.js +1 -1
- package/dist/cjs/md-tab-panels.cjs.entry.js +1 -1
- package/dist/cjs/md-tab.cjs.entry.js +1 -1
- package/dist/cjs/md-table-body.cjs.entry.js +1 -1
- package/dist/cjs/md-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/md-table-container.cjs.entry.js +1 -1
- package/dist/cjs/md-table-expand-toggle.cjs.entry.js +1 -1
- package/dist/cjs/md-table-foot.cjs.entry.js +1 -1
- package/dist/cjs/md-table-head.cjs.entry.js +1 -1
- package/dist/cjs/md-table-pagination.cjs.entry.js +1 -1
- package/dist/cjs/md-table-row.cjs.entry.js +1 -1
- package/dist/cjs/md-table-sort-label.cjs.entry.js +1 -1
- package/dist/cjs/md-table-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/md-table.cjs.entry.js +4 -4
- package/dist/cjs/md-tabs.cjs.entry.js +1 -1
- package/dist/cjs/md-text-field.cjs.entry.js +8 -8
- package/dist/cjs/md-time-picker.cjs.entry.js +2 -2
- package/dist/cjs/md-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/md-transfer-list.cjs.entry.js +2 -2
- package/dist/cjs/md3.cjs.js +4 -3
- package/dist/cjs/md3.cjs.js.map +1 -1
- package/dist/cjs/{virtual-select-controller-CqriaZgm.js → virtual-select-controller-C5cSoKfB.js} +10 -9
- package/dist/cjs/virtual-select-controller-C5cSoKfB.js.map +1 -0
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/md-accordion-item/md-accordion-item.js +3 -3
- package/dist/collection/components/md-app-bar/md-app-bar.js +1 -1
- package/dist/collection/components/md-area-chart/md-area-chart.js +2 -2
- package/dist/collection/components/md-autocomplete/md-autocomplete.js +4 -3
- package/dist/collection/components/md-autocomplete/md-autocomplete.js.map +1 -1
- package/dist/collection/components/md-avatar/md-avatar.js +2 -2
- package/dist/collection/components/md-badge/md-badge.js +2 -2
- package/dist/collection/components/md-bar-chart/md-bar-chart.js +2 -2
- package/dist/collection/components/md-bottom-sheet/md-bottom-sheet.js +4 -4
- package/dist/collection/components/md-breadcrumbs/md-breadcrumbs.js +2 -2
- package/dist/collection/components/md-button/md-button.js +4 -3
- package/dist/collection/components/md-button/md-button.js.map +1 -1
- package/dist/collection/components/md-button-group/md-button-group.js +2 -2
- package/dist/collection/components/md-card/md-card.js +2 -2
- package/dist/collection/components/md-checkbox/md-checkbox.js +2 -2
- package/dist/collection/components/md-chip/md-chip.js +2 -2
- package/dist/collection/components/md-date-picker/md-date-picker.js +1 -1
- package/dist/collection/components/md-dialog/md-dialog.js +2 -2
- package/dist/collection/components/md-divider/md-divider.js +2 -2
- package/dist/collection/components/md-fab/md-fab.js +2 -2
- package/dist/collection/components/md-fab-menu/md-fab-menu.js +2 -2
- package/dist/collection/components/md-fab-menu-item/md-fab-menu-item.js +2 -2
- package/dist/collection/components/md-icon-button/md-icon-button.js +4 -4
- package/dist/collection/components/md-line-chart/md-line-chart.js +2 -2
- package/dist/collection/components/md-list/md-list.js +3 -3
- package/dist/collection/components/md-list-item/md-list-item.js +3 -3
- package/dist/collection/components/md-loading-indicator/md-loading-indicator.js +2 -2
- package/dist/collection/components/md-menu/md-menu.js +3 -3
- package/dist/collection/components/md-menu-item/md-menu-item.js +2 -2
- package/dist/collection/components/md-multi-select/md-multi-select.js +5 -4
- package/dist/collection/components/md-multi-select/md-multi-select.js.map +1 -1
- package/dist/collection/components/md-navigation-bar/md-navigation-bar.js +1 -1
- package/dist/collection/components/md-navigation-tab/md-navigation-tab.js +2 -2
- package/dist/collection/components/md-number-field/md-number-field.js +2 -2
- package/dist/collection/components/md-organization-chart/md-organization-chart.js +2 -2
- package/dist/collection/components/md-otp-field/md-otp-field.js +3 -3
- package/dist/collection/components/md-ripple/md-ripple.js +1 -1
- package/dist/collection/components/md-search/md-search.js +7 -6
- package/dist/collection/components/md-search/md-search.js.map +1 -1
- package/dist/collection/components/md-select/md-select.js +5 -4
- package/dist/collection/components/md-select/md-select.js.map +1 -1
- package/dist/collection/components/md-select-option/md-select-option.js +1 -1
- package/dist/collection/components/md-slider/md-slider.js +2 -2
- package/dist/collection/components/md-sparkline/md-sparkline.js +2 -2
- package/dist/collection/components/md-status-dot/md-status-dot.js +1 -1
- package/dist/collection/components/md-table/md-table.js +3 -3
- package/dist/collection/components/md-text-field/md-text-field.js +7 -7
- package/dist/collection/components/md-time-picker/md-time-picker.js +1 -1
- package/dist/collection/components/md-tooltip/md-tooltip.js +1 -1
- package/dist/collection/components/md-transfer-list/md-transfer-list.js +1 -1
- package/dist/collection/utils/lazy-loading-indicator.js +62 -0
- package/dist/collection/utils/lazy-loading-indicator.js.map +1 -0
- package/dist/collection/wasm/engine-abi.js +8 -2
- package/dist/collection/wasm/engine-abi.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/md-accordion-item.js +1 -1
- package/dist/components/md-accordion.js +1 -1
- package/dist/components/md-app-bar.js +1 -1
- package/dist/components/md-area-chart.js +1 -1
- package/dist/components/md-autocomplete.js +1 -1
- package/dist/components/md-autocomplete.js.map +1 -1
- package/dist/components/md-avatar.js +1 -1
- package/dist/components/md-badge.js +1 -1
- package/dist/components/md-bar-chart.js +1 -1
- package/dist/components/md-bottom-sheet.js +1 -1
- package/dist/components/md-breadcrumb-item.js +1 -1
- package/dist/components/md-breadcrumbs.js +1 -1
- package/dist/components/md-button-group.js +1 -1
- package/dist/components/md-button.js +1 -1
- package/dist/components/md-card.js +1 -1
- package/dist/components/md-checkbox.js +1 -1
- package/dist/components/md-chip.js +1 -1
- package/dist/components/md-color-picker.js +1 -1
- package/dist/components/md-date-picker.js +1 -1
- package/dist/components/md-date-picker.js.map +1 -1
- package/dist/components/md-dialog.js +1 -1
- package/dist/components/md-dialog.js.map +1 -1
- package/dist/components/md-divider.js +1 -1
- package/dist/components/md-divider.js.map +1 -1
- package/dist/components/md-fab-menu-item.js +1 -1
- package/dist/components/md-fab-menu.js +1 -1
- package/dist/components/md-fab.js +1 -1
- package/dist/components/md-icon-button.js +1 -1
- package/dist/components/md-line-chart.js +1 -1
- package/dist/components/md-line-chart.js.map +1 -1
- package/dist/components/md-list-item.js +1 -1
- package/dist/components/md-list.js +1 -1
- package/dist/components/md-loading-indicator.js +1 -1
- package/dist/components/md-menu-item-group.js +1 -1
- package/dist/components/md-menu-item.js +1 -1
- package/dist/components/md-menu.js +1 -1
- package/dist/components/md-meter.js +1 -1
- package/dist/components/md-multi-select.js +1 -1
- package/dist/components/md-multi-select.js.map +1 -1
- package/dist/components/md-navigation-bar.js +1 -1
- package/dist/components/md-navigation-rail-tab.js +1 -1
- package/dist/components/md-navigation-rail.js +1 -1
- package/dist/components/md-navigation-tab.js +1 -1
- package/dist/components/md-number-field.js +1 -1
- package/dist/components/md-organization-chart.js +1 -1
- package/dist/components/md-otp-field.js +1 -1
- package/dist/components/md-pie-chart.js +1 -1
- package/dist/components/md-progress-indicator.js +1 -1
- package/dist/components/md-radio.js +1 -1
- package/dist/components/md-rating.js +1 -1
- package/dist/components/md-ripple.js +1 -1
- package/dist/components/md-search.js +1 -1
- package/dist/components/md-search.js.map +1 -1
- package/dist/components/md-segmented-button-set.js +1 -1
- package/dist/components/md-segmented-button.js +1 -1
- package/dist/components/md-select-option.js +1 -1
- package/dist/components/md-select.js +1 -1
- package/dist/components/md-side-sheet.js +1 -1
- package/dist/components/md-skeleton.js +1 -1
- package/dist/components/md-slider.js +1 -1
- package/dist/components/md-snackbar.js +1 -1
- package/dist/components/md-snackbar.js.map +1 -1
- package/dist/components/md-sparkline.js +1 -1
- package/dist/components/md-split-button.js +1 -1
- package/dist/components/md-status-dot.js +1 -1
- package/dist/components/md-step.js +1 -1
- package/dist/components/md-step.js.map +1 -1
- package/dist/components/md-stepper.js +1 -1
- package/dist/components/md-stepper.js.map +1 -1
- package/dist/components/md-sub-menu-item.js +1 -1
- package/dist/components/md-switch.js +1 -1
- package/dist/components/md-tab-panel.js +1 -1
- package/dist/components/md-tab-panels.js +1 -1
- package/dist/components/md-tab.js +1 -1
- package/dist/components/md-table-body.js +1 -1
- package/dist/components/md-table-cell.js +1 -1
- package/dist/components/md-table-container.js +1 -1
- package/dist/components/md-table-expand-toggle.js +1 -1
- package/dist/components/md-table-foot.js +1 -1
- package/dist/components/md-table-head.js +1 -1
- package/dist/components/md-table-pagination.js +1 -1
- package/dist/components/md-table-pagination.js.map +1 -1
- package/dist/components/md-table-row.js +1 -1
- package/dist/components/md-table-sort-label.js +1 -1
- package/dist/components/md-table-toolbar.js +1 -1
- package/dist/components/md-table.js +1 -1
- package/dist/components/md-tabs.js +1 -1
- package/dist/components/md-text-field.js +1 -1
- package/dist/components/md-time-picker.js +1 -1
- package/dist/components/md-time-picker.js.map +1 -1
- package/dist/components/md-toolbar.js +1 -1
- package/dist/components/md-tooltip.js +1 -1
- package/dist/components/md-transfer-list.js +1 -1
- package/dist/components/p-1RSrsLOs.js +2 -0
- package/dist/components/p-1RSrsLOs.js.map +1 -0
- package/dist/components/p-2HV152w7.js +2 -0
- package/dist/components/p-2HV152w7.js.map +1 -0
- package/dist/components/p-6ZDAcEKN.js +2 -0
- package/dist/components/p-6ZDAcEKN.js.map +1 -0
- package/dist/components/p-B2fYoYe9.js +2 -0
- package/dist/components/p-B2fYoYe9.js.map +1 -0
- package/dist/components/p-BR6gfOQH.js +2 -0
- package/dist/components/p-BR6gfOQH.js.map +1 -0
- package/dist/components/p-Bz-JaJcA.js +2 -0
- package/dist/components/p-Bz-JaJcA.js.map +1 -0
- package/dist/components/p-C77M30dm.js +2 -0
- package/dist/components/p-C77M30dm.js.map +1 -0
- package/dist/components/p-CNgkGl_1.js +2 -0
- package/dist/components/p-CNgkGl_1.js.map +1 -0
- package/dist/components/p-CfBPnYW7.js +2 -0
- package/dist/components/p-CfBPnYW7.js.map +1 -0
- package/dist/components/p-D5Ht729E.js +2 -0
- package/dist/components/p-D5Ht729E.js.map +1 -0
- package/dist/components/p-DPqGg8C1.js +2 -0
- package/dist/components/p-DPqGg8C1.js.map +1 -0
- package/dist/components/p-De3E5Q8v.js +2 -0
- package/dist/components/p-De3E5Q8v.js.map +1 -0
- package/dist/components/p-Dm_7DA1f.js +2 -0
- package/dist/components/p-Dm_7DA1f.js.map +1 -0
- package/dist/components/p-Dz3R-2Wn.js +2 -0
- package/dist/components/p-Dz3R-2Wn.js.map +1 -0
- package/dist/components/p-Zjf9uhOr.js +2 -0
- package/dist/components/p-Zjf9uhOr.js.map +1 -0
- package/dist/components/p-ssLobpGS.js +2 -0
- package/dist/components/p-ssLobpGS.js.map +1 -0
- package/dist/components/p-tSoecrcz.js +2 -0
- package/dist/components/p-tSoecrcz.js.map +1 -0
- package/dist/components/p-zMR3UIR_.js +2 -0
- package/dist/components/p-zMR3UIR_.js.map +1 -0
- package/dist/components-csr/index.js +2 -0
- package/dist/components-csr/index.js.map +1 -0
- package/dist/components-csr/md-accordion-item.js +2 -0
- package/dist/components-csr/md-accordion-item.js.map +1 -0
- package/dist/components-csr/md-accordion.js +2 -0
- package/dist/components-csr/md-accordion.js.map +1 -0
- package/dist/components-csr/md-app-bar.js +2 -0
- package/dist/components-csr/md-app-bar.js.map +1 -0
- package/dist/components-csr/md-area-chart.js +2 -0
- package/dist/components-csr/md-area-chart.js.map +1 -0
- package/dist/components-csr/md-autocomplete.js +2 -0
- package/dist/components-csr/md-autocomplete.js.map +1 -0
- package/dist/components-csr/md-avatar.js +2 -0
- package/dist/components-csr/md-avatar.js.map +1 -0
- package/dist/components-csr/md-badge.js +2 -0
- package/dist/components-csr/md-badge.js.map +1 -0
- package/dist/components-csr/md-bar-chart.js +2 -0
- package/dist/components-csr/md-bar-chart.js.map +1 -0
- package/dist/components-csr/md-bottom-sheet.js +2 -0
- package/dist/components-csr/md-bottom-sheet.js.map +1 -0
- package/dist/components-csr/md-breadcrumb-item.js +2 -0
- package/dist/components-csr/md-breadcrumb-item.js.map +1 -0
- package/dist/components-csr/md-breadcrumbs.js +2 -0
- package/dist/components-csr/md-breadcrumbs.js.map +1 -0
- package/dist/components-csr/md-button-group.js +2 -0
- package/dist/components-csr/md-button-group.js.map +1 -0
- package/dist/components-csr/md-button.js +2 -0
- package/dist/components-csr/md-button.js.map +1 -0
- package/dist/components-csr/md-card.js +2 -0
- package/dist/components-csr/md-card.js.map +1 -0
- package/dist/components-csr/md-checkbox.js +2 -0
- package/dist/components-csr/md-checkbox.js.map +1 -0
- package/dist/components-csr/md-chip.js +2 -0
- package/dist/components-csr/md-chip.js.map +1 -0
- package/dist/components-csr/md-color-picker.js +2 -0
- package/dist/components-csr/md-color-picker.js.map +1 -0
- package/dist/components-csr/md-date-picker.js +2 -0
- package/dist/components-csr/md-date-picker.js.map +1 -0
- package/dist/components-csr/md-dialog.js +2 -0
- package/dist/components-csr/md-dialog.js.map +1 -0
- package/dist/components-csr/md-divider.js +2 -0
- package/dist/components-csr/md-divider.js.map +1 -0
- package/dist/components-csr/md-fab-menu-item.js +2 -0
- package/dist/components-csr/md-fab-menu-item.js.map +1 -0
- package/dist/components-csr/md-fab-menu.js +2 -0
- package/dist/components-csr/md-fab-menu.js.map +1 -0
- package/dist/components-csr/md-fab.js +2 -0
- package/dist/components-csr/md-fab.js.map +1 -0
- package/dist/components-csr/md-icon-button.js +2 -0
- package/dist/components-csr/md-icon-button.js.map +1 -0
- package/dist/components-csr/md-line-chart.js +2 -0
- package/dist/components-csr/md-line-chart.js.map +1 -0
- package/dist/components-csr/md-list-item.js +2 -0
- package/dist/components-csr/md-list-item.js.map +1 -0
- package/dist/components-csr/md-list.js +2 -0
- package/dist/components-csr/md-list.js.map +1 -0
- package/dist/components-csr/md-loading-indicator.js +2 -0
- package/dist/components-csr/md-loading-indicator.js.map +1 -0
- package/dist/components-csr/md-menu-item-group.js +2 -0
- package/dist/components-csr/md-menu-item-group.js.map +1 -0
- package/dist/components-csr/md-menu-item.js +2 -0
- package/dist/components-csr/md-menu-item.js.map +1 -0
- package/dist/components-csr/md-menu.js +2 -0
- package/dist/components-csr/md-menu.js.map +1 -0
- package/dist/components-csr/md-meter.js +2 -0
- package/dist/components-csr/md-meter.js.map +1 -0
- package/dist/components-csr/md-multi-select.js +2 -0
- package/dist/components-csr/md-multi-select.js.map +1 -0
- package/dist/components-csr/md-navigation-bar.js +2 -0
- package/dist/components-csr/md-navigation-bar.js.map +1 -0
- package/dist/components-csr/md-navigation-rail-tab.js +2 -0
- package/dist/components-csr/md-navigation-rail-tab.js.map +1 -0
- package/dist/components-csr/md-navigation-rail.js +2 -0
- package/dist/components-csr/md-navigation-rail.js.map +1 -0
- package/dist/components-csr/md-navigation-tab.js +2 -0
- package/dist/components-csr/md-navigation-tab.js.map +1 -0
- package/dist/components-csr/md-number-field.js +2 -0
- package/dist/components-csr/md-number-field.js.map +1 -0
- package/dist/components-csr/md-organization-chart.js +2 -0
- package/dist/components-csr/md-organization-chart.js.map +1 -0
- package/dist/components-csr/md-otp-field.js +2 -0
- package/dist/components-csr/md-otp-field.js.map +1 -0
- package/dist/components-csr/md-pie-chart.js +2 -0
- package/dist/components-csr/md-pie-chart.js.map +1 -0
- package/dist/components-csr/md-progress-indicator.js +2 -0
- package/dist/components-csr/md-progress-indicator.js.map +1 -0
- package/dist/components-csr/md-radio.js +2 -0
- package/dist/components-csr/md-radio.js.map +1 -0
- package/dist/components-csr/md-rating.js +2 -0
- package/dist/components-csr/md-rating.js.map +1 -0
- package/dist/components-csr/md-ripple.js +2 -0
- package/dist/components-csr/md-ripple.js.map +1 -0
- package/dist/components-csr/md-search.js +2 -0
- package/dist/components-csr/md-search.js.map +1 -0
- package/dist/components-csr/md-segmented-button-set.js +2 -0
- package/dist/components-csr/md-segmented-button-set.js.map +1 -0
- package/dist/components-csr/md-segmented-button.js +2 -0
- package/dist/components-csr/md-segmented-button.js.map +1 -0
- package/dist/components-csr/md-select-option.js +2 -0
- package/dist/components-csr/md-select-option.js.map +1 -0
- package/dist/components-csr/md-select.js +2 -0
- package/dist/components-csr/md-select.js.map +1 -0
- package/dist/components-csr/md-side-sheet.js +2 -0
- package/dist/components-csr/md-side-sheet.js.map +1 -0
- package/dist/components-csr/md-skeleton.js +2 -0
- package/dist/components-csr/md-skeleton.js.map +1 -0
- package/dist/components-csr/md-slider.js +2 -0
- package/dist/components-csr/md-slider.js.map +1 -0
- package/dist/components-csr/md-snackbar.js +2 -0
- package/dist/components-csr/md-snackbar.js.map +1 -0
- package/dist/components-csr/md-sparkline.js +2 -0
- package/dist/components-csr/md-sparkline.js.map +1 -0
- package/dist/components-csr/md-split-button.js +2 -0
- package/dist/components-csr/md-split-button.js.map +1 -0
- package/dist/components-csr/md-status-dot.js +2 -0
- package/dist/components-csr/md-status-dot.js.map +1 -0
- package/dist/components-csr/md-step.js +2 -0
- package/dist/components-csr/md-step.js.map +1 -0
- package/dist/components-csr/md-stepper.js +2 -0
- package/dist/components-csr/md-stepper.js.map +1 -0
- package/dist/components-csr/md-sub-menu-item.js +2 -0
- package/dist/components-csr/md-sub-menu-item.js.map +1 -0
- package/dist/components-csr/md-switch.js +2 -0
- package/dist/components-csr/md-switch.js.map +1 -0
- package/dist/components-csr/md-tab-panel.js +2 -0
- package/dist/components-csr/md-tab-panel.js.map +1 -0
- package/dist/components-csr/md-tab-panels.js +2 -0
- package/dist/components-csr/md-tab-panels.js.map +1 -0
- package/dist/components-csr/md-tab.js +2 -0
- package/dist/components-csr/md-tab.js.map +1 -0
- package/dist/components-csr/md-table-body.js +2 -0
- package/dist/components-csr/md-table-body.js.map +1 -0
- package/dist/components-csr/md-table-cell.js +2 -0
- package/dist/components-csr/md-table-cell.js.map +1 -0
- package/dist/components-csr/md-table-container.js +2 -0
- package/dist/components-csr/md-table-container.js.map +1 -0
- package/dist/components-csr/md-table-expand-toggle.js +2 -0
- package/dist/components-csr/md-table-expand-toggle.js.map +1 -0
- package/dist/components-csr/md-table-foot.js +2 -0
- package/dist/components-csr/md-table-foot.js.map +1 -0
- package/dist/components-csr/md-table-head.js +2 -0
- package/dist/components-csr/md-table-head.js.map +1 -0
- package/dist/components-csr/md-table-pagination.js +2 -0
- package/dist/components-csr/md-table-pagination.js.map +1 -0
- package/dist/components-csr/md-table-row.js +2 -0
- package/dist/components-csr/md-table-row.js.map +1 -0
- package/dist/components-csr/md-table-sort-label.js +2 -0
- package/dist/components-csr/md-table-sort-label.js.map +1 -0
- package/dist/components-csr/md-table-toolbar.js +2 -0
- package/dist/components-csr/md-table-toolbar.js.map +1 -0
- package/dist/components-csr/md-table.js +2 -0
- package/dist/components-csr/md-table.js.map +1 -0
- package/dist/components-csr/md-tabs.js +2 -0
- package/dist/components-csr/md-tabs.js.map +1 -0
- package/dist/components-csr/md-text-field.js +2 -0
- package/dist/components-csr/md-text-field.js.map +1 -0
- package/dist/components-csr/md-time-picker.js +2 -0
- package/dist/components-csr/md-time-picker.js.map +1 -0
- package/dist/components-csr/md-toolbar.js +2 -0
- package/dist/components-csr/md-toolbar.js.map +1 -0
- package/dist/components-csr/md-tooltip.js +2 -0
- package/dist/components-csr/md-tooltip.js.map +1 -0
- package/dist/components-csr/md-transfer-list.js +2 -0
- package/dist/components-csr/md-transfer-list.js.map +1 -0
- package/dist/components-csr/p-6WgHjhDg.js +2 -0
- package/dist/components-csr/p-6WgHjhDg.js.map +1 -0
- package/dist/{components/p-uTEkf0sE.js → components-csr/p-BEmwDSzw.js} +2 -2
- package/dist/{components/p-C8EP4S21.js → components-csr/p-BQKzjYcY.js} +2 -2
- package/dist/{components/p-BwXpiUsu.js → components-csr/p-BWMwewtY.js} +2 -2
- package/dist/{components/p-DXXUoRSH.js → components-csr/p-BZakoRau.js} +2 -2
- package/dist/components-csr/p-BZakoRau.js.map +1 -0
- package/dist/{md3/p-BjYKc1Ge.js → components-csr/p-BdEoSBtL.js} +2 -2
- package/dist/components-csr/p-BdEoSBtL.js.map +1 -0
- package/dist/{components/p-B0Opn6dK.js → components-csr/p-Bkt_X-6v.js} +2 -2
- package/dist/components-csr/p-Bx6--dQF.js.map +1 -0
- package/dist/components-csr/p-Bz-JaJcA.js +2 -0
- package/dist/components-csr/p-Bz-JaJcA.js.map +1 -0
- package/dist/{components/p-stybaFzj.js → components-csr/p-C3vB0Hd9.js} +2 -2
- package/dist/{components/p-B3MWYEEJ.js → components-csr/p-CF7mq5T7.js} +2 -2
- package/dist/{components/p-7fN_yCXW.js → components-csr/p-CVMM-tdC.js} +2 -2
- package/dist/components-csr/p-C_ogF68H.js.map +1 -0
- package/dist/components-csr/p-Cch_V1vi.js +2 -0
- package/dist/components-csr/p-Cch_V1vi.js.map +1 -0
- package/dist/components-csr/p-CfBPnYW7.js +2 -0
- package/dist/components-csr/p-CfBPnYW7.js.map +1 -0
- package/dist/components-csr/p-CxhZdOPw.js +2 -0
- package/dist/components-csr/p-CxhZdOPw.js.map +1 -0
- package/dist/{components/p-Ch2-tttM.js → components-csr/p-DMQ-6aj8.js} +2 -2
- package/dist/components-csr/p-DWxN44zD.js +2 -0
- package/dist/components-csr/p-DWxN44zD.js.map +1 -0
- package/dist/components-csr/p-DYBUr7K_.js +2 -0
- package/dist/components-csr/p-DYBUr7K_.js.map +1 -0
- package/dist/{components/p-e2HRV63Y.js → components-csr/p-DfcpeJAu.js} +2 -2
- package/dist/{components/p-Dp-w93ot.js → components-csr/p-DjKPc5EU.js} +2 -2
- package/dist/components-csr/p-DvOKnoqK.js.map +1 -0
- package/dist/components-csr/p-DzPKu-Ma.js.map +1 -0
- package/dist/{components/p-UdGDg2oJ.js → components-csr/p-If0JHsYV.js} +2 -2
- package/dist/components-csr/p-If0JHsYV.js.map +1 -0
- package/dist/components-csr/p-RLxbNqRv.js.map +1 -0
- package/dist/{components/p-6wZSqm_2.js → components-csr/p-R_guULjT.js} +2 -2
- package/dist/components-csr/p-bSpXNc5J.js +2 -0
- package/dist/components-csr/p-bSpXNc5J.js.map +1 -0
- package/dist/{components/p-Ddiw2Kjw.js → components-csr/p-uSMrgqAy.js} +2 -2
- package/dist/components-csr/package.json +3 -0
- package/dist/esm/{a11y-C6CRqodW.js → a11y-BckJ95d7.js} +3 -3
- package/dist/esm/{a11y-C6CRqodW.js.map → a11y-BckJ95d7.js.map} +1 -1
- package/dist/esm/app-globals-DQuL1Twl.js +6 -0
- package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
- package/dist/esm/{bar-chart-ZZrajEkM.js → bar-chart-BuTyuCbt.js} +4 -4
- package/dist/esm/{bar-chart-ZZrajEkM.js.map → bar-chart-BuTyuCbt.js.map} +1 -1
- package/dist/esm/{chart-32olae06.js → chart-ByIhkqsG.js} +4 -4
- package/dist/esm/{chart-32olae06.js.map → chart-ByIhkqsG.js.map} +1 -1
- package/dist/esm/engine.wasm-CfBPnYW7.js +10 -0
- package/dist/esm/engine.wasm-CfBPnYW7.js.map +1 -0
- package/dist/esm/{hit-test-DHldf5Lm.js → hit-test-c_hI-yCX.js} +3 -3
- package/dist/esm/{hit-test-DHldf5Lm.js.map → hit-test-c_hI-yCX.js.map} +1 -1
- package/dist/esm/{index-DTaX19_O.js → index-WmvQpZnM.js} +5 -15
- package/dist/esm/index-WmvQpZnM.js.map +1 -0
- package/dist/esm/lazy-loading-indicator-BWFcjJiK.js +67 -0
- package/dist/esm/lazy-loading-indicator-BWFcjJiK.js.map +1 -0
- package/dist/esm/loader.js +4 -3
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/md-accordion-item.entry.js +4 -4
- package/dist/esm/md-accordion.entry.js +1 -1
- package/dist/esm/md-app-bar.entry.js +2 -2
- package/dist/esm/md-area-chart.entry.js +7 -7
- package/dist/esm/md-autocomplete.entry.js +6 -5
- package/dist/esm/md-autocomplete.entry.js.map +1 -1
- package/dist/esm/md-avatar_2.entry.js +4 -4
- package/dist/esm/md-badge.entry.js +3 -3
- package/dist/esm/md-bar-chart.entry.js +7 -7
- package/dist/esm/md-bottom-sheet.entry.js +5 -5
- package/dist/esm/md-breadcrumb-item.entry.js +2 -2
- package/dist/esm/md-breadcrumbs.entry.js +3 -3
- package/dist/esm/md-button-group.entry.js +3 -3
- package/dist/esm/{md-button_7.entry.js → md-button_6.entry.js} +16 -40
- package/dist/esm/md-button_6.entry.js.map +1 -0
- package/dist/esm/md-checkbox.entry.js +3 -3
- package/dist/esm/md-chip.entry.js +3 -3
- package/dist/esm/md-color-picker.entry.js +1 -1
- package/dist/esm/md-date-picker.entry.js +2 -2
- package/dist/esm/md-dialog.entry.js +3 -3
- package/dist/esm/md-divider.entry.js +3 -3
- package/dist/esm/md-fab-menu-item.entry.js +3 -3
- package/dist/esm/md-fab-menu.entry.js +3 -3
- package/dist/esm/md-fab.entry.js +3 -3
- package/dist/esm/md-line-chart.entry.js +7 -7
- package/dist/esm/md-list-item.entry.js +5 -5
- package/dist/esm/md-list.entry.js +4 -4
- package/dist/esm/md-loading-indicator-Bf-Pt29l.js +31 -0
- package/dist/esm/md-loading-indicator-Bf-Pt29l.js.map +1 -0
- package/dist/esm/md-loading-indicator.entry.js +5 -0
- package/dist/esm/md-loading-indicator.entry.js.map +1 -0
- package/dist/esm/md-menu-item-group.entry.js +1 -1
- package/dist/esm/md-menu_2.entry.js +6 -6
- package/dist/esm/md-meter.entry.js +1 -1
- package/dist/esm/md-multi-select.entry.js +7 -6
- package/dist/esm/md-multi-select.entry.js.map +1 -1
- package/dist/esm/md-navigation-bar.entry.js +2 -2
- package/dist/esm/md-navigation-rail-tab.entry.js +2 -2
- package/dist/esm/md-navigation-rail.entry.js +1 -1
- package/dist/esm/md-navigation-tab.entry.js +4 -4
- package/dist/esm/md-number-field.entry.js +3 -3
- package/dist/esm/md-organization-chart.entry.js +3 -3
- package/dist/esm/md-otp-field.entry.js +4 -4
- package/dist/esm/md-pie-chart.entry.js +3 -3
- package/dist/esm/md-progress-indicator.entry.js +1 -1
- package/dist/esm/md-rating.entry.js +1 -1
- package/dist/esm/md-search.entry.js +8 -7
- package/dist/esm/md-search.entry.js.map +1 -1
- package/dist/esm/md-segmented-button-set.entry.js +1 -1
- package/dist/esm/md-segmented-button.entry.js +1 -1
- package/dist/esm/md-select-option.entry.js +2 -2
- package/dist/esm/md-select.entry.js +7 -6
- package/dist/esm/md-select.entry.js.map +1 -1
- package/dist/esm/md-side-sheet.entry.js +1 -1
- package/dist/esm/md-skeleton.entry.js +1 -1
- package/dist/esm/md-slider.entry.js +3 -3
- package/dist/esm/md-sparkline.entry.js +7 -7
- package/dist/esm/md-split-button.entry.js +1 -1
- package/dist/esm/md-status-dot.entry.js +2 -2
- package/dist/esm/md-step.entry.js +1 -1
- package/dist/esm/md-stepper.entry.js +1 -1
- package/dist/esm/md-sub-menu-item.entry.js +1 -1
- package/dist/esm/md-switch.entry.js +1 -1
- package/dist/esm/md-tab-panel.entry.js +1 -1
- package/dist/esm/md-tab-panels.entry.js +1 -1
- package/dist/esm/md-tab.entry.js +1 -1
- package/dist/esm/md-table-body.entry.js +1 -1
- package/dist/esm/md-table-cell.entry.js +1 -1
- package/dist/esm/md-table-container.entry.js +1 -1
- package/dist/esm/md-table-expand-toggle.entry.js +1 -1
- package/dist/esm/md-table-foot.entry.js +1 -1
- package/dist/esm/md-table-head.entry.js +1 -1
- package/dist/esm/md-table-pagination.entry.js +1 -1
- package/dist/esm/md-table-row.entry.js +1 -1
- package/dist/esm/md-table-sort-label.entry.js +1 -1
- package/dist/esm/md-table-toolbar.entry.js +1 -1
- package/dist/esm/md-table.entry.js +4 -4
- package/dist/esm/md-tabs.entry.js +1 -1
- package/dist/esm/md-text-field.entry.js +8 -8
- package/dist/esm/md-time-picker.entry.js +2 -2
- package/dist/esm/md-toolbar.entry.js +1 -1
- package/dist/esm/md-transfer-list.entry.js +2 -2
- package/dist/esm/md3.js +4 -3
- package/dist/esm/md3.js.map +1 -1
- package/dist/esm/{rtl-DvOKnoqK.js → rtl-CVFH1DkU.js} +3 -3
- package/dist/esm/{rtl-DvOKnoqK.js.map → rtl-CVFH1DkU.js.map} +1 -1
- package/dist/esm/{url-BjYKc1Ge.js → url-BdEoSBtL.js} +3 -3
- package/dist/esm/{url-BjYKc1Ge.js.map → url-BdEoSBtL.js.map} +1 -1
- package/dist/esm/{virtual-select-controller-BEWIC0pC.js → virtual-select-controller-CR60w6DO.js} +10 -9
- package/dist/esm/virtual-select-controller-CR60w6DO.js.map +1 -0
- package/dist/md3/md3.css +1 -1
- package/dist/md3/md3.esm.js +1 -1
- package/dist/md3/md3.esm.js.map +1 -1
- package/dist/md3/p-08f1c469.entry.js +2 -0
- package/dist/md3/{p-4d82132d.entry.js.map → p-08f1c469.entry.js.map} +1 -1
- package/dist/md3/{p-9ddbf247.entry.js → p-108f89d7.entry.js} +2 -2
- package/dist/md3/p-1112bffc.entry.js +2 -0
- package/dist/md3/{p-cf07e761.entry.js.map → p-1112bffc.entry.js.map} +1 -1
- package/dist/md3/{p-c6a12344.entry.js → p-114c270b.entry.js} +2 -2
- package/dist/md3/p-1835fe36.entry.js +2 -0
- package/dist/md3/{p-a3308c40.entry.js.map → p-1835fe36.entry.js.map} +1 -1
- package/dist/md3/{p-396089fd.entry.js → p-1edb5a0d.entry.js} +2 -2
- package/dist/md3/p-2ba2db3b.entry.js +2 -0
- package/dist/md3/{p-6b2871a0.entry.js.map → p-2ba2db3b.entry.js.map} +1 -1
- package/dist/md3/p-3508d0e0.entry.js +2 -0
- package/dist/md3/{p-f31ab454.entry.js.map → p-3508d0e0.entry.js.map} +1 -1
- package/dist/md3/{p-b34d385b.entry.js → p-35b05b45.entry.js} +2 -2
- package/dist/md3/{p-c2dd8c8c.entry.js → p-38e9a583.entry.js} +2 -2
- package/dist/md3/{p-be02624e.entry.js → p-3c0469aa.entry.js} +2 -2
- package/dist/md3/p-3f64a27d.entry.js +2 -0
- package/dist/md3/{p-fb61868c.entry.js.map → p-3f64a27d.entry.js.map} +1 -1
- package/dist/md3/{p-63b8c8d1.entry.js → p-408ee4be.entry.js} +2 -2
- package/dist/md3/{p-edb34a6d.entry.js → p-43c708ad.entry.js} +2 -2
- package/dist/md3/{p-3015c7e3.entry.js → p-4770b534.entry.js} +2 -2
- package/dist/md3/{p-c861d774.entry.js → p-4b7cf934.entry.js} +2 -2
- package/dist/md3/{p-2e09a7b7.entry.js → p-4f26bd60.entry.js} +2 -2
- package/dist/md3/{p-7b463fbe.entry.js → p-4f2e82cb.entry.js} +2 -2
- package/dist/md3/{p-be412e3f.entry.js → p-501bf161.entry.js} +2 -2
- package/dist/md3/{p-c063c823.entry.js → p-56c7c570.entry.js} +2 -2
- package/dist/md3/{p-2e9503d7.entry.js → p-56ca0c3c.entry.js} +2 -2
- package/dist/md3/{p-ac8762e5.entry.js → p-5b63149a.entry.js} +2 -2
- package/dist/md3/{p-c5af701b.entry.js → p-5f668b0a.entry.js} +2 -2
- package/dist/md3/p-6237ddac.entry.js +2 -0
- package/dist/md3/{p-e7dc5a32.entry.js.map → p-6237ddac.entry.js.map} +1 -1
- package/dist/md3/{p-8eb0b6a4.entry.js → p-6d65fc6a.entry.js} +2 -2
- package/dist/md3/{p-e3124e1e.entry.js → p-707b6d7c.entry.js} +2 -2
- package/dist/md3/{p-a5fee424.entry.js → p-71f1660b.entry.js} +2 -2
- package/dist/md3/{p-1a8ec5bc.entry.js → p-7501170f.entry.js} +2 -2
- package/dist/md3/p-7c8842bf.entry.js +2 -0
- package/dist/md3/{p-ba2ebde1.entry.js.map → p-7c8842bf.entry.js.map} +1 -1
- package/dist/md3/{p-4e3d6e40.entry.js → p-7d1686a7.entry.js} +2 -2
- package/dist/md3/p-7e7f0e45.entry.js +2 -0
- package/dist/md3/p-7e7f0e45.entry.js.map +1 -0
- package/dist/md3/p-80379565.entry.js +2 -0
- package/dist/md3/{p-6c44cf13.entry.js.map → p-80379565.entry.js.map} +1 -1
- package/dist/md3/p-830724e4.entry.js +2 -0
- package/dist/md3/p-830724e4.entry.js.map +1 -0
- package/dist/md3/{p-4dda4cb0.entry.js → p-845ca9cc.entry.js} +2 -2
- package/dist/md3/{p-77a01bcc.entry.js → p-87f88d62.entry.js} +2 -2
- package/dist/md3/{p-5b74694e.entry.js → p-89d47130.entry.js} +2 -2
- package/dist/md3/p-8a6fed13.entry.js +2 -0
- package/dist/md3/{p-a803da99.entry.js.map → p-8a6fed13.entry.js.map} +1 -1
- package/dist/md3/p-8a7e0297.entry.js +2 -0
- package/dist/md3/p-8a7e0297.entry.js.map +1 -0
- package/dist/md3/{p-b0431a5c.entry.js → p-8bdcda53.entry.js} +2 -2
- package/dist/md3/{p-c10a33c2.entry.js → p-8e7df348.entry.js} +2 -2
- package/dist/md3/p-9003a7d4.entry.js +2 -0
- package/dist/md3/p-9003a7d4.entry.js.map +1 -0
- package/dist/md3/{p-05ae91b6.entry.js → p-90ccf4c3.entry.js} +2 -2
- package/dist/md3/p-BdEoSBtL.js +2 -0
- package/dist/md3/{p-BjYKc1Ge.js.map → p-BdEoSBtL.js.map} +1 -1
- package/dist/md3/p-Bz-JaJcA.js +2 -0
- package/dist/md3/p-Bz-JaJcA.js.map +1 -0
- package/dist/md3/p-CGqeEMjY.js +2 -0
- package/dist/md3/{p-DzPKu-Ma.js.map → p-CGqeEMjY.js.map} +1 -1
- package/dist/md3/p-CVFH1DkU.js +2 -0
- package/dist/md3/{p-DvOKnoqK.js.map → p-CVFH1DkU.js.map} +1 -1
- package/dist/md3/p-Cch92tDM.js +2 -0
- package/dist/md3/{p-RLxbNqRv.js.map → p-Cch92tDM.js.map} +1 -1
- package/dist/md3/p-CfBPnYW7.js +2 -0
- package/dist/md3/p-CfBPnYW7.js.map +1 -0
- package/dist/md3/p-D17cVKxS.js +2 -0
- package/dist/md3/p-D17cVKxS.js.map +1 -0
- package/dist/md3/p-DGtztV3K.js +2 -0
- package/dist/md3/{p-Bx6--dQF.js.map → p-DGtztV3K.js.map} +1 -1
- package/dist/md3/p-DQuL1Twl.js +2 -0
- package/dist/md3/p-DQuL1Twl.js.map +1 -0
- package/dist/md3/p-DnKDoE8K.js +2 -0
- package/dist/md3/p-DnKDoE8K.js.map +1 -0
- package/dist/md3/p-WmvQpZnM.js +3 -0
- package/dist/md3/p-WmvQpZnM.js.map +1 -0
- package/dist/md3/p-a3623653.entry.js +2 -0
- package/dist/md3/{p-19ee9c33.entry.js.map → p-a3623653.entry.js.map} +1 -1
- package/dist/md3/{p-da4e27d4.entry.js → p-a4d4cfed.entry.js} +2 -2
- package/dist/md3/{p-5394254f.entry.js → p-a976498b.entry.js} +2 -2
- package/dist/md3/{p-6038b907.entry.js → p-ab568d1c.entry.js} +2 -2
- package/dist/md3/{p-bf7842f8.entry.js → p-adf8a415.entry.js} +2 -2
- package/dist/md3/p-ae30e899.entry.js +2 -0
- package/dist/md3/p-ae30e899.entry.js.map +1 -0
- package/dist/md3/{p-45280bf4.entry.js → p-b2d88292.entry.js} +2 -2
- package/dist/md3/{p-796f79f8.entry.js → p-b3b5247b.entry.js} +2 -2
- package/dist/md3/{p-5b799707.entry.js → p-b4266f6b.entry.js} +2 -2
- package/dist/md3/p-b54bbf88.entry.js +2 -0
- package/dist/md3/p-b54bbf88.entry.js.map +1 -0
- package/dist/md3/{p-c00f7514.entry.js → p-ba011453.entry.js} +2 -2
- package/dist/md3/{p-6ba63c73.entry.js → p-bc24f0c9.entry.js} +2 -2
- package/dist/md3/{p-0c2e824d.entry.js → p-c20fbb9e.entry.js} +2 -2
- package/dist/md3/{p-fc0b325d.entry.js → p-c2944c87.entry.js} +2 -2
- package/dist/md3/{p-4e45b2ff.entry.js → p-c58c68d0.entry.js} +2 -2
- package/dist/md3/p-cc6e8afd.entry.js +2 -0
- package/dist/md3/{p-72457a85.entry.js.map → p-cc6e8afd.entry.js.map} +1 -1
- package/dist/md3/{p-0f764a1e.entry.js → p-d2e39c6e.entry.js} +2 -2
- package/dist/md3/{p-50555bb7.entry.js → p-d8885f53.entry.js} +2 -2
- package/dist/md3/{p-c1ca6f6c.entry.js → p-db6fb4e1.entry.js} +2 -2
- package/dist/md3/{p-81843ff7.entry.js → p-dcba2857.entry.js} +2 -2
- package/dist/md3/{p-65195996.entry.js → p-e357e8ac.entry.js} +2 -2
- package/dist/md3/{p-39cb7c24.entry.js → p-e5c6795e.entry.js} +2 -2
- package/dist/md3/p-e871663b.entry.js +2 -0
- package/dist/md3/{p-aaec2698.entry.js.map → p-e871663b.entry.js.map} +1 -1
- package/dist/md3/p-f1b69181.entry.js +2 -0
- package/dist/md3/{p-a986fd24.entry.js.map → p-f1b69181.entry.js.map} +1 -1
- package/dist/md3/p-f297d786.entry.js +2 -0
- package/dist/md3/{p-3cce1de3.entry.js.map → p-f297d786.entry.js.map} +1 -1
- package/dist/md3/{p-e6d7f0ff.entry.js → p-f403ad20.entry.js} +2 -2
- package/dist/md3/p-f5399b73.entry.js +2 -0
- package/dist/md3/{p-04e97f5d.entry.js.map → p-f5399b73.entry.js.map} +1 -1
- package/dist/md3/{p-708a9313.entry.js → p-f5fd9a0b.entry.js} +2 -2
- package/dist/md3/{p-aa0e7d4d.entry.js → p-f71af38f.entry.js} +2 -2
- package/dist/md3/{p-757e3aaf.entry.js → p-fac6da4c.entry.js} +2 -2
- package/dist/md3/{p-134b670a.entry.js → p-fc864f96.entry.js} +2 -2
- package/dist/md3/{p-32bdd439.entry.js → p-fd686966.entry.js} +2 -2
- package/dist/md3/p-nhfFYWzy.js +2 -0
- package/dist/md3/{p-C_ogF68H.js.map → p-nhfFYWzy.js.map} +1 -1
- package/dist/types/utils/lazy-loading-indicator.d.ts +7 -0
- package/dist/types/wasm/engine-abi.d.ts +14 -0
- package/hydrate/index.js +191 -113
- package/hydrate/index.mjs +191 -113
- package/package.json +30 -5
- package/dist/cjs/index-DlQ_5_Mv.js.map +0 -1
- package/dist/cjs/md-button_7.cjs.entry.js.map +0 -1
- package/dist/cjs/virtual-select-controller-CqriaZgm.js.map +0 -1
- package/dist/components/p-BEWIC0pC.js +0 -2
- package/dist/components/p-BEWIC0pC.js.map +0 -1
- package/dist/components/p-DXXUoRSH.js.map +0 -1
- package/dist/components/p-MWBNn6Lj.js +0 -2
- package/dist/components/p-MWBNn6Lj.js.map +0 -1
- package/dist/components/p-UdGDg2oJ.js.map +0 -1
- package/dist/esm/index-DTaX19_O.js.map +0 -1
- package/dist/esm/md-button_7.entry.js.map +0 -1
- package/dist/esm/virtual-select-controller-BEWIC0pC.js.map +0 -1
- package/dist/md3/p-04e97f5d.entry.js +0 -2
- package/dist/md3/p-19ee9c33.entry.js +0 -2
- package/dist/md3/p-21772851.entry.js +0 -2
- package/dist/md3/p-21772851.entry.js.map +0 -1
- package/dist/md3/p-3cce1de3.entry.js +0 -2
- package/dist/md3/p-47af9819.entry.js +0 -2
- package/dist/md3/p-47af9819.entry.js.map +0 -1
- package/dist/md3/p-4d82132d.entry.js +0 -2
- package/dist/md3/p-6b2871a0.entry.js +0 -2
- package/dist/md3/p-6c44cf13.entry.js +0 -2
- package/dist/md3/p-72457a85.entry.js +0 -2
- package/dist/md3/p-BEWIC0pC.js +0 -2
- package/dist/md3/p-BEWIC0pC.js.map +0 -1
- package/dist/md3/p-DTaX19_O.js +0 -3
- package/dist/md3/p-DTaX19_O.js.map +0 -1
- package/dist/md3/p-a3308c40.entry.js +0 -2
- package/dist/md3/p-a7ffb779.entry.js +0 -2
- package/dist/md3/p-a7ffb779.entry.js.map +0 -1
- package/dist/md3/p-a803da99.entry.js +0 -2
- package/dist/md3/p-a986fd24.entry.js +0 -2
- package/dist/md3/p-aaec2698.entry.js +0 -2
- package/dist/md3/p-ac35ac5f.entry.js +0 -2
- package/dist/md3/p-ac35ac5f.entry.js.map +0 -1
- package/dist/md3/p-b4631a55.entry.js +0 -2
- package/dist/md3/p-b4631a55.entry.js.map +0 -1
- package/dist/md3/p-ba2ebde1.entry.js +0 -2
- package/dist/md3/p-cf07e761.entry.js +0 -2
- package/dist/md3/p-e7dc5a32.entry.js +0 -2
- package/dist/md3/p-f31ab454.entry.js +0 -2
- package/dist/md3/p-fb61868c.entry.js +0 -2
- /package/dist/{components/p-uTEkf0sE.js.map → components-csr/p-BEmwDSzw.js.map} +0 -0
- /package/dist/{components/p-C8EP4S21.js.map → components-csr/p-BQKzjYcY.js.map} +0 -0
- /package/dist/{components/p-BwXpiUsu.js.map → components-csr/p-BWMwewtY.js.map} +0 -0
- /package/dist/{components/p-B0Opn6dK.js.map → components-csr/p-Bkt_X-6v.js.map} +0 -0
- /package/dist/{md3 → components-csr}/p-Bx6--dQF.js +0 -0
- /package/dist/{components/p-stybaFzj.js.map → components-csr/p-C3vB0Hd9.js.map} +0 -0
- /package/dist/{components/p-B3MWYEEJ.js.map → components-csr/p-CF7mq5T7.js.map} +0 -0
- /package/dist/{components/p-7fN_yCXW.js.map → components-csr/p-CVMM-tdC.js.map} +0 -0
- /package/dist/{md3 → components-csr}/p-C_ogF68H.js +0 -0
- /package/dist/{components/p-Ch2-tttM.js.map → components-csr/p-DMQ-6aj8.js.map} +0 -0
- /package/dist/{components/p-e2HRV63Y.js.map → components-csr/p-DfcpeJAu.js.map} +0 -0
- /package/dist/{components/p-Dp-w93ot.js.map → components-csr/p-DjKPc5EU.js.map} +0 -0
- /package/dist/{md3 → components-csr}/p-DvOKnoqK.js +0 -0
- /package/dist/{md3 → components-csr}/p-DzPKu-Ma.js +0 -0
- /package/dist/{md3 → components-csr}/p-RLxbNqRv.js +0 -0
- /package/dist/{components/p-6wZSqm_2.js.map → components-csr/p-R_guULjT.js.map} +0 -0
- /package/dist/{components/p-Ddiw2Kjw.js.map → components-csr/p-uSMrgqAy.js.map} +0 -0
- /package/dist/md3/{p-9ddbf247.entry.js.map → p-108f89d7.entry.js.map} +0 -0
- /package/dist/md3/{p-c6a12344.entry.js.map → p-114c270b.entry.js.map} +0 -0
- /package/dist/md3/{p-396089fd.entry.js.map → p-1edb5a0d.entry.js.map} +0 -0
- /package/dist/md3/{p-b34d385b.entry.js.map → p-35b05b45.entry.js.map} +0 -0
- /package/dist/md3/{p-c2dd8c8c.entry.js.map → p-38e9a583.entry.js.map} +0 -0
- /package/dist/md3/{p-be02624e.entry.js.map → p-3c0469aa.entry.js.map} +0 -0
- /package/dist/md3/{p-63b8c8d1.entry.js.map → p-408ee4be.entry.js.map} +0 -0
- /package/dist/md3/{p-edb34a6d.entry.js.map → p-43c708ad.entry.js.map} +0 -0
- /package/dist/md3/{p-3015c7e3.entry.js.map → p-4770b534.entry.js.map} +0 -0
- /package/dist/md3/{p-c861d774.entry.js.map → p-4b7cf934.entry.js.map} +0 -0
- /package/dist/md3/{p-2e09a7b7.entry.js.map → p-4f26bd60.entry.js.map} +0 -0
- /package/dist/md3/{p-7b463fbe.entry.js.map → p-4f2e82cb.entry.js.map} +0 -0
- /package/dist/md3/{p-be412e3f.entry.js.map → p-501bf161.entry.js.map} +0 -0
- /package/dist/md3/{p-c063c823.entry.js.map → p-56c7c570.entry.js.map} +0 -0
- /package/dist/md3/{p-2e9503d7.entry.js.map → p-56ca0c3c.entry.js.map} +0 -0
- /package/dist/md3/{p-ac8762e5.entry.js.map → p-5b63149a.entry.js.map} +0 -0
- /package/dist/md3/{p-c5af701b.entry.js.map → p-5f668b0a.entry.js.map} +0 -0
- /package/dist/md3/{p-8eb0b6a4.entry.js.map → p-6d65fc6a.entry.js.map} +0 -0
- /package/dist/md3/{p-e3124e1e.entry.js.map → p-707b6d7c.entry.js.map} +0 -0
- /package/dist/md3/{p-a5fee424.entry.js.map → p-71f1660b.entry.js.map} +0 -0
- /package/dist/md3/{p-1a8ec5bc.entry.js.map → p-7501170f.entry.js.map} +0 -0
- /package/dist/md3/{p-4e3d6e40.entry.js.map → p-7d1686a7.entry.js.map} +0 -0
- /package/dist/md3/{p-4dda4cb0.entry.js.map → p-845ca9cc.entry.js.map} +0 -0
- /package/dist/md3/{p-77a01bcc.entry.js.map → p-87f88d62.entry.js.map} +0 -0
- /package/dist/md3/{p-5b74694e.entry.js.map → p-89d47130.entry.js.map} +0 -0
- /package/dist/md3/{p-b0431a5c.entry.js.map → p-8bdcda53.entry.js.map} +0 -0
- /package/dist/md3/{p-c10a33c2.entry.js.map → p-8e7df348.entry.js.map} +0 -0
- /package/dist/md3/{p-05ae91b6.entry.js.map → p-90ccf4c3.entry.js.map} +0 -0
- /package/dist/md3/{p-da4e27d4.entry.js.map → p-a4d4cfed.entry.js.map} +0 -0
- /package/dist/md3/{p-5394254f.entry.js.map → p-a976498b.entry.js.map} +0 -0
- /package/dist/md3/{p-6038b907.entry.js.map → p-ab568d1c.entry.js.map} +0 -0
- /package/dist/md3/{p-bf7842f8.entry.js.map → p-adf8a415.entry.js.map} +0 -0
- /package/dist/md3/{p-45280bf4.entry.js.map → p-b2d88292.entry.js.map} +0 -0
- /package/dist/md3/{p-796f79f8.entry.js.map → p-b3b5247b.entry.js.map} +0 -0
- /package/dist/md3/{p-5b799707.entry.js.map → p-b4266f6b.entry.js.map} +0 -0
- /package/dist/md3/{p-c00f7514.entry.js.map → p-ba011453.entry.js.map} +0 -0
- /package/dist/md3/{p-6ba63c73.entry.js.map → p-bc24f0c9.entry.js.map} +0 -0
- /package/dist/md3/{p-0c2e824d.entry.js.map → p-c20fbb9e.entry.js.map} +0 -0
- /package/dist/md3/{p-fc0b325d.entry.js.map → p-c2944c87.entry.js.map} +0 -0
- /package/dist/md3/{p-4e45b2ff.entry.js.map → p-c58c68d0.entry.js.map} +0 -0
- /package/dist/md3/{p-0f764a1e.entry.js.map → p-d2e39c6e.entry.js.map} +0 -0
- /package/dist/md3/{p-50555bb7.entry.js.map → p-d8885f53.entry.js.map} +0 -0
- /package/dist/md3/{p-c1ca6f6c.entry.js.map → p-db6fb4e1.entry.js.map} +0 -0
- /package/dist/md3/{p-81843ff7.entry.js.map → p-dcba2857.entry.js.map} +0 -0
- /package/dist/md3/{p-65195996.entry.js.map → p-e357e8ac.entry.js.map} +0 -0
- /package/dist/md3/{p-39cb7c24.entry.js.map → p-e5c6795e.entry.js.map} +0 -0
- /package/dist/md3/{p-e6d7f0ff.entry.js.map → p-f403ad20.entry.js.map} +0 -0
- /package/dist/md3/{p-708a9313.entry.js.map → p-f5fd9a0b.entry.js.map} +0 -0
- /package/dist/md3/{p-aa0e7d4d.entry.js.map → p-f71af38f.entry.js.map} +0 -0
- /package/dist/md3/{p-757e3aaf.entry.js.map → p-fac6da4c.entry.js.map} +0 -0
- /package/dist/md3/{p-134b670a.entry.js.map → p-fc864f96.entry.js.map} +0 -0
- /package/dist/md3/{p-32bdd439.entry.js.map → p-fd686966.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"md-autocomplete.cjs.entry.js","mappings":"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","names":["VirtualSelectController","forceUpdate","h","isWasmSupported","collectOptions","setFormValue","getValidityOf","checkValidityOf","reportValidityOf","Host"],"sources":["src/components/md-autocomplete/md-autocomplete.css?tag=md-autocomplete&encapsulation=shadow","src/components/md-autocomplete/md-autocomplete.tsx"],"sourcesContent":["/* ==========================================================\n md-autocomplete — Material Design 3 free-text + filterable\n dropdown. Composes md-text-field + md-menu.\n\n PUBLIC CSS CUSTOM PROPERTIES (override per-instance):\n --md-autocomplete-width Trigger width (default 100% of container)\n --md-autocomplete-min-width Minimum trigger width\n --md-autocomplete-chip-gap Gap between selected chips\n --md-autocomplete-chip-radius Chip corner radius\n --md-autocomplete-caret-color Trailing caret color\n --md-autocomplete-caret-size Caret glyph size (default 24px)\n --md-autocomplete-clear-color Clear button color\n --md-autocomplete-option-icon-size Leading-icon size in items\n --md-autocomplete-loading-color Color of the loading row\n --md-autocomplete-spinner-size Trigger busy-spinner size (default 22px)\n\n CSS PARTS:\n field Inner md-text-field\n chips Selected chips container\n caret Trailing dropdown caret\n clear Trailing clear button\n menu Popup md-menu\n loading Loading row inside the menu\n loading-spinner Trigger busy spinner (replaces clear/caret)\n\n SLOTS:\n loader Replaces the default trigger busy spinner\n dropdown-icon Replaces the caret glyph\n ========================================================== */\n\n:host {\n /* The text inset already includes the caret's 7px optical bearing (see\n md-text-field --_text-inset). Pull the TRAILING side back to the plain\n box inset so the caret's BOX sits 7px shallower and its INK lands on the\n same column as the text. */\n --md-text-field-padding-inline-end: var(--md-sys-spacing-inset-lg, 16px);\n --_min-width: var(--md-autocomplete-min-width, 220px);\n --_chip-gap: var(--md-autocomplete-chip-gap, var(--md-sys-spacing-gap-xs, 4px));\n --_chip-radius: var(--md-autocomplete-chip-radius, 8px);\n --_caret-color: var(--md-autocomplete-caret-color, var(--md-sys-color-on-surface-variant));\n --_clear-color: var(--md-autocomplete-clear-color, var(--md-sys-color-on-surface-variant));\n --_option-icon-size: var(--md-autocomplete-option-icon-size, 20px);\n --_loading-color: var(--md-autocomplete-loading-color, var(--md-sys-color-on-surface-variant));\n\n /* Fill the container (like md-select) — the trigger width must come from\n layout, never from the typed text (a shrink-to-fit inline-block would\n grow/shrink with the input's content). Flex column so chip-position can\n reorder the chips around the field. */\n display: inline-flex;\n flex-direction: column;\n inline-size: var(--md-autocomplete-width, 100%);\n min-inline-size: var(--_min-width);\n box-sizing: border-box;\n vertical-align: bottom;\n position: relative;\n}\n\n/* ── Chip positions around the field ───────────────────────── */\n\n:host(.md-autocomplete--chips-top) .md-autocomplete__chips {\n /* DOM order puts the chips first for top/left (focus + reading order must\n match the visual order) — no CSS `order` reshuffling. */\n margin-block-start: 0;\n margin-block-end: var(--md-sys-spacing-inset-sm, 8px);\n}\n\n:host(.md-autocomplete--chips-left),\n:host(.md-autocomplete--chips-right) {\n flex-direction: row;\n align-items: center;\n gap: var(--md-sys-spacing-gap-sm, 8px);\n}\n\n:host(.md-autocomplete--chips-left) .md-autocomplete__field,\n:host(.md-autocomplete--chips-right) .md-autocomplete__field {\n flex: 1 1 auto;\n inline-size: auto;\n min-inline-size: 0;\n}\n\n:host(.md-autocomplete--chips-left) .md-autocomplete__chips,\n:host(.md-autocomplete--chips-right) .md-autocomplete__chips {\n /* Beside the field: bounded content width (contain would collapse a row\n flex item to zero), wrapping within it. */\n contain: none;\n flex: 0 1 auto;\n max-inline-size: 50%;\n margin-block-start: 0;\n}\n\n\n.md-autocomplete__field {\n display: block;\n inline-size: 100%;\n}\n\n.md-autocomplete__chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--_chip-gap);\n max-inline-size: 100%;\n margin-block-start: var(--md-sys-spacing-inset-sm, 8px);\n /* Chips must not contribute intrinsic width: in a shrink-to-fit layout the\n row's max-content (all chips on one line) would widen the whole host as\n the selection grows. Contained, the trigger field alone sizes the host\n and the chips wrap within it. */\n contain: inline-size;\n}\n\n.md-autocomplete__chips md-chip {\n --md-chip-container-shape: var(--_chip-radius);\n}\n\n/* Chips INSIDE the field (chip-position=\"inline\"): slotted into md-text-field's\n `chips` slot with chips-wrap — they wrap onto new rows and the field grows. */\n.md-autocomplete__inline-chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--_chip-gap);\n min-inline-size: 0;\n overflow: visible;\n}\n\n.md-autocomplete__inline-chips md-chip {\n --md-chip-container-shape: var(--_chip-radius);\n flex-shrink: 0;\n}\n\n/* ── Trailing controls (caret + clear) ─────────────────────── */\n\n.md-autocomplete__caret {\n color: var(--_caret-color);\n /* Match the selects: 24px glyph, 200ms/standard rotation (see md-select.css). */\n font-size: var(--md-autocomplete-caret-size, 24px);\n line-height: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 24px;\n block-size: 24px;\n cursor: pointer;\n transition: transform var(--md-sys-motion-duration-short4, 200ms)\n var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));\n}\n\n:host(.md-autocomplete--open) .md-autocomplete__caret {\n transform: rotate(180deg);\n}\n\n/* The clear affordance is an md-icon-button (ring/ripple/a11y for free);\n sized down to sit inside the field's trailing cluster. */\n.md-autocomplete__clear {\n --md-icon-button-container-width: 28px;\n --md-icon-button-container-height: 28px;\n --md-icon-button-icon-size: 18px;\n color: var(--_clear-color);\n margin-inline-end: 2px;\n}\n\n/* Space stays reserved; the button is just invisible + inert while there is\n nothing to clear (visibility also drops it from the tab order / AT). */\n.md-autocomplete__clear--hidden {\n visibility: hidden;\n pointer-events: none;\n}\n\n/* Busy state: trigger spinner replacing the clear/caret cluster (see the\n selects — same sizing convention). */\n.md-autocomplete__loader {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 24px;\n block-size: 24px;\n --md-loading-indicator-size: var(--md-autocomplete-spinner-size, 22px);\n --md-loading-indicator-shape-size: var(--md-autocomplete-spinner-size, 22px);\n}\n\n/* ── Menu styling ──────────────────────────────────────────── */\n\n/* Centred, like the selects' empty states. */\nmd-menu::part(empty-text) {\n display: flex;\n justify-content: center;\n padding: var(--md-sys-spacing-inset-md, 12px) var(--md-sys-spacing-inset-lg, 16px);\n color: var(--md-sys-color-on-surface-variant);\n text-align: center;\n}\n\n.md-autocomplete__option-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--md-autocomplete-option-icon-color, var(--md-sys-color-on-surface-variant, #49454f));\n font-size: var(--_option-icon-size);\n inline-size: var(--_option-icon-size);\n block-size: var(--_option-icon-size);\n}\n\n/* Listbox wrapper (plain + virtualized) — the spacers preserve the full\n scroll height around the rendered window. */\n.md-autocomplete__listbox {\n display: block;\n}\n\n.md-autocomplete__vspacer {\n inline-size: 100%;\n pointer-events: none;\n}\n\n.md-autocomplete__loading {\n display: block;\n padding: var(--md-sys-spacing-inset-md, 12px) var(--md-sys-spacing-inset-lg, 16px);\n color: var(--_loading-color);\n}\n\n/* Visually-hidden polite status region (expanded count / busy). */\n.md-autocomplete__sr-status {\n position: absolute;\n inline-size: 1px;\n block-size: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n}\n\n/* ── Disabled ──────────────────────────────────────────────── */\n\n:host(.md-autocomplete--disabled),\n:host(.md-autocomplete--soft-disabled) {\n pointer-events: none;\n}\n\n:host(.md-autocomplete--soft-disabled) .md-autocomplete__field {\n pointer-events: auto;\n}\n\n/* ── RTL ────────────────────────────────────────────────────── */\n\n/* ── Reduced motion ────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .md-autocomplete__caret,\n .md-autocomplete__clear {\n transition: none;\n }\n}\n\n/* ── Forced colors (Windows High Contrast) ─────────────────── */\n\n@media (forced-colors: active) {\n .md-autocomplete__caret,\n .md-autocomplete__clear {\n color: CanvasText;\n }\n}\n\n/* ── Material Symbols font (shadow-root scope) ─────────────── */\n\n/* Caret, clear, and option icons render inside our shadow root\n (even when slotted into nested md-text-field / md-menu-item),\n so they need the font-family declared locally — shadow DOM\n does not inherit page-level CSS class rules. */\n.material-symbols-outlined {\n font-family: var(--md-sys-icon-font-family, 'Material Symbols Outlined', 'Material Icons');\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n overflow-wrap: normal;\n direction: ltr;\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n}\n\n/* ==========================================================\n DENSITY (local override)\n This component FORWARDS `density` to the md-text-field it embeds, which\n handles the field box — but that forward says nothing about this host, so its\n OWN chrome (dropdown surface, chips, frame gaps) stayed at density-0 whenever\n density came from the local prop rather than a global ancestor. Mapping the\n prop onto the shared signal here fixes that asymmetry; the spacing-token half\n of the rung arrives from the [density=\"-N\"] selector in tokens.css.\n ========================================================== */\n:host([density='-1']) { --md-sys-density-scale: -1; }\n:host([density='-2']) { --md-sys-density-scale: -2; }\n:host([density='-3']) { --md-sys-density-scale: -3; }\n:host([density='-4']) { --md-sys-density-scale: -4; }\n","import { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, forceUpdate, h } from '@stencil/core';\nimport { setFormValue, checkValidityOf, reportValidityOf, getValidityOf } from '../../utils/form';\nimport {\n collectOptions,\n SelectOptionData,\n SelectOptionInit,\n OptionRowSource,\n} from '../../utils/select-options';\nimport { VirtualSelectController } from '../../utils/virtual-select-controller';\nimport { isWasmSupported, FilterMode } from '../../utils/wasm-option-store';\n\nlet autocompleteIdCounter = 0;\n\n/** Above this many options, `virtualize=\"auto\"` switches to the WASM path. */\nconst VIRTUALIZE_THRESHOLD = 200;\n\n/** Idle time after a keystroke before the virtualized query runs (debounce). */\nconst SEARCH_DEBOUNCE_MS = 200;\n\n/**\n * Programmatic option entry. Extends the shared select model with a\n * legacy `description` alias for `supportingText`.\n */\nexport interface MdAutocompleteOption extends SelectOptionInit {\n /** @deprecated Use `supportingText`. */\n description?: string;\n}\n\ninterface VirtualMenuEl extends HTMLElement {\n show?: (opts?: { autoFocus?: boolean }) => Promise<void>;\n close?: () => Promise<void>;\n setVirtualProvider?: (p: unknown | null) => Promise<void>;\n getScrollViewport?: () => Promise<HTMLElement | null>;\n}\n\n/**\n * `md-autocomplete` — Material Design 3 combobox: a text field that filters\n * a dropdown listbox **as you type in the input** (no separate search row),\n * with single or multiple (chips) selection.\n *\n * Built from the same primitives as `md-select` / `md-multi-select`:\n * - the shared option model (`options` array of `{ value, label,\n * supportingText?, icon?, iconColor?, disabled? }` or slotted\n * `<md-select-option>` children),\n * - `md-text-field` for the trigger (typing filters live),\n * - `md-menu` as a WAI-ARIA listbox popup (options carry `aria-selected`),\n * - `VirtualSelectController` for WASM-virtualized huge datasets\n * (`virtualize`, `loadOptions()`, `filter-mode`) — the same engine as\n * the selects, so tens of thousands of rows filter smoothly.\n *\n * Keyboard: typing filters; ArrowDown moves focus into the listbox (the\n * focus-moves-into-popup combobox variant — option focus is announced\n * directly); Enter selects; Escape closes back to the input; Backspace on an\n * empty multi input removes the last chip.\n *\n * ARIA: the real textbox — the `<input>` inside md-text-field's shadow root —\n * is promoted to `role=\"combobox\"` with `aria-expanded` / `aria-autocomplete`\n * (handed over via `input-role`, since only that component renders the input),\n * and points at this component's listbox through ARIA element reflection. An\n * IDREF could not: it would have to resolve inside md-text-field's tree, where\n * the listbox is not. See `syncComboboxRefs`.\n *\n * Extras kept from the surface this API mirrors: `free-solo` (commit arbitrary text),\n * `max-selected`, `clearable`, `disable-close-on-select`, `clear-on-blur`,\n * a custom `filterer` and `limit-results` (client-side path only).\n */\n@Component({\n tag: 'md-autocomplete',\n styleUrl: 'md-autocomplete.css',\n shadow: true,\n formAssociated: true,\n})\nexport class MdAutocomplete {\n @Element() el!: HTMLElement;\n\n\n /**\n * Localized constraint-validation message shown when `required` is unmet.\n * `errorText` still wins when set, so an app-supplied inline message and the\n * native bubble stay in agreement.\n */\n @Prop({ attribute: 'value-missing-label' }) valueMissingLabel: string = 'Please make a selection';\n\n\n /**\n * Always occupy the supporting-text line, even when there is no message, so a\n * validation error does not push the content below it down. Forwarded to the\n * embedded md-text-field. See that component for why it is opt-in.\n */\n @Prop({ attribute: 'reserve-supporting-space' }) reserveSupportingSpace: boolean = false;\n\n /** Message set via setCustomValidity(); non-empty wins over valueMissing. */\n private customValidityMessage = '';\n\n /**\n * Form-association handle. The selection is submitted under the host's\n * `name` via `setFormValue` (a single string, or repeated pairs when\n * `multiple`), so the control participates in `<form>`/`FormData` natively.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /** Visual variant of the inner text-field. */\n @Prop({ reflect: true }) variant: 'filled' | 'outlined' = 'filled';\n\n /** Floating label / accessible name. */\n @Prop() label: string = '';\n\n /** Placeholder for the input. */\n @Prop() placeholder: string = '';\n\n /** Supporting / helper text below the field. */\n @Prop({ attribute: 'supporting-text' }) supportingText: string = '';\n\n /** Error state — forwarded to the text-field. */\n @Prop({ reflect: true }) error: boolean = false;\n\n /** Error text rendered in place of supporting text when `error` is true. */\n @Prop({ attribute: 'error-text' }) errorText: string = '';\n\n /** Disabled — non-interactive. */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /** Soft-disabled — focusable but non-interactive. */\n @Prop({ reflect: true, attribute: 'soft-disabled' }) softDisabled: boolean = false;\n\n /** Required for native form parity. */\n @Prop({ reflect: true }) required: boolean = false;\n\n /** Density forwarded to the text-field. */\n @Prop({ reflect: true }) density: 0 | -1 | -2 | -3 | -4 = 0;\n\n /**\n * Programmatic options (shared select model; `description` is accepted as\n * a legacy alias for `supportingText`). Slotted `<md-select-option>`\n * children take precedence when present.\n *\n * Accepts either the array (property) or a **JSON string** (attribute), the\n * same contract `md-organization-chart.nodes` uses — so a plain-HTML page can\n * declare its dataset inline instead of reaching for a script:\n *\n * <md-autocomplete options='[{\"value\":\"a\",\"label\":\"Apple\"}]'></md-autocomplete>\n *\n * Malformed JSON degrades to an empty list rather than throwing: a broken\n * attribute must not take the whole field down.\n */\n @Prop() options: MdAutocompleteOption[] | string = [];\n\n /** Multi-select mode — the selection renders as removable chips. */\n @Prop({ reflect: true }) multiple: boolean = false;\n\n /** Where the selection chips live (`multiple` only): around the field\n * (`'below'` default, `'top'`, `'left'`, `'right'`) or `'inline'` inside\n * it, before the input, wrapping onto new rows as the selection grows\n * (the field grows with them). */\n @Prop({ attribute: 'chip-position', reflect: true }) chipPosition:\n | 'below'\n | 'top'\n | 'left'\n | 'right'\n | 'inline' = 'below';\n\n /**\n * Single-mode value — option `value` or free-solo string.\n * Multi-mode value — array of option `value`s.\n */\n @Prop({ mutable: true }) value: string | string[] = '';\n\n /** Live text of the input (separate from `value` so typing never commits). */\n @Prop({ mutable: true, attribute: 'input-value' }) inputValue: string = '';\n\n /** Allow committing arbitrary text (not just options) with Enter. */\n @Prop({ reflect: true, attribute: 'free-solo' }) freeSolo: boolean = false;\n\n /** When `multiple`, the max number of selected items (`0` = no limit). */\n @Prop({ attribute: 'max-selected' }) maxSelected: number = 0;\n\n /** Busy state: progress bar in the menu while an async dataset loads. */\n @Prop({ reflect: true }) loading: boolean = false;\n\n /** Empty-state text when the dataset has no options at all. */\n @Prop({ attribute: 'no-options-text' }) noOptionsText: string = 'No options';\n\n /** Empty-state text when the typed filter matches nothing. */\n @Prop({ attribute: 'no-results-text' }) noResultsText: string = 'No results';\n\n /** Text shown while `loading` is true. */\n @Prop({ attribute: 'loading-text' }) loadingText: string = 'Loading…';\n\n /** Template for the polite screen-reader status while the popup is open\n * (localisable). `{count}` is replaced with the visible option count. */\n @Prop({ attribute: 'status-template' }) statusTemplate: string = '{count} suggestions available';\n\n /**\n * Keep the menu open after a selection in **single** mode.\n *\n * `multiple` already stays open — picking several in a row is the point, and\n * it dismisses on an outside click, on the trigger, or on Escape. This prop\n * gives a single-select the same stickiness when a picker is being used to\n * scan rather than to commit.\n */\n @Prop({ attribute: 'disable-close-on-select', reflect: true }) disableCloseOnSelect: boolean = false;\n\n /** Clear a non-matching input on blur (strict single mode only). */\n @Prop({ attribute: 'clear-on-blur', reflect: true }) clearOnBlur: boolean = false;\n\n /** Show a clear (×) button on the trailing edge. */\n @Prop({ reflect: true }) clearable: boolean = true;\n\n /** Material Symbols glyph for the clear button. */\n @Prop({ attribute: 'clear-icon' }) clearIcon: string = 'close';\n\n /** Caret glyph; rotates 180° when open (matches md-select). Slot\n * `dropdown-icon` overrides it. */\n @Prop({ attribute: 'dropdown-icon' }) dropdownIcon: string = 'arrow_drop_down';\n\n /** Max items shown in the dropdown (`0` = unlimited; client-side path only). */\n @Prop({ attribute: 'limit-results' }) limitResults: number = 0;\n\n /** Open state. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Custom client-side filter (ignored while virtualized — the WASM engine\n * filters by `filter-mode` instead).\n */\n @Prop() filterer?: (\n options: SelectOptionData[],\n state: { inputValue: string; selected: string[] },\n ) => SelectOptionData[];\n\n /**\n * Virtualization strategy (same engine as `md-select`):\n * - `'auto'` (default): virtualize above 200 rows.\n * - `'always'`: always virtualize the `options` / `loadOptions` dataset.\n * - `'never'`: plain DOM rendering.\n */\n @Prop() virtualize: 'auto' | 'always' | 'never' = 'auto';\n\n /** Filter strategy for the virtualized (WASM) path. */\n @Prop({ attribute: 'filter-mode' }) filterMode: FilterMode = 'substring';\n\n /** Fixed virtualized row height (px). Auto-measured from the first row if unset. */\n @Prop({ attribute: 'row-height' }) rowHeight?: number;\n\n /** Menu placement. */\n @Prop() placement: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' = 'bottom-start';\n\n /** Match the dropdown width to the trigger. */\n @Prop({ attribute: 'match-trigger-width' }) matchTriggerWidth: boolean = true;\n\n /** Max height of the dropdown menu (px). */\n @Prop({ attribute: 'max-height' }) maxHeight?: number;\n\n /** Form name. Multi-mode submits as repeated `name=value` pairs. */\n @Prop({ reflect: true }) name: string = '';\n\n /** Fires whenever the committed selection changes. */\n @Event() mdChange: EventEmitter<string | string[]>;\n\n /** Fires whenever the live input string changes. */\n @Event() mdInput: EventEmitter<string>;\n\n /** Fires when the menu opens. */\n @Event() mdOpen: EventEmitter<void>;\n\n /** Fires when the menu closes. */\n @Event() mdClose: EventEmitter<void>;\n\n /** Fires when the user clears the value. */\n @Event() mdClear: EventEmitter<void>;\n\n @State() private triggerId: string = `md-autocomplete-${++autocompleteIdCounter}`;\n @State() private focused: boolean = false;\n /** Normalised dataset for the plain-DOM path (empty while virtualized). */\n @State() private optionsData: SelectOptionData[] = [];\n /** value → label cache so chips / the input label survive off-window rows. */\n @State() private labelMap: Map<string, string> = new Map();\n\n /** True while a dataset is packing into the WASM store — presents the same\n * busy UI as `loading` until the rows are ready. */\n @State() private packing = false;\n\n /** True once the user typed since the menu opened — before that the full\n * list shows (reopening a committed single value must not filter to it). */\n private typedSinceOpen = false;\n\n /** Monotonic guard: only the NEWEST load may commit its results (a dataset\n * replaced mid-pack must not interleave or resurrect stale state). */\n private loadGen = 0;\n\n /** Deferred focus target inside the freshly-opened listbox (APG: ArrowDown\n * from a closed combobox opens AND focuses the first option). */\n private pendingListFocus: 'first' | 'last' | null = null;\n\n private fieldEl?: HTMLElement & { focus?: () => void };\n private menuEl?: VirtualMenuEl;\n private searchDebounce?: ReturnType<typeof setTimeout>;\n private providerSet = false;\n\n private vc = new VirtualSelectController({\n queryItem: (i) =>\n (this.el.shadowRoot?.querySelector(\n `md-menu-item[data-vindex=\"${i}\"]`,\n ) as HTMLElement | null) ?? null,\n requestRender: () => forceUpdate(this),\n });\n\n // ── Public API ───────────────────────────────────────────\n\n /** Programmatically focus the input. */\n @Method()\n async focusInput() {\n this.fieldEl?.focus?.();\n }\n\n /** Open the menu. */\n @Method()\n async showMenu() {\n if (this.disabled) return;\n this.open = true;\n }\n\n /** Close the menu. */\n @Method()\n async closeMenu() {\n this.open = false;\n }\n\n /**\n * Load a large dataset into the WASM-backed virtualized list (rows are\n * byte-packed off the JS heap). Accepts an array or a `{ count, getRow }`\n * factory. Falls back to plain DOM when `virtualize=\"never\"` or WASM is\n * unavailable.\n */\n @Method()\n async loadOptions(source: SelectOptionInit[] | OptionRowSource) {\n const gen = ++this.loadGen;\n if (this.virtualize === 'never' || !isWasmSupported()) {\n const rows = Array.isArray(source)\n ? source\n : Array.from({ length: source.count }, (_, i) => source.getRow(i));\n this.vc.reset();\n this.optionsData = this.normalize(rows);\n this.refreshLabelMap();\n return;\n }\n this.optionsData = [];\n this.packing = true;\n try {\n this.vc.setFixedRowHeight(this.rowHeight);\n this.vc.setFilterMode(this.filterMode);\n await this.vc.load(Array.isArray(source) ? this.normalize(source) : source);\n } finally {\n if (gen === this.loadGen) this.packing = false;\n }\n if (gen !== this.loadGen) return; // superseded by a newer load/refresh\n // A filter typed while the pack ran must apply to the fresh dataset.\n if (this.open && this.typedSinceOpen) this.vc.setQuery(this.query);\n this.refreshLabelMap();\n forceUpdate(this);\n }\n\n /** Resolve labels for a set of values (virtual-safe). */\n @Method()\n async getLabels(values: string[]): Promise<Record<string, string>> {\n if (this.vc.active) return Object.fromEntries(this.vc.getLabels(values));\n const out: Record<string, string> = {};\n for (const v of values) out[v] = this.labelMap.get(v) ?? v;\n return out;\n }\n\n // ── Option collection ────────────────────────────────────\n\n /** Accept the legacy `description` alias for `supportingText`. */\n private normalize(list: ReadonlyArray<MdAutocompleteOption>): SelectOptionData[] {\n return list.map((o) => ({\n value: o.value,\n label: o.label ?? o.value,\n disabled: !!o.disabled,\n icon: o.icon,\n iconColor: o.iconColor,\n supportingText: o.supportingText ?? o.description,\n selected: !!o.selected,\n }));\n }\n\n /**\n * `options` arrives as an array from a property binding, or as a JSON string\n * from an attribute. Everything downstream wants the array.\n */\n private get optionList(): MdAutocompleteOption[] {\n const raw = this.options;\n if (Array.isArray(raw)) return raw;\n if (typeof raw === 'string' && raw.trim()) {\n try {\n const parsed = JSON.parse(raw);\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n // A malformed attribute is an authoring mistake, not a reason to break\n // the field — warn once and carry on with nothing.\n if (typeof console !== 'undefined') {\n console.warn('[md-autocomplete] `options` attribute is not valid JSON:', raw);\n }\n return [];\n }\n }\n return [];\n }\n\n @Watch('options')\n refreshOptions() {\n const slotted = collectOptions(this.el, []);\n const data = slotted.length > 0 ? slotted : this.normalize(this.optionList);\n const shouldVirtualize =\n this.virtualize === 'always' ||\n (this.virtualize === 'auto' && data.length > VIRTUALIZE_THRESHOLD);\n const gen = ++this.loadGen;\n\n if (shouldVirtualize && isWasmSupported() && data.length > 0) {\n this.optionsData = [];\n this.packing = true;\n this.vc.setFixedRowHeight(this.rowHeight);\n this.vc.setFilterMode(this.filterMode);\n void this.vc.load(data).then((ok) => {\n if (gen !== this.loadGen) return; // superseded by a newer load/refresh\n if (!ok) {\n this.optionsData = data;\n }\n this.packing = false;\n // A filter typed while the pack ran must apply to the fresh dataset.\n if (ok && this.open && this.typedSinceOpen) this.vc.setQuery(this.query);\n this.refreshLabelMap();\n forceUpdate(this);\n });\n } else {\n this.vc.reset();\n this.optionsData = data;\n this.refreshLabelMap();\n }\n }\n\n /** Slotted `<md-select-option>` mount/unmount/data change → re-read. */\n @Listen('mdSelectOptionChange')\n onOptionChange(e: Event) {\n e.stopPropagation();\n this.refreshOptions();\n }\n\n // ── Selection state ──────────────────────────────────────\n\n /** Effective busy state: consumer-driven `loading` OR an in-flight pack. */\n private get busy(): boolean {\n return this.loading || this.packing;\n }\n\n private get selectedArray(): string[] {\n if (this.multiple) return Array.isArray(this.value) ? this.value : [];\n if (typeof this.value === 'string' && this.value) return [this.value];\n return [];\n }\n\n private isSelected = (val: string) => this.selectedArray.includes(val);\n\n /** The active filter query: only what the user typed since open counts. */\n private get query(): string {\n return this.typedSinceOpen ? this.inputValue.trim() : '';\n }\n\n private get filteredOptions(): SelectOptionData[] {\n const selected = this.selectedArray;\n const state = { inputValue: this.query, selected };\n let results = this.filterer\n ? this.filterer(this.optionsData, state)\n : this.defaultFilter(this.optionsData, state);\n if (this.limitResults > 0) results = results.slice(0, this.limitResults);\n return results;\n }\n\n private defaultFilter(\n options: SelectOptionData[],\n state: { inputValue: string; selected: string[] },\n ): SelectOptionData[] {\n const q = state.inputValue.toLowerCase();\n if (!q) return options;\n return options.filter(\n (o) =>\n o.label.toLowerCase().includes(q) ||\n o.value.toLowerCase().includes(q) ||\n (o.supportingText?.toLowerCase().includes(q) ?? false),\n );\n }\n\n /** Rebuild the value→label cache (chips, single-mode input text). */\n private refreshLabelMap() {\n const values = this.selectedArray;\n if (values.length === 0) {\n if (this.labelMap.size) this.labelMap = new Map();\n return;\n }\n const next = new Map<string, string>();\n if (this.vc.active) {\n const resolved = this.vc.getLabels(values);\n for (const v of values) {\n next.set(v, resolved.get(v) ?? this.labelMap.get(v) ?? v);\n }\n } else {\n for (const v of values) {\n const opt = this.optionsData.find((o) => o.value === v);\n next.set(v, opt?.label ?? this.labelMap.get(v) ?? v);\n }\n }\n this.labelMap = next;\n }\n\n // ── Form association ─────────────────────────────────────\n\n private defaultValue: string | string[] = '';\n private defaultInputValue = '';\n\n componentWillLoad() {\n this.refreshOptions();\n this.defaultValue = Array.isArray(this.value) ? [...this.value] : this.value;\n this.defaultInputValue = this.inputValue;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n // @Watch('open') does not fire for the initial value.\n if (this.open && !this.disabled) {\n void this.menuEl?.show?.({ autoFocus: false });\n this.mdOpen.emit();\n }\n }\n\n disconnectedCallback() {\n clearTimeout(this.searchDebounce);\n this.vc.detachViewport();\n }\n\n formResetCallback() {\n this.value = Array.isArray(this.defaultValue) ? [...this.defaultValue] : this.defaultValue;\n this.inputValue = this.defaultInputValue;\n // Stale filter state must not survive a reset.\n this.typedSinceOpen = false;\n clearTimeout(this.searchDebounce);\n if (this.vc.active) this.vc.setQuery('');\n }\n\n @Watch('value')\n syncFormValue() {\n this.updateValidity();\n this.refreshLabelMap();\n // Programmatic single-mode value set (menu closed): reflect the committed\n // label in the visible input — otherwise the field shows stale text until\n // the next interaction. Silent (no mdInput): this is not user typing.\n if (!this.multiple && !this.open) {\n const committed =\n typeof this.value === 'string' && this.value\n ? this.labelMap.get(this.value) ?? this.value\n : '';\n if (this.inputValue !== committed) this.inputValue = committed;\n }\n if (this.multiple) {\n const values = this.selectedArray;\n if (!values.length) {\n setFormValue(this.internals, null);\n return;\n }\n const data = new FormData();\n for (const v of values) data.append(this.name || '', v);\n setFormValue(this.internals, data);\n return;\n }\n const single = typeof this.value === 'string' ? this.value : '';\n setFormValue(this.internals, single || null);\n }\n\n /** Flipping `multiple` at runtime must re-shape the value and re-submit —\n * ElementInternals would otherwise keep the pre-flip payload. */\n @Watch('multiple')\n onMultipleFlip() {\n if (this.multiple) {\n if (typeof this.value === 'string') this.value = this.value ? [this.value] : [];\n else this.syncFormValue();\n } else {\n if (Array.isArray(this.value)) this.value = this.value[0] ?? '';\n else this.syncFormValue();\n }\n }\n\n @Watch('required')\n @Watch('valueMissingLabel')\n updateValidity() {\n if (!this.internals?.setValidity) return;\n // setCustomValidity() takes precedence over valueMissing, matching native.\n if (this.customValidityMessage) {\n this.internals.setValidity(\n { customError: true },\n this.customValidityMessage,\n (this.fieldEl as HTMLElement) ?? this.el,\n );\n } else if (this.required && this.selectedArray.length === 0) {\n this.internals.setValidity(\n { valueMissing: true },\n this.errorText || this.valueMissingLabel,\n (this.fieldEl as HTMLElement) ?? this.el,\n );\n } else {\n this.internals.setValidity({});\n }\n this.emitValidityChange();\n }\n\n /** Current validity: boolean, message and flags. Mirrors md-text-field. */\n @Method()\n async getValidity(): Promise<{\n valid: boolean;\n validationMessage: string;\n flags: Record<string, boolean>;\n }> {\n return getValidityOf(this.internals);\n }\n\n /**\n * Fires when this control's validity CHANGES — never on every keystroke, and\n * never for a re-publish that lands on the same state.\n *\n * `composed: false` is deliberate. Composites like md-select embed an\n * md-text-field, and a composed event escapes that inner shadow root, so a\n * listener on md-select would receive the inner field's event as well as the\n * host's — two events, different payloads, for one logical control. Keeping\n * it uncomposed means each component reports only for itself, while\n * `bubbles: true` still lets a <form> or app root hear every control.\n */\n @Event({ bubbles: true, composed: false }) mdValidityChange: EventEmitter<{\n valid: boolean;\n validationMessage: string;\n flags: Record<string, boolean>;\n }>;\n\n /** Last emitted validity, so a re-publish that changes nothing stays silent. */\n private lastValidityKey: string | null = null;\n\n /**\n * Emit mdValidityChange if validity actually moved.\n *\n * The FIRST call only primes the baseline. Initial state is not a change, and\n * emitting on mount would fire once per control on every page load — noise a\n * consumer would have to filter out, and misleading for anything logging\n * \"field became invalid\".\n */\n private emitValidityChange() {\n const v = getValidityOf(this.internals);\n const key = `${v.valid}|${v.validationMessage}`;\n if (this.lastValidityKey === key) return;\n const primed = this.lastValidityKey !== null;\n this.lastValidityKey = key;\n if (primed) this.mdValidityChange.emit(v);\n }\n\n /** Constraint-validation API, matching md-text-field and the native contract.\n * Validity was already published to the form here, but with no public method\n * a consumer could not ASK this control whether it was valid. */\n @Method()\n async checkValidity(): Promise<boolean> {\n return checkValidityOf(this.internals);\n }\n\n @Method()\n async reportValidity(): Promise<boolean> {\n return reportValidityOf(this.internals);\n }\n\n @Method()\n async setCustomValidity(message: string) {\n this.customValidityMessage = message;\n this.updateValidity();\n }\n\n // ── Menu open/close plumbing (mirrors md-select) ─────────\n\n private _syncGuard = false;\n private _lastEmit: 'open' | 'close' | null = null;\n\n @Watch('open')\n syncMenu(open: boolean) {\n if (this._syncGuard || !this.menuEl) return;\n if (open) {\n // Focus stays in the input — typing keeps filtering.\n this.menuEl.show?.({ autoFocus: false });\n } else {\n this.menuEl.close?.();\n }\n }\n\n /** True once the vc is wired to the menu's live scroll viewport. */\n private vpWired = false;\n\n /** Wire the vc to the menu's scroll viewport (listener + row measure +\n * recompute). The viewport only exists once the CAPPED virtual listbox has\n * rendered (the busy bar renders uncapped, without a scroll viewport), so a\n * null resolve just returns — componentDidRender retries every render\n * while the menu is open until the wiring lands. */\n private attachMenuViewport() {\n void (async () => {\n const vp = (await this.menuEl?.getScrollViewport?.()) ?? null;\n if (!vp || this.vpWired) return;\n this.vpWired = true;\n await this.vc.attachViewport(async () => vp);\n })();\n }\n\n private handleMenuOpen = () => {\n this._syncGuard = true;\n this.open = true;\n this._syncGuard = false;\n if (this._lastEmit !== 'open') {\n this._lastEmit = 'open';\n this.mdOpen.emit();\n }\n if (this.vc.active) {\n // Apply the live query (typing may have just opened the menu — the open\n // event lands after the keystroke, so the filter must be preserved).\n this.vc.setQuery(this.query);\n this.attachMenuViewport();\n }\n };\n\n private handleMenuClose = () => {\n this._syncGuard = true;\n this.open = false;\n this._syncGuard = false;\n if (this._lastEmit !== 'close') {\n this._lastEmit = 'close';\n this.mdClose.emit();\n }\n // Reset the typing gate on close, so REOPENING shows the full list (a\n // committed single value must not filter the list down to itself).\n this.typedSinceOpen = false;\n this.vc.detachViewport();\n this.vpWired = false;\n // Strict single mode: snap the input back to the committed label (or\n // empty) — typed-but-uncommitted text must not linger after the popup\n // closes, and the committed value itself is never touched by typing.\n if (!this.multiple && !this.freeSolo) {\n const committed =\n typeof this.value === 'string' && this.value\n ? this.labelMap.get(this.value) ?? this.value\n : '';\n if (this.inputValue !== committed) {\n this.inputValue = committed;\n this.mdInput.emit(committed);\n }\n }\n };\n\n /** Register/clear the virtual provider on the menu once it's rendered, and\n * (re)try the viewport wiring — the menu may have been opened while the\n * dataset was still packing, before the scroll viewport existed. */\n componentDidRender() {\n void this.syncComboboxRefs();\n if (!this.menuEl) return;\n if (this.vc.active && !this.providerSet) {\n void this.menuEl.setVirtualProvider?.(this.vc.provider);\n this.providerSet = true;\n } else if (!this.vc.active && this.providerSet) {\n void this.menuEl.setVirtualProvider?.(null);\n this.providerSet = false;\n }\n if (this.open && this.vc.active && !this.vpWired) this.attachMenuViewport();\n if (this.pendingListFocus && this.open) {\n const all = this.el.shadowRoot?.querySelectorAll(\n '.md-autocomplete__listbox md-menu-item:not([disabled])',\n );\n const target = (this.pendingListFocus === 'first' ? all?.[0] : all?.[all.length - 1]) as\n | HTMLElement\n | undefined;\n if (target) {\n this.pendingListFocus = null;\n target.focus();\n }\n } else if (this.pendingListFocus && !this.open) {\n this.pendingListFocus = null;\n }\n }\n\n /**\n * Point the combobox at its listbox ACROSS the shadow boundary.\n *\n * The textbox lives in md-text-field's shadow root and the listbox in this\n * one, so `aria-controls` as an IDREF is unusable — an IDREF only resolves\n * inside a single tree. ARIA element reflection takes element references\n * instead, and a reference from a descendant tree to an element in an\n * ancestor tree is in scope: verified in the accessibility tree, where the\n * combobox node gains a real `controls` relation to the listbox.\n *\n * Where reflection is unavailable the component is still a combobox with a\n * truthful expanded state, and ArrowDown moves REAL focus onto an option —\n * the APG variant that does not depend on a reference at all.\n */\n private async syncComboboxRefs() {\n const field = this.fieldEl as (HTMLElement & {\n getInputElement?: () => Promise<HTMLInputElement | null>;\n }) | undefined;\n const input = await field?.getInputElement?.();\n if (!input || !('ariaControlsElements' in input)) return;\n const listbox = this.el.shadowRoot?.querySelector('[role=\"listbox\"]') as HTMLElement | null;\n const next = this.open && listbox ? [listbox] : null;\n const current = (input as unknown as { ariaControlsElements: Element[] | null })\n .ariaControlsElements;\n // Idempotent: reassigning every render would churn the AX tree.\n if (!next && !current?.length) return;\n if (next && current?.length === 1 && current[0] === next[0]) return;\n (input as unknown as { ariaControlsElements: Element[] | null }).ariaControlsElements = next;\n }\n\n // ── Selection ────────────────────────────────────────────\n\n private commitValue(next: string | string[]) {\n this.value = next;\n this.mdChange.emit(next);\n }\n\n private pick(value: string, label: string, disabled: boolean | undefined, e?: CustomEvent) {\n // Composed mdClick would otherwise leak to host listeners.\n e?.stopPropagation();\n if (disabled) return;\n if (this.multiple) {\n const current = this.selectedArray;\n const exists = current.includes(value);\n const blocked = !exists && this.maxSelected > 0 && current.length >= this.maxSelected;\n if (blocked) {\n // md-menu-item self-toggled selected=true before this fired; revert it.\n const item = e?.target as (HTMLElement & { selected?: boolean }) | null;\n if (item) item.selected = false;\n return;\n }\n this.labelMap = new Map(this.labelMap).set(value, label);\n const next = exists ? current.filter((v) => v !== value) : [...current, value];\n this.commitValue(next);\n this.inputValue = '';\n this.mdInput.emit('');\n this.typedSinceOpen = false;\n if (this.vc.active) this.vc.setQuery('');\n // Multi-select stays OPEN on pick — choosing several in a row is the\n // whole point, and md-multi-select already behaves this way. Closing\n // after the first pick forced a reopen per item. It dismisses on an\n // outside click, on the trigger, or on Escape like any other popup.\n this.fieldEl?.focus?.();\n } else {\n this.labelMap = new Map(this.labelMap).set(value, label);\n this.commitValue(value);\n this.inputValue = label;\n this.mdInput.emit(label);\n // The selection ends the query session NOW — not at mdClose time. The\n // close event lands ~150ms later (menu animation); reopening within\n // that window must already show the full list, not a list filtered by\n // the committed label.\n this.typedSinceOpen = false;\n if (this.vc.active) this.vc.setQuery('');\n if (!this.disableCloseOnSelect) this.open = false;\n this.fieldEl?.focus?.();\n }\n }\n\n private commitFreeSolo(): boolean {\n if (!this.freeSolo) return false;\n const raw = this.inputValue.trim();\n if (!raw) return false;\n if (this.multiple) {\n const current = this.selectedArray;\n if (current.includes(raw)) return true;\n if (this.maxSelected > 0 && current.length >= this.maxSelected) return false;\n this.labelMap = new Map(this.labelMap).set(raw, raw);\n this.commitValue([...current, raw]);\n this.inputValue = '';\n this.mdInput.emit('');\n } else {\n this.commitValue(raw);\n }\n return true;\n }\n\n private removeChip = (val: string) => (e: CustomEvent | MouseEvent) => {\n e.stopPropagation();\n if ('preventDefault' in e) e.preventDefault();\n if (this.disabled || this.softDisabled || !this.multiple) return;\n this.commitValue(this.selectedArray.filter((v) => v !== val));\n };\n\n private handleClear = () => {\n if (this.disabled || this.softDisabled) return;\n this.inputValue = '';\n this.mdInput.emit('');\n this.typedSinceOpen = false;\n if (this.vc.active) this.vc.setQuery('');\n this.commitValue(this.multiple ? [] : '');\n this.mdClear.emit();\n this.fieldEl?.focus?.();\n };\n\n // ── Input handlers ───────────────────────────────────────\n\n /** Apply a typed input string (from the field, or a printable key redirected\n * out of the listbox): update state, open, and drive the (virtual) filter. */\n private applyTyped(raw: string) {\n this.inputValue = raw;\n this.typedSinceOpen = true;\n this.mdInput.emit(raw);\n if (!this.open) this.open = true;\n if (this.vc.active) {\n clearTimeout(this.searchDebounce);\n this.searchDebounce = setTimeout(() => {\n this.vc.setQuery(this.query);\n }, SEARCH_DEBOUNCE_MS);\n }\n // NB: typing never uncommits the value in strict single mode — a stray\n // keystroke (even a trailing space) must not deselect the committed\n // option. The input resyncs to the committed label when the popup closes\n // (see handleMenuClose), matching the MUI model.\n }\n\n private handleFieldInput = (e: CustomEvent<string>) => {\n this.applyTyped(e.detail ?? '');\n };\n\n /** Printable keys (and Backspace) pressed while focus is on an option:\n * an editable combobox keeps TYPING in the input — refocus it and extend\n * the query instead of letting md-menu's typeahead swallow the key. */\n private handleListboxKeyDown = (e: KeyboardEvent) => {\n if (e.ctrlKey || e.metaKey || e.altKey) return;\n const isPrintable = e.key.length === 1;\n if (!isPrintable && e.key !== 'Backspace') return;\n e.preventDefault();\n e.stopPropagation();\n this.fieldEl?.focus?.();\n this.applyTyped(\n e.key === 'Backspace' ? this.inputValue.slice(0, -1) : this.inputValue + e.key,\n );\n };\n\n /** First visible, enabled option row in this shadow root (plain or virtual). */\n private firstOptionItem(): HTMLElement | null {\n return (\n (this.el.shadowRoot?.querySelector(\n '.md-autocomplete__listbox md-menu-item:not([disabled])',\n ) as HTMLElement | null) ?? null\n );\n }\n\n private handleFieldKeyDown = (e: KeyboardEvent) => {\n if (this.disabled || this.softDisabled) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!this.open) {\n // APG: ArrowDown on a closed combobox opens the popup AND moves\n // focus to the first option (deferred until the list renders).\n this.pendingListFocus = 'first';\n this.open = true;\n } else {\n // Focus-moves-into-popup combobox variant: the option takes real\n // focus (announced by AT); md-menu's roving model handles the rest.\n this.firstOptionItem()?.focus();\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!this.open) {\n this.pendingListFocus = 'last';\n this.open = true;\n } else {\n const all = this.el.shadowRoot?.querySelectorAll(\n '.md-autocomplete__listbox md-menu-item:not([disabled])',\n );\n (all?.[all.length - 1] as HTMLElement | undefined)?.focus();\n }\n break;\n case 'Enter':\n if (this.freeSolo && this.commitFreeSolo()) {\n e.preventDefault();\n if (!this.multiple) this.open = false;\n }\n break;\n case 'Escape':\n if (this.open) {\n e.preventDefault();\n this.open = false;\n }\n break;\n case 'Backspace':\n if (this.multiple && !this.inputValue && this.selectedArray.length > 0) {\n this.commitValue(this.selectedArray.slice(0, -1));\n }\n break;\n }\n };\n\n private handleFieldFocus = () => {\n this.focused = true;\n };\n\n private handleFieldBlur = () => {\n this.focused = false;\n // Not while the popup is open — ArrowDown moves focus into the listbox,\n // and resetting the input there would wipe the active filter mid-browse.\n if (this.open) return;\n if (this.clearOnBlur && !this.multiple && !this.freeSolo) {\n const committed = typeof this.value === 'string' ? this.labelMap.get(this.value) : '';\n if (this.inputValue && this.inputValue !== committed) {\n this.inputValue = committed ?? '';\n this.mdInput.emit(this.inputValue);\n }\n }\n };\n\n // ── Render ───────────────────────────────────────────────\n\n /** A single removable value token (shared by the below + inline layouts). */\n private renderChipItem = (val: string) => (\n <md-chip\n key={val}\n part=\"chip\"\n exportparts=\"remove:chip-remove,label:chip-label\"\n variant=\"input\"\n // A display token of a selected value (role=group, not a nested\n // interactive button host) — only its ✕ removes it.\n selectable={false}\n label={this.labelMap.get(val) ?? val}\n disabled={this.disabled || this.softDisabled}\n removable={!this.disabled && !this.softDisabled}\n onMdRemove={this.removeChip(val)}\n onClick={(e: MouseEvent) => e.stopPropagation()}\n ></md-chip>\n );\n\n private get inlineChips(): boolean {\n return this.multiple && this.chipPosition === 'inline';\n }\n\n /** Chips BELOW the field (default layout). */\n private renderChips() {\n if (!this.multiple || this.inlineChips) return null;\n const selected = this.selectedArray;\n if (selected.length === 0) return null;\n return (\n <div\n class=\"md-autocomplete__chips\"\n part=\"chips\"\n role=\"group\"\n aria-label={this.label ? `${this.label} — selected` : 'Selected'}\n >\n {selected.map(this.renderChipItem)}\n </div>\n );\n }\n\n /** Chips INSIDE the field (md-text-field `chips` slot), wrapping onto new\n * rows — the field grows with them (`chips-wrap`). */\n private renderInlineChips() {\n if (!this.inlineChips) return null;\n const selected = this.selectedArray;\n if (selected.length === 0) return null;\n return (\n <div\n slot=\"chips\"\n class=\"md-autocomplete__inline-chips\"\n part=\"chips\"\n role=\"group\"\n aria-label={this.label ? `${this.label} — selected` : 'Selected'}\n >\n {selected.map(this.renderChipItem)}\n </div>\n );\n }\n\n private renderClearButton(forceHidden = false) {\n if (!this.clearable) return null;\n const hasValue = this.multiple\n ? this.selectedArray.length > 0\n : !!this.inputValue || !!this.value;\n // Always rendered (visibility-hidden when empty or busy): the button\n // popping in and out would change the field's intrinsic width, making the\n // trigger jump by its 30px whenever text appears in a shrink-to-fit layout.\n const hidden = forceHidden || !hasValue;\n return (\n <md-icon-button\n class={{\n 'md-autocomplete__clear': true,\n 'md-autocomplete__clear--hidden': hidden,\n }}\n slot=\"trailing-icon\"\n part=\"clear\"\n variant=\"standard\"\n size=\"xs\"\n icon={this.clearIcon}\n aria-label=\"Clear value\"\n aria-hidden={hidden ? 'true' : undefined}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n this.handleClear();\n }}\n ></md-icon-button>\n );\n }\n\n private renderTrigger() {\n return (\n <md-text-field\n ref={(el) => (this.fieldEl = el as HTMLElement)}\n id={this.triggerId}\n class=\"md-autocomplete__field\"\n part=\"field\"\n variant={this.variant}\n label={this.label}\n placeholder={this.placeholder}\n value={this.inputValue}\n disabled={this.disabled}\n error={this.error}\n errorText={this.errorText}\n reserveSupportingSpace={this.reserveSupportingSpace}\n supportingText={this.supportingText}\n required={this.required}\n density={this.density}\n appearFocused={this.open || this.focused}\n // Mirrored by md-text-field onto the focused input (global ARIA attr,\n // valid on textbox) — the input truthfully announces its listbox popup.\n aria-haspopup=\"listbox\"\n // Promote the real textbox to a combobox: the role, the expanded state\n // and the typing relationship all have to sit on the element AT reads.\n // The listbox reference is wired separately (syncComboboxRefs) because\n // it has to cross md-text-field's shadow boundary.\n inputRole=\"combobox\"\n inputExpanded={this.open}\n inputAriaAutocomplete=\"list\"\n chipsWrap={this.inlineChips}\n onMdInput={this.handleFieldInput}\n onClick={() => {\n if (!this.disabled && !this.softDisabled && !this.open) this.open = true;\n }}\n onKeyDown={this.handleFieldKeyDown}\n onFocus={this.handleFieldFocus}\n onBlur={this.handleFieldBlur}\n >\n {this.renderInlineChips()}\n {this.busy ? (\n // Busy state (consumer `loading` OR a dataset packing into WASM): a\n // spinner replaces the CARET only; the (hidden) clear button keeps\n // its reserved slot so the trailing cluster — and therefore the\n // field width — is identical across idle/typing/busy/loaded.\n [\n this.renderClearButton(true),\n <span slot=\"trailing-icon\" class=\"md-autocomplete__loader\" part=\"loading-spinner\">\n <slot name=\"loader\">\n <md-loading-indicator label={this.loadingText}></md-loading-indicator>\n </slot>\n </span>,\n ]\n ) : (\n [\n this.renderClearButton(),\n <span\n slot=\"trailing-icon\"\n class=\"md-autocomplete__caret material-symbols-outlined\"\n part=\"caret\"\n aria-hidden=\"true\"\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n if (!this.disabled && !this.softDisabled) this.open = !this.open;\n }}\n >\n {/* Static glyph + CSS rotation on open — same caret as the selects\n (a glyph swap would double-flip with the rotate rule). */}\n <slot name=\"dropdown-icon\">{this.dropdownIcon}</slot>\n </span>,\n ]\n )}\n </md-text-field>\n );\n }\n\n private renderOptionIcon(icon?: string, iconColor?: string) {\n if (!icon) return null;\n return (\n <span\n slot=\"leading-icon\"\n part=\"option-icon\"\n class=\"material-symbols-outlined md-autocomplete__option-icon\"\n style={iconColor ? { color: iconColor } : undefined}\n aria-hidden=\"true\"\n >\n {icon}\n </span>\n );\n }\n\n private renderVirtualOptions() {\n return (\n <div\n class=\"md-autocomplete__listbox\"\n role=\"listbox\"\n id={`${this.triggerId}-listbox`}\n aria-label={this.label || 'Options'}\n aria-multiselectable={this.multiple ? 'true' : undefined}\n onKeyDown={this.handleListboxKeyDown}\n >\n <div\n class=\"md-autocomplete__vspacer\"\n style={{ height: `${this.vc.topPad}px` }}\n aria-hidden=\"true\"\n ></div>\n {this.vc.windowRows.map((row, i) => {\n const filteredIndex = this.vc.windowStart + i;\n const selected = this.isSelected(row.value);\n return (\n <md-menu-item\n key={row.index}\n id={`${this.triggerId}-opt-${filteredIndex}`}\n data-vindex={filteredIndex}\n presentation=\"option\"\n type={this.multiple ? 'checkbox' : 'radio'}\n check-position=\"start\"\n keep-open\n part={selected ? 'option option-selected' : 'option'}\n disabled={row.disabled}\n selected={selected}\n headline={row.label}\n supporting-text={row.supportingText || ''}\n aria-setsize={this.vc.filteredLength}\n aria-posinset={filteredIndex + 1}\n onMdClick={(e: CustomEvent) => this.pick(row.value, row.label, row.disabled, e)}\n >\n {this.renderOptionIcon(row.icon || undefined)}\n </md-menu-item>\n );\n })}\n <div\n class=\"md-autocomplete__vspacer\"\n style={{ height: `${this.vc.bottomPad}px` }}\n aria-hidden=\"true\"\n ></div>\n </div>\n );\n }\n\n private renderMenu() {\n const virtual = this.vc.active;\n const filtered = virtual ? [] : this.filteredOptions;\n const datasetEmpty = virtual ? false : this.optionsData.length === 0;\n const emptyText = this.busy\n ? ''\n : virtual\n ? this.vc.filteredLength === 0\n ? this.noResultsText\n : ''\n : datasetEmpty\n ? this.noOptionsText\n : filtered.length === 0\n ? this.noResultsText\n : '';\n const menuMaxHeight = virtual ? (this.maxHeight ?? 320) : this.maxHeight;\n\n return (\n <md-menu\n ref={(el) => (this.menuEl = el as VirtualMenuEl)}\n anchor={this.triggerId}\n placement={this.placement}\n match-anchor-width={this.matchTriggerWidth}\n max-height={menuMaxHeight}\n persistent={this.disableCloseOnSelect}\n empty-text={emptyText}\n auto-focus={false}\n listbox\n list-label={this.label || 'Options'}\n part=\"menu\"\n onMdOpen={this.handleMenuOpen}\n onMdClose={this.handleMenuClose}\n >\n {this.busy ? (\n <div class=\"md-autocomplete__loading\" part=\"loading\" role=\"status\" aria-label={this.loadingText}>\n <md-progress-indicator\n variant=\"linear\"\n indeterminate\n wave\n part=\"loading-progress\"\n label={this.loadingText}\n ></md-progress-indicator>\n </div>\n ) : virtual ? (\n this.renderVirtualOptions()\n ) : (\n <div\n class=\"md-autocomplete__listbox\"\n role=\"listbox\"\n id={`${this.triggerId}-listbox`}\n aria-label={this.label || 'Options'}\n aria-multiselectable={this.multiple ? 'true' : undefined}\n onKeyDown={this.handleListboxKeyDown}\n >\n {filtered.map((opt, i) => (\n <md-menu-item\n key={opt.value}\n id={`${this.triggerId}-opt-${i}`}\n presentation=\"option\"\n type={this.multiple ? 'checkbox' : 'radio'}\n check-position=\"start\"\n keep-open\n part={this.isSelected(opt.value) ? 'option option-selected' : 'option'}\n disabled={opt.disabled}\n selected={this.isSelected(opt.value)}\n headline={opt.label}\n supporting-text={opt.supportingText || ''}\n onMdClick={(e: CustomEvent) => this.pick(opt.value, opt.label, opt.disabled, e)}\n >\n {this.renderOptionIcon(opt.icon, opt.iconColor)}\n </md-menu-item>\n ))}\n </div>\n )}\n </md-menu>\n );\n }\n\n render() {\n const chipsFirst =\n this.multiple && (this.chipPosition === 'top' || this.chipPosition === 'left');\n const optionCount = this.vc.active ? this.vc.filteredLength : this.filteredOptions.length;\n const srStatus = this.busy\n ? this.loadingText\n : this.open\n ? this.statusTemplate.replace('{count}', String(optionCount))\n : '';\n return (\n <Host\n class={{\n 'md-autocomplete': true,\n [`md-autocomplete--${this.variant}`]: true,\n 'md-autocomplete--open': this.open,\n 'md-autocomplete--disabled': this.disabled,\n 'md-autocomplete--soft-disabled': this.softDisabled,\n 'md-autocomplete--multiple': this.multiple,\n 'md-autocomplete--loading': this.busy,\n [`md-autocomplete--chips-${this.chipPosition}`]: this.multiple,\n }}\n aria-haspopup=\"listbox\"\n aria-busy={this.busy ? 'true' : 'false'}\n >\n {chipsFirst && this.renderChips()}\n {this.renderTrigger()}\n {!chipsFirst && this.renderChips()}\n {this.renderMenu()}\n {/* Polite live status: the visible option count — which no ARIA\n attribute conveys — plus the busy text. The expanded state itself\n rides on the real textbox (`input-expanded` → aria-expanded, legal\n there because the input carries role=\"combobox\"; see renderTrigger). */}\n <span class=\"md-autocomplete__sr-status\" role=\"status\" aria-live=\"polite\">\n {srStatus}\n </span>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"md-autocomplete.cjs.entry.js","mappings":"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","names":["VirtualSelectController","forceUpdate","h","isWasmSupported","collectOptions","setFormValue","getValidityOf","checkValidityOf","reportValidityOf","LazyLoadingIndicator","Host"],"sources":["src/components/md-autocomplete/md-autocomplete.css?tag=md-autocomplete&encapsulation=shadow","src/components/md-autocomplete/md-autocomplete.tsx"],"sourcesContent":["/* ==========================================================\n md-autocomplete — Material Design 3 free-text + filterable\n dropdown. Composes md-text-field + md-menu.\n\n PUBLIC CSS CUSTOM PROPERTIES (override per-instance):\n --md-autocomplete-width Trigger width (default 100% of container)\n --md-autocomplete-min-width Minimum trigger width\n --md-autocomplete-chip-gap Gap between selected chips\n --md-autocomplete-chip-radius Chip corner radius\n --md-autocomplete-caret-color Trailing caret color\n --md-autocomplete-caret-size Caret glyph size (default 24px)\n --md-autocomplete-clear-color Clear button color\n --md-autocomplete-option-icon-size Leading-icon size in items\n --md-autocomplete-loading-color Color of the loading row\n --md-autocomplete-spinner-size Trigger busy-spinner size (default 22px)\n\n CSS PARTS:\n field Inner md-text-field\n chips Selected chips container\n caret Trailing dropdown caret\n clear Trailing clear button\n menu Popup md-menu\n loading Loading row inside the menu\n loading-spinner Trigger busy spinner (replaces clear/caret)\n\n SLOTS:\n loader Replaces the default trigger busy spinner\n dropdown-icon Replaces the caret glyph\n ========================================================== */\n\n:host {\n /* The text inset already includes the caret's 7px optical bearing (see\n md-text-field --_text-inset). Pull the TRAILING side back to the plain\n box inset so the caret's BOX sits 7px shallower and its INK lands on the\n same column as the text. */\n --md-text-field-padding-inline-end: var(--md-sys-spacing-inset-lg, 16px);\n --_min-width: var(--md-autocomplete-min-width, 220px);\n --_chip-gap: var(--md-autocomplete-chip-gap, var(--md-sys-spacing-gap-xs, 4px));\n --_chip-radius: var(--md-autocomplete-chip-radius, 8px);\n --_caret-color: var(--md-autocomplete-caret-color, var(--md-sys-color-on-surface-variant));\n --_clear-color: var(--md-autocomplete-clear-color, var(--md-sys-color-on-surface-variant));\n --_option-icon-size: var(--md-autocomplete-option-icon-size, 20px);\n --_loading-color: var(--md-autocomplete-loading-color, var(--md-sys-color-on-surface-variant));\n\n /* Fill the container (like md-select) — the trigger width must come from\n layout, never from the typed text (a shrink-to-fit inline-block would\n grow/shrink with the input's content). Flex column so chip-position can\n reorder the chips around the field. */\n display: inline-flex;\n flex-direction: column;\n inline-size: var(--md-autocomplete-width, 100%);\n min-inline-size: var(--_min-width);\n box-sizing: border-box;\n vertical-align: bottom;\n position: relative;\n}\n\n/* ── Chip positions around the field ───────────────────────── */\n\n:host(.md-autocomplete--chips-top) .md-autocomplete__chips {\n /* DOM order puts the chips first for top/left (focus + reading order must\n match the visual order) — no CSS `order` reshuffling. */\n margin-block-start: 0;\n margin-block-end: var(--md-sys-spacing-inset-sm, 8px);\n}\n\n:host(.md-autocomplete--chips-left),\n:host(.md-autocomplete--chips-right) {\n flex-direction: row;\n align-items: center;\n gap: var(--md-sys-spacing-gap-sm, 8px);\n}\n\n:host(.md-autocomplete--chips-left) .md-autocomplete__field,\n:host(.md-autocomplete--chips-right) .md-autocomplete__field {\n flex: 1 1 auto;\n inline-size: auto;\n min-inline-size: 0;\n}\n\n:host(.md-autocomplete--chips-left) .md-autocomplete__chips,\n:host(.md-autocomplete--chips-right) .md-autocomplete__chips {\n /* Beside the field: bounded content width (contain would collapse a row\n flex item to zero), wrapping within it. */\n contain: none;\n flex: 0 1 auto;\n max-inline-size: 50%;\n margin-block-start: 0;\n}\n\n\n.md-autocomplete__field {\n display: block;\n inline-size: 100%;\n}\n\n.md-autocomplete__chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--_chip-gap);\n max-inline-size: 100%;\n margin-block-start: var(--md-sys-spacing-inset-sm, 8px);\n /* Chips must not contribute intrinsic width: in a shrink-to-fit layout the\n row's max-content (all chips on one line) would widen the whole host as\n the selection grows. Contained, the trigger field alone sizes the host\n and the chips wrap within it. */\n contain: inline-size;\n}\n\n.md-autocomplete__chips md-chip {\n --md-chip-container-shape: var(--_chip-radius);\n}\n\n/* Chips INSIDE the field (chip-position=\"inline\"): slotted into md-text-field's\n `chips` slot with chips-wrap — they wrap onto new rows and the field grows. */\n.md-autocomplete__inline-chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--_chip-gap);\n min-inline-size: 0;\n overflow: visible;\n}\n\n.md-autocomplete__inline-chips md-chip {\n --md-chip-container-shape: var(--_chip-radius);\n flex-shrink: 0;\n}\n\n/* ── Trailing controls (caret + clear) ─────────────────────── */\n\n.md-autocomplete__caret {\n color: var(--_caret-color);\n /* Match the selects: 24px glyph, 200ms/standard rotation (see md-select.css). */\n font-size: var(--md-autocomplete-caret-size, 24px);\n line-height: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 24px;\n block-size: 24px;\n cursor: pointer;\n transition: transform var(--md-sys-motion-duration-short4, 200ms)\n var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));\n}\n\n:host(.md-autocomplete--open) .md-autocomplete__caret {\n transform: rotate(180deg);\n}\n\n/* The clear affordance is an md-icon-button (ring/ripple/a11y for free);\n sized down to sit inside the field's trailing cluster. */\n.md-autocomplete__clear {\n --md-icon-button-container-width: 28px;\n --md-icon-button-container-height: 28px;\n --md-icon-button-icon-size: 18px;\n color: var(--_clear-color);\n margin-inline-end: 2px;\n}\n\n/* Space stays reserved; the button is just invisible + inert while there is\n nothing to clear (visibility also drops it from the tab order / AT). */\n.md-autocomplete__clear--hidden {\n visibility: hidden;\n pointer-events: none;\n}\n\n/* Busy state: trigger spinner replacing the clear/caret cluster (see the\n selects — same sizing convention). */\n.md-autocomplete__loader {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 24px;\n block-size: 24px;\n --md-loading-indicator-size: var(--md-autocomplete-spinner-size, 22px);\n --md-loading-indicator-shape-size: var(--md-autocomplete-spinner-size, 22px);\n}\n\n/* ── Menu styling ──────────────────────────────────────────── */\n\n/* Centred, like the selects' empty states. */\nmd-menu::part(empty-text) {\n display: flex;\n justify-content: center;\n padding: var(--md-sys-spacing-inset-md, 12px) var(--md-sys-spacing-inset-lg, 16px);\n color: var(--md-sys-color-on-surface-variant);\n text-align: center;\n}\n\n.md-autocomplete__option-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--md-autocomplete-option-icon-color, var(--md-sys-color-on-surface-variant, #49454f));\n font-size: var(--_option-icon-size);\n inline-size: var(--_option-icon-size);\n block-size: var(--_option-icon-size);\n}\n\n/* Listbox wrapper (plain + virtualized) — the spacers preserve the full\n scroll height around the rendered window. */\n.md-autocomplete__listbox {\n display: block;\n}\n\n.md-autocomplete__vspacer {\n inline-size: 100%;\n pointer-events: none;\n}\n\n.md-autocomplete__loading {\n display: block;\n padding: var(--md-sys-spacing-inset-md, 12px) var(--md-sys-spacing-inset-lg, 16px);\n color: var(--_loading-color);\n}\n\n/* Visually-hidden polite status region (expanded count / busy). */\n.md-autocomplete__sr-status {\n position: absolute;\n inline-size: 1px;\n block-size: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n}\n\n/* ── Disabled ──────────────────────────────────────────────── */\n\n:host(.md-autocomplete--disabled),\n:host(.md-autocomplete--soft-disabled) {\n pointer-events: none;\n}\n\n:host(.md-autocomplete--soft-disabled) .md-autocomplete__field {\n pointer-events: auto;\n}\n\n/* ── RTL ────────────────────────────────────────────────────── */\n\n/* ── Reduced motion ────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .md-autocomplete__caret,\n .md-autocomplete__clear {\n transition: none;\n }\n}\n\n/* ── Forced colors (Windows High Contrast) ─────────────────── */\n\n@media (forced-colors: active) {\n .md-autocomplete__caret,\n .md-autocomplete__clear {\n color: CanvasText;\n }\n}\n\n/* ── Material Symbols font (shadow-root scope) ─────────────── */\n\n/* Caret, clear, and option icons render inside our shadow root\n (even when slotted into nested md-text-field / md-menu-item),\n so they need the font-family declared locally — shadow DOM\n does not inherit page-level CSS class rules. */\n.material-symbols-outlined {\n font-family: var(--md-sys-icon-font-family, 'Material Symbols Outlined', 'Material Icons');\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n overflow-wrap: normal;\n direction: ltr;\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n}\n\n/* ==========================================================\n DENSITY (local override)\n This component FORWARDS `density` to the md-text-field it embeds, which\n handles the field box — but that forward says nothing about this host, so its\n OWN chrome (dropdown surface, chips, frame gaps) stayed at density-0 whenever\n density came from the local prop rather than a global ancestor. Mapping the\n prop onto the shared signal here fixes that asymmetry; the spacing-token half\n of the rung arrives from the [density=\"-N\"] selector in tokens.css.\n ========================================================== */\n:host([density='-1']) { --md-sys-density-scale: -1; }\n:host([density='-2']) { --md-sys-density-scale: -2; }\n:host([density='-3']) { --md-sys-density-scale: -3; }\n:host([density='-4']) { --md-sys-density-scale: -4; }\n","import { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, forceUpdate, h } from '@stencil/core';\nimport { LazyLoadingIndicator } from '../../utils/lazy-loading-indicator';\nimport { setFormValue, checkValidityOf, reportValidityOf, getValidityOf } from '../../utils/form';\nimport {\n collectOptions,\n SelectOptionData,\n SelectOptionInit,\n OptionRowSource,\n} from '../../utils/select-options';\nimport { VirtualSelectController } from '../../utils/virtual-select-controller';\nimport { isWasmSupported, FilterMode } from '../../utils/wasm-option-store';\n\nlet autocompleteIdCounter = 0;\n\n/** Above this many options, `virtualize=\"auto\"` switches to the WASM path. */\nconst VIRTUALIZE_THRESHOLD = 200;\n\n/** Idle time after a keystroke before the virtualized query runs (debounce). */\nconst SEARCH_DEBOUNCE_MS = 200;\n\n/**\n * Programmatic option entry. Extends the shared select model with a\n * legacy `description` alias for `supportingText`.\n */\nexport interface MdAutocompleteOption extends SelectOptionInit {\n /** @deprecated Use `supportingText`. */\n description?: string;\n}\n\ninterface VirtualMenuEl extends HTMLElement {\n show?: (opts?: { autoFocus?: boolean }) => Promise<void>;\n close?: () => Promise<void>;\n setVirtualProvider?: (p: unknown | null) => Promise<void>;\n getScrollViewport?: () => Promise<HTMLElement | null>;\n}\n\n/**\n * `md-autocomplete` — Material Design 3 combobox: a text field that filters\n * a dropdown listbox **as you type in the input** (no separate search row),\n * with single or multiple (chips) selection.\n *\n * Built from the same primitives as `md-select` / `md-multi-select`:\n * - the shared option model (`options` array of `{ value, label,\n * supportingText?, icon?, iconColor?, disabled? }` or slotted\n * `<md-select-option>` children),\n * - `md-text-field` for the trigger (typing filters live),\n * - `md-menu` as a WAI-ARIA listbox popup (options carry `aria-selected`),\n * - `VirtualSelectController` for WASM-virtualized huge datasets\n * (`virtualize`, `loadOptions()`, `filter-mode`) — the same engine as\n * the selects, so tens of thousands of rows filter smoothly.\n *\n * Keyboard: typing filters; ArrowDown moves focus into the listbox (the\n * focus-moves-into-popup combobox variant — option focus is announced\n * directly); Enter selects; Escape closes back to the input; Backspace on an\n * empty multi input removes the last chip.\n *\n * ARIA: the real textbox — the `<input>` inside md-text-field's shadow root —\n * is promoted to `role=\"combobox\"` with `aria-expanded` / `aria-autocomplete`\n * (handed over via `input-role`, since only that component renders the input),\n * and points at this component's listbox through ARIA element reflection. An\n * IDREF could not: it would have to resolve inside md-text-field's tree, where\n * the listbox is not. See `syncComboboxRefs`.\n *\n * Extras kept from the surface this API mirrors: `free-solo` (commit arbitrary text),\n * `max-selected`, `clearable`, `disable-close-on-select`, `clear-on-blur`,\n * a custom `filterer` and `limit-results` (client-side path only).\n */\n@Component({\n tag: 'md-autocomplete',\n styleUrl: 'md-autocomplete.css',\n shadow: true,\n formAssociated: true,\n})\nexport class MdAutocomplete {\n @Element() el!: HTMLElement;\n\n\n /**\n * Localized constraint-validation message shown when `required` is unmet.\n * `errorText` still wins when set, so an app-supplied inline message and the\n * native bubble stay in agreement.\n */\n @Prop({ attribute: 'value-missing-label' }) valueMissingLabel: string = 'Please make a selection';\n\n\n /**\n * Always occupy the supporting-text line, even when there is no message, so a\n * validation error does not push the content below it down. Forwarded to the\n * embedded md-text-field. See that component for why it is opt-in.\n */\n @Prop({ attribute: 'reserve-supporting-space' }) reserveSupportingSpace: boolean = false;\n\n /** Message set via setCustomValidity(); non-empty wins over valueMissing. */\n private customValidityMessage = '';\n\n /**\n * Form-association handle. The selection is submitted under the host's\n * `name` via `setFormValue` (a single string, or repeated pairs when\n * `multiple`), so the control participates in `<form>`/`FormData` natively.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /** Visual variant of the inner text-field. */\n @Prop({ reflect: true }) variant: 'filled' | 'outlined' = 'filled';\n\n /** Floating label / accessible name. */\n @Prop() label: string = '';\n\n /** Placeholder for the input. */\n @Prop() placeholder: string = '';\n\n /** Supporting / helper text below the field. */\n @Prop({ attribute: 'supporting-text' }) supportingText: string = '';\n\n /** Error state — forwarded to the text-field. */\n @Prop({ reflect: true }) error: boolean = false;\n\n /** Error text rendered in place of supporting text when `error` is true. */\n @Prop({ attribute: 'error-text' }) errorText: string = '';\n\n /** Disabled — non-interactive. */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /** Soft-disabled — focusable but non-interactive. */\n @Prop({ reflect: true, attribute: 'soft-disabled' }) softDisabled: boolean = false;\n\n /** Required for native form parity. */\n @Prop({ reflect: true }) required: boolean = false;\n\n /** Density forwarded to the text-field. */\n @Prop({ reflect: true }) density: 0 | -1 | -2 | -3 | -4 = 0;\n\n /**\n * Programmatic options (shared select model; `description` is accepted as\n * a legacy alias for `supportingText`). Slotted `<md-select-option>`\n * children take precedence when present.\n *\n * Accepts either the array (property) or a **JSON string** (attribute), the\n * same contract `md-organization-chart.nodes` uses — so a plain-HTML page can\n * declare its dataset inline instead of reaching for a script:\n *\n * <md-autocomplete options='[{\"value\":\"a\",\"label\":\"Apple\"}]'></md-autocomplete>\n *\n * Malformed JSON degrades to an empty list rather than throwing: a broken\n * attribute must not take the whole field down.\n */\n @Prop() options: MdAutocompleteOption[] | string = [];\n\n /** Multi-select mode — the selection renders as removable chips. */\n @Prop({ reflect: true }) multiple: boolean = false;\n\n /** Where the selection chips live (`multiple` only): around the field\n * (`'below'` default, `'top'`, `'left'`, `'right'`) or `'inline'` inside\n * it, before the input, wrapping onto new rows as the selection grows\n * (the field grows with them). */\n @Prop({ attribute: 'chip-position', reflect: true }) chipPosition:\n | 'below'\n | 'top'\n | 'left'\n | 'right'\n | 'inline' = 'below';\n\n /**\n * Single-mode value — option `value` or free-solo string.\n * Multi-mode value — array of option `value`s.\n */\n @Prop({ mutable: true }) value: string | string[] = '';\n\n /** Live text of the input (separate from `value` so typing never commits). */\n @Prop({ mutable: true, attribute: 'input-value' }) inputValue: string = '';\n\n /** Allow committing arbitrary text (not just options) with Enter. */\n @Prop({ reflect: true, attribute: 'free-solo' }) freeSolo: boolean = false;\n\n /** When `multiple`, the max number of selected items (`0` = no limit). */\n @Prop({ attribute: 'max-selected' }) maxSelected: number = 0;\n\n /** Busy state: progress bar in the menu while an async dataset loads. */\n @Prop({ reflect: true }) loading: boolean = false;\n\n /** Empty-state text when the dataset has no options at all. */\n @Prop({ attribute: 'no-options-text' }) noOptionsText: string = 'No options';\n\n /** Empty-state text when the typed filter matches nothing. */\n @Prop({ attribute: 'no-results-text' }) noResultsText: string = 'No results';\n\n /** Text shown while `loading` is true. */\n @Prop({ attribute: 'loading-text' }) loadingText: string = 'Loading…';\n\n /** Template for the polite screen-reader status while the popup is open\n * (localisable). `{count}` is replaced with the visible option count. */\n @Prop({ attribute: 'status-template' }) statusTemplate: string = '{count} suggestions available';\n\n /**\n * Keep the menu open after a selection in **single** mode.\n *\n * `multiple` already stays open — picking several in a row is the point, and\n * it dismisses on an outside click, on the trigger, or on Escape. This prop\n * gives a single-select the same stickiness when a picker is being used to\n * scan rather than to commit.\n */\n @Prop({ attribute: 'disable-close-on-select', reflect: true }) disableCloseOnSelect: boolean = false;\n\n /** Clear a non-matching input on blur (strict single mode only). */\n @Prop({ attribute: 'clear-on-blur', reflect: true }) clearOnBlur: boolean = false;\n\n /** Show a clear (×) button on the trailing edge. */\n @Prop({ reflect: true }) clearable: boolean = true;\n\n /** Material Symbols glyph for the clear button. */\n @Prop({ attribute: 'clear-icon' }) clearIcon: string = 'close';\n\n /** Caret glyph; rotates 180° when open (matches md-select). Slot\n * `dropdown-icon` overrides it. */\n @Prop({ attribute: 'dropdown-icon' }) dropdownIcon: string = 'arrow_drop_down';\n\n /** Max items shown in the dropdown (`0` = unlimited; client-side path only). */\n @Prop({ attribute: 'limit-results' }) limitResults: number = 0;\n\n /** Open state. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Custom client-side filter (ignored while virtualized — the WASM engine\n * filters by `filter-mode` instead).\n */\n @Prop() filterer?: (\n options: SelectOptionData[],\n state: { inputValue: string; selected: string[] },\n ) => SelectOptionData[];\n\n /**\n * Virtualization strategy (same engine as `md-select`):\n * - `'auto'` (default): virtualize above 200 rows.\n * - `'always'`: always virtualize the `options` / `loadOptions` dataset.\n * - `'never'`: plain DOM rendering.\n */\n @Prop() virtualize: 'auto' | 'always' | 'never' = 'auto';\n\n /** Filter strategy for the virtualized (WASM) path. */\n @Prop({ attribute: 'filter-mode' }) filterMode: FilterMode = 'substring';\n\n /** Fixed virtualized row height (px). Auto-measured from the first row if unset. */\n @Prop({ attribute: 'row-height' }) rowHeight?: number;\n\n /** Menu placement. */\n @Prop() placement: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' = 'bottom-start';\n\n /** Match the dropdown width to the trigger. */\n @Prop({ attribute: 'match-trigger-width' }) matchTriggerWidth: boolean = true;\n\n /** Max height of the dropdown menu (px). */\n @Prop({ attribute: 'max-height' }) maxHeight?: number;\n\n /** Form name. Multi-mode submits as repeated `name=value` pairs. */\n @Prop({ reflect: true }) name: string = '';\n\n /** Fires whenever the committed selection changes. */\n @Event() mdChange: EventEmitter<string | string[]>;\n\n /** Fires whenever the live input string changes. */\n @Event() mdInput: EventEmitter<string>;\n\n /** Fires when the menu opens. */\n @Event() mdOpen: EventEmitter<void>;\n\n /** Fires when the menu closes. */\n @Event() mdClose: EventEmitter<void>;\n\n /** Fires when the user clears the value. */\n @Event() mdClear: EventEmitter<void>;\n\n @State() private triggerId: string = `md-autocomplete-${++autocompleteIdCounter}`;\n @State() private focused: boolean = false;\n /** Normalised dataset for the plain-DOM path (empty while virtualized). */\n @State() private optionsData: SelectOptionData[] = [];\n /** value → label cache so chips / the input label survive off-window rows. */\n @State() private labelMap: Map<string, string> = new Map();\n\n /** True while a dataset is packing into the WASM store — presents the same\n * busy UI as `loading` until the rows are ready. */\n @State() private packing = false;\n\n /** True once the user typed since the menu opened — before that the full\n * list shows (reopening a committed single value must not filter to it). */\n private typedSinceOpen = false;\n\n /** Monotonic guard: only the NEWEST load may commit its results (a dataset\n * replaced mid-pack must not interleave or resurrect stale state). */\n private loadGen = 0;\n\n /** Deferred focus target inside the freshly-opened listbox (APG: ArrowDown\n * from a closed combobox opens AND focuses the first option). */\n private pendingListFocus: 'first' | 'last' | null = null;\n\n private fieldEl?: HTMLElement & { focus?: () => void };\n private menuEl?: VirtualMenuEl;\n private searchDebounce?: ReturnType<typeof setTimeout>;\n private providerSet = false;\n\n private vc = new VirtualSelectController({\n queryItem: (i) =>\n (this.el.shadowRoot?.querySelector(\n `md-menu-item[data-vindex=\"${i}\"]`,\n ) as HTMLElement | null) ?? null,\n requestRender: () => forceUpdate(this),\n });\n\n // ── Public API ───────────────────────────────────────────\n\n /** Programmatically focus the input. */\n @Method()\n async focusInput() {\n this.fieldEl?.focus?.();\n }\n\n /** Open the menu. */\n @Method()\n async showMenu() {\n if (this.disabled) return;\n this.open = true;\n }\n\n /** Close the menu. */\n @Method()\n async closeMenu() {\n this.open = false;\n }\n\n /**\n * Load a large dataset into the WASM-backed virtualized list (rows are\n * byte-packed off the JS heap). Accepts an array or a `{ count, getRow }`\n * factory. Falls back to plain DOM when `virtualize=\"never\"` or WASM is\n * unavailable.\n */\n @Method()\n async loadOptions(source: SelectOptionInit[] | OptionRowSource) {\n const gen = ++this.loadGen;\n if (this.virtualize === 'never' || !isWasmSupported()) {\n const rows = Array.isArray(source)\n ? source\n : Array.from({ length: source.count }, (_, i) => source.getRow(i));\n this.vc.reset();\n this.optionsData = this.normalize(rows);\n this.refreshLabelMap();\n return;\n }\n this.optionsData = [];\n this.packing = true;\n try {\n this.vc.setFixedRowHeight(this.rowHeight);\n this.vc.setFilterMode(this.filterMode);\n await this.vc.load(Array.isArray(source) ? this.normalize(source) : source);\n } finally {\n if (gen === this.loadGen) this.packing = false;\n }\n if (gen !== this.loadGen) return; // superseded by a newer load/refresh\n // A filter typed while the pack ran must apply to the fresh dataset.\n if (this.open && this.typedSinceOpen) this.vc.setQuery(this.query);\n this.refreshLabelMap();\n forceUpdate(this);\n }\n\n /** Resolve labels for a set of values (virtual-safe). */\n @Method()\n async getLabels(values: string[]): Promise<Record<string, string>> {\n if (this.vc.active) return Object.fromEntries(this.vc.getLabels(values));\n const out: Record<string, string> = {};\n for (const v of values) out[v] = this.labelMap.get(v) ?? v;\n return out;\n }\n\n // ── Option collection ────────────────────────────────────\n\n /** Accept the legacy `description` alias for `supportingText`. */\n private normalize(list: ReadonlyArray<MdAutocompleteOption>): SelectOptionData[] {\n return list.map((o) => ({\n value: o.value,\n label: o.label ?? o.value,\n disabled: !!o.disabled,\n icon: o.icon,\n iconColor: o.iconColor,\n supportingText: o.supportingText ?? o.description,\n selected: !!o.selected,\n }));\n }\n\n /**\n * `options` arrives as an array from a property binding, or as a JSON string\n * from an attribute. Everything downstream wants the array.\n */\n private get optionList(): MdAutocompleteOption[] {\n const raw = this.options;\n if (Array.isArray(raw)) return raw;\n if (typeof raw === 'string' && raw.trim()) {\n try {\n const parsed = JSON.parse(raw);\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n // A malformed attribute is an authoring mistake, not a reason to break\n // the field — warn once and carry on with nothing.\n if (typeof console !== 'undefined') {\n console.warn('[md-autocomplete] `options` attribute is not valid JSON:', raw);\n }\n return [];\n }\n }\n return [];\n }\n\n @Watch('options')\n refreshOptions() {\n const slotted = collectOptions(this.el, []);\n const data = slotted.length > 0 ? slotted : this.normalize(this.optionList);\n const shouldVirtualize =\n this.virtualize === 'always' ||\n (this.virtualize === 'auto' && data.length > VIRTUALIZE_THRESHOLD);\n const gen = ++this.loadGen;\n\n if (shouldVirtualize && isWasmSupported() && data.length > 0) {\n this.optionsData = [];\n this.packing = true;\n this.vc.setFixedRowHeight(this.rowHeight);\n this.vc.setFilterMode(this.filterMode);\n void this.vc.load(data).then((ok) => {\n if (gen !== this.loadGen) return; // superseded by a newer load/refresh\n if (!ok) {\n this.optionsData = data;\n }\n this.packing = false;\n // A filter typed while the pack ran must apply to the fresh dataset.\n if (ok && this.open && this.typedSinceOpen) this.vc.setQuery(this.query);\n this.refreshLabelMap();\n forceUpdate(this);\n });\n } else {\n this.vc.reset();\n this.optionsData = data;\n this.refreshLabelMap();\n }\n }\n\n /** Slotted `<md-select-option>` mount/unmount/data change → re-read. */\n @Listen('mdSelectOptionChange')\n onOptionChange(e: Event) {\n e.stopPropagation();\n this.refreshOptions();\n }\n\n // ── Selection state ──────────────────────────────────────\n\n /** Effective busy state: consumer-driven `loading` OR an in-flight pack. */\n private get busy(): boolean {\n return this.loading || this.packing;\n }\n\n private get selectedArray(): string[] {\n if (this.multiple) return Array.isArray(this.value) ? this.value : [];\n if (typeof this.value === 'string' && this.value) return [this.value];\n return [];\n }\n\n private isSelected = (val: string) => this.selectedArray.includes(val);\n\n /** The active filter query: only what the user typed since open counts. */\n private get query(): string {\n return this.typedSinceOpen ? this.inputValue.trim() : '';\n }\n\n private get filteredOptions(): SelectOptionData[] {\n const selected = this.selectedArray;\n const state = { inputValue: this.query, selected };\n let results = this.filterer\n ? this.filterer(this.optionsData, state)\n : this.defaultFilter(this.optionsData, state);\n if (this.limitResults > 0) results = results.slice(0, this.limitResults);\n return results;\n }\n\n private defaultFilter(\n options: SelectOptionData[],\n state: { inputValue: string; selected: string[] },\n ): SelectOptionData[] {\n const q = state.inputValue.toLowerCase();\n if (!q) return options;\n return options.filter(\n (o) =>\n o.label.toLowerCase().includes(q) ||\n o.value.toLowerCase().includes(q) ||\n (o.supportingText?.toLowerCase().includes(q) ?? false),\n );\n }\n\n /** Rebuild the value→label cache (chips, single-mode input text). */\n private refreshLabelMap() {\n const values = this.selectedArray;\n if (values.length === 0) {\n if (this.labelMap.size) this.labelMap = new Map();\n return;\n }\n const next = new Map<string, string>();\n if (this.vc.active) {\n const resolved = this.vc.getLabels(values);\n for (const v of values) {\n next.set(v, resolved.get(v) ?? this.labelMap.get(v) ?? v);\n }\n } else {\n for (const v of values) {\n const opt = this.optionsData.find((o) => o.value === v);\n next.set(v, opt?.label ?? this.labelMap.get(v) ?? v);\n }\n }\n this.labelMap = next;\n }\n\n // ── Form association ─────────────────────────────────────\n\n private defaultValue: string | string[] = '';\n private defaultInputValue = '';\n\n componentWillLoad() {\n this.refreshOptions();\n this.defaultValue = Array.isArray(this.value) ? [...this.value] : this.value;\n this.defaultInputValue = this.inputValue;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n // @Watch('open') does not fire for the initial value.\n if (this.open && !this.disabled) {\n void this.menuEl?.show?.({ autoFocus: false });\n this.mdOpen.emit();\n }\n }\n\n disconnectedCallback() {\n clearTimeout(this.searchDebounce);\n this.vc.detachViewport();\n }\n\n formResetCallback() {\n this.value = Array.isArray(this.defaultValue) ? [...this.defaultValue] : this.defaultValue;\n this.inputValue = this.defaultInputValue;\n // Stale filter state must not survive a reset.\n this.typedSinceOpen = false;\n clearTimeout(this.searchDebounce);\n if (this.vc.active) this.vc.setQuery('');\n }\n\n @Watch('value')\n syncFormValue() {\n this.updateValidity();\n this.refreshLabelMap();\n // Programmatic single-mode value set (menu closed): reflect the committed\n // label in the visible input — otherwise the field shows stale text until\n // the next interaction. Silent (no mdInput): this is not user typing.\n if (!this.multiple && !this.open) {\n const committed =\n typeof this.value === 'string' && this.value\n ? this.labelMap.get(this.value) ?? this.value\n : '';\n if (this.inputValue !== committed) this.inputValue = committed;\n }\n if (this.multiple) {\n const values = this.selectedArray;\n if (!values.length) {\n setFormValue(this.internals, null);\n return;\n }\n const data = new FormData();\n for (const v of values) data.append(this.name || '', v);\n setFormValue(this.internals, data);\n return;\n }\n const single = typeof this.value === 'string' ? this.value : '';\n setFormValue(this.internals, single || null);\n }\n\n /** Flipping `multiple` at runtime must re-shape the value and re-submit —\n * ElementInternals would otherwise keep the pre-flip payload. */\n @Watch('multiple')\n onMultipleFlip() {\n if (this.multiple) {\n if (typeof this.value === 'string') this.value = this.value ? [this.value] : [];\n else this.syncFormValue();\n } else {\n if (Array.isArray(this.value)) this.value = this.value[0] ?? '';\n else this.syncFormValue();\n }\n }\n\n @Watch('required')\n @Watch('valueMissingLabel')\n updateValidity() {\n if (!this.internals?.setValidity) return;\n // setCustomValidity() takes precedence over valueMissing, matching native.\n if (this.customValidityMessage) {\n this.internals.setValidity(\n { customError: true },\n this.customValidityMessage,\n (this.fieldEl as HTMLElement) ?? this.el,\n );\n } else if (this.required && this.selectedArray.length === 0) {\n this.internals.setValidity(\n { valueMissing: true },\n this.errorText || this.valueMissingLabel,\n (this.fieldEl as HTMLElement) ?? this.el,\n );\n } else {\n this.internals.setValidity({});\n }\n this.emitValidityChange();\n }\n\n /** Current validity: boolean, message and flags. Mirrors md-text-field. */\n @Method()\n async getValidity(): Promise<{\n valid: boolean;\n validationMessage: string;\n flags: Record<string, boolean>;\n }> {\n return getValidityOf(this.internals);\n }\n\n /**\n * Fires when this control's validity CHANGES — never on every keystroke, and\n * never for a re-publish that lands on the same state.\n *\n * `composed: false` is deliberate. Composites like md-select embed an\n * md-text-field, and a composed event escapes that inner shadow root, so a\n * listener on md-select would receive the inner field's event as well as the\n * host's — two events, different payloads, for one logical control. Keeping\n * it uncomposed means each component reports only for itself, while\n * `bubbles: true` still lets a <form> or app root hear every control.\n */\n @Event({ bubbles: true, composed: false }) mdValidityChange: EventEmitter<{\n valid: boolean;\n validationMessage: string;\n flags: Record<string, boolean>;\n }>;\n\n /** Last emitted validity, so a re-publish that changes nothing stays silent. */\n private lastValidityKey: string | null = null;\n\n /**\n * Emit mdValidityChange if validity actually moved.\n *\n * The FIRST call only primes the baseline. Initial state is not a change, and\n * emitting on mount would fire once per control on every page load — noise a\n * consumer would have to filter out, and misleading for anything logging\n * \"field became invalid\".\n */\n private emitValidityChange() {\n const v = getValidityOf(this.internals);\n const key = `${v.valid}|${v.validationMessage}`;\n if (this.lastValidityKey === key) return;\n const primed = this.lastValidityKey !== null;\n this.lastValidityKey = key;\n if (primed) this.mdValidityChange.emit(v);\n }\n\n /** Constraint-validation API, matching md-text-field and the native contract.\n * Validity was already published to the form here, but with no public method\n * a consumer could not ASK this control whether it was valid. */\n @Method()\n async checkValidity(): Promise<boolean> {\n return checkValidityOf(this.internals);\n }\n\n @Method()\n async reportValidity(): Promise<boolean> {\n return reportValidityOf(this.internals);\n }\n\n @Method()\n async setCustomValidity(message: string) {\n this.customValidityMessage = message;\n this.updateValidity();\n }\n\n // ── Menu open/close plumbing (mirrors md-select) ─────────\n\n private _syncGuard = false;\n private _lastEmit: 'open' | 'close' | null = null;\n\n @Watch('open')\n syncMenu(open: boolean) {\n if (this._syncGuard || !this.menuEl) return;\n if (open) {\n // Focus stays in the input — typing keeps filtering.\n this.menuEl.show?.({ autoFocus: false });\n } else {\n this.menuEl.close?.();\n }\n }\n\n /** True once the vc is wired to the menu's live scroll viewport. */\n private vpWired = false;\n\n /** Wire the vc to the menu's scroll viewport (listener + row measure +\n * recompute). The viewport only exists once the CAPPED virtual listbox has\n * rendered (the busy bar renders uncapped, without a scroll viewport), so a\n * null resolve just returns — componentDidRender retries every render\n * while the menu is open until the wiring lands. */\n private attachMenuViewport() {\n void (async () => {\n const vp = (await this.menuEl?.getScrollViewport?.()) ?? null;\n if (!vp || this.vpWired) return;\n this.vpWired = true;\n await this.vc.attachViewport(async () => vp);\n })();\n }\n\n private handleMenuOpen = () => {\n this._syncGuard = true;\n this.open = true;\n this._syncGuard = false;\n if (this._lastEmit !== 'open') {\n this._lastEmit = 'open';\n this.mdOpen.emit();\n }\n if (this.vc.active) {\n // Apply the live query (typing may have just opened the menu — the open\n // event lands after the keystroke, so the filter must be preserved).\n this.vc.setQuery(this.query);\n this.attachMenuViewport();\n }\n };\n\n private handleMenuClose = () => {\n this._syncGuard = true;\n this.open = false;\n this._syncGuard = false;\n if (this._lastEmit !== 'close') {\n this._lastEmit = 'close';\n this.mdClose.emit();\n }\n // Reset the typing gate on close, so REOPENING shows the full list (a\n // committed single value must not filter the list down to itself).\n this.typedSinceOpen = false;\n this.vc.detachViewport();\n this.vpWired = false;\n // Strict single mode: snap the input back to the committed label (or\n // empty) — typed-but-uncommitted text must not linger after the popup\n // closes, and the committed value itself is never touched by typing.\n if (!this.multiple && !this.freeSolo) {\n const committed =\n typeof this.value === 'string' && this.value\n ? this.labelMap.get(this.value) ?? this.value\n : '';\n if (this.inputValue !== committed) {\n this.inputValue = committed;\n this.mdInput.emit(committed);\n }\n }\n };\n\n /** Register/clear the virtual provider on the menu once it's rendered, and\n * (re)try the viewport wiring — the menu may have been opened while the\n * dataset was still packing, before the scroll viewport existed. */\n componentDidRender() {\n void this.syncComboboxRefs();\n if (!this.menuEl) return;\n if (this.vc.active && !this.providerSet) {\n void this.menuEl.setVirtualProvider?.(this.vc.provider);\n this.providerSet = true;\n } else if (!this.vc.active && this.providerSet) {\n void this.menuEl.setVirtualProvider?.(null);\n this.providerSet = false;\n }\n if (this.open && this.vc.active && !this.vpWired) this.attachMenuViewport();\n if (this.pendingListFocus && this.open) {\n const all = this.el.shadowRoot?.querySelectorAll(\n '.md-autocomplete__listbox md-menu-item:not([disabled])',\n );\n const target = (this.pendingListFocus === 'first' ? all?.[0] : all?.[all.length - 1]) as\n | HTMLElement\n | undefined;\n if (target) {\n this.pendingListFocus = null;\n target.focus();\n }\n } else if (this.pendingListFocus && !this.open) {\n this.pendingListFocus = null;\n }\n }\n\n /**\n * Point the combobox at its listbox ACROSS the shadow boundary.\n *\n * The textbox lives in md-text-field's shadow root and the listbox in this\n * one, so `aria-controls` as an IDREF is unusable — an IDREF only resolves\n * inside a single tree. ARIA element reflection takes element references\n * instead, and a reference from a descendant tree to an element in an\n * ancestor tree is in scope: verified in the accessibility tree, where the\n * combobox node gains a real `controls` relation to the listbox.\n *\n * Where reflection is unavailable the component is still a combobox with a\n * truthful expanded state, and ArrowDown moves REAL focus onto an option —\n * the APG variant that does not depend on a reference at all.\n */\n private async syncComboboxRefs() {\n const field = this.fieldEl as (HTMLElement & {\n getInputElement?: () => Promise<HTMLInputElement | null>;\n }) | undefined;\n const input = await field?.getInputElement?.();\n if (!input || !('ariaControlsElements' in input)) return;\n const listbox = this.el.shadowRoot?.querySelector('[role=\"listbox\"]') as HTMLElement | null;\n const next = this.open && listbox ? [listbox] : null;\n const current = (input as unknown as { ariaControlsElements: Element[] | null })\n .ariaControlsElements;\n // Idempotent: reassigning every render would churn the AX tree.\n if (!next && !current?.length) return;\n if (next && current?.length === 1 && current[0] === next[0]) return;\n (input as unknown as { ariaControlsElements: Element[] | null }).ariaControlsElements = next;\n }\n\n // ── Selection ────────────────────────────────────────────\n\n private commitValue(next: string | string[]) {\n this.value = next;\n this.mdChange.emit(next);\n }\n\n private pick(value: string, label: string, disabled: boolean | undefined, e?: CustomEvent) {\n // Composed mdClick would otherwise leak to host listeners.\n e?.stopPropagation();\n if (disabled) return;\n if (this.multiple) {\n const current = this.selectedArray;\n const exists = current.includes(value);\n const blocked = !exists && this.maxSelected > 0 && current.length >= this.maxSelected;\n if (blocked) {\n // md-menu-item self-toggled selected=true before this fired; revert it.\n const item = e?.target as (HTMLElement & { selected?: boolean }) | null;\n if (item) item.selected = false;\n return;\n }\n this.labelMap = new Map(this.labelMap).set(value, label);\n const next = exists ? current.filter((v) => v !== value) : [...current, value];\n this.commitValue(next);\n this.inputValue = '';\n this.mdInput.emit('');\n this.typedSinceOpen = false;\n if (this.vc.active) this.vc.setQuery('');\n // Multi-select stays OPEN on pick — choosing several in a row is the\n // whole point, and md-multi-select already behaves this way. Closing\n // after the first pick forced a reopen per item. It dismisses on an\n // outside click, on the trigger, or on Escape like any other popup.\n this.fieldEl?.focus?.();\n } else {\n this.labelMap = new Map(this.labelMap).set(value, label);\n this.commitValue(value);\n this.inputValue = label;\n this.mdInput.emit(label);\n // The selection ends the query session NOW — not at mdClose time. The\n // close event lands ~150ms later (menu animation); reopening within\n // that window must already show the full list, not a list filtered by\n // the committed label.\n this.typedSinceOpen = false;\n if (this.vc.active) this.vc.setQuery('');\n if (!this.disableCloseOnSelect) this.open = false;\n this.fieldEl?.focus?.();\n }\n }\n\n private commitFreeSolo(): boolean {\n if (!this.freeSolo) return false;\n const raw = this.inputValue.trim();\n if (!raw) return false;\n if (this.multiple) {\n const current = this.selectedArray;\n if (current.includes(raw)) return true;\n if (this.maxSelected > 0 && current.length >= this.maxSelected) return false;\n this.labelMap = new Map(this.labelMap).set(raw, raw);\n this.commitValue([...current, raw]);\n this.inputValue = '';\n this.mdInput.emit('');\n } else {\n this.commitValue(raw);\n }\n return true;\n }\n\n private removeChip = (val: string) => (e: CustomEvent | MouseEvent) => {\n e.stopPropagation();\n if ('preventDefault' in e) e.preventDefault();\n if (this.disabled || this.softDisabled || !this.multiple) return;\n this.commitValue(this.selectedArray.filter((v) => v !== val));\n };\n\n private handleClear = () => {\n if (this.disabled || this.softDisabled) return;\n this.inputValue = '';\n this.mdInput.emit('');\n this.typedSinceOpen = false;\n if (this.vc.active) this.vc.setQuery('');\n this.commitValue(this.multiple ? [] : '');\n this.mdClear.emit();\n this.fieldEl?.focus?.();\n };\n\n // ── Input handlers ───────────────────────────────────────\n\n /** Apply a typed input string (from the field, or a printable key redirected\n * out of the listbox): update state, open, and drive the (virtual) filter. */\n private applyTyped(raw: string) {\n this.inputValue = raw;\n this.typedSinceOpen = true;\n this.mdInput.emit(raw);\n if (!this.open) this.open = true;\n if (this.vc.active) {\n clearTimeout(this.searchDebounce);\n this.searchDebounce = setTimeout(() => {\n this.vc.setQuery(this.query);\n }, SEARCH_DEBOUNCE_MS);\n }\n // NB: typing never uncommits the value in strict single mode — a stray\n // keystroke (even a trailing space) must not deselect the committed\n // option. The input resyncs to the committed label when the popup closes\n // (see handleMenuClose), matching the MUI model.\n }\n\n private handleFieldInput = (e: CustomEvent<string>) => {\n this.applyTyped(e.detail ?? '');\n };\n\n /** Printable keys (and Backspace) pressed while focus is on an option:\n * an editable combobox keeps TYPING in the input — refocus it and extend\n * the query instead of letting md-menu's typeahead swallow the key. */\n private handleListboxKeyDown = (e: KeyboardEvent) => {\n if (e.ctrlKey || e.metaKey || e.altKey) return;\n const isPrintable = e.key.length === 1;\n if (!isPrintable && e.key !== 'Backspace') return;\n e.preventDefault();\n e.stopPropagation();\n this.fieldEl?.focus?.();\n this.applyTyped(\n e.key === 'Backspace' ? this.inputValue.slice(0, -1) : this.inputValue + e.key,\n );\n };\n\n /** First visible, enabled option row in this shadow root (plain or virtual). */\n private firstOptionItem(): HTMLElement | null {\n return (\n (this.el.shadowRoot?.querySelector(\n '.md-autocomplete__listbox md-menu-item:not([disabled])',\n ) as HTMLElement | null) ?? null\n );\n }\n\n private handleFieldKeyDown = (e: KeyboardEvent) => {\n if (this.disabled || this.softDisabled) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!this.open) {\n // APG: ArrowDown on a closed combobox opens the popup AND moves\n // focus to the first option (deferred until the list renders).\n this.pendingListFocus = 'first';\n this.open = true;\n } else {\n // Focus-moves-into-popup combobox variant: the option takes real\n // focus (announced by AT); md-menu's roving model handles the rest.\n this.firstOptionItem()?.focus();\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!this.open) {\n this.pendingListFocus = 'last';\n this.open = true;\n } else {\n const all = this.el.shadowRoot?.querySelectorAll(\n '.md-autocomplete__listbox md-menu-item:not([disabled])',\n );\n (all?.[all.length - 1] as HTMLElement | undefined)?.focus();\n }\n break;\n case 'Enter':\n if (this.freeSolo && this.commitFreeSolo()) {\n e.preventDefault();\n if (!this.multiple) this.open = false;\n }\n break;\n case 'Escape':\n if (this.open) {\n e.preventDefault();\n this.open = false;\n }\n break;\n case 'Backspace':\n if (this.multiple && !this.inputValue && this.selectedArray.length > 0) {\n this.commitValue(this.selectedArray.slice(0, -1));\n }\n break;\n }\n };\n\n private handleFieldFocus = () => {\n this.focused = true;\n };\n\n private handleFieldBlur = () => {\n this.focused = false;\n // Not while the popup is open — ArrowDown moves focus into the listbox,\n // and resetting the input there would wipe the active filter mid-browse.\n if (this.open) return;\n if (this.clearOnBlur && !this.multiple && !this.freeSolo) {\n const committed = typeof this.value === 'string' ? this.labelMap.get(this.value) : '';\n if (this.inputValue && this.inputValue !== committed) {\n this.inputValue = committed ?? '';\n this.mdInput.emit(this.inputValue);\n }\n }\n };\n\n // ── Render ───────────────────────────────────────────────\n\n /** A single removable value token (shared by the below + inline layouts). */\n private renderChipItem = (val: string) => (\n <md-chip\n key={val}\n part=\"chip\"\n exportparts=\"remove:chip-remove,label:chip-label\"\n variant=\"input\"\n // A display token of a selected value (role=group, not a nested\n // interactive button host) — only its ✕ removes it.\n selectable={false}\n label={this.labelMap.get(val) ?? val}\n disabled={this.disabled || this.softDisabled}\n removable={!this.disabled && !this.softDisabled}\n onMdRemove={this.removeChip(val)}\n onClick={(e: MouseEvent) => e.stopPropagation()}\n ></md-chip>\n );\n\n private get inlineChips(): boolean {\n return this.multiple && this.chipPosition === 'inline';\n }\n\n /** Chips BELOW the field (default layout). */\n private renderChips() {\n if (!this.multiple || this.inlineChips) return null;\n const selected = this.selectedArray;\n if (selected.length === 0) return null;\n return (\n <div\n class=\"md-autocomplete__chips\"\n part=\"chips\"\n role=\"group\"\n aria-label={this.label ? `${this.label} — selected` : 'Selected'}\n >\n {selected.map(this.renderChipItem)}\n </div>\n );\n }\n\n /** Chips INSIDE the field (md-text-field `chips` slot), wrapping onto new\n * rows — the field grows with them (`chips-wrap`). */\n private renderInlineChips() {\n if (!this.inlineChips) return null;\n const selected = this.selectedArray;\n if (selected.length === 0) return null;\n return (\n <div\n slot=\"chips\"\n class=\"md-autocomplete__inline-chips\"\n part=\"chips\"\n role=\"group\"\n aria-label={this.label ? `${this.label} — selected` : 'Selected'}\n >\n {selected.map(this.renderChipItem)}\n </div>\n );\n }\n\n private renderClearButton(forceHidden = false) {\n if (!this.clearable) return null;\n const hasValue = this.multiple\n ? this.selectedArray.length > 0\n : !!this.inputValue || !!this.value;\n // Always rendered (visibility-hidden when empty or busy): the button\n // popping in and out would change the field's intrinsic width, making the\n // trigger jump by its 30px whenever text appears in a shrink-to-fit layout.\n const hidden = forceHidden || !hasValue;\n return (\n <md-icon-button\n class={{\n 'md-autocomplete__clear': true,\n 'md-autocomplete__clear--hidden': hidden,\n }}\n slot=\"trailing-icon\"\n part=\"clear\"\n variant=\"standard\"\n size=\"xs\"\n icon={this.clearIcon}\n aria-label=\"Clear value\"\n aria-hidden={hidden ? 'true' : undefined}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n this.handleClear();\n }}\n ></md-icon-button>\n );\n }\n\n private renderTrigger() {\n return (\n <md-text-field\n ref={(el) => (this.fieldEl = el as HTMLElement)}\n id={this.triggerId}\n class=\"md-autocomplete__field\"\n part=\"field\"\n variant={this.variant}\n label={this.label}\n placeholder={this.placeholder}\n value={this.inputValue}\n disabled={this.disabled}\n error={this.error}\n errorText={this.errorText}\n reserveSupportingSpace={this.reserveSupportingSpace}\n supportingText={this.supportingText}\n required={this.required}\n density={this.density}\n appearFocused={this.open || this.focused}\n // Mirrored by md-text-field onto the focused input (global ARIA attr,\n // valid on textbox) — the input truthfully announces its listbox popup.\n aria-haspopup=\"listbox\"\n // Promote the real textbox to a combobox: the role, the expanded state\n // and the typing relationship all have to sit on the element AT reads.\n // The listbox reference is wired separately (syncComboboxRefs) because\n // it has to cross md-text-field's shadow boundary.\n inputRole=\"combobox\"\n inputExpanded={this.open}\n inputAriaAutocomplete=\"list\"\n chipsWrap={this.inlineChips}\n onMdInput={this.handleFieldInput}\n onClick={() => {\n if (!this.disabled && !this.softDisabled && !this.open) this.open = true;\n }}\n onKeyDown={this.handleFieldKeyDown}\n onFocus={this.handleFieldFocus}\n onBlur={this.handleFieldBlur}\n >\n {this.renderInlineChips()}\n {this.busy ? (\n // Busy state (consumer `loading` OR a dataset packing into WASM): a\n // spinner replaces the CARET only; the (hidden) clear button keeps\n // its reserved slot so the trailing cluster — and therefore the\n // field width — is identical across idle/typing/busy/loaded.\n [\n this.renderClearButton(true),\n <span slot=\"trailing-icon\" class=\"md-autocomplete__loader\" part=\"loading-spinner\">\n <slot name=\"loader\">\n <LazyLoadingIndicator label={this.loadingText}></LazyLoadingIndicator>\n </slot>\n </span>,\n ]\n ) : (\n [\n this.renderClearButton(),\n <span\n slot=\"trailing-icon\"\n class=\"md-autocomplete__caret material-symbols-outlined\"\n part=\"caret\"\n aria-hidden=\"true\"\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n if (!this.disabled && !this.softDisabled) this.open = !this.open;\n }}\n >\n {/* Static glyph + CSS rotation on open — same caret as the selects\n (a glyph swap would double-flip with the rotate rule). */}\n <slot name=\"dropdown-icon\">{this.dropdownIcon}</slot>\n </span>,\n ]\n )}\n </md-text-field>\n );\n }\n\n private renderOptionIcon(icon?: string, iconColor?: string) {\n if (!icon) return null;\n return (\n <span\n slot=\"leading-icon\"\n part=\"option-icon\"\n class=\"material-symbols-outlined md-autocomplete__option-icon\"\n style={iconColor ? { color: iconColor } : undefined}\n aria-hidden=\"true\"\n >\n {icon}\n </span>\n );\n }\n\n private renderVirtualOptions() {\n return (\n <div\n class=\"md-autocomplete__listbox\"\n role=\"listbox\"\n id={`${this.triggerId}-listbox`}\n aria-label={this.label || 'Options'}\n aria-multiselectable={this.multiple ? 'true' : undefined}\n onKeyDown={this.handleListboxKeyDown}\n >\n <div\n class=\"md-autocomplete__vspacer\"\n style={{ height: `${this.vc.topPad}px` }}\n aria-hidden=\"true\"\n ></div>\n {this.vc.windowRows.map((row, i) => {\n const filteredIndex = this.vc.windowStart + i;\n const selected = this.isSelected(row.value);\n return (\n <md-menu-item\n key={row.index}\n id={`${this.triggerId}-opt-${filteredIndex}`}\n data-vindex={filteredIndex}\n presentation=\"option\"\n type={this.multiple ? 'checkbox' : 'radio'}\n check-position=\"start\"\n keep-open\n part={selected ? 'option option-selected' : 'option'}\n disabled={row.disabled}\n selected={selected}\n headline={row.label}\n supporting-text={row.supportingText || ''}\n aria-setsize={this.vc.filteredLength}\n aria-posinset={filteredIndex + 1}\n onMdClick={(e: CustomEvent) => this.pick(row.value, row.label, row.disabled, e)}\n >\n {this.renderOptionIcon(row.icon || undefined)}\n </md-menu-item>\n );\n })}\n <div\n class=\"md-autocomplete__vspacer\"\n style={{ height: `${this.vc.bottomPad}px` }}\n aria-hidden=\"true\"\n ></div>\n </div>\n );\n }\n\n private renderMenu() {\n const virtual = this.vc.active;\n const filtered = virtual ? [] : this.filteredOptions;\n const datasetEmpty = virtual ? false : this.optionsData.length === 0;\n const emptyText = this.busy\n ? ''\n : virtual\n ? this.vc.filteredLength === 0\n ? this.noResultsText\n : ''\n : datasetEmpty\n ? this.noOptionsText\n : filtered.length === 0\n ? this.noResultsText\n : '';\n const menuMaxHeight = virtual ? (this.maxHeight ?? 320) : this.maxHeight;\n\n return (\n <md-menu\n ref={(el) => (this.menuEl = el as VirtualMenuEl)}\n anchor={this.triggerId}\n placement={this.placement}\n match-anchor-width={this.matchTriggerWidth}\n max-height={menuMaxHeight}\n persistent={this.disableCloseOnSelect}\n empty-text={emptyText}\n auto-focus={false}\n listbox\n list-label={this.label || 'Options'}\n part=\"menu\"\n onMdOpen={this.handleMenuOpen}\n onMdClose={this.handleMenuClose}\n >\n {this.busy ? (\n <div class=\"md-autocomplete__loading\" part=\"loading\" role=\"status\" aria-label={this.loadingText}>\n <md-progress-indicator\n variant=\"linear\"\n indeterminate\n wave\n part=\"loading-progress\"\n label={this.loadingText}\n ></md-progress-indicator>\n </div>\n ) : virtual ? (\n this.renderVirtualOptions()\n ) : (\n <div\n class=\"md-autocomplete__listbox\"\n role=\"listbox\"\n id={`${this.triggerId}-listbox`}\n aria-label={this.label || 'Options'}\n aria-multiselectable={this.multiple ? 'true' : undefined}\n onKeyDown={this.handleListboxKeyDown}\n >\n {filtered.map((opt, i) => (\n <md-menu-item\n key={opt.value}\n id={`${this.triggerId}-opt-${i}`}\n presentation=\"option\"\n type={this.multiple ? 'checkbox' : 'radio'}\n check-position=\"start\"\n keep-open\n part={this.isSelected(opt.value) ? 'option option-selected' : 'option'}\n disabled={opt.disabled}\n selected={this.isSelected(opt.value)}\n headline={opt.label}\n supporting-text={opt.supportingText || ''}\n onMdClick={(e: CustomEvent) => this.pick(opt.value, opt.label, opt.disabled, e)}\n >\n {this.renderOptionIcon(opt.icon, opt.iconColor)}\n </md-menu-item>\n ))}\n </div>\n )}\n </md-menu>\n );\n }\n\n render() {\n const chipsFirst =\n this.multiple && (this.chipPosition === 'top' || this.chipPosition === 'left');\n const optionCount = this.vc.active ? this.vc.filteredLength : this.filteredOptions.length;\n const srStatus = this.busy\n ? this.loadingText\n : this.open\n ? this.statusTemplate.replace('{count}', String(optionCount))\n : '';\n return (\n <Host\n class={{\n 'md-autocomplete': true,\n [`md-autocomplete--${this.variant}`]: true,\n 'md-autocomplete--open': this.open,\n 'md-autocomplete--disabled': this.disabled,\n 'md-autocomplete--soft-disabled': this.softDisabled,\n 'md-autocomplete--multiple': this.multiple,\n 'md-autocomplete--loading': this.busy,\n [`md-autocomplete--chips-${this.chipPosition}`]: this.multiple,\n }}\n aria-haspopup=\"listbox\"\n aria-busy={this.busy ? 'true' : 'false'}\n >\n {chipsFirst && this.renderChips()}\n {this.renderTrigger()}\n {!chipsFirst && this.renderChips()}\n {this.renderMenu()}\n {/* Polite live status: the visible option count — which no ARIA\n attribute conveys — plus the busy text. The expanded state itself\n rides on the real textbox (`input-expanded` → aria-expanded, legal\n there because the input carries role=\"combobox\"; see renderTrigger). */}\n <span class=\"md-autocomplete__sr-status\" role=\"status\" aria-live=\"polite\">\n {srStatus}\n </span>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-Bm07YAg9.js');
|
|
4
4
|
|
|
5
5
|
const mdAvatarCss = () => `:host{--_size:var(--md-avatar-size, max(28px, calc(40px + var(--md-sys-density-scale, 0) * 3px)));--_container-color:var( --md-avatar-container-color, var(--md-sys-color-surface-container-highest, #E6E0E9) );--_label-color:var( --md-avatar-label-color, var(--md-sys-color-on-surface-variant, #49454F) );--_shape:var(--md-avatar-container-shape, 50%);--_icon-size:var(--md-avatar-icon-size, calc(var(--_size) * 0.6));--_label-font-family:var( --md-avatar-label-font-family, var(--md-sys-typescale-title-medium-font-family, system-ui, sans-serif) );--_label-font-size:var(--md-avatar-label-font-size, calc(var(--_size) * 0.4));--_label-font-weight:var( --md-avatar-label-font-weight, var(--md-sys-typescale-title-medium-font-weight, 500) );--_label-letter-spacing:var(--md-avatar-label-letter-spacing, 0.05em);--_outline-color:var(--md-avatar-outline-color, transparent);--_outline-width:var(--md-avatar-outline-width, 0);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;vertical-align:middle;user-select:none;inline-size:var(--_size);block-size:var(--_size);border-radius:var(--_shape);background-color:var(--_container-color);color:var(--_label-color);overflow:hidden;position:relative;outline:var(--_outline-width) solid var(--_outline-color);outline-offset:calc(-1 * var(--_outline-width))}:host(.md-avatar--small){--_size:var(--md-avatar-size, max(18px, calc(24px + var(--md-sys-density-scale, 0) * 1.5px)))}:host(.md-avatar--medium){--_size:var(--md-avatar-size, max(28px, calc(40px + var(--md-sys-density-scale, 0) * 3px)))}:host(.md-avatar--large){--_size:var(--md-avatar-size, max(40px, calc(56px + var(--md-sys-density-scale, 0) * 4px)))}:host(.md-avatar--circle){--_shape:var(--md-avatar-container-shape, 50%)}:host(.md-avatar--rounded){--_shape:var(--md-avatar-container-shape, var(--md-sys-shape-corner-medium, 12px))}:host(.md-avatar--square){--_shape:var(--md-avatar-container-shape, 0)}:host(.md-avatar--mode-image){background-color:transparent}.md-avatar__image{display:block;inline-size:100%;block-size:100%;object-fit:cover;object-position:center;border-radius:inherit;pointer-events:none;-webkit-user-drag:none}.md-avatar__initials{font-family:var(--_label-font-family);font-size:var(--_label-font-size);font-weight:var(--_label-font-weight);letter-spacing:var(--_label-letter-spacing);line-height:1;color:inherit;text-transform:uppercase;font-feature-settings:"tnum"}.md-avatar__icon{font-family:var(--md-sys-icon-font-family, 'Material Symbols Outlined', 'Material Icons');font-size:var(--_icon-size);inline-size:var(--_icon-size);block-size:var(--_icon-size);color:inherit;line-height:1;font-weight:normal;font-style:normal;letter-spacing:normal;text-transform:none;white-space:nowrap;overflow-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;pointer-events:none;user-select:none}::slotted(*:not(md-badge)){display:inline-flex;align-items:center;justify-content:center;inline-size:var(--_icon-size);block-size:var(--_icon-size);font-size:var(--_icon-size);color:inherit;fill:currentColor;line-height:1;pointer-events:none;user-select:none}:host(.md-avatar--palette-1){--_container-color:var( --md-avatar-palette-1-container, var(--md-sys-color-primary-container, #EADDFF) );--_label-color:var( --md-avatar-palette-1-label, var(--md-sys-color-on-primary-container, #21005D) )}:host(.md-avatar--palette-2){--_container-color:var( --md-avatar-palette-2-container, var(--md-sys-color-secondary-container, #E8DEF8) );--_label-color:var( --md-avatar-palette-2-label, var(--md-sys-color-on-secondary-container, #1D192B) )}:host(.md-avatar--palette-3){--_container-color:var( --md-avatar-palette-3-container, var(--md-sys-color-tertiary-container, #FFD8E4) );--_label-color:var( --md-avatar-palette-3-label, var(--md-sys-color-on-tertiary-container, #31111D) )}:host(.md-avatar--palette-4){--_container-color:var( --md-avatar-palette-4-container, var(--md-sys-color-error-container, #F9DEDC) );--_label-color:var( --md-avatar-palette-4-label, var(--md-sys-color-on-error-container, #410E0B) )}:host(.md-avatar--palette-5){--_container-color:var( --md-avatar-palette-5-container, color-mix(in srgb, var(--md-sys-color-primary, #6750A4) 22%, var(--md-sys-color-surface, #FEF7FF)) );--_label-color:var( --md-avatar-palette-5-label, color-mix(in srgb, var(--md-sys-color-primary, #6750A4) 72%, var(--md-sys-color-on-surface, #1C1B1F)) )}:host(.md-avatar--palette-6){--_container-color:var( --md-avatar-palette-6-container, color-mix(in srgb, var(--md-sys-color-tertiary, #7D5260) 22%, var(--md-sys-color-surface, #FEF7FF)) );--_label-color:var( --md-avatar-palette-6-label, color-mix(in srgb, var(--md-sys-color-tertiary, #7D5260) 72%, var(--md-sys-color-on-surface, #1C1B1F)) )}:host(.md-avatar--palette-7){--_container-color:var( --md-avatar-palette-7-container, color-mix(in srgb, var(--md-sys-color-secondary, #625B71) 22%, var(--md-sys-color-surface, #FEF7FF)) );--_label-color:var( --md-avatar-palette-7-label, color-mix(in srgb, var(--md-sys-color-secondary, #625B71) 72%, var(--md-sys-color-on-surface, #1C1B1F)) )}@media (forced-colors: active){:host{--_container-color:ButtonFace;--_label-color:ButtonText;--_outline-color:ButtonText;--_outline-width:1px}}:host([density='-1']){--md-sys-density-scale:-1}:host([density='-2']){--md-sys-density-scale:-2}:host([density='-3']){--md-sys-density-scale:-3}:host([density='-4']){--md-sys-density-scale:-4}`;
|
|
6
6
|
|
|
@@ -219,7 +219,7 @@ const MdAvatar = class {
|
|
|
219
219
|
const isPresetSize = PRESET_SIZES.has(String(this.size));
|
|
220
220
|
const customSize = isPresetSize ? undefined : coerceCssLength(this.size);
|
|
221
221
|
const hostStyle = customSize ? { '--md-avatar-size': customSize } : undefined;
|
|
222
|
-
return (index.h(index.Host, { key: '
|
|
222
|
+
return (index.h(index.Host, { key: 'c8a7c5cc76083cd8454c4c4b5214b2926d9a5d12', class: {
|
|
223
223
|
'md-avatar': true,
|
|
224
224
|
[`md-avatar--${this.size}`]: isPresetSize,
|
|
225
225
|
'md-avatar--custom-size': !isPresetSize && !!customSize,
|
|
@@ -227,7 +227,7 @@ const MdAvatar = class {
|
|
|
227
227
|
[`md-avatar--mode-${fallbackMode}`]: true,
|
|
228
228
|
[`md-avatar--palette-${palette}`]: palette > 0 && fallbackMode !== 'image',
|
|
229
229
|
'md-avatar--has-image': hasImage,
|
|
230
|
-
}, style: hostStyle, role: a11yLabel ? 'img' : 'presentation', "aria-label": a11yLabel, "aria-hidden": a11yLabel ? null : 'true' }, fallbackMode === 'image' && (index.h("img", { key: '
|
|
230
|
+
}, style: hostStyle, role: a11yLabel ? 'img' : 'presentation', "aria-label": a11yLabel, "aria-hidden": a11yLabel ? null : 'true' }, fallbackMode === 'image' && (index.h("img", { key: '774653af2c3c89d6717f05285d64c472dd2b63f0', class: "md-avatar__image", part: "image", src: this.src, alt: this.alt || '', loading: this.loading, crossorigin: this.crossorigin || undefined, "aria-hidden": "true", draggable: false, onLoad: this.handleImageLoad, onError: this.handleImageError })), fallbackMode === 'initials' && (index.h("span", { key: '52bc085dc3f5d44b89b40967b587f8c4ba7101bb', class: "md-avatar__initials", part: "initials", "aria-hidden": "true" }, computedInitials)), fallbackMode === 'slot' && (index.h("slot", { key: 'af4fb3205ff7776196a0c925381e80461eee21c6' }, index.h("span", { key: 'a83bbca713bceba984843a4017ab3957c98d47dc', class: "md-avatar__icon material-symbols-outlined", part: "icon", "aria-hidden": "true" }, "person")))));
|
|
231
231
|
}
|
|
232
232
|
get el() { return index.getElement(this); }
|
|
233
233
|
static get watchers() { return {
|
|
@@ -933,7 +933,7 @@ const MdTooltip = class {
|
|
|
933
933
|
const isRich = this.variant === 'rich';
|
|
934
934
|
const hasSubhead = !!this.subhead || this.hasSlottedSubhead;
|
|
935
935
|
const hasActions = this.hasSlottedActions;
|
|
936
|
-
return (index.h(index.Host, { key: '
|
|
936
|
+
return (index.h(index.Host, { key: 'f3272da5fa2e3b6a4c621182a5d2572f71e1badb', class: "md-tooltip-wrapper" }, index.h("slot", { key: 'a97507419418ffab1abeb6980d212b1c83b7d8fb' }), index.h("div", { key: '047b14502bb2942b6934408a4e40e120d654f939', class: {
|
|
937
937
|
'md-tooltip__popup': true,
|
|
938
938
|
'md-tooltip__popup--plain': !isRich,
|
|
939
939
|
'md-tooltip__popup--rich': isRich,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-Bm07YAg9.js');
|
|
4
4
|
|
|
5
5
|
const mdBadgeCss = () => `:host{--_container-color:var(--md-badge-container-color, var(--md-sys-color-error, #B3261E));--_label-color:var(--md-badge-label-color, var(--md-sys-color-on-error, #FFFFFF));--_shape:var(--md-badge-container-shape, var(--md-sys-shape-corner-full, 9999px));--_icon-color:var(--md-badge-icon-color, var(--md-badge-label-color, var(--md-sys-color-on-error, #FFFFFF)));--_icon-size:var(--md-badge-icon-size, max(8px, calc(10px + var(--md-sys-density-scale, 0) * 0.5px)));--_offset-x:var(--md-badge-offset-x, 50%);--_offset-y:var(--md-badge-offset-y, -50%);--_large-height:var(--md-badge-large-height, max(12px, calc(16px + var(--md-sys-density-scale, 0) * 1px)));--_large-padding:var(--md-badge-large-padding, 0 max(2px, calc(4px + var(--md-sys-density-scale, 0) * 0.5px)));--_small-size:var(--md-badge-small-size, max(4px, calc(6px + var(--md-sys-density-scale, 0) * 0.5px)));display:inline-flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;z-index:1;box-sizing:border-box;pointer-events:none;background-color:var(--_container-color);border-radius:var(--_shape)}:host(.md-badge--small){width:var(--_small-size);height:var(--_small-size);padding:0;transform:translate(var(--_offset-x), var(--_offset-y))}:host(.md-badge--large){min-width:var(--_large-height);height:var(--_large-height);padding:var(--_large-padding);transform:translate(var(--_offset-x), var(--_offset-y));color:var(--_label-color);font-family:var(--md-sys-typescale-label-small-font-family, Roboto, sans-serif);font-size:max(9px, calc(11px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-label-small-font-weight, 500);letter-spacing:var(--md-sys-typescale-label-small-letter-spacing, 0.5px);line-height:1}:host(.md-badge--large:not(.md-badge--has-content)){padding:0}.md-badge__label{display:block;white-space:nowrap;text-align:center}.md-badge__icon{font-size:var(--_icon-size);color:var(--_icon-color);line-height:1;display:flex;align-items:center;justify-content:center}::slotted(*){width:var(--_icon-size) !important;height:var(--_icon-size) !important;font-size:var(--_icon-size) !important;color:var(--_icon-color) !important;fill:var(--_icon-color) !important}.material-symbols-outlined{font-family:var(--md-sys-icon-font-family, 'Material Symbols Outlined', 'Material Icons');font-weight:normal;font-style:normal;font-size:var(--_icon-size, 10px);line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;overflow-wrap:normal;direction:ltr;font-feature-settings:'liga';-webkit-font-smoothing:antialiased}@media (forced-colors: active){:host{forced-color-adjust:none;background-color:Mark;color:MarkText}}:host([density='-1']){--md-sys-density-scale:-1}:host([density='-2']){--md-sys-density-scale:-2}:host([density='-3']){--md-sys-density-scale:-3}:host([density='-4']){--md-sys-density-scale:-4}`;
|
|
6
6
|
|
|
@@ -65,12 +65,12 @@ const MdBadge = class {
|
|
|
65
65
|
const hasLabel = !isSmall && !!display;
|
|
66
66
|
const hasIcon = !isSmall && (!!this.icon || this.hasSlottedIcon);
|
|
67
67
|
const hasContent = hasLabel || hasIcon;
|
|
68
|
-
return (index.h(index.Host, { key: '
|
|
68
|
+
return (index.h(index.Host, { key: '81a83dc5494fb90262e948a16795763cbb077410', class: {
|
|
69
69
|
'md-badge': true,
|
|
70
70
|
'md-badge--small': isSmall,
|
|
71
71
|
'md-badge--large': !isSmall,
|
|
72
72
|
'md-badge--has-content': hasContent,
|
|
73
|
-
}, role: "status", "aria-label": this.accessibleLabel }, !isSmall && (index.h("slot", { key: '
|
|
73
|
+
}, role: "status", "aria-label": this.accessibleLabel }, !isSmall && (index.h("slot", { key: '011585801a80562b772518fafdfdb9bf3cdcf6ff', name: "icon", onSlotchange: this.readSlottedIcon }, this.icon ? (index.h("span", { class: "md-badge__icon material-symbols-outlined", part: "icon", "aria-hidden": "true" }, this.icon)) : null)), hasLabel && (index.h("span", { key: '20544a829f5cdc2b6a0e564aabcc310ee0bf80bb', class: "md-badge__label", part: "label" }, display))));
|
|
74
74
|
}
|
|
75
75
|
get el() { return index.getElement(this); }
|
|
76
76
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-Bm07YAg9.js');
|
|
4
4
|
var barChart = require('./bar-chart-Cii6kt0Q.js');
|
|
5
5
|
var rtl = require('./rtl-BEsL8id9.js');
|
|
6
6
|
var a11y = require('./a11y-BzCCJW-H.js');
|
|
@@ -822,7 +822,7 @@ const MdBarChart = class {
|
|
|
822
822
|
// While loading, the loader owns the box — an empty-state message under it
|
|
823
823
|
// answers "no data" to a question nobody asked yet.
|
|
824
824
|
const empty = this.series.length === 0 && !this.loading;
|
|
825
|
-
return (index.h(index.Host, { key: '
|
|
825
|
+
return (index.h(index.Host, { key: 'f535a5ceb5ac843c5415093faf58c129f4b55d24', class: {
|
|
826
826
|
'md-bar-chart': true,
|
|
827
827
|
'md-bar-chart--empty': empty,
|
|
828
828
|
'md-bar-chart--loading': this.loading,
|
|
@@ -830,7 +830,7 @@ const MdBarChart = class {
|
|
|
830
830
|
'md-bar-chart--zoom-slider': this.zoomSliderOn,
|
|
831
831
|
'md-bar-chart--zoom-drag': this.zoomInside,
|
|
832
832
|
[`md-bar-chart--${this.layout}`]: true,
|
|
833
|
-
}, role: "figure", "aria-label": summary, "aria-busy": this.loading ? 'true' : null, style: this.heightProp ? { blockSize: this.heightProp } : undefined, onPointerDown: this.onPlotPointerDown, onPointerMove: this.onPointerMove, onPointerUp: this.onPointerUp, onPointerCancel: this.onPointerUp, onDblClick: this.onPlotDblClick }, index.h("header", { key: '
|
|
833
|
+
}, role: "figure", "aria-label": summary, "aria-busy": this.loading ? 'true' : null, style: this.heightProp ? { blockSize: this.heightProp } : undefined, onPointerDown: this.onPlotPointerDown, onPointerMove: this.onPointerMove, onPointerUp: this.onPointerUp, onPointerCancel: this.onPointerUp, onDblClick: this.onPlotDblClick }, index.h("header", { key: 'a56de64118eacdcce86a58d61b3e08ce1ffe5858', class: "md-bar-chart__header", part: "header" }, index.h("slot", { key: 'f6ca05ffbdb07279d103adc3e79395cebf2fcc62', name: "header" })), index.h("div", { key: '16d38bd35ddef6f48c6748bdbe9285681a9a5091', class: "md-bar-chart__canvas", part: "canvas", ref: el => this.bindChartHost(el), tabindex: empty ? undefined : '0', role: empty ? undefined : 'application', "aria-label": empty ? undefined : this.labelPlot, onKeyDown: this.onPlotKeyDown, onBlur: this.onPlotBlur }), empty && (index.h("div", { key: 'd63918dfde5234203ebe21be413011bd77787b15', class: "md-bar-chart__empty", part: "empty" }, index.h("slot", { key: '8fd2db209115817c725c2461b29e9ec2c6509f92', name: "empty" }, "No data to display"))), this.loading && (index.h("div", { key: '44f3f2347bde451c61025a8c050d2e263a3f6e3e', class: "md-bar-chart__loading", part: "loading", role: "status" }, index.h("slot", { key: '7137288cd3456cb926569963238ab481b1a981ce', name: "loader" }, index.h("slot", { key: 'd2fea29b0fb087763fda403882c982115bba460d', name: "loading" }, index.h("md-progress-indicator", { key: '4ecd5e96bc396b49574ac81539983880d2690f27', class: "md-bar-chart__spinner", variant: "circular", indeterminate: true, label: this.loadingLabel }), index.h("span", { key: '5922c3146b595840b452ed479d9590eb323a2118', class: "md-bar-chart__loading-text" }, this.loadingLabel))))), this.dragBand && Math.abs(this.dragBand.x2 - this.dragBand.x1) > 1 && (index.h("div", { key: '1c1d3b22ce4c53fe0273525a35806b105ee798c1', class: "md-bar-chart__zoom-band", part: "zoom-band", style: this.zoomBandStyle() })), this.zoomSliderOn && this.renderZoomSlider(), index.h("footer", { key: 'c6ef361aaff6269136da37ec7c5d26d27410b52c', class: "md-bar-chart__footer", part: "footer" }, index.h("slot", { key: '3ad5106449977ae89b7e3be3f3eb7ac7e300a65b', name: "footer" })), index.h("div", { key: 'c05f67cd4b89a188d6e3decc2689c0f8b3698264', class: "md-bar-chart__a11y-table", ref: el => this.bindA11yTableHost(el) }), index.h("div", { key: '869b2143b2cc1c9dc27f63cfcb5ac41eae575242', class: "md-bar-chart__live", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.announcement)));
|
|
834
834
|
}
|
|
835
835
|
get el() { return index.getElement(this); }
|
|
836
836
|
static get watchers() { return {
|