@awc-ui/core 1.0.0-beta.2 → 1.0.0-beta.3
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/loader.cjs.js +3 -2
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/md-accordion-item.cjs.entry.js +1 -1
- package/dist/cjs/md-accordion.cjs.entry.js +1 -1
- package/dist/cjs/md-app-bar.cjs.entry.js +1 -1
- package/dist/cjs/md-area-chart.cjs.entry.js +1 -1
- package/dist/cjs/md-autocomplete.cjs.entry.js +2 -2
- package/dist/cjs/md-avatar_2.cjs.entry.js +1 -1
- package/dist/cjs/md-badge.cjs.entry.js +1 -1
- package/dist/cjs/md-bar-chart.cjs.entry.js +1 -1
- package/dist/cjs/md-bottom-sheet.cjs.entry.js +1 -1
- package/dist/cjs/md-breadcrumb-item.cjs.entry.js +1 -1
- package/dist/cjs/md-breadcrumbs.cjs.entry.js +1 -1
- package/dist/cjs/md-button-group.cjs.entry.js +1 -1
- package/dist/cjs/md-button_7.cjs.entry.js +1 -1
- package/dist/cjs/md-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/md-chip.cjs.entry.js +1 -1
- package/dist/cjs/md-color-picker.cjs.entry.js +1 -1
- package/dist/cjs/md-date-picker.cjs.entry.js +1 -1
- package/dist/cjs/md-dialog.cjs.entry.js +1 -1
- package/dist/cjs/md-divider.cjs.entry.js +1 -1
- package/dist/cjs/md-fab-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/md-fab-menu.cjs.entry.js +1 -1
- package/dist/cjs/md-fab.cjs.entry.js +1 -1
- package/dist/cjs/md-line-chart.cjs.entry.js +1 -1
- package/dist/cjs/md-list-item.cjs.entry.js +1 -1
- package/dist/cjs/md-list.cjs.entry.js +1 -1
- package/dist/cjs/md-menu-item-group.cjs.entry.js +1 -1
- package/dist/cjs/md-menu_2.cjs.entry.js +1 -1
- package/dist/cjs/md-meter.cjs.entry.js +1 -1
- package/dist/cjs/md-multi-select.cjs.entry.js +2 -2
- package/dist/cjs/md-navigation-bar.cjs.entry.js +1 -1
- 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 +1 -1
- package/dist/cjs/md-number-field.cjs.entry.js +1 -1
- package/dist/cjs/md-organization-chart.cjs.entry.js +1 -1
- package/dist/cjs/md-otp-field.cjs.entry.js +1 -1
- 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 +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 +1 -1
- package/dist/cjs/md-select.cjs.entry.js +2 -2
- 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 +1 -1
- package/dist/cjs/md-sparkline.cjs.entry.js +1 -1
- package/dist/cjs/md-split-button.cjs.entry.js +1 -1
- package/dist/cjs/md-status-dot.cjs.entry.js +1 -1
- 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 +1 -1
- package/dist/cjs/md-tabs.cjs.entry.js +1 -1
- package/dist/cjs/md-text-field.cjs.entry.js +1 -1
- package/dist/cjs/md-time-picker.cjs.entry.js +1 -1
- package/dist/cjs/md-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/md-transfer-list.cjs.entry.js +1 -1
- package/dist/cjs/md3.cjs.js +3 -2
- 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/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-area-chart.js.map +1 -1
- package/dist/components/md-autocomplete.js +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-dialog.js +1 -1
- package/dist/components/md-divider.js +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-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-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-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-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-stepper.js +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-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-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-B-JfuA2g.js +2 -0
- package/dist/components/p-B-JfuA2g.js.map +1 -0
- package/dist/components/p-B-iHDK5h.js +2 -0
- package/dist/components/p-B-iHDK5h.js.map +1 -0
- package/dist/components/p-BA2v4IuG.js +2 -0
- package/dist/components/p-BA2v4IuG.js.map +1 -0
- package/dist/components/p-BADA63mI.js +2 -0
- package/dist/components/p-BADA63mI.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-CCMritCA.js +2 -0
- package/dist/components/p-CCMritCA.js.map +1 -0
- package/dist/components/p-CTC8XAB6.js +2 -0
- package/dist/components/p-CTC8XAB6.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-CtVItLby.js +2 -0
- package/dist/components/p-CtVItLby.js.map +1 -0
- package/dist/components/p-D8oM1Kr3.js +2 -0
- package/dist/components/p-D8oM1Kr3.js.map +1 -0
- package/dist/components/{p-Ddiw2Kjw.js → p-DEzb9xsY.js} +2 -2
- package/dist/components/p-DEzb9xsY.js.map +1 -0
- package/dist/components/p-DYL-8C5C.js +2 -0
- package/dist/components/p-DYL-8C5C.js.map +1 -0
- package/dist/components/p-DfU4xY2F.js +2 -0
- package/dist/components/p-DfU4xY2F.js.map +1 -0
- package/dist/components/p-Eb44PPZa.js +2 -0
- package/dist/components/p-Eb44PPZa.js.map +1 -0
- package/dist/components/{p-UdGDg2oJ.js → p-Lsoo1B-2.js} +2 -2
- package/dist/components/p-Lsoo1B-2.js.map +1 -0
- package/dist/components/p-tSoecrcz.js +2 -0
- package/dist/components/p-tSoecrcz.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/p-DXXUoRSH.js → components-csr/p--OUYjgKN.js} +2 -2
- package/dist/{components/p-Dp-w93ot.js → components-csr/p--TCJgZnE.js} +2 -2
- package/dist/components-csr/p-BdEoSBtL.js +2 -0
- package/dist/components-csr/p-BdEoSBtL.js.map +1 -0
- package/dist/components-csr/p-Bmu7RqHM.js +2 -0
- package/dist/components-csr/p-Bx6--dQF.js +2 -0
- 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-uTEkf0sE.js → components-csr/p-C0DlKmRg.js} +2 -2
- package/dist/{components/p-Ch2-tttM.js → components-csr/p-C4_7YnHT.js} +2 -2
- package/dist/{components/p-BwXpiUsu.js → components-csr/p-CG6FaRlt.js} +2 -2
- package/dist/{components/p-B0Opn6dK.js → components-csr/p-CSrxeWwL.js} +2 -2
- package/dist/components-csr/p-C_ogF68H.js +2 -0
- 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/p-B3MWYEEJ.js → components-csr/p-CrbzXk64.js} +2 -2
- package/dist/components-csr/p-CxhZdOPw.js +2 -0
- package/dist/components-csr/p-CxhZdOPw.js.map +1 -0
- package/dist/{components/p-7fN_yCXW.js → components-csr/p-DF19mmLl.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-csr/p-DvOKnoqK.js +2 -0
- package/dist/components-csr/p-DvOKnoqK.js.map +1 -0
- package/dist/{components/p-C8EP4S21.js → components-csr/p-DvXQXhgu.js} +2 -2
- package/dist/components-csr/p-DzPKu-Ma.js +2 -0
- package/dist/components-csr/p-DzPKu-Ma.js.map +1 -0
- package/dist/{components/p-stybaFzj.js → components-csr/p-Hm3X1iai.js} +2 -2
- package/dist/{components/p-6wZSqm_2.js → components-csr/p-IWA0yIjJ.js} +2 -2
- package/dist/components-csr/p-RLxbNqRv.js +2 -0
- package/dist/components-csr/p-RLxbNqRv.js.map +1 -0
- package/dist/components-csr/p-bSpXNc5J.js +2 -0
- package/dist/components-csr/p-bSpXNc5J.js.map +1 -0
- package/dist/components-csr/p-uZbtHo-A.js +2 -0
- package/dist/components-csr/package.json +3 -0
- package/dist/esm/app-globals-DQuL1Twl.js +6 -0
- package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
- package/dist/esm/engine.wasm-CfBPnYW7.js +10 -0
- package/dist/esm/engine.wasm-CfBPnYW7.js.map +1 -0
- package/dist/esm/{index-DTaX19_O.js → index-WmvQpZnM.js} +5 -15
- package/dist/esm/index-WmvQpZnM.js.map +1 -0
- package/dist/esm/loader.js +3 -2
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/md-accordion-item.entry.js +1 -1
- package/dist/esm/md-accordion.entry.js +1 -1
- package/dist/esm/md-app-bar.entry.js +1 -1
- package/dist/esm/md-area-chart.entry.js +1 -1
- package/dist/esm/md-autocomplete.entry.js +2 -2
- package/dist/esm/md-avatar_2.entry.js +1 -1
- package/dist/esm/md-badge.entry.js +1 -1
- package/dist/esm/md-bar-chart.entry.js +1 -1
- package/dist/esm/md-bottom-sheet.entry.js +1 -1
- package/dist/esm/md-breadcrumb-item.entry.js +1 -1
- package/dist/esm/md-breadcrumbs.entry.js +1 -1
- package/dist/esm/md-button-group.entry.js +1 -1
- package/dist/esm/md-button_7.entry.js +1 -1
- package/dist/esm/md-checkbox.entry.js +1 -1
- package/dist/esm/md-chip.entry.js +1 -1
- package/dist/esm/md-color-picker.entry.js +1 -1
- package/dist/esm/md-date-picker.entry.js +1 -1
- package/dist/esm/md-dialog.entry.js +1 -1
- package/dist/esm/md-divider.entry.js +1 -1
- package/dist/esm/md-fab-menu-item.entry.js +1 -1
- package/dist/esm/md-fab-menu.entry.js +1 -1
- package/dist/esm/md-fab.entry.js +1 -1
- package/dist/esm/md-line-chart.entry.js +1 -1
- package/dist/esm/md-list-item.entry.js +1 -1
- package/dist/esm/md-list.entry.js +1 -1
- package/dist/esm/md-menu-item-group.entry.js +1 -1
- package/dist/esm/md-menu_2.entry.js +1 -1
- package/dist/esm/md-meter.entry.js +1 -1
- package/dist/esm/md-multi-select.entry.js +2 -2
- package/dist/esm/md-navigation-bar.entry.js +1 -1
- package/dist/esm/md-navigation-rail-tab.entry.js +1 -1
- package/dist/esm/md-navigation-rail.entry.js +1 -1
- package/dist/esm/md-navigation-tab.entry.js +1 -1
- package/dist/esm/md-number-field.entry.js +1 -1
- package/dist/esm/md-organization-chart.entry.js +1 -1
- package/dist/esm/md-otp-field.entry.js +1 -1
- package/dist/esm/md-pie-chart.entry.js +1 -1
- 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 +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 +1 -1
- package/dist/esm/md-select.entry.js +2 -2
- 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 +1 -1
- package/dist/esm/md-sparkline.entry.js +1 -1
- package/dist/esm/md-split-button.entry.js +1 -1
- package/dist/esm/md-status-dot.entry.js +1 -1
- 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 +1 -1
- package/dist/esm/md-tabs.entry.js +1 -1
- package/dist/esm/md-text-field.entry.js +1 -1
- package/dist/esm/md-time-picker.entry.js +1 -1
- package/dist/esm/md-toolbar.entry.js +1 -1
- package/dist/esm/md-transfer-list.entry.js +1 -1
- package/dist/esm/md3.js +3 -2
- package/dist/esm/md3.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-2e9503d7.entry.js → p-0a599351.entry.js} +2 -2
- package/dist/md3/p-1d7e0203.entry.js +2 -0
- package/dist/md3/{p-fb61868c.entry.js.map → p-1d7e0203.entry.js.map} +1 -1
- package/dist/md3/p-1e85b8a8.entry.js +2 -0
- package/dist/md3/{p-aaec2698.entry.js.map → p-1e85b8a8.entry.js.map} +1 -1
- package/dist/md3/{p-396089fd.entry.js → p-1edb5a0d.entry.js} +2 -2
- package/dist/md3/{p-c00f7514.entry.js → p-21c89d1d.entry.js} +2 -2
- package/dist/md3/p-22633b2d.entry.js +2 -0
- package/dist/md3/{p-6b2871a0.entry.js.map → p-22633b2d.entry.js.map} +1 -1
- package/dist/md3/{p-2e09a7b7.entry.js → p-27135a6b.entry.js} +2 -2
- package/dist/md3/{p-c063c823.entry.js → p-2befc42c.entry.js} +2 -2
- package/dist/md3/p-2dda08b2.entry.js +2 -0
- package/dist/md3/{p-21772851.entry.js.map → p-2dda08b2.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-3cce1de3.entry.js → p-38f82d34.entry.js} +2 -2
- package/dist/md3/p-3a4bd4eb.entry.js +2 -0
- package/dist/md3/{p-72457a85.entry.js.map → p-3a4bd4eb.entry.js.map} +1 -1
- package/dist/md3/{p-be02624e.entry.js → p-3c0469aa.entry.js} +2 -2
- package/dist/md3/{p-63b8c8d1.entry.js → p-408ee4be.entry.js} +2 -2
- package/dist/md3/{p-3015c7e3.entry.js → p-4770b534.entry.js} +2 -2
- package/dist/md3/p-4aed552f.entry.js +2 -0
- package/dist/md3/{p-6c44cf13.entry.js.map → p-4aed552f.entry.js.map} +1 -1
- package/dist/md3/{p-c5af701b.entry.js → p-4ba3623e.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-81843ff7.entry.js → p-5929e59c.entry.js} +2 -2
- package/dist/md3/{p-32bdd439.entry.js → p-5c35f916.entry.js} +2 -2
- package/dist/md3/{p-ac35ac5f.entry.js → p-5db87a9d.entry.js} +2 -2
- package/dist/md3/{p-6038b907.entry.js → p-5f39b49d.entry.js} +2 -2
- package/dist/md3/p-637baee1.entry.js +2 -0
- package/dist/md3/{p-47af9819.entry.js.map → p-637baee1.entry.js.map} +1 -1
- package/dist/md3/{p-05ae91b6.entry.js → p-6bf632c7.entry.js} +2 -2
- package/dist/md3/{p-4e3d6e40.entry.js → p-6ea7117d.entry.js} +2 -2
- package/dist/md3/{p-9ddbf247.entry.js → p-7112374d.entry.js} +2 -2
- package/dist/md3/{p-1a8ec5bc.entry.js → p-7858833e.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-4d82132d.entry.js → p-7f53a423.entry.js} +2 -2
- package/dist/md3/{p-b0431a5c.entry.js → p-8135c606.entry.js} +2 -2
- package/dist/md3/{p-4dda4cb0.entry.js → p-845ca9cc.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-e3124e1e.entry.js → p-8b1ea5dc.entry.js} +2 -2
- package/dist/md3/{p-c10a33c2.entry.js → p-8e7df348.entry.js} +2 -2
- package/dist/md3/{p-65195996.entry.js → p-925768ac.entry.js} +2 -2
- package/dist/md3/p-944e69e0.entry.js +2 -0
- package/dist/md3/{p-a3308c40.entry.js.map → p-944e69e0.entry.js.map} +1 -1
- package/dist/md3/{p-ac8762e5.entry.js → p-96c06b24.entry.js} +2 -2
- package/dist/md3/p-9b9677cc.entry.js +2 -0
- package/dist/md3/{p-e7dc5a32.entry.js.map → p-9b9677cc.entry.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-CfBPnYW7.js +2 -0
- package/dist/md3/p-CfBPnYW7.js.map +1 -0
- package/dist/md3/p-DQuL1Twl.js +2 -0
- package/dist/md3/p-DQuL1Twl.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-a5fee424.entry.js → p-a49df43d.entry.js} +2 -2
- 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-bf7842f8.entry.js → p-adf8a415.entry.js} +2 -2
- package/dist/md3/{p-c861d774.entry.js → p-ae360663.entry.js} +2 -2
- package/dist/md3/{p-8eb0b6a4.entry.js → p-b243284b.entry.js} +2 -2
- 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-b5586b66.entry.js +2 -0
- package/dist/md3/{p-04e97f5d.entry.js.map → p-b5586b66.entry.js.map} +1 -1
- package/dist/md3/{p-a7ffb779.entry.js → p-b7602557.entry.js} +2 -2
- package/dist/md3/{p-6ba63c73.entry.js → p-bc24f0c9.entry.js} +2 -2
- package/dist/md3/{p-edb34a6d.entry.js → p-bed8dfec.entry.js} +2 -2
- package/dist/md3/{p-50555bb7.entry.js → p-c0476406.entry.js} +2 -2
- package/dist/md3/{p-0c2e824d.entry.js → p-c20fbb9e.entry.js} +2 -2
- package/dist/md3/{p-4e45b2ff.entry.js → p-c58c68d0.entry.js} +2 -2
- package/dist/md3/{p-fc0b325d.entry.js → p-cdcea99f.entry.js} +2 -2
- package/dist/md3/{p-0f764a1e.entry.js → p-d2e39c6e.entry.js} +2 -2
- package/dist/md3/p-d7e99f9e.entry.js +2 -0
- package/dist/md3/{p-cf07e761.entry.js.map → p-d7e99f9e.entry.js.map} +1 -1
- package/dist/md3/{p-c1ca6f6c.entry.js → p-da0c36d9.entry.js} +2 -2
- package/dist/md3/{p-77a01bcc.entry.js → p-e3c37222.entry.js} +2 -2
- package/dist/md3/{p-39cb7c24.entry.js → p-e6b09e71.entry.js} +2 -2
- package/dist/md3/{p-b4631a55.entry.js → p-eddae19a.entry.js} +2 -2
- package/dist/md3/{p-c6a12344.entry.js → p-ef7b1826.entry.js} +2 -2
- 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-e6d7f0ff.entry.js → p-f403ad20.entry.js} +2 -2
- 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/types/wasm/engine-abi.d.ts +14 -0
- package/hydrate/index.js +19 -7
- package/hydrate/index.mjs +19 -7
- package/package.json +14 -3
- package/dist/cjs/index-DlQ_5_Mv.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-MWBNn6Lj.js +0 -2
- package/dist/components/p-MWBNn6Lj.js.map +0 -1
- package/dist/esm/index-DTaX19_O.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-47af9819.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-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-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-DXXUoRSH.js.map → components-csr/p--OUYjgKN.js.map} +0 -0
- /package/dist/{components/p-Dp-w93ot.js.map → components-csr/p--TCJgZnE.js.map} +0 -0
- /package/dist/{components/p-UdGDg2oJ.js.map → components-csr/p-Bmu7RqHM.js.map} +0 -0
- /package/dist/{components/p-uTEkf0sE.js.map → components-csr/p-C0DlKmRg.js.map} +0 -0
- /package/dist/{components/p-Ch2-tttM.js.map → components-csr/p-C4_7YnHT.js.map} +0 -0
- /package/dist/{components/p-BwXpiUsu.js.map → components-csr/p-CG6FaRlt.js.map} +0 -0
- /package/dist/{components/p-B0Opn6dK.js.map → components-csr/p-CSrxeWwL.js.map} +0 -0
- /package/dist/{components/p-B3MWYEEJ.js.map → components-csr/p-CrbzXk64.js.map} +0 -0
- /package/dist/{components/p-7fN_yCXW.js.map → components-csr/p-DF19mmLl.js.map} +0 -0
- /package/dist/{components/p-e2HRV63Y.js.map → components-csr/p-DfcpeJAu.js.map} +0 -0
- /package/dist/{components/p-C8EP4S21.js.map → components-csr/p-DvXQXhgu.js.map} +0 -0
- /package/dist/{components/p-stybaFzj.js.map → components-csr/p-Hm3X1iai.js.map} +0 -0
- /package/dist/{components/p-6wZSqm_2.js.map → components-csr/p-IWA0yIjJ.js.map} +0 -0
- /package/dist/{components/p-Ddiw2Kjw.js.map → components-csr/p-uZbtHo-A.js.map} +0 -0
- /package/dist/md3/{p-2e9503d7.entry.js.map → p-0a599351.entry.js.map} +0 -0
- /package/dist/md3/{p-396089fd.entry.js.map → p-1edb5a0d.entry.js.map} +0 -0
- /package/dist/md3/{p-c00f7514.entry.js.map → p-21c89d1d.entry.js.map} +0 -0
- /package/dist/md3/{p-2e09a7b7.entry.js.map → p-27135a6b.entry.js.map} +0 -0
- /package/dist/md3/{p-c063c823.entry.js.map → p-2befc42c.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-3cce1de3.entry.js.map → p-38f82d34.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-3015c7e3.entry.js.map → p-4770b534.entry.js.map} +0 -0
- /package/dist/md3/{p-c5af701b.entry.js.map → p-4ba3623e.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-81843ff7.entry.js.map → p-5929e59c.entry.js.map} +0 -0
- /package/dist/md3/{p-32bdd439.entry.js.map → p-5c35f916.entry.js.map} +0 -0
- /package/dist/md3/{p-ac35ac5f.entry.js.map → p-5db87a9d.entry.js.map} +0 -0
- /package/dist/md3/{p-6038b907.entry.js.map → p-5f39b49d.entry.js.map} +0 -0
- /package/dist/md3/{p-05ae91b6.entry.js.map → p-6bf632c7.entry.js.map} +0 -0
- /package/dist/md3/{p-4e3d6e40.entry.js.map → p-6ea7117d.entry.js.map} +0 -0
- /package/dist/md3/{p-9ddbf247.entry.js.map → p-7112374d.entry.js.map} +0 -0
- /package/dist/md3/{p-1a8ec5bc.entry.js.map → p-7858833e.entry.js.map} +0 -0
- /package/dist/md3/{p-4d82132d.entry.js.map → p-7f53a423.entry.js.map} +0 -0
- /package/dist/md3/{p-b0431a5c.entry.js.map → p-8135c606.entry.js.map} +0 -0
- /package/dist/md3/{p-4dda4cb0.entry.js.map → p-845ca9cc.entry.js.map} +0 -0
- /package/dist/md3/{p-5b74694e.entry.js.map → p-89d47130.entry.js.map} +0 -0
- /package/dist/md3/{p-e3124e1e.entry.js.map → p-8b1ea5dc.entry.js.map} +0 -0
- /package/dist/md3/{p-c10a33c2.entry.js.map → p-8e7df348.entry.js.map} +0 -0
- /package/dist/md3/{p-65195996.entry.js.map → p-925768ac.entry.js.map} +0 -0
- /package/dist/md3/{p-ac8762e5.entry.js.map → p-96c06b24.entry.js.map} +0 -0
- /package/dist/md3/{p-a5fee424.entry.js.map → p-a49df43d.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-bf7842f8.entry.js.map → p-adf8a415.entry.js.map} +0 -0
- /package/dist/md3/{p-c861d774.entry.js.map → p-ae360663.entry.js.map} +0 -0
- /package/dist/md3/{p-8eb0b6a4.entry.js.map → p-b243284b.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-a7ffb779.entry.js.map → p-b7602557.entry.js.map} +0 -0
- /package/dist/md3/{p-6ba63c73.entry.js.map → p-bc24f0c9.entry.js.map} +0 -0
- /package/dist/md3/{p-edb34a6d.entry.js.map → p-bed8dfec.entry.js.map} +0 -0
- /package/dist/md3/{p-50555bb7.entry.js.map → p-c0476406.entry.js.map} +0 -0
- /package/dist/md3/{p-0c2e824d.entry.js.map → p-c20fbb9e.entry.js.map} +0 -0
- /package/dist/md3/{p-4e45b2ff.entry.js.map → p-c58c68d0.entry.js.map} +0 -0
- /package/dist/md3/{p-fc0b325d.entry.js.map → p-cdcea99f.entry.js.map} +0 -0
- /package/dist/md3/{p-0f764a1e.entry.js.map → p-d2e39c6e.entry.js.map} +0 -0
- /package/dist/md3/{p-c1ca6f6c.entry.js.map → p-da0c36d9.entry.js.map} +0 -0
- /package/dist/md3/{p-77a01bcc.entry.js.map → p-e3c37222.entry.js.map} +0 -0
- /package/dist/md3/{p-39cb7c24.entry.js.map → p-e6b09e71.entry.js.map} +0 -0
- /package/dist/md3/{p-b4631a55.entry.js.map → p-eddae19a.entry.js.map} +0 -0
- /package/dist/md3/{p-c6a12344.entry.js.map → p-ef7b1826.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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mdToolbarCss","MdToolbar","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","variant","color","layout","alignment","containerSemantics","ariaLabelProp","ariaLabelledby","density","hasFab","activeItem","roved","Map","hasLoaded","rovingFrame","onHostKeyDown","ev","handleKeyDown","onFocusIn","handleFocusIn","syncFab","fabSlot","assignedElements","length","syncRoving","requestAnimationFrame","updateRoving","onNavPropChange","newValue","_oldValue","propName","hasAccessibleName","trim","warnGenericNamed","console","warn","componentWillLoad","raw","el","getAttribute","removeAttribute","connectedCallback","addEventListener","setupObservers","componentDidLoad","disconnectedCallback","removeEventListener","teardownObservers","clearRoving","root","shadowRoot","querySelector","undefined","querySelectorAll","forEach","s","MutationObserver","slotObserver","observe","childList","subtree","attributes","attributeFilter","disconnect","cancelAnimationFrame","setFocus","items","getItems","target","includes","preferredActive","focus","classify","isContentEditable","matches","COMPOSITE_SELECTOR","INDEPENDENT_SELECTOR","ROVING_SELECTOR","ANY_CONTROL_SELECTOR","optedOut","rec","get","ti","kind","orig","parseInt","slotOf","slotPriority","isVisible","cv","checkVisibility","call","checkVisibilityCSS","getComputedStyle","display","visibility","ariaHiddenWithin","n","parentElement","isNavigable","hidden","hasAttribute","disabled","collectRoving","out","push","child","Array","from","children","find","filter","c","docOrder","i","set","sort","a","b","pa","pb","applyRoving","active","has","groupTabindex","setAttribute","restoreOne","delete","keys","item","resolveItem","node","it","contains","defaultPrevented","shiftKey","ctrlKey","metaKey","altKey","key","isNavKey","current","vertical","rtl","direction","delta","nextIdx","idx","indexOf","next","preventDefault","render","isFloating","isVertical","isToolbar","labelledby","label","ariaLabel","ariaLabelledbyOut","ariaOrientation","h","Host","class","role","part","name","join"],"sources":["src/components/md-toolbar/md-toolbar.css?tag=md-toolbar&encapsulation=shadow","src/components/md-toolbar/md-toolbar.tsx"],"sourcesContent":["/* ==========================================================\n md-toolbar — Material Design 3 Toolbar (Expressive)\n Spec: https://m3.material.io/components/toolbars/specs\n\n Replaces the legacy bottom app bar with two expressive\n variants: docked toolbar (bottom-anchored) and floating\n toolbar (free-placed, horizontal or vertical).\n\n DOCKED:\n Height 64px, margin-inline 16px, gap 32px.\n Left/right alignment via space-between; center uses 8px gap.\n Sticky bottom — stays available while content scrolls.\n\n FLOATING:\n Height 64px, padding 8px, pill-shaped (corner-full), gap 4px.\n Margins 16px min. FAB (56px) sits separately with 8px gap.\n\n PUBLIC CSS CUSTOM PROPERTIES (override per-instance):\n --md-toolbar-container-color Container background\n --md-toolbar-icon-color Slotted control tint (defaults: on-surface-variant / on-surface)\n --md-toolbar-container-shape Border-radius\n --md-toolbar-container-height Container height\n --md-toolbar-padding Padding\n --md-toolbar-gap Gap between items\n --md-toolbar-fab-gap Gap between toolbar and FAB\n --md-toolbar-scrollbar-width Scrollbar width for opt-in scrolling (set to\n `auto` to restore ::-webkit-scrollbar styling —\n Chrome 121+ ignores it when scrollbar-width is set)\n\n CSS PARTS:\n container Inner container holding slotted content\n fab-container FAB wrapper\n\n SLOTS:\n (default) Action items (icon buttons, buttons, text fields)\n leading Leading (start) section\n trailing Trailing (end) section\n fab Paired FAB element\n\n TOOLBAR-ONLY (not global md-icon-button defaults):\n Standard / vibrant color prop drives bar chrome + slotted md-icon-button\n token map (standard, filled, tonal toggle) per MD3 expressive toolbar spec.\n ========================================================== */\n\n/* ==========================================================\n 1. HOST — shared base\n ========================================================== */\n\n:host {\n --_container-color: var(--md-toolbar-container-color, var(--md-sys-color-surface-container, #F3EDF7));\n --_icon-color: var(--md-toolbar-icon-color, var(--md-sys-color-on-surface-variant, #49454F));\n --_shape: var(--md-toolbar-container-shape, 0px);\n --_height: var(--md-toolbar-container-height, max(48px, calc(64px + var(--md-sys-density-scale, 0) * 4px)));\n --_padding: var(--md-toolbar-padding, var(--md-sys-spacing-inset-lg, 16px));\n --_gap: var(--md-toolbar-gap, max(4px, calc(32px + var(--md-sys-density-scale, 0) * 2px)));\n --_fab-gap: var(--md-toolbar-fab-gap, var(--md-sys-spacing-gap-lg, 16px));\n\n display: flex;\n align-items: center;\n box-sizing: border-box;\n color: var(--_icon-color);\n font-family: var(--md-sys-typescale-label-large-font-family, Roboto, sans-serif);\n}\n\n/* ==========================================================\n 2. DOCKED VARIANT — anchored to bottom edge\n Height 64px, margin-inline 16px, gap 32px\n ========================================================== */\n\n:host(.md-toolbar--docked) {\n --_gap: var(--md-toolbar-gap, max(4px, calc(32px + var(--md-sys-density-scale, 0) * 2px)));\n --_padding: var(--md-toolbar-padding, var(--md-sys-spacing-inset-lg, 16px));\n\n inline-size: 100%;\n /* min (not fixed) so the safe-area inset EXTENDS the bar on notched devices\n instead of eating into the 64dp content area. */\n min-block-size: var(--_height);\n padding-inline: var(--_padding);\n padding-block-end: env(safe-area-inset-bottom, 0px);\n background-color: var(--_container-color);\n border-radius: var(--_shape);\n box-shadow: var(--md-sys-elevation-2, 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.3));\n position: sticky;\n inset-block-end: 0;\n z-index: var(--md-sys-z-index-app-bar, 100);\n /* No host gap: the only host children are the content container and the FAB\n wrapper. Item spacing lives on the inner container (--_gap); the space to the\n FAB is the fab-container's own --_fab-gap margin. A host gap here would\n double-count against that margin (32 + 16 = 48dp instead of the documented 16). */\n gap: 0;\n}\n\n/* Center-aligned docked: 8px gap between items */\n:host(.md-toolbar--docked.md-toolbar--align-center) {\n --_gap: var(--md-toolbar-gap, var(--md-sys-spacing-gap-sm, 8px));\n}\n\n/* Space-between docked: items spread with flexible fill space */\n:host(.md-toolbar--docked.md-toolbar--align-space-between) {\n --_gap: 0px;\n}\n\n/* ==========================================================\n 3. FLOATING VARIANT — pill-shaped, free-placed\n Height 64px, padding 8px, fully rounded (pill), gap 4px inside pill.\n Margins 16px minimum. FAB is a separate surface: host gap 8px between\n pill (.md-toolbar__container) and FAB — not inside the same rounded rect.\n ========================================================== */\n\n:host(.md-toolbar--floating) {\n --_shape: var(--md-toolbar-container-shape, var(--md-sys-shape-corner-full, 100px));\n --_gap: var(--md-toolbar-gap, var(--md-sys-spacing-gap-xs, 4px));\n --_padding: var(--md-toolbar-padding, var(--md-sys-spacing-inset-sm, 8px));\n --_fab-gap: var(--md-toolbar-fab-gap, var(--md-sys-spacing-gap-sm, 8px));\n\n display: inline-flex;\n align-items: center;\n gap: var(--_fab-gap);\n margin-inline: var(--md-sys-spacing-inset-lg, 16px);\n padding: 0;\n background-color: transparent;\n border-radius: 0;\n box-shadow: none;\n}\n\n/* Pill chrome lives on the inner container so the FAB sits outside it */\n:host(.md-toolbar--floating) .md-toolbar__container {\n background-color: var(--_container-color);\n border-radius: var(--_shape);\n box-shadow: var(--md-sys-elevation-2, 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.3));\n padding: var(--_padding);\n box-sizing: border-box;\n flex: 0 1 auto;\n}\n\n:host(.md-toolbar--floating:not(.md-toolbar--vertical)) {\n min-block-size: var(--_height);\n}\n\n:host(.md-toolbar--floating:not(.md-toolbar--vertical)) .md-toolbar__container {\n block-size: var(--_height);\n}\n\n:host(.md-toolbar--floating.md-toolbar--vertical) .md-toolbar__container {\n block-size: auto;\n inline-size: 100%;\n}\n\n/* Floating vertical */\n:host(.md-toolbar--vertical) {\n flex-direction: column;\n block-size: auto;\n inline-size: var(--_height);\n}\n\n:host(.md-toolbar--vertical) .md-toolbar__container {\n flex-direction: column;\n}\n\n/* ==========================================================\n 4. COLOR — standard vs vibrant (toolbar chrome + inherited text color)\n Standard: surface-container bar; neutral on-surface-variant for host text.\n Vibrant: primary-container bar; on-surface for host text (neutral on tinted bar).\n Slotted md-icon-button variants: see section 7.\n ========================================================== */\n\n:host(.md-toolbar--standard) {\n --_container-color: var(--md-toolbar-container-color, var(--md-sys-color-surface-container, #F3EDF7));\n --_icon-color: var(--md-toolbar-icon-color, var(--md-sys-color-on-surface-variant, #49454F));\n}\n\n:host(.md-toolbar--vibrant) {\n --_container-color: var(--md-toolbar-container-color, var(--md-sys-color-primary-container, #EADDFF));\n --_icon-color: var(--md-toolbar-icon-color, var(--md-sys-color-on-surface, #1C1B1F));\n}\n\n/* ==========================================================\n 5. CONTAINER — inner flex layout\n ========================================================== */\n\n.md-toolbar__container {\n display: flex;\n align-items: center;\n gap: var(--_gap);\n flex: 1;\n min-inline-size: 0;\n /* Overflow: OFF by default (`visible`) so focus rings are never clipped —\n a scroll container (`overflow: auto`) clips the ring on the non-scrolling\n axis. Authors whose toolbars can overflow opt into scrolling via\n `--md-toolbar-overflow-x: auto` (or wrapping via `--md-toolbar-flex-wrap:\n wrap`); when they do, `scroll-padding` keeps a focused control clear of the\n edge. MD3 guidance is to cap the action count or use an overflow menu\n rather than scroll, so the default does not clip or reserve space. */\n flex-wrap: var(--md-toolbar-flex-wrap, nowrap);\n overflow-x: var(--md-toolbar-overflow-x, visible);\n /* Overridable: `scrollbar-width: thin` makes Chrome 121+ ignore any author\n ::-webkit-scrollbar styling — authors who need it set this token to `auto`. */\n scrollbar-width: var(--md-toolbar-scrollbar-width, thin);\n scroll-padding-inline: var(--_padding);\n}\n\n/* Vertical floating toolbar scrolls on the block axis instead (opt-in). */\n:host(.md-toolbar--vertical) .md-toolbar__container {\n overflow-x: visible;\n overflow-y: var(--md-toolbar-overflow-y, visible);\n scroll-padding-block: var(--_padding);\n}\n\n/* Alignment */\n:host(.md-toolbar--align-start) .md-toolbar__container {\n justify-content: flex-start;\n}\n\n:host(.md-toolbar--align-center) .md-toolbar__container {\n justify-content: center;\n}\n\n:host(.md-toolbar--align-end) .md-toolbar__container {\n justify-content: flex-end;\n}\n\n:host(.md-toolbar--align-space-between) .md-toolbar__container {\n justify-content: space-between;\n}\n\n/* ==========================================================\n 6. FAB CONTAINER\n FAB is 56px and sits separately with a gap\n ========================================================== */\n\n.md-toolbar__fab-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n /* Docked: the FAB is pushed to the inline-end and separated from the bar\n content by the public `--md-toolbar-fab-gap` token (previously the gap\n was dead on docked — only floating consumed it). */\n margin-inline-start: var(--_fab-gap);\n}\n\n.md-toolbar__fab-container--hidden {\n display: none;\n}\n\n/* Floating: spacing between pill and FAB comes from host gap (--_fab-gap), not margin */\n.md-toolbar__fab-container--floating {\n margin-inline-start: 0;\n margin-block-start: 0;\n}\n\n/* ==========================================================\n 7. SLOTTED ITEMS — sizing and color\n Toolbar-only schemes for slotted md-icon-button (see readme):\n Standard: bar = surface-container. Standard/outlined → On surface variant.\n Filled → Primary / On primary (defaults). Tonal toggle (on) →\n Secondary container / On secondary container (defaults).\n Vibrant: bar = primary-container. Standard/outlined → On surface.\n Filled → Primary / On primary (defaults). Tonal toggle →\n Surface container / On surface.\n Do NOT set `color` on all slotted nodes: it beats child :host\n (e.g. md-button). Tint standard/outlined icon buttons via variables;\n do not blanket-override filled or tonal (except vibrant tonal toggles).\n ========================================================== */\n\n::slotted(*) {\n flex-shrink: 0;\n}\n\n/* Standard scheme — standard + outlined: neutral icon ink on surface container.\n Scoped to NON-selected so a selected toggle keeps its own selected ink\n (previously the blanket tint erased the selected affordance). */\n:host(.md-toolbar--standard) ::slotted(md-icon-button.md-icon-button--standard:not(.md-icon-button--selected)),\n:host(.md-toolbar--standard) ::slotted(md-icon-button.md-icon-button--outlined:not(.md-icon-button--selected)) {\n --md-icon-button-icon-color: var(--md-toolbar-icon-color, var(--md-sys-color-on-surface-variant, #49454F));\n --md-icon-button-state-layer-color: var(--md-toolbar-icon-color, var(--md-sys-color-on-surface-variant, #49454F));\n}\n\n/* Vibrant scheme — standard + outlined (non-selected): on-surface on primary-container bar */\n:host(.md-toolbar--vibrant) ::slotted(md-icon-button.md-icon-button--standard:not(.md-icon-button--selected)),\n:host(.md-toolbar--vibrant) ::slotted(md-icon-button.md-icon-button--outlined:not(.md-icon-button--selected)) {\n --md-icon-button-icon-color: var(--md-toolbar-icon-color, var(--md-sys-color-on-surface, #1C1B1F));\n --md-icon-button-state-layer-color: var(--md-toolbar-icon-color, var(--md-sys-color-on-surface, #1C1B1F));\n}\n\n/* Vibrant scheme — tonal toggle, UNSELECTED: neutral surface-container so it\n recedes into the tinted bar. */\n:host(.md-toolbar--vibrant) ::slotted(md-icon-button.md-icon-button--tonal.md-icon-button--toggle:not(.md-icon-button--selected)) {\n --md-icon-button-container-color: var(--md-sys-color-surface-container, #F3EDF7);\n --md-icon-button-icon-color: var(--md-sys-color-on-surface, #1C1B1F);\n --md-icon-button-state-layer-color: var(--md-sys-color-on-surface, #1C1B1F);\n}\n\n/* Vibrant scheme — tonal toggle, SELECTED: distinct secondary-container fill so the\n \"on\" state is legible against the neutral unselected toggles (fixes the flattened\n selected state — selected must never look identical to unselected). */\n:host(.md-toolbar--vibrant) ::slotted(md-icon-button.md-icon-button--tonal.md-icon-button--toggle.md-icon-button--selected) {\n --md-icon-button-container-color: var(--md-sys-color-secondary-container, #E8DEF8);\n --md-icon-button-icon-color: var(--md-sys-color-on-secondary-container, #1E192B);\n --md-icon-button-state-layer-color: var(--md-sys-color-on-secondary-container, #1E192B);\n}\n\n::slotted([slot=\"leading\"]) {\n margin-inline-end: auto;\n}\n\n::slotted([slot=\"trailing\"]) {\n margin-inline-start: auto;\n}\n\n/* Docked: FAB sits on the same bar — flatten to match the toolbar surface.\n Floating: no override — paired FAB keeps md-fab elevation beside the pill. */\n:host(.md-toolbar--docked) ::slotted([slot=\"fab\"]) {\n box-shadow: none !important;\n}\n\n/* ==========================================================\n 8. FORCED COLORS (Windows High Contrast)\n The bar/pill chrome is a background + elevation — both are dropped in\n forced-colors mode, leaving the toolbar with NO visible boundary. Give\n the surface a system-color border so the region stays perceivable, and\n make the scroll affordance visible. Slotted controls paint their own\n forced-colors treatment.\n ========================================================== */\n\n@media (forced-colors: active) {\n :host(.md-toolbar--docked) {\n border-block-start: 1px solid CanvasText;\n }\n :host(.md-toolbar--floating) .md-toolbar__container {\n border: 1px solid CanvasText;\n }\n}\n\n/* ==========================================================\n 9. REDUCED MOTION\n The container scrolls on overflow; honor a reduced-motion preference by\n disabling smooth scrolling so focus jumps are instant.\n ========================================================== */\n\n@media (prefers-reduced-motion: reduce) {\n .md-toolbar__container {\n scroll-behavior: auto;\n }\n}\n\n/* ==========================================================\n DENSITY (local override)\n Maps the local `density` prop onto the same --md-sys-density-scale signal a\n global `data-density` ancestor sets. Declared on :host, so a local rung wins\n over the inherited global one. Every density-sensitive value in this file\n derives from that single signal by calc — never add a fixed per-rung ladder.\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 { Component, Host, h, Prop, State, Element, Method, Watch, Build } from '@stencil/core';\n\n/**\n * The toolbar host has no built-in actions — all behavior comes from slotted controls.\n * On the web, the default is `role=\"toolbar\"` implementing the WAI-ARIA toolbar pattern\n * with an ADAPTIVE roving tabindex:\n *\n * - **Activator buttons** (`md-icon-button`, `md-button`, native `button`/`a[href]`,\n * `role=button`/`menuitem`/`link`) form a single roving group — one Tab stop, and\n * ArrowLeft/Right (or Up/Down when floating+vertical), Home, End move focus between them.\n * - **Everything else** is left as its OWN Tab stop with its native behavior — text-entry /\n * value controls (input, textarea, contenteditable, md-text-field, md-select, `select`,\n * range/spinbutton), ALL toggles (`md-switch`/`md-checkbox`/`md-chip`, native\n * checkbox/radio, role=checkbox/radio), and self-managing composites (md-button-group,\n * md-menu, role=group/radiogroup/listbox/menu). Arrows are never stolen from them, and\n * they never become roving dead-ends.\n *\n * A soft-disabled (`aria-disabled`) group member stays arrow-reachable (APG: disabled\n * items remain focusable for discoverability). The default Tab stop prefers an enabled\n * control, falling back to the first member only when every member is soft-disabled;\n * focusing any member makes it the stop.\n *\n * This keeps every control keyboard-reachable regardless of the mix, per APG guidance for\n * toolbars that contain text fields. Use `generic` for a non-semantic container (no role,\n * no roving).\n *\n * @slot - Action items (icon buttons, buttons, text fields, menus, etc.)\n * @slot leading - Leading (start) content section\n * @slot trailing - Trailing (end) content section\n * @slot fab - FAB paired with the toolbar (floating variant). Not part of the toolbar\n * roving set — it stays a separate Tab stop, matching its separate role.\n *\n * @part container - Inner container holding slotted content\n * @part fab-container - FAB wrapper (shown only when fab slot has content)\n */\n@Component({\n tag: 'md-toolbar',\n styleUrl: 'md-toolbar.css',\n shadow: true,\n})\nexport class MdToolbar {\n @Element() el!: HTMLElement;\n\n /** Toolbar type: docked (anchored to bottom) or floating (free-placed) */\n @Prop({ reflect: true }) variant: 'docked' | 'floating' = 'docked';\n\n /**\n * Toolbar color scheme (bar chrome). Also applies the MD3 expressive **toolbar-only**\n * token map to slotted `md-icon-button` — does not change standalone icon buttons elsewhere.\n */\n @Prop({ reflect: true }) color: 'standard' | 'vibrant' = 'standard';\n\n /** Layout direction for floating toolbar */\n @Prop({ reflect: true }) layout: 'horizontal' | 'vertical' = 'horizontal';\n\n /** Alignment of items within the container */\n @Prop({ reflect: true }) alignment: 'start' | 'center' | 'end' | 'space-between' = 'start';\n\n /**\n * `toolbar` (default): `role=\"toolbar\"`, adaptive roving tabindex, and toolbar ARIA on the\n * host for web. `generic`: no toolbar role — plain container, no roving/arrow navigation.\n * A generic container cannot be named (ARIA name-prohibited): an author-set `aria-label`/\n * `aria-labelledby` is left in place but ignored by assistive tech, and a dev-mode\n * warning is logged.\n */\n @Prop({ reflect: true }) containerSemantics: 'toolbar' | 'generic' = 'toolbar';\n\n /**\n * Accessible name for the toolbar (`containerSemantics=\"toolbar\"`). Provide a meaningful\n * label describing the toolbar's purpose (e.g. \"Text formatting\"); prefer `aria-labelledby`\n * when a visible label exists. When neither is set the toolbar is left unnamed (valid ARIA)\n * and a dev-mode warning is logged.\n */\n @Prop({ attribute: 'aria-label' }) ariaLabelProp: string = '';\n\n /** ID(s) of visible label element(s); takes precedence over `aria-label` for the accessible name */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string = '';\n\n /**\n * Local density rung. Drives the same `--md-sys-density-scale` signal that a\n * global `data-density` ancestor sets, so a local value simply overrides the\n * inherited one. 0 = default, -4 = ultra-compact.\n */\n @Prop({ reflect: true }) density: 0 | -1 | -2 | -3 | -4 = 0;\n\n @State() private hasFab = false;\n\n /** The control that currently owns the roving group's single Tab stop. */\n private activeItem: HTMLElement | null = null;\n /** Elements whose tabindex/groupTabindex this toolbar rewrote, plus how to restore. */\n private roved = new Map<HTMLElement, { kind: 'group' | 'attr'; orig: string | null }>();\n private slotObserver?: MutationObserver;\n private fabSlot?: HTMLSlotElement;\n private hasLoaded = false;\n private rovingFrame = 0;\n private readonly onHostKeyDown = (ev: KeyboardEvent) => this.handleKeyDown(ev);\n private readonly onFocusIn = (ev: FocusEvent) => this.handleFocusIn(ev);\n private readonly syncFab = () => {\n this.hasFab = (this.fabSlot?.assignedElements().length ?? 0) > 0;\n };\n /** Coalesce mutation-driven re-syncs into one per frame: slotted controls toggle\n * host classes (state layers) on hover/press, which would otherwise fire a full\n * roving recompute per interaction. Direct callers (setup, watches) run synchronously. */\n private readonly syncRoving = () => {\n if (typeof requestAnimationFrame !== 'function') {\n this.updateRoving();\n return;\n }\n if (this.rovingFrame) return;\n this.rovingFrame = requestAnimationFrame(() => {\n this.rovingFrame = 0;\n this.updateRoving();\n });\n };\n\n @Watch('containerSemantics')\n @Watch('variant')\n @Watch('layout')\n onNavPropChange(newValue: unknown, _oldValue: unknown, propName?: string) {\n // aria-orientation / nav axis / whether we rove at all can all change; re-sync so a\n // runtime toolbar→generic switch tears down stale roving and orphans nothing.\n this.updateRoving();\n // Docs promise the ignored-name-on-generic case is never a silent surprise —\n // that must hold for a RUNTIME switch to generic too, not just initial load.\n if (Build.isDev && propName === 'containerSemantics' && newValue === 'generic' && this.hasAccessibleName()) {\n this.warnGenericNamed();\n }\n }\n\n private hasAccessibleName(): boolean {\n return (this.ariaLabelledby ?? '').trim().length > 0 || (this.ariaLabelProp ?? '').trim().length > 0;\n }\n\n private warnGenericNamed() {\n console.warn(\n '[md-toolbar] `aria-label`/`aria-labelledby` on container-semantics=\"generic\": a generic container cannot be named (ARIA name-prohibited), so assistive tech will ignore it. Use container-semantics=\"toolbar\" if the name matters.',\n );\n }\n\n componentWillLoad() {\n // A whitespace-only aria-label yields an empty accessible name — strip it so\n // the host renders as unnamed (the `aria-label` attribute both feeds the prop\n // and is rendered, so a blank value would otherwise linger on the host).\n const raw = this.el.getAttribute('aria-label');\n if (raw !== null && raw.trim() === '') this.el.removeAttribute('aria-label');\n }\n\n connectedCallback() {\n /* Bubble: slotted controls dispatch keydown/focusin; the host receives after the\n target (matches real Tab/arrow use). */\n this.el.addEventListener('keydown', this.onHostKeyDown, false);\n this.el.addEventListener('focusin', this.onFocusIn, false);\n // On a REPARENT (disconnect→connect after first load), re-establish the observers +\n // roving that componentDidLoad set up — componentDidLoad does not run again on move.\n if (this.hasLoaded) this.setupObservers();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.setupObservers();\n if (Build.isDev) {\n const named = this.hasAccessibleName();\n if (this.containerSemantics === 'toolbar' && !named) {\n console.warn(\n '[md-toolbar] role=\"toolbar\" without an accessible name. Set `aria-label` (or `aria-labelledby`) to a meaningful description, e.g. aria-label=\"Text formatting\".',\n );\n } else if (this.containerSemantics === 'generic' && named) {\n this.warnGenericNamed();\n }\n }\n }\n\n disconnectedCallback() {\n this.el.removeEventListener('keydown', this.onHostKeyDown, false);\n this.el.removeEventListener('focusin', this.onFocusIn, false);\n this.teardownObservers();\n this.clearRoving();\n }\n\n private setupObservers() {\n const root = this.el.shadowRoot;\n this.fabSlot = (root?.querySelector('slot[name=\"fab\"]') as HTMLSlotElement | null) ?? undefined;\n this.fabSlot?.addEventListener('slotchange', this.syncFab);\n this.syncFab();\n\n root?.querySelectorAll('slot').forEach((s) => s.addEventListener('slotchange', this.syncRoving));\n if (typeof MutationObserver !== 'undefined' && !this.slotObserver) {\n this.slotObserver = new MutationObserver(this.syncRoving);\n // NB: `tabindex` is deliberately NOT observed — applyRoving writes it and would loop.\n // `class`/`style` are watched so a control hidden via CSS re-syncs the active Tab\n // stop; the per-frame coalescing in syncRoving absorbs interaction-state churn.\n this.slotObserver.observe(this.el, {\n childList: true,\n subtree: true,\n attributes: true,\n // `role`/`type` are watched because they change a control's CLASSIFICATION\n // (e.g. a roved <button> upgraded to role=\"checkbox\" becomes independent) —\n // without a re-sync the stale roving stamp would strand it at tabindex=\"-1\".\n attributeFilter: ['disabled', 'aria-disabled', 'aria-hidden', 'hidden', 'class', 'style', 'role', 'type'],\n });\n }\n this.updateRoving();\n }\n\n private teardownObservers() {\n this.fabSlot?.removeEventListener('slotchange', this.syncFab);\n this.el.shadowRoot?.querySelectorAll('slot').forEach((s) => s.removeEventListener('slotchange', this.syncRoving));\n this.slotObserver?.disconnect();\n this.slotObserver = undefined;\n if (this.rovingFrame && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(this.rovingFrame);\n this.rovingFrame = 0;\n }\n\n /** Focus the toolbar's active roving control. No-op when the roving group is empty. */\n @Method()\n async setFocus(): Promise<void> {\n const items = this.getItems();\n const target = this.activeItem && items.includes(this.activeItem) ? this.activeItem : this.preferredActive(items);\n target?.focus();\n }\n\n // ───────────────────────────── ITEM CLASSIFICATION ─────────────────────────────\n\n /** Self-managing composites: own Tab stop, handle their own arrow keys — never descended\n * into, never roved (would fight their internal focus management). */\n private static readonly COMPOSITE_SELECTOR =\n 'md-button-group,md-menu,[role=\"group\"],[role=\"radiogroup\"],[role=\"listbox\"],[role=\"menu\"],[role=\"tablist\"],[role=\"toolbar\"]';\n /** Controls that use arrow keys for themselves (text entry, value, options) or are\n * toggles: own Tab stop, arrows pass through, never roved. */\n private static readonly INDEPENDENT_SELECTOR = [\n // NB: type=\"checkbox\" is deliberately NOT excluded — native checkboxes are independent\n // (see the toggle comment below).\n 'input:not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"image\"]):not([type=\"file\"]):not([type=\"color\"]):not([type=\"hidden\"])',\n 'textarea', 'select', '[contenteditable]:not([contenteditable=\"false\"])',\n 'md-text-field', 'md-select', 'md-radio',\n // md-chip/md-switch/md-checkbox render their OWN host tabindex reactively (no\n // groupTabindex hook), so roving them via setAttribute is fragile (a prop-driven\n // re-render clobbers it) and a removable md-chip exposes an inner remove <button>\n // the host tabindex can't reach. Keep them as their own Tab stops instead — safe,\n // and they don't use arrows themselves. Native checkboxes and role=\"checkbox\" follow\n // the same rule so ALL toggles (checkbox / switch / radio, native or md-*) have the\n // same Tab semantics when mixed in one toolbar.\n 'md-chip', 'md-switch', 'md-checkbox',\n // md-fab is the paired action; even if mis-slotted into the default slot it must not\n // join the roving group (it re-renders its own host tabindex on prop changes, which\n // would resurrect a stray second Tab stop). Keep it an independent stop.\n 'md-fab',\n '[role=\"textbox\"]', '[role=\"searchbox\"]', '[role=\"spinbutton\"]', '[role=\"combobox\"]',\n '[role=\"slider\"]', '[role=\"radio\"]', '[role=\"checkbox\"]',\n ].join(',');\n /** Simple activators that JOIN the roving group (single Tab stop, arrow-navigable).\n * Limited to controls that rove reliably: native focusables (tabindex attribute) and\n * md-button/md-icon-button (cooperative `groupTabindex`). */\n private static readonly ROVING_SELECTOR = [\n 'button', 'a[href]', 'md-button', 'md-icon-button',\n 'input[type=\"button\"]', 'input[type=\"submit\"]', 'input[type=\"reset\"]',\n 'input[type=\"image\"]', 'input[type=\"file\"]', 'input[type=\"color\"]',\n '[role=\"button\"]', '[role=\"menuitem\"]', '[role=\"link\"]',\n ].join(',');\n private static readonly ANY_CONTROL_SELECTOR =\n MdToolbar.COMPOSITE_SELECTOR + ',' + MdToolbar.INDEPENDENT_SELECTOR + ',' + MdToolbar.ROVING_SELECTOR;\n\n private classify(el: HTMLElement): 'composite' | 'independent' | 'roving' | 'wrapper' {\n // Any editable region (contenteditable=\"\", \"true\", \"plaintext-only\", or inherited)\n // uses arrows for its caret — treat as an independent Tab stop, never roved.\n if ('isContentEditable' in el && el.isContentEditable) return 'independent';\n if (el.matches(MdToolbar.COMPOSITE_SELECTOR)) return 'composite';\n if (el.matches(MdToolbar.INDEPENDENT_SELECTOR)) return 'independent';\n if (el.matches(MdToolbar.ROVING_SELECTOR)) return 'roving';\n // Only a NON-negative tabindex makes a bare element a roving leaf; an explicit\n // tabindex=\"-1\" is the author opting a control out of the toolbar (honored in\n // isNavigable), and a negative-tabindex non-control descends as a wrapper.\n if (el.matches('[tabindex]:not([tabindex^=\"-\"])')) {\n // A bare tabbable element is a leaf control UNLESS it wraps real controls\n // (e.g. a tabbable scroll region) — then descend so the inner controls rove.\n return el.querySelector(MdToolbar.ANY_CONTROL_SELECTOR) ? 'wrapper' : 'roving';\n }\n return 'wrapper';\n }\n\n /** An element whose AUTHOR tabindex is negative has opted out of the toolbar's tab\n * order — honor it (don't promote it to a roving Tab stop). Only applies to plain/\n * native controls: md-* components manage their own tabindex via `groupTabindex`, so\n * the tabindex attribute we (or they) render is not an author opt-out signal. Reads\n * the pre-roving original from the roved map so our own −1 stamps don't count. */\n private optedOut(el: HTMLElement): boolean {\n if ('groupTabindex' in el) return false;\n const rec = this.roved.get(el);\n const ti = rec && rec.kind === 'attr' ? rec.orig : el.getAttribute('tabindex');\n return ti !== null && ti.trim() !== '' && parseInt(ti, 10) < 0;\n }\n\n private slotOf(el: Element): 'leading' | 'default' | 'trailing' | 'fab' {\n const s = el.getAttribute('slot');\n if (s === 'leading') return 'leading';\n if (s === 'trailing') return 'trailing';\n if (s === 'fab') return 'fab';\n return 'default';\n }\n\n private slotPriority(el: Element): number {\n const s = this.slotOf(el);\n return s === 'leading' ? 0 : s === 'trailing' ? 2 : s === 'fab' ? 3 : 1;\n }\n\n /** Layout-aware visibility. Uses checkVisibility where available; otherwise falls back to\n * computed display/visibility (real browsers) and assumes visible in no-layout SSR/spec. */\n private isVisible(el: HTMLElement): boolean {\n const cv = (el as HTMLElement & { checkVisibility?: (o?: object) => boolean }).checkVisibility;\n if (typeof cv === 'function') return cv.call(el, { checkVisibilityCSS: true });\n if (typeof getComputedStyle !== 'function') return true;\n const s = getComputedStyle(el);\n return s.display !== 'none' && s.visibility !== 'hidden' && s.visibility !== 'collapse';\n }\n\n /** aria-hidden=\"true\" on the element or a wrapper BETWEEN it and the toolbar host\n * (does not walk above the host — a hidden region containing the whole toolbar is the\n * app's concern, not a per-item exclusion). */\n private ariaHiddenWithin(el: HTMLElement): boolean {\n let n: HTMLElement | null = el;\n while (n && n !== this.el) {\n if (n.getAttribute && n.getAttribute('aria-hidden') === 'true') return true;\n n = n.parentElement;\n }\n return false;\n }\n\n /** A roving-group member: visible, not hard-disabled, not opted-out, not aria-hidden.\n * A soft-disabled (aria-disabled) control IS a member — it is roved like any other so it\n * never leaks a stray extra Tab stop, AND stays arrow-reachable so it is discoverable\n * (WAI-ARIA APG explicitly allows focus to move to disabled toolbar items). Hard-disabled\n * native controls are not focusable at all, so they are excluded entirely. */\n private isNavigable(el: HTMLElement): boolean {\n if (!(el instanceof HTMLElement)) return false;\n if (el.hidden) return false;\n if (el.hasAttribute('disabled')) return false;\n if ('disabled' in el && (el as unknown as { disabled?: boolean }).disabled === true) return false;\n if (this.optedOut(el)) return false;\n if (this.ariaHiddenWithin(el)) return false;\n return this.isVisible(el);\n }\n\n /** Collect roving-group members from a slotted subtree: descend through plain wrappers,\n * stop at composites/independent controls (their own Tab stops), collect roving leaves. */\n private collectRoving(el: HTMLElement, out: HTMLElement[]) {\n const kind = this.classify(el);\n if (kind === 'composite' || kind === 'independent') return; // own Tab stop — leave alone\n if (kind === 'roving') {\n if (this.isNavigable(el) && !out.includes(el)) out.push(el);\n return;\n }\n // wrapper → descend into element children\n for (const child of Array.from(el.children) as HTMLElement[]) this.collectRoving(child, out);\n }\n\n /** The default active Tab stop prefers an ENABLED control so Tab does not land on a\n * soft-disabled one first, while arrows can still reach the disabled members. */\n private preferredActive(items: HTMLElement[]): HTMLElement | undefined {\n return items.find((el) => el.getAttribute('aria-disabled') !== 'true') ?? items[0];\n }\n\n /**\n * The roving group in visual order (leading → default → trailing), EXCLUDING the FAB.\n * Derived from light-DOM children (works in spec + browser; slot.assignedElements is\n * unreliable in the spec mock).\n */\n private getItems(): HTMLElement[] {\n const children = (Array.from(this.el.children) as HTMLElement[]).filter((c) => this.slotOf(c) !== 'fab');\n const docOrder = new Map<Element, number>();\n children.forEach((c, i) => docOrder.set(c, i));\n children.sort((a, b) => {\n const pa = this.slotPriority(a);\n const pb = this.slotPriority(b);\n if (pa !== pb) return pa - pb;\n return (docOrder.get(a) ?? 0) - (docOrder.get(b) ?? 0);\n });\n\n const items: HTMLElement[] = [];\n for (const child of children) this.collectRoving(child, items);\n return items;\n }\n\n // ───────────────────────────── ROVING TABINDEX ─────────────────────────────\n\n private applyRoving(el: HTMLElement, active: boolean) {\n if ('groupTabindex' in el) {\n if (!this.roved.has(el)) this.roved.set(el, { kind: 'group', orig: null });\n (el as unknown as { groupTabindex: number }).groupTabindex = active ? 0 : -1;\n } else {\n if (!this.roved.has(el)) this.roved.set(el, { kind: 'attr', orig: el.getAttribute('tabindex') });\n el.setAttribute('tabindex', active ? '0' : '-1');\n }\n }\n\n private restoreOne(el: HTMLElement) {\n const rec = this.roved.get(el);\n if (!rec) return;\n if (rec.kind === 'group') {\n try { (el as unknown as { groupTabindex: number | null }).groupTabindex = null; } catch { /* detached */ }\n } else if (rec.orig === null) {\n el.removeAttribute('tabindex');\n } else {\n el.setAttribute('tabindex', rec.orig);\n }\n this.roved.delete(el);\n }\n\n private clearRoving() {\n for (const el of Array.from(this.roved.keys())) this.restoreOne(el);\n }\n\n /**\n * Designate ONE roving-group member as its single Tab stop and make the rest untabbable.\n * Text-entry controls and composites are never touched (they keep their own Tab stop).\n * `generic` mode does not rove at all.\n */\n private updateRoving() {\n if (this.containerSemantics !== 'toolbar') {\n this.clearRoving();\n return;\n }\n const items = this.getItems();\n // Restore any previously-roved element no longer a member (removed, hidden, disabled).\n for (const el of Array.from(this.roved.keys())) {\n if (!items.includes(el)) this.restoreOne(el);\n }\n if (items.length === 0) {\n this.activeItem = null;\n return;\n }\n const active =\n this.activeItem && items.includes(this.activeItem) ? this.activeItem : this.preferredActive(items);\n this.activeItem = active ?? null;\n for (const el of items) this.applyRoving(el, el === active);\n }\n\n private handleFocusIn(ev: FocusEvent) {\n if (this.containerSemantics !== 'toolbar') return;\n const items = this.getItems();\n const item = this.resolveItem(ev.target, items);\n if (!item || item === this.activeItem) return;\n this.activeItem = item;\n for (const el of items) this.applyRoving(el, el === item);\n }\n\n // ───────────────────────────── KEYBOARD ─────────────────────────────\n\n /** Map an event target to the roving-group item that contains it (null if the focus is\n * on an independent control / composite / outside the group). */\n private resolveItem(target: EventTarget | null, items: HTMLElement[]): HTMLElement | null {\n const node = target as Node | null;\n if (!node) return null;\n for (const it of items) {\n if (it === node || it.contains(node)) return it;\n }\n return null;\n }\n\n /**\n * Tab enters/leaves the roving group as a single stop. Arrow keys / Home / End move focus\n * between roving-group members. When focus is on an independent control (text field, select,\n * range, composite) it is NOT in the group, so arrows pass through untouched — caret movement,\n * text selection, value adjustment, and the composite's own arrow handling keep working.\n * Activation stays with each control (Space / Enter).\n */\n private handleKeyDown(ev: KeyboardEvent) {\n if (this.containerSemantics !== 'toolbar') return;\n if (ev.defaultPrevented) return;\n if (ev.shiftKey || ev.ctrlKey || ev.metaKey || ev.altKey) return;\n\n const key = ev.key;\n const isNavKey =\n key === 'ArrowRight' || key === 'ArrowLeft' || key === 'ArrowUp' || key === 'ArrowDown' ||\n key === 'Home' || key === 'End';\n if (!isNavKey) return;\n\n const items = this.getItems();\n if (items.length === 0) return;\n const current = this.resolveItem(ev.target, items);\n if (!current) return; // focus is on an independent control — do not hijack\n\n const vertical = this.variant === 'floating' && this.layout === 'vertical';\n const rtl = typeof getComputedStyle === 'function' && getComputedStyle(this.el).direction === 'rtl';\n\n let delta = 0;\n if (vertical) {\n if (key === 'ArrowDown') delta = 1;\n else if (key === 'ArrowUp') delta = -1;\n } else {\n if (key === 'ArrowRight') delta = rtl ? -1 : 1;\n else if (key === 'ArrowLeft') delta = rtl ? 1 : -1;\n }\n\n let nextIdx: number;\n if (key === 'Home') {\n nextIdx = 0;\n } else if (key === 'End') {\n nextIdx = items.length - 1;\n } else if (delta !== 0) {\n const idx = items.indexOf(current);\n nextIdx = (idx + delta + items.length) % items.length;\n } else {\n return; // off-axis arrow (e.g. ArrowUp on a horizontal toolbar) — leave it alone\n }\n\n const next = items[nextIdx];\n if (!next) return;\n ev.preventDefault();\n if (next !== current) {\n this.activeItem = next;\n for (const el of items) this.applyRoving(el, el === next);\n next.focus();\n }\n }\n\n render() {\n const isFloating = this.variant === 'floating';\n const isVertical = isFloating && this.layout === 'vertical';\n\n const isToolbar = this.containerSemantics === 'toolbar';\n // Null-safe: componentWillLoad may remove a blank aria-label attribute, which\n // resets the mapped prop to null.\n const labelledby = (this.ariaLabelledby ?? '').trim();\n const label = (this.ariaLabelProp ?? '').trim();\n // Naming attributes are AUTHOR-owned and rendered as a pure function of their props\n // in BOTH modes — a value emitted in only one mode would be vdom-removed by the other,\n // which used to destroy the author's aria-label on a toolbar→generic→toolbar round\n // trip when both attributes were set. No precedence-stripping either: when both are\n // present, the ARIA accname algorithm itself prefers aria-labelledby, so removing\n // aria-label was never needed. Only component-OWNED ARIA (role, aria-orientation)\n // is mode-dependent; AT ignores names on generic containers (dev warning explains).\n const ariaLabel = label.length > 0 ? this.ariaLabelProp : undefined;\n const ariaLabelledbyOut = labelledby.length > 0 ? this.ariaLabelledby : undefined;\n const ariaOrientation = isToolbar ? (isVertical ? 'vertical' : 'horizontal') : undefined;\n\n return (\n <Host\n class={{\n 'md-toolbar': true,\n [`md-toolbar--${this.variant}`]: true,\n [`md-toolbar--${this.color}`]: true,\n [`md-toolbar--${this.layout}`]: isFloating,\n [`md-toolbar--align-${this.alignment}`]: true,\n 'md-toolbar--vertical': isVertical,\n 'md-toolbar--generic': !isToolbar,\n }}\n role={isToolbar ? 'toolbar' : undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledbyOut}\n aria-orientation={ariaOrientation}\n >\n <div class=\"md-toolbar__container\" part=\"container\">\n <slot name=\"leading\"></slot>\n <slot></slot>\n <slot name=\"trailing\"></slot>\n </div>\n <div\n class={{\n 'md-toolbar__fab-container': true,\n 'md-toolbar__fab-container--floating': isFloating,\n 'md-toolbar__fab-container--hidden': !this.hasFab,\n }}\n part=\"fab-container\"\n >\n <slot name=\"fab\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as t,H as s,c as e,h as i,d as r,t as a}from"./p-bSpXNc5J.js";import{p as n}from"./p-CxhZdOPw.js";import{d as o}from"./p-DvXQXhgu.js";import{d as l}from"./p-IWA0yIjJ.js";import{d as c}from"./p-Hm3X1iai.js";import{d}from"./p-CrbzXk64.js";const m=()=>`:host{--_column-min-width:var(--md-transfer-list-column-min-width, 260px);--_column-max-block:var(--md-transfer-list-column-max-block, var(--md-transfer-list-height, 360px));--_width:var(--md-transfer-list-width, auto);--_min-width:var(--md-transfer-list-min-width, auto);--_max-width:var(--md-transfer-list-max-width, none);--_height:var(--md-transfer-list-height, auto);--_min-height:var(--md-transfer-list-min-height, auto);--_max-height:var(--md-transfer-list-max-height, none);--_container-shape:var(--md-transfer-list-container-shape, var(--md-sys-shape-corner-large, 16px));--_container-color:var(--md-transfer-list-container-color, var(--md-sys-color-surface-container-low));--_header-color:var(--md-transfer-list-header-color, var(--md-sys-color-surface-container));--_header-text-color:var(--md-transfer-list-header-text-color, var(--md-sys-color-on-surface));--_item-inset:var(--md-transfer-list-item-inset, 6px);--_item-padding:var( --md-transfer-list-item-padding, var(--md-sys-spacing-inset-sm, 8px) calc(var(--md-sys-spacing-inset-lg, 16px) - var(--_item-inset)) );--_item-gap:var(--md-transfer-list-item-gap, var(--md-sys-spacing-gap-md, 12px));--_divider-color:var(--md-transfer-list-divider-color, var(--md-sys-color-outline-variant));--_controls-gap:var(--md-transfer-list-controls-gap, var(--md-sys-spacing-gap-md, 12px));--_control-size:var(--md-transfer-list-control-size, max(24px, calc(40px + var(--md-sys-density-scale, 0) * 4px)));--_control-icon-size:var(--md-transfer-list-control-icon-size, max(16px, calc(24px + var(--md-sys-density-scale, 0) * 2px)));display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:minmax(0, 1fr);gap:var(--md-sys-spacing-gap-lg, 16px);align-items:stretch;box-sizing:border-box;inline-size:var(--_width);min-inline-size:var(--_min-width);max-inline-size:var(--_max-width);block-size:var(--_height);min-block-size:var(--_min-height);max-block-size:var(--_max-height);font-family:var(--md-sys-typescale-body-medium-font-family, Roboto, system-ui, sans-serif);color:var(--md-sys-color-on-surface, #1d1b20)}: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}:host([full-width]){inline-size:100%}:host([full-height]){block-size:100%;--_column-max-block:var(--md-transfer-list-column-max-block, 100%)}@media (max-width: 640px){:host{grid-template-columns:1fr;grid-template-rows:auto auto auto}}.md-transfer-list__column{display:flex;flex-direction:column;min-inline-size:var(--_column-min-width);max-block-size:var(--_column-max-block);background:var(--_container-color);border-radius:var(--_container-shape);overflow:hidden;border:1px solid var(--_divider-color);box-sizing:border-box}:host([searchable]) .md-transfer-list__column{block-size:var(--_column-max-block)}.md-transfer-list__header{display:flex;align-items:center;gap:var(--md-sys-spacing-gap-md, 12px);padding:var(--md-sys-spacing-inset-md, 12px) var(--md-sys-spacing-inset-lg, 16px);background:var(--_header-color);color:var(--_header-text-color);border-block-end:1px solid var(--_divider-color);flex:0 0 auto}.md-transfer-list__header-title{display:flex;flex-direction:column;min-inline-size:0;flex:1}.md-transfer-list__title{font-family:var(--md-sys-typescale-title-small-font-family, Roboto, system-ui, sans-serif);font-size:max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-title-small-weight, 500);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px));color:var(--md-sys-color-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.md-transfer-list__count{align-self:flex-start;margin-block-start:2px;padding:1px 8px;border-radius:var(--md-sys-shape-corner-full, 999px);background:var(--md-sys-color-secondary-container, #e8def8);color:var(--md-sys-color-on-secondary-container, #1d192b);font-size:max(10px, calc(11px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-label-small-weight, 500);line-height:max(14px, calc(16px + var(--md-sys-density-scale, 0) * 0.5px));letter-spacing:0.4px;white-space:nowrap}.md-transfer-list__search{padding:calc(8px + max(4px, calc(8px + var(--md-sys-density-scale, 0) * 1px))) var(--md-sys-spacing-inset-md, 12px) var(--md-sys-spacing-inset-sm, 8px);flex:0 0 auto}.md-transfer-list__list{margin:0;padding:var(--md-sys-spacing-inset-xs, 4px) 0;list-style:none;overflow-y:auto;flex:1 1 auto}.md-transfer-list__item{position:relative;display:flex;align-items:center;gap:var(--_item-gap);padding:var(--_item-padding);margin-inline:var(--_item-inset);border-radius:var(--md-sys-shape-corner-small, 8px);cursor:pointer;transition:background-color var(--md-sys-motion-duration-short2, 100ms) ease;outline:none}.md-transfer-list__item+.md-transfer-list__item{margin-block-start:2px}.md-transfer-list__item:hover{background:color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent)}.md-transfer-list__item--checked{background:color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent)}.md-transfer-list__item--checked:hover{background:color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)}.md-transfer-list__item:focus-visible{outline:3px solid var(--md-sys-color-secondary);outline-offset:-3px;background:color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)}.md-transfer-list__item--disabled{opacity:var(--md-sys-state-disabled-content-opacity, 0.38);pointer-events:none}.md-transfer-list__labels{display:flex;flex-direction:column;min-inline-size:0;flex:1}.md-transfer-list__label{color:var(--md-sys-color-on-surface);font-size:max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.md-transfer-list__description{color:var(--md-sys-color-on-surface-variant);font-size:max(10px, calc(12px + var(--md-sys-density-scale, 0) * 0.5px));line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.md-transfer-list__empty{display:flex;flex-direction:column;align-items:center;gap:var(--md-sys-spacing-gap-sm, 8px);padding:max(4px, calc(32px + var(--md-sys-density-scale, 0) * 2px)) var(--md-sys-spacing-inset-lg, 16px);text-align:center;color:var(--md-sys-color-on-surface-variant);font-size:max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px))}.md-transfer-list__empty-icon{font-size:var(--md-transfer-list-empty-icon-size, max(24px, calc(32px + var(--md-sys-density-scale, 0) * 2px)));opacity:0.9}.md-transfer-list__controls{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--_controls-gap);padding-inline:var(--md-sys-spacing-inset-xs, 4px)}.md-transfer-list__controls md-icon-button{--md-icon-button-container-width:var(--_control-size);--md-icon-button-container-height:var(--_control-size);--md-icon-button-icon-size:var(--_control-icon-size)}@media (max-width: 640px){.md-transfer-list__controls{flex-direction:row;justify-content:center;padding-block:var(--md-sys-spacing-inset-md, 12px)}.md-transfer-list__controls md-icon-button,:host-context([dir='rtl']) .md-transfer-list__controls md-icon-button,:host([dir='rtl']) .md-transfer-list__controls md-icon-button{transform:rotate(90deg)}}:host(.md-transfer-list--disabled) .md-transfer-list__item{pointer-events:none;cursor:default}:host-context([dir='rtl']) .md-transfer-list__controls md-icon-button,:host([dir='rtl']) .md-transfer-list__controls md-icon-button{transform:scaleX(-1)}@media (prefers-reduced-motion: reduce){.md-transfer-list__item{transition:none}}.material-symbols-outlined{font-family:var(--md-sys-icon-font-family, 'Material Symbols Outlined', 'Material Icons');font-weight:normal;font-style:normal;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}`;const h=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.mdChange=e(this,"mdChange",7);this.mdMove=e(this,"mdMove",7);this.items=[];this.value=[];this.sourceTitle="Choices";this.targetTitle="Chosen";this.searchable=true;this.sourceSearchPlaceholder="Search choices";this.targetSearchPlaceholder="Search chosen";this.showSelectAll=true;this.searchIcon="search";this.moveRightIcon="chevron_right";this.moveLeftIcon="chevron_left";this.moveAllRightIcon="keyboard_double_arrow_right";this.moveAllLeftIcon="keyboard_double_arrow_left";this.emptyIcon="";this.emptyText="No items";this.countTemplate="{checked}/{total} selected";this.density=0;this.disabled=false;this.singleStepOnly=false;this.moveRightLabel="Move selected to target";this.moveLeftLabel="Move selected to source";this.moveAllRightLabel="Move all to target";this.moveAllLeftLabel="Move all to source";this.sourceChecked=new Set;this.targetChecked=new Set;this.sourceQuery="";this.targetQuery="";this.moveRight=()=>{if(this.disabled)return;const t=this.getEligibleChecked("source");if(t.length===0)return;const s=[...this.value,...t];this.sourceChecked=new Set;this.commit(s,"right",t)};this.moveLeft=()=>{if(this.disabled)return;const t=this.getEligibleChecked("target");if(t.length===0)return;const s=this.value.filter((s=>!t.includes(s)));this.targetChecked=new Set;this.commit(s,"left",t)};this.moveAllRight=()=>{if(this.disabled)return;const t=this.sourceItems.filter((t=>!t.disabled)).map((t=>t.value));if(t.length===0)return;const s=[...this.value,...t];this.sourceChecked=new Set;this.commit(s,"right",t)};this.moveAllLeft=()=>{if(this.disabled)return;const t=this.targetItems.filter((t=>!t.disabled)).map((t=>t.value));if(t.length===0)return;const s=this.value.filter((s=>!t.includes(s)));this.targetChecked=new Set;this.commit(s,"left",t)};this.toggleItem=(t,s)=>{if(this.disabled)return;const e=this.itemList.find((t=>t.value===s));if(e?.disabled)return;const i=new Set(t==="source"?this.sourceChecked:this.targetChecked);if(i.has(s))i.delete(s);else i.add(s);if(t==="source")this.sourceChecked=i;else this.targetChecked=i};this.toggleSelectAll=t=>()=>{if(this.disabled)return;const s=this.getVisible(t).filter((t=>!t.disabled));const e=t==="source"?this.sourceChecked:this.targetChecked;const i=s.length>0&&s.every((t=>e.has(t.value)));const r=new Set(e);if(i){s.forEach((t=>r.delete(t.value)))}else{s.forEach((t=>r.add(t.value)))}if(t==="source")this.sourceChecked=r;else this.targetChecked=r}}get itemList(){return n(this.items,"md-transfer-list","items")}syncCheckedSets(){const t=new Set(this.itemList.map((t=>t.value)));this.sourceChecked=new Set(Array.from(this.sourceChecked).filter((s=>t.has(s))));this.targetChecked=new Set(Array.from(this.targetChecked).filter((s=>t.has(s))))}async moveSelectedRight(){this.moveRight()}async moveSelectedLeft(){this.moveLeft()}get sourceItems(){return this.itemList.filter((t=>!this.value.includes(t.value)))}get targetItems(){return this.itemList.filter((t=>this.value.includes(t.value)))}filter(t,s){if(!s)return t;const e=s.trim().toLowerCase();return t.filter((t=>t.label.toLowerCase().includes(e)||(t.description?.toLowerCase().includes(e)??false)))}getVisible(t){return t==="source"?this.filter(this.sourceItems,this.sourceQuery):this.filter(this.targetItems,this.targetQuery)}getEligibleChecked(t){const s=new Set(this.getVisible(t).filter((t=>!t.disabled)).map((t=>t.value)));const e=t==="source"?this.sourceChecked:this.targetChecked;return Array.from(e).filter((t=>s.has(t)))}commit(t,s,e){this.value=t;this.mdChange.emit(t);this.mdMove.emit({direction:s,moved:e,target:t})}renderHeader(t){const s=t==="source"?this.sourceTitle:this.targetTitle;const e=this.getVisible(t);const r=e.filter((t=>!t.disabled));const a=t==="source"?this.sourceChecked:this.targetChecked;const n=r.filter((t=>a.has(t.value))).length;const o=r.length>0&&n===r.length;const l=n>0&&!o;return i("div",{class:"md-transfer-list__header",part:"header"},this.showSelectAll&&i("md-checkbox",{class:"md-transfer-list__select-all",checked:o,indeterminate:l,disabled:this.disabled||r.length===0,onMdChange:this.toggleSelectAll(t),"aria-label":`Select all ${s}`}),i("div",{class:"md-transfer-list__header-title",part:"header-title"},i("span",{class:"md-transfer-list__title"},s),i("span",{class:"md-transfer-list__count",part:"count"},this.countTemplate.replace("{checked}",String(n)).replace("{total}",String(r.length)))))}renderSearch(t){if(!this.searchable)return null;const s=t==="source"?this.sourceSearchPlaceholder:this.targetSearchPlaceholder;const e=t==="source"?this.sourceQuery:this.targetQuery;return i("md-text-field",{class:"md-transfer-list__search",part:"search",variant:"outlined",density:this.density,label:s,value:e,clearable:"internal",disabled:this.disabled,onMdInput:s=>{if(t==="source")this.sourceQuery=s.detail??"";else this.targetQuery=s.detail??""}},this.searchIcon&&i("span",{slot:"leading-icon",class:"material-symbols-outlined","aria-hidden":"true"},this.searchIcon))}renderList(t){const s=this.getVisible(t);const e=t==="source"?this.sourceChecked:this.targetChecked;const r=t==="source"?this.sourceTitle:this.targetTitle;if(s.length===0){return i("div",{class:"md-transfer-list__empty",role:"status",part:"empty"},this.emptyIcon&&i("span",{class:"md-transfer-list__empty-icon material-symbols-outlined",part:"empty-icon","aria-hidden":"true"},this.emptyIcon),this.emptyText)}return i("ul",{class:"md-transfer-list__list",role:"listbox","aria-multiselectable":"true","aria-label":r,tabindex:this.disabled?"0":undefined,part:"list"},s.map((s=>{const r=e.has(s.value);return i("li",{class:{"md-transfer-list__item":true,"md-transfer-list__item--checked":r,"md-transfer-list__item--disabled":!!s.disabled},role:"option","aria-selected":String(r),"aria-disabled":s.disabled?"true":"false",key:s.value,onClick:()=>this.toggleItem(t,s.value),onKeyDown:e=>{if(e.key===" "||e.key==="Enter"){e.preventDefault();this.toggleItem(t,s.value)}},tabindex:s.disabled||this.disabled?"-1":"0",part:"item"},i("md-ripple",{disabled:s.disabled||this.disabled}),i("md-checkbox",{checked:r,disabled:s.disabled||this.disabled,inert:true,"aria-hidden":"true"}),i("div",{class:"md-transfer-list__labels"},i("span",{class:"md-transfer-list__label"},s.label),s.description&&i("span",{class:"md-transfer-list__description"},s.description)))})))}renderColumn(t){return i("div",{class:"md-transfer-list__column",part:`column column-${t}`},this.renderHeader(t),this.renderSearch(t),this.renderList(t))}renderControls(){const t=this.getEligibleChecked("source").length;const s=this.getEligibleChecked("target").length;const e=this.sourceItems.some((t=>!t.disabled));const r=this.targetItems.some((t=>!t.disabled));return i("div",{class:"md-transfer-list__controls",part:"controls"},!this.singleStepOnly&&i("md-icon-button",{variant:"tonal",icon:this.moveAllRightIcon,disabled:this.disabled||!e,"aria-label":this.moveAllRightLabel,onClick:this.moveAllRight}),i("md-icon-button",{variant:"filled",icon:this.moveRightIcon,disabled:this.disabled||t===0,"aria-label":this.moveRightLabel,onClick:this.moveRight}),i("md-icon-button",{variant:"filled",icon:this.moveLeftIcon,disabled:this.disabled||s===0,"aria-label":this.moveLeftLabel,onClick:this.moveLeft}),!this.singleStepOnly&&i("md-icon-button",{variant:"tonal",icon:this.moveAllLeftIcon,disabled:this.disabled||!r,"aria-label":this.moveAllLeftLabel,onClick:this.moveAllLeft}))}render(){return i(r,{key:"0a05bcbdb886ef5a52c9d5aae979f0ff6f8b46aa",class:{"md-transfer-list":true,"md-transfer-list--disabled":this.disabled},role:"group","aria-disabled":this.disabled?"true":"false"},this.renderColumn("source"),this.renderControls(),this.renderColumn("target"))}get el(){return this}static get watchers(){return{value:[{syncCheckedSets:0}]}}static get style(){return m()}},[1,"md-transfer-list",{items:[1],value:[1040],sourceTitle:[1,"source-title"],targetTitle:[1,"target-title"],searchable:[516],sourceSearchPlaceholder:[1,"source-search-placeholder"],targetSearchPlaceholder:[1,"target-search-placeholder"],showSelectAll:[516,"show-select-all"],searchIcon:[1,"search-icon"],moveRightIcon:[1,"move-right-icon"],moveLeftIcon:[1,"move-left-icon"],moveAllRightIcon:[1,"move-all-right-icon"],moveAllLeftIcon:[1,"move-all-left-icon"],emptyIcon:[1,"empty-icon"],emptyText:[1,"empty-text"],countTemplate:[1,"count-template"],density:[514],disabled:[516],singleStepOnly:[516,"single-step-only"],moveRightLabel:[1,"move-right-label"],moveLeftLabel:[1,"move-left-label"],moveAllRightLabel:[1,"move-all-right-label"],moveAllLeftLabel:[1,"move-all-left-label"],sourceChecked:[32],targetChecked:[32],sourceQuery:[32],targetQuery:[32],moveSelectedRight:[64],moveSelectedLeft:[64]},undefined,{value:[{syncCheckedSets:0}]}]);function f(){if(typeof customElements==="undefined"){return}const t=["md-transfer-list","md-checkbox","md-icon-button","md-ripple","md-text-field"];t.forEach((t=>{switch(t){case"md-transfer-list":if(!customElements.get(a(t))){customElements.define(a(t),h)}break;case"md-checkbox":if(!customElements.get(a(t))){o()}break;case"md-icon-button":if(!customElements.get(a(t))){l()}break;case"md-ripple":if(!customElements.get(a(t))){c()}break;case"md-text-field":if(!customElements.get(a(t))){d()}break}}))}f();const p=h;const u=f;export{p as MdTransferList,u as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=md-transfer-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mdTransferListCss","MdTransferList","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","items","value","sourceTitle","targetTitle","searchable","sourceSearchPlaceholder","targetSearchPlaceholder","showSelectAll","searchIcon","moveRightIcon","moveLeftIcon","moveAllRightIcon","moveAllLeftIcon","emptyIcon","emptyText","countTemplate","density","disabled","singleStepOnly","moveRightLabel","moveLeftLabel","moveAllRightLabel","moveAllLeftLabel","sourceChecked","Set","targetChecked","sourceQuery","targetQuery","moveRight","moved","getEligibleChecked","length","next","commit","moveLeft","filter","v","includes","moveAllRight","sourceItems","i","map","moveAllLeft","targetItems","toggleItem","side","val","item","itemList","find","set","has","delete","add","toggleSelectAll","visible","getVisible","allChecked","every","forEach","parseJsonArrayProp","syncCheckedSets","known","Array","from","moveSelectedRight","moveSelectedLeft","q","needle","trim","toLowerCase","label","description","direction","mdChange","emit","mdMove","target","renderHeader","title","eligibleVisible","numChecked","someChecked","h","class","part","checked","indeterminate","onMdChange","replace","String","renderSearch","placeholder","variant","clearable","onMdInput","e","detail","slot","renderList","role","tabindex","undefined","isChecked","key","onClick","onKeyDown","preventDefault","inert","renderColumn","renderControls","sourceCount","targetCount","sourceAvailable","some","targetAvailable","icon","render","Host"],"sources":["src/components/md-transfer-list/md-transfer-list.css?tag=md-transfer-list&encapsulation=shadow","src/components/md-transfer-list/md-transfer-list.tsx"],"sourcesContent":["/* ==========================================================\n md-transfer-list — Material Design 3 dual-list selector\n Reference parity: https://mui.com/material-ui/react-transfer-list/\n\n PUBLIC CSS CUSTOM PROPERTIES (override per-instance):\n --md-transfer-list-width Explicit inline-size (default: auto; 100% supported)\n --md-transfer-list-min-width Minimum inline-size\n --md-transfer-list-max-width Maximum inline-size\n --md-transfer-list-height Explicit block-size (default: auto; 100% supported —\n the column cap tracks this so the lists stretch)\n --md-transfer-list-min-height Minimum block-size\n --md-transfer-list-max-height Maximum block-size\n --md-transfer-list-column-min-width Min-width of each column\n --md-transfer-list-column-max-block Max-height of each column (default 360px,\n or the configured height when one is set)\n\n ATTRIBUTES:\n full-width Stretch to 100% of the container's inline-size\n full-height Stretch to 100% of the container's block-size\n --md-transfer-list-container-shape Container corner radius\n --md-transfer-list-container-color Column background\n --md-transfer-list-header-color Header background\n --md-transfer-list-header-text-color Header text color\n --md-transfer-list-item-inset Row plate inset from the panel edge\n (6dp; overriding it alone keeps the\n checkbox column aligned)\n --md-transfer-list-item-padding Padding of each row (derived from\n inset-lg so the row checkbox lines up\n with the header's; override together\n with -item-inset)\n --md-transfer-list-item-gap Gap between checkbox and label\n --md-transfer-list-divider-color Divider color\n --md-transfer-list-controls-gap Gap between controls buttons\n --md-transfer-list-empty-icon-size Empty-state icon size (default 32px,\n tapers with density; set to opt out)\n\n CSS PARTS:\n column A whole column container (also column-source / column-target)\n header Header bar\n header-title Header title cluster\n count \"{n}/{total} selected\" pill\n search Search field per side\n list The <ul> listbox per side\n item Each <li> row\n empty Empty-state message\n empty-icon Optional empty-state glyph (via `empty-icon` prop)\n controls Centre column with move buttons\n ========================================================== */\n\n:host {\n --_column-min-width: var(--md-transfer-list-column-min-width, 260px);\n /* The per-column height cap tracks the configured host height (so\n `--md-transfer-list-height: 100%` fills the parent instead of stopping at\n the 360px default); an explicit column-max-block always wins. */\n --_column-max-block: var(--md-transfer-list-column-max-block, var(--md-transfer-list-height, 360px));\n\n --_width: var(--md-transfer-list-width, auto);\n --_min-width: var(--md-transfer-list-min-width, auto);\n --_max-width: var(--md-transfer-list-max-width, none);\n --_height: var(--md-transfer-list-height, auto);\n --_min-height: var(--md-transfer-list-min-height, auto);\n --_max-height: var(--md-transfer-list-max-height, none);\n --_container-shape: var(--md-transfer-list-container-shape, var(--md-sys-shape-corner-large, 16px));\n --_container-color: var(--md-transfer-list-container-color, var(--md-sys-color-surface-container-low));\n --_header-color: var(--md-transfer-list-header-color, var(--md-sys-color-surface-container));\n --_header-text-color: var(--md-transfer-list-header-text-color, var(--md-sys-color-on-surface));\n /* How far the row's rounded hover/selected plate is pulled in from the panel\n edge. The row gives this back as inline padding (below), so its checkbox\n still lands on the header checkbox's column. */\n --_item-inset: var(--md-transfer-list-item-inset, 6px);\n /* Inline padding is derived, not chosen: the header pads its select-all\n checkbox by `inset-lg`, and a row's checkbox starts at\n `--_item-inset + this padding`. Deriving it from the SAME token keeps the\n two checkboxes on one column at every rung automatically. The old\n `max(12px, inset-md)` floored at 12px while the header's inset-lg kept\n tapering 16→12→8, so the two drifted further apart the denser it got\n (2px at density 0, 6px at -2, 10px at -4). */\n --_item-padding: var(\n --md-transfer-list-item-padding,\n var(--md-sys-spacing-inset-sm, 8px)\n calc(var(--md-sys-spacing-inset-lg, 16px) - var(--_item-inset))\n );\n --_item-gap: var(--md-transfer-list-item-gap, var(--md-sys-spacing-gap-md, 12px));\n --_divider-color: var(--md-transfer-list-divider-color, var(--md-sys-color-outline-variant));\n --_controls-gap: var(--md-transfer-list-controls-gap, var(--md-sys-spacing-gap-md, 12px));\n /* Mover buttons. md-icon-button's own `--sm` sizing stops at\n `max(32px, calc(40px + scale * 4px))`, so the movers freeze at 32×32 from\n -2 down while the panels either side keep tightening — the control column\n ends up visually heavier than the lists it drives. These keep the 4px/rung\n slope all the way to -4 (40 → 24) and are scoped to this component, so the\n library-wide 32px floor for every other small icon button is untouched.\n The glyph tapers at 2px/rung rather than md-icon-button's 1px so it stays\n proportionate inside the smaller plate instead of crowding it. */\n --_control-size: var(--md-transfer-list-control-size, max(24px, calc(40px + var(--md-sys-density-scale, 0) * 4px)));\n --_control-icon-size: var(--md-transfer-list-control-icon-size, max(16px, calc(24px + var(--md-sys-density-scale, 0) * 2px)));\n\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n /* minmax(0, 1fr): with an auto host height the row is content-sized (no\n change); with a definite height (var / full-height / 100%) the single row\n fills it so the columns stretch. */\n grid-template-rows: minmax(0, 1fr);\n gap: var(--md-sys-spacing-gap-lg, 16px);\n align-items: stretch;\n box-sizing: border-box;\n\n inline-size: var(--_width);\n min-inline-size: var(--_min-width);\n max-inline-size: var(--_max-width);\n block-size: var(--_height);\n min-block-size: var(--_min-height);\n max-block-size: var(--_max-height);\n\n /* Base typography for everything in this shadow root. NB: the\n `--md-sys-typescale-*-font` tokens are full `font` SHORTHANDS — using one\n as font-family is invalid at computed-value time and silently falls back\n to the page serif. Only the `-font-family` tokens are families. */\n font-family: var(--md-sys-typescale-body-medium-font-family, Roboto, system-ui, sans-serif);\n color: var(--md-sys-color-on-surface, #1d1b20);\n}\n\n/* ── Density ───────────────────────────────────────────── */\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\n/* md-card-style sizing sugar. */\n:host([full-width]) {\n inline-size: 100%;\n}\n\n:host([full-height]) {\n block-size: 100%;\n --_column-max-block: var(--md-transfer-list-column-max-block, 100%);\n}\n\n@media (max-width: 640px) {\n :host {\n grid-template-columns: 1fr;\n grid-template-rows: auto auto auto;\n }\n}\n\n/* ── Column ───────────────────────────────────────────────── */\n\n.md-transfer-list__column {\n display: flex;\n flex-direction: column;\n min-inline-size: var(--_column-min-width);\n max-block-size: var(--_column-max-block);\n background: var(--_container-color);\n border-radius: var(--_container-shape);\n overflow: hidden;\n border: 1px solid var(--_divider-color);\n box-sizing: border-box;\n}\n\n/* Searchable columns get a DEFINITE height (the cap), not a content-driven\n max — so filtering down to fewer rows never collapses the column; the\n list just shows empty space and keeps its scroll geometry. */\n:host([searchable]) .md-transfer-list__column {\n block-size: var(--_column-max-block);\n}\n\n.md-transfer-list__header {\n display: flex;\n align-items: center;\n gap: var(--md-sys-spacing-gap-md, 12px);\n padding: var(--md-sys-spacing-inset-md, 12px) var(--md-sys-spacing-inset-lg, 16px);\n background: var(--_header-color);\n color: var(--_header-text-color);\n border-block-end: 1px solid var(--_divider-color);\n flex: 0 0 auto;\n}\n\n.md-transfer-list__header-title {\n display: flex;\n flex-direction: column;\n min-inline-size: 0;\n flex: 1;\n}\n\n.md-transfer-list__title {\n font-family: var(--md-sys-typescale-title-small-font-family, Roboto, system-ui, sans-serif);\n /* title-small (14/20) — 0.5px/rung on the size, 1px on the line-height, the\n library's rates for sub-22px type. See packages/tokens/src/tokens.css §10-12. */\n font-size: max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));\n font-weight: var(--md-sys-typescale-title-small-weight, 500);\n line-height: max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px));\n color: var(--md-sys-color-on-surface);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* \"{n}/{total} selected\" as an MD3 tonal pill (the \"header chip\"). */\n.md-transfer-list__count {\n align-self: flex-start;\n margin-block-start: 2px;\n padding: 1px 8px;\n border-radius: var(--md-sys-shape-corner-full, 999px);\n background: var(--md-sys-color-secondary-container, #e8def8);\n color: var(--md-sys-color-on-secondary-container, #1d192b);\n /* label-small (11/16). The 10px floor binds from -2 on purpose: this pill is\n already the smallest text in the component, and the usual 0.5px/rung taper\n would run it to 9px at -4 — below what the count stays legible at. */\n font-size: max(10px, calc(11px + var(--md-sys-density-scale, 0) * 0.5px));\n font-weight: var(--md-sys-typescale-label-small-weight, 500);\n line-height: max(14px, calc(16px + var(--md-sys-density-scale, 0) * 0.5px));\n letter-spacing: 0.4px;\n white-space: nowrap;\n}\n\n.md-transfer-list__search {\n /* Block-start is NOT the plain inset here. This element IS the outlined\n md-text-field, and its floating label rises a constant 8px above the\n field's own top border to sit in the outline notch — measured identical at\n every density rung, because the notch tracks the border, not the label's\n (tapering) font size. So the first 8px of padding is consumed before any\n visible breathing room begins. The old symmetric `inset-sm` gave exactly\n 0px of clearance at density 0 and, once that token tapered to 4px at -3/-4,\n let the label overflow ABOVE the component and collide with the divider.\n Clear the 8px first, then taper only the breathing room on top of it. */\n padding: calc(8px + max(4px, calc(8px + var(--md-sys-density-scale, 0) * 1px)))\n var(--md-sys-spacing-inset-md, 12px)\n var(--md-sys-spacing-inset-sm, 8px);\n flex: 0 0 auto;\n}\n\n/* ── List ────────────────────────────────────────────────── */\n\n.md-transfer-list__list {\n margin: 0;\n padding: var(--md-sys-spacing-inset-xs, 4px) 0;\n list-style: none;\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n/* Inset, rounded rows with an md-ripple — the same row treatment as\n md-menu-item / md-list-item, rather than flat full-bleed stripes. */\n.md-transfer-list__item {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--_item-gap);\n padding: var(--_item-padding);\n margin-inline: var(--_item-inset);\n border-radius: var(--md-sys-shape-corner-small, 8px);\n cursor: pointer;\n transition: background-color var(--md-sys-motion-duration-short2, 100ms) ease;\n outline: none;\n}\n\n.md-transfer-list__item + .md-transfer-list__item {\n margin-block-start: 2px;\n}\n\n.md-transfer-list__item:hover {\n background: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);\n}\n\n.md-transfer-list__item--checked {\n background: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);\n}\n\n.md-transfer-list__item--checked:hover {\n background: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);\n}\n\n.md-transfer-list__item:focus-visible {\n outline: 3px solid var(--md-sys-color-secondary);\n outline-offset: -3px;\n background: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);\n}\n\n.md-transfer-list__item--disabled {\n opacity: var(--md-sys-state-disabled-content-opacity, 0.38);\n pointer-events: none;\n}\n\n.md-transfer-list__labels {\n display: flex;\n flex-direction: column;\n min-inline-size: 0;\n flex: 1;\n}\n\n.md-transfer-list__label {\n color: var(--md-sys-color-on-surface);\n /* body-medium (14). Line-height stays unitless so it tracks the size. */\n font-size: max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.md-transfer-list__description {\n color: var(--md-sys-color-on-surface-variant);\n /* body-small (12). */\n font-size: max(10px, calc(12px + var(--md-sys-density-scale, 0) * 0.5px));\n line-height: 1.35;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.md-transfer-list__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--md-sys-spacing-gap-sm, 8px);\n padding: max(4px, calc(32px + var(--md-sys-density-scale, 0) * 2px)) var(--md-sys-spacing-inset-lg, 16px);\n text-align: center;\n color: var(--md-sys-color-on-surface-variant);\n font-size: max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));\n}\n\n.md-transfer-list__empty-icon {\n /* 2px/rung off 32dp (24px floor) — the rate the library uses for 32px\n decorative glyphs (cf. md-app-bar's --_avatar-size), not the 1px/rung\n action-icon rate: this one is a large empty-state illustration and would\n otherwise stay visually huge inside a collapsing panel. */\n font-size: var(--md-transfer-list-empty-icon-size, max(24px, calc(32px + var(--md-sys-density-scale, 0) * 2px)));\n opacity: 0.9;\n}\n\n/* ── Controls ─────────────────────────────────────────────── */\n\n.md-transfer-list__controls {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--_controls-gap);\n padding-inline: var(--md-sys-spacing-inset-xs, 4px);\n}\n\n/* Values are written out rather than passed as `var(--_control-size)`: these\n land on an md-icon-button, which defines its own `--_container-width` /\n `--_icon-size`, and handing a private name across that boundary is how the\n md-app-bar icon plumbing silently died (cyclic → guaranteed-invalid). The\n names below are md-icon-button's PUBLIC props and collide with nothing. */\n.md-transfer-list__controls md-icon-button {\n --md-icon-button-container-width: var(--_control-size);\n --md-icon-button-container-height: var(--_control-size);\n --md-icon-button-icon-size: var(--_control-icon-size);\n}\n\n@media (max-width: 640px) {\n .md-transfer-list__controls {\n flex-direction: row;\n justify-content: center;\n padding-block: var(--md-sys-spacing-inset-md, 12px);\n }\n\n /* Stacked layout: source sits ABOVE target, so \"move to target\" is now\n downward — rotate the chevrons 90°. This also replaces the RTL scaleX\n flip (the vertical direction is the same in both directions). */\n .md-transfer-list__controls md-icon-button,\n :host-context([dir='rtl']) .md-transfer-list__controls md-icon-button,\n :host([dir='rtl']) .md-transfer-list__controls md-icon-button {\n transform: rotate(90deg);\n }\n}\n\n/* ── Disabled ─────────────────────────────────────────────── */\n\n:host(.md-transfer-list--disabled) .md-transfer-list__item {\n pointer-events: none;\n cursor: default;\n}\n\n/* ── RTL ─────────────────────────────────────────────────── */\n\n/* Layout mirrors via logical props / grid direction, but the mover chevrons\n are physical glyphs: in RTL the source column sits on the RIGHT, so\n \"move to target\" must point left. Mirror the glyphs. */\n:host-context([dir='rtl']) .md-transfer-list__controls md-icon-button,\n:host([dir='rtl']) .md-transfer-list__controls md-icon-button {\n transform: scaleX(-1);\n}\n\n/* ── Reduced motion ──────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .md-transfer-list__item {\n transition: none;\n }\n}\n\n/* ── Material Symbols font (shadow-root scope) ───────────── */\n\n/* Search-field leading icon + move-button glyphs are slotted\n into nested components but stay logically in this shadow\n root, so the `.material-symbols-outlined` class needs its\n font-family declared locally — page-level rules don't cross\n the shadow boundary. */\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","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Watch,\n Method,\n} from '@stencil/core';\nimport { parseJsonArrayProp } from '../../utils/json-prop';\n\nexport interface MdTransferListItem {\n /** Stable identifier. */\n value: string;\n /** Visible label. */\n label: string;\n /** Optional secondary description. */\n description?: string;\n /** Disable selection / movement of this item. */\n disabled?: boolean;\n}\n\n/**\n * `md-transfer-list` — Material Design 3 dual-list selector.\n *\n * Reference parity: https://mui.com/material-ui/react-transfer-list/.\n *\n * Two columns (\"source\" and \"target\") with header chips that show the\n * \"{n} / {total} selected\" count, a search field per side, paired\n * `md-checkbox` rows, and four `md-icon-button` movers in the centre\n * column. Selection inside each side is independent of which side a\n * card lives in; the move buttons only act on items that are both\n * selected AND visible (i.e. matching the search filter).\n *\n * MD3 Expressive: containers are `surface-container-low`, the headers\n * use the `secondary-container` tone for emphasis when the title slot\n * is populated, and movements run on the `motion-emphasized` curve.\n */\n@Component({\n tag: 'md-transfer-list',\n styleUrl: 'md-transfer-list.css',\n shadow: true,\n})\nexport class MdTransferList {\n @Element() el!: HTMLElement;\n\n /** All available items. */\n /**\n * The full item pool — both columns are derived from it.\n *\n * Accepts the array (property) or a **JSON string** (attribute), so a\n * plain-HTML page can declare its data inline instead of reaching for a\n * script. Malformed JSON degrades to an empty list with a console warning.\n */\n @Prop() items: MdTransferListItem[] | string = [];\n\n /** Values currently in the *target* (right) column. */\n @Prop({ mutable: true }) value: string[] = [];\n\n /** `items` as an array, whether it arrived as one or as a JSON attribute. */\n private get itemList(): MdTransferListItem[] {\n return parseJsonArrayProp<MdTransferListItem>(this.items, 'md-transfer-list', 'items');\n }\n\n /** Title for the source side. */\n @Prop({ attribute: 'source-title' }) sourceTitle: string = 'Choices';\n\n /** Title for the target side. */\n @Prop({ attribute: 'target-title' }) targetTitle: string = 'Chosen';\n\n /** Render search inputs above each list. */\n @Prop({ reflect: true }) searchable: boolean = true;\n\n /** Source-side search placeholder. */\n @Prop({ attribute: 'source-search-placeholder' }) sourceSearchPlaceholder: string = 'Search choices';\n\n /** Target-side search placeholder. */\n @Prop({ attribute: 'target-search-placeholder' }) targetSearchPlaceholder: string = 'Search chosen';\n\n /** Show the \"select all\" select-all checkbox in each header. */\n @Prop({ attribute: 'show-select-all', reflect: true }) showSelectAll: boolean = true;\n\n /** Material Symbols glyph for the search fields' leading icon ('' = none). */\n @Prop({ attribute: 'search-icon' }) searchIcon: string = 'search';\n\n /** Material Symbols glyph for the \"move selected to target\" (>) button. */\n @Prop({ attribute: 'move-right-icon' }) moveRightIcon: string = 'chevron_right';\n\n /** Material Symbols glyph for the \"move selected to source\" (<) button. */\n @Prop({ attribute: 'move-left-icon' }) moveLeftIcon: string = 'chevron_left';\n\n /** Material Symbols glyph for the \"move all to target\" (>>) button. */\n @Prop({ attribute: 'move-all-right-icon' }) moveAllRightIcon: string = 'keyboard_double_arrow_right';\n\n /** Material Symbols glyph for the \"move all to source\" (<<) button. */\n @Prop({ attribute: 'move-all-left-icon' }) moveAllLeftIcon: string = 'keyboard_double_arrow_left';\n\n /** Optional Material Symbols glyph shown above the empty-state text. */\n @Prop({ attribute: 'empty-icon' }) emptyIcon: string = '';\n\n /** Empty-state text (localisable). */\n @Prop({ attribute: 'empty-text' }) emptyText: string = 'No items';\n\n /**\n * Template for the header count pill (localisable). `{checked}` and\n * `{total}` are replaced with the live numbers.\n */\n @Prop({ attribute: 'count-template' }) countTemplate: string = '{checked}/{total} selected';\n\n /** Density scale: 0 (default), -1, -2, -3, -4. Passed to the search text field. */\n @Prop({ reflect: true }) density: 0 | -1 | -2 | -3 | -4 = 0;\n\n /** Disable the entire control. */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /** Show only the >/< buttons (drop >>/<< \"move all\"). */\n @Prop({ attribute: 'single-step-only', reflect: true }) singleStepOnly: boolean = false;\n\n /** Accessible label for the > button (localisable). NB: deliberately NOT an\n * `aria-*`-prefixed attribute — a custom attribute in the aria namespace is\n * invalid ARIA (axe aria-valid-attr). */\n @Prop({ attribute: 'move-right-label' }) moveRightLabel: string = 'Move selected to target';\n\n /** Accessible label for the < button (localisable). */\n @Prop({ attribute: 'move-left-label' }) moveLeftLabel: string = 'Move selected to source';\n\n /** Accessible label for the >> button (localisable). */\n @Prop({ attribute: 'move-all-right-label' }) moveAllRightLabel: string = 'Move all to target';\n\n /** Accessible label for the << button (localisable). */\n @Prop({ attribute: 'move-all-left-label' }) moveAllLeftLabel: string = 'Move all to source';\n\n /** Fires on every change to the target value. */\n @Event() mdChange: EventEmitter<string[]>;\n\n /** Fires after items are moved. detail describes the operation. */\n @Event() mdMove: EventEmitter<{\n direction: 'left' | 'right';\n moved: string[];\n target: string[];\n }>;\n\n @State() private sourceChecked: Set<string> = new Set();\n @State() private targetChecked: Set<string> = new Set();\n @State() private sourceQuery: string = '';\n @State() private targetQuery: string = '';\n\n @Watch('value')\n syncCheckedSets() {\n // Drop any checked items that no longer exist on the side they came from.\n const known = new Set(this.itemList.map((i) => i.value));\n this.sourceChecked = new Set(Array.from(this.sourceChecked).filter((v) => known.has(v)));\n this.targetChecked = new Set(Array.from(this.targetChecked).filter((v) => known.has(v)));\n }\n\n /** Move selected items to the target side. */\n @Method()\n async moveSelectedRight() {\n this.moveRight();\n }\n\n /** Move selected items to the source side. */\n @Method()\n async moveSelectedLeft() {\n this.moveLeft();\n }\n\n private get sourceItems(): MdTransferListItem[] {\n return this.itemList.filter((i) => !this.value.includes(i.value));\n }\n\n private get targetItems(): MdTransferListItem[] {\n return this.itemList.filter((i) => this.value.includes(i.value));\n }\n\n private filter(items: MdTransferListItem[], q: string) {\n if (!q) return items;\n const needle = q.trim().toLowerCase();\n return items.filter(\n (i) =>\n i.label.toLowerCase().includes(needle) ||\n (i.description?.toLowerCase().includes(needle) ?? false),\n );\n }\n\n private getVisible(side: 'source' | 'target'): MdTransferListItem[] {\n return side === 'source'\n ? this.filter(this.sourceItems, this.sourceQuery)\n : this.filter(this.targetItems, this.targetQuery);\n }\n\n private getEligibleChecked(side: 'source' | 'target'): string[] {\n const visible = new Set(\n this.getVisible(side).filter((i) => !i.disabled).map((i) => i.value),\n );\n const set = side === 'source' ? this.sourceChecked : this.targetChecked;\n return Array.from(set).filter((v) => visible.has(v));\n }\n\n private commit(next: string[], direction: 'left' | 'right', moved: string[]) {\n this.value = next;\n this.mdChange.emit(next);\n this.mdMove.emit({ direction, moved, target: next });\n }\n\n private moveRight = () => {\n if (this.disabled) return;\n const moved = this.getEligibleChecked('source');\n if (moved.length === 0) return;\n const next = [...this.value, ...moved];\n this.sourceChecked = new Set();\n this.commit(next, 'right', moved);\n };\n\n private moveLeft = () => {\n if (this.disabled) return;\n const moved = this.getEligibleChecked('target');\n if (moved.length === 0) return;\n const next = this.value.filter((v) => !moved.includes(v));\n this.targetChecked = new Set();\n this.commit(next, 'left', moved);\n };\n\n private moveAllRight = () => {\n if (this.disabled) return;\n const moved = this.sourceItems.filter((i) => !i.disabled).map((i) => i.value);\n if (moved.length === 0) return;\n const next = [...this.value, ...moved];\n this.sourceChecked = new Set();\n this.commit(next, 'right', moved);\n };\n\n private moveAllLeft = () => {\n if (this.disabled) return;\n const moved = this.targetItems.filter((i) => !i.disabled).map((i) => i.value);\n if (moved.length === 0) return;\n const next = this.value.filter((v) => !moved.includes(v));\n this.targetChecked = new Set();\n this.commit(next, 'left', moved);\n };\n\n private toggleItem = (side: 'source' | 'target', val: string) => {\n if (this.disabled) return;\n const item = this.itemList.find((i) => i.value === val);\n if (item?.disabled) return;\n const set = new Set(side === 'source' ? this.sourceChecked : this.targetChecked);\n if (set.has(val)) set.delete(val);\n else set.add(val);\n if (side === 'source') this.sourceChecked = set;\n else this.targetChecked = set;\n };\n\n private toggleSelectAll = (side: 'source' | 'target') => () => {\n if (this.disabled) return;\n const visible = this.getVisible(side).filter((i) => !i.disabled);\n const set = side === 'source' ? this.sourceChecked : this.targetChecked;\n const allChecked = visible.length > 0 && visible.every((i) => set.has(i.value));\n const next = new Set(set);\n if (allChecked) {\n visible.forEach((i) => next.delete(i.value));\n } else {\n visible.forEach((i) => next.add(i.value));\n }\n if (side === 'source') this.sourceChecked = next;\n else this.targetChecked = next;\n };\n\n private renderHeader(side: 'source' | 'target') {\n const title = side === 'source' ? this.sourceTitle : this.targetTitle;\n const visible = this.getVisible(side);\n const eligibleVisible = visible.filter((i) => !i.disabled);\n const set = side === 'source' ? this.sourceChecked : this.targetChecked;\n const numChecked = eligibleVisible.filter((i) => set.has(i.value)).length;\n const allChecked = eligibleVisible.length > 0 && numChecked === eligibleVisible.length;\n const someChecked = numChecked > 0 && !allChecked;\n\n return (\n // A <div>, not <header>: two <header>s at the top level of the shadow\n // root read as duplicate `banner` landmarks (axe landmark-unique).\n <div class=\"md-transfer-list__header\" part=\"header\">\n {this.showSelectAll && (\n <md-checkbox\n class=\"md-transfer-list__select-all\"\n checked={allChecked}\n indeterminate={someChecked}\n disabled={this.disabled || eligibleVisible.length === 0}\n onMdChange={this.toggleSelectAll(side)}\n aria-label={`Select all ${title}`}\n />\n )}\n <div class=\"md-transfer-list__header-title\" part=\"header-title\">\n <span class=\"md-transfer-list__title\">{title}</span>\n <span class=\"md-transfer-list__count\" part=\"count\">\n {this.countTemplate\n .replace('{checked}', String(numChecked))\n .replace('{total}', String(eligibleVisible.length))}\n </span>\n </div>\n </div>\n );\n }\n\n private renderSearch(side: 'source' | 'target') {\n if (!this.searchable) return null;\n const placeholder = side === 'source' ? this.sourceSearchPlaceholder : this.targetSearchPlaceholder;\n const value = side === 'source' ? this.sourceQuery : this.targetQuery;\n return (\n <md-text-field\n class=\"md-transfer-list__search\"\n part=\"search\"\n variant=\"outlined\"\n density={this.density}\n label={placeholder}\n value={value}\n clearable=\"internal\"\n disabled={this.disabled}\n onMdInput={(e: CustomEvent<string>) => {\n if (side === 'source') this.sourceQuery = e.detail ?? '';\n else this.targetQuery = e.detail ?? '';\n }}\n >\n {this.searchIcon && (\n <span slot=\"leading-icon\" class=\"material-symbols-outlined\" aria-hidden=\"true\">\n {this.searchIcon}\n </span>\n )}\n </md-text-field>\n );\n }\n\n private renderList(side: 'source' | 'target') {\n const visible = this.getVisible(side);\n const set = side === 'source' ? this.sourceChecked : this.targetChecked;\n const title = side === 'source' ? this.sourceTitle : this.targetTitle;\n\n if (visible.length === 0) {\n return (\n <div class=\"md-transfer-list__empty\" role=\"status\" part=\"empty\">\n {this.emptyIcon && (\n <span\n class=\"md-transfer-list__empty-icon material-symbols-outlined\"\n part=\"empty-icon\"\n aria-hidden=\"true\"\n >\n {this.emptyIcon}\n </span>\n )}\n {this.emptyText}\n </div>\n );\n }\n\n return (\n <ul\n class=\"md-transfer-list__list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n aria-label={title}\n // Keep the scroll region keyboard-reachable when every option is\n // tabindex=-1 (disabled control) — axe scrollable-region-focusable.\n tabindex={this.disabled ? '0' : undefined}\n part=\"list\"\n >\n {visible.map((item) => {\n const isChecked = set.has(item.value);\n return (\n <li\n class={{\n 'md-transfer-list__item': true,\n 'md-transfer-list__item--checked': isChecked,\n 'md-transfer-list__item--disabled': !!item.disabled,\n }}\n role=\"option\"\n aria-selected={String(isChecked)}\n aria-disabled={item.disabled ? 'true' : 'false'}\n key={item.value}\n onClick={() => this.toggleItem(side, item.value)}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n this.toggleItem(side, item.value);\n }\n }}\n tabindex={item.disabled || this.disabled ? '-1' : '0'}\n part=\"item\"\n >\n <md-ripple disabled={item.disabled || this.disabled}></md-ripple>\n {/* Decorative: the row IS the interactive option (click/Space on\n the li toggles), so a focusable checkbox inside it would be a\n nested interactive control. `inert` drops it from focus, AT,\n and hit-testing — clicks fall through to the row. */}\n <md-checkbox\n checked={isChecked}\n disabled={item.disabled || this.disabled}\n inert\n aria-hidden=\"true\"\n />\n <div class=\"md-transfer-list__labels\">\n <span class=\"md-transfer-list__label\">{item.label}</span>\n {item.description && (\n <span class=\"md-transfer-list__description\">{item.description}</span>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n );\n }\n\n private renderColumn(side: 'source' | 'target') {\n return (\n <div class=\"md-transfer-list__column\" part={`column column-${side}`}>\n {this.renderHeader(side)}\n {this.renderSearch(side)}\n {this.renderList(side)}\n </div>\n );\n }\n\n private renderControls() {\n const sourceCount = this.getEligibleChecked('source').length;\n const targetCount = this.getEligibleChecked('target').length;\n const sourceAvailable = this.sourceItems.some((i) => !i.disabled);\n const targetAvailable = this.targetItems.some((i) => !i.disabled);\n return (\n <div class=\"md-transfer-list__controls\" part=\"controls\">\n {/* Icons ride the `icon` prop — md-icon-button has no named \"icon\"\n slot (the old slotted spans never projected → empty buttons). */}\n {!this.singleStepOnly && (\n <md-icon-button\n variant=\"tonal\"\n icon={this.moveAllRightIcon}\n disabled={this.disabled || !sourceAvailable}\n aria-label={this.moveAllRightLabel}\n onClick={this.moveAllRight}\n ></md-icon-button>\n )}\n <md-icon-button\n variant=\"filled\"\n icon={this.moveRightIcon}\n disabled={this.disabled || sourceCount === 0}\n aria-label={this.moveRightLabel}\n onClick={this.moveRight}\n ></md-icon-button>\n <md-icon-button\n variant=\"filled\"\n icon={this.moveLeftIcon}\n disabled={this.disabled || targetCount === 0}\n aria-label={this.moveLeftLabel}\n onClick={this.moveLeft}\n ></md-icon-button>\n {!this.singleStepOnly && (\n <md-icon-button\n variant=\"tonal\"\n icon={this.moveAllLeftIcon}\n disabled={this.disabled || !targetAvailable}\n aria-label={this.moveAllLeftLabel}\n onClick={this.moveAllLeft}\n ></md-icon-button>\n )}\n </div>\n );\n }\n\n render() {\n return (\n <Host\n class={{\n 'md-transfer-list': true,\n 'md-transfer-list--disabled': this.disabled,\n }}\n role=\"group\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n >\n {this.renderColumn('source')}\n {this.renderControls()}\n {this.renderColumn('target')}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as t,H as o,c as s,h as e,d as a,t as n}from"./p-MWBNn6Lj.js";import{t as r}from"./p-DYBUr7K_.js";import{s as i,a as d}from"./p-BdEoSBtL.js";import{d as l}from"./p-BwXpiUsu.js";import{d as m}from"./p-stybaFzj.js";const c=()=>`:host{--_container-color:var(--md-button-container-color, transparent);--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary);--_container-elevation:var(--md-sys-elevation-0, none);--_icon-size:var(--md-button-icon-size, 18px);--_width:var(--md-button-width, auto);--_min-width:var( --md-button-min-width, max(40px, calc(var(--_size-min-width, 48px) + var(--md-sys-density-scale, 0) * 4px)) );--_max-width:var(--md-button-max-width, none);--_height:var(--md-button-height, auto);--_min-height:var( --md-button-min-height, max(24px, calc(var(--_size-min-height, 32px) + var(--md-sys-density-scale, 0) * 4px)) );display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:pointer;user-select:none;text-decoration:none;border:none;outline:3px solid transparent;outline-offset:2px;box-sizing:border-box;inline-size:var(--_width);block-size:var(--_height);min-inline-size:var(--_min-width);min-block-size:var(--_min-height);max-inline-size:var(--_max-width);background-color:var(--_container-color);color:var(--_label-color);box-shadow:var(--_container-elevation);--_shape-round:20px;transition:box-shadow var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), background-color var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), border-color var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), border-radius var(--md-sys-motion-duration-medium4, 400ms) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(0.05, 0.7, 0.1, 1)), color var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));-webkit-tap-highlight-color:transparent;vertical-align:middle}:host(.md-button--xs){--_icon-size:var(--md-button-icon-size, max(10px, calc(20px + var(--md-sys-density-scale, 0) * 2.5px)));--_shape-round:16px;--_size-min-height:32px;--_size-min-width:48px;padding:0 max(6px, calc(12px + var(--md-sys-density-scale, 0) * 0.75px));gap:max(2px, calc(4px + var(--md-sys-density-scale, 0) * 0.5px));font-family:var(--md-sys-typescale-label-medium-font-family, Roboto, sans-serif);font-size:max(10px, calc(12px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-label-medium-font-weight, 500);letter-spacing:var(--md-sys-typescale-label-medium-letter-spacing, 0.5px);line-height:max(14px, calc(16px + var(--md-sys-density-scale, 0) * 0.5px))}:host(.md-button--sm){--_icon-size:var(--md-button-icon-size, max(10px, calc(20px + var(--md-sys-density-scale, 0) * 2.5px)));--_shape-round:20px;--_size-min-height:40px;--_size-min-width:58px;padding:0 max(8px, calc(16px + var(--md-sys-density-scale, 0) * 1px));gap:max(4px, calc(8px + var(--md-sys-density-scale, 0) * 1px));font-family:var(--md-sys-typescale-label-large-font-family, Roboto, sans-serif);font-size:max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-label-large-font-weight, 500);letter-spacing:var(--md-sys-typescale-label-large-letter-spacing, 0.1px);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px))}:host(.md-button--md){--_icon-size:var(--md-button-icon-size, max(12px, calc(24px + var(--md-sys-density-scale, 0) * 3px)));--_shape-round:28px;--_size-min-height:56px;--_size-min-width:72px;padding:0 max(12px, calc(24px + var(--md-sys-density-scale, 0) * 1.5px));gap:max(4px, calc(8px + var(--md-sys-density-scale, 0) * 1px));font-family:var(--md-sys-typescale-title-small-font-family, Roboto, sans-serif);font-size:max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-title-small-font-weight, 500);letter-spacing:var(--md-sys-typescale-title-small-letter-spacing, 0.1px);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px))}:host(.md-button--lg){--_icon-size:var(--md-button-icon-size, max(16px, calc(32px + var(--md-sys-density-scale, 0) * 4px)));--_shape-round:48px;--_size-min-height:96px;--_size-min-width:88px;padding:0 max(24px, calc(48px + var(--md-sys-density-scale, 0) * 3px));gap:max(6px, calc(12px + var(--md-sys-density-scale, 0) * 1.5px));font-family:var(--md-sys-typescale-title-medium-font-family, Roboto, sans-serif);font-size:max(13px, calc(16px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-title-medium-font-weight, 500);letter-spacing:var(--md-sys-typescale-title-medium-letter-spacing, 0.15px);line-height:max(18px, calc(24px + var(--md-sys-density-scale, 0) * 1px))}:host(.md-button--xl){--_icon-size:var(--md-button-icon-size, max(20px, calc(40px + var(--md-sys-density-scale, 0) * 5px)));--_shape-round:68px;--_size-min-height:136px;--_size-min-width:120px;padding:0 max(32px, calc(64px + var(--md-sys-density-scale, 0) * 4px));gap:max(8px, calc(16px + var(--md-sys-density-scale, 0) * 2px));font-family:var(--md-sys-typescale-headline-small-font-family, Roboto, sans-serif);font-size:max(18px, calc(24px + var(--md-sys-density-scale, 0) * 1px));font-weight:var(--md-sys-typescale-headline-small-font-weight, 400);letter-spacing:var(--md-sys-typescale-headline-small-letter-spacing, 0px);line-height:max(24px, calc(32px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--full-width){display:flex;--_width:var(--md-button-width, 100%)}:host(.md-button--round){--_shape-rest:var(--md-button-container-shape, var(--_shape-round));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--xs){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-small, 8px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--sm){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-medium, 12px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--md){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-medium, 12px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--lg){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-large, 16px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--xl){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-extra-large, 28px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--xs){--_morph-to:var(--md-sys-shape-corner-small, 8px)}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--sm){--_morph-to:var(--md-sys-shape-corner-medium, 12px)}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--md){--_morph-to:var(--md-sys-shape-corner-medium, 12px)}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--lg){--_morph-to:var(--md-sys-shape-corner-large, 16px)}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--xl){--_morph-to:var(--md-sys-shape-corner-extra-large, 28px)}:host(.md-button--shape-morph.md-button--square.md-button--selected){--_morph-to:var(--md-button-container-shape, var(--_shape-round))}:host(.md-button--pressed.md-button--xs){--_morph-to:var(--md-sys-shape-corner-extra-small, 4px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--pressed.md-button--sm){--_morph-to:var(--md-sys-shape-corner-small, 8px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--pressed.md-button--md){--_morph-to:var(--md-sys-shape-corner-small, 8px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--pressed.md-button--lg){--_morph-to:var(--md-sys-shape-corner-medium, 12px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--pressed.md-button--xl){--_morph-to:var(--md-sys-shape-corner-large, 16px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--connected-left.md-button--xs),:host(.md-button--connected-right.md-button--xs){--_c-inner:4px}:host(.md-button--connected-left.md-button--sm),:host(.md-button--connected-right.md-button--sm){--_c-inner:8px}:host(.md-button--connected-left.md-button--md),:host(.md-button--connected-right.md-button--md){--_c-inner:8px}:host(.md-button--connected-left.md-button--lg),:host(.md-button--connected-right.md-button--lg){--_c-inner:16px}:host(.md-button--connected-left.md-button--xl),:host(.md-button--connected-right.md-button--xl){--_c-inner:20px}:host(.md-button--connected-left.md-button--connected-right){border-radius:var(--_c-inner)}:host(.md-button--round.md-button--connected-right:not(.md-button--connected-left)){border-start-start-radius:var(--_shape-round);border-end-start-radius:var(--_shape-round);border-start-end-radius:var(--_c-inner);border-end-end-radius:var(--_c-inner)}:host(.md-button--round.md-button--connected-left:not(.md-button--connected-right)){border-start-start-radius:var(--_c-inner);border-end-start-radius:var(--_c-inner);border-start-end-radius:var(--_shape-round);border-end-end-radius:var(--_shape-round)}:host(.md-button--square.md-button--connected-right:not(.md-button--connected-left)),:host(.md-button--square.md-button--connected-left:not(.md-button--connected-right)){border-radius:var(--_c-inner)}:host(.md-button--filled){--_container-color:var(--md-button-container-color, var(--md-sys-color-primary));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-primary));--_state-layer-color:var(--md-sys-color-on-primary)}:host(.md-button--filled:hover){--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--filled:active){--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--filled:focus-visible){--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--outlined){--_container-color:var(--md-button-container-color, transparent);--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary);border:var(--md-button-outline-width, 1px) solid var(--md-button-outline-color, var(--md-sys-color-outline))}:host(.md-button--outlined.md-button--xs){padding:0 max(3px, calc(11px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--outlined.md-button--sm){padding:0 max(7px, calc(23px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--outlined.md-button--md){padding:0 max(9px, calc(27px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--outlined.md-button--lg){padding:0 max(10px, calc(31px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--outlined.md-button--xl){padding:0 max(15px, calc(47px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--outlined:hover:not(.md-button--disabled)){border-color:var(--md-button-outline-color, var(--md-sys-color-primary))}:host(.md-button--outlined:focus-visible){border-color:var(--md-button-outline-color, var(--md-sys-color-primary))}:host(.md-button--text){--_container-color:var(--md-button-container-color, transparent);--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary)}:host(.md-button--text.md-button--xs){padding:0 max(3px, calc(8px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--text.md-button--sm){padding:0 max(4px, calc(12px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--text.md-button--md){padding:0 max(5px, calc(16px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--text.md-button--lg){padding:0 max(6px, calc(20px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--text.md-button--xl){padding:0 max(10px, calc(32px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--elevated){--_container-color:var(--md-button-container-color, var(--md-sys-color-surface-container-low));--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary);--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--elevated:hover){--_container-elevation:var(--md-sys-elevation-2)}:host(.md-button--elevated:focus-visible){--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--elevated:active){--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--tonal){--_container-color:var(--md-button-container-color, var(--md-sys-color-secondary-container));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-secondary-container));--_state-layer-color:var(--md-sys-color-on-secondary-container)}:host(.md-button--tonal:hover){--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--tonal:focus-visible){--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--tonal:active){--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--filled.md-button--toggle:not(.md-button--selected):not(.md-button--disabled)){--_container-color:var(--md-button-container-color, var(--md-sys-color-surface-container-highest, #E6E0E9));--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary)}:host(.md-button--tonal.md-button--toggle:not(.md-button--selected):not(.md-button--disabled)){--_container-color:var(--md-button-container-color, var(--md-sys-color-surface-container-highest, #E6E0E9));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-surface-variant, #49454F));--_state-layer-color:var(--md-sys-color-on-surface-variant, #49454F)}:host(.md-button--outlined.md-button--toggle.md-button--selected:not(.md-button--disabled)){--_container-color:var(--md-button-container-color, var(--md-sys-color-secondary-container, #E8DEF8));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-secondary-container, #1E192B));--_state-layer-color:var(--md-sys-color-on-secondary-container, #1E192B);border-color:transparent}:host(.md-button--elevated.md-button--toggle:not(.md-button--selected):not(.md-button--disabled)){--_container-color:var(--md-button-container-color, var(--md-sys-color-surface-container-highest, #E6E0E9));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-surface-variant, #49454F));--_state-layer-color:var(--md-sys-color-on-surface-variant, #49454F);--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--text.md-button--toggle:not(.md-button--selected):not(.md-button--disabled)){--_label-color:var(--md-button-label-color, var(--md-sys-color-on-surface-variant, #49454F));--_state-layer-color:var(--md-sys-color-on-surface-variant, #49454F)}.md-button__state-layer{position:absolute;inset:0;border-radius:inherit;background-color:var(--_state-layer-color);opacity:0;transition:opacity var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));pointer-events:none}:host(:hover) .md-button__state-layer{opacity:var(--md-sys-state-hover-state-layer-opacity, 0.08)}:host(:active:not(.md-button--disabled)) .md-button__state-layer{opacity:var(--md-sys-state-pressed-state-layer-opacity, 0.12);transition-duration:var(--md-sys-motion-duration-short1, 50ms);transition-timing-function:var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(0.05, 0.7, 0.1, 1))}:host(:focus-visible) .md-button__state-layer{opacity:var(--md-sys-state-focus-state-layer-opacity, 0.12)}:host(:focus-visible){outline-color:var(--md-sys-color-secondary);z-index:1}:host(.md-button--disabled){cursor:default;pointer-events:none;--_container-elevation:var(--md-sys-elevation-0, none) !important;transition:none}:host([soft-disabled]){cursor:default;pointer-events:auto}:host([soft-disabled]) .md-button__state-layer{display:none}:host(.md-button--filled.md-button--disabled),:host(.md-button--tonal.md-button--disabled){--_container-color:color-mix(in srgb, var(--md-sys-color-on-surface) calc(var(--md-sys-state-disabled-container-opacity, 0.12) * 100%), transparent)}:host(.md-button--elevated.md-button--disabled){--_container-color:color-mix(in srgb, var(--md-sys-color-on-surface) calc(var(--md-sys-state-disabled-container-opacity, 0.12) * 100%), transparent);--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--disabled){--_label-color:color-mix(in srgb, var(--md-sys-color-on-surface) calc(var(--md-sys-state-disabled-content-opacity, 0.38) * 100%), transparent)}:host(.md-button--outlined.md-button--disabled){--_container-color:transparent;border-color:color-mix(in srgb, var(--md-sys-color-on-surface) calc(var(--md-sys-state-disabled-container-opacity, 0.12) * 100%), transparent)}:host(.md-button--text.md-button--disabled){--_container-color:transparent}:host(.md-button--disabled:hover) .md-button__state-layer,:host(.md-button--disabled:active) .md-button__state-layer,:host(.md-button--disabled:focus-visible) .md-button__state-layer{opacity:0}.md-button__icon,.md-button__trailing-icon{color:var(--md-button-icon-color, inherit);font-size:var(--_icon-size, 18px);width:var(--_icon-size, 18px);height:var(--_icon-size, 18px);display:flex;align-items:center;justify-content:center;flex-shrink:0}slot[name="leading-icon"],slot[name="trailing-icon"]{display:contents}::slotted([slot="leading-icon"]),::slotted([slot="trailing-icon"]){color:var(--md-button-icon-color, inherit);width:var(--_icon-size, 18px);height:var(--_icon-size, 18px);flex-shrink:0}.md-button__trailing-icon,::slotted([slot="trailing-icon"]){transition:transform var(--md-sys-motion-duration-short2, 150ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host([aria-expanded="true"]:not([suppress-expand-icon-flip])) .md-button__trailing-icon,:host([aria-expanded="true"]:not([suppress-expand-icon-flip])) ::slotted([slot="trailing-icon"]){transform:rotate(180deg)}@media (prefers-reduced-motion: reduce){:host{transition:none}.md-button__state-layer{transition:none}.md-button__trailing-icon,::slotted([slot="trailing-icon"]){transition:none}}.md-button__label{display:flex;align-items:center;white-space:nowrap}.md-button__loading{--_loading-size:var(--md-button-loading-size, max(10px, calc(var(--_icon-size, 18px) * 0.7)));--md-loading-indicator-size:var(--_loading-size);--md-loading-indicator-shape-size:var(--_loading-size);--md-loading-indicator-color:currentColor;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.md-button__loading ::slotted(*){flex-shrink:0}.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, 18px);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}:host([mirror-icon][dir="rtl"]) .md-button__icon,:host([mirror-icon][dir="rtl"]) .md-button__trailing-icon,:host([mirror-icon][dir="rtl"]) ::slotted([slot="leading-icon"]),:host([mirror-icon][dir="rtl"]) ::slotted([slot="trailing-icon"]){transform:scaleX(-1)}:host-context([dir="rtl"]):host([mirror-icon]) .md-button__icon,:host-context([dir="rtl"]):host([mirror-icon]) .md-button__trailing-icon,:host-context([dir="rtl"]):host([mirror-icon]) ::slotted([slot="leading-icon"]),:host-context([dir="rtl"]):host([mirror-icon]) ::slotted([slot="trailing-icon"]){transform:scaleX(-1)}: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}`;const h=t(class t extends o{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.mdClick=s(this,"mdClick",7);this.mdChange=s(this,"mdChange",7);this.internals=this.attachInternals();this.type="button";this.variant="filled";this.size="sm";this.shape="round";this.disabled=false;this.softDisabled=false;this.ripple=true;this.loading=false;this.icon="";this.trailingIcon="";this.href="";this.target="_self";this.toggle=false;this.selected=false;this.shapeMorph=true;this.mirrorIcon=false;this.suppressExpandIconFlip=false;this.fullWidth=false;this.connectedLeft=false;this.connectedRight=false;this.value="";this.groupTabindex=null;this.roleOverride="";this.density=0;this.hasSlottedLeadingIcon=false;this.hasSlottedTrailingIcon=false;this.pressed=false;this.handleClick=t=>{if(this.isDisabled){t.preventDefault();return}const o=this.toggle?!this.selected:this.selected;const s=this.mdClick.emit({value:this.value,toggle:this.toggle,selected:o,href:this.href,target:this.target,originalEvent:t});if(s.defaultPrevented){t.preventDefault();return}if(this.toggle&&o!==this.selected){this.selected=o;this.mdChange.emit({selected:o,value:this.value})}if(this.href){const t=i(this.href);if(t)window.open(t,this.target,d);return}if(this.type==="submit"){this.internals.form?.requestSubmit()}else if(this.type==="reset"){this.internals.form?.reset()}};this.handleKeyDown=t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();if(!this.isDisabled){this.pressed=true;r(this.el);this.el.click();setTimeout((()=>{this.pressed=false}),150)}}};this.handlePointerDown=()=>{if(!this.isDisabled)this.pressed=true};this.handlePointerUp=()=>{this.pressed=false}}get isDisabled(){return this.disabled||this.softDisabled||this.loading}componentDidLoad(){const t=this.el.shadowRoot;if(!t)return;const o=t.querySelector('slot[name="leading-icon"]');const s=t.querySelector('slot[name="trailing-icon"]');o?.addEventListener("slotchange",(()=>{this.hasSlottedLeadingIcon=o.assignedElements().length>0}));s?.addEventListener("slotchange",(()=>{this.hasSlottedTrailingIcon=s.assignedElements().length>0}))}render(){const t=this.isDisabled;const o=!!this.icon;const s=!!this.trailingIcon;return e(a,{key:"6b090f8bb24dabe25b5cbcf0ca6b4e6b3c667a31",class:{"md-button":true,[`md-button--${this.variant}`]:true,[`md-button--${this.size}`]:true,[`md-button--${this.shape}`]:true,"md-button--with-leading-icon":o||this.hasSlottedLeadingIcon,"md-button--with-trailing-icon":s||this.hasSlottedTrailingIcon,"md-button--disabled":this.disabled||this.softDisabled,"md-button--loading":this.loading,"md-button--toggle":this.toggle,"md-button--selected":this.selected,"md-button--shape-morph":this.shapeMorph,"md-button--pressed":this.shapeMorph&&this.pressed,"md-button--connected-left":this.connectedLeft,"md-button--connected-right":this.connectedRight,"md-button--full-width":this.fullWidth},role:this.roleOverride||"button","aria-disabled":t?"true":"false","aria-pressed":this.toggle?String(this.selected):undefined,tabindex:this.disabled?"-1":this.groupTabindex!==null?String(this.groupTabindex):"0",onClick:this.handleClick,onKeyDown:this.handleKeyDown,onPointerDown:this.handlePointerDown,onPointerUp:this.handlePointerUp,onPointerLeave:this.handlePointerUp,onPointerCancel:this.handlePointerUp},this.ripple&&e("md-ripple",{key:"5f4da04adad6d58814189fa629634d78f9b922d6",disabled:t}),e("span",{key:"136b4b9fdc384e87e628a263fd727381212ca39a",class:"md-button__state-layer",part:"state-layer","aria-hidden":"true"}),e("slot",{key:"de4b9b8078984d220f86c3ab984c9a6cf998e987",name:"leading-icon"},o&&e("span",{key:"fef73ccdb6e25406b090dc6778d1363dc5ac877c",class:"md-button__icon material-symbols-outlined",part:"icon"},this.icon)),e("span",{key:"b1b77be2bec9e05603f26421ec398c4d574f049d",class:"md-button__label",part:"label"},e("slot",{key:"3e55a0f0ffb89e2039ab6ce3838d5a804b5996dc"})),e("slot",{key:"8bb568db616e8c0892d01d948a2dfa76ca1f7241",name:"trailing-icon"},s&&e("span",{key:"36bafed7a8cf957bda74d8bb79372d1e893bc7f7",class:"md-button__trailing-icon material-symbols-outlined",part:"trailing-icon"},this.trailingIcon)),this.loading&&e("span",{key:"775c639e462c951d75ee2662f1a5d4bc151a125e",class:"md-button__loading",part:"loading","aria-hidden":"true"},e("slot",{key:"523db784cd7bf543fdd88ffb82f50a9771bff2fe",name:"loader"},e("md-loading-indicator",{key:"a6aa69ee8671bc181db7b9c13529b69934571243",class:"md-button__loading-default"}))))}static get formAssociated(){return true}get el(){return this}static get style(){return c()}},[321,"md-button",{type:[513],variant:[1],size:[1],shape:[1],disabled:[516],softDisabled:[516,"soft-disabled"],ripple:[4],loading:[4],icon:[1],trailingIcon:[1,"trailing-icon"],href:[1],target:[1],toggle:[4],selected:[1028],shapeMorph:[4,"shape-morph"],mirrorIcon:[516,"mirror-icon"],suppressExpandIconFlip:[516,"suppress-expand-icon-flip"],fullWidth:[516,"full-width"],connectedLeft:[516,"connected-left"],connectedRight:[516,"connected-right"],value:[1],groupTabindex:[1026,"group-tabindex"],roleOverride:[1,"role-override"],density:[514],hasSlottedLeadingIcon:[32],hasSlottedTrailingIcon:[32],pressed:[32]}]);function u(){if(typeof customElements==="undefined"){return}const t=["md-button","md-loading-indicator","md-ripple"];t.forEach((t=>{switch(t){case"md-button":if(!customElements.get(n(t))){customElements.define(n(t),h)}break;case"md-loading-indicator":if(!customElements.get(n(t))){l()}break;case"md-ripple":if(!customElements.get(n(t))){m()}break}}))}u();export{h as M,u as d};
|
|
2
|
-
//# sourceMappingURL=p
|
|
1
|
+
import{p as t,H as o,c as e,h as s,d as a,t as n}from"./p-bSpXNc5J.js";import{t as r}from"./p-DYBUr7K_.js";import{s as i,a as d}from"./p-BdEoSBtL.js";import{d as l}from"./p-CG6FaRlt.js";import{d as m}from"./p-Hm3X1iai.js";const c=()=>`:host{--_container-color:var(--md-button-container-color, transparent);--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary);--_container-elevation:var(--md-sys-elevation-0, none);--_icon-size:var(--md-button-icon-size, 18px);--_width:var(--md-button-width, auto);--_min-width:var( --md-button-min-width, max(40px, calc(var(--_size-min-width, 48px) + var(--md-sys-density-scale, 0) * 4px)) );--_max-width:var(--md-button-max-width, none);--_height:var(--md-button-height, auto);--_min-height:var( --md-button-min-height, max(24px, calc(var(--_size-min-height, 32px) + var(--md-sys-density-scale, 0) * 4px)) );display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:pointer;user-select:none;text-decoration:none;border:none;outline:3px solid transparent;outline-offset:2px;box-sizing:border-box;inline-size:var(--_width);block-size:var(--_height);min-inline-size:var(--_min-width);min-block-size:var(--_min-height);max-inline-size:var(--_max-width);background-color:var(--_container-color);color:var(--_label-color);box-shadow:var(--_container-elevation);--_shape-round:20px;transition:box-shadow var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), background-color var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), border-color var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), border-radius var(--md-sys-motion-duration-medium4, 400ms) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(0.05, 0.7, 0.1, 1)), color var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));-webkit-tap-highlight-color:transparent;vertical-align:middle}:host(.md-button--xs){--_icon-size:var(--md-button-icon-size, max(10px, calc(20px + var(--md-sys-density-scale, 0) * 2.5px)));--_shape-round:16px;--_size-min-height:32px;--_size-min-width:48px;padding:0 max(6px, calc(12px + var(--md-sys-density-scale, 0) * 0.75px));gap:max(2px, calc(4px + var(--md-sys-density-scale, 0) * 0.5px));font-family:var(--md-sys-typescale-label-medium-font-family, Roboto, sans-serif);font-size:max(10px, calc(12px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-label-medium-font-weight, 500);letter-spacing:var(--md-sys-typescale-label-medium-letter-spacing, 0.5px);line-height:max(14px, calc(16px + var(--md-sys-density-scale, 0) * 0.5px))}:host(.md-button--sm){--_icon-size:var(--md-button-icon-size, max(10px, calc(20px + var(--md-sys-density-scale, 0) * 2.5px)));--_shape-round:20px;--_size-min-height:40px;--_size-min-width:58px;padding:0 max(8px, calc(16px + var(--md-sys-density-scale, 0) * 1px));gap:max(4px, calc(8px + var(--md-sys-density-scale, 0) * 1px));font-family:var(--md-sys-typescale-label-large-font-family, Roboto, sans-serif);font-size:max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-label-large-font-weight, 500);letter-spacing:var(--md-sys-typescale-label-large-letter-spacing, 0.1px);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px))}:host(.md-button--md){--_icon-size:var(--md-button-icon-size, max(12px, calc(24px + var(--md-sys-density-scale, 0) * 3px)));--_shape-round:28px;--_size-min-height:56px;--_size-min-width:72px;padding:0 max(12px, calc(24px + var(--md-sys-density-scale, 0) * 1.5px));gap:max(4px, calc(8px + var(--md-sys-density-scale, 0) * 1px));font-family:var(--md-sys-typescale-title-small-font-family, Roboto, sans-serif);font-size:max(12px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-title-small-font-weight, 500);letter-spacing:var(--md-sys-typescale-title-small-letter-spacing, 0.1px);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px))}:host(.md-button--lg){--_icon-size:var(--md-button-icon-size, max(16px, calc(32px + var(--md-sys-density-scale, 0) * 4px)));--_shape-round:48px;--_size-min-height:96px;--_size-min-width:88px;padding:0 max(24px, calc(48px + var(--md-sys-density-scale, 0) * 3px));gap:max(6px, calc(12px + var(--md-sys-density-scale, 0) * 1.5px));font-family:var(--md-sys-typescale-title-medium-font-family, Roboto, sans-serif);font-size:max(13px, calc(16px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-title-medium-font-weight, 500);letter-spacing:var(--md-sys-typescale-title-medium-letter-spacing, 0.15px);line-height:max(18px, calc(24px + var(--md-sys-density-scale, 0) * 1px))}:host(.md-button--xl){--_icon-size:var(--md-button-icon-size, max(20px, calc(40px + var(--md-sys-density-scale, 0) * 5px)));--_shape-round:68px;--_size-min-height:136px;--_size-min-width:120px;padding:0 max(32px, calc(64px + var(--md-sys-density-scale, 0) * 4px));gap:max(8px, calc(16px + var(--md-sys-density-scale, 0) * 2px));font-family:var(--md-sys-typescale-headline-small-font-family, Roboto, sans-serif);font-size:max(18px, calc(24px + var(--md-sys-density-scale, 0) * 1px));font-weight:var(--md-sys-typescale-headline-small-font-weight, 400);letter-spacing:var(--md-sys-typescale-headline-small-letter-spacing, 0px);line-height:max(24px, calc(32px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--full-width){display:flex;--_width:var(--md-button-width, 100%)}:host(.md-button--round){--_shape-rest:var(--md-button-container-shape, var(--_shape-round));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--xs){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-small, 8px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--sm){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-medium, 12px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--md){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-medium, 12px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--lg){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-large, 16px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--square.md-button--xl){--_shape-rest:var(--md-button-container-shape, var(--md-sys-shape-corner-extra-large, 28px));border-radius:calc(var(--_shape-rest) + var(--md-sys-shape-morph-enabled, 1) * (var(--_morph-to, var(--_shape-rest)) - var(--_shape-rest)))}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--xs){--_morph-to:var(--md-sys-shape-corner-small, 8px)}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--sm){--_morph-to:var(--md-sys-shape-corner-medium, 12px)}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--md){--_morph-to:var(--md-sys-shape-corner-medium, 12px)}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--lg){--_morph-to:var(--md-sys-shape-corner-large, 16px)}:host(.md-button--shape-morph.md-button--round.md-button--selected.md-button--xl){--_morph-to:var(--md-sys-shape-corner-extra-large, 28px)}:host(.md-button--shape-morph.md-button--square.md-button--selected){--_morph-to:var(--md-button-container-shape, var(--_shape-round))}:host(.md-button--pressed.md-button--xs){--_morph-to:var(--md-sys-shape-corner-extra-small, 4px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--pressed.md-button--sm){--_morph-to:var(--md-sys-shape-corner-small, 8px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--pressed.md-button--md){--_morph-to:var(--md-sys-shape-corner-small, 8px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--pressed.md-button--lg){--_morph-to:var(--md-sys-shape-corner-medium, 12px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--pressed.md-button--xl){--_morph-to:var(--md-sys-shape-corner-large, 16px);transition-duration:var(--md-sys-motion-duration-short4, 200ms);transition-timing-function:var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host(.md-button--connected-left.md-button--xs),:host(.md-button--connected-right.md-button--xs){--_c-inner:4px}:host(.md-button--connected-left.md-button--sm),:host(.md-button--connected-right.md-button--sm){--_c-inner:8px}:host(.md-button--connected-left.md-button--md),:host(.md-button--connected-right.md-button--md){--_c-inner:8px}:host(.md-button--connected-left.md-button--lg),:host(.md-button--connected-right.md-button--lg){--_c-inner:16px}:host(.md-button--connected-left.md-button--xl),:host(.md-button--connected-right.md-button--xl){--_c-inner:20px}:host(.md-button--connected-left.md-button--connected-right){border-radius:var(--_c-inner)}:host(.md-button--round.md-button--connected-right:not(.md-button--connected-left)){border-start-start-radius:var(--_shape-round);border-end-start-radius:var(--_shape-round);border-start-end-radius:var(--_c-inner);border-end-end-radius:var(--_c-inner)}:host(.md-button--round.md-button--connected-left:not(.md-button--connected-right)){border-start-start-radius:var(--_c-inner);border-end-start-radius:var(--_c-inner);border-start-end-radius:var(--_shape-round);border-end-end-radius:var(--_shape-round)}:host(.md-button--square.md-button--connected-right:not(.md-button--connected-left)),:host(.md-button--square.md-button--connected-left:not(.md-button--connected-right)){border-radius:var(--_c-inner)}:host(.md-button--filled){--_container-color:var(--md-button-container-color, var(--md-sys-color-primary));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-primary));--_state-layer-color:var(--md-sys-color-on-primary)}:host(.md-button--filled:hover){--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--filled:active){--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--filled:focus-visible){--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--outlined){--_container-color:var(--md-button-container-color, transparent);--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary);border:var(--md-button-outline-width, 1px) solid var(--md-button-outline-color, var(--md-sys-color-outline))}:host(.md-button--outlined.md-button--xs){padding:0 max(3px, calc(11px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--outlined.md-button--sm){padding:0 max(7px, calc(23px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--outlined.md-button--md){padding:0 max(9px, calc(27px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--outlined.md-button--lg){padding:0 max(10px, calc(31px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--outlined.md-button--xl){padding:0 max(15px, calc(47px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--outlined:hover:not(.md-button--disabled)){border-color:var(--md-button-outline-color, var(--md-sys-color-primary))}:host(.md-button--outlined:focus-visible){border-color:var(--md-button-outline-color, var(--md-sys-color-primary))}:host(.md-button--text){--_container-color:var(--md-button-container-color, transparent);--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary)}:host(.md-button--text.md-button--xs){padding:0 max(3px, calc(8px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--text.md-button--sm){padding:0 max(4px, calc(12px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--text.md-button--md){padding:0 max(5px, calc(16px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--text.md-button--lg){padding:0 max(6px, calc(20px + var(--md-sys-density-scale, 0) * 4px))}:host(.md-button--text.md-button--xl){padding:0 max(10px, calc(32px + var(--md-sys-density-scale, 0) * 2px))}:host(.md-button--elevated){--_container-color:var(--md-button-container-color, var(--md-sys-color-surface-container-low));--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary);--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--elevated:hover){--_container-elevation:var(--md-sys-elevation-2)}:host(.md-button--elevated:focus-visible){--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--elevated:active){--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--tonal){--_container-color:var(--md-button-container-color, var(--md-sys-color-secondary-container));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-secondary-container));--_state-layer-color:var(--md-sys-color-on-secondary-container)}:host(.md-button--tonal:hover){--_container-elevation:var(--md-sys-elevation-1)}:host(.md-button--tonal:focus-visible){--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--tonal:active){--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--filled.md-button--toggle:not(.md-button--selected):not(.md-button--disabled)){--_container-color:var(--md-button-container-color, var(--md-sys-color-surface-container-highest, #E6E0E9));--_label-color:var(--md-button-label-color, var(--md-sys-color-primary));--_state-layer-color:var(--md-sys-color-primary)}:host(.md-button--tonal.md-button--toggle:not(.md-button--selected):not(.md-button--disabled)){--_container-color:var(--md-button-container-color, var(--md-sys-color-surface-container-highest, #E6E0E9));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-surface-variant, #49454F));--_state-layer-color:var(--md-sys-color-on-surface-variant, #49454F)}:host(.md-button--outlined.md-button--toggle.md-button--selected:not(.md-button--disabled)){--_container-color:var(--md-button-container-color, var(--md-sys-color-secondary-container, #E8DEF8));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-secondary-container, #1E192B));--_state-layer-color:var(--md-sys-color-on-secondary-container, #1E192B);border-color:transparent}:host(.md-button--elevated.md-button--toggle:not(.md-button--selected):not(.md-button--disabled)){--_container-color:var(--md-button-container-color, var(--md-sys-color-surface-container-highest, #E6E0E9));--_label-color:var(--md-button-label-color, var(--md-sys-color-on-surface-variant, #49454F));--_state-layer-color:var(--md-sys-color-on-surface-variant, #49454F);--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--text.md-button--toggle:not(.md-button--selected):not(.md-button--disabled)){--_label-color:var(--md-button-label-color, var(--md-sys-color-on-surface-variant, #49454F));--_state-layer-color:var(--md-sys-color-on-surface-variant, #49454F)}.md-button__state-layer{position:absolute;inset:0;border-radius:inherit;background-color:var(--_state-layer-color);opacity:0;transition:opacity var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));pointer-events:none}:host(:hover) .md-button__state-layer{opacity:var(--md-sys-state-hover-state-layer-opacity, 0.08)}:host(:active:not(.md-button--disabled)) .md-button__state-layer{opacity:var(--md-sys-state-pressed-state-layer-opacity, 0.12);transition-duration:var(--md-sys-motion-duration-short1, 50ms);transition-timing-function:var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(0.05, 0.7, 0.1, 1))}:host(:focus-visible) .md-button__state-layer{opacity:var(--md-sys-state-focus-state-layer-opacity, 0.12)}:host(:focus-visible){outline-color:var(--md-sys-color-secondary);z-index:1}:host(.md-button--disabled){cursor:default;pointer-events:none;--_container-elevation:var(--md-sys-elevation-0, none) !important;transition:none}:host([soft-disabled]){cursor:default;pointer-events:auto}:host([soft-disabled]) .md-button__state-layer{display:none}:host(.md-button--filled.md-button--disabled),:host(.md-button--tonal.md-button--disabled){--_container-color:color-mix(in srgb, var(--md-sys-color-on-surface) calc(var(--md-sys-state-disabled-container-opacity, 0.12) * 100%), transparent)}:host(.md-button--elevated.md-button--disabled){--_container-color:color-mix(in srgb, var(--md-sys-color-on-surface) calc(var(--md-sys-state-disabled-container-opacity, 0.12) * 100%), transparent);--_container-elevation:var(--md-sys-elevation-0, none)}:host(.md-button--disabled){--_label-color:color-mix(in srgb, var(--md-sys-color-on-surface) calc(var(--md-sys-state-disabled-content-opacity, 0.38) * 100%), transparent)}:host(.md-button--outlined.md-button--disabled){--_container-color:transparent;border-color:color-mix(in srgb, var(--md-sys-color-on-surface) calc(var(--md-sys-state-disabled-container-opacity, 0.12) * 100%), transparent)}:host(.md-button--text.md-button--disabled){--_container-color:transparent}:host(.md-button--disabled:hover) .md-button__state-layer,:host(.md-button--disabled:active) .md-button__state-layer,:host(.md-button--disabled:focus-visible) .md-button__state-layer{opacity:0}.md-button__icon,.md-button__trailing-icon{color:var(--md-button-icon-color, inherit);font-size:var(--_icon-size, 18px);width:var(--_icon-size, 18px);height:var(--_icon-size, 18px);display:flex;align-items:center;justify-content:center;flex-shrink:0}slot[name="leading-icon"],slot[name="trailing-icon"]{display:contents}::slotted([slot="leading-icon"]),::slotted([slot="trailing-icon"]){color:var(--md-button-icon-color, inherit);width:var(--_icon-size, 18px);height:var(--_icon-size, 18px);flex-shrink:0}.md-button__trailing-icon,::slotted([slot="trailing-icon"]){transition:transform var(--md-sys-motion-duration-short2, 150ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1))}:host([aria-expanded="true"]:not([suppress-expand-icon-flip])) .md-button__trailing-icon,:host([aria-expanded="true"]:not([suppress-expand-icon-flip])) ::slotted([slot="trailing-icon"]){transform:rotate(180deg)}@media (prefers-reduced-motion: reduce){:host{transition:none}.md-button__state-layer{transition:none}.md-button__trailing-icon,::slotted([slot="trailing-icon"]){transition:none}}.md-button__label{display:flex;align-items:center;white-space:nowrap}.md-button__loading{--_loading-size:var(--md-button-loading-size, max(10px, calc(var(--_icon-size, 18px) * 0.7)));--md-loading-indicator-size:var(--_loading-size);--md-loading-indicator-shape-size:var(--_loading-size);--md-loading-indicator-color:currentColor;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.md-button__loading ::slotted(*){flex-shrink:0}.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, 18px);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}:host([mirror-icon][dir="rtl"]) .md-button__icon,:host([mirror-icon][dir="rtl"]) .md-button__trailing-icon,:host([mirror-icon][dir="rtl"]) ::slotted([slot="leading-icon"]),:host([mirror-icon][dir="rtl"]) ::slotted([slot="trailing-icon"]){transform:scaleX(-1)}:host-context([dir="rtl"]):host([mirror-icon]) .md-button__icon,:host-context([dir="rtl"]):host([mirror-icon]) .md-button__trailing-icon,:host-context([dir="rtl"]):host([mirror-icon]) ::slotted([slot="leading-icon"]),:host-context([dir="rtl"]):host([mirror-icon]) ::slotted([slot="trailing-icon"]){transform:scaleX(-1)}: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}`;const h=t(class t extends o{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.mdClick=e(this,"mdClick",7);this.mdChange=e(this,"mdChange",7);this.internals=this.attachInternals();this.type="button";this.variant="filled";this.size="sm";this.shape="round";this.disabled=false;this.softDisabled=false;this.ripple=true;this.loading=false;this.icon="";this.trailingIcon="";this.href="";this.target="_self";this.toggle=false;this.selected=false;this.shapeMorph=true;this.mirrorIcon=false;this.suppressExpandIconFlip=false;this.fullWidth=false;this.connectedLeft=false;this.connectedRight=false;this.value="";this.groupTabindex=null;this.roleOverride="";this.density=0;this.hasSlottedLeadingIcon=false;this.hasSlottedTrailingIcon=false;this.pressed=false;this.handleClick=t=>{if(this.isDisabled){t.preventDefault();return}const o=this.toggle?!this.selected:this.selected;const e=this.mdClick.emit({value:this.value,toggle:this.toggle,selected:o,href:this.href,target:this.target,originalEvent:t});if(e.defaultPrevented){t.preventDefault();return}if(this.toggle&&o!==this.selected){this.selected=o;this.mdChange.emit({selected:o,value:this.value})}if(this.href){const t=i(this.href);if(t)window.open(t,this.target,d);return}if(this.type==="submit"){this.internals.form?.requestSubmit()}else if(this.type==="reset"){this.internals.form?.reset()}};this.handleKeyDown=t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();if(!this.isDisabled){this.pressed=true;r(this.el);this.el.click();setTimeout((()=>{this.pressed=false}),150)}}};this.handlePointerDown=()=>{if(!this.isDisabled)this.pressed=true};this.handlePointerUp=()=>{this.pressed=false}}get isDisabled(){return this.disabled||this.softDisabled||this.loading}componentDidLoad(){const t=this.el.shadowRoot;if(!t)return;const o=t.querySelector('slot[name="leading-icon"]');const e=t.querySelector('slot[name="trailing-icon"]');o?.addEventListener("slotchange",(()=>{this.hasSlottedLeadingIcon=o.assignedElements().length>0}));e?.addEventListener("slotchange",(()=>{this.hasSlottedTrailingIcon=e.assignedElements().length>0}))}render(){const t=this.isDisabled;const o=!!this.icon;const e=!!this.trailingIcon;return s(a,{key:"6b090f8bb24dabe25b5cbcf0ca6b4e6b3c667a31",class:{"md-button":true,[`md-button--${this.variant}`]:true,[`md-button--${this.size}`]:true,[`md-button--${this.shape}`]:true,"md-button--with-leading-icon":o||this.hasSlottedLeadingIcon,"md-button--with-trailing-icon":e||this.hasSlottedTrailingIcon,"md-button--disabled":this.disabled||this.softDisabled,"md-button--loading":this.loading,"md-button--toggle":this.toggle,"md-button--selected":this.selected,"md-button--shape-morph":this.shapeMorph,"md-button--pressed":this.shapeMorph&&this.pressed,"md-button--connected-left":this.connectedLeft,"md-button--connected-right":this.connectedRight,"md-button--full-width":this.fullWidth},role:this.roleOverride||"button","aria-disabled":t?"true":"false","aria-pressed":this.toggle?String(this.selected):undefined,tabindex:this.disabled?"-1":this.groupTabindex!==null?String(this.groupTabindex):"0",onClick:this.handleClick,onKeyDown:this.handleKeyDown,onPointerDown:this.handlePointerDown,onPointerUp:this.handlePointerUp,onPointerLeave:this.handlePointerUp,onPointerCancel:this.handlePointerUp},this.ripple&&s("md-ripple",{key:"5f4da04adad6d58814189fa629634d78f9b922d6",disabled:t}),s("span",{key:"136b4b9fdc384e87e628a263fd727381212ca39a",class:"md-button__state-layer",part:"state-layer","aria-hidden":"true"}),s("slot",{key:"de4b9b8078984d220f86c3ab984c9a6cf998e987",name:"leading-icon"},o&&s("span",{key:"fef73ccdb6e25406b090dc6778d1363dc5ac877c",class:"md-button__icon material-symbols-outlined",part:"icon"},this.icon)),s("span",{key:"b1b77be2bec9e05603f26421ec398c4d574f049d",class:"md-button__label",part:"label"},s("slot",{key:"3e55a0f0ffb89e2039ab6ce3838d5a804b5996dc"})),s("slot",{key:"8bb568db616e8c0892d01d948a2dfa76ca1f7241",name:"trailing-icon"},e&&s("span",{key:"36bafed7a8cf957bda74d8bb79372d1e893bc7f7",class:"md-button__trailing-icon material-symbols-outlined",part:"trailing-icon"},this.trailingIcon)),this.loading&&s("span",{key:"775c639e462c951d75ee2662f1a5d4bc151a125e",class:"md-button__loading",part:"loading","aria-hidden":"true"},s("slot",{key:"523db784cd7bf543fdd88ffb82f50a9771bff2fe",name:"loader"},s("md-loading-indicator",{key:"a6aa69ee8671bc181db7b9c13529b69934571243",class:"md-button__loading-default"}))))}static get formAssociated(){return true}get el(){return this}static get style(){return c()}},[321,"md-button",{type:[513],variant:[1],size:[1],shape:[1],disabled:[516],softDisabled:[516,"soft-disabled"],ripple:[4],loading:[4],icon:[1],trailingIcon:[1,"trailing-icon"],href:[1],target:[1],toggle:[4],selected:[1028],shapeMorph:[4,"shape-morph"],mirrorIcon:[516,"mirror-icon"],suppressExpandIconFlip:[516,"suppress-expand-icon-flip"],fullWidth:[516,"full-width"],connectedLeft:[516,"connected-left"],connectedRight:[516,"connected-right"],value:[1],groupTabindex:[1026,"group-tabindex"],roleOverride:[1,"role-override"],density:[514],hasSlottedLeadingIcon:[32],hasSlottedTrailingIcon:[32],pressed:[32]}]);function u(){if(typeof customElements==="undefined"){return}const t=["md-button","md-loading-indicator","md-ripple"];t.forEach((t=>{switch(t){case"md-button":if(!customElements.get(n(t))){customElements.define(n(t),h)}break;case"md-loading-indicator":if(!customElements.get(n(t))){l()}break;case"md-ripple":if(!customElements.get(n(t))){m()}break}}))}u();export{h as M,u as d};
|
|
2
|
+
//# sourceMappingURL=p--OUYjgKN.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as t,H as s,c as i,h as e,d as o,t as n}from"./p-MWBNn6Lj.js";const r=()=>`:host{display:inline-block;position:relative}.md-tooltip__popup{position:fixed;z-index:var(--md-sys-z-index-tooltip, 1500);pointer-events:none;box-sizing:border-box;width:max-content;opacity:0;visibility:hidden;transform:scale(0.9);transition:opacity var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, ease), transform var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, ease), visibility 0ms linear var(--md-sys-motion-duration-short2, 100ms)}.md-tooltip__popup--visible{opacity:1;visibility:visible;transform:scale(1);pointer-events:auto;transition:opacity var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, ease), transform var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, ease), visibility 0ms linear 0ms}.md-tooltip__popup--plain{--_container-color:var(--md-tooltip-plain-container-color, var(--md-sys-color-inverse-surface, #313033));--_text-color:var(--md-tooltip-plain-text-color, var(--md-sys-color-inverse-on-surface, #F4EFF4));--_shape:var(--md-tooltip-container-shape, var(--md-sys-shape-corner-extra-small, 4px));background-color:var(--_container-color);color:var(--_text-color);border-radius:var(--_shape);padding-block:var(--md-sys-spacing-inset-xs, 4px);padding-inline:var(--md-sys-spacing-inset-sm, 8px);min-block-size:max(20px, calc(24px + var(--md-sys-density-scale, 0) * 1px));max-inline-size:min(var(--md-tooltip-plain-max-inline-size, 280px), calc(100vw - 16px));font-family:var(--md-sys-typescale-body-small-font-family, Roboto, sans-serif);font-size:max(10px, calc(12px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-body-small-font-weight, 400);line-height:max(14px, calc(16px + var(--md-sys-density-scale, 0) * 0.5px));letter-spacing:var(--md-sys-typescale-body-small-letter-spacing, 0.4px);white-space:normal;display:flex;align-items:center}.md-tooltip__text{overflow-wrap:anywhere}.md-tooltip__popup--rich{--_container-color:var(--md-tooltip-rich-container-color, var(--md-sys-color-surface-container, #F3EDF7));--_subhead-color:var(--md-tooltip-rich-subhead-color, var(--md-sys-color-on-surface-variant, #49454F));--_text-color:var(--md-tooltip-rich-text-color, var(--md-sys-color-on-surface-variant, #49454F));--_action-color:var(--md-tooltip-rich-action-color, var(--md-sys-color-primary, #6750A4));--_shape:var(--md-tooltip-rich-container-shape, var(--md-sys-shape-corner-medium, 12px));background-color:var(--_container-color);color:var(--_text-color);border-radius:var(--_shape);padding-block-start:var(--md-sys-spacing-inset-md, 12px);padding-block-end:var(--md-sys-spacing-inset-sm, 8px);padding-inline:var(--md-sys-spacing-inset-lg, 16px);min-inline-size:var(--md-tooltip-rich-min-inline-size, 120px);max-inline-size:min(var(--md-tooltip-rich-max-inline-size, 320px), calc(100vw - 16px));white-space:normal;box-shadow:var(--md-sys-elevation-2, 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.3))}.md-tooltip__subhead{font-family:var(--md-sys-typescale-title-small-font-family, Roboto, sans-serif);font-size:max(11px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-title-small-font-weight, 500);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px));letter-spacing:var(--md-sys-typescale-title-small-letter-spacing, 0.1px);color:var(--_subhead-color);margin-block-end:var(--md-sys-spacing-gap-xs, 4px)}.md-tooltip__supporting-text{font-family:var(--md-sys-typescale-body-medium-font-family, Roboto, sans-serif);font-size:max(11px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-body-medium-font-weight, 400);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px));letter-spacing:var(--md-sys-typescale-body-medium-letter-spacing, 0.25px);color:var(--_text-color)}.md-tooltip__actions{display:flex;gap:var(--md-sys-spacing-gap-sm, 8px);justify-content:flex-end;margin-block-start:var(--md-sys-spacing-gap-md, 12px);color:var(--_action-color)}.md-tooltip__actions--empty{display:none}::slotted([slot="actions"]){color:var(--_action-color)}.md-tooltip__popup--top,.md-tooltip__popup--top-start,.md-tooltip__popup--top-end{transform-origin:bottom center}.md-tooltip__popup--bottom,.md-tooltip__popup--bottom-start,.md-tooltip__popup--bottom-end{transform-origin:top center}.md-tooltip__popup--left,.md-tooltip__popup--left-start,.md-tooltip__popup--left-end{transform-origin:center right}.md-tooltip__popup--right,.md-tooltip__popup--right-start,.md-tooltip__popup--right-end{transform-origin:center left}:host-context([dir="rtl"]) .md-tooltip__actions{justify-content:flex-start}@media (forced-colors: active){.md-tooltip__popup{border:1px solid CanvasText}}@media (prefers-reduced-motion: reduce){.md-tooltip__popup,.md-tooltip__popup--visible{transition:none;transform:none}}: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}`;const a=8;const h=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.mdOpen=i(this,"mdOpen",1);this.mdClose=i(this,"mdClose",1);this.text="";this.subhead="";this.variant="plain";this.position="top";this.autoPosition=true;this.offset=8;this.crossOffset=0;this.open=false;this.showDelay=500;this.hideDelay=200;this.disabled=false;this.density=0;this.isVisible=false;this.resolvedPlacement="top";this.hasSlottedActions=false;this.hasSlottedSubhead=false;this.tooltipId=`md-tooltip-${Math.random().toString(36).slice(2,9)}`;this.scrollListenerBound=false;this.escapeListenerBound=false;this.hostHoverBound=false;this.hasLoaded=false;this.suppressed=false;this.onTriggerSlotChange=()=>{const t=this.triggerSlot?.assignedElements();if(t&&t.length>0)this.bindTrigger(t[0])};this.handleTriggerEnter=()=>this.scheduleShow();this.handleTriggerLeave=()=>{this.suppressed=false;this.scheduleHide()};this.handleTriggerFocus=()=>this.scheduleShow();this.handleTriggerBlur=t=>{if(t.relatedTarget&&this.el.contains(t.relatedTarget))return;this.suppressed=false;this.scheduleHide()};this.handleHostFocusOut=t=>{if(this.variant!=="rich"||!this.isVisible)return;if(t.relatedTarget&&this.el.contains(t.relatedTarget))return;this.scheduleHide()};this.handlePopupEnter=()=>{this.clearTimers()};this.handlePopupLeave=()=>{this.scheduleHide()};this.handleGlobalEscape=t=>{if(t.key!=="Escape"||!this.isVisible)return;t.preventDefault();this.clearTimers();this.suppressed=true;const s=this.getDeepActiveElement();const i=!!s&&(this.el.contains(s)||s===this.triggerEl);this.open=false;if(i&&this.triggerEl)this.triggerEl.focus()};this.lastGeom={at:0,al:0,aw:0,ah:0,pw:0,ph:0,vw:0,vh:0,ex:0,ey:0};this.watchdogFrame=0;this.handleScroll=()=>{if(this.isVisible)this.updatePosition()}}componentWillLoad(){this.syncSlotFlags();if(this.open&&!this.disabled)this.isVisible=true}componentDidLoad(){this.hasLoaded=true;this.setup();if(this.open)this.showTooltip()}connectedCallback(){if(!this.hasLoaded)return;this.setup();if(this.isVisible&&!this.disabled){this.addScrollListener();this.addEscapeListener();this.schedulePositionUpdate();this.startPositionWatchdog()}else if(this.open&&!this.isVisible&&!this.disabled){this.showTooltip()}}setup(){const t=this.el.shadowRoot;if(!t)return;this.triggerSlot=t.querySelector("slot:not([name])")??undefined;this.triggerSlot?.addEventListener("slotchange",this.onTriggerSlotChange);this.el.addEventListener("focusout",this.handleHostFocusOut);this.syncSlotFlags();if(typeof MutationObserver!=="undefined"&&!this.slotObserver){this.slotObserver=new MutationObserver((()=>{this.syncSlotFlags();if(this.triggerEl)this.updateTriggerAria(this.triggerEl)}));this.slotObserver.observe(this.el,{childList:true,subtree:true,characterData:true})}const s=this.triggerSlot?.assignedElements()[0];if(s)this.bindTrigger(s)}syncSlotFlags(){const t=Array.from(this.el.children);this.hasSlottedActions=t.some((t=>t.getAttribute("slot")==="actions"));this.hasSlottedSubhead=t.some((t=>t.getAttribute("slot")==="subhead"))}disconnectedCallback(){this.clearTimers();this.stopPositionWatchdog();this.unbindTrigger();this.removeScrollListener();this.removeEscapeListener();this.el.removeEventListener("focusout",this.handleHostFocusOut);this.triggerSlot?.removeEventListener("slotchange",this.onTriggerSlotChange);this.triggerSlot=undefined;this.slotObserver?.disconnect();this.slotObserver=undefined}onOpenChange(t){if(t){this.showTooltip()}else{this.hideTooltip()}}onDisabledChange(t){if(t){this.clearTimers();if(this.open)this.open=false;this.triggerEl?.removeAttribute("aria-description")}else if(this.triggerEl){this.updateTriggerAria(this.triggerEl)}}onDescriptionChange(){if(this.triggerEl)this.updateTriggerAria(this.triggerEl)}async show(){if(this.disabled)return;this.open=true}async hide(){this.open=false}bindTrigger(t){this.unbindTrigger();this.triggerEl=t;if(this.useHostHover(t)){this.el.addEventListener("mouseenter",this.handleTriggerEnter);this.el.addEventListener("mouseleave",this.handleTriggerLeave);this.hostHoverBound=true}else{t.addEventListener("mouseenter",this.handleTriggerEnter);t.addEventListener("mouseleave",this.handleTriggerLeave)}t.addEventListener("focus",this.handleTriggerFocus);t.addEventListener("blur",this.handleTriggerBlur);this.updateTriggerAria(t)}unbindTrigger(){if(this.hostHoverBound){this.el.removeEventListener("mouseenter",this.handleTriggerEnter);this.el.removeEventListener("mouseleave",this.handleTriggerLeave);this.hostHoverBound=false}else if(this.triggerEl){this.triggerEl.removeEventListener("mouseenter",this.handleTriggerEnter);this.triggerEl.removeEventListener("mouseleave",this.handleTriggerLeave)}if(!this.triggerEl)return;this.triggerEl.removeEventListener("focus",this.handleTriggerFocus);this.triggerEl.removeEventListener("blur",this.handleTriggerBlur);this.triggerEl.removeAttribute("aria-description");this.triggerEl=undefined}useHostHover(t){const s=t.tagName.toLowerCase();if(s==="button"||s==="a"||s==="input"||s==="select"||s==="textarea"){return false}if(t.hasAttribute("tabindex")&&t.tabIndex>=0)return false;if(s.startsWith("md-"))return false;return true}updateTriggerAria(t){if(this.disabled){t.removeAttribute("aria-description");return}const s=this.computeDescription();if(s){t.setAttribute("aria-description",s)}else{t.removeAttribute("aria-description")}}computeDescription(){if(this.text)return this.text;if(this.subhead)return this.subhead;const t=[];for(const s of Array.from(this.el.children)){const i=s.getAttribute("slot");if(i==="subhead"||i==="content"){const i=(s.textContent||"").trim();if(i)t.push(i)}}return t.join(". ")}scheduleShow(){if(this.disabled||this.suppressed)return;this.clearTimers();this.showTimer=setTimeout((()=>{this.open=true}),this.showDelay)}scheduleHide(){this.clearTimers();this.hideTimer=setTimeout((()=>{this.open=false}),this.hideDelay)}getDeepActiveElement(){if(typeof document==="undefined")return null;let t=document.activeElement;while(t&&t.shadowRoot&&t.shadowRoot.activeElement)t=t.shadowRoot.activeElement;return t}addEscapeListener(){if(!this.escapeListenerBound){document.addEventListener("keydown",this.handleGlobalEscape,true);this.escapeListenerBound=true}}removeEscapeListener(){if(this.escapeListenerBound){document.removeEventListener("keydown",this.handleGlobalEscape,true);this.escapeListenerBound=false}}showTooltip(){if(this.disabled)return;if(!this.el.isConnected)return;this.isVisible=true;this.mdOpen.emit();this.addScrollListener();this.addEscapeListener();this.schedulePositionUpdate();this.startPositionWatchdog()}schedulePositionUpdate(t=0){requestAnimationFrame((()=>{const s=this.updatePosition();if(!s&&t<3){this.schedulePositionUpdate(t+1)}}))}startPositionWatchdog(){if(typeof requestAnimationFrame!=="function")return;this.stopPositionWatchdog();const t=()=>{if(!this.isVisible||!this.el.isConnected){this.watchdogFrame=0;return}const s=this.popupEl;if(s&&this.triggerEl){const t=s.offsetWidth;const i=s.offsetHeight;if(t!==0||i!==0){const e=this.getAnchorRect();const o=s.getBoundingClientRect();const n=this.lastGeom;const r=e.top!==n.at||e.left!==n.al||e.width!==n.aw||e.height!==n.ah||t!==n.pw||i!==n.ph||Math.abs(o.top-n.ey)>.5||Math.abs(o.left-n.ex)>.5||window.innerWidth!==n.vw||window.innerHeight!==n.vh;if(r)this.updatePosition()}}this.watchdogFrame=requestAnimationFrame(t)};this.watchdogFrame=requestAnimationFrame(t)}stopPositionWatchdog(){if(this.watchdogFrame&&typeof cancelAnimationFrame==="function"){cancelAnimationFrame(this.watchdogFrame)}this.watchdogFrame=0}hideTooltip(){if(!this.isVisible)return;this.isVisible=false;this.mdClose.emit();this.removeScrollListener();this.removeEscapeListener();this.stopPositionWatchdog()}clearTimers(){if(this.showTimer!=null){clearTimeout(this.showTimer);this.showTimer=undefined}if(this.hideTimer!=null){clearTimeout(this.hideTimer);this.hideTimer=undefined}}addScrollListener(){if(!this.scrollListenerBound){window.addEventListener("scroll",this.handleScroll,{capture:true,passive:true});this.scrollListenerBound=true}}removeScrollListener(){if(this.scrollListenerBound){window.removeEventListener("scroll",this.handleScroll,true);this.scrollListenerBound=false}}updatePosition(){if(!this.popupEl||!this.triggerEl)return false;const t=this.getAnchorRect();const s=this.popupEl.offsetWidth;const i=this.popupEl.offsetHeight;if(s===0&&i===0)return false;let e=this.physicalPlacement(this.position);if(this.autoPosition){e=this.findBestPlacement(t,s,i,e)}const o=this.calcCoords(t.width,t.height,s,i,e);if(e.startsWith("top")||e.startsWith("bottom")){o.left+=this.crossOffset}else{o.top+=this.crossOffset}if(this.autoPosition){const n=e.startsWith("top")||e.startsWith("bottom");const r=a;if(n){const i=t.left+o.left;const e=window.innerWidth-s-r;const n=Math.min(Math.max(i,r),Math.max(r,e));o.left+=n-i}else{const s=t.top+o.top;const e=window.innerHeight-i-r;const n=Math.min(Math.max(s,r),Math.max(r,e));o.top+=n-s}}const n=this.toFixedCoords(t.top+o.top,t.left+o.left);this.popupEl.style.top=`${n.top}px`;this.popupEl.style.left=`${n.left}px`;this.popupEl.style.insetBlockStart="";this.popupEl.style.insetInlineStart="";this.resolvedPlacement=e;this.lastGeom={at:t.top,al:t.left,aw:t.width,ah:t.height,pw:s,ph:i,vw:window.innerWidth,vh:window.innerHeight,ex:t.left+o.left,ey:t.top+o.top};return true}getAnchorRect(){if(this.triggerEl){const t=this.triggerEl.getBoundingClientRect();if(t.width>0||t.height>0)return t}return this.el.getBoundingClientRect()}toFixedCoords(t,s){const i=this.getFixedContainingBlock();if(!i){return{top:t,left:s}}const e=i.getBoundingClientRect();return{top:t-e.top,left:s-e.left}}createsFixedContainingBlock(t){const s=t;if(t.transform&&t.transform!=="none"||t.filter&&t.filter!=="none"||t.perspective&&t.perspective!=="none")return true;if(s.translate&&s.translate!=="none"||s.rotate&&s.rotate!=="none"||s.scale&&s.scale!=="none")return true;if(s.backdropFilter&&s.backdropFilter!=="none")return true;if(/\b(transform|perspective|filter|translate|rotate|scale)\b/.test(t.willChange||""))return true;if(/(layout|paint|strict|content)\b/.test(s.contain||""))return true;if(s.contentVisibility==="auto"||s.contentVisibility==="hidden")return true;if(s.containerType&&/\bsize\b/.test(s.containerType))return true;return false}getFixedContainingBlock(){let t=this.el;while(t){if(this.createsFixedContainingBlock(getComputedStyle(t))){return t}if(t.parentElement){t=t.parentElement}else if(t.parentNode instanceof ShadowRoot){t=t.parentNode.host}else{t=null}}return null}physicalPlacement(t){if(typeof window==="undefined")return t;const s=getComputedStyle(this.el).direction==="rtl";if(!s)return t;const[i,e=""]=[t.split("-")[0],t.split("-").slice(1).join("-")];const o=i==="left"?"right":i==="right"?"left":i;const n=i==="top"||i==="bottom"?e==="start"?"end":e==="end"?"start":e:e;return n?`${o}-${n}`:o}calcCoords(t,s,i,e,o){const n=this.offset;switch(o){case"top":return{top:-(e+n),left:(t-i)/2};case"top-start":return{top:-(e+n),left:0};case"top-end":return{top:-(e+n),left:t-i};case"bottom":return{top:s+n,left:(t-i)/2};case"bottom-start":return{top:s+n,left:0};case"bottom-end":return{top:s+n,left:t-i};case"left":return{top:(s-e)/2,left:-(i+n)};case"left-start":return{top:0,left:-(i+n)};case"left-end":return{top:s-e,left:-(i+n)};case"right":return{top:(s-e)/2,left:t+n};case"right-start":return{top:0,left:t+n};case"right-end":return{top:s-e,left:t+n};default:return{top:-(e+n),left:(t-i)/2}}}fitsMainAxis(t,s,i,e,o,n){const r=n.startsWith("top")||n.startsWith("bottom");if(r){const s=t.top+e;return s>=0&&s+i<=window.innerHeight}const a=t.left+o;return a>=0&&a+s<=window.innerWidth}getOppositePlacement(t){const[s,i]=[t.split("-")[0],t.split("-").slice(1).join("-")];const e={top:"bottom",bottom:"top",left:"right",right:"left"};return i?`${e[s]}-${i}`:e[s]}findBestPlacement(t,s,i,e){const o=e=>{const o=this.calcCoords(t.width,t.height,s,i,e);return this.fitsMainAxis(t,s,i,o.top,o.left,e)};if(o(e))return e;const n=this.getOppositePlacement(e);if(o(n))return n;const r=e.split("-")[1]||"";const a=["top","bottom","right","left"];for(const t of a){const s=r?`${t}-${r}`:t;if(s!==e&&s!==n&&o(s)){return s}}return e}render(){const t=this.variant==="rich";const s=!!this.subhead||this.hasSlottedSubhead;const i=this.hasSlottedActions;return e(o,{key:"18f4e3e81a7f3275e81c1a40859beab41f97104f",class:"md-tooltip-wrapper"},e("slot",{key:"ea0496dbcf3c70aad4cb72dbe3133dc97024ef30"}),e("div",{key:"8ed4c4183860370a72c9c5f14d1b9953acbf03aa",class:{"md-tooltip__popup":true,"md-tooltip__popup--plain":!t,"md-tooltip__popup--rich":t,"md-tooltip__popup--visible":this.isVisible,[`md-tooltip__popup--${this.resolvedPlacement}`]:true},id:this.tooltipId,role:"tooltip",part:"popup","aria-hidden":this.isVisible?"false":"true",ref:t=>this.popupEl=t,onMouseEnter:this.handlePopupEnter,onMouseLeave:this.handlePopupLeave},t?[s&&e("div",{class:"md-tooltip__subhead",part:"subhead",key:"subhead"},e("slot",{name:"subhead"},this.subhead)),e("div",{class:"md-tooltip__supporting-text",part:"supporting-text",key:"text"},e("slot",{name:"content"},this.text)),e("div",{class:{"md-tooltip__actions":true,"md-tooltip__actions--empty":!i},part:"actions",key:"actions"},e("slot",{name:"actions"}))]:e("span",{class:"md-tooltip__text",part:"text"},this.text)))}get el(){return this}static get watchers(){return{open:[{onOpenChange:0}],disabled:[{onDisabledChange:0}],text:[{onDescriptionChange:0}],subhead:[{onDescriptionChange:0}]}}static get style(){return r()}},[257,"md-tooltip",{text:[1],subhead:[1],variant:[513],position:[1],autoPosition:[4,"auto-position"],offset:[2],crossOffset:[2,"cross-offset"],open:[1540],showDelay:[2,"show-delay"],hideDelay:[2,"hide-delay"],disabled:[516],density:[514],isVisible:[32],resolvedPlacement:[32],hasSlottedActions:[32],hasSlottedSubhead:[32],show:[64],hide:[64]},undefined,{open:[{onOpenChange:0}],disabled:[{onDisabledChange:0}],text:[{onDescriptionChange:0}],subhead:[{onDescriptionChange:0}]}]);function l(){if(typeof customElements==="undefined"){return}const t=["md-tooltip"];t.forEach((t=>{switch(t){case"md-tooltip":if(!customElements.get(n(t))){customElements.define(n(t),h)}break}}))}l();export{h as M,l as d};
|
|
2
|
-
//# sourceMappingURL=p
|
|
1
|
+
import{p as t,H as s,c as i,h as e,d as o,t as n}from"./p-bSpXNc5J.js";const r=()=>`:host{display:inline-block;position:relative}.md-tooltip__popup{position:fixed;z-index:var(--md-sys-z-index-tooltip, 1500);pointer-events:none;box-sizing:border-box;width:max-content;opacity:0;visibility:hidden;transform:scale(0.9);transition:opacity var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, ease), transform var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, ease), visibility 0ms linear var(--md-sys-motion-duration-short2, 100ms)}.md-tooltip__popup--visible{opacity:1;visibility:visible;transform:scale(1);pointer-events:auto;transition:opacity var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, ease), transform var(--md-sys-motion-duration-short2, 100ms) var(--md-sys-motion-easing-standard, ease), visibility 0ms linear 0ms}.md-tooltip__popup--plain{--_container-color:var(--md-tooltip-plain-container-color, var(--md-sys-color-inverse-surface, #313033));--_text-color:var(--md-tooltip-plain-text-color, var(--md-sys-color-inverse-on-surface, #F4EFF4));--_shape:var(--md-tooltip-container-shape, var(--md-sys-shape-corner-extra-small, 4px));background-color:var(--_container-color);color:var(--_text-color);border-radius:var(--_shape);padding-block:var(--md-sys-spacing-inset-xs, 4px);padding-inline:var(--md-sys-spacing-inset-sm, 8px);min-block-size:max(20px, calc(24px + var(--md-sys-density-scale, 0) * 1px));max-inline-size:min(var(--md-tooltip-plain-max-inline-size, 280px), calc(100vw - 16px));font-family:var(--md-sys-typescale-body-small-font-family, Roboto, sans-serif);font-size:max(10px, calc(12px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-body-small-font-weight, 400);line-height:max(14px, calc(16px + var(--md-sys-density-scale, 0) * 0.5px));letter-spacing:var(--md-sys-typescale-body-small-letter-spacing, 0.4px);white-space:normal;display:flex;align-items:center}.md-tooltip__text{overflow-wrap:anywhere}.md-tooltip__popup--rich{--_container-color:var(--md-tooltip-rich-container-color, var(--md-sys-color-surface-container, #F3EDF7));--_subhead-color:var(--md-tooltip-rich-subhead-color, var(--md-sys-color-on-surface-variant, #49454F));--_text-color:var(--md-tooltip-rich-text-color, var(--md-sys-color-on-surface-variant, #49454F));--_action-color:var(--md-tooltip-rich-action-color, var(--md-sys-color-primary, #6750A4));--_shape:var(--md-tooltip-rich-container-shape, var(--md-sys-shape-corner-medium, 12px));background-color:var(--_container-color);color:var(--_text-color);border-radius:var(--_shape);padding-block-start:var(--md-sys-spacing-inset-md, 12px);padding-block-end:var(--md-sys-spacing-inset-sm, 8px);padding-inline:var(--md-sys-spacing-inset-lg, 16px);min-inline-size:var(--md-tooltip-rich-min-inline-size, 120px);max-inline-size:min(var(--md-tooltip-rich-max-inline-size, 320px), calc(100vw - 16px));white-space:normal;box-shadow:var(--md-sys-elevation-2, 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.3))}.md-tooltip__subhead{font-family:var(--md-sys-typescale-title-small-font-family, Roboto, sans-serif);font-size:max(11px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-title-small-font-weight, 500);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px));letter-spacing:var(--md-sys-typescale-title-small-letter-spacing, 0.1px);color:var(--_subhead-color);margin-block-end:var(--md-sys-spacing-gap-xs, 4px)}.md-tooltip__supporting-text{font-family:var(--md-sys-typescale-body-medium-font-family, Roboto, sans-serif);font-size:max(11px, calc(14px + var(--md-sys-density-scale, 0) * 0.5px));font-weight:var(--md-sys-typescale-body-medium-font-weight, 400);line-height:max(16px, calc(20px + var(--md-sys-density-scale, 0) * 1px));letter-spacing:var(--md-sys-typescale-body-medium-letter-spacing, 0.25px);color:var(--_text-color)}.md-tooltip__actions{display:flex;gap:var(--md-sys-spacing-gap-sm, 8px);justify-content:flex-end;margin-block-start:var(--md-sys-spacing-gap-md, 12px);color:var(--_action-color)}.md-tooltip__actions--empty{display:none}::slotted([slot="actions"]){color:var(--_action-color)}.md-tooltip__popup--top,.md-tooltip__popup--top-start,.md-tooltip__popup--top-end{transform-origin:bottom center}.md-tooltip__popup--bottom,.md-tooltip__popup--bottom-start,.md-tooltip__popup--bottom-end{transform-origin:top center}.md-tooltip__popup--left,.md-tooltip__popup--left-start,.md-tooltip__popup--left-end{transform-origin:center right}.md-tooltip__popup--right,.md-tooltip__popup--right-start,.md-tooltip__popup--right-end{transform-origin:center left}:host-context([dir="rtl"]) .md-tooltip__actions{justify-content:flex-start}@media (forced-colors: active){.md-tooltip__popup{border:1px solid CanvasText}}@media (prefers-reduced-motion: reduce){.md-tooltip__popup,.md-tooltip__popup--visible{transition:none;transform:none}}: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}`;const a=8;const h=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.mdOpen=i(this,"mdOpen",1);this.mdClose=i(this,"mdClose",1);this.text="";this.subhead="";this.variant="plain";this.position="top";this.autoPosition=true;this.offset=8;this.crossOffset=0;this.open=false;this.showDelay=500;this.hideDelay=200;this.disabled=false;this.density=0;this.isVisible=false;this.resolvedPlacement="top";this.hasSlottedActions=false;this.hasSlottedSubhead=false;this.tooltipId=`md-tooltip-${Math.random().toString(36).slice(2,9)}`;this.scrollListenerBound=false;this.escapeListenerBound=false;this.hostHoverBound=false;this.hasLoaded=false;this.suppressed=false;this.onTriggerSlotChange=()=>{const t=this.triggerSlot?.assignedElements();if(t&&t.length>0)this.bindTrigger(t[0])};this.handleTriggerEnter=()=>this.scheduleShow();this.handleTriggerLeave=()=>{this.suppressed=false;this.scheduleHide()};this.handleTriggerFocus=()=>this.scheduleShow();this.handleTriggerBlur=t=>{if(t.relatedTarget&&this.el.contains(t.relatedTarget))return;this.suppressed=false;this.scheduleHide()};this.handleHostFocusOut=t=>{if(this.variant!=="rich"||!this.isVisible)return;if(t.relatedTarget&&this.el.contains(t.relatedTarget))return;this.scheduleHide()};this.handlePopupEnter=()=>{this.clearTimers()};this.handlePopupLeave=()=>{this.scheduleHide()};this.handleGlobalEscape=t=>{if(t.key!=="Escape"||!this.isVisible)return;t.preventDefault();this.clearTimers();this.suppressed=true;const s=this.getDeepActiveElement();const i=!!s&&(this.el.contains(s)||s===this.triggerEl);this.open=false;if(i&&this.triggerEl)this.triggerEl.focus()};this.lastGeom={at:0,al:0,aw:0,ah:0,pw:0,ph:0,vw:0,vh:0,ex:0,ey:0};this.watchdogFrame=0;this.handleScroll=()=>{if(this.isVisible)this.updatePosition()}}componentWillLoad(){this.syncSlotFlags();if(this.open&&!this.disabled)this.isVisible=true}componentDidLoad(){this.hasLoaded=true;this.setup();if(this.open)this.showTooltip()}connectedCallback(){if(!this.hasLoaded)return;this.setup();if(this.isVisible&&!this.disabled){this.addScrollListener();this.addEscapeListener();this.schedulePositionUpdate();this.startPositionWatchdog()}else if(this.open&&!this.isVisible&&!this.disabled){this.showTooltip()}}setup(){const t=this.el.shadowRoot;if(!t)return;this.triggerSlot=t.querySelector("slot:not([name])")??undefined;this.triggerSlot?.addEventListener("slotchange",this.onTriggerSlotChange);this.el.addEventListener("focusout",this.handleHostFocusOut);this.syncSlotFlags();if(typeof MutationObserver!=="undefined"&&!this.slotObserver){this.slotObserver=new MutationObserver((()=>{this.syncSlotFlags();if(this.triggerEl)this.updateTriggerAria(this.triggerEl)}));this.slotObserver.observe(this.el,{childList:true,subtree:true,characterData:true})}const s=this.triggerSlot?.assignedElements()[0];if(s)this.bindTrigger(s)}syncSlotFlags(){const t=Array.from(this.el.children);this.hasSlottedActions=t.some((t=>t.getAttribute("slot")==="actions"));this.hasSlottedSubhead=t.some((t=>t.getAttribute("slot")==="subhead"))}disconnectedCallback(){this.clearTimers();this.stopPositionWatchdog();this.unbindTrigger();this.removeScrollListener();this.removeEscapeListener();this.el.removeEventListener("focusout",this.handleHostFocusOut);this.triggerSlot?.removeEventListener("slotchange",this.onTriggerSlotChange);this.triggerSlot=undefined;this.slotObserver?.disconnect();this.slotObserver=undefined}onOpenChange(t){if(t){this.showTooltip()}else{this.hideTooltip()}}onDisabledChange(t){if(t){this.clearTimers();if(this.open)this.open=false;this.triggerEl?.removeAttribute("aria-description")}else if(this.triggerEl){this.updateTriggerAria(this.triggerEl)}}onDescriptionChange(){if(this.triggerEl)this.updateTriggerAria(this.triggerEl)}async show(){if(this.disabled)return;this.open=true}async hide(){this.open=false}bindTrigger(t){this.unbindTrigger();this.triggerEl=t;if(this.useHostHover(t)){this.el.addEventListener("mouseenter",this.handleTriggerEnter);this.el.addEventListener("mouseleave",this.handleTriggerLeave);this.hostHoverBound=true}else{t.addEventListener("mouseenter",this.handleTriggerEnter);t.addEventListener("mouseleave",this.handleTriggerLeave)}t.addEventListener("focus",this.handleTriggerFocus);t.addEventListener("blur",this.handleTriggerBlur);this.updateTriggerAria(t)}unbindTrigger(){if(this.hostHoverBound){this.el.removeEventListener("mouseenter",this.handleTriggerEnter);this.el.removeEventListener("mouseleave",this.handleTriggerLeave);this.hostHoverBound=false}else if(this.triggerEl){this.triggerEl.removeEventListener("mouseenter",this.handleTriggerEnter);this.triggerEl.removeEventListener("mouseleave",this.handleTriggerLeave)}if(!this.triggerEl)return;this.triggerEl.removeEventListener("focus",this.handleTriggerFocus);this.triggerEl.removeEventListener("blur",this.handleTriggerBlur);this.triggerEl.removeAttribute("aria-description");this.triggerEl=undefined}useHostHover(t){const s=t.tagName.toLowerCase();if(s==="button"||s==="a"||s==="input"||s==="select"||s==="textarea"){return false}if(t.hasAttribute("tabindex")&&t.tabIndex>=0)return false;if(s.startsWith("md-"))return false;return true}updateTriggerAria(t){if(this.disabled){t.removeAttribute("aria-description");return}const s=this.computeDescription();if(s){t.setAttribute("aria-description",s)}else{t.removeAttribute("aria-description")}}computeDescription(){if(this.text)return this.text;if(this.subhead)return this.subhead;const t=[];for(const s of Array.from(this.el.children)){const i=s.getAttribute("slot");if(i==="subhead"||i==="content"){const i=(s.textContent||"").trim();if(i)t.push(i)}}return t.join(". ")}scheduleShow(){if(this.disabled||this.suppressed)return;this.clearTimers();this.showTimer=setTimeout((()=>{this.open=true}),this.showDelay)}scheduleHide(){this.clearTimers();this.hideTimer=setTimeout((()=>{this.open=false}),this.hideDelay)}getDeepActiveElement(){if(typeof document==="undefined")return null;let t=document.activeElement;while(t&&t.shadowRoot&&t.shadowRoot.activeElement)t=t.shadowRoot.activeElement;return t}addEscapeListener(){if(!this.escapeListenerBound){document.addEventListener("keydown",this.handleGlobalEscape,true);this.escapeListenerBound=true}}removeEscapeListener(){if(this.escapeListenerBound){document.removeEventListener("keydown",this.handleGlobalEscape,true);this.escapeListenerBound=false}}showTooltip(){if(this.disabled)return;if(!this.el.isConnected)return;this.isVisible=true;this.mdOpen.emit();this.addScrollListener();this.addEscapeListener();this.schedulePositionUpdate();this.startPositionWatchdog()}schedulePositionUpdate(t=0){requestAnimationFrame((()=>{const s=this.updatePosition();if(!s&&t<3){this.schedulePositionUpdate(t+1)}}))}startPositionWatchdog(){if(typeof requestAnimationFrame!=="function")return;this.stopPositionWatchdog();const t=()=>{if(!this.isVisible||!this.el.isConnected){this.watchdogFrame=0;return}const s=this.popupEl;if(s&&this.triggerEl){const t=s.offsetWidth;const i=s.offsetHeight;if(t!==0||i!==0){const e=this.getAnchorRect();const o=s.getBoundingClientRect();const n=this.lastGeom;const r=e.top!==n.at||e.left!==n.al||e.width!==n.aw||e.height!==n.ah||t!==n.pw||i!==n.ph||Math.abs(o.top-n.ey)>.5||Math.abs(o.left-n.ex)>.5||window.innerWidth!==n.vw||window.innerHeight!==n.vh;if(r)this.updatePosition()}}this.watchdogFrame=requestAnimationFrame(t)};this.watchdogFrame=requestAnimationFrame(t)}stopPositionWatchdog(){if(this.watchdogFrame&&typeof cancelAnimationFrame==="function"){cancelAnimationFrame(this.watchdogFrame)}this.watchdogFrame=0}hideTooltip(){if(!this.isVisible)return;this.isVisible=false;this.mdClose.emit();this.removeScrollListener();this.removeEscapeListener();this.stopPositionWatchdog()}clearTimers(){if(this.showTimer!=null){clearTimeout(this.showTimer);this.showTimer=undefined}if(this.hideTimer!=null){clearTimeout(this.hideTimer);this.hideTimer=undefined}}addScrollListener(){if(!this.scrollListenerBound){window.addEventListener("scroll",this.handleScroll,{capture:true,passive:true});this.scrollListenerBound=true}}removeScrollListener(){if(this.scrollListenerBound){window.removeEventListener("scroll",this.handleScroll,true);this.scrollListenerBound=false}}updatePosition(){if(!this.popupEl||!this.triggerEl)return false;const t=this.getAnchorRect();const s=this.popupEl.offsetWidth;const i=this.popupEl.offsetHeight;if(s===0&&i===0)return false;let e=this.physicalPlacement(this.position);if(this.autoPosition){e=this.findBestPlacement(t,s,i,e)}const o=this.calcCoords(t.width,t.height,s,i,e);if(e.startsWith("top")||e.startsWith("bottom")){o.left+=this.crossOffset}else{o.top+=this.crossOffset}if(this.autoPosition){const n=e.startsWith("top")||e.startsWith("bottom");const r=a;if(n){const i=t.left+o.left;const e=window.innerWidth-s-r;const n=Math.min(Math.max(i,r),Math.max(r,e));o.left+=n-i}else{const s=t.top+o.top;const e=window.innerHeight-i-r;const n=Math.min(Math.max(s,r),Math.max(r,e));o.top+=n-s}}const n=this.toFixedCoords(t.top+o.top,t.left+o.left);this.popupEl.style.top=`${n.top}px`;this.popupEl.style.left=`${n.left}px`;this.popupEl.style.insetBlockStart="";this.popupEl.style.insetInlineStart="";this.resolvedPlacement=e;this.lastGeom={at:t.top,al:t.left,aw:t.width,ah:t.height,pw:s,ph:i,vw:window.innerWidth,vh:window.innerHeight,ex:t.left+o.left,ey:t.top+o.top};return true}getAnchorRect(){if(this.triggerEl){const t=this.triggerEl.getBoundingClientRect();if(t.width>0||t.height>0)return t}return this.el.getBoundingClientRect()}toFixedCoords(t,s){const i=this.getFixedContainingBlock();if(!i){return{top:t,left:s}}const e=i.getBoundingClientRect();return{top:t-e.top,left:s-e.left}}createsFixedContainingBlock(t){const s=t;if(t.transform&&t.transform!=="none"||t.filter&&t.filter!=="none"||t.perspective&&t.perspective!=="none")return true;if(s.translate&&s.translate!=="none"||s.rotate&&s.rotate!=="none"||s.scale&&s.scale!=="none")return true;if(s.backdropFilter&&s.backdropFilter!=="none")return true;if(/\b(transform|perspective|filter|translate|rotate|scale)\b/.test(t.willChange||""))return true;if(/(layout|paint|strict|content)\b/.test(s.contain||""))return true;if(s.contentVisibility==="auto"||s.contentVisibility==="hidden")return true;if(s.containerType&&/\bsize\b/.test(s.containerType))return true;return false}getFixedContainingBlock(){let t=this.el;while(t){if(this.createsFixedContainingBlock(getComputedStyle(t))){return t}if(t.parentElement){t=t.parentElement}else if(t.parentNode instanceof ShadowRoot){t=t.parentNode.host}else{t=null}}return null}physicalPlacement(t){if(typeof window==="undefined")return t;const s=getComputedStyle(this.el).direction==="rtl";if(!s)return t;const[i,e=""]=[t.split("-")[0],t.split("-").slice(1).join("-")];const o=i==="left"?"right":i==="right"?"left":i;const n=i==="top"||i==="bottom"?e==="start"?"end":e==="end"?"start":e:e;return n?`${o}-${n}`:o}calcCoords(t,s,i,e,o){const n=this.offset;switch(o){case"top":return{top:-(e+n),left:(t-i)/2};case"top-start":return{top:-(e+n),left:0};case"top-end":return{top:-(e+n),left:t-i};case"bottom":return{top:s+n,left:(t-i)/2};case"bottom-start":return{top:s+n,left:0};case"bottom-end":return{top:s+n,left:t-i};case"left":return{top:(s-e)/2,left:-(i+n)};case"left-start":return{top:0,left:-(i+n)};case"left-end":return{top:s-e,left:-(i+n)};case"right":return{top:(s-e)/2,left:t+n};case"right-start":return{top:0,left:t+n};case"right-end":return{top:s-e,left:t+n};default:return{top:-(e+n),left:(t-i)/2}}}fitsMainAxis(t,s,i,e,o,n){const r=n.startsWith("top")||n.startsWith("bottom");if(r){const s=t.top+e;return s>=0&&s+i<=window.innerHeight}const a=t.left+o;return a>=0&&a+s<=window.innerWidth}getOppositePlacement(t){const[s,i]=[t.split("-")[0],t.split("-").slice(1).join("-")];const e={top:"bottom",bottom:"top",left:"right",right:"left"};return i?`${e[s]}-${i}`:e[s]}findBestPlacement(t,s,i,e){const o=e=>{const o=this.calcCoords(t.width,t.height,s,i,e);return this.fitsMainAxis(t,s,i,o.top,o.left,e)};if(o(e))return e;const n=this.getOppositePlacement(e);if(o(n))return n;const r=e.split("-")[1]||"";const a=["top","bottom","right","left"];for(const t of a){const s=r?`${t}-${r}`:t;if(s!==e&&s!==n&&o(s)){return s}}return e}render(){const t=this.variant==="rich";const s=!!this.subhead||this.hasSlottedSubhead;const i=this.hasSlottedActions;return e(o,{key:"18f4e3e81a7f3275e81c1a40859beab41f97104f",class:"md-tooltip-wrapper"},e("slot",{key:"ea0496dbcf3c70aad4cb72dbe3133dc97024ef30"}),e("div",{key:"8ed4c4183860370a72c9c5f14d1b9953acbf03aa",class:{"md-tooltip__popup":true,"md-tooltip__popup--plain":!t,"md-tooltip__popup--rich":t,"md-tooltip__popup--visible":this.isVisible,[`md-tooltip__popup--${this.resolvedPlacement}`]:true},id:this.tooltipId,role:"tooltip",part:"popup","aria-hidden":this.isVisible?"false":"true",ref:t=>this.popupEl=t,onMouseEnter:this.handlePopupEnter,onMouseLeave:this.handlePopupLeave},t?[s&&e("div",{class:"md-tooltip__subhead",part:"subhead",key:"subhead"},e("slot",{name:"subhead"},this.subhead)),e("div",{class:"md-tooltip__supporting-text",part:"supporting-text",key:"text"},e("slot",{name:"content"},this.text)),e("div",{class:{"md-tooltip__actions":true,"md-tooltip__actions--empty":!i},part:"actions",key:"actions"},e("slot",{name:"actions"}))]:e("span",{class:"md-tooltip__text",part:"text"},this.text)))}get el(){return this}static get watchers(){return{open:[{onOpenChange:0}],disabled:[{onDisabledChange:0}],text:[{onDescriptionChange:0}],subhead:[{onDescriptionChange:0}]}}static get style(){return r()}},[257,"md-tooltip",{text:[1],subhead:[1],variant:[513],position:[1],autoPosition:[4,"auto-position"],offset:[2],crossOffset:[2,"cross-offset"],open:[1540],showDelay:[2,"show-delay"],hideDelay:[2,"hide-delay"],disabled:[516],density:[514],isVisible:[32],resolvedPlacement:[32],hasSlottedActions:[32],hasSlottedSubhead:[32],show:[64],hide:[64]},undefined,{open:[{onOpenChange:0}],disabled:[{onDisabledChange:0}],text:[{onDescriptionChange:0}],subhead:[{onDescriptionChange:0}]}]);function l(){if(typeof customElements==="undefined"){return}const t=["md-tooltip"];t.forEach((t=>{switch(t){case"md-tooltip":if(!customElements.get(n(t))){customElements.define(n(t),h)}break}}))}l();export{h as M,l as d};
|
|
2
|
+
//# sourceMappingURL=p--TCJgZnE.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const n=["http:","https:","mailto:","tel:","sms:","ftp:"];function e(e){if(e==null)return undefined;const r=String(e).trim();if(!r)return undefined;const t=r.replace(/[^!-~]/g,"").toLowerCase();const o=t.indexOf(":");if(o===-1)return r;const s=t.search(/[/?#]/);if(s!==-1&&s<o)return r;return n.includes(t.slice(0,o+1))?r:undefined}const r="noopener,noreferrer";const t="noopener noreferrer";export{t as S,r as a,e as s};
|
|
2
|
+
//# sourceMappingURL=p-BdEoSBtL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SAFE_SCHEMES","sanitizeHref","value","undefined","href","String","trim","probe","replace","toLowerCase","colon","indexOf","separator","search","includes","slice","SAFE_WINDOW_FEATURES","SAFE_LINK_REL"],"sources":["src/utils/url.ts"],"sourcesContent":["/**\n * URL safety for components that expose an `href` prop.\n *\n * Every `href` is consumer-supplied, and consumers routinely bind it to data\n * they didn't author (a CMS field, an API response, a row of user records).\n * A `javascript:` or `data:` URL in that position executes script the moment\n * the link is followed — in the consumer's origin, with their session. The\n * component is the last place that can stop it, because static analysis of\n * *this* repo never sees the untrusted value: it enters at the API boundary.\n *\n * Allowlist, not denylist. A denylist has to anticipate every dangerous\n * scheme (`javascript:`, `data:`, `vbscript:`, `blob:`, browser-specific\n * ones); an allowlist only has to name the handful that navigation needs.\n */\n\n/** Schemes a link is allowed to navigate to. Everything else is dropped. */\nconst SAFE_SCHEMES = ['http:', 'https:', 'mailto:', 'tel:', 'sms:', 'ftp:'];\n\n/**\n * Return `value` when it is safe to navigate to, otherwise `undefined`.\n *\n * Relative URLs (`/path`, `?q=1`, `#anchor`) and protocol-relative ones\n * (`//host/path`) pass through — they inherit the page's origin and scheme\n * and cannot introduce a new one.\n *\n * The returned string is the caller's original value (trimmed), never a\n * normalised or re-encoded one: rewriting a URL that was already safe risks\n * breaking query strings and fragments that consumers depend on.\n */\nexport function sanitizeHref(value: string | null | undefined): string | undefined {\n if (value == null) return undefined;\n\n const href = String(value).trim();\n if (!href) return undefined;\n\n /* Scheme detection runs on a stripped copy, because URL parsing drops ASCII\n whitespace and control characters that sit *inside* the scheme. Without\n this step a tab or newline spliced into \"javascript:\" reads as an unknown\n scheme here while still navigating in the browser.\n\n `[^!-~]` keeps only printable, non-space ASCII (0x21-0x7E) — which covers\n every character legal in a scheme — and drops spaces, tabs, newlines,\n control characters and non-ASCII alike. The stripped copy is used solely\n to decide; the original is what gets returned. */\n const probe = href.replace(/[^!-~]/g, '').toLowerCase();\n\n const colon = probe.indexOf(':');\n if (colon === -1) return href; // no scheme at all — relative\n\n /* A colon that appears after the first `/`, `?` or `#` belongs to the path,\n query or fragment, not to a scheme: `/a:b`, `?x=1:2` and `#a:b` are all\n relative URLs. */\n const separator = probe.search(/[/?#]/);\n if (separator !== -1 && separator < colon) return href;\n\n return SAFE_SCHEMES.includes(probe.slice(0, colon + 1)) ? href : undefined;\n}\n\n/**\n * `window.open` features that sever the opener relationship.\n *\n * Without `noopener` the opened page can reach back through `window.opener`\n * and navigate the page that opened it — reverse tabnabbing, which turns any\n * outbound link into a phishing vector. `noreferrer` implies `noopener` and\n * additionally withholds the `Referer` header; it is included because the\n * components that already opened links correctly used both, and a library\n * should not leak the embedding URL to third parties by default.\n *\n * `_self`, `_top` and `_parent` keep their meaning when these are set; every\n * other target name behaves as `_blank`.\n */\nexport const SAFE_WINDOW_FEATURES = 'noopener,noreferrer';\n\n/**\n * `rel` value for a rendered anchor that opens in a new browsing context.\n *\n * Modern browsers imply `noopener` for `target=\"_blank\"`, but the guarantee\n * only holds for that exact target — a named target (`target=\"preview\"`) still\n * hands over `window.opener`, so the attribute is set explicitly.\n */\nexport const SAFE_LINK_REL = 'noopener noreferrer';\n"],"mappings":"AAgBA,MAAMA,EAAe,CAAC,QAAS,SAAU,UAAW,OAAQ,OAAQ,QAa9D,SAAUC,EAAaC,GAC3B,GAAIA,GAAS,KAAM,OAAOC,UAE1B,MAAMC,EAAOC,OAAOH,GAAOI,OAC3B,IAAKF,EAAM,OAAOD,UAWlB,MAAMI,EAAQH,EAAKI,QAAQ,UAAW,IAAIC,cAE1C,MAAMC,EAAQH,EAAMI,QAAQ,KAC5B,GAAID,KAAU,EAAI,OAAON,EAKzB,MAAMQ,EAAYL,EAAMM,OAAO,SAC/B,GAAID,KAAc,GAAMA,EAAYF,EAAO,OAAON,EAElD,OAAOJ,EAAac,SAASP,EAAMQ,MAAM,EAAGL,EAAQ,IAAMN,EAAOD,SACnE,CAeO,MAAMa,EAAuB,sBAS7B,MAAMC,EAAgB,6B","ignoreList":[]}
|