@slotted/angular 0.1.0-beta.0 → 0.1.0-beta.10
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 +4 -0
- package/docs/AGENTS.snippet.md +12 -0
- package/docs/alert.json +7 -1
- package/docs/alert.md +3 -3
- package/docs/app-shell.examples.md +1 -1
- package/docs/app-shell.json +5 -5
- package/docs/app-shell.md +2 -2
- package/docs/avatar.json +22 -1
- package/docs/avatar.md +5 -3
- package/docs/badge.json +7 -1
- package/docs/badge.md +3 -3
- package/docs/button-group.json +2 -0
- package/docs/button-group.md +1 -1
- package/docs/button.json +51 -11
- package/docs/button.md +10 -6
- package/docs/calendar.json +8 -1
- package/docs/calendar.md +1 -0
- package/docs/cascader.json +1 -0
- package/docs/cascader.md +1 -1
- package/docs/chart.examples.md +1 -1
- package/docs/chart.json +10 -1
- package/docs/chart.md +3 -2
- package/docs/checkbox.json +7 -0
- package/docs/checkbox.md +1 -0
- package/docs/code-block.json +92 -92
- package/docs/code-block.md +69 -69
- package/docs/combobox.json +1 -0
- package/docs/combobox.md +1 -1
- package/docs/currency-field.json +40 -1
- package/docs/currency-field.md +5 -1
- package/docs/data-grid.examples.md +2 -2
- package/docs/data-grid.json +24 -7
- package/docs/data-grid.md +1 -1
- package/docs/data-grid.props.md +6 -4
- package/docs/data-list.json +2 -1
- package/docs/data-list.md +1 -1
- package/docs/date-field.json +9 -1
- package/docs/date-field.md +3 -2
- package/docs/date-picker.examples.md +36 -0
- package/docs/date-picker.json +20 -5
- package/docs/date-picker.md +5 -4
- package/docs/datetime-field.json +1 -0
- package/docs/datetime-field.md +1 -1
- package/docs/dialog.examples.md +158 -136
- package/docs/dialog.json +35 -11
- package/docs/dialog.md +4 -2
- package/docs/dialog.props.md +1 -1
- package/docs/drawer.json +5 -0
- package/docs/drawer.md +1 -0
- package/docs/entity-picker.json +19 -4
- package/docs/entity-picker.md +8 -6
- package/docs/event-calendar.json +7 -0
- package/docs/event-calendar.md +1 -0
- package/docs/filter-bar.json +118 -118
- package/docs/filter-bar.md +79 -79
- package/docs/form.json +2 -1
- package/docs/form.md +1 -1
- package/docs/guidelines/README.md +27 -0
- package/docs/guidelines/async-feedback.md +129 -0
- package/docs/guidelines/browsing.md +74 -0
- package/docs/guidelines/builders.md +97 -0
- package/docs/guidelines/composition.md +143 -0
- package/docs/guidelines/conversations.md +59 -0
- package/docs/guidelines/errors-and-conflicts.md +71 -0
- package/docs/guidelines/forms.md +202 -0
- package/docs/guidelines/index.md +129 -0
- package/docs/guidelines/layout-alignment.md +95 -0
- package/docs/guidelines/ledgers.md +45 -0
- package/docs/guidelines/list-pages.md +206 -0
- package/docs/guidelines/overviews.md +76 -0
- package/docs/guidelines/own-elements.md +115 -0
- package/docs/guidelines/reading-permissions.md +55 -0
- package/docs/guidelines/record-pages.md +178 -0
- package/docs/guidelines/reports.md +123 -0
- package/docs/guidelines/shell-composition.md +94 -0
- package/docs/guidelines/workspaces.md +46 -0
- package/docs/icon.json +3 -1
- package/docs/icon.md +3 -3
- package/docs/index.md +12 -0
- package/docs/inline-message.json +14 -2
- package/docs/inline-message.md +4 -3
- package/docs/list-item.json +9 -1
- package/docs/list-item.md +3 -3
- package/docs/list.json +19 -1
- package/docs/list.md +3 -1
- package/docs/markdown.json +79 -79
- package/docs/markdown.md +65 -65
- package/docs/menu.json +12 -0
- package/docs/menu.md +2 -0
- package/docs/message.json +7 -1
- package/docs/message.md +3 -3
- package/docs/multi-select.json +1 -0
- package/docs/multi-select.md +1 -1
- package/docs/notification-center.json +4 -0
- package/docs/notification-center.md +2 -2
- package/docs/number-field.json +1 -0
- package/docs/number-field.md +1 -1
- package/docs/otp-input.json +1 -0
- package/docs/otp-input.md +1 -1
- package/docs/page-header.json +4 -3
- package/docs/page-header.md +2 -2
- package/docs/page.json +1 -0
- package/docs/page.md +1 -0
- package/docs/popover.json +1 -1
- package/docs/progress-indicator.json +4 -3
- package/docs/progress-indicator.md +4 -4
- package/docs/prompt-composer.json +41 -1
- package/docs/prompt-composer.md +5 -1
- package/docs/rating.json +5 -3
- package/docs/rating.md +5 -5
- package/docs/section.json +27 -15
- package/docs/section.md +11 -9
- package/docs/segmented-control.json +36 -12
- package/docs/segmented-control.md +17 -1
- package/docs/select.json +1 -0
- package/docs/select.md +1 -1
- package/docs/side-navigation.json +1 -0
- package/docs/side-navigation.md +1 -1
- package/docs/skills/build-own-element/SKILL.md +90 -0
- package/docs/skills/compose-screen/SKILL.md +95 -0
- package/docs/skills/index.md +9 -0
- package/docs/skills/review-screen/SKILL.md +77 -0
- package/docs/skills/theme-app/SKILL.md +87 -0
- package/docs/skills/waiting-states/SKILL.md +143 -0
- package/docs/sparkline.json +5 -2
- package/docs/sparkline.md +4 -4
- package/docs/split-button.json +4 -1
- package/docs/split-button.md +3 -3
- package/docs/stat-card.json +5 -1
- package/docs/stat-card.md +3 -3
- package/docs/table.examples.md +3 -3
- package/docs/table.json +85 -3
- package/docs/table.md +12 -1
- package/docs/tabs.json +17 -7
- package/docs/tabs.md +3 -2
- package/docs/tag.json +14 -4
- package/docs/tag.md +6 -6
- package/docs/tags-input.json +29 -2
- package/docs/tags-input.md +4 -1
- package/docs/text-field.json +2 -1
- package/docs/text-field.md +2 -2
- package/docs/textarea.json +1 -0
- package/docs/textarea.md +1 -1
- package/docs/time-field.json +1 -0
- package/docs/time-field.md +1 -1
- package/docs/timeline.json +138 -132
- package/docs/timeline.md +125 -125
- package/docs/toast.json +7 -1
- package/docs/toast.md +3 -3
- package/docs/toggle-group.json +14 -3
- package/docs/toggle-group.md +3 -3
- package/docs/toggle.json +12 -3
- package/docs/toggle.md +3 -3
- package/docs/tokens.md +467 -0
- package/docs/tour.json +1 -1
- package/docs/typography.json +4 -2
- package/docs/typography.md +4 -4
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +22 -11
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
- package/fesm2022/slotted-angular-alert.mjs +18 -11
- package/fesm2022/slotted-angular-alert.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +111 -61
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
- package/fesm2022/slotted-angular-attachment.mjs +31 -20
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-avatar.mjs +14 -7
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
- package/fesm2022/slotted-angular-badge.mjs +14 -10
- package/fesm2022/slotted-angular-badge.mjs.map +1 -1
- package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
- package/fesm2022/slotted-angular-button-group.mjs +7 -4
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +90 -29
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-calendar.mjs +235 -58
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-card.mjs +18 -16
- package/fesm2022/slotted-angular-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-carousel.mjs +22 -11
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +166 -66
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +53 -20
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox.mjs +23 -9
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-code-block.mjs +29 -15
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
- package/fesm2022/slotted-angular-collapsible.mjs +20 -15
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs +77 -22
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +68 -31
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-combobox.mjs +112 -39
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +150 -54
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
- package/fesm2022/slotted-angular-container.mjs +6 -4
- package/fesm2022/slotted-angular-container.mjs.map +1 -1
- package/fesm2022/slotted-angular-context-menu.mjs +5 -4
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +149 -32
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +354 -113
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +83 -50
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-field.mjs +74 -25
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +112 -40
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-description-list.mjs +33 -19
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +72 -30
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
- package/fesm2022/slotted-angular-divider.mjs +7 -5
- package/fesm2022/slotted-angular-divider.mjs.map +1 -1
- package/fesm2022/slotted-angular-drawer.mjs +53 -29
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-field-group.mjs +14 -7
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-field.mjs +35 -15
- package/fesm2022/slotted-angular-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-form.mjs +18 -10
- package/fesm2022/slotted-angular-form.mjs.map +1 -1
- package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
- package/fesm2022/slotted-angular-grid.mjs +4 -2
- package/fesm2022/slotted-angular-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-highlight.mjs +5 -3
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
- package/fesm2022/slotted-angular-hover-card.mjs +5 -4
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-icon.mjs +6 -3
- package/fesm2022/slotted-angular-icon.mjs.map +1 -1
- package/fesm2022/slotted-angular-image.mjs +13 -10
- package/fesm2022/slotted-angular-image.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline-message.mjs +88 -13
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline.mjs +4 -2
- package/fesm2022/slotted-angular-inline.mjs.map +1 -1
- package/fesm2022/slotted-angular-kbd.mjs +11 -7
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
- package/fesm2022/slotted-angular-link.mjs +5 -3
- package/fesm2022/slotted-angular-link.mjs.map +1 -1
- package/fesm2022/slotted-angular-list-item.mjs +21 -18
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
- package/fesm2022/slotted-angular-list.mjs +37 -22
- package/fesm2022/slotted-angular-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-listbox.mjs +39 -21
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
- package/fesm2022/slotted-angular-markdown.mjs +31 -19
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
- package/fesm2022/slotted-angular-menu.mjs +51 -29
- package/fesm2022/slotted-angular-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-menubar.mjs +4 -2
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
- package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
- package/fesm2022/slotted-angular-message.mjs +113 -51
- package/fesm2022/slotted-angular-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +189 -87
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs +108 -65
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-number-field.mjs +23 -11
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-otp-input.mjs +13 -8
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-page-header.mjs +75 -45
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-page.mjs +38 -10
- package/fesm2022/slotted-angular-page.mjs.map +1 -1
- package/fesm2022/slotted-angular-pagination.mjs +35 -22
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
- package/fesm2022/slotted-angular-popover.mjs +32 -19
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
- package/fesm2022/slotted-angular-prose.mjs +14 -11
- package/fesm2022/slotted-angular-prose.mjs.map +1 -1
- package/fesm2022/slotted-angular-radio-group.mjs +15 -9
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-rating.mjs +138 -82
- package/fesm2022/slotted-angular-rating.mjs.map +1 -1
- package/fesm2022/slotted-angular-result-state.mjs +16 -12
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +43 -16
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-section.mjs +53 -18
- package/fesm2022/slotted-angular-section.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +184 -94
- package/fesm2022/slotted-angular-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-skeleton.mjs +32 -16
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
- package/fesm2022/slotted-angular-slider.mjs +31 -11
- package/fesm2022/slotted-angular-slider.mjs.map +1 -1
- package/fesm2022/slotted-angular-sparkline.mjs +41 -14
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +25 -11
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-splitter.mjs +11 -9
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
- package/fesm2022/slotted-angular-stack.mjs +4 -2
- package/fesm2022/slotted-angular-stack.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +35 -28
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-stepper.mjs +40 -15
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
- package/fesm2022/slotted-angular-switch.mjs +15 -10
- package/fesm2022/slotted-angular-switch.mjs.map +1 -1
- package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +243 -73
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +42 -18
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-tag.mjs +19 -12
- package/fesm2022/slotted-angular-tag.mjs.map +1 -1
- package/fesm2022/slotted-angular-tags-input.mjs +253 -28
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-text-field.mjs +49 -15
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-textarea.mjs +5 -3
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-field.mjs +48 -14
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +32 -20
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-timeline.mjs +135 -64
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
- package/fesm2022/slotted-angular-toast.mjs +43 -31
- package/fesm2022/slotted-angular-toast.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle.mjs +9 -4
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs +22 -11
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +15 -6
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
- package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-tour.mjs +47 -22
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +69 -30
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-tree.mjs +74 -26
- package/fesm2022/slotted-angular-tree.mjs.map +1 -1
- package/fesm2022/slotted-angular-typography.mjs +8 -4
- package/fesm2022/slotted-angular-typography.mjs.map +1 -1
- package/fesm2022/slotted-angular-upload.mjs +125 -57
- package/fesm2022/slotted-angular-upload.mjs.map +1 -1
- package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
- package/fesm2022/slotted-angular-wizard.mjs +163 -65
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-accordion.d.ts.map +1 -1
- package/types/slotted-angular-action-bar.d.ts.map +1 -1
- package/types/slotted-angular-action-sheet.d.ts.map +1 -1
- package/types/slotted-angular-alert.d.ts +2 -2
- package/types/slotted-angular-alert.d.ts.map +1 -1
- package/types/slotted-angular-app-shell.d.ts +11 -3
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
- package/types/slotted-angular-attachment.d.ts +1 -1
- package/types/slotted-angular-attachment.d.ts.map +1 -1
- package/types/slotted-angular-avatar-group.d.ts.map +1 -1
- package/types/slotted-angular-avatar.d.ts +11 -3
- package/types/slotted-angular-avatar.d.ts.map +1 -1
- package/types/slotted-angular-badge.d.ts +1 -1
- package/types/slotted-angular-badge.d.ts.map +1 -1
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
- package/types/slotted-angular-button-group.d.ts +1 -1
- package/types/slotted-angular-button-group.d.ts.map +1 -1
- package/types/slotted-angular-button.d.ts +33 -13
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-calendar.d.ts +30 -2
- package/types/slotted-angular-calendar.d.ts.map +1 -1
- package/types/slotted-angular-card.d.ts.map +1 -1
- package/types/slotted-angular-carousel.d.ts.map +1 -1
- package/types/slotted-angular-cascader.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +10 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
- package/types/slotted-angular-checkbox.d.ts +7 -1
- package/types/slotted-angular-checkbox.d.ts.map +1 -1
- package/types/slotted-angular-code-block.d.ts +1 -1
- package/types/slotted-angular-code-block.d.ts.map +1 -1
- package/types/slotted-angular-collapsible.d.ts +1 -1
- package/types/slotted-angular-collapsible.d.ts.map +1 -1
- package/types/slotted-angular-color-picker.d.ts.map +1 -1
- package/types/slotted-angular-column-manager.d.ts.map +1 -1
- package/types/slotted-angular-combobox.d.ts +5 -1
- package/types/slotted-angular-combobox.d.ts.map +1 -1
- package/types/slotted-angular-command-palette.d.ts +10 -1
- package/types/slotted-angular-command-palette.d.ts.map +1 -1
- package/types/slotted-angular-container.d.ts.map +1 -1
- package/types/slotted-angular-context-menu.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +63 -15
- package/types/slotted-angular-currency-field.d.ts.map +1 -1
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-grid.d.ts +49 -4
- package/types/slotted-angular-data-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-list.d.ts.map +1 -1
- package/types/slotted-angular-date-field.d.ts +11 -1
- package/types/slotted-angular-date-field.d.ts.map +1 -1
- package/types/slotted-angular-date-picker.d.ts +38 -12
- package/types/slotted-angular-date-picker.d.ts.map +1 -1
- package/types/slotted-angular-date-range-picker.d.ts +0 -1
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-field.d.ts.map +1 -1
- package/types/slotted-angular-datetime-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-description-list.d.ts.map +1 -1
- package/types/slotted-angular-detail-panel.d.ts.map +1 -1
- package/types/slotted-angular-dialog.d.ts +10 -3
- package/types/slotted-angular-dialog.d.ts.map +1 -1
- package/types/slotted-angular-divider.d.ts.map +1 -1
- package/types/slotted-angular-drawer.d.ts +7 -1
- package/types/slotted-angular-drawer.d.ts.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts +63 -15
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- package/types/slotted-angular-event-calendar.d.ts +9 -2
- package/types/slotted-angular-event-calendar.d.ts.map +1 -1
- package/types/slotted-angular-field-group.d.ts.map +1 -1
- package/types/slotted-angular-field.d.ts.map +1 -1
- package/types/slotted-angular-filter-bar.d.ts.map +1 -1
- package/types/slotted-angular-form.d.ts.map +1 -1
- package/types/slotted-angular-fullscreen.d.ts.map +1 -1
- package/types/slotted-angular-grid.d.ts.map +1 -1
- package/types/slotted-angular-highlight.d.ts.map +1 -1
- package/types/slotted-angular-hover-card.d.ts.map +1 -1
- package/types/slotted-angular-icon.d.ts +2 -2
- package/types/slotted-angular-icon.d.ts.map +1 -1
- package/types/slotted-angular-image.d.ts.map +1 -1
- package/types/slotted-angular-import-export-center.d.ts.map +1 -1
- package/types/slotted-angular-inline-message.d.ts +25 -25
- package/types/slotted-angular-inline-message.d.ts.map +1 -1
- package/types/slotted-angular-inline.d.ts.map +1 -1
- package/types/slotted-angular-kbd.d.ts.map +1 -1
- package/types/slotted-angular-link.d.ts.map +1 -1
- package/types/slotted-angular-list-item.d.ts +1 -1
- package/types/slotted-angular-list-item.d.ts.map +1 -1
- package/types/slotted-angular-list.d.ts +42 -27
- package/types/slotted-angular-list.d.ts.map +1 -1
- package/types/slotted-angular-listbox.d.ts.map +1 -1
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
- package/types/slotted-angular-markdown.d.ts.map +1 -1
- package/types/slotted-angular-menu.d.ts +11 -2
- package/types/slotted-angular-menu.d.ts.map +1 -1
- package/types/slotted-angular-menubar.d.ts.map +1 -1
- package/types/slotted-angular-message-scroller.d.ts.map +1 -1
- package/types/slotted-angular-message.d.ts +1 -1
- package/types/slotted-angular-message.d.ts.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +15 -1
- package/types/slotted-angular-multi-select.d.ts.map +1 -1
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
- package/types/slotted-angular-notification-center.d.ts +1 -1
- package/types/slotted-angular-notification-center.d.ts.map +1 -1
- package/types/slotted-angular-number-field.d.ts.map +1 -1
- package/types/slotted-angular-otp-input.d.ts.map +1 -1
- package/types/slotted-angular-page-header.d.ts +4 -4
- package/types/slotted-angular-page-header.d.ts.map +1 -1
- package/types/slotted-angular-page.d.ts.map +1 -1
- package/types/slotted-angular-pagination.d.ts.map +1 -1
- package/types/slotted-angular-popover.d.ts.map +1 -1
- package/types/slotted-angular-progress-indicator.d.ts +8 -1
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
- package/types/slotted-angular-prompt-composer.d.ts +11 -2
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
- package/types/slotted-angular-prose.d.ts.map +1 -1
- package/types/slotted-angular-radio-group.d.ts.map +1 -1
- package/types/slotted-angular-rating.d.ts +1 -1
- package/types/slotted-angular-rating.d.ts.map +1 -1
- package/types/slotted-angular-result-state.d.ts.map +1 -1
- package/types/slotted-angular-saved-views.d.ts.map +1 -1
- package/types/slotted-angular-scroll-area.d.ts.map +1 -1
- package/types/slotted-angular-section.d.ts +11 -3
- package/types/slotted-angular-section.d.ts.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts +15 -2
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +12 -2
- package/types/slotted-angular-select.d.ts.map +1 -1
- package/types/slotted-angular-side-navigation.d.ts.map +1 -1
- package/types/slotted-angular-skeleton.d.ts.map +1 -1
- package/types/slotted-angular-slider.d.ts.map +1 -1
- package/types/slotted-angular-sparkline.d.ts +7 -1
- package/types/slotted-angular-sparkline.d.ts.map +1 -1
- package/types/slotted-angular-split-button.d.ts +2 -2
- package/types/slotted-angular-split-button.d.ts.map +1 -1
- package/types/slotted-angular-splitter.d.ts.map +1 -1
- package/types/slotted-angular-stack.d.ts.map +1 -1
- package/types/slotted-angular-stat-card.d.ts +1 -1
- package/types/slotted-angular-stat-card.d.ts.map +1 -1
- package/types/slotted-angular-status-indicator.d.ts +1 -1
- package/types/slotted-angular-status-indicator.d.ts.map +1 -1
- package/types/slotted-angular-stepper.d.ts +1 -1
- package/types/slotted-angular-stepper.d.ts.map +1 -1
- package/types/slotted-angular-switch.d.ts.map +1 -1
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +63 -6
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-tabs.d.ts +3 -4
- package/types/slotted-angular-tabs.d.ts.map +1 -1
- package/types/slotted-angular-tag.d.ts +1 -1
- package/types/slotted-angular-tag.d.ts.map +1 -1
- package/types/slotted-angular-tags-input.d.ts +33 -1
- package/types/slotted-angular-tags-input.d.ts.map +1 -1
- package/types/slotted-angular-text-field.d.ts.map +1 -1
- package/types/slotted-angular-textarea.d.ts.map +1 -1
- package/types/slotted-angular-theme.d.ts +1 -1
- package/types/slotted-angular-time-field.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts +0 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts +0 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-timeline.d.ts +1 -1
- package/types/slotted-angular-timeline.d.ts.map +1 -1
- package/types/slotted-angular-toast.d.ts +3 -3
- package/types/slotted-angular-toast.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts +8 -2
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
- package/types/slotted-angular-toolbar.d.ts.map +1 -1
- package/types/slotted-angular-tooltip.d.ts.map +1 -1
- package/types/slotted-angular-top-navigation.d.ts.map +1 -1
- package/types/slotted-angular-tour.d.ts.map +1 -1
- package/types/slotted-angular-transfer.d.ts.map +1 -1
- package/types/slotted-angular-tree.d.ts.map +1 -1
- package/types/slotted-angular-typography.d.ts +1 -1
- package/types/slotted-angular-typography.d.ts.map +1 -1
- package/types/slotted-angular-upload.d.ts +2 -2
- package/types/slotted-angular-upload.d.ts.map +1 -1
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
- package/types/slotted-angular-wizard.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-chart.mjs","sources":["../../chart/src/chart-defaults.ts","../../chart/src/chart-templates.ts","../../chart/src/chart.ts","../../chart/src/chart.html","../../chart/src/slotted-angular-chart.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { ChartGrid } from '@slotted/core/chart';\n\nexport type ChartSize = 'sm' | 'md' | 'lg';\nexport type ChartVariant = 'plain' | 'card';\nexport type ChartPalette = 'categorical' | 'sequential' | 'focus';\nexport type ChartToolbar = 'visible' | 'hover' | 'none';\nexport type ChartRenderer = 'auto' | 'svg' | 'canvas';\nexport type ChartLegendOverflow = 'collapse' | 'wrap';\n\nexport interface ChartTooltipSettings {\n readonly sort?: 'none' | 'asc' | 'desc';\n readonly total?: boolean;\n readonly indicator?: 'dot' | 'line' | 'none';\n}\n\n/** What every chart in an application does before any of them states its own. */\nexport interface ChartDefaults {\n size?: ChartSize;\n variant?: ChartVariant;\n palette?: ChartPalette;\n toolbar?: ChartToolbar;\n renderer?: ChartRenderer;\n grid?: ChartGrid;\n legendOverflow?: ChartLegendOverflow;\n tooltip?: ChartTooltipSettings;\n animate?: boolean;\n}\n\nexport const CHART_DEFAULTS_TOKEN = new InjectionToken<ChartDefaults>('slotted chart defaults', {\n providedIn: 'root',\n factory: (): ChartDefaults => ({}),\n});\n\n/**\n * An application decides once how its charts look — the tile or the plain\n * form, the palette, the toolbar — and every chart inherits the decision. A\n * chart that states any of them still wins: an explicit input is never\n * overridden by the token. The words and the locale come from the language in\n * force (`provideSlotted`).\n */\nexport function provideChartDefaults(defaults: ChartDefaults) {\n return { provide: CHART_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectChartDefaults(): ChartDefaults {\n return inject(CHART_DEFAULTS_TOKEN);\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport type { ChartLegendEntry, ChartModel, ChartTooltipContext } from '@slotted/core/chart';\n\n/** What a `slChartTooltip` template is handed. */\nexport interface ChartTooltipTemplateContext {\n $implicit: ChartTooltipContext;\n model: ChartModel;\n}\n\n/** Replaces the tooltip's content. The box, its place and its timing stay the chart's. */\n@Directive({ selector: 'ng-template[slChartTooltip]', standalone: true })\nexport class SlChartTooltip {\n readonly template = inject<TemplateRef<ChartTooltipTemplateContext>>(TemplateRef);\n}\n\n/** What a `slChartLegendItem` template is handed for one entry. */\nexport interface ChartLegendItemTemplateContext {\n $implicit: ChartLegendEntry;\n value: string;\n current: boolean;\n}\n\n/**\n * Replaces what one legend item holds. The item — a toggle with its pressed\n * state, its colour and its place in the roving tab stop — stays the chart's.\n */\n@Directive({ selector: 'ng-template[slChartLegendItem]', standalone: true })\nexport class SlChartLegendItem {\n readonly template = inject<TemplateRef<ChartLegendItemTemplateContext>>(TemplateRef);\n}\n\n/** Replaces the words in a donut's centre. */\n@Directive({ selector: 'ng-template[slChartCenter]', standalone: true })\nexport class SlChartCenter {\n readonly template = inject<TemplateRef<{ $implicit: ChartModel }>>(TemplateRef);\n}\n\n/** Replaces the empty plot: `no-data`, or `all-hidden`. */\n@Directive({ selector: 'ng-template[slChartEmpty]', standalone: true })\nexport class SlChartEmpty {\n readonly template = inject<TemplateRef<{ $implicit: 'no-data' | 'all-hidden' }>>(TemplateRef);\n}\n\n/** Replaces the failed plot. */\n@Directive({ selector: 'ng-template[slChartError]', standalone: true })\nexport class SlChartError {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injectable,\n InjectionToken,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n categoryIndex,\n chartKeyAction,\n chartTable,\n chartToCsv,\n createChartModel,\n createLatestAnnouncer,\n defaultTrigger,\n describeChart,\n describePoint,\n describeZoom,\n firstPoint,\n FULL_ZOOM,\n isDrawn,\n isFullZoom,\n observeChartTheme,\n placeLayer,\n placeTooltip,\n readChartTheme,\n sameTheme,\n seriesOf,\n toggleHidden,\n TOOLTIP_DOCK_WIDTH,\n tooltipContext,\n trackModality,\n} from '@slotted/core/chart';\nimport { chartMessages, type ChartMessages, type PartialMessages } from '@slotted/core/i18n';\nimport type {\n ChartAnnotation,\n ChartColor,\n ChartGrid,\n ChartLegendEntry,\n ChartModel,\n ChartOrientation,\n ChartPoint,\n ChartRecord,\n ChartSeries,\n ChartSpec,\n ChartStackMode,\n ChartTheme,\n ChartTooltipContext,\n ChartTrigger,\n ChartXAxis,\n ChartYAxis,\n ChartZoom,\n} from '@slotted/core/chart';\nimport { mountChartEngine } from '@slotted/core/chart-echarts';\nimport type { ChartEngine, ChartPointLocation } from '@slotted/core/chart-echarts';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { collapseState } from '@slotted/core/overflow';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport {\n injectChartDefaults,\n type ChartLegendOverflow,\n type ChartPalette,\n type ChartRenderer,\n type ChartSize,\n type ChartToolbar,\n type ChartTooltipSettings,\n type ChartVariant,\n} from './chart-defaults';\nimport {\n SlChartCenter,\n SlChartEmpty,\n SlChartError,\n SlChartLegendItem,\n SlChartTooltip,\n} from './chart-templates';\n\n/**\n * The engine a chart mounts. `@slotted/core/chart-echarts` by default; a test\n * provides a recording one, and an application could provide another that\n * answers the same three calls.\n */\nexport const CHART_ENGINE = new InjectionToken<typeof mountChartEngine>('slotted chart engine', {\n providedIn: 'root',\n factory: () => mountChartEngine,\n});\n\n/** Unique ids for the chart's parts, stable across a server render. */\n@Injectable({ providedIn: 'root' })\nexport class SlChartIdFactory {\n private count = 0;\n next() {\n this.count += 1;\n return `sl-chart-${this.count}`;\n }\n}\n\n/** The imperative actions a template cannot express. */\nexport interface ChartHandle {\n focus(): void;\n resetZoom(): void;\n toDataURL(): string | null;\n toCsv(): string;\n}\n\ninterface Overlay {\n readonly crosshair: (ChartPointLocation & { readonly isBand: boolean }) | null;\n readonly markers: readonly {\n readonly key: string;\n readonly color: ChartColor;\n readonly at: ChartPointLocation;\n readonly selected: boolean;\n readonly current: boolean;\n }[];\n readonly tooltip: ChartTooltipContext | null;\n readonly docked: boolean;\n}\n\nconst NO_OVERLAY: Overlay = { crosshair: null, markers: [], tooltip: null, docked: false };\nconst samePoint = (a: ChartPoint | null, b: ChartPoint | null) =>\n a === b || (a !== null && b !== null && a.series === b.series && a.key === b.key);\nconst sameList = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length && a.every((value, index) => value === b[index]);\nconst sameZoom = (a: ChartZoom, b: ChartZoom) => a.start === b.start && a.end === b.end;\n\nfunction lastDrawn(values: readonly (number | null)[]) {\n for (let index = values.length - 1; index >= 0; index -= 1)\n if (values[index] !== null) return index;\n return -1;\n}\n\nfunction focusVisible(element: Element) {\n try {\n return element.matches(':focus-visible');\n } catch {\n return false;\n }\n}\n\n/**\n * A figure: a caption that names it, a toolbar of its own controls, a legend\n * of toggles, and a plot the engine draws marks into and the family draws\n * every interaction over. The engine is ECharts, loaded on demand by\n * `@slotted/core/chart-echarts`, one chunk per kind; everything a reader\n * operates is this component's template.\n *\n * Each mutable value is a `model()` — two-way, so a template binds it with\n * `[(hidden)]` — and each move is first asked through a `*ChangeRequest`\n * output carrying the reason and the event, which a handler may cancel. The\n * model, the keyboard, the text alternatives and the theme are\n * `@slotted/core/chart`'s, shared with the React binding.\n */\n@Component({\n selector: 'figure[slChart]',\n standalone: true,\n imports: [NgTemplateOutlet, SlGlyph, SlIcon],\n templateUrl: './chart.html',\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/result-state/result-state.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/chart/chart.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slChart',\n host: {\n 'data-ui': 'chart',\n 'data-part': 'root',\n '[attr.title]': 'null',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-palette]': 'resolvedPalette()',\n '[attr.data-toolbar]': 'resolvedToolbar()',\n '[attr.data-legend-overflow]': 'resolvedLegendOverflow()',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '[attr.data-fullscreen]': 'fullscreen() ? \"\" : null',\n '(keydown)': 'onRootKeyDown($event)',\n },\n})\nexport class SlChart implements ChartHandle {\n /* ── What is drawn ─────────────────────────────────────────────────── */\n readonly data = input<readonly ChartRecord[]>([]);\n readonly series = input<readonly ChartSeries[]>([]);\n readonly x = input<ChartXAxis | undefined>(undefined);\n readonly y = input<ChartYAxis | readonly [ChartYAxis, ChartYAxis] | undefined>(undefined);\n readonly orientation = input<ChartOrientation | undefined>(undefined);\n readonly stackMode = input<ChartStackMode | undefined>(undefined);\n readonly annotations = input<readonly ChartAnnotation[] | undefined>(undefined);\n readonly recordKey = input<string | undefined>(undefined);\n readonly locale = input<string | undefined>(undefined);\n\n /* ── The words around it ───────────────────────────────────────────── */\n /** The chart's name: the caption, and the plot's accessible name. The host's native tooltip is removed. */\n readonly title = input<string | undefined>(undefined);\n readonly description = input<string | undefined>(undefined);\n /** A note behind an information control beside the title. */\n readonly help = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * toolbar, the legend, the states and the sentences a screen reader hears.\n */\n readonly messages = input<PartialMessages<ChartMessages> | undefined>(undefined);\n\n /* ── How it looks ──────────────────────────────────────────────────── */\n readonly size = input<ChartSize | undefined>(undefined);\n readonly variant = input<ChartVariant | undefined>(undefined);\n readonly palette = input<ChartPalette | undefined>(undefined);\n readonly toolbar = input<ChartToolbar | undefined>(undefined);\n readonly grid = input<ChartGrid | undefined>(undefined);\n readonly texture = input(false, { transform: booleanAttribute });\n readonly renderer = input<ChartRenderer | undefined>(undefined);\n readonly sampling = input<'auto' | 'none' | undefined>(undefined);\n readonly animate = input<boolean | undefined>(undefined);\n readonly legend = input(true, { transform: booleanAttribute });\n readonly legendInteractive = input(true, { transform: booleanAttribute });\n readonly legendValues = input(false, { transform: booleanAttribute });\n readonly legendOverflow = input<ChartLegendOverflow | undefined>(undefined);\n readonly trigger = input<ChartTrigger | undefined>(undefined);\n readonly tooltip = input<ChartTooltipSettings | undefined>(undefined);\n readonly zoomable = input(false, { transform: booleanAttribute });\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly error = input(false, { transform: booleanAttribute });\n /** The engine's option, before it is drawn: the escape hatch for what the contract does not say yet. */\n readonly extendOption = input<\n ((option: Record<string, unknown>) => Record<string, unknown>) | undefined\n >(undefined);\n\n /* ── State: two-way, each move asked first ─────────────────────────── */\n readonly hidden = model<readonly string[]>([]);\n readonly activePoint = model<ChartPoint | null>(null);\n readonly selection = model<ChartPoint | null>(null);\n readonly zoom = model<ChartZoom>(FULL_ZOOM);\n readonly tableOpen = model<boolean>(false);\n readonly fullscreen = model<boolean>(false);\n\n readonly hiddenChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly activePointChangeRequest = output<ChangeRequest<ChartPoint | null>>();\n readonly selectionChangeRequest = output<ChangeRequest<ChartPoint | null>>();\n readonly zoomChangeRequest = output<ChangeRequest<ChartZoom>>();\n readonly tableOpenChangeRequest = output<ChangeRequest<boolean>>();\n readonly fullscreenChangeRequest = output<ChangeRequest<boolean>>();\n /** The reader pressed the retry of the failed plot. */\n readonly retry = output<void>();\n\n /* ── Composition ───────────────────────────────────────────────────── */\n protected readonly tooltipTemplate = contentChild(SlChartTooltip);\n protected readonly legendItemTemplate = contentChild(SlChartLegendItem);\n protected readonly centerTemplate = contentChild(SlChartCenter);\n protected readonly emptyTemplate = contentChild(SlChartEmpty);\n protected readonly errorTemplate = contentChild(SlChartError);\n\n private readonly defaults = injectChartDefaults();\n private readonly mountEngine = inject(CHART_ENGINE);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n protected readonly id = inject(SlChartIdFactory).next();\n\n protected readonly plotRef = viewChild<ElementRef<HTMLDivElement>>('plot');\n protected readonly canvasRef = viewChild<ElementRef<HTMLDivElement>>('canvas');\n protected readonly tooltipRef = viewChild<ElementRef<HTMLDivElement>>('tooltipBox');\n protected readonly legendRef = viewChild<ElementRef<HTMLDivElement>>('legendRow');\n protected readonly menuRef = viewChild<ElementRef<HTMLDivElement>>('menu');\n protected readonly moreRef = viewChild<ElementRef<HTMLDivElement>>('moreLayer');\n protected readonly helpRef = viewChild<ElementRef<HTMLDivElement>>('helpLayer');\n\n private engine: ChartEngine | null = null;\n private readonly engineFailure = signal<unknown>(null);\n protected readonly theme = signal<ChartTheme | null>(null);\n protected readonly overlay = signal<Overlay>(NO_OVERLAY);\n protected readonly collapsed = signal<readonly number[]>([]);\n protected readonly legendFocus = signal<string | null>(null);\n protected readonly layerOpen = signal<Record<string, boolean>>({});\n private readonly widths = new Map<string, number>();\n private readonly modality = trackModality(this.host);\n private readonly pointAnnouncer = createLatestAnnouncer((message) =>\n getLiveAnnouncer().announce(message),\n );\n\n /* ── Derived ───────────────────────────────────────────────────────── */\n /** The family's words in the language in force, with this chart's `messages` laid over them. */\n protected readonly t = injectMessages(chartMessages, this.messages);\n private readonly appLocale = injectLocale();\n /** The name of the control holding the series the legend has no room for. */\n protected readonly legendMoreName = computed(() => {\n const legend = this.chartModel()?.legend ?? [];\n const names = this.collapsed().map((index) => legend[index]?.label ?? '');\n return this.t('legendMore', {\n series: new Intl.ListFormat(this.locale() ?? this.appLocale(), { type: 'unit' }).format(\n names,\n ),\n });\n });\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size ?? 'md');\n protected readonly resolvedVariant = computed(\n () => this.variant() ?? this.defaults.variant ?? 'plain',\n );\n protected readonly resolvedPalette = computed(\n () => this.palette() ?? this.defaults.palette ?? 'categorical',\n );\n protected readonly resolvedToolbar = computed(\n () => this.toolbar() ?? this.defaults.toolbar ?? 'visible',\n );\n protected readonly resolvedLegendOverflow = computed(\n () => this.legendOverflow() ?? this.defaults.legendOverflow ?? 'collapse',\n );\n protected readonly resolvedTooltip = computed<ChartTooltipSettings>(() => ({\n ...this.defaults.tooltip,\n ...this.tooltip(),\n }));\n\n private readonly spec = computed<ChartSpec>(() => ({\n data: this.data(),\n series: this.series(),\n x: this.x(),\n y: this.y(),\n orientation: this.orientation(),\n stackMode: this.stackMode(),\n annotations: this.annotations(),\n recordKey: this.recordKey(),\n locale: this.locale() ?? this.appLocale(),\n }));\n private readonly built = computed(() => {\n try {\n return {\n model: createChartModel(this.spec(), { hidden: this.hidden() }) as ChartModel | null,\n failure: null as unknown,\n };\n } catch (failure) {\n return { model: null, failure };\n }\n });\n protected readonly chartModel = computed(() => this.built().model);\n protected readonly failed = computed(\n () => this.error() || this.built().failure !== null || this.engineFailure() !== null,\n );\n protected readonly drawable = computed(() => {\n const current = this.chartModel();\n return Boolean(current && !this.loading() && !this.failed() && !current.empty);\n });\n protected readonly usable = computed(() => {\n const current = this.chartModel();\n return Boolean(current && !this.loading() && !this.failed() && current.empty !== 'no-data');\n });\n protected readonly resolvedTrigger = computed(() => {\n const current = this.chartModel();\n return current ? (this.trigger() ?? defaultTrigger(current)) : 'none';\n });\n protected readonly activeKey = computed(() => {\n const current = this.chartModel();\n const point = this.activePoint();\n return point && current && isDrawn(current, point) ? point.key : null;\n });\n protected readonly summary = computed(() => {\n if (this.loading()) return this.t('loading');\n if (this.failed()) return this.t('error');\n const current = this.chartModel();\n return current ? describeChart(current, this.t) : '';\n });\n protected readonly skeletonKind = computed(() => {\n const kinds = this.series().map((entry) => entry.kind);\n if (kinds.includes('pie')) return 'pie';\n return kinds.every((kind) => kind === 'line' || kind === 'area') ? 'line' : 'bar';\n });\n protected readonly legendWaiting = computed(() => {\n const current = this.chartModel();\n return this.loading() && (!current || current.shape === 'pie' || current.legend.length === 0);\n });\n protected readonly table = computed(() => {\n const current = this.chartModel();\n return this.tableOpen() && this.usable() && current ? chartTable(current, this.t) : null;\n });\n protected readonly rowKeys = computed(() => {\n const entries = this.chartModel()?.legend ?? [];\n const hiddenIndexes = this.collapsed();\n return entries.filter((_, index) => !hiddenIndexes.includes(index)).map((entry) => entry.key);\n });\n protected readonly rovingKey = computed(() => {\n const focus = this.legendFocus();\n const keys = this.rowKeys();\n return focus && keys.includes(focus) ? focus : (keys[0] ?? null);\n });\n protected readonly describedBy = computed(() =>\n this.description() !== undefined\n ? `${this.id}-description ${this.id}-summary`\n : `${this.id}-summary`,\n );\n protected readonly repeat = (count: number) => Array.from({ length: count }, (_, index) => index);\n\n constructor() {\n /* The theme at the plot, re-read when a palette, a variant or the full\n screen repaint the root's tokens, which are the chart's own attributes\n and outside what the document observer watches. */\n afterNextRender(() => {\n const plot = this.plotRef()?.nativeElement;\n const canvas = this.canvasRef()?.nativeElement;\n if (!plot || !canvas) return;\n const read = () => {\n const next = readChartTheme(plot);\n if (!sameTheme(this.theme(), next)) this.theme.set(next);\n };\n read();\n const stop = observeChartTheme(plot, read);\n this.engine = this.mountEngine(canvas, {\n onPointer: (point, source) => {\n if (point) this.requestActive(point, 'pointer', source);\n else if (document.activeElement !== plot) this.requestActive(null, 'pointer', source);\n },\n onPress: (point, source) => {\n if (!this.selectable() || !point) return;\n this.requestSelection(\n samePoint(this.selection(), point) ? null : point,\n 'pointer',\n source,\n );\n },\n onZoom: (next, source) => this.requestZoom(next, 'pointer', source),\n onRender: () => this.computeOverlay(),\n onError: (failure) => this.engineFailure.set(failure),\n });\n this.bump.update((value) => value + 1);\n const observer =\n typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(() => this.fitLegend());\n const legend = this.legendRef()?.nativeElement;\n if (legend && observer) observer.observe(legend);\n const onFullscreen = () => {\n if (document.fullscreenElement === this.host) this.native = true;\n else if (this.native) {\n this.native = false;\n if (this.fullscreen()) this.requestFullscreen(false, 'escape');\n }\n };\n document.addEventListener('fullscreenchange', onFullscreen);\n this.destroyRef.onDestroy(() => {\n stop();\n observer?.disconnect();\n document.removeEventListener('fullscreenchange', onFullscreen);\n this.engine?.dispose();\n this.engine = null;\n this.modality.destroy();\n });\n });\n\n effect(() => {\n this.resolvedPalette();\n this.resolvedVariant();\n this.fullscreen();\n const plot = untracked(() => this.plotRef()?.nativeElement);\n if (!plot) return;\n const next = readChartTheme(plot);\n if (!sameTheme(untracked(this.theme), next)) this.theme.set(next);\n });\n\n /* What the engine draws. */\n effect(() => {\n this.bump();\n const current = this.chartModel();\n const theme = this.theme();\n if (!this.engine || !theme || !current || !this.drawable()) return;\n void this.engine.update({\n model: current,\n theme,\n selection: this.selection(),\n zoom: this.zoom(),\n zoomable: this.zoomable(),\n grid: this.grid() ?? this.defaults.grid,\n texture: this.texture(),\n renderer: this.renderer() ?? this.defaults.renderer ?? 'auto',\n sampling: this.sampling(),\n trigger: this.resolvedTrigger(),\n animate: this.animate() ?? this.defaults.animate ?? true,\n extendOption: this.extendOption(),\n });\n });\n\n /* The overlay follows the point, the selection, the model and the view. */\n effect(() => {\n this.activePoint();\n this.selection();\n this.chartModel();\n this.drawable();\n this.tableOpen();\n untracked(() => this.computeOverlay());\n });\n\n /* Placed after the content is on the page, because its size decides where. */\n afterRenderEffect({\n write: () => {\n const overlay = this.overlay();\n const node = this.tooltipRef()?.nativeElement;\n const plot = this.plotRef()?.nativeElement;\n const point = this.activePoint();\n if (!node || !plot) return;\n if (!overlay.tooltip || !point) {\n this.tooltipWasOpen = false;\n return;\n }\n const at = this.engine?.locate(point);\n if (!at) return;\n if (!this.tooltipWasOpen) node.style.transition = 'none';\n const placement = placeTooltip({\n anchor: { x: at.x, y: at.y },\n size: { width: node.offsetWidth, height: node.offsetHeight },\n bounds: { width: plot.clientWidth, height: plot.clientHeight },\n dir: getComputedStyle(this.host).direction === 'rtl' ? 'rtl' : 'ltr',\n });\n node.style.setProperty('--slotted-chart-x', `${placement.x}px`);\n node.style.setProperty('--slotted-chart-y', `${placement.y}px`);\n if (!this.tooltipWasOpen) requestAnimationFrame(() => (node.style.transition = ''));\n this.tooltipWasOpen = true;\n },\n });\n\n /* One line of legend, measured after it is drawn. */\n afterRenderEffect({\n read: () => {\n this.chartModel();\n this.resolvedLegendOverflow();\n this.activeKey();\n this.fitLegend();\n },\n });\n }\n\n private readonly bump = signal(0);\n private native = false;\n private tooltipWasOpen = false;\n\n /* ── Requests ──────────────────────────────────────────────────────── */\n\n private ask<T>(\n value: { (): T; set(next: T): void },\n emit: (request: ChangeRequest<T>) => void,\n equals: (a: T, b: T) => boolean,\n next: T,\n reason: ChangeReason,\n source: unknown,\n ) {\n let cancelled = false;\n const state = createControllable<T>({\n initial: value(),\n equals,\n onRequest: (request) => {\n emit(request);\n cancelled = request.cancelled;\n },\n });\n if (state.request(next, reason, source) && !cancelled) value.set(next);\n }\n\n protected requestHidden(next: readonly string[], reason: ChangeReason, source?: unknown) {\n this.ask(\n this.hidden,\n (request) => this.hiddenChangeRequest.emit(request),\n sameList,\n next,\n reason,\n source,\n );\n }\n protected requestActive(next: ChartPoint | null, reason: ChangeReason, source?: unknown) {\n this.ask(\n this.activePoint,\n (request) => this.activePointChangeRequest.emit(request),\n samePoint,\n next,\n reason,\n source,\n );\n }\n protected requestSelection(next: ChartPoint | null, reason: ChangeReason, source?: unknown) {\n this.ask(\n this.selection,\n (request) => this.selectionChangeRequest.emit(request),\n samePoint,\n next,\n reason,\n source,\n );\n }\n protected requestZoom(next: ChartZoom, reason: ChangeReason, source?: unknown) {\n this.ask(\n this.zoom,\n (request) => this.zoomChangeRequest.emit(request),\n sameZoom,\n next,\n reason,\n source,\n );\n }\n protected requestTable(next: boolean, reason: ChangeReason, source?: unknown) {\n this.ask(\n this.tableOpen,\n (request) => this.tableOpenChangeRequest.emit(request),\n Object.is,\n next,\n reason,\n source,\n );\n }\n\n /**\n * The Fullscreen API when the page may use it and the reader asked; a layer\n * fixed over the page otherwise. A browser refuses the API outside the\n * press that asked for it, so it is asked here, inside the handler.\n */\n protected requestFullscreen(next: boolean, reason: ChangeReason, source?: unknown) {\n const before = this.fullscreen();\n this.ask(\n this.fullscreen,\n (request) => this.fullscreenChangeRequest.emit(request),\n Object.is,\n next,\n reason,\n source,\n );\n if (this.fullscreen() === before) return;\n if (next && document.fullscreenEnabled && reason !== 'programmatic' && reason !== 'escape') {\n this.host.requestFullscreen?.().catch(() => {});\n }\n if (!next && document.fullscreenElement === this.host) {\n this.native = false;\n document.exitFullscreen().catch(() => {});\n }\n }\n\n /** The reason the last activation came with: a pointer, a key, or the application. */\n protected pressReason(): ChangeReason {\n return this.modality.read();\n }\n\n /* ── Overlay ───────────────────────────────────────────────────────── */\n\n private computeOverlay() {\n const current = this.chartModel();\n const plot = this.plotRef()?.nativeElement;\n const engine = this.engine;\n if (!engine || !plot || !current || !this.drawable() || this.tableOpen()) {\n this.overlay.set(NO_OVERLAY);\n return;\n }\n const active = this.activePoint();\n const selected = this.selection();\n const trigger = this.resolvedTrigger();\n const markers: Overlay['markers'][number][] = [];\n if (selected && isDrawn(current, selected) && current.shape === 'cartesian') {\n const owner = seriesOf(current, selected.series);\n const at = engine.locate(selected);\n if (owner && owner.kind !== 'bar' && at) {\n markers.push({\n key: `selected-${owner.id}`,\n color: owner.color,\n at,\n selected: true,\n current: false,\n });\n }\n }\n if (current.shape === 'pie')\n engine.emphasize(active && isDrawn(current, active) ? active.key : null);\n const at = active && isDrawn(current, active) ? engine.locate(active) : null;\n if (!active || !at) {\n this.overlay.set({ crosshair: null, markers, tooltip: null, docked: false });\n return;\n }\n const hasBars = current.series.some((entry) => entry.visible && entry.kind === 'bar');\n const crosshair =\n current.shape === 'cartesian' && trigger === 'axis'\n ? { ...at, isBand: hasBars && current.xType === 'category' }\n : null;\n if (current.shape === 'cartesian') {\n const index = categoryIndex(current, active.key);\n const targets =\n trigger === 'axis'\n ? current.series.filter(\n (entry) => entry.visible && entry.kind !== 'bar' && entry.values[index] !== null,\n )\n : [seriesOf(current, active.series)].filter((entry): entry is NonNullable<typeof entry> =>\n Boolean(entry && entry.kind !== 'bar'),\n );\n for (const target of targets) {\n const spot = engine.locate({ series: target.id, key: active.key });\n if (spot)\n markers.push({\n key: target.id,\n color: target.color,\n at: spot,\n selected: false,\n current: target.id === active.series,\n });\n }\n }\n const settings = this.resolvedTooltip();\n const tooltip =\n trigger === 'none'\n ? null\n : tooltipContext(current, active, { trigger, sort: settings.sort, total: settings.total });\n this.overlay.set({\n crosshair,\n markers,\n tooltip,\n docked: plot.clientWidth < TOOLTIP_DOCK_WIDTH,\n });\n }\n\n protected px(value: number | undefined) {\n return value === undefined ? null : `${value}px`;\n }\n\n protected colorOf(color: ChartColor) {\n return {\n slot: color.type === 'slot' ? String(color.slot) : null,\n tone: color.type === 'tone' ? color.tone : null,\n overflow: color.type === 'overflow' ? '' : null,\n };\n }\n\n protected strokeOf(entry: { series: string } | ChartLegendEntry, key?: string) {\n const current = this.chartModel();\n if (!current) return null;\n const owner =\n current.shape === 'pie'\n ? current.series[0]\n : seriesOf(current, key ?? ('series' in entry ? entry.series : entry.key));\n return owner && owner.stroke !== 'solid' ? owner.stroke : null;\n }\n\n protected markerKind(kind: string, indicator?: string) {\n if (indicator === 'line' || kind === 'line') return 'line';\n if (kind === 'scatter') return 'scatter';\n return 'bar';\n }\n\n /* ── Legend ────────────────────────────────────────────────────────── */\n\n protected legendValue(entry: ChartLegendEntry) {\n const current = this.chartModel();\n if (!current) return '';\n const owner = current.shape === 'pie' ? current.series[0] : seriesOf(current, entry.key);\n if (!owner) return '';\n const key = this.activeKey();\n const index =\n current.shape === 'pie'\n ? categoryIndex(current, entry.key)\n : key\n ? categoryIndex(current, key)\n : lastDrawn(owner.values);\n const raw = index >= 0 ? owner.values[index] : null;\n return raw === null || raw === undefined ? '' : owner.format(raw);\n }\n\n protected isCurrent(entry: ChartLegendEntry) {\n const current = this.chartModel();\n const key = this.activeKey();\n if (!key) return false;\n return current?.shape === 'pie' ? entry.key === key : this.activePoint()?.series === entry.key;\n }\n\n protected toggleEntry(\n entry: ChartLegendEntry,\n mode: 'toggle' | 'isolate',\n reason: ChangeReason,\n source: unknown,\n ) {\n const current = this.chartModel();\n if (!current) return;\n const keys = current.legend.map((item) => item.key);\n const next = toggleHidden(keys, this.hidden(), entry.key, mode);\n this.legendFocus.set(entry.key);\n this.requestHidden(next, reason, source);\n getLiveAnnouncer().announce(\n this.t(next.includes(entry.key) ? 'hidden' : 'shown', { series: entry.label }),\n );\n }\n\n protected onLegendClick(entry: ChartLegendEntry, event: MouseEvent) {\n this.toggleEntry(entry, event.shiftKey ? 'isolate' : 'toggle', this.pressReason(), event);\n }\n\n protected onLegendItemKey(entry: ChartLegendEntry, event: KeyboardEvent) {\n if (event.key === 'Enter' && event.shiftKey) {\n event.preventDefault();\n this.toggleEntry(entry, 'isolate', 'keyboard', event);\n }\n }\n\n protected emphasize(key: string | null) {\n this.engine?.emphasize(key);\n }\n\n /* One tab stop for the row; the arrows move inside it (APG Toolbar). */\n protected onLegendKeyDown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n if (target.closest('[data-part=\"menu\"]')) return;\n const row = event.currentTarget as HTMLElement;\n const items = [...row.querySelectorAll<HTMLElement>(':scope > button:not([hidden])')];\n const index = items.indexOf(target);\n if (index === -1) return;\n const rtl = getComputedStyle(this.host).direction === 'rtl';\n const step =\n event.key === 'ArrowRight' ? (rtl ? -1 : 1) : event.key === 'ArrowLeft' ? (rtl ? 1 : -1) : 0;\n let next: HTMLElement | undefined;\n if (step) next = items[(index + step + items.length) % items.length];\n if (event.key === 'Home') next = items[0];\n if (event.key === 'End') next = items[items.length - 1];\n if (!next) return;\n event.preventDefault();\n this.legendFocus.set(next.dataset['key'] ?? '__more');\n next.focus();\n }\n\n /**\n * Which entries fit on the line, measured by `@slotted/core/overflow` —\n * the arithmetic `toolbar` folds its controls with. The rest wait behind\n * the `+N` control, where they toggle the same series.\n */\n private fitLegend() {\n const node = this.legendRef()?.nativeElement;\n const current = untracked(this.chartModel);\n if (!node || !current) return;\n if (untracked(this.resolvedLegendOverflow) === 'wrap') {\n if (untracked(this.collapsed).length) this.collapsed.set([]);\n return;\n }\n for (const item of node.querySelectorAll<HTMLElement>(':scope > [data-part=\"legend-item\"]')) {\n if (!item.hidden)\n this.widths.set(item.dataset['key'] ?? '', item.getBoundingClientRect().width);\n }\n const more = node.querySelector<HTMLElement>(':scope > [data-part=\"legend-more\"]');\n const result = collapseState({\n units: current.legend.map((entry) => ({\n size: this.widths.get(entry.key) ?? 0,\n collapsible: true,\n })),\n available: node.clientWidth,\n gap: Number.parseFloat(getComputedStyle(node).columnGap) || 0,\n triggerSize: more && !more.hidden ? more.getBoundingClientRect().width : 40,\n });\n const previous = untracked(this.collapsed);\n if (\n previous.length !== result.collapsed.length ||\n previous.some((value, index) => value !== result.collapsed[index])\n ) {\n this.collapsed.set(result.collapsed);\n }\n }\n\n /* ── Layers ────────────────────────────────────────────────────────── */\n\n protected toggleLayer(name: string) {\n const layer = this.layerElement(name);\n layer?.togglePopover?.();\n }\n\n protected onLayerToggle(\n name: string,\n event: Event,\n control: HTMLElement,\n align: 'start' | 'end',\n focusFirst = true,\n ) {\n const open = (event as ToggleEvent).newState === 'open';\n this.layerOpen.update((state) => ({ ...state, [name]: open }));\n const layer = this.layerElement(name);\n if (!layer) return;\n if (open) {\n const box = layer.getBoundingClientRect();\n const at = placeLayer({\n anchor: control.getBoundingClientRect(),\n size: { width: box.width, height: box.height },\n viewport: { width: window.innerWidth, height: window.innerHeight },\n align,\n dir: getComputedStyle(control).direction === 'rtl' ? 'rtl' : 'ltr',\n });\n layer.style.setProperty('--slotted-chart-x', `${at.x}px`);\n layer.style.setProperty('--slotted-chart-y', `${at.y}px`);\n if (focusFirst) layer.querySelector<HTMLElement>('button')?.focus();\n } else if (layer.contains(document.activeElement) || document.activeElement === document.body) {\n control.focus();\n }\n }\n\n protected onLayerKeyDown(event: KeyboardEvent) {\n const layer = event.currentTarget as HTMLElement;\n const items = [...layer.querySelectorAll<HTMLElement>('button')].filter((item) => !item.hidden);\n const index = items.indexOf(document.activeElement as HTMLElement);\n const step = event.key === 'ArrowDown' ? 1 : event.key === 'ArrowUp' ? -1 : 0;\n let next: HTMLElement | undefined;\n if (step) next = items[(index + step + items.length) % items.length];\n if (event.key === 'Home') next = items[0];\n if (event.key === 'End') next = items[items.length - 1];\n if (!next) return;\n event.preventDefault();\n next.focus();\n }\n\n private layerElement(name: string) {\n const ref =\n name === 'menu' ? this.menuRef() : name === 'more' ? this.moreRef() : this.helpRef();\n return ref?.nativeElement ?? null;\n }\n\n protected menuAction(action: 'view' | 'fullscreen' | 'csv' | 'image', event: Event) {\n const reason = this.pressReason();\n this.menuRef()?.nativeElement.hidePopover?.();\n const current = this.chartModel();\n if (action === 'view') this.requestTable(!this.tableOpen(), reason, event);\n if (action === 'fullscreen') this.requestFullscreen(!this.fullscreen(), reason, event);\n if (action === 'csv' && current) {\n this.download(\n `${this.fileName()}.csv`,\n `data:text/csv;charset=utf-8,${encodeURIComponent(chartToCsv(current, this.t))}`,\n );\n }\n if (action === 'image') {\n const url = this.engine?.toDataURL();\n if (url)\n this.download(\n `${this.fileName()}.${url.startsWith('data:image/svg') ? 'svg' : 'png'}`,\n url,\n );\n }\n }\n\n private fileName() {\n return this.title() ?? 'chart';\n }\n\n private download(filename: string, url: string) {\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n document.body.append(link);\n link.click();\n link.remove();\n }\n\n protected resetZoomFromToolbar(event: Event) {\n const current = this.chartModel();\n this.requestZoom(FULL_ZOOM, 'clear', event);\n if (current) getLiveAnnouncer().announce(describeZoom(current, FULL_ZOOM, this.t));\n this.plotRef()?.nativeElement.focus();\n }\n\n protected showAll(event: Event) {\n this.requestHidden([], 'pointer', event);\n }\n\n protected onRetry() {\n this.engineFailure.set(null);\n this.retry.emit();\n }\n\n protected zoomed() {\n const current = this.chartModel();\n return Boolean(this.zoomable() && !isFullZoom(this.zoom()) && current?.shape === 'cartesian');\n }\n\n /* ── Keyboard and focus ────────────────────────────────────────────── */\n\n protected onPlotKeyDown(event: KeyboardEvent) {\n const current = this.chartModel();\n if (!current || !this.drawable() || this.tableOpen()) return;\n const actions = chartKeyAction(\n current,\n {\n active: this.activePoint(),\n selection: this.selection(),\n zoom: this.zoom(),\n zoomable: this.zoomable(),\n selectable: this.selectable(),\n },\n event.key,\n );\n if (actions === null) return;\n event.preventDefault();\n for (const action of actions) {\n if (action.type === 'active') {\n this.requestActive(action.point, action.reason, event);\n if (action.point)\n this.pointAnnouncer.say(describePoint(current, action.point, this.selection(), this.t));\n else this.pointAnnouncer.cancel();\n } else if (action.type === 'select') {\n this.requestSelection(action.point, 'keyboard', event);\n if (action.point)\n this.pointAnnouncer.say(describePoint(current, action.point, action.point, this.t));\n } else {\n this.requestZoom(action.zoom, action.reason, event);\n getLiveAnnouncer().announce(describeZoom(current, action.zoom, this.t));\n }\n }\n }\n\n protected onPlotFocus(event: FocusEvent) {\n const current = this.chartModel();\n if (!current || !this.drawable() || this.tableOpen() || this.activePoint()) return;\n if (!focusVisible(event.currentTarget as Element)) return;\n const point = firstPoint(current);\n if (!point) return;\n this.requestActive(point, 'keyboard', event);\n this.pointAnnouncer.say(describePoint(current, point, this.selection(), this.t));\n }\n\n protected onRootKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Escape' || !this.fullscreen()) return;\n event.preventDefault();\n this.requestFullscreen(false, 'escape', event);\n }\n\n /* ── Handle ────────────────────────────────────────────────────────── */\n\n focus() {\n this.plotRef()?.nativeElement.focus();\n }\n\n resetZoom() {\n this.requestZoom(FULL_ZOOM, 'programmatic');\n }\n\n toDataURL() {\n return this.engine?.toDataURL() ?? null;\n }\n\n toCsv() {\n const current = this.chartModel();\n return current ? chartToCsv(current, this.t) : '';\n }\n}\n","@let current = chartModel(); @if (title() !== undefined || description() !== undefined ||\nresolvedToolbar() !== 'none') {\n<figcaption data-part=\"header\">\n <div>\n <div>\n @if (title() !== undefined) {\n <span data-part=\"title\" [id]=\"id + '-title'\">{{ title() }}</span>\n } @if (help() !== undefined) {\n <button\n #helpControl\n type=\"button\"\n data-part=\"help\"\n [attr.aria-label]=\"t('help')\"\n [attr.aria-controls]=\"id + '-help'\"\n [attr.aria-expanded]=\"layerOpen()['help'] ?? false\"\n [attr.data-open]=\"layerOpen()['help'] ? '' : null\"\n (click)=\"toggleLayer('help')\"\n >\n <span slIcon><svg slGlyph name=\"circle-info\"></svg></span>\n </button>\n <div\n #helpLayer\n popover=\"auto\"\n data-part=\"help-content\"\n role=\"note\"\n [id]=\"id + '-help'\"\n (toggle)=\"onLayerToggle('help', $event, helpControl, 'start', false)\"\n >\n {{ help() }}\n </div>\n }\n </div>\n @if (description() !== undefined) {\n <span data-part=\"description\" [id]=\"id + '-description'\">{{ description() }}</span>\n }\n </div>\n <div data-part=\"actions\"><ng-content select=\"[slChartActions]\" /></div>\n <!-- The box stands in every state, so the header's words wrap at one width; it\n holds nothing a reader can reach until the plot has something to act on. -->\n @if (resolvedToolbar() !== 'none') { @let ready = usable();\n <div\n data-part=\"toolbar\"\n [attr.role]=\"ready ? 'toolbar' : null\"\n [attr.aria-label]=\"ready ? t('toolbar') : null\"\n [attr.aria-hidden]=\"ready ? null : 'true'\"\n [attr.inert]=\"ready ? null : ''\"\n [attr.data-waiting]=\"ready ? null : ''\"\n >\n @if (zoomed()) {\n <button\n type=\"button\"\n data-part=\"zoom-reset\"\n [attr.aria-label]=\"t('resetZoom')\"\n [attr.title]=\"t('resetZoom')\"\n (click)=\"resetZoomFromToolbar($event)\"\n >\n <span slIcon><svg slGlyph name=\"rotate-ccw\"></svg></span>\n </button>\n }\n <button\n type=\"button\"\n data-part=\"view-toggle\"\n [attr.aria-label]=\"t('tableView')\"\n [attr.title]=\"t('tableView')\"\n [attr.aria-pressed]=\"tableOpen()\"\n [attr.data-pressed]=\"tableOpen() ? '' : null\"\n (click)=\"requestTable(!tableOpen(), pressReason(), $event)\"\n >\n <span slIcon><svg slGlyph name=\"file-spreadsheet\"></svg></span>\n </button>\n <button\n type=\"button\"\n data-part=\"fullscreen-toggle\"\n [attr.aria-label]=\"fullscreen() ? t('exitFullscreen') : t('fullscreen')\"\n [attr.title]=\"fullscreen() ? t('exitFullscreen') : t('fullscreen')\"\n (click)=\"requestFullscreen(!fullscreen(), pressReason(), $event)\"\n >\n <span slIcon><svg slGlyph [name]=\"fullscreen() ? 'minimize' : 'maximize'\"></svg></span>\n </button>\n <button\n #menuControl\n type=\"button\"\n data-part=\"menu-trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-label]=\"t('more')\"\n [attr.title]=\"t('more')\"\n [attr.aria-expanded]=\"layerOpen()['menu'] ?? false\"\n [attr.data-open]=\"layerOpen()['menu'] ? '' : null\"\n (click)=\"toggleLayer('menu')\"\n >\n <span slIcon><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <div\n #menu\n popover=\"auto\"\n data-part=\"menu\"\n role=\"menu\"\n [attr.aria-label]=\"t('more')\"\n (toggle)=\"onLayerToggle('menu', $event, menuControl, 'end')\"\n (keydown)=\"onLayerKeyDown($event)\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n data-part=\"menu-item\"\n data-action=\"view\"\n (click)=\"menuAction('view', $event)\"\n >\n {{ t('tableView') }}\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n data-part=\"menu-item\"\n data-action=\"fullscreen\"\n (click)=\"menuAction('fullscreen', $event)\"\n >\n {{ fullscreen() ? t('exitFullscreen') : t('fullscreen') }}\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n data-part=\"menu-item\"\n data-action=\"csv\"\n (click)=\"menuAction('csv', $event)\"\n >\n {{ t('downloadCsv') }}\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n data-part=\"menu-item\"\n data-action=\"image\"\n (click)=\"menuAction('image', $event)\"\n >\n {{ t('downloadImage') }}\n </button>\n </div>\n </div>\n }\n</figcaption>\n} @if (legend()) {\n<div\n #legendRow\n data-part=\"legend\"\n [attr.role]=\"legendWaiting() ? null : legendInteractive() ? 'toolbar' : 'list'\"\n [attr.aria-label]=\"legendWaiting() ? null : t('legend')\"\n (keydown)=\"onLegendKeyDown($event)\"\n>\n @if (legendWaiting()) { @for (line of repeat(3); track line) {\n <span\n data-ui=\"skeleton\"\n data-part=\"root\"\n data-shape=\"block\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n } } @else if (current) { @for (entry of current.legend; track entry.key; let index = $index) {\n <ng-container\n *ngTemplateOutlet=\"legendItem; context: { $implicit: entry, rowHidden: collapsed().includes(index), inLayer: false }\"\n />\n }\n <button\n #moreControl\n type=\"button\"\n data-part=\"legend-more\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"legendMoreName()\"\n [hidden]=\"collapsed().length === 0\"\n [attr.tabindex]=\"rovingKey() === null ? 0 : -1\"\n [attr.aria-expanded]=\"layerOpen()['more'] ?? false\"\n [attr.data-open]=\"layerOpen()['more'] ? '' : null\"\n (click)=\"toggleLayer('more')\"\n >\n {{ t('moreSeries', { count: collapsed().length }) }}\n </button>\n <div\n #moreLayer\n popover=\"auto\"\n data-part=\"menu\"\n role=\"group\"\n [attr.aria-label]=\"t('legend')\"\n (toggle)=\"onLayerToggle('more', $event, moreControl, 'start')\"\n (keydown)=\"onLayerKeyDown($event)\"\n >\n @for (index of collapsed(); track index) { @if (current.legend[index]; as entry) {\n <ng-container\n *ngTemplateOutlet=\"legendItem; context: { $implicit: entry, rowHidden: false, inLayer: true }\"\n />\n } }\n </div>\n }\n</div>\n}\n<ng-template #legendItem let-entry let-rowHidden=\"rowHidden\" let-inLayer=\"inLayer\">\n @let color = colorOf(entry.color); @if (legendInteractive()) {\n <button\n type=\"button\"\n data-part=\"legend-item\"\n [attr.data-key]=\"entry.key\"\n [attr.data-slot]=\"color.slot\"\n [attr.data-tone]=\"color.tone\"\n [attr.data-overflow]=\"color.overflow\"\n [attr.data-current]=\"isCurrent(entry) ? '' : null\"\n [attr.aria-pressed]=\"entry.visible\"\n [attr.data-pressed]=\"entry.visible ? '' : null\"\n [attr.tabindex]=\"inLayer || rovingKey() === entry.key ? 0 : -1\"\n [hidden]=\"rowHidden\"\n (click)=\"onLegendClick(entry, $event)\"\n (keydown)=\"onLegendItemKey(entry, $event)\"\n (focus)=\"legendFocus.set(inLayer ? legendFocus() : entry.key); emphasize(entry.visible ? entry.key : null)\"\n (blur)=\"emphasize(null)\"\n (pointerenter)=\"entry.visible && emphasize(entry.key)\"\n (pointerleave)=\"emphasize(null)\"\n >\n <ng-container *ngTemplateOutlet=\"legendContent; context: { $implicit: entry }\" />\n </button>\n } @else {\n <span\n role=\"listitem\"\n data-part=\"legend-item\"\n [attr.data-key]=\"entry.key\"\n [attr.data-slot]=\"color.slot\"\n [attr.data-tone]=\"color.tone\"\n [attr.data-overflow]=\"color.overflow\"\n [attr.data-current]=\"isCurrent(entry) ? '' : null\"\n [hidden]=\"rowHidden\"\n (pointerenter)=\"entry.visible && emphasize(entry.key)\"\n (pointerleave)=\"emphasize(null)\"\n >\n <ng-container *ngTemplateOutlet=\"legendContent; context: { $implicit: entry }\" />\n </span>\n }\n</ng-template>\n<ng-template #legendContent let-entry>\n @if (legendItemTemplate(); as custom) {\n <ng-container\n *ngTemplateOutlet=\"custom.template; context: { $implicit: entry, value: legendValue(entry), current: isCurrent(entry) }\"\n />\n } @else {\n <span\n data-part=\"legend-marker\"\n [attr.data-kind]=\"entry.kind === 'area' || entry.kind === 'bar' || entry.kind === 'pie' ? 'bar' : entry.kind\"\n [attr.data-stroke]=\"strokeOf(entry)\"\n ></span>\n <span data-part=\"legend-label\" [attr.title]=\"entry.label\">{{ entry.label }}</span>\n @if (legendValues()) {\n <span data-part=\"legend-value\">{{ legendValue(entry) }}</span>\n } }\n</ng-template>\n<div\n #plot\n data-part=\"plot\"\n role=\"group\"\n tabindex=\"0\"\n [attr.aria-roledescription]=\"t('roledescription')\"\n [attr.aria-labelledby]=\"title() !== undefined ? id + '-title' : null\"\n [attr.aria-label]=\"title() === undefined ? t('roledescription') : null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n (keydown)=\"onPlotKeyDown($event)\"\n (focus)=\"onPlotFocus($event)\"\n (blur)=\"requestActive(null, 'blur', $event)\"\n>\n @let overlayNow = overlay();\n <div\n data-part=\"crosshair\"\n [hidden]=\"!overlayNow.crosshair\"\n [attr.data-band]=\"overlayNow.crosshair?.isBand ? '' : null\"\n [attr.data-orientation]=\"current?.orientation ?? 'vertical'\"\n [style.--slotted-chart-x]=\"px(overlayNow.crosshair?.x)\"\n [style.--slotted-chart-y]=\"px(overlayNow.crosshair?.y)\"\n [style.--slotted-chart-band-start]=\"px(overlayNow.crosshair?.band?.start)\"\n [style.--slotted-chart-band-size]=\"px(overlayNow.crosshair?.band?.size)\"\n [style.--slotted-chart-frame-start]=\"px(overlayNow.crosshair?.frame?.start)\"\n [style.--slotted-chart-frame-size]=\"px(overlayNow.crosshair?.frame?.size)\"\n ></div>\n <div #canvas data-part=\"canvas\" aria-hidden=\"true\" [hidden]=\"!drawable()\"></div>\n @for (marker of overlayNow.markers; track marker.key) { @let markerColor = colorOf(marker.color);\n <div\n data-part=\"marker\"\n aria-hidden=\"true\"\n [attr.data-slot]=\"markerColor.slot\"\n [attr.data-tone]=\"markerColor.tone\"\n [attr.data-overflow]=\"markerColor.overflow\"\n [attr.data-selected]=\"marker.selected ? '' : null\"\n [attr.data-current]=\"marker.current ? '' : null\"\n [style.--slotted-chart-x]=\"px(marker.at.x)\"\n [style.--slotted-chart-y]=\"px(marker.at.y)\"\n ></div>\n }\n <div\n #tooltipBox\n data-part=\"tooltip\"\n aria-hidden=\"true\"\n [attr.data-open]=\"overlayNow.tooltip ? '' : null\"\n [attr.data-docked]=\"overlayNow.docked ? '' : null\"\n >\n @if (overlayNow.tooltip && current) { @if (tooltipTemplate(); as custom) {\n <ng-container\n *ngTemplateOutlet=\"custom.template; context: { $implicit: overlayNow.tooltip, model: current }\"\n />\n } @else {\n <div data-part=\"tooltip-title\">{{ overlayNow.tooltip.title }}</div>\n @for (item of overlayNow.tooltip.items; track item.series + item.label) { @let itemColor =\n colorOf(item.color);\n <div\n data-part=\"tooltip-item\"\n [attr.data-current]=\"overlayNow.tooltip.items.length > 1 && item.current ? '' : null\"\n [attr.data-slot]=\"itemColor.slot\"\n [attr.data-tone]=\"itemColor.tone\"\n [attr.data-overflow]=\"itemColor.overflow\"\n >\n @if (resolvedTooltip().indicator !== 'none') {\n <span\n data-part=\"tooltip-marker\"\n [attr.data-kind]=\"markerKind(item.kind, resolvedTooltip().indicator)\"\n [attr.data-stroke]=\"strokeOf(item)\"\n ></span>\n }\n <span data-part=\"tooltip-label\">{{ item.label }}</span>\n <span data-part=\"tooltip-value\"\n >{{ item.share ? item.share + ' · ' + item.formatted : item.formatted }}</span\n >\n </div>\n } @if (overlayNow.tooltip.total; as total) {\n <div data-part=\"tooltip-total\">\n <span>{{ t('total') }}</span>\n <span data-part=\"tooltip-value\">{{ total.formatted }}</span>\n </div>\n } } }\n </div>\n @if (drawable() && current?.shape === 'pie' && (current?.series[0]?.innerRadius ?? 0) > 0) {\n <div data-part=\"center\" aria-hidden=\"true\">\n @if (centerTemplate(); as custom) {\n <ng-container *ngTemplateOutlet=\"custom.template; context: { $implicit: current }\" />\n } @else {\n <span data-part=\"center-value\">{{ current!.series[0]!.format(current!.total) }}</span>\n <span data-part=\"center-label\">{{ t('total') }}</span>\n }\n </div>\n } @if (table(); as rows) {\n <div\n data-part=\"table-region\"\n role=\"region\"\n tabindex=\"0\"\n [attr.aria-labelledby]=\"title() !== undefined ? id + '-title' : null\"\n >\n <table data-part=\"table\">\n <caption>\n {{ title() }}\n </caption>\n <thead>\n <tr>\n @for (column of rows.columns; track column.key; let index = $index) {\n <th scope=\"col\" [attr.data-numeric]=\"index > 0 ? '' : null\">{{ column.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows.rows; track row.key) {\n <tr [attr.data-current]=\"row.key === activeKey() ? '' : null\">\n @for (cell of row.cells; track $index; let index = $index) { @if (index === 0) {\n <th scope=\"row\">{{ cell.text }}</th>\n } @else {\n <td data-numeric>{{ cell.text }}</td>\n } }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @if (loading()) {\n <div data-part=\"skeleton\" aria-hidden=\"true\" [attr.data-kind]=\"skeletonKind()\">\n <div data-ui=\"skeleton\" data-part=\"region\" data-animation=\"shimmer\" data-loading>\n @if (skeletonKind() === 'pie') {\n <span\n data-ui=\"skeleton\"\n data-part=\"root\"\n data-shape=\"circle\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n } @else {\n <div data-skeleton=\"y\">\n @for (line of repeat(5); track line) {\n <span\n data-ui=\"skeleton\"\n data-part=\"root\"\n data-shape=\"block\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n }\n </div>\n <div data-skeleton=\"marks\">\n @for (mark of repeat(skeletonKind() === 'bar' ? 7 : 2); track mark) {\n <span\n data-ui=\"skeleton\"\n data-part=\"root\"\n data-shape=\"block\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n }\n </div>\n <div data-skeleton=\"x\">\n @for (line of repeat(6); track line) {\n <span\n data-ui=\"skeleton\"\n data-part=\"root\"\n data-shape=\"block\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n }\n </div>\n }\n </div>\n </div>\n } @else if (failed()) {\n <div data-part=\"error\">\n @if (errorTemplate(); as custom) {\n <ng-container *ngTemplateOutlet=\"custom.template\" />\n } @else {\n <section\n data-ui=\"result-state\"\n data-part=\"root\"\n data-status=\"error\"\n data-reach=\"section\"\n data-align=\"center\"\n data-live=\"polite\"\n >\n <div data-part=\"media\" aria-hidden=\"true\"></div>\n <div data-part=\"content\" role=\"status\"><div data-part=\"title\">{{ t('error') }}</div></div>\n <div data-part=\"actions\">\n <button\n data-ui=\"button\"\n data-part=\"root\"\n data-variant=\"outline\"\n data-tone=\"secondary\"\n data-size=\"sm\"\n type=\"button\"\n (click)=\"onRetry()\"\n >\n <span data-part=\"label\">{{ t('retry') }}</span>\n </button>\n </div>\n </section>\n }\n </div>\n } @else if (current?.empty; as reason) {\n <div data-part=\"empty\">\n @if (emptyTemplate(); as custom) {\n <ng-container *ngTemplateOutlet=\"custom.template; context: { $implicit: reason }\" />\n } @else {\n <section\n data-ui=\"result-state\"\n data-part=\"root\"\n data-reach=\"section\"\n data-align=\"center\"\n data-live=\"polite\"\n [attr.data-status]=\"reason === 'all-hidden' ? 'no-results' : 'empty'\"\n >\n <div data-part=\"media\" aria-hidden=\"true\"></div>\n <div data-part=\"content\" role=\"status\">\n <div data-part=\"title\">{{ reason === 'all-hidden' ? t('allHidden') : t('noData') }}</div>\n </div>\n @if (reason === 'all-hidden') {\n <div data-part=\"actions\">\n <button\n data-ui=\"button\"\n data-part=\"root\"\n data-variant=\"outline\"\n data-tone=\"secondary\"\n data-size=\"sm\"\n type=\"button\"\n (click)=\"showAll($event)\"\n >\n <span data-part=\"label\">{{ t('showAll') }}</span>\n </button>\n </div>\n }\n </section>\n }\n </div>\n }\n <p data-part=\"summary\" [id]=\"id + '-summary'\">{{ summary() }}</p>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-chart.mjs","sources":["../../chart/src/chart-defaults.ts","../../chart/src/chart-templates.ts","../../chart/src/chart.ts","../../chart/src/chart.html","../../chart/src/slotted-angular-chart.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { ChartGrid } from '@slotted/core/chart';\n\nexport type ChartSize = 'sm' | 'md' | 'lg';\nexport type ChartVariant = 'plain' | 'card';\nexport type ChartPalette = 'categorical' | 'sequential' | 'focus';\nexport type ChartToolbar = 'visible' | 'hover' | 'none';\nexport type ChartRenderer = 'auto' | 'svg' | 'canvas';\nexport type ChartLegendOverflow = 'collapse' | 'wrap';\n\nexport interface ChartTooltipSettings {\n readonly sort?: 'none' | 'asc' | 'desc';\n readonly total?: boolean;\n readonly indicator?: 'dot' | 'line' | 'none';\n}\n\n/** What every chart in an application does before any of them states its own. */\nexport interface ChartDefaults {\n size?: ChartSize;\n variant?: ChartVariant;\n palette?: ChartPalette;\n toolbar?: ChartToolbar;\n renderer?: ChartRenderer;\n grid?: ChartGrid;\n legendOverflow?: ChartLegendOverflow;\n tooltip?: ChartTooltipSettings;\n animate?: boolean;\n}\n\nexport const CHART_DEFAULTS_TOKEN = new InjectionToken<ChartDefaults>('slotted chart defaults', {\n providedIn: 'root',\n factory: (): ChartDefaults => ({}),\n});\n\n/**\n * An application decides once how its charts look — the tile or the plain\n * form, the palette, the toolbar — and every chart inherits the decision. A\n * chart that states any of them still wins: an explicit input is never\n * overridden by the token. The words and the locale come from the language in\n * force (`provideSlotted`).\n */\nexport function provideChartDefaults(defaults: ChartDefaults) {\n return { provide: CHART_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectChartDefaults(): ChartDefaults {\n return inject(CHART_DEFAULTS_TOKEN);\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport type { ChartLegendEntry, ChartModel, ChartTooltipContext } from '@slotted/core/chart';\n\n/** What a `slChartTooltip` template is handed. */\nexport interface ChartTooltipTemplateContext {\n $implicit: ChartTooltipContext;\n model: ChartModel;\n}\n\n/** Replaces the tooltip's content. The box, its place and its timing stay the chart's. */\n@Directive({ selector: 'ng-template[slChartTooltip]', standalone: true })\nexport class SlChartTooltip {\n readonly template = inject<TemplateRef<ChartTooltipTemplateContext>>(TemplateRef);\n}\n\n/** What a `slChartLegendItem` template is handed for one entry. */\nexport interface ChartLegendItemTemplateContext {\n $implicit: ChartLegendEntry;\n value: string;\n current: boolean;\n}\n\n/**\n * Replaces what one legend item holds. The item — a toggle with its pressed\n * state, its colour and its place in the roving tab stop — stays the chart's.\n */\n@Directive({ selector: 'ng-template[slChartLegendItem]', standalone: true })\nexport class SlChartLegendItem {\n readonly template = inject<TemplateRef<ChartLegendItemTemplateContext>>(TemplateRef);\n}\n\n/** Replaces the words in a donut's centre. */\n@Directive({ selector: 'ng-template[slChartCenter]', standalone: true })\nexport class SlChartCenter {\n readonly template = inject<TemplateRef<{ $implicit: ChartModel }>>(TemplateRef);\n}\n\n/** Replaces the empty plot: `no-data`, or `all-hidden`. */\n@Directive({ selector: 'ng-template[slChartEmpty]', standalone: true })\nexport class SlChartEmpty {\n readonly template = inject<TemplateRef<{ $implicit: 'no-data' | 'all-hidden' }>>(TemplateRef);\n}\n\n/** Replaces the failed plot. */\n@Directive({ selector: 'ng-template[slChartError]', standalone: true })\nexport class SlChartError {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injectable,\n InjectionToken,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n cachedChartTheme,\n categoryIndex,\n chartKeyAction,\n chartTable,\n chartToCsv,\n createChartModel,\n createLatestAnnouncer,\n defaultTrigger,\n describeChart,\n describePoint,\n describeZoom,\n firstPoint,\n FULL_ZOOM,\n isDrawn,\n isFullZoom,\n observeChartTheme,\n placeLayer,\n placeTooltip,\n readChartTheme,\n sameTheme,\n seriesOf,\n toggleHidden,\n TOOLTIP_DOCK_WIDTH,\n tooltipContext,\n trackModality,\n} from '@slotted/core/chart';\nimport { createFocusOrigin } from '@slotted/core/focus';\nimport { chartMessages, type ChartMessages, type PartialMessages } from '@slotted/core/i18n';\nimport type {\n ChartAnnotation,\n ChartColor,\n ChartGrid,\n ChartLegendEntry,\n ChartModel,\n ChartOrientation,\n ChartPoint,\n ChartRecord,\n ChartSeries,\n ChartSpec,\n ChartStackMode,\n ChartTheme,\n ChartTooltipContext,\n ChartTrigger,\n ChartXAxis,\n ChartYAxis,\n ChartZoom,\n} from '@slotted/core/chart';\nimport { mountChartEngine } from '@slotted/core/chart-echarts';\nimport type { ChartEngine, ChartPointLocation } from '@slotted/core/chart-echarts';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { collapseState } from '@slotted/core/overflow';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport {\n injectChartDefaults,\n type ChartLegendOverflow,\n type ChartPalette,\n type ChartRenderer,\n type ChartSize,\n type ChartToolbar,\n type ChartTooltipSettings,\n type ChartVariant,\n} from './chart-defaults';\nimport {\n SlChartCenter,\n SlChartEmpty,\n SlChartError,\n SlChartLegendItem,\n SlChartTooltip,\n} from './chart-templates';\n\n/**\n * The engine a chart mounts. `@slotted/core/chart-echarts` by default; a test\n * provides a recording one, and an application could provide another that\n * answers the same three calls.\n */\nexport const CHART_ENGINE = new InjectionToken<typeof mountChartEngine>('slotted chart engine', {\n providedIn: 'root',\n factory: () => mountChartEngine,\n});\n\n/** Unique ids for the chart's parts, stable across a server render. */\n@Injectable({ providedIn: 'root' })\nexport class SlChartIdFactory {\n private count = 0;\n next() {\n this.count += 1;\n return `sl-chart-${this.count}`;\n }\n}\n\n/** The imperative actions a template cannot express. */\nexport interface ChartHandle {\n focus(): void;\n resetZoom(): void;\n toDataURL(): string | null;\n toCsv(): string;\n}\n\ninterface Overlay {\n readonly crosshair: (ChartPointLocation & { readonly isBand: boolean }) | null;\n readonly markers: readonly {\n readonly key: string;\n readonly color: ChartColor;\n readonly at: ChartPointLocation;\n readonly selected: boolean;\n readonly current: boolean;\n }[];\n readonly tooltip: ChartTooltipContext | null;\n readonly docked: boolean;\n}\n\nconst NO_OVERLAY: Overlay = { crosshair: null, markers: [], tooltip: null, docked: false };\nconst samePoint = (a: ChartPoint | null, b: ChartPoint | null) =>\n a === b || (a !== null && b !== null && a.series === b.series && a.key === b.key);\nconst sameList = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length && a.every((value, index) => value === b[index]);\nconst sameZoom = (a: ChartZoom, b: ChartZoom) => a.start === b.start && a.end === b.end;\n\nfunction lastDrawn(values: readonly (number | null)[]) {\n for (let index = values.length - 1; index >= 0; index -= 1)\n if (values[index] !== null) return index;\n return -1;\n}\n\nfunction focusVisible(element: Element) {\n try {\n return element.matches(':focus-visible');\n } catch {\n return false;\n }\n}\n\n/**\n * A figure: a caption that names it, a toolbar of its own controls, a legend\n * of toggles, and a plot the engine draws marks into and the family draws\n * every interaction over. The engine is ECharts, loaded on demand by\n * `@slotted/core/chart-echarts`, one chunk per kind; everything a reader\n * operates is this component's template.\n *\n * Each mutable value is a `model()` — two-way, so a template binds it with\n * `[(hidden)]` — and each move is first asked through a `*ChangeRequest`\n * output carrying the reason and the event, which a handler may cancel. The\n * model, the keyboard, the text alternatives and the theme are\n * `@slotted/core/chart`'s, shared with the React binding.\n */\n@Component({\n selector: 'figure[slChart]',\n standalone: true,\n imports: [NgTemplateOutlet, SlGlyph, SlIcon],\n templateUrl: './chart.html',\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/result-state/result-state.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/chart/chart.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slChart',\n host: {\n 'data-ui': 'chart',\n 'data-ui-chart': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.title]': 'null',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-palette]': 'resolvedPalette()',\n '[attr.data-toolbar]': 'resolvedToolbar()',\n '[attr.data-legend-overflow]': 'resolvedLegendOverflow()',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '[attr.data-fullscreen]': 'fullscreen() ? \"\" : null',\n '(keydown)': 'onRootKeyDown($event)',\n },\n})\nexport class SlChart implements ChartHandle {\n /* ── What is drawn ─────────────────────────────────────────────────── */\n readonly data = input<readonly ChartRecord[]>([]);\n readonly series = input<readonly ChartSeries[]>([]);\n readonly x = input<ChartXAxis | undefined>(undefined);\n readonly y = input<ChartYAxis | readonly [ChartYAxis, ChartYAxis] | undefined>(undefined);\n readonly orientation = input<ChartOrientation | undefined>(undefined);\n readonly stackMode = input<ChartStackMode | undefined>(undefined);\n readonly annotations = input<readonly ChartAnnotation[] | undefined>(undefined);\n readonly recordKey = input<string | undefined>(undefined);\n readonly locale = input<string | undefined>(undefined);\n\n /* ── The words around it ───────────────────────────────────────────── */\n /** The chart's name: the caption, and the plot's accessible name. The host's native tooltip is removed. */\n readonly title = input<string | undefined>(undefined);\n readonly description = input<string | undefined>(undefined);\n /** A note behind an information control beside the title. */\n readonly help = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * toolbar, the legend, the states and the sentences a screen reader hears.\n */\n readonly messages = input<PartialMessages<ChartMessages> | undefined>(undefined);\n\n /* ── How it looks ──────────────────────────────────────────────────── */\n readonly size = input<ChartSize | undefined>(undefined);\n readonly variant = input<ChartVariant | undefined>(undefined);\n readonly palette = input<ChartPalette | undefined>(undefined);\n readonly toolbar = input<ChartToolbar | undefined>(undefined);\n readonly grid = input<ChartGrid | undefined>(undefined);\n readonly texture = input(false, { transform: booleanAttribute });\n readonly renderer = input<ChartRenderer | undefined>(undefined);\n readonly sampling = input<'auto' | 'none' | undefined>(undefined);\n readonly animate = input<boolean | undefined>(undefined);\n readonly legend = input(true, { transform: booleanAttribute });\n readonly legendInteractive = input(true, { transform: booleanAttribute });\n readonly legendValues = input(false, { transform: booleanAttribute });\n readonly legendOverflow = input<ChartLegendOverflow | undefined>(undefined);\n readonly trigger = input<ChartTrigger | undefined>(undefined);\n readonly tooltip = input<ChartTooltipSettings | undefined>(undefined);\n readonly zoomable = input(false, { transform: booleanAttribute });\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly error = input(false, { transform: booleanAttribute });\n /** The engine's option, before it is drawn: the escape hatch for what the contract does not say yet. */\n readonly extendOption = input<\n ((option: Record<string, unknown>) => Record<string, unknown>) | undefined\n >(undefined);\n\n /* ── State: two-way, each move asked first ─────────────────────────── */\n readonly hidden = model<readonly string[]>([]);\n readonly activePoint = model<ChartPoint | null>(null);\n readonly selection = model<ChartPoint | null>(null);\n readonly zoom = model<ChartZoom>(FULL_ZOOM);\n readonly tableOpen = model<boolean>(false);\n readonly fullscreen = model<boolean>(false);\n\n readonly hiddenChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly activePointChangeRequest = output<ChangeRequest<ChartPoint | null>>();\n readonly selectionChangeRequest = output<ChangeRequest<ChartPoint | null>>();\n readonly zoomChangeRequest = output<ChangeRequest<ChartZoom>>();\n readonly tableOpenChangeRequest = output<ChangeRequest<boolean>>();\n readonly fullscreenChangeRequest = output<ChangeRequest<boolean>>();\n /** The reader pressed the retry of the failed plot. */\n readonly retry = output<void>();\n\n /* ── Composition ───────────────────────────────────────────────────── */\n protected readonly tooltipTemplate = contentChild(SlChartTooltip);\n protected readonly legendItemTemplate = contentChild(SlChartLegendItem);\n protected readonly centerTemplate = contentChild(SlChartCenter);\n protected readonly emptyTemplate = contentChild(SlChartEmpty);\n protected readonly errorTemplate = contentChild(SlChartError);\n\n private readonly defaults = injectChartDefaults();\n private readonly mountEngine = inject(CHART_ENGINE);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n protected readonly id = inject(SlChartIdFactory).next();\n\n protected readonly plotRef = viewChild<ElementRef<HTMLDivElement>>('plot');\n protected readonly canvasRef = viewChild<ElementRef<HTMLDivElement>>('canvas');\n protected readonly tableRegionRef = viewChild<ElementRef<HTMLDivElement>>('tableRegion');\n protected readonly tooltipRef = viewChild<ElementRef<HTMLDivElement>>('tooltipBox');\n protected readonly legendRef = viewChild<ElementRef<HTMLDivElement>>('legendRow');\n protected readonly menuRef = viewChild<ElementRef<HTMLDivElement>>('menu');\n protected readonly moreRef = viewChild<ElementRef<HTMLDivElement>>('moreLayer');\n protected readonly helpRef = viewChild<ElementRef<HTMLDivElement>>('helpLayer');\n\n private engine: ChartEngine | null = null;\n private readonly engineFailure = signal<unknown>(null);\n protected readonly theme = signal<ChartTheme | null>(null);\n protected readonly overlay = signal<Overlay>(NO_OVERLAY);\n protected readonly collapsed = signal<readonly number[]>([]);\n protected readonly legendFocus = signal<string | null>(null);\n protected readonly layerOpen = signal<Record<string, boolean>>({});\n private readonly widths = new Map<string, number>();\n private readonly modality = trackModality(this.host);\n private readonly pointAnnouncer = createLatestAnnouncer((message) =>\n getLiveAnnouncer().announce(message),\n );\n\n /* ── Derived ───────────────────────────────────────────────────────── */\n /** The family's words in the language in force, with this chart's `messages` laid over them. */\n protected readonly t = injectMessages(chartMessages, this.messages);\n private readonly appLocale = injectLocale();\n /** The name of the control holding the series the legend has no room for. */\n protected readonly legendMoreName = computed(() => {\n const legend = this.chartModel()?.legend ?? [];\n const names = this.collapsed().map((index) => legend[index]?.label ?? '');\n return this.t('legendMore', {\n series: new Intl.ListFormat(this.locale() ?? this.appLocale(), { type: 'unit' }).format(\n names,\n ),\n });\n });\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size ?? 'md');\n protected readonly resolvedVariant = computed(\n () => this.variant() ?? this.defaults.variant ?? 'plain',\n );\n protected readonly resolvedPalette = computed(\n () => this.palette() ?? this.defaults.palette ?? 'categorical',\n );\n protected readonly resolvedToolbar = computed(\n () => this.toolbar() ?? this.defaults.toolbar ?? 'visible',\n );\n protected readonly resolvedLegendOverflow = computed(\n () => this.legendOverflow() ?? this.defaults.legendOverflow ?? 'collapse',\n );\n protected readonly resolvedTooltip = computed<ChartTooltipSettings>(() => ({\n ...this.defaults.tooltip,\n ...this.tooltip(),\n }));\n\n private readonly spec = computed<ChartSpec>(() => ({\n data: this.data(),\n series: this.series(),\n x: this.x(),\n y: this.y(),\n orientation: this.orientation(),\n stackMode: this.stackMode(),\n annotations: this.annotations(),\n recordKey: this.recordKey(),\n locale: this.locale() ?? this.appLocale(),\n }));\n private readonly built = computed(() => {\n try {\n return {\n model: createChartModel(this.spec(), { hidden: this.hidden() }) as ChartModel | null,\n failure: null as unknown,\n };\n } catch (failure) {\n return { model: null, failure };\n }\n });\n protected readonly chartModel = computed(() => this.built().model);\n protected readonly failed = computed(\n () => this.error() || this.built().failure !== null || this.engineFailure() !== null,\n );\n protected readonly drawable = computed(() => {\n const current = this.chartModel();\n return Boolean(current && !this.loading() && !this.failed() && !current.empty);\n });\n protected readonly usable = computed(() => {\n const current = this.chartModel();\n return Boolean(current && !this.loading() && !this.failed() && current.empty !== 'no-data');\n });\n protected readonly resolvedTrigger = computed(() => {\n const current = this.chartModel();\n return current ? (this.trigger() ?? defaultTrigger(current)) : 'none';\n });\n protected readonly activeKey = computed(() => {\n const current = this.chartModel();\n const point = this.activePoint();\n return point && current && isDrawn(current, point) ? point.key : null;\n });\n protected readonly summary = computed(() => {\n if (this.loading()) return this.t('loading');\n if (this.failed()) return this.t('error');\n const current = this.chartModel();\n return current ? describeChart(current, this.t) : '';\n });\n protected readonly skeletonKind = computed(() => {\n const kinds = this.series().map((entry) => entry.kind);\n if (kinds.includes('pie')) return 'pie';\n return kinds.every((kind) => kind === 'line' || kind === 'area') ? 'line' : 'bar';\n });\n protected readonly legendWaiting = computed(() => {\n const current = this.chartModel();\n return this.loading() && (!current || current.shape === 'pie' || current.legend.length === 0);\n });\n protected readonly table = computed(() => {\n const current = this.chartModel();\n return this.tableOpen() && this.usable() && current ? chartTable(current, this.t) : null;\n });\n protected readonly rowKeys = computed(() => {\n const entries = this.chartModel()?.legend ?? [];\n const hiddenIndexes = this.collapsed();\n return entries.filter((_, index) => !hiddenIndexes.includes(index)).map((entry) => entry.key);\n });\n protected readonly rovingKey = computed(() => {\n const focus = this.legendFocus();\n const keys = this.rowKeys();\n return focus && keys.includes(focus) ? focus : (keys[0] ?? null);\n });\n protected readonly describedBy = computed(() =>\n this.description() !== undefined\n ? `${this.id}-description ${this.id}-summary`\n : `${this.id}-summary`,\n );\n protected readonly repeat = (count: number) => Array.from({ length: count }, (_, index) => index);\n\n /** The frame a theme read waits for; see `loadTheme`. */\n private themeFrame = 0;\n\n /**\n * The theme at the plot: the one another chart already read in the same\n * context, or a read on the next frame. A read computes styles, and right\n * after a render it forced a style recalculation of everything rendered.\n */\n private loadTheme(plot: HTMLElement) {\n const cached = cachedChartTheme(plot);\n if (cached) {\n if (this.themeFrame) cancelAnimationFrame(this.themeFrame);\n this.themeFrame = 0;\n this.applyTheme(cached);\n return;\n }\n if (this.themeFrame) return;\n this.themeFrame = requestAnimationFrame(() => {\n this.themeFrame = 0;\n this.applyTheme(readChartTheme(plot));\n });\n }\n\n private applyTheme(next: ChartTheme) {\n if (!sameTheme(untracked(this.theme), next)) this.theme.set(next);\n }\n\n constructor() {\n afterNextRender(() => {\n const plot = this.plotRef()?.nativeElement;\n const canvas = this.canvasRef()?.nativeElement;\n if (!plot || !canvas) return;\n const stop = observeChartTheme(plot, () => this.applyTheme(readChartTheme(plot)));\n this.engine = this.mountEngine(canvas, {\n onPointer: (point, source) => {\n if (point) this.requestActive(point, 'pointer', source);\n else if (document.activeElement !== plot) this.requestActive(null, 'pointer', source);\n },\n onPress: (point, source) => {\n if (!this.selectable() || !point) return;\n this.requestSelection(\n samePoint(this.selection(), point) ? null : point,\n 'pointer',\n source,\n );\n },\n onZoom: (next, source) => this.requestZoom(next, 'pointer', source),\n onRender: () => this.computeOverlay(),\n onError: (failure) => this.engineFailure.set(failure),\n });\n this.bump.update((value) => value + 1);\n const observer =\n typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(() => this.fitLegend());\n const legend = this.legendRef()?.nativeElement;\n if (legend && observer) observer.observe(legend);\n const onFullscreen = () => {\n if (document.fullscreenElement === this.host) this.native = true;\n else if (this.native) {\n this.native = false;\n if (this.fullscreen()) this.requestFullscreen(false, 'escape');\n }\n };\n document.addEventListener('fullscreenchange', onFullscreen);\n this.destroyRef.onDestroy(() => {\n stop();\n if (this.themeFrame) cancelAnimationFrame(this.themeFrame);\n observer?.disconnect();\n document.removeEventListener('fullscreenchange', onFullscreen);\n this.engine?.dispose();\n this.engine = null;\n this.modality.destroy();\n });\n });\n\n /* The theme at the plot, loaded again when a palette, a variant or the\n full screen repaint the root's tokens, which are the chart's own\n attributes and outside what the document observer watches. After the\n render, because the context a cached theme is found by includes them. */\n afterRenderEffect(() => {\n this.resolvedPalette();\n this.resolvedVariant();\n this.fullscreen();\n const plot = untracked(() => this.plotRef()?.nativeElement);\n if (plot) untracked(() => this.loadTheme(plot));\n });\n\n /** A click on a cell focuses the table region; its ring is for the keyboard (`createFocusOrigin`). */\n effect((onCleanup) => {\n const region = this.tableRegionRef()?.nativeElement;\n if (region === undefined) return;\n onCleanup(createFocusOrigin(region).destroy);\n });\n\n /* What the engine draws. */\n effect(() => {\n this.bump();\n const current = this.chartModel();\n const theme = this.theme();\n if (!this.engine || !theme || !current || !this.drawable()) return;\n void this.engine.update({\n model: current,\n theme,\n selection: this.selection(),\n zoom: this.zoom(),\n zoomable: this.zoomable(),\n grid: this.grid() ?? this.defaults.grid,\n texture: this.texture(),\n renderer: this.renderer() ?? this.defaults.renderer ?? 'auto',\n sampling: this.sampling(),\n trigger: this.resolvedTrigger(),\n animate: this.animate() ?? this.defaults.animate ?? true,\n extendOption: this.extendOption(),\n });\n });\n\n /* The overlay follows the point, the selection, the model and the view. */\n effect(() => {\n this.activePoint();\n this.selection();\n this.chartModel();\n this.drawable();\n this.tableOpen();\n untracked(() => this.computeOverlay());\n });\n\n /* Placed after the content is on the page, because its size decides where. */\n afterRenderEffect({\n write: () => {\n const overlay = this.overlay();\n const node = this.tooltipRef()?.nativeElement;\n const plot = this.plotRef()?.nativeElement;\n const point = this.activePoint();\n if (!node || !plot) return;\n if (!overlay.tooltip || !point) {\n this.tooltipWasOpen = false;\n return;\n }\n const at = this.engine?.locate(point);\n if (!at) return;\n if (!this.tooltipWasOpen) node.style.transition = 'none';\n const placement = placeTooltip({\n anchor: { x: at.x, y: at.y },\n size: { width: node.offsetWidth, height: node.offsetHeight },\n bounds: { width: plot.clientWidth, height: plot.clientHeight },\n dir: getComputedStyle(this.host).direction === 'rtl' ? 'rtl' : 'ltr',\n });\n node.style.setProperty('--slotted-chart-x', `${placement.x}px`);\n node.style.setProperty('--slotted-chart-y', `${placement.y}px`);\n if (!this.tooltipWasOpen) requestAnimationFrame(() => (node.style.transition = ''));\n this.tooltipWasOpen = true;\n },\n });\n\n /* One line of legend, measured after it is drawn. */\n afterRenderEffect({\n read: () => {\n this.chartModel();\n this.resolvedLegendOverflow();\n this.activeKey();\n this.fitLegend();\n },\n });\n }\n\n private readonly bump = signal(0);\n private native = false;\n private tooltipWasOpen = false;\n\n /* ── Requests ──────────────────────────────────────────────────────── */\n\n private ask<T>(\n value: { (): T; set(next: T): void },\n emit: (request: ChangeRequest<T>) => void,\n equals: (a: T, b: T) => boolean,\n next: T,\n reason: ChangeReason,\n source: unknown,\n ) {\n let cancelled = false;\n const state = createControllable<T>({\n initial: value(),\n equals,\n onRequest: (request) => {\n emit(request);\n cancelled = request.cancelled;\n },\n });\n if (state.request(next, reason, source) && !cancelled) value.set(next);\n }\n\n protected requestHidden(next: readonly string[], reason: ChangeReason, source?: unknown) {\n this.ask(\n this.hidden,\n (request) => this.hiddenChangeRequest.emit(request),\n sameList,\n next,\n reason,\n source,\n );\n }\n protected requestActive(next: ChartPoint | null, reason: ChangeReason, source?: unknown) {\n this.ask(\n this.activePoint,\n (request) => this.activePointChangeRequest.emit(request),\n samePoint,\n next,\n reason,\n source,\n );\n }\n protected requestSelection(next: ChartPoint | null, reason: ChangeReason, source?: unknown) {\n this.ask(\n this.selection,\n (request) => this.selectionChangeRequest.emit(request),\n samePoint,\n next,\n reason,\n source,\n );\n }\n protected requestZoom(next: ChartZoom, reason: ChangeReason, source?: unknown) {\n this.ask(\n this.zoom,\n (request) => this.zoomChangeRequest.emit(request),\n sameZoom,\n next,\n reason,\n source,\n );\n }\n protected requestTable(next: boolean, reason: ChangeReason, source?: unknown) {\n this.ask(\n this.tableOpen,\n (request) => this.tableOpenChangeRequest.emit(request),\n Object.is,\n next,\n reason,\n source,\n );\n }\n\n /**\n * The Fullscreen API when the page may use it and the reader asked; a layer\n * fixed over the page otherwise. A browser refuses the API outside the\n * press that asked for it, so it is asked here, inside the handler.\n */\n protected requestFullscreen(next: boolean, reason: ChangeReason, source?: unknown) {\n const before = this.fullscreen();\n this.ask(\n this.fullscreen,\n (request) => this.fullscreenChangeRequest.emit(request),\n Object.is,\n next,\n reason,\n source,\n );\n if (this.fullscreen() === before) return;\n if (next && document.fullscreenEnabled && reason !== 'programmatic' && reason !== 'escape') {\n this.host.requestFullscreen?.().catch(() => {});\n }\n if (!next && document.fullscreenElement === this.host) {\n this.native = false;\n document.exitFullscreen().catch(() => {});\n }\n }\n\n /** The reason the last activation came with: a pointer, a key, or the application. */\n protected pressReason(): ChangeReason {\n return this.modality.read();\n }\n\n /* ── Overlay ───────────────────────────────────────────────────────── */\n\n private computeOverlay() {\n const current = this.chartModel();\n const plot = this.plotRef()?.nativeElement;\n const engine = this.engine;\n if (!engine || !plot || !current || !this.drawable() || this.tableOpen()) {\n this.overlay.set(NO_OVERLAY);\n return;\n }\n const active = this.activePoint();\n const selected = this.selection();\n const trigger = this.resolvedTrigger();\n const markers: Overlay['markers'][number][] = [];\n if (selected && isDrawn(current, selected) && current.shape === 'cartesian') {\n const owner = seriesOf(current, selected.series);\n const at = engine.locate(selected);\n if (owner && owner.kind !== 'bar' && at) {\n markers.push({\n key: `selected-${owner.id}`,\n color: owner.color,\n at,\n selected: true,\n current: false,\n });\n }\n }\n if (current.shape === 'pie')\n engine.emphasize(active && isDrawn(current, active) ? active.key : null);\n const at = active && isDrawn(current, active) ? engine.locate(active) : null;\n if (!active || !at) {\n this.overlay.set({ crosshair: null, markers, tooltip: null, docked: false });\n return;\n }\n const hasBars = current.series.some((entry) => entry.visible && entry.kind === 'bar');\n const crosshair =\n current.shape === 'cartesian' && trigger === 'axis'\n ? { ...at, isBand: hasBars && current.xType === 'category' }\n : null;\n if (current.shape === 'cartesian') {\n const index = categoryIndex(current, active.key);\n const targets =\n trigger === 'axis'\n ? current.series.filter(\n (entry) => entry.visible && entry.kind !== 'bar' && entry.values[index] !== null,\n )\n : [seriesOf(current, active.series)].filter((entry): entry is NonNullable<typeof entry> =>\n Boolean(entry && entry.kind !== 'bar'),\n );\n for (const target of targets) {\n const spot = engine.locate({ series: target.id, key: active.key });\n if (spot)\n markers.push({\n key: target.id,\n color: target.color,\n at: spot,\n selected: false,\n current: target.id === active.series,\n });\n }\n }\n const settings = this.resolvedTooltip();\n const tooltip =\n trigger === 'none'\n ? null\n : tooltipContext(current, active, { trigger, sort: settings.sort, total: settings.total });\n this.overlay.set({\n crosshair,\n markers,\n tooltip,\n docked: plot.clientWidth < TOOLTIP_DOCK_WIDTH,\n });\n }\n\n protected px(value: number | undefined) {\n return value === undefined ? null : `${value}px`;\n }\n\n protected colorOf(color: ChartColor) {\n return {\n slot: color.type === 'slot' ? String(color.slot) : null,\n tone: color.type === 'tone' ? color.tone : null,\n overflow: color.type === 'overflow' ? '' : null,\n };\n }\n\n protected strokeOf(entry: { series: string } | ChartLegendEntry, key?: string) {\n const current = this.chartModel();\n if (!current) return null;\n const owner =\n current.shape === 'pie'\n ? current.series[0]\n : seriesOf(current, key ?? ('series' in entry ? entry.series : entry.key));\n return owner && owner.stroke !== 'solid' ? owner.stroke : null;\n }\n\n protected markerKind(kind: string, indicator?: string) {\n if (indicator === 'line' || kind === 'line') return 'line';\n if (kind === 'scatter') return 'scatter';\n return 'bar';\n }\n\n /* ── Legend ────────────────────────────────────────────────────────── */\n\n protected legendValue(entry: ChartLegendEntry) {\n const current = this.chartModel();\n if (!current) return '';\n const owner = current.shape === 'pie' ? current.series[0] : seriesOf(current, entry.key);\n if (!owner) return '';\n const key = this.activeKey();\n const index =\n current.shape === 'pie'\n ? categoryIndex(current, entry.key)\n : key\n ? categoryIndex(current, key)\n : lastDrawn(owner.values);\n const raw = index >= 0 ? owner.values[index] : null;\n return raw === null || raw === undefined ? '' : owner.format(raw);\n }\n\n protected isCurrent(entry: ChartLegendEntry) {\n const current = this.chartModel();\n const key = this.activeKey();\n if (!key) return false;\n return current?.shape === 'pie' ? entry.key === key : this.activePoint()?.series === entry.key;\n }\n\n protected toggleEntry(\n entry: ChartLegendEntry,\n mode: 'toggle' | 'isolate',\n reason: ChangeReason,\n source: unknown,\n ) {\n const current = this.chartModel();\n if (!current) return;\n const keys = current.legend.map((item) => item.key);\n const next = toggleHidden(keys, this.hidden(), entry.key, mode);\n this.legendFocus.set(entry.key);\n this.requestHidden(next, reason, source);\n getLiveAnnouncer().announce(\n this.t(next.includes(entry.key) ? 'hidden' : 'shown', { series: entry.label }),\n );\n }\n\n protected onLegendClick(entry: ChartLegendEntry, event: MouseEvent) {\n this.toggleEntry(entry, event.shiftKey ? 'isolate' : 'toggle', this.pressReason(), event);\n }\n\n protected onLegendItemKey(entry: ChartLegendEntry, event: KeyboardEvent) {\n if (event.key === 'Enter' && event.shiftKey) {\n event.preventDefault();\n this.toggleEntry(entry, 'isolate', 'keyboard', event);\n }\n }\n\n protected emphasize(key: string | null) {\n this.engine?.emphasize(key);\n }\n\n /* One tab stop for the row; the arrows move inside it (APG Toolbar). */\n protected onLegendKeyDown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n if (target.closest('[data-part=\"menu\"]')) return;\n const row = event.currentTarget as HTMLElement;\n const items = [...row.querySelectorAll<HTMLElement>(':scope > button:not([hidden])')];\n const index = items.indexOf(target);\n if (index === -1) return;\n const rtl = getComputedStyle(this.host).direction === 'rtl';\n const step =\n event.key === 'ArrowRight' ? (rtl ? -1 : 1) : event.key === 'ArrowLeft' ? (rtl ? 1 : -1) : 0;\n let next: HTMLElement | undefined;\n if (step) next = items[(index + step + items.length) % items.length];\n if (event.key === 'Home') next = items[0];\n if (event.key === 'End') next = items[items.length - 1];\n if (!next) return;\n event.preventDefault();\n this.legendFocus.set(next.dataset['key'] ?? '__more');\n next.focus();\n }\n\n /**\n * Which entries fit on the line, measured by `@slotted/core/overflow` —\n * the arithmetic `toolbar` folds its controls with. The rest wait behind\n * the `+N` control, where they toggle the same series.\n */\n private fitLegend() {\n const node = this.legendRef()?.nativeElement;\n const current = untracked(this.chartModel);\n if (!node || !current) return;\n if (untracked(this.resolvedLegendOverflow) === 'wrap') {\n if (untracked(this.collapsed).length) this.collapsed.set([]);\n return;\n }\n for (const item of node.querySelectorAll<HTMLElement>(':scope > [data-part=\"legend-item\"]')) {\n if (!item.hidden)\n this.widths.set(item.dataset['key'] ?? '', item.getBoundingClientRect().width);\n }\n const more = node.querySelector<HTMLElement>(':scope > [data-part=\"legend-more\"]');\n const result = collapseState({\n units: current.legend.map((entry) => ({\n size: this.widths.get(entry.key) ?? 0,\n collapsible: true,\n })),\n available: node.clientWidth,\n gap: Number.parseFloat(getComputedStyle(node).columnGap) || 0,\n triggerSize: more && !more.hidden ? more.getBoundingClientRect().width : 40,\n });\n const previous = untracked(this.collapsed);\n if (\n previous.length !== result.collapsed.length ||\n previous.some((value, index) => value !== result.collapsed[index])\n ) {\n this.collapsed.set(result.collapsed);\n }\n }\n\n /* ── Layers ────────────────────────────────────────────────────────── */\n\n protected toggleLayer(name: string) {\n const layer = this.layerElement(name);\n layer?.togglePopover?.();\n }\n\n protected onLayerToggle(\n name: string,\n event: Event,\n control: HTMLElement,\n align: 'start' | 'end',\n focusFirst = true,\n ) {\n const open = (event as ToggleEvent).newState === 'open';\n this.layerOpen.update((state) => ({ ...state, [name]: open }));\n const layer = this.layerElement(name);\n if (!layer) return;\n if (open) {\n const box = layer.getBoundingClientRect();\n const at = placeLayer({\n anchor: control.getBoundingClientRect(),\n size: { width: box.width, height: box.height },\n viewport: { width: window.innerWidth, height: window.innerHeight },\n align,\n dir: getComputedStyle(control).direction === 'rtl' ? 'rtl' : 'ltr',\n });\n layer.style.setProperty('--slotted-chart-x', `${at.x}px`);\n layer.style.setProperty('--slotted-chart-y', `${at.y}px`);\n if (focusFirst) layer.querySelector<HTMLElement>('button')?.focus();\n } else if (layer.contains(document.activeElement) || document.activeElement === document.body) {\n control.focus();\n }\n }\n\n protected onLayerKeyDown(event: KeyboardEvent) {\n const layer = event.currentTarget as HTMLElement;\n const items = [...layer.querySelectorAll<HTMLElement>('button')].filter((item) => !item.hidden);\n const index = items.indexOf(document.activeElement as HTMLElement);\n const step = event.key === 'ArrowDown' ? 1 : event.key === 'ArrowUp' ? -1 : 0;\n let next: HTMLElement | undefined;\n if (step) next = items[(index + step + items.length) % items.length];\n if (event.key === 'Home') next = items[0];\n if (event.key === 'End') next = items[items.length - 1];\n if (!next) return;\n event.preventDefault();\n next.focus();\n }\n\n private layerElement(name: string) {\n const ref =\n name === 'menu' ? this.menuRef() : name === 'more' ? this.moreRef() : this.helpRef();\n return ref?.nativeElement ?? null;\n }\n\n protected menuAction(action: 'view' | 'fullscreen' | 'csv' | 'image', event: Event) {\n const reason = this.pressReason();\n this.menuRef()?.nativeElement.hidePopover?.();\n const current = this.chartModel();\n if (action === 'view') this.requestTable(!this.tableOpen(), reason, event);\n if (action === 'fullscreen') this.requestFullscreen(!this.fullscreen(), reason, event);\n if (action === 'csv' && current) {\n this.download(\n `${this.fileName()}.csv`,\n `data:text/csv;charset=utf-8,${encodeURIComponent(chartToCsv(current, this.t))}`,\n );\n }\n if (action === 'image') {\n const url = this.engine?.toDataURL();\n if (url)\n this.download(\n `${this.fileName()}.${url.startsWith('data:image/svg') ? 'svg' : 'png'}`,\n url,\n );\n }\n }\n\n private fileName() {\n return this.title() ?? 'chart';\n }\n\n private download(filename: string, url: string) {\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n document.body.append(link);\n link.click();\n link.remove();\n }\n\n protected resetZoomFromToolbar(event: Event) {\n const current = this.chartModel();\n this.requestZoom(FULL_ZOOM, 'clear', event);\n if (current) getLiveAnnouncer().announce(describeZoom(current, FULL_ZOOM, this.t));\n this.plotRef()?.nativeElement.focus();\n }\n\n protected showAll(event: Event) {\n this.requestHidden([], 'pointer', event);\n }\n\n protected onRetry() {\n this.engineFailure.set(null);\n this.retry.emit();\n }\n\n protected zoomed() {\n const current = this.chartModel();\n return Boolean(this.zoomable() && !isFullZoom(this.zoom()) && current?.shape === 'cartesian');\n }\n\n /* ── Keyboard and focus ────────────────────────────────────────────── */\n\n protected onPlotKeyDown(event: KeyboardEvent) {\n const current = this.chartModel();\n if (!current || !this.drawable() || this.tableOpen()) return;\n const actions = chartKeyAction(\n current,\n {\n active: this.activePoint(),\n selection: this.selection(),\n zoom: this.zoom(),\n zoomable: this.zoomable(),\n selectable: this.selectable(),\n },\n event.key,\n );\n if (actions === null) return;\n event.preventDefault();\n for (const action of actions) {\n if (action.type === 'active') {\n this.requestActive(action.point, action.reason, event);\n if (action.point)\n this.pointAnnouncer.say(describePoint(current, action.point, this.selection(), this.t));\n else this.pointAnnouncer.cancel();\n } else if (action.type === 'select') {\n this.requestSelection(action.point, 'keyboard', event);\n if (action.point)\n this.pointAnnouncer.say(describePoint(current, action.point, action.point, this.t));\n } else {\n this.requestZoom(action.zoom, action.reason, event);\n getLiveAnnouncer().announce(describeZoom(current, action.zoom, this.t));\n }\n }\n }\n\n protected onPlotFocus(event: FocusEvent) {\n const current = this.chartModel();\n if (!current || !this.drawable() || this.tableOpen() || this.activePoint()) return;\n if (!focusVisible(event.currentTarget as Element)) return;\n const point = firstPoint(current);\n if (!point) return;\n this.requestActive(point, 'keyboard', event);\n this.pointAnnouncer.say(describePoint(current, point, this.selection(), this.t));\n }\n\n protected onRootKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Escape' || !this.fullscreen()) return;\n event.preventDefault();\n this.requestFullscreen(false, 'escape', event);\n }\n\n /* ── Handle ────────────────────────────────────────────────────────── */\n\n focus() {\n this.plotRef()?.nativeElement.focus();\n }\n\n resetZoom() {\n this.requestZoom(FULL_ZOOM, 'programmatic');\n }\n\n toDataURL() {\n return this.engine?.toDataURL() ?? null;\n }\n\n toCsv() {\n const current = this.chartModel();\n return current ? chartToCsv(current, this.t) : '';\n }\n}\n","@let current = chartModel(); @if (title() !== undefined || description() !== undefined ||\nresolvedToolbar() !== 'none') {\n<figcaption data-part=\"header\" data-part-header=\"\">\n <div>\n <div>\n @if (title() !== undefined) {\n <span data-part=\"title\" data-part-title=\"\" [id]=\"id + '-title'\">{{ title() }}</span>\n } @if (help() !== undefined) {\n <button\n #helpControl\n type=\"button\"\n data-part=\"help\"\n data-part-help=\"\"\n [attr.aria-label]=\"t('help')\"\n [attr.aria-controls]=\"id + '-help'\"\n [attr.aria-expanded]=\"layerOpen()['help'] ?? false\"\n [attr.data-open]=\"layerOpen()['help'] ? '' : null\"\n (click)=\"toggleLayer('help')\"\n >\n <span slIcon><svg slGlyph name=\"circle-info\"></svg></span>\n </button>\n <div\n #helpLayer\n popover=\"auto\"\n data-part=\"help-content\"\n data-part-help-content=\"\"\n role=\"note\"\n [id]=\"id + '-help'\"\n (toggle)=\"onLayerToggle('help', $event, helpControl, 'start', false)\"\n >\n {{ help() }}\n </div>\n }\n </div>\n @if (description() !== undefined) {\n <span data-part=\"description\" data-part-description=\"\" [id]=\"id + '-description'\"\n >{{ description() }}</span\n >\n }\n </div>\n <div data-part=\"actions\" data-part-actions=\"\"><ng-content select=\"[slChartActions]\" /></div>\n <!-- The box stands in every state, so the header's words wrap at one width; it\n holds nothing a reader can reach until the plot has something to act on. -->\n @if (resolvedToolbar() !== 'none') { @let ready = usable();\n <div\n data-part=\"toolbar\"\n data-part-toolbar=\"\"\n [attr.role]=\"ready ? 'toolbar' : null\"\n [attr.aria-label]=\"ready ? t('toolbar') : null\"\n [attr.aria-hidden]=\"ready ? null : 'true'\"\n [attr.inert]=\"ready ? null : ''\"\n [attr.data-waiting]=\"ready ? null : ''\"\n >\n @if (zoomed()) {\n <button\n type=\"button\"\n data-part=\"zoom-reset\"\n data-part-zoom-reset=\"\"\n [attr.aria-label]=\"t('resetZoom')\"\n [attr.title]=\"t('resetZoom')\"\n (click)=\"resetZoomFromToolbar($event)\"\n >\n <span slIcon><svg slGlyph name=\"rotate-ccw\"></svg></span>\n </button>\n }\n <button\n type=\"button\"\n data-part=\"view-toggle\"\n data-part-view-toggle=\"\"\n [attr.aria-label]=\"t('tableView')\"\n [attr.title]=\"t('tableView')\"\n [attr.aria-pressed]=\"tableOpen()\"\n [attr.data-pressed]=\"tableOpen() ? '' : null\"\n (click)=\"requestTable(!tableOpen(), pressReason(), $event)\"\n >\n <span slIcon><svg slGlyph name=\"file-spreadsheet\"></svg></span>\n </button>\n <button\n type=\"button\"\n data-part=\"fullscreen-toggle\"\n data-part-fullscreen-toggle=\"\"\n [attr.aria-label]=\"fullscreen() ? t('exitFullscreen') : t('fullscreen')\"\n [attr.title]=\"fullscreen() ? t('exitFullscreen') : t('fullscreen')\"\n (click)=\"requestFullscreen(!fullscreen(), pressReason(), $event)\"\n >\n <span slIcon><svg slGlyph [name]=\"fullscreen() ? 'minimize' : 'maximize'\"></svg></span>\n </button>\n <button\n #menuControl\n type=\"button\"\n data-part=\"menu-trigger\"\n data-part-menu-trigger=\"\"\n aria-haspopup=\"menu\"\n [attr.aria-label]=\"t('more')\"\n [attr.title]=\"t('more')\"\n [attr.aria-expanded]=\"layerOpen()['menu'] ?? false\"\n [attr.data-open]=\"layerOpen()['menu'] ? '' : null\"\n (click)=\"toggleLayer('menu')\"\n >\n <span slIcon><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <div\n #menu\n popover=\"auto\"\n data-part=\"menu\"\n data-part-menu=\"\"\n role=\"menu\"\n [attr.aria-label]=\"t('more')\"\n (toggle)=\"onLayerToggle('menu', $event, menuControl, 'end')\"\n (keydown)=\"onLayerKeyDown($event)\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n data-part=\"menu-item\"\n data-part-menu-item=\"\"\n data-action=\"view\"\n (click)=\"menuAction('view', $event)\"\n >\n {{ t('tableView') }}\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n data-part=\"menu-item\"\n data-part-menu-item=\"\"\n data-action=\"fullscreen\"\n (click)=\"menuAction('fullscreen', $event)\"\n >\n {{ fullscreen() ? t('exitFullscreen') : t('fullscreen') }}\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n data-part=\"menu-item\"\n data-part-menu-item=\"\"\n data-action=\"csv\"\n (click)=\"menuAction('csv', $event)\"\n >\n {{ t('downloadCsv') }}\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n data-part=\"menu-item\"\n data-part-menu-item=\"\"\n data-action=\"image\"\n (click)=\"menuAction('image', $event)\"\n >\n {{ t('downloadImage') }}\n </button>\n </div>\n </div>\n }\n</figcaption>\n} @if (legend()) {\n<div\n #legendRow\n data-part=\"legend\"\n data-part-legend=\"\"\n [attr.role]=\"legendWaiting() ? null : legendInteractive() ? 'toolbar' : 'list'\"\n [attr.aria-label]=\"legendWaiting() ? null : t('legend')\"\n (keydown)=\"onLegendKeyDown($event)\"\n>\n @if (legendWaiting()) { @for (line of repeat(3); track line) {\n <span\n data-ui=\"skeleton\"\n data-ui-skeleton=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-shape=\"block\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n } } @else if (current) { @for (entry of current.legend; track entry.key; let index = $index) {\n <ng-container\n *ngTemplateOutlet=\"legendItem; context: { $implicit: entry, rowHidden: collapsed().includes(index), inLayer: false }\"\n />\n }\n <button\n #moreControl\n type=\"button\"\n data-part=\"legend-more\"\n data-part-legend-more=\"\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"legendMoreName()\"\n [hidden]=\"collapsed().length === 0\"\n [attr.tabindex]=\"rovingKey() === null ? 0 : -1\"\n [attr.aria-expanded]=\"layerOpen()['more'] ?? false\"\n [attr.data-open]=\"layerOpen()['more'] ? '' : null\"\n (click)=\"toggleLayer('more')\"\n >\n {{ t('moreSeries', { count: collapsed().length }) }}\n </button>\n <div\n #moreLayer\n popover=\"auto\"\n data-part=\"menu\"\n data-part-menu=\"\"\n role=\"group\"\n [attr.aria-label]=\"t('legend')\"\n (toggle)=\"onLayerToggle('more', $event, moreControl, 'start')\"\n (keydown)=\"onLayerKeyDown($event)\"\n >\n @for (index of collapsed(); track index) { @if (current.legend[index]; as entry) {\n <ng-container\n *ngTemplateOutlet=\"legendItem; context: { $implicit: entry, rowHidden: false, inLayer: true }\"\n />\n } }\n </div>\n }\n</div>\n}\n<ng-template #legendItem let-entry let-rowHidden=\"rowHidden\" let-inLayer=\"inLayer\">\n @let color = colorOf(entry.color); @if (legendInteractive()) {\n <button\n type=\"button\"\n data-part=\"legend-item\"\n data-part-legend-item=\"\"\n [attr.data-key]=\"entry.key\"\n [attr.data-slot]=\"color.slot\"\n [attr.data-tone]=\"color.tone\"\n [attr.data-overflow]=\"color.overflow\"\n [attr.data-current]=\"isCurrent(entry) ? '' : null\"\n [attr.aria-pressed]=\"entry.visible\"\n [attr.data-pressed]=\"entry.visible ? '' : null\"\n [attr.tabindex]=\"inLayer || rovingKey() === entry.key ? 0 : -1\"\n [hidden]=\"rowHidden\"\n (click)=\"onLegendClick(entry, $event)\"\n (keydown)=\"onLegendItemKey(entry, $event)\"\n (focus)=\"legendFocus.set(inLayer ? legendFocus() : entry.key); emphasize(entry.visible ? entry.key : null)\"\n (blur)=\"emphasize(null)\"\n (pointerenter)=\"entry.visible && emphasize(entry.key)\"\n (pointerleave)=\"emphasize(null)\"\n >\n <ng-container *ngTemplateOutlet=\"legendContent; context: { $implicit: entry }\" />\n </button>\n } @else {\n <span\n role=\"listitem\"\n data-part=\"legend-item\"\n data-part-legend-item=\"\"\n [attr.data-key]=\"entry.key\"\n [attr.data-slot]=\"color.slot\"\n [attr.data-tone]=\"color.tone\"\n [attr.data-overflow]=\"color.overflow\"\n [attr.data-current]=\"isCurrent(entry) ? '' : null\"\n [hidden]=\"rowHidden\"\n (pointerenter)=\"entry.visible && emphasize(entry.key)\"\n (pointerleave)=\"emphasize(null)\"\n >\n <ng-container *ngTemplateOutlet=\"legendContent; context: { $implicit: entry }\" />\n </span>\n }\n</ng-template>\n<ng-template #legendContent let-entry>\n @if (legendItemTemplate(); as custom) {\n <ng-container\n *ngTemplateOutlet=\"custom.template; context: { $implicit: entry, value: legendValue(entry), current: isCurrent(entry) }\"\n />\n } @else {\n <span\n data-part=\"legend-marker\"\n data-part-legend-marker=\"\"\n [attr.data-kind]=\"entry.kind === 'area' || entry.kind === 'bar' || entry.kind === 'pie' ? 'bar' : entry.kind\"\n [attr.data-stroke]=\"strokeOf(entry)\"\n ></span>\n <span data-part=\"legend-label\" data-part-legend-label=\"\" [attr.title]=\"entry.label\"\n >{{ entry.label }}</span\n >\n @if (legendValues()) {\n <span data-part=\"legend-value\" data-part-legend-value=\"\">{{ legendValue(entry) }}</span>\n } }\n</ng-template>\n<div\n #plot\n data-part=\"plot\"\n data-part-plot=\"\"\n role=\"group\"\n tabindex=\"0\"\n [attr.aria-roledescription]=\"t('roledescription')\"\n [attr.aria-labelledby]=\"title() !== undefined ? id + '-title' : null\"\n [attr.aria-label]=\"title() === undefined ? t('roledescription') : null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n (keydown)=\"onPlotKeyDown($event)\"\n (focus)=\"onPlotFocus($event)\"\n (blur)=\"requestActive(null, 'blur', $event)\"\n>\n @let overlayNow = overlay();\n <div\n data-part=\"crosshair\"\n data-part-crosshair=\"\"\n [hidden]=\"!overlayNow.crosshair\"\n [attr.data-band]=\"overlayNow.crosshair?.isBand ? '' : null\"\n [attr.data-orientation]=\"current?.orientation ?? 'vertical'\"\n [style.--slotted-chart-x]=\"px(overlayNow.crosshair?.x)\"\n [style.--slotted-chart-y]=\"px(overlayNow.crosshair?.y)\"\n [style.--slotted-chart-band-start]=\"px(overlayNow.crosshair?.band?.start)\"\n [style.--slotted-chart-band-size]=\"px(overlayNow.crosshair?.band?.size)\"\n [style.--slotted-chart-frame-start]=\"px(overlayNow.crosshair?.frame?.start)\"\n [style.--slotted-chart-frame-size]=\"px(overlayNow.crosshair?.frame?.size)\"\n ></div>\n <div\n #canvas\n data-part=\"canvas\"\n data-part-canvas=\"\"\n aria-hidden=\"true\"\n [hidden]=\"!drawable()\"\n ></div>\n @for (marker of overlayNow.markers; track marker.key) { @let markerColor = colorOf(marker.color);\n <div\n data-part=\"marker\"\n data-part-marker=\"\"\n aria-hidden=\"true\"\n [attr.data-slot]=\"markerColor.slot\"\n [attr.data-tone]=\"markerColor.tone\"\n [attr.data-overflow]=\"markerColor.overflow\"\n [attr.data-selected]=\"marker.selected ? '' : null\"\n [attr.data-current]=\"marker.current ? '' : null\"\n [style.--slotted-chart-x]=\"px(marker.at.x)\"\n [style.--slotted-chart-y]=\"px(marker.at.y)\"\n ></div>\n }\n <div\n #tooltipBox\n data-part=\"tooltip\"\n data-part-tooltip=\"\"\n aria-hidden=\"true\"\n [attr.data-open]=\"overlayNow.tooltip ? '' : null\"\n [attr.data-docked]=\"overlayNow.docked ? '' : null\"\n >\n @if (overlayNow.tooltip && current) { @if (tooltipTemplate(); as custom) {\n <ng-container\n *ngTemplateOutlet=\"custom.template; context: { $implicit: overlayNow.tooltip, model: current }\"\n />\n } @else {\n <div data-part=\"tooltip-title\" data-part-tooltip-title=\"\">{{ overlayNow.tooltip.title }}</div>\n @for (note of overlayNow.tooltip.notes; track note) {\n <div data-part=\"tooltip-note\" data-part-tooltip-note=\"\">{{ note }}</div>\n } @for (item of overlayNow.tooltip.items; track item.series + item.label) { @let itemColor =\n colorOf(item.color);\n <div\n data-part=\"tooltip-item\"\n data-part-tooltip-item=\"\"\n [attr.data-current]=\"overlayNow.tooltip.items.length > 1 && item.current ? '' : null\"\n [attr.data-slot]=\"itemColor.slot\"\n [attr.data-tone]=\"itemColor.tone\"\n [attr.data-overflow]=\"itemColor.overflow\"\n >\n @if (resolvedTooltip().indicator !== 'none') {\n <span\n data-part=\"tooltip-marker\"\n data-part-tooltip-marker=\"\"\n [attr.data-kind]=\"markerKind(item.kind, resolvedTooltip().indicator)\"\n [attr.data-stroke]=\"strokeOf(item)\"\n ></span>\n }\n <span data-part=\"tooltip-label\" data-part-tooltip-label=\"\">{{ item.label }}</span>\n <span data-part=\"tooltip-value\" data-part-tooltip-value=\"\"\n >{{ item.share ? item.share + ' · ' + item.formatted : item.formatted }}</span\n >\n </div>\n } @if (overlayNow.tooltip.total; as total) {\n <div data-part=\"tooltip-total\" data-part-tooltip-total=\"\">\n <span>{{ t('total') }}</span>\n <span data-part=\"tooltip-value\" data-part-tooltip-value=\"\">{{ total.formatted }}</span>\n </div>\n } } }\n </div>\n @if (drawable() && current?.shape === 'pie' && (current?.series[0]?.innerRadius ?? 0) > 0) {\n <div data-part=\"center\" data-part-center=\"\" aria-hidden=\"true\">\n @if (centerTemplate(); as custom) {\n <ng-container *ngTemplateOutlet=\"custom.template; context: { $implicit: current }\" />\n } @else {\n <span data-part=\"center-value\" data-part-center-value=\"\"\n >{{ current!.series[0]!.format(current!.total) }}</span\n >\n <span data-part=\"center-label\" data-part-center-label=\"\">{{ t('total') }}</span>\n }\n </div>\n } @if (table(); as rows) {\n <div\n #tableRegion\n data-part=\"table-region\"\n data-part-table-region=\"\"\n role=\"region\"\n tabindex=\"0\"\n [attr.aria-labelledby]=\"title() !== undefined ? id + '-title' : null\"\n >\n <table data-part=\"table\" data-part-table=\"\">\n <caption>\n {{ title() }}\n </caption>\n <thead>\n <tr>\n @for (column of rows.columns; track column.key; let index = $index) {\n <th scope=\"col\" [attr.data-numeric]=\"index > 0 ? '' : null\">{{ column.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows.rows; track row.key) {\n <tr [attr.data-current]=\"row.key === activeKey() ? '' : null\">\n @for (cell of row.cells; track $index; let index = $index) { @if (index === 0) {\n <th scope=\"row\">{{ cell.text }}</th>\n } @else {\n <td data-numeric>{{ cell.text }}</td>\n } }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @if (loading()) {\n <div\n data-part=\"skeleton\"\n data-part-skeleton=\"\"\n aria-hidden=\"true\"\n [attr.data-kind]=\"skeletonKind()\"\n >\n <div\n data-ui=\"skeleton\"\n data-ui-skeleton=\"\"\n data-part=\"region\"\n data-part-region=\"\"\n data-animation=\"shimmer\"\n data-loading\n >\n @if (skeletonKind() === 'pie') {\n <span\n data-ui=\"skeleton\"\n data-ui-skeleton=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-shape=\"circle\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n } @else {\n <div data-skeleton=\"y\">\n @for (line of repeat(5); track line) {\n <span\n data-ui=\"skeleton\"\n data-ui-skeleton=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-shape=\"block\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n }\n </div>\n <div data-skeleton=\"marks\">\n @for (mark of repeat(skeletonKind() === 'bar' ? 7 : 2); track mark) {\n <span\n data-ui=\"skeleton\"\n data-ui-skeleton=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-shape=\"block\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n }\n </div>\n <div data-skeleton=\"x\">\n @for (line of repeat(6); track line) {\n <span\n data-ui=\"skeleton\"\n data-ui-skeleton=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-shape=\"block\"\n data-size=\"md\"\n data-animation=\"shimmer\"\n data-loading\n aria-hidden=\"true\"\n ></span>\n }\n </div>\n }\n </div>\n </div>\n } @else if (failed()) {\n <div data-part=\"error\" data-part-error=\"\">\n @if (errorTemplate(); as custom) {\n <ng-container *ngTemplateOutlet=\"custom.template\" />\n } @else {\n <section\n data-ui=\"result-state\"\n data-ui-result-state=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-status=\"error\"\n data-reach=\"section\"\n data-align=\"center\"\n data-live=\"polite\"\n >\n <div data-part=\"media\" data-part-media=\"\" aria-hidden=\"true\"></div>\n <div data-part=\"content\" data-part-content=\"\" role=\"status\">\n <div data-part=\"title\" data-part-title=\"\">{{ t('error') }}</div>\n </div>\n <div data-part=\"actions\" data-part-actions=\"\">\n <button\n data-ui=\"button\"\n data-ui-button=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-variant=\"outline\"\n data-tone=\"secondary\"\n data-size=\"sm\"\n type=\"button\"\n (click)=\"onRetry()\"\n >\n <span data-part=\"label\" data-part-label=\"\">{{ t('retry') }}</span>\n </button>\n </div>\n </section>\n }\n </div>\n } @else if (current?.empty; as reason) {\n <div data-part=\"empty\" data-part-empty=\"\">\n @if (emptyTemplate(); as custom) {\n <ng-container *ngTemplateOutlet=\"custom.template; context: { $implicit: reason }\" />\n } @else {\n <section\n data-ui=\"result-state\"\n data-ui-result-state=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-reach=\"section\"\n data-align=\"center\"\n data-live=\"polite\"\n [attr.data-status]=\"reason === 'all-hidden' ? 'no-results' : 'empty'\"\n >\n <div data-part=\"media\" data-part-media=\"\" aria-hidden=\"true\"></div>\n <div data-part=\"content\" data-part-content=\"\" role=\"status\">\n <div data-part=\"title\" data-part-title=\"\">\n {{ reason === 'all-hidden' ? t('allHidden') : t('noData') }}\n </div>\n </div>\n @if (reason === 'all-hidden') {\n <div data-part=\"actions\" data-part-actions=\"\">\n <button\n data-ui=\"button\"\n data-ui-button=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-variant=\"outline\"\n data-tone=\"secondary\"\n data-size=\"sm\"\n type=\"button\"\n (click)=\"showAll($event)\"\n >\n <span data-part=\"label\" data-part-label=\"\">{{ t('showAll') }}</span>\n </button>\n </div>\n }\n </section>\n }\n </div>\n }\n <p data-part=\"summary\" data-part-summary=\"\" [id]=\"id + '-summary'\">{{ summary() }}</p>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -248,10 +248,10 @@ class SlCheckboxGroup {
|
|
|
248
248
|
return true;
|
|
249
249
|
}
|
|
250
250
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCheckboxGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
251
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlCheckboxGroup, isStandalone: true, selector: "[slCheckboxGroup]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, allValues: { classPropertyName: "allValues", publicName: "allValues", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, labelPlacement: { classPropertyName: "labelPlacement", publicName: "labelPlacement", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "data-ui": "checkbox-group", "data-part": "root" }, properties: { "attr.role": "resolvedRole()", "attr.data-size": "resolvedSize()", "attr.data-orientation": "resolvedOrientation()", "attr.data-variant": "resolvedVariant()", "attr.data-disabled": "resolvedDisabled() === true ? '' : null", "attr.data-invalid": "resolvedInvalid() === true ? '' : null", "attr.data-readonly": "resolvedReadOnly() === true ? '' : null", "attr.aria-labelledby": "labelledBy()", "attr.aria-describedby": "describedBy()", "attr.aria-invalid": "ariaInvalid()", "attr.aria-required": "ariaRequired()" } }, providers: [
|
|
251
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlCheckboxGroup, isStandalone: true, selector: "[slCheckboxGroup]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, allValues: { classPropertyName: "allValues", publicName: "allValues", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, labelPlacement: { classPropertyName: "labelPlacement", publicName: "labelPlacement", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "data-ui": "checkbox-group", "data-ui-checkbox-group": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.role": "resolvedRole()", "attr.data-size": "resolvedSize()", "attr.data-orientation": "resolvedOrientation()", "attr.data-variant": "resolvedVariant()", "attr.data-disabled": "resolvedDisabled() === true ? '' : null", "attr.data-invalid": "resolvedInvalid() === true ? '' : null", "attr.data-readonly": "resolvedReadOnly() === true ? '' : null", "attr.aria-labelledby": "labelledBy()", "attr.aria-describedby": "describedBy()", "attr.aria-invalid": "ariaInvalid()", "attr.aria-required": "ariaRequired()" } }, providers: [
|
|
252
252
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlCheckboxGroup), multi: true },
|
|
253
253
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => SlCheckboxGroup), multi: true },
|
|
254
|
-
], exportAs: ["slCheckboxGroup"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui
|
|
254
|
+
], exportAs: ["slCheckboxGroup"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui-checkbox-group][data-part-root]{--_gap: var(--slotted-control-gap-md, 8px);display:flex;flex-direction:column;gap:var(--slotted-checkbox-group-gap, var(--_gap))}[data-ui-checkbox-group][data-part-root]:has([data-part-description]){row-gap:var(--slotted-checkbox-group-gap, calc(var(--_gap) * 2))}[data-ui-checkbox-group][data-part-root][data-orientation=horizontal]{column-gap:calc(var(--_gap) * 2);flex-direction:row;flex-wrap:wrap}[data-ui-checkbox-group][data-part-root][data-size=sm]{--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui-checkbox-group][data-part-root][data-size=md]{--_gap: var(--slotted-control-gap-md, 8px)}[data-ui-checkbox-group][data-part-root][data-size=lg]{--_gap: var(--slotted-control-gap-lg, 8px)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
255
255
|
}
|
|
256
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCheckboxGroup, decorators: [{
|
|
257
257
|
type: Component,
|
|
@@ -260,7 +260,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
260
260
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => SlCheckboxGroup), multi: true },
|
|
261
261
|
], host: {
|
|
262
262
|
'data-ui': 'checkbox-group',
|
|
263
|
+
'data-ui-checkbox-group': '',
|
|
263
264
|
'data-part': 'root',
|
|
265
|
+
'data-part-root': '',
|
|
264
266
|
'[attr.role]': 'resolvedRole()',
|
|
265
267
|
'[attr.data-size]': 'resolvedSize()',
|
|
266
268
|
'[attr.data-orientation]': 'resolvedOrientation()',
|
|
@@ -272,7 +274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
272
274
|
'[attr.aria-describedby]': 'describedBy()',
|
|
273
275
|
'[attr.aria-invalid]': 'ariaInvalid()',
|
|
274
276
|
'[attr.aria-required]': 'ariaRequired()',
|
|
275
|
-
}, styles: ["@layer slotted.components{[data-ui
|
|
277
|
+
}, styles: ["@layer slotted.components{[data-ui-checkbox-group][data-part-root]{--_gap: var(--slotted-control-gap-md, 8px);display:flex;flex-direction:column;gap:var(--slotted-checkbox-group-gap, var(--_gap))}[data-ui-checkbox-group][data-part-root]:has([data-part-description]){row-gap:var(--slotted-checkbox-group-gap, calc(var(--_gap) * 2))}[data-ui-checkbox-group][data-part-root][data-orientation=horizontal]{column-gap:calc(var(--_gap) * 2);flex-direction:row;flex-wrap:wrap}[data-ui-checkbox-group][data-part-root][data-size=sm]{--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui-checkbox-group][data-part-root][data-size=md]{--_gap: var(--slotted-control-gap-md, 8px)}[data-ui-checkbox-group][data-part-root][data-size=lg]{--_gap: var(--slotted-control-gap-lg, 8px)}}\n"] }]
|
|
276
278
|
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], allValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "allValues", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], labelPlacement: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPlacement", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], showCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCount", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|
|
277
279
|
|
|
278
280
|
/**
|