@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.11
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/action-bar.json +4 -4
- package/docs/action-bar.md +3 -3
- 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 +3 -2
- 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/command-palette.json +1 -0
- package/docs/command-palette.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 +45 -7
- package/docs/data-grid.md +3 -1
- package/docs/data-grid.props.md +7 -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/detail-panel.json +4 -2
- package/docs/detail-panel.md +8 -3
- package/docs/dialog.examples.md +158 -136
- package/docs/dialog.json +36 -11
- package/docs/dialog.md +4 -2
- package/docs/dialog.props.md +1 -1
- package/docs/drawer.json +11 -4
- package/docs/drawer.md +4 -3
- 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 +3 -2
- 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 +130 -0
- package/docs/guidelines/layout-alignment.md +105 -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 +22 -5
- package/docs/page-header.md +6 -4
- package/docs/page.json +2 -0
- package/docs/page.md +2 -1
- 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 +6 -6
- package/docs/section.json +28 -16
- package/docs/section.md +12 -10
- 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 +103 -0
- package/docs/skills/index.md +9 -0
- package/docs/skills/review-screen/SKILL.md +79 -0
- package/docs/skills/theme-app/SKILL.md +98 -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 +8 -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/toolbar.json +1 -1
- package/docs/toolbar.md +1 -1
- package/docs/tour.json +1 -1
- package/docs/typography.json +4 -2
- package/docs/typography.md +5 -5
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +27 -12
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-sheet.mjs +48 -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 +120 -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 +180 -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 +118 -39
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +162 -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 +480 -129
- 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 +48 -30
- 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 +91 -37
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +474 -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 +118 -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 +175 -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 +34 -15
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
- package/fesm2022/slotted-angular-message.mjs +119 -51
- package/fesm2022/slotted-angular-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +195 -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 +90 -48
- 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 +57 -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 +190 -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 +37 -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 +55 -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 +147 -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 +27 -12
- 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 +80 -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 +2 -0
- 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 +72 -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 +12 -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 +15 -6
- 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 +2 -0
- 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-code-block.mjs","sources":["../../code-block/src/code-block.constants.ts","../../code-block/src/code-block.ts","../../code-block/src/slotted-angular-code-block.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { CodeHighlighter, CodeMark } from '@slotted/core/code';\n\nexport type CodeBlockWrapReason = 'pointer' | 'keyboard' | 'programmatic';\nexport type CodeBlockRevealedReason = 'pointer' | 'keyboard' | 'escape' | 'programmatic';\nexport type { CodeMark };\n\nexport interface CodeBlockCopyRequest {\n readonly value: string;\n readonly reason: 'pointer' | 'keyboard';\n readonly copied: boolean;\n readonly source?: Event | undefined;\n}\n\nexport interface CodeBlockDefaults {\n highlight?: CodeHighlighter;\n lineNumbers?: boolean;\n copy?: boolean;\n}\n\nexport const CODE_BLOCK_DEFAULTS_TOKEN = new InjectionToken<CodeBlockDefaults>(\n 'slotted code-block defaults',\n { providedIn: 'root', factory: (): CodeBlockDefaults => ({}) },\n);\n\n/**\n * An application that has loaded an engine once hands it to every block here,\n * along with whether blocks number their lines and carry a copy control. A\n * block that states any of those itself still wins. Its words come from the\n * language in force (`provideSlotted`).\n */\nexport function provideCodeBlockDefaults(defaults: CodeBlockDefaults) {\n return { provide: CODE_BLOCK_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectCodeBlockDefaults(): CodeBlockDefaults {\n return inject(CODE_BLOCK_DEFAULTS_TOKEN);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport type { GlyphName } from '@slotted/angular/icon';\nimport { writeToClipboard } from '@slotted/core/clipboard';\nimport {\n copyText,\n gutterDigits,\n leadingColumns,\n lineMarks,\n lineText,\n plainLines,\n} from '@slotted/core/code';\nimport type { CodeHighlighter, CodeLine, CodeMarks, LineMark } from '@slotted/core/code';\nimport {\n codeBlockMessages,\n type CodeBlockMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { fileKind } from '@slotted/core/upload';\nimport { SlScrollArea, SlScrollAreaContent } from '@slotted/angular/scroll-area';\nimport type { ScrollEdgesState } from '@slotted/angular/scroll-area';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\n\nimport {\n injectCodeBlockDefaults,\n type CodeBlockCopyRequest,\n type CodeBlockRevealedReason,\n type CodeBlockWrapReason,\n} from './code-block.constants';\n\n/** How long the check stays in place of the sheets. */\nconst COPIED_FOR = 2000;\n\nconst KIND_ICON: Record<string, GlyphName> = {\n archive: 'file-archive',\n audio: 'file-audio',\n document: 'file-type',\n image: 'file-image',\n pdf: 'file-text',\n presentation: 'presentation',\n spreadsheet: 'file-spreadsheet',\n video: 'file-video',\n};\n\nlet counter = 0;\n\n/** A control of the consumer's own, projected beside copy and wrap. */\n@Directive({ selector: '[slCodeBlockAction]', standalone: true })\nexport class SlCodeBlockAction {}\n\n/** What a `slCodeBlockLine` template is handed for one line. */\nexport interface CodeBlockLineContext {\n $implicit: CodeLine;\n number: number;\n mark: LineMark['mark'];\n dim: boolean;\n}\n\n/** Replaces the run of tokens a line draws. The gutter stays the family's. */\n@Directive({ selector: 'ng-template[slCodeBlockLine]', standalone: true })\nexport class SlCodeBlockLine {\n readonly template = inject<TemplateRef<CodeBlockLineContext>>(TemplateRef);\n}\n\n/**\n * A block of source: a header that names the file and holds the two controls,\n * a body that is a `scroll-area`, and inside it a `pre` whose every line is a\n * grid row. Tokens come in from an engine outside the family and are drawn as\n * text in spans; HTML never does.\n */\n@Component({\n selector: '[slCodeBlock]',\n standalone: true,\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlScrollArea, SlScrollAreaContent, SlSkeleton],\n template: `\n @if (hasHeader()) {\n <div data-part=\"header\">\n @if (icon(); as glyph) {\n <span aria-hidden=\"true\" data-part=\"icon\"\n ><span slIcon><svg slGlyph [name]=\"glyph\"></svg></span\n ></span>\n }\n @if (title(); as words) {\n <span data-part=\"title\" [id]=\"id + '-title'\">{{ words }}</span>\n }\n @if (language() !== 'text') {\n <span data-part=\"language\">{{ language() }}</span>\n }\n @if (!loading()) {\n <div data-part=\"actions\">\n <ng-content select=\"[slCodeBlockAction]\"></ng-content>\n @if (overflow() || isWrapped()) {\n <button\n data-part=\"wrap\"\n type=\"button\"\n [attr.aria-label]=\"t(isWrapped() ? 'unwrap' : 'wrap')\"\n [attr.aria-pressed]=\"isWrapped()\"\n [attr.data-pressed]=\"isWrapped() ? '' : null\"\n (click)=\"toggleWrap($event)\"\n (keydown)=\"remember($event)\"\n >\n <span slIcon><svg slGlyph name=\"text-wrap\"></svg></span>\n </button>\n }\n @if (copyControl()) {\n <button\n data-part=\"copy\"\n type=\"button\"\n [attr.aria-label]=\"t('copy')\"\n [attr.data-complete]=\"copied() ? '' : null\"\n (click)=\"copyFromControl($event)\"\n (keydown)=\"remember($event)\"\n >\n <!-- The check stands in for the sheets while the copy is confirmed. -->\n <span slIcon><svg slGlyph [name]=\"copied() ? 'check' : 'copy'\"></svg></span>\n </button>\n }\n </div>\n }\n </div>\n }\n <div\n #body\n slScrollArea\n data-part=\"body\"\n [axis]=\"maxLines() === undefined ? 'inline' : 'both'\"\n fade=\"both\"\n gutter=\"auto\"\n [id]=\"id + '-body'\"\n [messages]=\"{ label: regionName() }\"\n [attr.data-max-lines]=\"maxLines() === undefined ? null : ''\"\n (overflowChange)=\"onOverflow($event)\"\n >\n <div slScrollAreaContent>\n <pre\n data-part=\"pre\"\n ><code data-part=\"code\" [class]=\"'language-' + language()\">@if (loading()) {@for (width of skeletonWidths; track $index) {<span slSkeleton shape=\"text\" aria-hidden=\"true\" [style.inline-size]=\"width + '%'\"></span>}} @else {@for (line of rows(); track $index) {<span data-part=\"line\" [attr.data-line]=\"line.number\" [attr.data-mark]=\"line.mark ?? null\" [attr.data-dim]=\"line.dim ? '' : null\" [style.--slotted-code-block-indent]=\"line.indent > 0 ? line.indent : null\"><span aria-hidden=\"true\" data-part=\"number\">@if (lineNumbersValue()) {{{ line.number }}}</span><span aria-hidden=\"true\" data-part=\"marker\"></span><span data-part=\"text\">@if (lineTemplate(); as custom) {<ng-container [ngTemplateOutlet]=\"custom.template\" [ngTemplateOutletContext]=\"{ $implicit: line.tokens, number: line.number, mark: line.mark, dim: line.dim }\" />} @else {@for (token of line.tokens; track $index) {@if (token.scope) {<span data-part=\"token\" [attr.data-token]=\"token.scope\">{{ token.text }}</span>} @else {{{ token.text }}}}}</span></span>}}</code></pre>\n </div>\n </div>\n @if (collapses()) {\n <button\n data-part=\"reveal\"\n type=\"button\"\n [attr.aria-controls]=\"id + '-body'\"\n [attr.aria-expanded]=\"isRevealed()\"\n (click)=\"toggleRevealed($event)\"\n (keydown)=\"remember($event)\"\n >\n {{ isRevealed() ? t('collapse') : t('reveal', { count: hiddenCount() }) }}\n </button>\n }\n `,\n styleUrl: '../../../styles/src/code-block/code-block.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slCodeBlock',\n host: {\n 'data-ui': 'code-block',\n 'data-part': 'root',\n '[attr.data-language]': 'language()',\n '[attr.data-wrap]': 'isWrapped() ? \"\" : null',\n '[attr.data-revealed]': 'isRevealed() ? \"\" : null',\n '[attr.data-collapse]': 'collapses() ? \"\" : null',\n '[attr.data-line-numbers]': 'lineNumbersValue() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\n '[attr.data-empty]': 'code() === \"\" ? \"\" : null',\n '[attr.data-marks]': 'hasMarks() ? \"\" : null',\n '[attr.data-overflow]': 'overflow() ? \"\" : null',\n '[style.--slotted-code-block-digits]': 'digits()',\n '[style.--slotted-code-block-collapse]': 'collapses() ? collapseAfter() : null',\n '[style.--slotted-code-block-max-lines]': 'maxLines() ?? null',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class SlCodeBlock {\n /** The source, as text. Never HTML. */\n readonly code = input.required<string>();\n readonly language = input('text');\n /** The engine, outside the family. `null` refuses the one the provider set. */\n readonly highlight = input<CodeHighlighter | null | undefined>(undefined);\n /** Already-tokenised lines, when the consumer ran the engine itself. */\n readonly tokens = input<readonly CodeLine[] | undefined>(undefined);\n readonly title = input<string | undefined>(undefined);\n /** The file's name, for the glyph beside the title. Defaults to `title`. */\n readonly fileName = input<string | undefined>(undefined);\n readonly lineNumbers = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly start = input(1, { transform: numberAttribute });\n readonly marks = input<CodeMarks | undefined>(undefined);\n /** Present is controlled, for the life of the block. */\n readonly wrap = model<boolean | undefined>(undefined);\n /** Where an uncontrolled block starts, read once. */\n readonly defaultWrap = input(false, { transform: booleanAttribute });\n readonly collapseAfter = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly revealed = model<boolean | undefined>(undefined);\n readonly defaultRevealed = input(false, { transform: booleanAttribute });\n readonly isWrapped = computed(() => this.wrap() ?? this.defaultWrap());\n readonly isRevealed = computed(() => this.revealed() ?? this.defaultRevealed());\n readonly maxLines = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly copy = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly copyRemoved = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * scroll region's name when the block has no title (`region`), the controls,\n * and the announcements.\n */\n readonly messages = input<PartialMessages<CodeBlockMessages> | undefined>(undefined);\n readonly tabSize = input(2, { transform: numberAttribute });\n\n /** The request behind a wrap change, with the reason it carries. */\n readonly wrapChangeRequest = output<ChangeRequest<boolean>>();\n readonly revealedChangeRequest = output<ChangeRequest<boolean>>();\n /** What the copy control wrote, and whether the platform took it. */\n readonly copyRequest = output<CodeBlockCopyRequest>();\n readonly highlightError = output<unknown>();\n\n private readonly defaults = injectCodeBlockDefaults();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ariaLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly body = viewChild.required<SlScrollArea>('body');\n protected readonly lineTemplate = contentChild(SlCodeBlockLine);\n private readonly action = contentChild(SlCodeBlockAction);\n\n readonly id = `slotted-code-block-${(counter += 1)}`;\n protected readonly skeletonWidths = [62, 78, 44, 70];\n\n /** The family's words in the language in force, with this block's `messages` laid over them. */\n readonly t = injectMessages(codeBlockMessages, this.messages);\n protected readonly lineNumbersValue = computed(\n () => this.lineNumbers() ?? this.defaults.lineNumbers ?? false,\n );\n protected readonly copyControl = computed(() => this.copy() ?? this.defaults.copy ?? true);\n private readonly engine = computed(() => {\n const own = this.highlight();\n return own === null ? undefined : (own ?? this.defaults.highlight);\n });\n\n private readonly resolved = signal<{ code: string; lines: readonly CodeLine[] } | null>(null);\n protected readonly copied = signal(false);\n protected readonly overflow = signal(false);\n private timer: ReturnType<typeof setTimeout> | undefined;\n private keyed = false;\n\n private readonly lines = computed<readonly CodeLine[]>(() => {\n const tokens = this.tokens();\n if (tokens) return tokens;\n const resolved = this.resolved();\n return resolved && resolved.code === this.code() ? resolved.lines : plainLines(this.code());\n });\n\n private readonly marksByLine = computed(() => lineMarks(this.marks(), this.lines().length));\n protected readonly hasMarks = computed(() =>\n this.marksByLine().some((entry) => entry.mark !== undefined || entry.dim),\n );\n\n protected readonly rows = computed(() => {\n const marks = this.marksByLine();\n const start = this.start();\n const wrap = this.isWrapped();\n const tabSize = this.tabSize();\n return this.lines().map((tokens, index) => ({\n dim: marks[index]?.dim ?? false,\n indent: wrap ? leadingColumns(lineText(tokens), tabSize) : 0,\n mark: marks[index]?.mark,\n number: start + index,\n tokens,\n }));\n });\n\n protected readonly digits = computed(() => gutterDigits(this.lines().length, this.start()));\n protected readonly collapses = computed(() => {\n const after = this.collapseAfter();\n return after !== undefined && this.lines().length > after;\n });\n protected readonly hiddenCount = computed(() =>\n this.collapses() ? this.lines().length - (this.collapseAfter() ?? 0) : 0,\n );\n protected readonly hasHeader = computed(\n () =>\n this.title() !== undefined ||\n this.language() !== 'text' ||\n this.copyControl() ||\n this.action() !== undefined,\n );\n protected readonly icon = computed(() => {\n const name = this.fileName() ?? this.title();\n if (!name || this.title() === undefined) return undefined;\n return KIND_ICON[fileKind({ name, type: '' })] ?? 'file';\n });\n protected readonly regionName = computed(\n () => this.title() ?? this.ariaLabel ?? this.t('region'),\n );\n\n constructor() {\n /* The engine runs after the first paint and its lines are swapped in. */\n effect((onCleanup) => {\n const engine = this.engine();\n const code = this.code();\n const language = this.language();\n if (!engine || this.tokens()) return;\n let live = true;\n onCleanup(() => {\n live = false;\n });\n Promise.resolve()\n .then(() => engine(code, language))\n .then((lines) => {\n if (live) this.resolved.set({ code, lines });\n })\n .catch((error: unknown) => {\n if (live) this.highlightError.emit(error);\n });\n });\n this.destroyRef.onDestroy(() => clearTimeout(this.timer));\n }\n\n protected onOverflow(state: ScrollEdgesState) {\n this.overflow.set(state.inline.overflowing);\n }\n\n /** `Enter` and `Space` both end in a click; whether a key came first decides the reason. */\n protected remember(event: KeyboardEvent) {\n this.keyed = event.key === 'Enter' || event.key === ' ';\n }\n\n private takeReason(): 'pointer' | 'keyboard' {\n const reason = this.keyed ? 'keyboard' : 'pointer';\n this.keyed = false;\n return reason;\n }\n\n protected toggleWrap(event?: Event) {\n this.requestWrap(!this.isWrapped(), this.takeReason(), event);\n }\n\n requestWrap(next: boolean, reason: CodeBlockWrapReason, source?: Event) {\n const state = createControllable<boolean>({\n initial: this.isWrapped(),\n onRequest: (request) => this.wrapChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.wrap.set(next);\n }\n\n protected toggleRevealed(event?: Event) {\n this.requestRevealed(!this.isRevealed(), this.takeReason(), event);\n }\n\n requestRevealed(next: boolean, reason: CodeBlockRevealedReason, source?: Event) {\n const state = createControllable<boolean>({\n initial: this.isRevealed(),\n onRequest: (request) => this.revealedChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.revealed.set(next);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Escape') return;\n if (!untracked(this.collapses) || !untracked(this.revealed)) return;\n event.preventDefault();\n this.requestRevealed(false, 'escape', event);\n this.body().focus();\n }\n\n protected copyFromControl(event: Event) {\n void this.write(this.takeReason(), event);\n }\n\n /** Writes the code to the clipboard, as the control does. */\n copyCode(): Promise<boolean> {\n return this.write('keyboard');\n }\n\n private async write(reason: 'pointer' | 'keyboard', source?: Event): Promise<boolean> {\n const value = copyText(this.code(), this.marks(), { includeRemoved: this.copyRemoved() });\n const done = (await writeToClipboard(value)) !== 'refused';\n if (done) {\n this.copied.set(true);\n clearTimeout(this.timer);\n this.timer = setTimeout(() => this.copied.set(false), COPIED_FOR);\n }\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(\n this.t(done ? 'copied' : 'copyFailed'),\n );\n this.copyRequest.emit({ copied: done, reason, source, value });\n return done;\n }\n\n /** Brings a one-based line into view. */\n scrollToLine(line: number) {\n const element = this.host.nativeElement.querySelector<HTMLElement>(`[data-line='${line}']`);\n if (element) this.body().reveal(element);\n }\n}\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-code-block.mjs","sources":["../../code-block/src/code-block.constants.ts","../../code-block/src/code-block.ts","../../code-block/src/slotted-angular-code-block.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { CodeHighlighter, CodeMark } from '@slotted/core/code';\n\nexport type CodeBlockWrapReason = 'pointer' | 'keyboard' | 'programmatic';\nexport type CodeBlockRevealedReason = 'pointer' | 'keyboard' | 'escape' | 'programmatic';\nexport type { CodeMark };\n\nexport interface CodeBlockCopyRequest {\n readonly value: string;\n readonly reason: 'pointer' | 'keyboard';\n readonly copied: boolean;\n readonly source?: Event | undefined;\n}\n\nexport interface CodeBlockDefaults {\n highlight?: CodeHighlighter;\n lineNumbers?: boolean;\n copy?: boolean;\n}\n\nexport const CODE_BLOCK_DEFAULTS_TOKEN = new InjectionToken<CodeBlockDefaults>(\n 'slotted code-block defaults',\n { providedIn: 'root', factory: (): CodeBlockDefaults => ({}) },\n);\n\n/**\n * An application that has loaded an engine once hands it to every block here,\n * along with whether blocks number their lines and carry a copy control. A\n * block that states any of those itself still wins. Its words come from the\n * language in force (`provideSlotted`).\n */\nexport function provideCodeBlockDefaults(defaults: CodeBlockDefaults) {\n return { provide: CODE_BLOCK_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectCodeBlockDefaults(): CodeBlockDefaults {\n return inject(CODE_BLOCK_DEFAULTS_TOKEN);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport type { GlyphName } from '@slotted/angular/icon';\nimport { writeToClipboard } from '@slotted/core/clipboard';\nimport {\n copyText,\n gutterDigits,\n leadingColumns,\n lineMarks,\n lineText,\n plainLines,\n} from '@slotted/core/code';\nimport type { CodeHighlighter, CodeLine, CodeMarks, LineMark } from '@slotted/core/code';\nimport {\n codeBlockMessages,\n type CodeBlockMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { fileKind } from '@slotted/core/upload';\nimport { SlScrollArea, SlScrollAreaContent } from '@slotted/angular/scroll-area';\nimport type { ScrollEdgesState } from '@slotted/angular/scroll-area';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\n\nimport {\n injectCodeBlockDefaults,\n type CodeBlockCopyRequest,\n type CodeBlockRevealedReason,\n type CodeBlockWrapReason,\n} from './code-block.constants';\n\n/** How long the check stays in place of the sheets. */\nconst COPIED_FOR = 2000;\n\nconst KIND_ICON: Record<string, GlyphName> = {\n archive: 'file-archive',\n audio: 'file-audio',\n document: 'file-type',\n image: 'file-image',\n pdf: 'file-text',\n presentation: 'presentation',\n spreadsheet: 'file-spreadsheet',\n video: 'file-video',\n};\n\nlet counter = 0;\n\n/** A control of the consumer's own, projected beside copy and wrap. */\n@Directive({ selector: '[slCodeBlockAction]', standalone: true })\nexport class SlCodeBlockAction {}\n\n/** What a `slCodeBlockLine` template is handed for one line. */\nexport interface CodeBlockLineContext {\n $implicit: CodeLine;\n number: number;\n mark: LineMark['mark'];\n dim: boolean;\n}\n\n/** Replaces the run of tokens a line draws. The gutter stays the family's. */\n@Directive({ selector: 'ng-template[slCodeBlockLine]', standalone: true })\nexport class SlCodeBlockLine {\n readonly template = inject<TemplateRef<CodeBlockLineContext>>(TemplateRef);\n}\n\n/**\n * A block of source: a header that names the file and holds the two controls,\n * a body that is a `scroll-area`, and inside it a `pre` whose every line is a\n * grid row. Tokens come in from an engine outside the family and are drawn as\n * text in spans; HTML never does.\n */\n@Component({\n selector: '[slCodeBlock]',\n standalone: true,\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlScrollArea, SlScrollAreaContent, SlSkeleton],\n template: `\n @if (hasHeader()) {\n <div data-part=\"header\" data-part-header=\"\">\n @if (icon(); as glyph) {\n <span aria-hidden=\"true\" data-part=\"icon\" data-part-icon=\"\"\n ><span slIcon><svg slGlyph [name]=\"glyph\"></svg></span\n ></span>\n }\n @if (title(); as words) {\n <span data-part=\"title\" data-part-title=\"\" [id]=\"id + '-title'\">{{ words }}</span>\n }\n @if (language() !== 'text') {\n <span data-part=\"language\" data-part-language=\"\">{{ language() }}</span>\n }\n @if (!loading()) {\n <div data-part=\"actions\" data-part-actions=\"\">\n <ng-content select=\"[slCodeBlockAction]\"></ng-content>\n @if (overflow() || isWrapped()) {\n <button\n data-part=\"wrap\"\n data-part-wrap=\"\"\n type=\"button\"\n [attr.aria-label]=\"t(isWrapped() ? 'unwrap' : 'wrap')\"\n [attr.aria-pressed]=\"isWrapped()\"\n [attr.data-pressed]=\"isWrapped() ? '' : null\"\n (click)=\"toggleWrap($event)\"\n (keydown)=\"remember($event)\"\n >\n <span slIcon><svg slGlyph name=\"text-wrap\"></svg></span>\n </button>\n }\n @if (copyControl()) {\n <button\n data-part=\"copy\"\n data-part-copy=\"\"\n type=\"button\"\n [attr.aria-label]=\"t('copy')\"\n [attr.data-complete]=\"copied() ? '' : null\"\n (click)=\"copyFromControl($event)\"\n (keydown)=\"remember($event)\"\n >\n <!-- The check stands in for the sheets while the copy is confirmed. -->\n <span slIcon><svg slGlyph [name]=\"copied() ? 'check' : 'copy'\"></svg></span>\n </button>\n }\n </div>\n }\n </div>\n }\n <div\n #body\n slScrollArea\n data-part=\"body\"\n data-part-body=\"\"\n [attr.data-part-root]=\"null\"\n [axis]=\"maxLines() === undefined ? 'inline' : 'both'\"\n fade=\"both\"\n gutter=\"auto\"\n [id]=\"id + '-body'\"\n [messages]=\"{ label: regionName() }\"\n [attr.data-max-lines]=\"maxLines() === undefined ? null : ''\"\n (overflowChange)=\"onOverflow($event)\"\n >\n <div slScrollAreaContent>\n <pre\n data-part=\"pre\"\n data-part-pre=\"\"\n ><code data-part=\"code\" data-part-code=\"\" [class]=\"'language-' + language()\">@if (loading()) {@for (width of skeletonWidths; track $index) {<span slSkeleton shape=\"text\" aria-hidden=\"true\" [style.inline-size]=\"width + '%'\"></span>}} @else {@for (line of rows(); track $index) {<span data-part=\"line\" data-part-line=\"\" [attr.data-line]=\"line.number\" [attr.data-mark]=\"line.mark ?? null\" [attr.data-dim]=\"line.dim ? '' : null\" [style.--slotted-code-block-indent]=\"line.indent > 0 ? line.indent : null\"><span aria-hidden=\"true\" data-part=\"number\" data-part-number=\"\">@if (lineNumbersValue()) {{{ line.number }}}</span><span aria-hidden=\"true\" data-part=\"marker\" data-part-marker=\"\"></span><span data-part=\"text\" data-part-text=\"\">@if (lineTemplate(); as custom) {<ng-container [ngTemplateOutlet]=\"custom.template\" [ngTemplateOutletContext]=\"{ $implicit: line.tokens, number: line.number, mark: line.mark, dim: line.dim }\" />} @else {@for (token of line.tokens; track $index) {@if (token.scope) {<span data-part=\"token\" data-part-token=\"\" [attr.data-token]=\"token.scope\">{{ token.text }}</span>} @else {{{ token.text }}}}}</span></span>}}</code></pre>\n </div>\n </div>\n @if (collapses()) {\n <button\n data-part=\"reveal\"\n data-part-reveal=\"\"\n type=\"button\"\n [attr.aria-controls]=\"id + '-body'\"\n [attr.aria-expanded]=\"isRevealed()\"\n (click)=\"toggleRevealed($event)\"\n (keydown)=\"remember($event)\"\n >\n {{ isRevealed() ? t('collapse') : t('reveal', { count: hiddenCount() }) }}\n </button>\n }\n `,\n styleUrl: '../../../styles/src/code-block/code-block.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slCodeBlock',\n host: {\n 'data-ui': 'code-block',\n 'data-ui-code-block': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-language]': 'language()',\n '[attr.data-wrap]': 'isWrapped() ? \"\" : null',\n '[attr.data-revealed]': 'isRevealed() ? \"\" : null',\n '[attr.data-collapse]': 'collapses() ? \"\" : null',\n '[attr.data-line-numbers]': 'lineNumbersValue() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\n '[attr.data-empty]': 'code() === \"\" ? \"\" : null',\n '[attr.data-marks]': 'hasMarks() ? \"\" : null',\n '[attr.data-overflow]': 'overflow() ? \"\" : null',\n '[style.--slotted-code-block-digits]': 'digits()',\n '[style.--slotted-code-block-collapse]': 'collapses() ? collapseAfter() : null',\n '[style.--slotted-code-block-max-lines]': 'maxLines() ?? null',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class SlCodeBlock {\n /** The source, as text. Never HTML. */\n readonly code = input.required<string>();\n readonly language = input('text');\n /** The engine, outside the family. `null` refuses the one the provider set. */\n readonly highlight = input<CodeHighlighter | null | undefined>(undefined);\n /** Already-tokenised lines, when the consumer ran the engine itself. */\n readonly tokens = input<readonly CodeLine[] | undefined>(undefined);\n readonly title = input<string | undefined>(undefined);\n /** The file's name, for the glyph beside the title. Defaults to `title`. */\n readonly fileName = input<string | undefined>(undefined);\n readonly lineNumbers = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly start = input(1, { transform: numberAttribute });\n readonly marks = input<CodeMarks | undefined>(undefined);\n /** Present is controlled, for the life of the block. */\n readonly wrap = model<boolean | undefined>(undefined);\n /** Where an uncontrolled block starts, read once. */\n readonly defaultWrap = input(false, { transform: booleanAttribute });\n readonly collapseAfter = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly revealed = model<boolean | undefined>(undefined);\n readonly defaultRevealed = input(false, { transform: booleanAttribute });\n readonly isWrapped = computed(() => this.wrap() ?? this.defaultWrap());\n readonly isRevealed = computed(() => this.revealed() ?? this.defaultRevealed());\n readonly maxLines = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly copy = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly copyRemoved = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * scroll region's name when the block has no title (`region`), the controls,\n * and the announcements.\n */\n readonly messages = input<PartialMessages<CodeBlockMessages> | undefined>(undefined);\n readonly tabSize = input(2, { transform: numberAttribute });\n\n /** The request behind a wrap change, with the reason it carries. */\n readonly wrapChangeRequest = output<ChangeRequest<boolean>>();\n readonly revealedChangeRequest = output<ChangeRequest<boolean>>();\n /** What the copy control wrote, and whether the platform took it. */\n readonly copyRequest = output<CodeBlockCopyRequest>();\n readonly highlightError = output<unknown>();\n\n private readonly defaults = injectCodeBlockDefaults();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ariaLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly body = viewChild.required<SlScrollArea>('body');\n protected readonly lineTemplate = contentChild(SlCodeBlockLine);\n private readonly action = contentChild(SlCodeBlockAction);\n\n readonly id = `slotted-code-block-${(counter += 1)}`;\n protected readonly skeletonWidths = [62, 78, 44, 70];\n\n /** The family's words in the language in force, with this block's `messages` laid over them. */\n readonly t = injectMessages(codeBlockMessages, this.messages);\n protected readonly lineNumbersValue = computed(\n () => this.lineNumbers() ?? this.defaults.lineNumbers ?? false,\n );\n protected readonly copyControl = computed(() => this.copy() ?? this.defaults.copy ?? true);\n private readonly engine = computed(() => {\n const own = this.highlight();\n return own === null ? undefined : (own ?? this.defaults.highlight);\n });\n\n private readonly resolved = signal<{ code: string; lines: readonly CodeLine[] } | null>(null);\n protected readonly copied = signal(false);\n protected readonly overflow = signal(false);\n private timer: ReturnType<typeof setTimeout> | undefined;\n private keyed = false;\n\n private readonly lines = computed<readonly CodeLine[]>(() => {\n const tokens = this.tokens();\n if (tokens) return tokens;\n const resolved = this.resolved();\n return resolved && resolved.code === this.code() ? resolved.lines : plainLines(this.code());\n });\n\n private readonly marksByLine = computed(() => lineMarks(this.marks(), this.lines().length));\n protected readonly hasMarks = computed(() =>\n this.marksByLine().some((entry) => entry.mark !== undefined || entry.dim),\n );\n\n protected readonly rows = computed(() => {\n const marks = this.marksByLine();\n const start = this.start();\n const wrap = this.isWrapped();\n const tabSize = this.tabSize();\n return this.lines().map((tokens, index) => ({\n dim: marks[index]?.dim ?? false,\n indent: wrap ? leadingColumns(lineText(tokens), tabSize) : 0,\n mark: marks[index]?.mark,\n number: start + index,\n tokens,\n }));\n });\n\n protected readonly digits = computed(() => gutterDigits(this.lines().length, this.start()));\n protected readonly collapses = computed(() => {\n const after = this.collapseAfter();\n return after !== undefined && this.lines().length > after;\n });\n protected readonly hiddenCount = computed(() =>\n this.collapses() ? this.lines().length - (this.collapseAfter() ?? 0) : 0,\n );\n protected readonly hasHeader = computed(\n () =>\n this.title() !== undefined ||\n this.language() !== 'text' ||\n this.copyControl() ||\n this.action() !== undefined,\n );\n protected readonly icon = computed(() => {\n const name = this.fileName() ?? this.title();\n if (!name || this.title() === undefined) return undefined;\n return KIND_ICON[fileKind({ name, type: '' })] ?? 'file';\n });\n protected readonly regionName = computed(\n () => this.title() ?? this.ariaLabel ?? this.t('region'),\n );\n\n constructor() {\n /* The engine runs after the first paint and its lines are swapped in. */\n effect((onCleanup) => {\n const engine = this.engine();\n const code = this.code();\n const language = this.language();\n if (!engine || this.tokens()) return;\n let live = true;\n onCleanup(() => {\n live = false;\n });\n Promise.resolve()\n .then(() => engine(code, language))\n .then((lines) => {\n if (live) this.resolved.set({ code, lines });\n })\n .catch((error: unknown) => {\n if (live) this.highlightError.emit(error);\n });\n });\n this.destroyRef.onDestroy(() => clearTimeout(this.timer));\n }\n\n protected onOverflow(state: ScrollEdgesState) {\n this.overflow.set(state.inline.overflowing);\n }\n\n /** `Enter` and `Space` both end in a click; whether a key came first decides the reason. */\n protected remember(event: KeyboardEvent) {\n this.keyed = event.key === 'Enter' || event.key === ' ';\n }\n\n private takeReason(): 'pointer' | 'keyboard' {\n const reason = this.keyed ? 'keyboard' : 'pointer';\n this.keyed = false;\n return reason;\n }\n\n protected toggleWrap(event?: Event) {\n this.requestWrap(!this.isWrapped(), this.takeReason(), event);\n }\n\n requestWrap(next: boolean, reason: CodeBlockWrapReason, source?: Event) {\n const state = createControllable<boolean>({\n initial: this.isWrapped(),\n onRequest: (request) => this.wrapChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.wrap.set(next);\n }\n\n protected toggleRevealed(event?: Event) {\n this.requestRevealed(!this.isRevealed(), this.takeReason(), event);\n }\n\n requestRevealed(next: boolean, reason: CodeBlockRevealedReason, source?: Event) {\n const state = createControllable<boolean>({\n initial: this.isRevealed(),\n onRequest: (request) => this.revealedChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.revealed.set(next);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Escape') return;\n if (!untracked(this.collapses) || !untracked(this.revealed)) return;\n event.preventDefault();\n this.requestRevealed(false, 'escape', event);\n this.body().focus();\n }\n\n protected copyFromControl(event: Event) {\n void this.write(this.takeReason(), event);\n }\n\n /** Writes the code to the clipboard, as the control does. */\n copyCode(): Promise<boolean> {\n return this.write('keyboard');\n }\n\n private async write(reason: 'pointer' | 'keyboard', source?: Event): Promise<boolean> {\n const value = copyText(this.code(), this.marks(), { includeRemoved: this.copyRemoved() });\n const done = (await writeToClipboard(value)) !== 'refused';\n if (done) {\n this.copied.set(true);\n clearTimeout(this.timer);\n this.timer = setTimeout(() => this.copied.set(false), COPIED_FOR);\n }\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(\n this.t(done ? 'copied' : 'copyFailed'),\n );\n this.copyRequest.emit({ copied: done, reason, source, value });\n return done;\n }\n\n /** Brings a one-based line into view. */\n scrollToLine(line: number) {\n const element = this.host.nativeElement.querySelector<HTMLElement>(`[data-line='${line}']`);\n if (element) this.body().reveal(element);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -188,13 +188,15 @@ class SlCollapsible {
|
|
|
188
188
|
this.open.set(next);
|
|
189
189
|
}
|
|
190
190
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsible, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
191
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlCollapsible, isStandalone: true, selector: "[slCollapsible]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, region: { classPropertyName: "region", publicName: "region", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null }, togglePlacement: { classPropertyName: "togglePlacement", publicName: "togglePlacement", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, mount: { classPropertyName: "mount", publicName: "mount", isSignal: true, isRequired: false, transformFunction: null }, truncate: { classPropertyName: "truncate", publicName: "truncate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openChangeRequest: "openChangeRequest" }, host: { attributes: { "data-ui": "collapsible", "data-part": "root" }, properties: { "attr.data-value": "identity()", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "attr.data-indicator": "resolvedIndicator()", "attr.data-toggle-placement": "resolvedTogglePlacement()", "attr.data-mount": "resolvedMount()", "attr.data-truncate": "resolvedTruncate() ? '' : null", "attr.data-open": "isOpen() ? '' : null", "attr.data-disabled": "resolvedDisabled() ? '' : null", "attr.data-loading": "loading() ? '' : null" } }, exportAs: ["slCollapsible"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=collapsible]{--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, .8125rem);--_gap: var(--slotted-control-gap-md, .5rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_font-size: var(--slotted-font-size-md, .875rem);--_description-font-size: var(--slotted-font-size-xs, .75rem);--_panel-font-size: var(--slotted-font-size-md, .875rem);--_padding-block: var(--slotted-space-4, .5rem);--_rule-size: var(--slotted-border-width-thin, 1px);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;inline-size:100%;min-inline-size:0}[data-ui=collapsible][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_font-size: var(--slotted-font-size-sm, .8125rem);--_description-font-size: var(--slotted-font-size-xs, .75rem);--_panel-font-size: var(--slotted-font-size-sm, .8125rem);--_padding-inline: var(--slotted-control-padding-inline-sm, .625rem);--_gap: var(--slotted-control-gap-sm, .375rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_padding-block: var(--slotted-space-3, .375rem)}[data-ui=collapsible][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_font-size: var(--slotted-font-size-lg, 1rem);--_description-font-size: var(--slotted-font-size-sm, .8125rem);--_panel-font-size: var(--slotted-font-size-md, .875rem);--_padding-inline: var(--slotted-control-padding-inline-lg, 1rem);--_gap: var(--slotted-control-gap-lg, .5rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_padding-block: var(--slotted-space-5, .75rem)}[data-ui=collapsible]>[data-part=header]{font:inherit;grid-column:1;grid-row:1;margin:0;min-inline-size:0}[data-ui=collapsible]>[data-part=header]>[data-part=trigger]{align-items:center;appearance:none;background-color:var(--slotted-collapsible-background, transparent);border:0;color:var(--slotted-collapsible-color, var(--slotted-text, CanvasText));column-gap:var(--_gap);cursor:pointer;display:grid;font-family:var(--slotted-control-font-family, inherit);font-size:var(--_font-size);font-weight:var(--slotted-font-weight-medium, 500);grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;justify-self:stretch;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-line-height-md, 1.5);min-block-size:var(--_height);min-inline-size:0;padding-block:var(--_padding-block);padding-inline:var(--slotted-collapsible-padding-inline, var(--_padding-inline));text-align:start;transition:background-color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard)),color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=collapsible]>[data-part=header]>[data-part=trigger]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-offset, 2px))}[data-ui=collapsible]>[data-part=header]>[data-part=trigger]>[data-part=label]{grid-column:1;grid-row:1;min-inline-size:0;overflow-wrap:break-word;unicode-bidi:isolate}[data-ui=collapsible][data-truncate]>[data-part=header]>[data-part=trigger]>[data-part=label]{overflow:hidden;overflow-wrap:normal;text-overflow:ellipsis;white-space:nowrap}[data-ui=collapsible]>[data-part=header]>[data-part=trigger]>[data-part=description]{color:var(--slotted-collapsible-description-color, var(--slotted-text-muted, GrayText));font-size:var(--_description-font-size);font-weight:var(--slotted-font-weight-regular, 400);grid-column:1;grid-row:2;min-inline-size:0;overflow-wrap:break-word;unicode-bidi:isolate}[data-ui=collapsible][data-truncate]>[data-part=header]>[data-part=trigger]>[data-part=description]{overflow:hidden;overflow-wrap:normal;text-overflow:ellipsis;white-space:nowrap}[data-ui=collapsible]>[data-part=header]>[data-part=trigger]>[data-part=indicator]{--slotted-icon-size: var(--_icon-size);align-self:start;block-size:var(--_icon-size);color:var(--slotted-collapsible-indicator-color, currentColor);display:flex;flex:none;grid-column:2;grid-row:1;inline-size:var(--_icon-size);margin-block-start:calc((1lh - var(--_icon-size)) / 2)}[data-ui=collapsible]>[data-part=header]>[data-part=trigger]>[data-part=indicator]>[data-ui=icon]{transition:rotate var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=collapsible][data-open]>[data-part=header]>[data-part=trigger]>[data-part=indicator]>[data-ui=icon]{rotate:180deg}[data-ui=collapsible][data-indicator=plus-minus]>[data-part=header]>[data-part=trigger]>[data-part=indicator]>[data-ui=icon]{rotate:none}[data-ui=collapsible][data-toggle-placement=start]>[data-part=header]>[data-part=trigger]{grid-template-columns:auto minmax(0,1fr)}[data-ui=collapsible][data-toggle-placement=start]>[data-part=header]>[data-part=trigger]>[data-part=indicator]{grid-column:1}[data-ui=collapsible][data-toggle-placement=start]>[data-part=header]>[data-part=trigger]>[data-part=label],[data-ui=collapsible][data-toggle-placement=start]>[data-part=header]>[data-part=trigger]>[data-part=description]{grid-column:2}[data-ui=collapsible][data-toggle-placement=start]>[data-part=panel]>[data-part=content]{padding-inline-start:calc(var(--slotted-collapsible-padding-inline, var(--_padding-inline)) + var(--_icon-size) + var(--_gap))}[data-ui=collapsible]>[data-part=actions]{align-items:center;align-self:center;column-gap:var(--_gap);display:flex;grid-column:2;grid-row:1;padding-inline-end:var(--slotted-collapsible-padding-inline, var(--_padding-inline))}[data-ui=collapsible]>[data-part=panel]{display:grid;grid-column:1 / -1;grid-row:2;grid-template-rows:0fr;min-inline-size:0;transition:grid-template-rows var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=collapsible][data-open]>[data-part=panel]{grid-template-rows:1fr}[data-ui=collapsible]>[data-part=panel]>[data-part=content]{color:var(--slotted-collapsible-panel-color, var(--slotted-text, CanvasText));content-visibility:hidden;font-size:var(--_panel-font-size);line-height:var(--slotted-line-height-md, 1.5);min-block-size:0;opacity:0;overflow:hidden;padding-block-end:0;padding-inline:var(--slotted-collapsible-padding-inline, var(--_padding-inline));transition:content-visibility var(--slotted-duration-medium) allow-discrete,opacity var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=collapsible][data-open]>[data-part=panel]>[data-part=content]{content-visibility:visible;opacity:1;padding-block-end:var(--_padding-block)}[data-ui=collapsible][data-loading][data-open]>[data-part=panel]>[data-part=content]{min-block-size:calc(var(--_panel-font-size) * var(--slotted-line-height-md, 1.5))}[data-ui=collapsible]:not([data-disabled])>[data-part=header]>[data-part=trigger]:enabled:hover{background-color:var( --slotted-collapsible-hover-background, var(--slotted-tone-secondary-subtle-hover) );color:var(--slotted-collapsible-hover-color, var(--slotted-text, CanvasText))}[data-ui=collapsible]:not([data-disabled])>[data-part=header]>[data-part=trigger]:enabled:active{background-color:var( --slotted-collapsible-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui=collapsible]>[data-part=header]>[data-part=trigger]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:not-allowed}[data-ui=collapsible]>[data-part=header]>[data-part=trigger][aria-disabled=true]>[data-part=indicator]{opacity:.45}[data-ui=collapsible][data-disabled]{color:var(--slotted-disabled-foreground, GrayText)}[data-ui=collapsible][data-variant=ruled]{border-block-start:var(--_rule-size) solid var(--slotted-collapsible-rule-color, var(--slotted-border-subtle, ButtonBorder))}[data-ui=collapsible][data-variant=framed]{background-color:var(--slotted-collapsible-surface, var(--slotted-surface-raised, Canvas));border:var(--_rule-size) solid var(--slotted-collapsible-rule-color, var(--slotted-border-subtle, ButtonBorder));border-radius:var(--slotted-collapsible-radius, var(--slotted-radius-md, 6px));overflow:clip}[data-ui=collapsible]{container-name:slotted-collapsible;container-type:inline-size}@container slotted-collapsible (max-inline-size: 22rem){[data-ui=collapsible]>[data-part=actions]{grid-column:1 / -1;grid-row:2;justify-content:flex-end;padding-block-end:var(--_padding-block);padding-inline-start:var(--slotted-collapsible-padding-inline, var(--_padding-inline))}[data-ui=collapsible]>[data-part=panel]{grid-row:3}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
191
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlCollapsible, isStandalone: true, selector: "[slCollapsible]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, region: { classPropertyName: "region", publicName: "region", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null }, togglePlacement: { classPropertyName: "togglePlacement", publicName: "togglePlacement", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, mount: { classPropertyName: "mount", publicName: "mount", isSignal: true, isRequired: false, transformFunction: null }, truncate: { classPropertyName: "truncate", publicName: "truncate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openChangeRequest: "openChangeRequest" }, host: { attributes: { "data-ui": "collapsible", "data-ui-collapsible": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-value": "identity()", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "attr.data-indicator": "resolvedIndicator()", "attr.data-toggle-placement": "resolvedTogglePlacement()", "attr.data-mount": "resolvedMount()", "attr.data-truncate": "resolvedTruncate() ? '' : null", "attr.data-open": "isOpen() ? '' : null", "attr.data-disabled": "resolvedDisabled() ? '' : null", "attr.data-loading": "loading() ? '' : null" } }, exportAs: ["slCollapsible"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui-collapsible]{--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, .8125rem);--_gap: var(--slotted-control-gap-md, .5rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_font-size: var(--slotted-font-size-md, .875rem);--_description-font-size: var(--slotted-font-size-xs, .75rem);--_panel-font-size: var(--slotted-font-size-md, .875rem);--_padding-block: var(--slotted-space-4, .5rem);--_rule-size: var(--slotted-border-width-thin, 1px);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;inline-size:100%;min-inline-size:0}[data-ui-collapsible][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_font-size: var(--slotted-font-size-sm, .8125rem);--_description-font-size: var(--slotted-font-size-xs, .75rem);--_panel-font-size: var(--slotted-font-size-sm, .8125rem);--_padding-inline: var(--slotted-control-padding-inline-sm, .625rem);--_gap: var(--slotted-control-gap-sm, .375rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_padding-block: var(--slotted-space-3, .375rem)}[data-ui-collapsible][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_font-size: var(--slotted-font-size-lg, 1rem);--_description-font-size: var(--slotted-font-size-sm, .8125rem);--_panel-font-size: var(--slotted-font-size-md, .875rem);--_padding-inline: var(--slotted-control-padding-inline-lg, 1rem);--_gap: var(--slotted-control-gap-lg, .5rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_padding-block: var(--slotted-space-5, .75rem)}[data-ui-collapsible]>[data-part-header]{font:inherit;grid-column:1;grid-row:1;margin:0;min-inline-size:0}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]{align-items:center;appearance:none;background-color:var(--slotted-collapsible-background, transparent);border:0;color:var(--slotted-collapsible-color, var(--slotted-text, CanvasText));column-gap:var(--_gap);cursor:pointer;display:grid;font-family:var(--slotted-control-font-family, inherit);font-size:var(--_font-size);font-weight:var(--slotted-font-weight-medium, 500);grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;justify-self:stretch;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-line-height-md, 1.5);min-block-size:var(--_height);min-inline-size:0;padding-block:var(--_padding-block);padding-inline:var(--slotted-collapsible-padding-inline, var(--_padding-inline));text-align:start;transition:background-color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard)),color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-offset, 2px))}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]>[data-part-label]{grid-column:1;grid-row:1;min-inline-size:0;overflow-wrap:break-word;unicode-bidi:isolate}[data-ui-collapsible][data-truncate]>[data-part-header]>[data-part-trigger]>[data-part-label]{overflow:hidden;overflow-wrap:normal;text-overflow:ellipsis;white-space:nowrap}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]>[data-part-description]{color:var(--slotted-collapsible-description-color, var(--slotted-text-muted, GrayText));font-size:var(--_description-font-size);font-weight:var(--slotted-font-weight-regular, 400);grid-column:1;grid-row:2;min-inline-size:0;overflow-wrap:break-word;unicode-bidi:isolate}[data-ui-collapsible][data-truncate]>[data-part-header]>[data-part-trigger]>[data-part-description]{overflow:hidden;overflow-wrap:normal;text-overflow:ellipsis;white-space:nowrap}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]>[data-part-indicator]{--slotted-icon-size: var(--_icon-size);align-self:start;block-size:var(--_icon-size);color:var(--slotted-collapsible-indicator-color, currentColor);display:flex;flex:none;grid-column:2;grid-row:1;inline-size:var(--_icon-size);margin-block-start:calc((1lh - var(--_icon-size)) / 2)}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]>[data-part-indicator]>[data-ui-icon]{transition:rotate var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-collapsible][data-open]>[data-part-header]>[data-part-trigger]>[data-part-indicator]>[data-ui-icon]{rotate:180deg}[data-ui-collapsible][data-indicator=plus-minus]>[data-part-header]>[data-part-trigger]>[data-part-indicator]>[data-ui-icon]{rotate:none}[data-ui-collapsible][data-toggle-placement=start]>[data-part-header]>[data-part-trigger]{grid-template-columns:auto minmax(0,1fr)}[data-ui-collapsible][data-toggle-placement=start]>[data-part-header]>[data-part-trigger]>[data-part-indicator]{grid-column:1}[data-ui-collapsible][data-toggle-placement=start]>[data-part-header]>[data-part-trigger]>[data-part-label],[data-ui-collapsible][data-toggle-placement=start]>[data-part-header]>[data-part-trigger]>[data-part-description]{grid-column:2}[data-ui-collapsible][data-toggle-placement=start]>[data-part-panel]>[data-part-content]{padding-inline-start:calc(var(--slotted-collapsible-padding-inline, var(--_padding-inline)) + var(--_icon-size) + var(--_gap))}[data-ui-collapsible]>[data-part-actions]{align-items:center;align-self:center;column-gap:var(--_gap);display:flex;grid-column:2;grid-row:1;padding-inline-end:var(--slotted-collapsible-padding-inline, var(--_padding-inline))}[data-ui-collapsible]>[data-part-panel]{display:grid;grid-column:1 / -1;grid-row:2;grid-template-rows:0fr;min-inline-size:0;transition:grid-template-rows var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-collapsible][data-open]>[data-part-panel]{grid-template-rows:1fr}[data-ui-collapsible]>[data-part-panel]>[data-part-content]{color:var(--slotted-collapsible-panel-color, var(--slotted-text, CanvasText));content-visibility:hidden;font-size:var(--_panel-font-size);line-height:var(--slotted-line-height-md, 1.5);min-block-size:0;opacity:0;overflow:hidden;padding-block-end:0;padding-inline:var(--slotted-collapsible-padding-inline, var(--_padding-inline));transition:content-visibility var(--slotted-duration-medium) allow-discrete,opacity var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-collapsible][data-open]>[data-part-panel]>[data-part-content]{content-visibility:visible;opacity:1;padding-block-end:var(--_padding-block)}[data-ui-collapsible][data-loading][data-open]>[data-part-panel]>[data-part-content]{min-block-size:calc(var(--_panel-font-size) * var(--slotted-line-height-md, 1.5))}[data-ui-collapsible]:not([data-disabled])>[data-part-header]>[data-part-trigger]:enabled:hover{background-color:var( --slotted-collapsible-hover-background, var(--slotted-tone-secondary-subtle-hover) );color:var(--slotted-collapsible-hover-color, var(--slotted-text, CanvasText))}[data-ui-collapsible]:not([data-disabled])>[data-part-header]>[data-part-trigger]:enabled:active{background-color:var( --slotted-collapsible-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:not-allowed}[data-ui-collapsible]>[data-part-header]>[data-part-trigger][aria-disabled=true]>[data-part-indicator]{opacity:.45}[data-ui-collapsible][data-disabled]{color:var(--slotted-disabled-foreground, GrayText)}[data-ui-collapsible][data-variant=ruled]{border-block-start:var(--_rule-size) solid var(--slotted-collapsible-rule-color, var(--slotted-border-subtle, ButtonBorder))}[data-ui-collapsible][data-variant=framed]{background-color:var(--slotted-collapsible-surface, var(--slotted-surface-raised, Canvas));border:var(--_rule-size) solid var(--slotted-collapsible-rule-color, var(--slotted-border-subtle, ButtonBorder));border-radius:var(--slotted-collapsible-radius, var(--slotted-radius-md, 6px));overflow:clip}[data-ui-collapsible]{container-name:slotted-collapsible;container-type:inline-size}@container slotted-collapsible (max-inline-size: 22rem){[data-ui-collapsible]>[data-part-actions]{grid-column:1 / -1;grid-row:2;justify-content:flex-end;padding-block-end:var(--_padding-block);padding-inline-start:var(--slotted-collapsible-padding-inline, var(--_padding-inline))}[data-ui-collapsible]>[data-part-panel]{grid-row:3}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
192
192
|
}
|
|
193
193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsible, decorators: [{
|
|
194
194
|
type: Component,
|
|
195
195
|
args: [{ selector: '[slCollapsible]', standalone: true, exportAs: 'slCollapsible', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
196
196
|
'data-ui': 'collapsible',
|
|
197
|
+
'data-ui-collapsible': '',
|
|
197
198
|
'data-part': 'root',
|
|
199
|
+
'data-part-root': '',
|
|
198
200
|
'[attr.data-value]': 'identity()',
|
|
199
201
|
'[attr.data-size]': 'resolvedSize()',
|
|
200
202
|
'[attr.data-variant]': 'resolvedVariant()',
|
|
@@ -205,7 +207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
205
207
|
'[attr.data-open]': "isOpen() ? '' : null",
|
|
206
208
|
'[attr.data-disabled]': "resolvedDisabled() ? '' : null",
|
|
207
209
|
'[attr.data-loading]': "loading() ? '' : null",
|
|
208
|
-
}, styles: ["@layer slotted.components{[data-ui
|
|
210
|
+
}, styles: ["@layer slotted.components{[data-ui-collapsible]{--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, .8125rem);--_gap: var(--slotted-control-gap-md, .5rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_font-size: var(--slotted-font-size-md, .875rem);--_description-font-size: var(--slotted-font-size-xs, .75rem);--_panel-font-size: var(--slotted-font-size-md, .875rem);--_padding-block: var(--slotted-space-4, .5rem);--_rule-size: var(--slotted-border-width-thin, 1px);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;inline-size:100%;min-inline-size:0}[data-ui-collapsible][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_font-size: var(--slotted-font-size-sm, .8125rem);--_description-font-size: var(--slotted-font-size-xs, .75rem);--_panel-font-size: var(--slotted-font-size-sm, .8125rem);--_padding-inline: var(--slotted-control-padding-inline-sm, .625rem);--_gap: var(--slotted-control-gap-sm, .375rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_padding-block: var(--slotted-space-3, .375rem)}[data-ui-collapsible][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_font-size: var(--slotted-font-size-lg, 1rem);--_description-font-size: var(--slotted-font-size-sm, .8125rem);--_panel-font-size: var(--slotted-font-size-md, .875rem);--_padding-inline: var(--slotted-control-padding-inline-lg, 1rem);--_gap: var(--slotted-control-gap-lg, .5rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_padding-block: var(--slotted-space-5, .75rem)}[data-ui-collapsible]>[data-part-header]{font:inherit;grid-column:1;grid-row:1;margin:0;min-inline-size:0}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]{align-items:center;appearance:none;background-color:var(--slotted-collapsible-background, transparent);border:0;color:var(--slotted-collapsible-color, var(--slotted-text, CanvasText));column-gap:var(--_gap);cursor:pointer;display:grid;font-family:var(--slotted-control-font-family, inherit);font-size:var(--_font-size);font-weight:var(--slotted-font-weight-medium, 500);grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;justify-self:stretch;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-line-height-md, 1.5);min-block-size:var(--_height);min-inline-size:0;padding-block:var(--_padding-block);padding-inline:var(--slotted-collapsible-padding-inline, var(--_padding-inline));text-align:start;transition:background-color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard)),color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-offset, 2px))}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]>[data-part-label]{grid-column:1;grid-row:1;min-inline-size:0;overflow-wrap:break-word;unicode-bidi:isolate}[data-ui-collapsible][data-truncate]>[data-part-header]>[data-part-trigger]>[data-part-label]{overflow:hidden;overflow-wrap:normal;text-overflow:ellipsis;white-space:nowrap}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]>[data-part-description]{color:var(--slotted-collapsible-description-color, var(--slotted-text-muted, GrayText));font-size:var(--_description-font-size);font-weight:var(--slotted-font-weight-regular, 400);grid-column:1;grid-row:2;min-inline-size:0;overflow-wrap:break-word;unicode-bidi:isolate}[data-ui-collapsible][data-truncate]>[data-part-header]>[data-part-trigger]>[data-part-description]{overflow:hidden;overflow-wrap:normal;text-overflow:ellipsis;white-space:nowrap}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]>[data-part-indicator]{--slotted-icon-size: var(--_icon-size);align-self:start;block-size:var(--_icon-size);color:var(--slotted-collapsible-indicator-color, currentColor);display:flex;flex:none;grid-column:2;grid-row:1;inline-size:var(--_icon-size);margin-block-start:calc((1lh - var(--_icon-size)) / 2)}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]>[data-part-indicator]>[data-ui-icon]{transition:rotate var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-collapsible][data-open]>[data-part-header]>[data-part-trigger]>[data-part-indicator]>[data-ui-icon]{rotate:180deg}[data-ui-collapsible][data-indicator=plus-minus]>[data-part-header]>[data-part-trigger]>[data-part-indicator]>[data-ui-icon]{rotate:none}[data-ui-collapsible][data-toggle-placement=start]>[data-part-header]>[data-part-trigger]{grid-template-columns:auto minmax(0,1fr)}[data-ui-collapsible][data-toggle-placement=start]>[data-part-header]>[data-part-trigger]>[data-part-indicator]{grid-column:1}[data-ui-collapsible][data-toggle-placement=start]>[data-part-header]>[data-part-trigger]>[data-part-label],[data-ui-collapsible][data-toggle-placement=start]>[data-part-header]>[data-part-trigger]>[data-part-description]{grid-column:2}[data-ui-collapsible][data-toggle-placement=start]>[data-part-panel]>[data-part-content]{padding-inline-start:calc(var(--slotted-collapsible-padding-inline, var(--_padding-inline)) + var(--_icon-size) + var(--_gap))}[data-ui-collapsible]>[data-part-actions]{align-items:center;align-self:center;column-gap:var(--_gap);display:flex;grid-column:2;grid-row:1;padding-inline-end:var(--slotted-collapsible-padding-inline, var(--_padding-inline))}[data-ui-collapsible]>[data-part-panel]{display:grid;grid-column:1 / -1;grid-row:2;grid-template-rows:0fr;min-inline-size:0;transition:grid-template-rows var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-collapsible][data-open]>[data-part-panel]{grid-template-rows:1fr}[data-ui-collapsible]>[data-part-panel]>[data-part-content]{color:var(--slotted-collapsible-panel-color, var(--slotted-text, CanvasText));content-visibility:hidden;font-size:var(--_panel-font-size);line-height:var(--slotted-line-height-md, 1.5);min-block-size:0;opacity:0;overflow:hidden;padding-block-end:0;padding-inline:var(--slotted-collapsible-padding-inline, var(--_padding-inline));transition:content-visibility var(--slotted-duration-medium) allow-discrete,opacity var(--slotted-duration-medium) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-collapsible][data-open]>[data-part-panel]>[data-part-content]{content-visibility:visible;opacity:1;padding-block-end:var(--_padding-block)}[data-ui-collapsible][data-loading][data-open]>[data-part-panel]>[data-part-content]{min-block-size:calc(var(--_panel-font-size) * var(--slotted-line-height-md, 1.5))}[data-ui-collapsible]:not([data-disabled])>[data-part-header]>[data-part-trigger]:enabled:hover{background-color:var( --slotted-collapsible-hover-background, var(--slotted-tone-secondary-subtle-hover) );color:var(--slotted-collapsible-hover-color, var(--slotted-text, CanvasText))}[data-ui-collapsible]:not([data-disabled])>[data-part-header]>[data-part-trigger]:enabled:active{background-color:var( --slotted-collapsible-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui-collapsible]>[data-part-header]>[data-part-trigger]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:not-allowed}[data-ui-collapsible]>[data-part-header]>[data-part-trigger][aria-disabled=true]>[data-part-indicator]{opacity:.45}[data-ui-collapsible][data-disabled]{color:var(--slotted-disabled-foreground, GrayText)}[data-ui-collapsible][data-variant=ruled]{border-block-start:var(--_rule-size) solid var(--slotted-collapsible-rule-color, var(--slotted-border-subtle, ButtonBorder))}[data-ui-collapsible][data-variant=framed]{background-color:var(--slotted-collapsible-surface, var(--slotted-surface-raised, Canvas));border:var(--_rule-size) solid var(--slotted-collapsible-rule-color, var(--slotted-border-subtle, ButtonBorder));border-radius:var(--slotted-collapsible-radius, var(--slotted-radius-md, 6px));overflow:clip}[data-ui-collapsible]{container-name:slotted-collapsible;container-type:inline-size}@container slotted-collapsible (max-inline-size: 22rem){[data-ui-collapsible]>[data-part-actions]{grid-column:1 / -1;grid-row:2;justify-content:flex-end;padding-block-end:var(--_padding-block);padding-inline-start:var(--slotted-collapsible-padding-inline, var(--_padding-inline))}[data-ui-collapsible]>[data-part-panel]{grid-row:3}}}\n"] }]
|
|
209
211
|
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], region: [{ type: i0.Input, args: [{ isSignal: true, alias: "region", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], indicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "indicator", required: false }] }], togglePlacement: [{ type: i0.Input, args: [{ isSignal: true, alias: "togglePlacement", required: false }] }], level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], mount: [{ type: i0.Input, args: [{ isSignal: true, alias: "mount", required: false }] }], truncate: [{ type: i0.Input, args: [{ isSignal: true, alias: "truncate", required: false }] }], openChangeRequest: [{ type: i0.Output, args: ["openChangeRequest"] }] } });
|
|
210
212
|
|
|
211
213
|
const HEADINGS = new Set(['H1', 'H2', 'H3', 'H4', 'H5', 'H6']);
|
|
@@ -242,7 +244,7 @@ class SlCollapsibleHeader {
|
|
|
242
244
|
}, /* @ts-ignore */
|
|
243
245
|
...(ngDevMode ? [{ debugName: "ariaLevel" }] : /* istanbul ignore next */ []));
|
|
244
246
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsibleHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
245
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCollapsibleHeader, isStandalone: true, selector: "[slCollapsibleHeader]", host: { attributes: { "data-part": "header" }, properties: { "attr.role": "ariaRole()", "attr.aria-level": "ariaLevel()" } }, exportAs: ["slCollapsibleHeader"], ngImport: i0 });
|
|
247
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCollapsibleHeader, isStandalone: true, selector: "[slCollapsibleHeader]", host: { attributes: { "data-part": "header", "data-part-header": "" }, properties: { "attr.role": "ariaRole()", "attr.aria-level": "ariaLevel()" } }, exportAs: ["slCollapsibleHeader"], ngImport: i0 });
|
|
246
248
|
}
|
|
247
249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsibleHeader, decorators: [{
|
|
248
250
|
type: Directive,
|
|
@@ -252,6 +254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
252
254
|
exportAs: 'slCollapsibleHeader',
|
|
253
255
|
host: {
|
|
254
256
|
'data-part': 'header',
|
|
257
|
+
'data-part-header': '',
|
|
255
258
|
'[attr.role]': 'ariaRole()',
|
|
256
259
|
'[attr.aria-level]': 'ariaLevel()',
|
|
257
260
|
},
|
|
@@ -295,14 +298,14 @@ class SlCollapsibleTrigger {
|
|
|
295
298
|
this.collapsible.toggle(!this.collapsible.isOpen(), reason, event);
|
|
296
299
|
}
|
|
297
300
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsibleTrigger, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
298
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlCollapsibleTrigger, isStandalone: true, selector: "button[slCollapsibleTrigger]", inputs: { description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "trigger", "type": "button" }, listeners: { "click": "onClick($event)" }, properties: { "attr.id": "ids().triggerId", "attr.aria-controls": "ids().panelId", "attr.aria-expanded": "collapsible.isOpen()", "attr.aria-disabled": "collapsible.held() ? 'true' : null", "disabled": "collapsible.resolvedDisabled()" } }, exportAs: ["slCollapsibleTrigger"], ngImport: i0, template: `@if (collapsible.resolvedIndicator() !== 'none') {
|
|
299
|
-
<span data-part="indicator" aria-hidden="true"
|
|
301
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlCollapsibleTrigger, isStandalone: true, selector: "button[slCollapsibleTrigger]", inputs: { description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "trigger", "data-part-trigger": "", "type": "button" }, listeners: { "click": "onClick($event)" }, properties: { "attr.id": "ids().triggerId", "attr.aria-controls": "ids().panelId", "attr.aria-expanded": "collapsible.isOpen()", "attr.aria-disabled": "collapsible.held() ? 'true' : null", "disabled": "collapsible.resolvedDisabled()" } }, exportAs: ["slCollapsibleTrigger"], ngImport: i0, template: `@if (collapsible.resolvedIndicator() !== 'none') {
|
|
302
|
+
<span data-part="indicator" data-part-indicator="" aria-hidden="true"
|
|
300
303
|
><span slIcon><svg slGlyph [name]="indicatorGlyph()"></svg></span
|
|
301
304
|
></span>
|
|
302
305
|
}
|
|
303
|
-
<span data-part="label"><ng-content /></span>
|
|
306
|
+
<span data-part="label" data-part-label=""><ng-content /></span>
|
|
304
307
|
@if (description()) {
|
|
305
|
-
<span data-part="description">{{ description() }}</span>
|
|
308
|
+
<span data-part="description" data-part-description="">{{ description() }}</span>
|
|
306
309
|
}`, isInline: true, dependencies: [{ kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
307
310
|
}
|
|
308
311
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsibleTrigger, decorators: [{
|
|
@@ -313,18 +316,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
313
316
|
exportAs: 'slCollapsibleTrigger',
|
|
314
317
|
imports: [SlGlyph, SlIcon],
|
|
315
318
|
template: `@if (collapsible.resolvedIndicator() !== 'none') {
|
|
316
|
-
<span data-part="indicator" aria-hidden="true"
|
|
319
|
+
<span data-part="indicator" data-part-indicator="" aria-hidden="true"
|
|
317
320
|
><span slIcon><svg slGlyph [name]="indicatorGlyph()"></svg></span
|
|
318
321
|
></span>
|
|
319
322
|
}
|
|
320
|
-
<span data-part="label"><ng-content /></span>
|
|
323
|
+
<span data-part="label" data-part-label=""><ng-content /></span>
|
|
321
324
|
@if (description()) {
|
|
322
|
-
<span data-part="description">{{ description() }}</span>
|
|
325
|
+
<span data-part="description" data-part-description="">{{ description() }}</span>
|
|
323
326
|
}`,
|
|
324
327
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
325
328
|
encapsulation: ViewEncapsulation.None,
|
|
326
329
|
host: {
|
|
327
330
|
'data-part': 'trigger',
|
|
331
|
+
'data-part-trigger': '',
|
|
328
332
|
type: 'button',
|
|
329
333
|
'[attr.id]': 'ids().triggerId',
|
|
330
334
|
'[attr.aria-controls]': 'ids().panelId',
|
|
@@ -345,7 +349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
345
349
|
*/
|
|
346
350
|
class SlCollapsibleActions {
|
|
347
351
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsibleActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
348
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCollapsibleActions, isStandalone: true, selector: "[slCollapsibleActions]", host: { attributes: { "data-part": "actions" } }, exportAs: ["slCollapsibleActions"], ngImport: i0 });
|
|
352
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCollapsibleActions, isStandalone: true, selector: "[slCollapsibleActions]", host: { attributes: { "data-part": "actions", "data-part-actions": "" } }, exportAs: ["slCollapsibleActions"], ngImport: i0 });
|
|
349
353
|
}
|
|
350
354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsibleActions, decorators: [{
|
|
351
355
|
type: Directive,
|
|
@@ -353,7 +357,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
353
357
|
selector: '[slCollapsibleActions]',
|
|
354
358
|
standalone: true,
|
|
355
359
|
exportAs: 'slCollapsibleActions',
|
|
356
|
-
host: { 'data-part': 'actions' },
|
|
360
|
+
host: { 'data-part': 'actions', 'data-part-actions': '' },
|
|
357
361
|
}]
|
|
358
362
|
}] });
|
|
359
363
|
/**
|
|
@@ -435,8 +439,8 @@ class SlCollapsiblePanel {
|
|
|
435
439
|
return this.collapsible.ids();
|
|
436
440
|
}
|
|
437
441
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCollapsiblePanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
438
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlCollapsiblePanel, isStandalone: true, selector: "[slCollapsiblePanel]", host: { attributes: { "data-part": "panel" }, properties: { "attr.id": "ids().panelId", "attr.aria-labelledby": "ids().triggerId", "attr.role": "collapsible.region() ? 'region' : null", "attr.aria-busy": "collapsible.loading() ? 'true' : null" } }, queries: [{ propertyName: "deferred", first: true, predicate: SlCollapsibleContent, descendants: true, isSignal: true }], exportAs: ["slCollapsiblePanel"], ngImport: i0, template: `@if (mounted()) {
|
|
439
|
-
<div data-part="content">
|
|
442
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlCollapsiblePanel, isStandalone: true, selector: "[slCollapsiblePanel]", host: { attributes: { "data-part": "panel", "data-part-panel": "" }, properties: { "attr.id": "ids().panelId", "attr.aria-labelledby": "ids().triggerId", "attr.role": "collapsible.region() ? 'region' : null", "attr.aria-busy": "collapsible.loading() ? 'true' : null" } }, queries: [{ propertyName: "deferred", first: true, predicate: SlCollapsibleContent, descendants: true, isSignal: true }], exportAs: ["slCollapsiblePanel"], ngImport: i0, template: `@if (mounted()) {
|
|
443
|
+
<div data-part="content" data-part-content="">
|
|
440
444
|
@if (deferred()) {
|
|
441
445
|
<ng-container [ngTemplateOutlet]="deferred()!.template" />
|
|
442
446
|
}
|
|
@@ -452,7 +456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
452
456
|
exportAs: 'slCollapsiblePanel',
|
|
453
457
|
imports: [NgTemplateOutlet],
|
|
454
458
|
template: `@if (mounted()) {
|
|
455
|
-
<div data-part="content">
|
|
459
|
+
<div data-part="content" data-part-content="">
|
|
456
460
|
@if (deferred()) {
|
|
457
461
|
<ng-container [ngTemplateOutlet]="deferred()!.template" />
|
|
458
462
|
}
|
|
@@ -463,6 +467,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
463
467
|
encapsulation: ViewEncapsulation.None,
|
|
464
468
|
host: {
|
|
465
469
|
'data-part': 'panel',
|
|
470
|
+
'data-part-panel': '',
|
|
466
471
|
'[attr.id]': 'ids().panelId',
|
|
467
472
|
'[attr.aria-labelledby]': 'ids().triggerId',
|
|
468
473
|
'[attr.role]': "collapsible.region() ? 'region' : null",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-collapsible.mjs","sources":["../../collapsible/src/collapsible-defaults.ts","../../collapsible/src/collapsible.ts","../../collapsible/src/collapsible-parts.ts","../../collapsible/src/slotted-angular-collapsible.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** The type step the header and its panel sit at. */\nexport type CollapsibleSize = 'sm' | 'md' | 'lg';\n\n/**\n * How the disclosure is drawn. `plain` paints no chrome at all, `ruled` draws a\n * hairline above the header so a stack of them reads as one list, and `framed`\n * is its own card.\n */\nexport type CollapsibleVariant = 'plain' | 'ruled' | 'framed';\n\n/**\n * The mark that says whether the panel is open. `chevron` turns between down\n * and up, `plus-minus` swaps the one bar for the pair, and `none` draws nothing\n * — which is Angular Material's `hideToggle` and Carbon's chevron-less header.\n */\nexport type CollapsibleIndicator = 'chevron' | 'plus-minus' | 'none';\n\n/** Which side of the words the mark stands on. */\nexport type CollapsibleTogglePlacement = 'end' | 'start';\n\n/**\n * The heading level the header answers to. `none` writes no heading semantics\n * at all, which is the standalone disclosure that belongs to no outline.\n *\n * The element is the consumer's own: `<h3 slCollapsibleHeader>` is a native\n * heading and the directive adds nothing, while `<div slCollapsibleHeader>`\n * gets `role=\"heading\"` and `aria-level` — the alternative the pattern itself\n * names. React reads the element off this value instead, and the two reach the\n * same accessibility tree.\n */\nexport type CollapsibleLevel = 'none' | '1' | '2' | '3' | '4' | '5' | '6';\n\n/**\n * When the panel's content exists. The box always does, so the trigger's\n * `aria-controls` never names an element that is gone.\n */\nexport type CollapsibleMount = 'active' | 'lazy' | 'eager' | 'until-found';\n\n/** Why the panel opened or closed. */\nexport type CollapsibleOpenReason = 'pointer' | 'keyboard' | 'select' | 'programmatic';\n\nexport interface CollapsibleDefaults {\n indicator: CollapsibleIndicator;\n level: CollapsibleLevel;\n mount: CollapsibleMount;\n size: CollapsibleSize;\n togglePlacement: CollapsibleTogglePlacement;\n truncate: boolean;\n variant: CollapsibleVariant;\n}\n\nconst FALLBACK: CollapsibleDefaults = {\n indicator: 'chevron',\n level: 'none',\n mount: 'eager',\n size: 'md',\n togglePlacement: 'end',\n truncate: false,\n variant: 'plain',\n};\n\nexport const COLLAPSIBLE_DEFAULTS = new InjectionToken<CollapsibleDefaults>(\n 'slotted collapsible defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its disclosures look, rather than repeating\n * the same seven inputs on every one in a product. A disclosure that states any\n * of them itself still wins, and so does the accordion between the two.\n */\nexport function provideCollapsibleDefaults(defaults: Partial<CollapsibleDefaults>) {\n return {\n provide: COLLAPSIBLE_DEFAULTS,\n useFactory: (): CollapsibleDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a disclosure renders as here, before it states anything of its own. */\nexport function injectCollapsibleDefaults(): CollapsibleDefaults {\n return inject(COLLAPSIBLE_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlCollapsibleIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-collapsible-${this.count}`;\n }\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { SlAccordion } from '@slotted/angular/accordion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\n\nimport { injectCollapsibleDefaults, SlCollapsibleIdFactory } from './collapsible-defaults';\nimport type {\n CollapsibleIndicator,\n CollapsibleLevel,\n CollapsibleMount,\n CollapsibleOpenReason,\n CollapsibleSize,\n CollapsibleTogglePlacement,\n CollapsibleVariant,\n} from './collapsible-defaults';\n\nexport type {\n CollapsibleDefaults,\n CollapsibleIndicator,\n CollapsibleLevel,\n CollapsibleMount,\n CollapsibleOpenReason,\n CollapsibleSize,\n CollapsibleTogglePlacement,\n CollapsibleVariant,\n} from './collapsible-defaults';\n\n/** The trigger of one disclosure, in the order the DOM holds them. */\nexport const COLLAPSIBLE_TRIGGER_SELECTOR = '[data-part=\"trigger\"]';\n\n/**\n * One disclosure: a header the reader operates and a panel it controls.\n *\n * **The keyboard is the platform's.** The trigger is a `button`, so `Enter` and\n * `Space` toggle without the family binding a key, and every trigger stays in\n * the page tab sequence — which is what the APG's accordion pattern requires\n * and what `w3c/aria-practices#3434` removed the roving alternative for.\n *\n * **The panel opens without being measured.** The stylesheet transitions a grid\n * track between `0fr` and `1fr`, so the height is the content's own at every\n * frame. Radix, Base UI, Ark and Angular Material each read the layout and\n * write a custom property, which is wrong for one frame on the server and stale\n * until a resize observer fires.\n *\n * **Inside an `slAccordion` the value belongs to the set.** The disclosure then\n * reports its own request as well, so a consumer may watch one panel without\n * unpacking the set's array.\n */\n@Component({\n selector: '[slCollapsible]',\n standalone: true,\n exportAs: 'slCollapsible',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/collapsible/collapsible.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'collapsible',\n 'data-part': 'root',\n '[attr.data-value]': 'identity()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-indicator]': 'resolvedIndicator()',\n '[attr.data-toggle-placement]': 'resolvedTogglePlacement()',\n '[attr.data-mount]': 'resolvedMount()',\n '[attr.data-truncate]': \"resolvedTruncate() ? '' : null\",\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n },\n})\nexport class SlCollapsible implements OnInit {\n /** Whether the panel is open. Two-way, so a template may bind it directly. */\n readonly open = model<boolean>(false);\n /**\n * What this disclosure is called inside an accordion. It is identity rather\n * than state — the state model is `open` — and the set's array holds it. One\n * that states none is given one from the id factory.\n */\n readonly value = input<string | undefined>(undefined);\n /** Unstated rather than false, so the disclosure defers to the set around it. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Whether the panel's content is still on its way. The panel keeps a line's\n * height and carries `aria-busy`; what stands in for the content is\n * `slSkeleton`, composed by the consumer.\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Whether the panel is a `region` landmark. Off by default: the APG's own\n * example warns that a landmark per panel fills the landmark list.\n */\n readonly region = input(false, { transform: booleanAttribute });\n readonly size = input<CollapsibleSize | undefined>(undefined);\n readonly variant = input<CollapsibleVariant | undefined>(undefined);\n readonly indicator = input<CollapsibleIndicator | undefined>(undefined);\n readonly togglePlacement = input<CollapsibleTogglePlacement | undefined>(undefined);\n readonly level = input<CollapsibleLevel | undefined>(undefined);\n readonly mount = input<CollapsibleMount | undefined>(undefined);\n readonly truncate = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n\n /** One output for one transition, carrying the reason and the event. */\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n private readonly defaults = injectCollapsibleDefaults();\n /** The set this disclosure is in, or nothing: a standalone one is complete. */\n private readonly group = inject(SlAccordion, { optional: true });\n private readonly generated = inject(SlCollapsibleIdFactory).next();\n\n readonly identity = computed(() => this.value() ?? this.generated);\n\n /**\n * Three owners, in one order. The set's value wins over the disclosure's own\n * `open` because the set is what a consumer wrote when they wrote an\n * accordion; a disclosure standing alone owns the value outright.\n */\n readonly isOpen = computed(() =>\n this.group === null ? this.open() : this.group.holds(this.identity()),\n );\n\n /** Whether the set refuses to let this one close, which the APG marks. */\n readonly held = computed(() => this.group?.isHeld(this.identity()) ?? false);\n\n readonly resolvedDisabled = computed(\n () => (this.disabled() ?? this.group?.disabled() ?? false) === true,\n );\n readonly resolvedSize = computed(\n () => this.size() ?? this.group?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(\n () => this.variant() ?? this.group?.itemVariant() ?? this.defaults.variant,\n );\n readonly resolvedIndicator = computed(\n () => this.indicator() ?? this.group?.resolvedIndicator() ?? this.defaults.indicator,\n );\n readonly resolvedTogglePlacement = computed(\n () =>\n this.togglePlacement() ??\n this.group?.resolvedTogglePlacement() ??\n this.defaults.togglePlacement,\n );\n readonly resolvedLevel = computed(\n () => this.level() ?? this.group?.resolvedHeadingLevel() ?? this.defaults.level,\n );\n readonly resolvedMount = computed(\n () => this.mount() ?? this.group?.resolvedMount() ?? this.defaults.mount,\n );\n readonly resolvedTruncate = computed(\n () => (this.truncate() ?? this.group?.resolvedTruncate() ?? this.defaults.truncate) === true,\n );\n\n /** Whether this panel has ever been open, which is what `lazy` reads. */\n private readonly everOpened = signal(false);\n readonly seen = computed(() => this.everOpened() || this.isOpen());\n\n ngOnInit() {\n if (this.isOpen()) this.everOpened.set(true);\n }\n\n /** The identifiers that wire the trigger to its panel. */\n ids() {\n return {\n panelId: `${this.generated}-panel`,\n triggerId: `${this.generated}-trigger`,\n };\n }\n\n /**\n * Asks to open or close. The set is asked after this disclosure's own\n * consumer has had the chance to refuse; it owns the array, so it decides\n * what `multiple` and `requireOpen` make of the request.\n */\n toggle(next: boolean, reason: CollapsibleOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.isOpen(),\n onRequest: (request) => {\n this.openChangeRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled) return;\n\n if (next) this.everOpened.set(true);\n if (this.group !== null) {\n this.group.toggle(this.identity(), reason, source);\n return;\n }\n if (moved) this.open.set(next);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport type { GlyphName } from '@slotted/angular/icon';\n\nimport { SlCollapsible } from './collapsible';\n\nconst HEADINGS = new Set(['H1', 'H2', 'H3', 'H4', 'H5', 'H6']);\n\n/**\n * The heading the trigger lives in.\n *\n * The element is the consumer's own, which is what this ecosystem composes\n * with: `<h3 slCollapsibleHeader>` is a native heading and this adds nothing to\n * it, while `<div slCollapsibleHeader>` gets `role=\"heading\"` and the level the\n * disclosure resolved. The pattern names both — \"if the native host language\n * has an element with an implicit heading and aria-level … a native host\n * language element may be used\" — and React reads the element off `level`\n * instead, because there the component owns the tag.\n *\n * The trigger is meant to be its only child: the pattern requires the button to\n * be the only element inside the heading, which is why the always-visible\n * controls go in `slCollapsibleActions` beside it.\n */\n@Directive({\n selector: '[slCollapsibleHeader]',\n standalone: true,\n exportAs: 'slCollapsibleHeader',\n host: {\n 'data-part': 'header',\n '[attr.role]': 'ariaRole()',\n '[attr.aria-level]': 'ariaLevel()',\n },\n})\nexport class SlCollapsibleHeader {\n private readonly collapsible = inject(SlCollapsible);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n /** Whether the consumer already wrote a heading, in which case ARIA adds nothing. */\n private readonly isNativeHeading = HEADINGS.has(this.native.tagName);\n\n protected readonly ariaRole = computed(() => {\n if (this.isNativeHeading || this.collapsible.resolvedLevel() === 'none') return null;\n return 'heading';\n });\n\n protected readonly ariaLevel = computed(() => {\n if (this.isNativeHeading || this.collapsible.resolvedLevel() === 'none') return null;\n return this.collapsible.resolvedLevel();\n });\n}\n\n/**\n * The control.\n *\n * It is the consumer's own `button`, so `Enter` and `Space` are the platform's\n * and the family binds no key of its own. The mark, the words and the second\n * line are the component's, because all three are parts the stylesheet places.\n */\n@Component({\n selector: 'button[slCollapsibleTrigger]',\n standalone: true,\n exportAs: 'slCollapsibleTrigger',\n imports: [SlGlyph, SlIcon],\n template: `@if (collapsible.resolvedIndicator() !== 'none') {\n <span data-part=\"indicator\" aria-hidden=\"true\"\n ><span slIcon><svg slGlyph [name]=\"indicatorGlyph()\"></svg></span\n ></span>\n }\n <span data-part=\"label\"><ng-content /></span>\n @if (description()) {\n <span data-part=\"description\">{{ description() }}</span>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'trigger',\n type: 'button',\n '[attr.id]': 'ids().triggerId',\n '[attr.aria-controls]': 'ids().panelId',\n '[attr.aria-expanded]': 'collapsible.isOpen()',\n '[attr.aria-disabled]': \"collapsible.held() ? 'true' : null\",\n '[disabled]': 'collapsible.resolvedDisabled()',\n '(click)': 'onClick($event)',\n },\n})\nexport class SlCollapsibleTrigger {\n protected readonly collapsible = inject(SlCollapsible);\n\n /**\n * A second line under the title. It is inside the trigger, so it is part of\n * the accessible name — \"Entrega, 3 de 12 itens\" is what a reader hears.\n */\n readonly description = input<string | undefined>(undefined);\n\n /**\n * The chevron is one glyph the stylesheet turns; plus and minus are two, so\n * the state picks between them here.\n */\n protected readonly indicatorGlyph = computed<GlyphName>(() => {\n if (this.collapsible.resolvedIndicator() !== 'plus-minus') return 'chevron-down';\n return this.collapsible.isOpen() ? 'minus' : 'plus';\n });\n\n protected ids() {\n return this.collapsible.ids();\n }\n\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented || this.collapsible.held()) return;\n /* A click synthesised by the keyboard reports no detail; a real one reports\n the click count. It is why Enter, Space and a pointer are told apart\n without a key listener existing for the toggle. */\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n this.collapsible.toggle(!this.collapsible.isOpen(), reason, event);\n }\n}\n\n/**\n * The always-visible controls beside the header.\n *\n * They are a sibling of the heading rather than a child of it, for two reasons\n * that agree: the pattern requires the button to be the only element inside the\n * heading, and a control inside a `button` is invalid HTML. What belongs here is\n * an `slToolbar` — one tab stop for however many actions the page puts there.\n */\n@Directive({\n selector: '[slCollapsibleActions]',\n standalone: true,\n exportAs: 'slCollapsibleActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlCollapsibleActions {}\n\n/**\n * Content built the first time the panel opens.\n *\n * `<ng-content>` is instantiated by the parent whether or not it is inserted,\n * so `mount=\"lazy\"` needs a template rather than projection. It is Angular\n * Material's own `matExpansionPanelContent`, and it is the answer this\n * ecosystem already knows.\n */\n@Directive({\n selector: 'ng-template[slCollapsibleContent]',\n standalone: true,\n exportAs: 'slCollapsibleContent',\n})\nexport class SlCollapsibleContent {\n readonly template = inject(TemplateRef);\n}\n\n/**\n * The panel.\n *\n * The box always exists, so the trigger's `aria-controls` never names an\n * element that is gone; `mount` decides whether the content inside it does.\n *\n * While the panel is closed it is taken out of the tab sequence and out of the\n * accessibility tree twice over: the stylesheet with `content-visibility`, and\n * this component with `inert`, so a browser without the property still cannot\n * put focus inside it. `mount=\"until-found\"` writes `hidden=\"until-found\"`\n * instead, and the browser removes that attribute itself when its page search\n * reaches the text inside — `beforematch` is what asks the family to open, with\n * the one reason the closed vocabulary holds for a move the browser made.\n */\n@Component({\n selector: '[slCollapsiblePanel]',\n standalone: true,\n exportAs: 'slCollapsiblePanel',\n imports: [NgTemplateOutlet],\n template: `@if (mounted()) {\n <div data-part=\"content\">\n @if (deferred()) {\n <ng-container [ngTemplateOutlet]=\"deferred()!.template\" />\n }\n <ng-content />\n </div>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'panel',\n '[attr.id]': 'ids().panelId',\n '[attr.aria-labelledby]': 'ids().triggerId',\n '[attr.role]': \"collapsible.region() ? 'region' : null\",\n '[attr.aria-busy]': \"collapsible.loading() ? 'true' : null\",\n },\n})\nexport class SlCollapsiblePanel {\n protected readonly collapsible = inject(SlCollapsible);\n protected readonly deferred = contentChild(SlCollapsibleContent);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n protected readonly mounted = computed(() => {\n const mount = this.collapsible.resolvedMount();\n if (mount === 'active') return this.collapsible.isOpen();\n if (mount === 'lazy') return this.collapsible.seen();\n return true;\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n let attached: (() => void) | undefined;\n\n effect(() => {\n const open = this.collapsible.isOpen();\n const untilFound = this.collapsible.resolvedMount() === 'until-found';\n\n attached?.();\n attached = undefined;\n\n if (open) {\n this.native.removeAttribute('hidden');\n this.native.removeAttribute('inert');\n return;\n }\n\n if (untilFound) {\n this.native.removeAttribute('inert');\n this.native.setAttribute('hidden', 'until-found');\n const reveal = () => this.collapsible.toggle(true, 'programmatic');\n this.native.addEventListener('beforematch', reveal);\n attached = () => this.native.removeEventListener('beforematch', reveal);\n return;\n }\n\n this.native.removeAttribute('hidden');\n this.native.setAttribute('inert', '');\n });\n\n destroyRef.onDestroy(() => attached?.());\n }\n\n protected ids() {\n return this.collapsible.ids();\n }\n}\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-collapsible.mjs","sources":["../../collapsible/src/collapsible-defaults.ts","../../collapsible/src/collapsible.ts","../../collapsible/src/collapsible-parts.ts","../../collapsible/src/slotted-angular-collapsible.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** The type step the header and its panel sit at. */\nexport type CollapsibleSize = 'sm' | 'md' | 'lg';\n\n/**\n * How the disclosure is drawn. `plain` paints no chrome at all, `ruled` draws a\n * hairline above the header so a stack of them reads as one list, and `framed`\n * is its own card.\n */\nexport type CollapsibleVariant = 'plain' | 'ruled' | 'framed';\n\n/**\n * The mark that says whether the panel is open. `chevron` turns between down\n * and up, `plus-minus` swaps the one bar for the pair, and `none` draws nothing\n * — which is Angular Material's `hideToggle` and Carbon's chevron-less header.\n */\nexport type CollapsibleIndicator = 'chevron' | 'plus-minus' | 'none';\n\n/** Which side of the words the mark stands on. */\nexport type CollapsibleTogglePlacement = 'end' | 'start';\n\n/**\n * The heading level the header answers to. `none` writes no heading semantics\n * at all, which is the standalone disclosure that belongs to no outline.\n *\n * The element is the consumer's own: `<h3 slCollapsibleHeader>` is a native\n * heading and the directive adds nothing, while `<div slCollapsibleHeader>`\n * gets `role=\"heading\"` and `aria-level` — the alternative the pattern itself\n * names. React reads the element off this value instead, and the two reach the\n * same accessibility tree.\n */\nexport type CollapsibleLevel = 'none' | '1' | '2' | '3' | '4' | '5' | '6';\n\n/**\n * When the panel's content exists. The box always does, so the trigger's\n * `aria-controls` never names an element that is gone.\n */\nexport type CollapsibleMount = 'active' | 'lazy' | 'eager' | 'until-found';\n\n/** Why the panel opened or closed. */\nexport type CollapsibleOpenReason = 'pointer' | 'keyboard' | 'select' | 'programmatic';\n\nexport interface CollapsibleDefaults {\n indicator: CollapsibleIndicator;\n level: CollapsibleLevel;\n mount: CollapsibleMount;\n size: CollapsibleSize;\n togglePlacement: CollapsibleTogglePlacement;\n truncate: boolean;\n variant: CollapsibleVariant;\n}\n\nconst FALLBACK: CollapsibleDefaults = {\n indicator: 'chevron',\n level: 'none',\n mount: 'eager',\n size: 'md',\n togglePlacement: 'end',\n truncate: false,\n variant: 'plain',\n};\n\nexport const COLLAPSIBLE_DEFAULTS = new InjectionToken<CollapsibleDefaults>(\n 'slotted collapsible defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its disclosures look, rather than repeating\n * the same seven inputs on every one in a product. A disclosure that states any\n * of them itself still wins, and so does the accordion between the two.\n */\nexport function provideCollapsibleDefaults(defaults: Partial<CollapsibleDefaults>) {\n return {\n provide: COLLAPSIBLE_DEFAULTS,\n useFactory: (): CollapsibleDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a disclosure renders as here, before it states anything of its own. */\nexport function injectCollapsibleDefaults(): CollapsibleDefaults {\n return inject(COLLAPSIBLE_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlCollapsibleIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-collapsible-${this.count}`;\n }\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { SlAccordion } from '@slotted/angular/accordion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\n\nimport { injectCollapsibleDefaults, SlCollapsibleIdFactory } from './collapsible-defaults';\nimport type {\n CollapsibleIndicator,\n CollapsibleLevel,\n CollapsibleMount,\n CollapsibleOpenReason,\n CollapsibleSize,\n CollapsibleTogglePlacement,\n CollapsibleVariant,\n} from './collapsible-defaults';\n\nexport type {\n CollapsibleDefaults,\n CollapsibleIndicator,\n CollapsibleLevel,\n CollapsibleMount,\n CollapsibleOpenReason,\n CollapsibleSize,\n CollapsibleTogglePlacement,\n CollapsibleVariant,\n} from './collapsible-defaults';\n\n/** The trigger of one disclosure, in the order the DOM holds them. */\nexport const COLLAPSIBLE_TRIGGER_SELECTOR = '[data-part=\"trigger\"]';\n\n/**\n * One disclosure: a header the reader operates and a panel it controls.\n *\n * **The keyboard is the platform's.** The trigger is a `button`, so `Enter` and\n * `Space` toggle without the family binding a key, and every trigger stays in\n * the page tab sequence — which is what the APG's accordion pattern requires\n * and what `w3c/aria-practices#3434` removed the roving alternative for.\n *\n * **The panel opens without being measured.** The stylesheet transitions a grid\n * track between `0fr` and `1fr`, so the height is the content's own at every\n * frame. Radix, Base UI, Ark and Angular Material each read the layout and\n * write a custom property, which is wrong for one frame on the server and stale\n * until a resize observer fires.\n *\n * **Inside an `slAccordion` the value belongs to the set.** The disclosure then\n * reports its own request as well, so a consumer may watch one panel without\n * unpacking the set's array.\n */\n@Component({\n selector: '[slCollapsible]',\n standalone: true,\n exportAs: 'slCollapsible',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/collapsible/collapsible.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'collapsible',\n 'data-ui-collapsible': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-value]': 'identity()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-indicator]': 'resolvedIndicator()',\n '[attr.data-toggle-placement]': 'resolvedTogglePlacement()',\n '[attr.data-mount]': 'resolvedMount()',\n '[attr.data-truncate]': \"resolvedTruncate() ? '' : null\",\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n },\n})\nexport class SlCollapsible implements OnInit {\n /** Whether the panel is open. Two-way, so a template may bind it directly. */\n readonly open = model<boolean>(false);\n /**\n * What this disclosure is called inside an accordion. It is identity rather\n * than state — the state model is `open` — and the set's array holds it. One\n * that states none is given one from the id factory.\n */\n readonly value = input<string | undefined>(undefined);\n /** Unstated rather than false, so the disclosure defers to the set around it. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * Whether the panel's content is still on its way. The panel keeps a line's\n * height and carries `aria-busy`; what stands in for the content is\n * `slSkeleton`, composed by the consumer.\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Whether the panel is a `region` landmark. Off by default: the APG's own\n * example warns that a landmark per panel fills the landmark list.\n */\n readonly region = input(false, { transform: booleanAttribute });\n readonly size = input<CollapsibleSize | undefined>(undefined);\n readonly variant = input<CollapsibleVariant | undefined>(undefined);\n readonly indicator = input<CollapsibleIndicator | undefined>(undefined);\n readonly togglePlacement = input<CollapsibleTogglePlacement | undefined>(undefined);\n readonly level = input<CollapsibleLevel | undefined>(undefined);\n readonly mount = input<CollapsibleMount | undefined>(undefined);\n readonly truncate = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n\n /** One output for one transition, carrying the reason and the event. */\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n private readonly defaults = injectCollapsibleDefaults();\n /** The set this disclosure is in, or nothing: a standalone one is complete. */\n private readonly group = inject(SlAccordion, { optional: true });\n private readonly generated = inject(SlCollapsibleIdFactory).next();\n\n readonly identity = computed(() => this.value() ?? this.generated);\n\n /**\n * Three owners, in one order. The set's value wins over the disclosure's own\n * `open` because the set is what a consumer wrote when they wrote an\n * accordion; a disclosure standing alone owns the value outright.\n */\n readonly isOpen = computed(() =>\n this.group === null ? this.open() : this.group.holds(this.identity()),\n );\n\n /** Whether the set refuses to let this one close, which the APG marks. */\n readonly held = computed(() => this.group?.isHeld(this.identity()) ?? false);\n\n readonly resolvedDisabled = computed(\n () => (this.disabled() ?? this.group?.disabled() ?? false) === true,\n );\n readonly resolvedSize = computed(\n () => this.size() ?? this.group?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(\n () => this.variant() ?? this.group?.itemVariant() ?? this.defaults.variant,\n );\n readonly resolvedIndicator = computed(\n () => this.indicator() ?? this.group?.resolvedIndicator() ?? this.defaults.indicator,\n );\n readonly resolvedTogglePlacement = computed(\n () =>\n this.togglePlacement() ??\n this.group?.resolvedTogglePlacement() ??\n this.defaults.togglePlacement,\n );\n readonly resolvedLevel = computed(\n () => this.level() ?? this.group?.resolvedHeadingLevel() ?? this.defaults.level,\n );\n readonly resolvedMount = computed(\n () => this.mount() ?? this.group?.resolvedMount() ?? this.defaults.mount,\n );\n readonly resolvedTruncate = computed(\n () => (this.truncate() ?? this.group?.resolvedTruncate() ?? this.defaults.truncate) === true,\n );\n\n /** Whether this panel has ever been open, which is what `lazy` reads. */\n private readonly everOpened = signal(false);\n readonly seen = computed(() => this.everOpened() || this.isOpen());\n\n ngOnInit() {\n if (this.isOpen()) this.everOpened.set(true);\n }\n\n /** The identifiers that wire the trigger to its panel. */\n ids() {\n return {\n panelId: `${this.generated}-panel`,\n triggerId: `${this.generated}-trigger`,\n };\n }\n\n /**\n * Asks to open or close. The set is asked after this disclosure's own\n * consumer has had the chance to refuse; it owns the array, so it decides\n * what `multiple` and `requireOpen` make of the request.\n */\n toggle(next: boolean, reason: CollapsibleOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.isOpen(),\n onRequest: (request) => {\n this.openChangeRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled) return;\n\n if (next) this.everOpened.set(true);\n if (this.group !== null) {\n this.group.toggle(this.identity(), reason, source);\n return;\n }\n if (moved) this.open.set(next);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport type { GlyphName } from '@slotted/angular/icon';\n\nimport { SlCollapsible } from './collapsible';\n\nconst HEADINGS = new Set(['H1', 'H2', 'H3', 'H4', 'H5', 'H6']);\n\n/**\n * The heading the trigger lives in.\n *\n * The element is the consumer's own, which is what this ecosystem composes\n * with: `<h3 slCollapsibleHeader>` is a native heading and this adds nothing to\n * it, while `<div slCollapsibleHeader>` gets `role=\"heading\"` and the level the\n * disclosure resolved. The pattern names both — \"if the native host language\n * has an element with an implicit heading and aria-level … a native host\n * language element may be used\" — and React reads the element off `level`\n * instead, because there the component owns the tag.\n *\n * The trigger is meant to be its only child: the pattern requires the button to\n * be the only element inside the heading, which is why the always-visible\n * controls go in `slCollapsibleActions` beside it.\n */\n@Directive({\n selector: '[slCollapsibleHeader]',\n standalone: true,\n exportAs: 'slCollapsibleHeader',\n host: {\n 'data-part': 'header',\n 'data-part-header': '',\n '[attr.role]': 'ariaRole()',\n '[attr.aria-level]': 'ariaLevel()',\n },\n})\nexport class SlCollapsibleHeader {\n private readonly collapsible = inject(SlCollapsible);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n /** Whether the consumer already wrote a heading, in which case ARIA adds nothing. */\n private readonly isNativeHeading = HEADINGS.has(this.native.tagName);\n\n protected readonly ariaRole = computed(() => {\n if (this.isNativeHeading || this.collapsible.resolvedLevel() === 'none') return null;\n return 'heading';\n });\n\n protected readonly ariaLevel = computed(() => {\n if (this.isNativeHeading || this.collapsible.resolvedLevel() === 'none') return null;\n return this.collapsible.resolvedLevel();\n });\n}\n\n/**\n * The control.\n *\n * It is the consumer's own `button`, so `Enter` and `Space` are the platform's\n * and the family binds no key of its own. The mark, the words and the second\n * line are the component's, because all three are parts the stylesheet places.\n */\n@Component({\n selector: 'button[slCollapsibleTrigger]',\n standalone: true,\n exportAs: 'slCollapsibleTrigger',\n imports: [SlGlyph, SlIcon],\n template: `@if (collapsible.resolvedIndicator() !== 'none') {\n <span data-part=\"indicator\" data-part-indicator=\"\" aria-hidden=\"true\"\n ><span slIcon><svg slGlyph [name]=\"indicatorGlyph()\"></svg></span\n ></span>\n }\n <span data-part=\"label\" data-part-label=\"\"><ng-content /></span>\n @if (description()) {\n <span data-part=\"description\" data-part-description=\"\">{{ description() }}</span>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'trigger',\n 'data-part-trigger': '',\n type: 'button',\n '[attr.id]': 'ids().triggerId',\n '[attr.aria-controls]': 'ids().panelId',\n '[attr.aria-expanded]': 'collapsible.isOpen()',\n '[attr.aria-disabled]': \"collapsible.held() ? 'true' : null\",\n '[disabled]': 'collapsible.resolvedDisabled()',\n '(click)': 'onClick($event)',\n },\n})\nexport class SlCollapsibleTrigger {\n protected readonly collapsible = inject(SlCollapsible);\n\n /**\n * A second line under the title. It is inside the trigger, so it is part of\n * the accessible name — \"Entrega, 3 de 12 itens\" is what a reader hears.\n */\n readonly description = input<string | undefined>(undefined);\n\n /**\n * The chevron is one glyph the stylesheet turns; plus and minus are two, so\n * the state picks between them here.\n */\n protected readonly indicatorGlyph = computed<GlyphName>(() => {\n if (this.collapsible.resolvedIndicator() !== 'plus-minus') return 'chevron-down';\n return this.collapsible.isOpen() ? 'minus' : 'plus';\n });\n\n protected ids() {\n return this.collapsible.ids();\n }\n\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented || this.collapsible.held()) return;\n /* A click synthesised by the keyboard reports no detail; a real one reports\n the click count. It is why Enter, Space and a pointer are told apart\n without a key listener existing for the toggle. */\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n this.collapsible.toggle(!this.collapsible.isOpen(), reason, event);\n }\n}\n\n/**\n * The always-visible controls beside the header.\n *\n * They are a sibling of the heading rather than a child of it, for two reasons\n * that agree: the pattern requires the button to be the only element inside the\n * heading, and a control inside a `button` is invalid HTML. What belongs here is\n * an `slToolbar` — one tab stop for however many actions the page puts there.\n */\n@Directive({\n selector: '[slCollapsibleActions]',\n standalone: true,\n exportAs: 'slCollapsibleActions',\n host: { 'data-part': 'actions', 'data-part-actions': '' },\n})\nexport class SlCollapsibleActions {}\n\n/**\n * Content built the first time the panel opens.\n *\n * `<ng-content>` is instantiated by the parent whether or not it is inserted,\n * so `mount=\"lazy\"` needs a template rather than projection. It is Angular\n * Material's own `matExpansionPanelContent`, and it is the answer this\n * ecosystem already knows.\n */\n@Directive({\n selector: 'ng-template[slCollapsibleContent]',\n standalone: true,\n exportAs: 'slCollapsibleContent',\n})\nexport class SlCollapsibleContent {\n readonly template = inject(TemplateRef);\n}\n\n/**\n * The panel.\n *\n * The box always exists, so the trigger's `aria-controls` never names an\n * element that is gone; `mount` decides whether the content inside it does.\n *\n * While the panel is closed it is taken out of the tab sequence and out of the\n * accessibility tree twice over: the stylesheet with `content-visibility`, and\n * this component with `inert`, so a browser without the property still cannot\n * put focus inside it. `mount=\"until-found\"` writes `hidden=\"until-found\"`\n * instead, and the browser removes that attribute itself when its page search\n * reaches the text inside — `beforematch` is what asks the family to open, with\n * the one reason the closed vocabulary holds for a move the browser made.\n */\n@Component({\n selector: '[slCollapsiblePanel]',\n standalone: true,\n exportAs: 'slCollapsiblePanel',\n imports: [NgTemplateOutlet],\n template: `@if (mounted()) {\n <div data-part=\"content\" data-part-content=\"\">\n @if (deferred()) {\n <ng-container [ngTemplateOutlet]=\"deferred()!.template\" />\n }\n <ng-content />\n </div>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'panel',\n 'data-part-panel': '',\n '[attr.id]': 'ids().panelId',\n '[attr.aria-labelledby]': 'ids().triggerId',\n '[attr.role]': \"collapsible.region() ? 'region' : null\",\n '[attr.aria-busy]': \"collapsible.loading() ? 'true' : null\",\n },\n})\nexport class SlCollapsiblePanel {\n protected readonly collapsible = inject(SlCollapsible);\n protected readonly deferred = contentChild(SlCollapsibleContent);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n protected readonly mounted = computed(() => {\n const mount = this.collapsible.resolvedMount();\n if (mount === 'active') return this.collapsible.isOpen();\n if (mount === 'lazy') return this.collapsible.seen();\n return true;\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n let attached: (() => void) | undefined;\n\n effect(() => {\n const open = this.collapsible.isOpen();\n const untilFound = this.collapsible.resolvedMount() === 'until-found';\n\n attached?.();\n attached = undefined;\n\n if (open) {\n this.native.removeAttribute('hidden');\n this.native.removeAttribute('inert');\n return;\n }\n\n if (untilFound) {\n this.native.removeAttribute('inert');\n this.native.setAttribute('hidden', 'until-found');\n const reveal = () => this.collapsible.toggle(true, 'programmatic');\n this.native.addEventListener('beforematch', reveal);\n attached = () => this.native.removeEventListener('beforematch', reveal);\n return;\n }\n\n this.native.removeAttribute('hidden');\n this.native.setAttribute('inert', '');\n });\n\n destroyRef.onDestroy(() => attached?.());\n }\n\n protected ids() {\n return this.collapsible.ids();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAqDA,MAAM,QAAQ,GAAwB;AACpC,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,OAAO,EAAE,OAAO;CACjB;MAEY,oBAAoB,GAAG,IAAI,cAAc,CACpD,8BAA8B,EAC9B,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,EAAE;AAGjD;;;;AAIG;AACG,SAAU,0BAA0B,CAAC,QAAsC,EAAA;IAC/E,OAAO;AACL,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,UAAU,EAAE,OAA4B,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;KACtE;AACH;AAEA;SACgB,yBAAyB,GAAA;AACvC,IAAA,OAAO,MAAM,CAAC,oBAAoB,CAAC;AACrC;AAEA;;;;;AAKG;MAEU,sBAAsB,CAAA;IACzB,KAAK,GAAG,CAAC;IAEjB,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC;AACf,QAAA,OAAO,CAAA,oBAAA,EAAuB,IAAI,CAAC,KAAK,EAAE;IAC5C;uGANW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACpDlC;AACO,MAAM,4BAA4B,GAAG;AAE5C;;;;;;;;;;;;;;;;;AAiBG;MA0BU,aAAa,CAAA;;IAEf,IAAI,GAAG,KAAK,CAAU,KAAK;6EAAC;AACrC;;;;AAIG;IACM,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;;AAE5C,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACjF;AACF;;;;AAIG;IACM,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAChE;;;AAGG;IACM,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACtD,IAAI,GAAG,KAAK,CAA8B,SAAS;6EAAC;IACpD,OAAO,GAAG,KAAK,CAAiC,SAAS;gFAAC;IAC1D,SAAS,GAAG,KAAK,CAAmC,SAAS;kFAAC;IAC9D,eAAe,GAAG,KAAK,CAAyC,SAAS;wFAAC;IAC1E,KAAK,GAAG,KAAK,CAA+B,SAAS;8EAAC;IACtD,KAAK,GAAG,KAAK,CAA+B,SAAS;8EAAC;AACtD,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACjF;;IAGO,iBAAiB,GAAG,MAAM,EAA0B;IAE5C,QAAQ,GAAG,yBAAyB,EAAE;;IAEtC,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,EAAE;AAEzD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS;iFAAC;AAElE;;;;AAIG;AACM,IAAA,MAAM,GAAG,QAAQ,CAAC,MACzB,IAAI,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;+EACtE;;AAGQ,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK;6EAAC;IAEnE,gBAAgB,GAAG,QAAQ,CAClC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,MAAM,IAAI;yFACpE;IACQ,YAAY,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;qFACtE;IACQ,eAAe,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAC3E;IACQ,iBAAiB,GAAG,QAAQ,CACnC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS;0FACrF;IACQ,uBAAuB,GAAG,QAAQ,CACzC,MACE,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,KAAK,EAAE,uBAAuB,EAAE;QACrC,IAAI,CAAC,QAAQ,CAAC,eAAe;gGAChC;IACQ,aAAa,GAAG,QAAQ,CAC/B,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAChF;IACQ,aAAa,GAAG,QAAQ,CAC/B,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFACzE;IACQ,gBAAgB,GAAG,QAAQ,CAClC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,MAAM,IAAI;yFAC7F;;IAGgB,UAAU,GAAG,MAAM,CAAC,KAAK;mFAAC;AAClC,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;6EAAC;IAElE,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9C;;IAGA,GAAG,GAAA;QACD,OAAO;AACL,YAAA,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,MAAA,CAAQ;AAClC,YAAA,SAAS,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,QAAA,CAAU;SACvC;IACH;AAEA;;;;AAIG;AACH,IAAA,MAAM,CAAC,IAAa,EAAE,MAA6B,EAAE,MAAc,EAAA;AACjE,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;YAAE;QAE5B,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAU;AACxC,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,YAAA,SAAS,EAAE,CAAC,OAAO,KAAI;AACrB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;AACpC,gBAAA,SAAS,GAAG,OAAO,CAAC,SAAS;YAC/B,CAAC;AACF,SAAA,CAAC;AACF,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AACjD,QAAA,IAAI,SAAS;YAAE;AAEf,QAAA,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC;YAClD;QACF;AACA,QAAA,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;uGA7HW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,kvEArBd,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4gRAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAqBf,aAAa,EAAA,UAAA,EAAA,CAAA;kBAzBzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN,eAAe,YACf,gBAAgB,EAAA,eAAA,EAET,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,qBAAqB,EAAE,EAAE;AACzB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,gBAAgB,EAAE,EAAE;AACpB,wBAAA,mBAAmB,EAAE,YAAY;AACjC,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,uBAAuB,EAAE,qBAAqB;AAC9C,wBAAA,8BAA8B,EAAE,2BAA2B;AAC3D,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,sBAAsB,EAAE,gCAAgC;AACxD,wBAAA,kBAAkB,EAAE,sBAAsB;AAC1C,wBAAA,sBAAsB,EAAE,gCAAgC;AACxD,wBAAA,qBAAqB,EAAE,uBAAuB;AAC/C,qBAAA,EAAA,MAAA,EAAA,CAAA,4gRAAA,CAAA,EAAA;;;AC/DH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE9D;;;;;;;;;;;;;;AAcG;MAYU,mBAAmB,CAAA;AACb,IAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACnC,IAAA,MAAM,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;;IAGtD,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAEjD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAC1C,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,MAAM;AAAE,YAAA,OAAO,IAAI;AACpF,QAAA,OAAO,SAAS;IAClB,CAAC;iFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAC3C,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,MAAM;AAAE,YAAA,OAAO,IAAI;AACpF,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;IACzC,CAAC;kFAAC;uGAfS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAX/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,kBAAkB,EAAE,EAAE;AACtB,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,mBAAmB,EAAE,aAAa;AACnC,qBAAA;AACF,iBAAA;;AAmBD;;;;;;AAMG;MA6BU,oBAAoB,CAAA;AACZ,IAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AAEtD;;;AAGG;IACM,WAAW,GAAG,KAAK,CAAqB,SAAS;oFAAC;AAE3D;;;AAGG;AACgB,IAAA,cAAc,GAAG,QAAQ,CAAY,MAAK;AAC3D,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,YAAY;AAAE,YAAA,OAAO,cAAc;AAChF,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,OAAO,GAAG,MAAM;IACrD,CAAC;uFAAC;IAEQ,GAAG,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;IAC/B;AAEU,IAAA,OAAO,CAAC,KAAiB,EAAA;QACjC,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAAE;AACvD;;AAEqD;AACrD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,SAAS;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;IACpE;uGA7BW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBrB,CAAA;;;;;;;;MAQN,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATM,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAwBd,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA5BhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQN,KAAA,CAAA;oBACJ,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,mBAAmB,EAAE,EAAE;AACvB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,iBAAiB;AAC9B,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,sBAAsB,EAAE,oCAAoC;AAC5D,wBAAA,YAAY,EAAE,gCAAgC;AAC9C,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACF,iBAAA;;AAiCD;;;;;;;AAOG;MAOU,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,IAAI,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,EAAE;AAC1D,iBAAA;;AAGD;;;;;;;AAOG;MAMU,oBAAoB,CAAA;AACtB,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;uGAD5B,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;;AAKD;;;;;;;;;;;;;AAaG;MAyBU,kBAAkB,CAAA;AACV,IAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;IACnC,QAAQ,GAAG,YAAY,CAAC,oBAAoB;iFAAC;AAC/C,IAAA,MAAM,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AAEpD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;QAC9C,IAAI,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;QACxD,IAAI,KAAK,KAAK,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACpD,QAAA,OAAO,IAAI;IACb,CAAC;gFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,QAAkC;QAEtC,MAAM,CAAC,MAAK;YACV,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,aAAa;YAErE,QAAQ,IAAI;YACZ,QAAQ,GAAG,SAAS;YAEpB,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;gBACpC;YACF;YAEA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC;AACjD,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC;gBAClE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC;AACnD,gBAAA,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC;gBACvE;YACF;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;AACvC,QAAA,CAAC,CAAC;QAEF,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,IAAI,CAAC;IAC1C;IAEU,GAAG,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;IAC/B;uGA/CW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wCAAA,EAAA,gBAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEc,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBrD,CAAA;;;;;;;AAOR,GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAoBf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOR,GAAA,CAAA;oBACF,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,iBAAiB,EAAE,EAAE;AACrB,wBAAA,WAAW,EAAE,eAAe;AAC5B,wBAAA,wBAAwB,EAAE,iBAAiB;AAC3C,wBAAA,aAAa,EAAE,wCAAwC;AACvD,wBAAA,kBAAkB,EAAE,uCAAuC;AAC5D,qBAAA;AACF,iBAAA;uHAG4C,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC9MjE;;AAEG;;"}
|