@slotted/angular 0.1.0-beta.7 → 0.1.0-beta.9
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/docs/calendar.json +1 -1
- package/docs/code-block.json +92 -92
- package/docs/code-block.md +69 -69
- package/docs/currency-field.json +7 -0
- package/docs/currency-field.md +1 -0
- package/docs/data-grid.examples.md +1 -1
- package/docs/data-grid.json +21 -4
- package/docs/data-grid.md +1 -1
- package/docs/data-grid.props.md +5 -3
- package/docs/dialog.examples.md +138 -136
- package/docs/dialog.json +8 -8
- package/docs/filter-bar.json +118 -118
- package/docs/filter-bar.md +79 -79
- package/docs/guidelines/async-feedback.md +10 -0
- package/docs/guidelines/composition.md +11 -7
- package/docs/guidelines/index.md +6 -1
- package/docs/guidelines/list-pages.md +30 -0
- package/docs/guidelines/overviews.md +10 -0
- package/docs/markdown.json +79 -79
- package/docs/markdown.md +65 -65
- package/docs/page-header.json +1 -1
- package/docs/skills/compose-screen/SKILL.md +22 -10
- package/docs/skills/review-screen/SKILL.md +6 -0
- package/docs/skills/waiting-states/SKILL.md +4 -1
- package/docs/tags-input.json +28 -2
- package/docs/tags-input.md +4 -1
- package/docs/timeline.json +131 -131
- package/docs/timeline.md +123 -123
- package/fesm2022/slotted-angular-accordion.mjs +4 -2
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +21 -10
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
- package/fesm2022/slotted-angular-alert.mjs +17 -11
- package/fesm2022/slotted-angular-alert.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +52 -40
- 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 +9 -6
- 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 +53 -25
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-calendar.mjs +82 -30
- 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 +158 -64
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +4 -2
- 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 +13 -8
- 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 +77 -31
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-command-palette.mjs +150 -54
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
- package/fesm2022/slotted-angular-container.mjs +6 -4
- package/fesm2022/slotted-angular-container.mjs.map +1 -1
- package/fesm2022/slotted-angular-context-menu.mjs +5 -4
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +98 -32
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +127 -44
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +309 -104
- 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 +40 -14
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +19 -9
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +41 -16
- 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 +37 -23
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +111 -42
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-description-list.mjs +33 -19
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +61 -28
- 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 +38 -26
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +195 -67
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +259 -102
- 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 +104 -43
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-form.mjs +18 -10
- package/fesm2022/slotted-angular-form.mjs.map +1 -1
- package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
- package/fesm2022/slotted-angular-grid.mjs +4 -2
- package/fesm2022/slotted-angular-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-highlight.mjs +5 -3
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
- package/fesm2022/slotted-angular-hover-card.mjs +5 -4
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-icon.mjs +6 -3
- package/fesm2022/slotted-angular-icon.mjs.map +1 -1
- package/fesm2022/slotted-angular-image.mjs +13 -10
- package/fesm2022/slotted-angular-image.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-inline-message.mjs +10 -8
- 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 +14 -10
- 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 +41 -27
- package/fesm2022/slotted-angular-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-menubar.mjs +4 -2
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
- package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
- package/fesm2022/slotted-angular-message.mjs +113 -51
- package/fesm2022/slotted-angular-message.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +133 -57
- 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 +107 -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 +72 -42
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-page.mjs +18 -9
- 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 +25 -18
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-progress-indicator.mjs +122 -30
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-prompt-composer.mjs +24 -18
- 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 +9 -5
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-section.mjs +34 -15
- package/fesm2022/slotted-angular-section.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +15 -9
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +135 -53
- 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 +29 -13
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +25 -11
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-splitter.mjs +11 -9
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
- package/fesm2022/slotted-angular-stack.mjs +4 -2
- package/fesm2022/slotted-angular-stack.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +35 -28
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
- package/fesm2022/slotted-angular-stepper.mjs +40 -15
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
- package/fesm2022/slotted-angular-switch.mjs +15 -10
- package/fesm2022/slotted-angular-switch.mjs.map +1 -1
- package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +135 -72
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +31 -14
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-tag.mjs +19 -12
- package/fesm2022/slotted-angular-tag.mjs.map +1 -1
- package/fesm2022/slotted-angular-tags-input.mjs +253 -28
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
- package/fesm2022/slotted-angular-text-field.mjs +49 -15
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-textarea.mjs +5 -3
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-field.mjs +48 -14
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +28 -14
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +109 -40
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-timeline.mjs +135 -64
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
- package/fesm2022/slotted-angular-toast.mjs +42 -31
- package/fesm2022/slotted-angular-toast.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +10 -6
- 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 +21 -10
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +8 -5
- 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 +46 -21
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +69 -30
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-tree.mjs +74 -26
- package/fesm2022/slotted-angular-tree.mjs.map +1 -1
- package/fesm2022/slotted-angular-typography.mjs +8 -4
- package/fesm2022/slotted-angular-typography.mjs.map +1 -1
- package/fesm2022/slotted-angular-upload.mjs +125 -57
- package/fesm2022/slotted-angular-upload.mjs.map +1 -1
- package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
- package/fesm2022/slotted-angular-wizard.mjs +163 -65
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-accordion.d.ts.map +1 -1
- package/types/slotted-angular-action-bar.d.ts.map +1 -1
- package/types/slotted-angular-action-sheet.d.ts.map +1 -1
- package/types/slotted-angular-alert.d.ts +1 -1
- package/types/slotted-angular-alert.d.ts.map +1 -1
- 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.map +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.map +1 -1
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-calendar.d.ts +2 -0
- 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.map +1 -1
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -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 +1 -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 +39 -13
- 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 +26 -2
- 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.map +1 -1
- package/types/slotted-angular-date-picker.d.ts.map +1 -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.map +1 -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 +2 -1
- 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.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- 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 +1 -1
- 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 +1 -1
- 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.map +1 -1
- 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.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.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +1 -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.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 +1 -1
- 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.map +1 -1
- 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.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.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +1 -1
- 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.map +1 -1
- 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.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.map +1 -1
- package/types/slotted-angular-tabs.d.ts.map +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-time-field.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-timeline.d.ts.map +1 -1
- package/types/slotted-angular-toast.d.ts +2 -2
- package/types/slotted-angular-toast.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
- package/types/slotted-angular-toolbar.d.ts.map +1 -1
- package/types/slotted-angular-tooltip.d.ts.map +1 -1
- package/types/slotted-angular-top-navigation.d.ts.map +1 -1
- package/types/slotted-angular-tour.d.ts.map +1 -1
- package/types/slotted-angular-transfer.d.ts.map +1 -1
- package/types/slotted-angular-tree.d.ts.map +1 -1
- package/types/slotted-angular-typography.d.ts.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-icon.mjs","sources":["../../icon/src/glyph.ts","../../icon/src/icon.types.ts","../../icon/src/icon.ts","../../icon/src/slotted-angular-icon.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport { GLYPH_VIEW_BOX, GLYPHS } from '@slotted/core/glyph';\nimport type { GlyphDrawing, GlyphName } from '@slotted/core/glyph';\n\nlet sequence = 0;\n\n/**\n * Glyph is the library's own artwork, drawn as a real `<svg>`: the Lucide\n * geometry `@slotted/core/glyph` holds, stroked or filled with `currentColor`.\n * It goes inside a `slIcon` box, which owns the size, the colour, the\n * alignment and the name; the glyph owns only the drawing. Every family draws\n * its own icons — a close button's cross, a pager's chevrons — with this\n * element, and never with a pseudo-element or a mask of its own.\n *\n * `solid` draws a status mark the way a tone's badge reads: the glyph's first\n * shape filled, and the symbol inside it cut out of the fill by an SVG\n * `<mask>`, so whatever lies behind shows through the symbol on any ground.\n *\n * The children carry the `svg:` namespace because the template is parsed apart\n * from its host: an unprefixed `<path>` would be created as an HTML element.\n */\n@Component({\n selector: 'svg[slGlyph]',\n standalone: true,\n template: `@if (solid()) {\n <svg:defs>\n <svg:mask\n [attr.id]=\"maskId\"\n maskUnits=\"userSpaceOnUse\"\n x=\"-2\"\n y=\"-2\"\n width=\"28\"\n height=\"28\"\n >\n <svg:rect x=\"-2\" y=\"-2\" width=\"28\" height=\"28\" fill=\"#fff\" />\n <svg:g\n fill=\"none\"\n stroke=\"#000\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [attr.stroke-width]=\"drawing().strokeWidth\"\n >\n @for (d of symbol(); track $index) {\n <svg:path [attr.d]=\"d\" />\n }\n </svg:g>\n </svg:mask>\n </svg:defs>\n }\n <svg:g [attr.transform]=\"transform()\">\n @if (solid()) {\n <svg:path\n [attr.d]=\"drawing().paths[0]\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [attr.stroke-width]=\"drawing().strokeWidth\"\n [attr.mask]=\"'url(#' + maskId + ')'\"\n />\n } @else {\n @for (d of drawing().paths; track $index) {\n <svg:path [attr.d]=\"d\" />\n }\n }\n </svg:g>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'aria-hidden': 'true',\n focusable: 'false',\n 'data-part': 'glyph',\n '[attr.data-glyph]': 'name()',\n '[attr.viewBox]': 'viewBox',\n '[attr.data-solid]': \"solid() ? '' : null\",\n '[attr.fill]': \"solid() ? null : stroked() ? 'none' : 'currentColor'\",\n '[attr.stroke]': \"!solid() && stroked() ? 'currentColor' : null\",\n '[attr.stroke-width]': '!solid() && stroked() ? drawing().strokeWidth : null',\n '[attr.stroke-linecap]': \"!solid() && stroked() ? 'round' : null\",\n '[attr.stroke-linejoin]': \"!solid() && stroked() ? 'round' : null\",\n },\n})\nexport class SlGlyph {\n /** One of the library's own icons: its glyph token without `--slotted-icon-`. */\n readonly name = input.required<GlyphName>();\n /**\n * The first shape filled and the symbol cut out of it — a tone's status\n * mark. For glyphs whose first shape encloses the rest (`circle-*`,\n * `triangle-alert`).\n */\n readonly solid = input(false, { transform: booleanAttribute });\n\n protected readonly maskId = `sl-glyph-${String((sequence += 1))}`;\n\n protected readonly viewBox = GLYPH_VIEW_BOX;\n protected readonly drawing = computed<GlyphDrawing>(() => GLYPHS[this.name()]);\n protected readonly symbol = computed(() => this.drawing().paths.slice(1));\n protected readonly stroked = computed(() => this.drawing().paint === 'stroke');\n protected readonly transform = computed(() => {\n const [dx, dy] = this.drawing().offset;\n return dx === 0 && dy === 0 ? null : `translate(${dx} ${dy})`;\n });\n}\n","/**\n * Three steps read the control icon scale, which the theme restates per\n * density. `text` follows the type the icon sits in, because a control-sized\n * glyph inside a display heading is not an icon.\n */\nexport type IconSize = 'text' | 'sm' | 'md' | 'lg';\n\nexport type IconTone =\n 'inherit' | 'default' | 'muted' | 'accent' | 'success' | 'warning' | 'danger' | 'inverse';\n\n/**\n * `inherit` is the absence of a colour rather than a colour of its own, so it\n * removes the attribute and lets the surface decide.\n */\nexport function toneAttribute(tone: IconTone | undefined): string | null {\n return tone === undefined || tone === 'inherit' ? null : tone;\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { toneAttribute } from './icon.types';\nimport type { IconSize, IconTone } from './icon.types';\n\n/**\n * Icon is the box a glyph is drawn in, not the glyph. The library ships no\n * catalogue: the artwork is the consumer's — an `ng-icon`, an inline `svg`,\n * anything that renders one — and this family owns the size it is drawn at,\n * the colour it inherits, where it sits against a line of text, and whether it\n * mirrors where reading runs the other way.\n *\n * The selector is the bare attribute, so the consumer writes the element. It\n * is a component rather than a directive only because a directive carries no\n * `styleUrl`, and that also means it cannot sit on `<ng-icon>` itself: Angular\n * refuses two components on one element, so the box is always written.\n */\n@Component({\n selector: '[slIcon]',\n standalone: true,\n exportAs: 'slIcon',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/icon/icon.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'icon',\n 'data-part': 'root',\n '[attr.data-size]': 'size() ?? null',\n '[attr.data-tone]': 'toneAttribute()',\n '[attr.data-directional]': 'directional() ? \"\" : null',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-hidden]': 'named() ? null : \"true\"',\n },\n})\nexport class SlIcon {\n readonly directional = input(false, { transform: booleanAttribute });\n readonly label = input<string>();\n readonly size = input<IconSize>();\n readonly tone = input<IconTone>();\n\n /**\n * A name the consumer wrote on the element counts as much as the input, and\n * has to be read rather than assumed absent: a host binding that wrote\n * `null` would delete the consumer's own `aria-label` and hide the icon it\n * named, which is a silent defect in the likeliest mistake. `aria-labelledby`\n * is read and never written, so the attribute the consumer put there stays\n * exactly as written.\n */\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n protected readonly ariaLabel = computed(() => this.label() ?? this.writtenLabel);\n\n /**\n * The icon is decorative when it has no name and meaningful when it has one,\n * which is why there is no `decorative` input: named and hidden cannot both\n * be true.\n */\n protected readonly named = computed(\n () => this.ariaLabel() !== null || this.writtenLabelledBy !== null,\n );\n\n /**\n * `role=\"img\"` requires a name, so it appears only once there is one, and a\n * role the consumer chose is left alone.\n */\n protected readonly role = computed(() =>\n this.writtenRole === null ? (this.named() ? 'img' : null) : this.writtenRole,\n );\n\n protected readonly toneAttribute = computed(() => toneAttribute(this.tone()));\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-icon.mjs","sources":["../../icon/src/glyph.ts","../../icon/src/icon.types.ts","../../icon/src/icon.ts","../../icon/src/slotted-angular-icon.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport { GLYPH_VIEW_BOX, GLYPHS } from '@slotted/core/glyph';\nimport type { GlyphDrawing, GlyphName } from '@slotted/core/glyph';\n\nlet sequence = 0;\n\n/**\n * Glyph is the library's own artwork, drawn as a real `<svg>`: the Lucide\n * geometry `@slotted/core/glyph` holds, stroked or filled with `currentColor`.\n * It goes inside a `slIcon` box, which owns the size, the colour, the\n * alignment and the name; the glyph owns only the drawing. Every family draws\n * its own icons — a close button's cross, a pager's chevrons — with this\n * element, and never with a pseudo-element or a mask of its own.\n *\n * `solid` draws a status mark the way a tone's badge reads: the glyph's first\n * shape filled, and the symbol inside it cut out of the fill by an SVG\n * `<mask>`, so whatever lies behind shows through the symbol on any ground.\n *\n * The children carry the `svg:` namespace because the template is parsed apart\n * from its host: an unprefixed `<path>` would be created as an HTML element.\n */\n@Component({\n selector: 'svg[slGlyph]',\n standalone: true,\n template: `@if (solid()) {\n <svg:defs>\n <svg:mask\n [attr.id]=\"maskId\"\n maskUnits=\"userSpaceOnUse\"\n x=\"-2\"\n y=\"-2\"\n width=\"28\"\n height=\"28\"\n >\n <svg:rect x=\"-2\" y=\"-2\" width=\"28\" height=\"28\" fill=\"#fff\" />\n <svg:g\n fill=\"none\"\n stroke=\"#000\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [attr.stroke-width]=\"drawing().strokeWidth\"\n >\n @for (d of symbol(); track $index) {\n <svg:path [attr.d]=\"d\" />\n }\n </svg:g>\n </svg:mask>\n </svg:defs>\n }\n <svg:g [attr.transform]=\"transform()\">\n @if (solid()) {\n <svg:path\n [attr.d]=\"drawing().paths[0]\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [attr.stroke-width]=\"drawing().strokeWidth\"\n [attr.mask]=\"'url(#' + maskId + ')'\"\n />\n } @else {\n @for (d of drawing().paths; track $index) {\n <svg:path [attr.d]=\"d\" />\n }\n }\n </svg:g>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'aria-hidden': 'true',\n focusable: 'false',\n 'data-part': 'glyph',\n 'data-part-glyph': '',\n '[attr.data-glyph]': 'name()',\n '[attr.viewBox]': 'viewBox',\n '[attr.data-solid]': \"solid() ? '' : null\",\n '[attr.fill]': \"solid() ? null : stroked() ? 'none' : 'currentColor'\",\n '[attr.stroke]': \"!solid() && stroked() ? 'currentColor' : null\",\n '[attr.stroke-width]': '!solid() && stroked() ? drawing().strokeWidth : null',\n '[attr.stroke-linecap]': \"!solid() && stroked() ? 'round' : null\",\n '[attr.stroke-linejoin]': \"!solid() && stroked() ? 'round' : null\",\n },\n})\nexport class SlGlyph {\n /** One of the library's own icons: its glyph token without `--slotted-icon-`. */\n readonly name = input.required<GlyphName>();\n /**\n * The first shape filled and the symbol cut out of it — a tone's status\n * mark. For glyphs whose first shape encloses the rest (`circle-*`,\n * `triangle-alert`).\n */\n readonly solid = input(false, { transform: booleanAttribute });\n\n protected readonly maskId = `sl-glyph-${String((sequence += 1))}`;\n\n protected readonly viewBox = GLYPH_VIEW_BOX;\n protected readonly drawing = computed<GlyphDrawing>(() => GLYPHS[this.name()]);\n protected readonly symbol = computed(() => this.drawing().paths.slice(1));\n protected readonly stroked = computed(() => this.drawing().paint === 'stroke');\n protected readonly transform = computed(() => {\n const [dx, dy] = this.drawing().offset;\n return dx === 0 && dy === 0 ? null : `translate(${dx} ${dy})`;\n });\n}\n","/**\n * Three steps read the control icon scale, which the theme restates per\n * density. `text` follows the type the icon sits in, because a control-sized\n * glyph inside a display heading is not an icon.\n */\nexport type IconSize = 'text' | 'sm' | 'md' | 'lg';\n\nexport type IconTone =\n 'inherit' | 'default' | 'muted' | 'accent' | 'success' | 'warning' | 'danger' | 'inverse';\n\n/**\n * `inherit` is the absence of a colour rather than a colour of its own, so it\n * removes the attribute and lets the surface decide.\n */\nexport function toneAttribute(tone: IconTone | undefined): string | null {\n return tone === undefined || tone === 'inherit' ? null : tone;\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { toneAttribute } from './icon.types';\nimport type { IconSize, IconTone } from './icon.types';\n\n/**\n * Icon is the box a glyph is drawn in, not the glyph. The library ships no\n * catalogue: the artwork is the consumer's — an `ng-icon`, an inline `svg`,\n * anything that renders one — and this family owns the size it is drawn at,\n * the colour it inherits, where it sits against a line of text, and whether it\n * mirrors where reading runs the other way.\n *\n * The selector is the bare attribute, so the consumer writes the element. It\n * is a component rather than a directive only because a directive carries no\n * `styleUrl`, and that also means it cannot sit on `<ng-icon>` itself: Angular\n * refuses two components on one element, so the box is always written.\n */\n@Component({\n selector: '[slIcon]',\n standalone: true,\n exportAs: 'slIcon',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/icon/icon.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'icon',\n 'data-ui-icon': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'size() ?? null',\n '[attr.data-tone]': 'toneAttribute()',\n '[attr.data-directional]': 'directional() ? \"\" : null',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-hidden]': 'named() ? null : \"true\"',\n },\n})\nexport class SlIcon {\n readonly directional = input(false, { transform: booleanAttribute });\n readonly label = input<string>();\n readonly size = input<IconSize>();\n readonly tone = input<IconTone>();\n\n /**\n * A name the consumer wrote on the element counts as much as the input, and\n * has to be read rather than assumed absent: a host binding that wrote\n * `null` would delete the consumer's own `aria-label` and hide the icon it\n * named, which is a silent defect in the likeliest mistake. `aria-labelledby`\n * is read and never written, so the attribute the consumer put there stays\n * exactly as written.\n */\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n\n protected readonly ariaLabel = computed(() => this.label() ?? this.writtenLabel);\n\n /**\n * The icon is decorative when it has no name and meaningful when it has one,\n * which is why there is no `decorative` input: named and hidden cannot both\n * be true.\n */\n protected readonly named = computed(\n () => this.ariaLabel() !== null || this.writtenLabelledBy !== null,\n );\n\n /**\n * `role=\"img\"` requires a name, so it appears only once there is one, and a\n * role the consumer chose is left alone.\n */\n protected readonly role = computed(() =>\n this.writtenRole === null ? (this.named() ? 'img' : null) : this.writtenRole,\n );\n\n protected readonly toneAttribute = computed(() => toneAttribute(this.tone()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ class SlImageMedia {
|
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlImageMedia, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
80
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlImageMedia, isStandalone: true, selector: "img[slImageMedia]", host: { attributes: { "data-part": "image" }, listeners: { "load": "host.reportLoaded()", "error": "host.reportError()" } }, exportAs: ["slImageMedia"], ngImport: i0 });
|
|
80
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlImageMedia, isStandalone: true, selector: "img[slImageMedia]", host: { attributes: { "data-part": "image", "data-part-image": "" }, listeners: { "load": "host.reportLoaded()", "error": "host.reportError()" } }, exportAs: ["slImageMedia"], ngImport: i0 });
|
|
81
81
|
}
|
|
82
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlImageMedia, decorators: [{
|
|
83
83
|
type: Directive,
|
|
@@ -87,6 +87,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
87
87
|
exportAs: 'slImageMedia',
|
|
88
88
|
host: {
|
|
89
89
|
'data-part': 'image',
|
|
90
|
+
'data-part-image': '',
|
|
90
91
|
'(load)': 'host.reportLoaded()',
|
|
91
92
|
'(error)': 'host.reportError()',
|
|
92
93
|
},
|
|
@@ -271,7 +272,7 @@ class SlImage {
|
|
|
271
272
|
this.statusChange.emit('error');
|
|
272
273
|
}
|
|
273
274
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlImage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
274
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlImage, isStandalone: true, selector: "[slImage]", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, srcset: { classPropertyName: "srcset", publicName: "srcset", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, crossOrigin: { classPropertyName: "crossOrigin", publicName: "crossOrigin", isSignal: true, isRequired: false, transformFunction: null }, referrerPolicy: { classPropertyName: "referrerPolicy", publicName: "referrerPolicy", isSignal: true, isRequired: false, transformFunction: null }, ratio: { classPropertyName: "ratio", publicName: "ratio", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, fit: { classPropertyName: "fit", publicName: "fit", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, placeholderSrc: { classPropertyName: "placeholderSrc", publicName: "placeholderSrc", isSignal: true, isRequired: false, transformFunction: null }, fallbackSrc: { classPropertyName: "fallbackSrc", publicName: "fallbackSrc", isSignal: true, isRequired: false, transformFunction: null }, sources: { classPropertyName: "sources", publicName: "sources", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, decoding: { classPropertyName: "decoding", publicName: "decoding", isSignal: true, isRequired: false, transformFunction: null }, fetchPriority: { classPropertyName: "fetchPriority", publicName: "fetchPriority", isSignal: true, isRequired: false, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "priority", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { statusChange: "statusChange" }, host: { attributes: { "data-ui": "image", "data-part": "root" }, properties: { "attr.data-layout": "resolvedLayout()", "attr.data-fit": "resolvedFit()", "attr.data-position": "positionAttribute()", "attr.data-radius": "resolvedRadius()", "attr.data-placeholder": "resolvedPlaceholder()", "attr.data-status": "resolvedStatus()", "attr.data-bordered": "resolvedBordered() ? '' : null", "style.--slotted-image-position": "positionToken()" } }, providers: [
|
|
275
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlImage, isStandalone: true, selector: "[slImage]", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, srcset: { classPropertyName: "srcset", publicName: "srcset", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, crossOrigin: { classPropertyName: "crossOrigin", publicName: "crossOrigin", isSignal: true, isRequired: false, transformFunction: null }, referrerPolicy: { classPropertyName: "referrerPolicy", publicName: "referrerPolicy", isSignal: true, isRequired: false, transformFunction: null }, ratio: { classPropertyName: "ratio", publicName: "ratio", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, fit: { classPropertyName: "fit", publicName: "fit", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, placeholderSrc: { classPropertyName: "placeholderSrc", publicName: "placeholderSrc", isSignal: true, isRequired: false, transformFunction: null }, fallbackSrc: { classPropertyName: "fallbackSrc", publicName: "fallbackSrc", isSignal: true, isRequired: false, transformFunction: null }, sources: { classPropertyName: "sources", publicName: "sources", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, decoding: { classPropertyName: "decoding", publicName: "decoding", isSignal: true, isRequired: false, transformFunction: null }, fetchPriority: { classPropertyName: "fetchPriority", publicName: "fetchPriority", isSignal: true, isRequired: false, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "priority", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { statusChange: "statusChange" }, host: { attributes: { "data-ui": "image", "data-ui-image": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-layout": "resolvedLayout()", "attr.data-fit": "resolvedFit()", "attr.data-position": "positionAttribute()", "attr.data-radius": "resolvedRadius()", "attr.data-placeholder": "resolvedPlaceholder()", "attr.data-status": "resolvedStatus()", "attr.data-bordered": "resolvedBordered() ? '' : null", "style.--slotted-image-position": "positionToken()" } }, providers: [
|
|
275
276
|
/* The component is its own media host, and a decorator is evaluated before
|
|
276
277
|
the class it decorates exists. */
|
|
277
278
|
{ provide: IMAGE_MEDIA_HOST, useExisting: forwardRef(() => SlImage) },
|
|
@@ -285,7 +286,7 @@ class SlImage {
|
|
|
285
286
|
<ng-template #layers>
|
|
286
287
|
@if (projected() === undefined && src() !== undefined) {
|
|
287
288
|
@if (sources().length > 0) {
|
|
288
|
-
<picture data-part="picture">
|
|
289
|
+
<picture data-part="picture" data-part-picture="">
|
|
289
290
|
@for (source of sources(); track $index) {
|
|
290
291
|
<source
|
|
291
292
|
[attr.srcset]="source.srcSet"
|
|
@@ -301,12 +302,12 @@ class SlImage {
|
|
|
301
302
|
}
|
|
302
303
|
}
|
|
303
304
|
<ng-content select="img[slImageMedia]"></ng-content
|
|
304
|
-
><span data-part="placeholder" aria-hidden="true">
|
|
305
|
+
><span data-part="placeholder" data-part-placeholder="" aria-hidden="true">
|
|
305
306
|
@if (resolvedPlaceholder() === 'blur' && placeholderSrc(); as preview) {
|
|
306
307
|
<img alt="" [src]="preview" />
|
|
307
308
|
}
|
|
308
309
|
<ng-content select="[slImagePlaceholder]"></ng-content></span
|
|
309
|
-
><span data-part="fallback"
|
|
310
|
+
><span data-part="fallback" data-part-fallback=""
|
|
310
311
|
><ng-content select="[slImageFallback]"
|
|
311
312
|
><span slIcon><svg slGlyph name="image-off"></svg></span></ng-content
|
|
312
313
|
></span>
|
|
@@ -326,7 +327,7 @@ class SlImage {
|
|
|
326
327
|
[attr.crossorigin]="crossOrigin() ?? null"
|
|
327
328
|
[attr.referrerpolicy]="referrerPolicy() ?? null"
|
|
328
329
|
/>
|
|
329
|
-
</ng-template>`, isInline: true, styles: ["@layer slotted.components{[data-ui
|
|
330
|
+
</ng-template>`, isInline: true, styles: ["@layer slotted.components{[data-ui-image][data-part-root]{--_fit: cover;--_position: var(--slotted-image-position, center);--_radius: var(--slotted-image-radius, var(--slotted-radius-none, 0px));--_edge: transparent;--_edge-width: var(--slotted-image-border-width, var(--slotted-border-width-thin, 1px));--_ground: var(--slotted-image-placeholder-background, var(--slotted-surface-sunken));--_ground-edge: inset 0 0 0 var(--_edge-width) var(--slotted-border-subtle, ButtonBorder);background-color:var(--slotted-image-background, transparent);border-radius:var(--_radius);box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:1fr;inline-size:fit-content;isolation:isolate;max-inline-size:100%;min-inline-size:0;overflow:clip;position:relative;appearance:none;border:0;padding:0;text-decoration:none}[data-ui-image][data-part-root]>*{grid-area:1 / 1;min-inline-size:0}[data-ui-image][data-part-root][data-layout=fill]{block-size:100%;inline-size:100%}[data-ui-image][data-part-root][data-layout=framed]{inline-size:100%}[data-ui-image][data-part-root][data-fit=contain]{--_fit: contain}[data-ui-image][data-part-root][data-fit=fill]{--_fit: fill}[data-ui-image][data-part-root][data-fit=none]{--_fit: none}[data-ui-image][data-part-root][data-fit=scale-down]{--_fit: scale-down}[data-ui-image][data-part-root][data-position=top]{--_position: top}[data-ui-image][data-part-root][data-position=bottom]{--_position: bottom}[data-ui-image][data-part-root][data-position=start]{--_position: left}[data-ui-image][data-part-root][data-position=end]{--_position: right}[data-ui-image][data-part-root][data-position=start]:dir(rtl){--_position: right}[data-ui-image][data-part-root][data-position=end]:dir(rtl){--_position: left}[data-ui-image][data-part-root][data-radius=sm]{--_radius: var(--slotted-image-radius, var(--slotted-radius-sm, 4px))}[data-ui-image][data-part-root][data-radius=md]{--_radius: var(--slotted-image-radius, var(--slotted-radius-md, 6px))}[data-ui-image][data-part-root][data-radius=lg]{--_radius: var(--slotted-image-radius, var(--slotted-radius-lg, 8px))}[data-ui-image][data-part-root][data-bordered]{--_edge: var(--slotted-border-subtle, ButtonBorder)}[data-ui-image][data-part-root]:after{border-radius:inherit;box-shadow:inset 0 0 0 var(--_edge-width) var(--_edge);content:\"\";grid-area:1 / 1;pointer-events:none}[data-ui-image] [data-part-picture]{display:contents}[data-ui-image][data-part-root] [data-part-image]{block-size:auto;display:block;grid-area:1 / 1;max-inline-size:100%;min-inline-size:0;object-fit:var(--_fit);object-position:var(--_position);opacity:0;transition:opacity var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-image][data-part-root][data-layout=fill] [data-part-image],[data-ui-image][data-part-root][data-layout=framed] [data-part-image]{block-size:100%;inline-size:100%}[data-ui-image][data-part-root][data-status=loaded] [data-part-image]{opacity:1}[data-ui-image][data-part-root][data-status=error] [data-part-image]{block-size:0;inline-size:0;min-block-size:0}[data-ui-image][data-part-root] [data-part-placeholder]{background-color:var(--_ground);block-size:100%;box-shadow:var(--_ground-edge);overflow:clip;display:grid;grid-area:1 / 1;inline-size:100%;min-inline-size:0;pointer-events:none;transition:opacity var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-image][data-part-root][data-placeholder=none] [data-part-placeholder]{background-color:transparent;box-shadow:none}[data-ui-image][data-part-root][data-placeholder=blur] [data-part-placeholder]>img{block-size:100%;display:block;filter:blur(var(--slotted-image-placeholder-blur, 1.25rem));inline-size:100%;object-fit:var(--_fit);object-position:var(--_position);transform:scale(1.08)}[data-ui-image][data-part-root][data-status=loaded] [data-part-placeholder]{opacity:0}[data-ui-image][data-part-root][data-status=error] [data-part-placeholder]{visibility:hidden}[data-ui-image][data-part-root] [data-part-fallback]{--slotted-icon-size: var(--slotted-image-glyph-size, var(--slotted-space-9, 2rem));display:none}[data-ui-image][data-part-root][data-status=error] [data-part-fallback]{background-color:var(--_ground);block-size:100%;box-shadow:var(--_ground-edge);color:var(--slotted-text-muted, GrayText);display:grid;grid-area:1 / 1;inline-size:100%;min-block-size:var(--slotted-image-fallback-min-size, var(--slotted-space-12, 4rem));min-inline-size:var(--slotted-image-fallback-min-size, var(--slotted-space-12, 4rem));place-items:center}[data-ui-image][data-part-root]:any-link,button[data-ui-image][data-part-root],[data-ui-image][data-part-root][tabindex]{cursor:pointer}[data-ui-image][data-part-root]:any-link:not([data-disabled]):hover,button[data-ui-image][data-part-root]:not(:disabled):hover,[data-ui-image][data-part-root][tabindex]:not([data-disabled]):hover{--_edge: var(--slotted-border-strong, CanvasText);--_edge-width: var(--slotted-border-width-thick, 2px)}[data-ui-image][data-part-root]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlAspectRatio, selector: "[slAspectRatio]", inputs: ["ratio"], exportAs: ["slAspectRatio"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "directive", type: SlImageMedia, selector: "img[slImageMedia]", exportAs: ["slImageMedia"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
330
331
|
}
|
|
331
332
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlImage, decorators: [{
|
|
332
333
|
type: Component,
|
|
@@ -344,7 +345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
344
345
|
<ng-template #layers>
|
|
345
346
|
@if (projected() === undefined && src() !== undefined) {
|
|
346
347
|
@if (sources().length > 0) {
|
|
347
|
-
<picture data-part="picture">
|
|
348
|
+
<picture data-part="picture" data-part-picture="">
|
|
348
349
|
@for (source of sources(); track $index) {
|
|
349
350
|
<source
|
|
350
351
|
[attr.srcset]="source.srcSet"
|
|
@@ -360,12 +361,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
360
361
|
}
|
|
361
362
|
}
|
|
362
363
|
<ng-content select="img[slImageMedia]"></ng-content
|
|
363
|
-
><span data-part="placeholder" aria-hidden="true">
|
|
364
|
+
><span data-part="placeholder" data-part-placeholder="" aria-hidden="true">
|
|
364
365
|
@if (resolvedPlaceholder() === 'blur' && placeholderSrc(); as preview) {
|
|
365
366
|
<img alt="" [src]="preview" />
|
|
366
367
|
}
|
|
367
368
|
<ng-content select="[slImagePlaceholder]"></ng-content></span
|
|
368
|
-
><span data-part="fallback"
|
|
369
|
+
><span data-part="fallback" data-part-fallback=""
|
|
369
370
|
><ng-content select="[slImageFallback]"
|
|
370
371
|
><span slIcon><svg slGlyph name="image-off"></svg></span></ng-content
|
|
371
372
|
></span>
|
|
@@ -387,7 +388,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
387
388
|
/>
|
|
388
389
|
</ng-template>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
389
390
|
'data-ui': 'image',
|
|
391
|
+
'data-ui-image': '',
|
|
390
392
|
'data-part': 'root',
|
|
393
|
+
'data-part-root': '',
|
|
391
394
|
'[attr.data-layout]': 'resolvedLayout()',
|
|
392
395
|
'[attr.data-fit]': 'resolvedFit()',
|
|
393
396
|
'[attr.data-position]': 'positionAttribute()',
|
|
@@ -396,7 +399,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
396
399
|
'[attr.data-status]': 'resolvedStatus()',
|
|
397
400
|
'[attr.data-bordered]': "resolvedBordered() ? '' : null",
|
|
398
401
|
'[style.--slotted-image-position]': 'positionToken()',
|
|
399
|
-
}, styles: ["@layer slotted.components{[data-ui
|
|
402
|
+
}, styles: ["@layer slotted.components{[data-ui-image][data-part-root]{--_fit: cover;--_position: var(--slotted-image-position, center);--_radius: var(--slotted-image-radius, var(--slotted-radius-none, 0px));--_edge: transparent;--_edge-width: var(--slotted-image-border-width, var(--slotted-border-width-thin, 1px));--_ground: var(--slotted-image-placeholder-background, var(--slotted-surface-sunken));--_ground-edge: inset 0 0 0 var(--_edge-width) var(--slotted-border-subtle, ButtonBorder);background-color:var(--slotted-image-background, transparent);border-radius:var(--_radius);box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:1fr;inline-size:fit-content;isolation:isolate;max-inline-size:100%;min-inline-size:0;overflow:clip;position:relative;appearance:none;border:0;padding:0;text-decoration:none}[data-ui-image][data-part-root]>*{grid-area:1 / 1;min-inline-size:0}[data-ui-image][data-part-root][data-layout=fill]{block-size:100%;inline-size:100%}[data-ui-image][data-part-root][data-layout=framed]{inline-size:100%}[data-ui-image][data-part-root][data-fit=contain]{--_fit: contain}[data-ui-image][data-part-root][data-fit=fill]{--_fit: fill}[data-ui-image][data-part-root][data-fit=none]{--_fit: none}[data-ui-image][data-part-root][data-fit=scale-down]{--_fit: scale-down}[data-ui-image][data-part-root][data-position=top]{--_position: top}[data-ui-image][data-part-root][data-position=bottom]{--_position: bottom}[data-ui-image][data-part-root][data-position=start]{--_position: left}[data-ui-image][data-part-root][data-position=end]{--_position: right}[data-ui-image][data-part-root][data-position=start]:dir(rtl){--_position: right}[data-ui-image][data-part-root][data-position=end]:dir(rtl){--_position: left}[data-ui-image][data-part-root][data-radius=sm]{--_radius: var(--slotted-image-radius, var(--slotted-radius-sm, 4px))}[data-ui-image][data-part-root][data-radius=md]{--_radius: var(--slotted-image-radius, var(--slotted-radius-md, 6px))}[data-ui-image][data-part-root][data-radius=lg]{--_radius: var(--slotted-image-radius, var(--slotted-radius-lg, 8px))}[data-ui-image][data-part-root][data-bordered]{--_edge: var(--slotted-border-subtle, ButtonBorder)}[data-ui-image][data-part-root]:after{border-radius:inherit;box-shadow:inset 0 0 0 var(--_edge-width) var(--_edge);content:\"\";grid-area:1 / 1;pointer-events:none}[data-ui-image] [data-part-picture]{display:contents}[data-ui-image][data-part-root] [data-part-image]{block-size:auto;display:block;grid-area:1 / 1;max-inline-size:100%;min-inline-size:0;object-fit:var(--_fit);object-position:var(--_position);opacity:0;transition:opacity var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-image][data-part-root][data-layout=fill] [data-part-image],[data-ui-image][data-part-root][data-layout=framed] [data-part-image]{block-size:100%;inline-size:100%}[data-ui-image][data-part-root][data-status=loaded] [data-part-image]{opacity:1}[data-ui-image][data-part-root][data-status=error] [data-part-image]{block-size:0;inline-size:0;min-block-size:0}[data-ui-image][data-part-root] [data-part-placeholder]{background-color:var(--_ground);block-size:100%;box-shadow:var(--_ground-edge);overflow:clip;display:grid;grid-area:1 / 1;inline-size:100%;min-inline-size:0;pointer-events:none;transition:opacity var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-image][data-part-root][data-placeholder=none] [data-part-placeholder]{background-color:transparent;box-shadow:none}[data-ui-image][data-part-root][data-placeholder=blur] [data-part-placeholder]>img{block-size:100%;display:block;filter:blur(var(--slotted-image-placeholder-blur, 1.25rem));inline-size:100%;object-fit:var(--_fit);object-position:var(--_position);transform:scale(1.08)}[data-ui-image][data-part-root][data-status=loaded] [data-part-placeholder]{opacity:0}[data-ui-image][data-part-root][data-status=error] [data-part-placeholder]{visibility:hidden}[data-ui-image][data-part-root] [data-part-fallback]{--slotted-icon-size: var(--slotted-image-glyph-size, var(--slotted-space-9, 2rem));display:none}[data-ui-image][data-part-root][data-status=error] [data-part-fallback]{background-color:var(--_ground);block-size:100%;box-shadow:var(--_ground-edge);color:var(--slotted-text-muted, GrayText);display:grid;grid-area:1 / 1;inline-size:100%;min-block-size:var(--slotted-image-fallback-min-size, var(--slotted-space-12, 4rem));min-inline-size:var(--slotted-image-fallback-min-size, var(--slotted-space-12, 4rem));place-items:center}[data-ui-image][data-part-root]:any-link,button[data-ui-image][data-part-root],[data-ui-image][data-part-root][tabindex]{cursor:pointer}[data-ui-image][data-part-root]:any-link:not([data-disabled]):hover,button[data-ui-image][data-part-root]:not(:disabled):hover,[data-ui-image][data-part-root][tabindex]:not([data-disabled]):hover{--_edge: var(--slotted-border-strong, CanvasText);--_edge-width: var(--slotted-border-width-thick, 2px)}[data-ui-image][data-part-root]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}}\n"] }]
|
|
400
403
|
}], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], srcset: [{ type: i0.Input, args: [{ isSignal: true, alias: "srcset", required: false }] }], sizes: [{ type: i0.Input, args: [{ isSignal: true, alias: "sizes", required: false }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], crossOrigin: [{ type: i0.Input, args: [{ isSignal: true, alias: "crossOrigin", required: false }] }], referrerPolicy: [{ type: i0.Input, args: [{ isSignal: true, alias: "referrerPolicy", required: false }] }], ratio: [{ type: i0.Input, args: [{ isSignal: true, alias: "ratio", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], fit: [{ type: i0.Input, args: [{ isSignal: true, alias: "fit", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], placeholderSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholderSrc", required: false }] }], fallbackSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "fallbackSrc", required: false }] }], sources: [{ type: i0.Input, args: [{ isSignal: true, alias: "sources", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], decoding: [{ type: i0.Input, args: [{ isSignal: true, alias: "decoding", required: false }] }], fetchPriority: [{ type: i0.Input, args: [{ isSignal: true, alias: "fetchPriority", required: false }] }], priority: [{ type: i0.Input, args: [{ isSignal: true, alias: "priority", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusChange: [{ type: i0.Output, args: ["statusChange"] }], projected: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlImageMedia), { isSignal: true }] }] } });
|
|
401
404
|
|
|
402
405
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-image.mjs","sources":["../../image/src/image-defaults.ts","../../image/src/image-media-host.ts","../../image/src/image-media.ts","../../image/src/image.ts","../../image/src/image-slots.ts","../../image/src/slotted-angular-image.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * How wide and how tall the box is. `intrinsic` is the picture's own size,\n * shrunk to fit; `fill` is the parent's in both axes; `framed` is the\n * column's width and the frame's height, and it is what a decided `ratio`\n * implies.\n */\nexport type ImageLayout = 'intrinsic' | 'fill' | 'framed';\n\n/** The five values `object-fit` has. `cover` crops; `contain` letterboxes. */\nexport type ImageFit = 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';\n\n/**\n * The focal point a crop keeps. `start` and `end` are the family's own —\n * `object-position` has no logical keywords — and mirror under `dir=\"rtl\"`.\n * Any other value (`30% 20%`, a CMS focal point) is written on the instance.\n */\nexport type ImagePosition = 'center' | 'top' | 'bottom' | 'start' | 'end';\n\n/** What the DOM says the focal point is: one of the names, or `custom`. */\nexport type ImagePositionAttribute = ImagePosition | 'custom';\n\nexport type ImageRadius = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * What stands under the picture while it is on its way. `surface` is the\n * sunken ground; `blur` is `placeholderSrc` scaled and blurred where the\n * picture will be; `none` paints nothing.\n */\nexport type ImagePlaceholder = 'none' | 'surface' | 'blur';\n\n/** Where the picture is. Four values, because a boolean cannot say why there is none. */\nexport type ImageStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\nexport type ImageLoading = 'lazy' | 'eager';\nexport type ImageDecoding = 'async' | 'sync' | 'auto';\n\n/** One `<source>` of a `<picture>`: art direction by media, or a format by type. */\nexport interface ImageSource {\n media?: string | undefined;\n sizes?: string | undefined;\n srcSet: string;\n type?: string | undefined;\n}\n\n/** What an application sets once for every image under it. */\nexport interface ImageDefaults {\n bordered: boolean;\n decoding: ImageDecoding;\n fit: ImageFit;\n layout: ImageLayout;\n loading: ImageLoading;\n placeholder: ImagePlaceholder;\n position: ImagePosition | (string & {});\n radius: ImageRadius;\n}\n\nconst FALLBACK: ImageDefaults = {\n bordered: false,\n decoding: 'async',\n fit: 'cover',\n layout: 'intrinsic',\n loading: 'lazy',\n placeholder: 'surface',\n position: 'center',\n radius: 'none',\n};\n\nexport const IMAGE_DEFAULTS = new InjectionToken<ImageDefaults>('slotted image defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its pictures are cut, cornered, edged and\n * held before they arrive, rather than repeating the same inputs on every\n * thumbnail in every grid. An image that states any of them itself still\n * wins: an explicit input is never overridden by the token.\n */\nexport function provideImageDefaults(defaults: Partial<ImageDefaults>) {\n return {\n provide: IMAGE_DEFAULTS,\n useFactory: (): ImageDefaults => ({\n bordered: defaults.bordered ?? FALLBACK.bordered,\n decoding: defaults.decoding ?? FALLBACK.decoding,\n fit: defaults.fit ?? FALLBACK.fit,\n layout: defaults.layout ?? FALLBACK.layout,\n loading: defaults.loading ?? FALLBACK.loading,\n placeholder: defaults.placeholder ?? FALLBACK.placeholder,\n position: defaults.position ?? FALLBACK.position,\n radius: defaults.radius ?? FALLBACK.radius,\n }),\n };\n}\n\n/** What an image renders as here, before it states anything of its own. */\nexport function injectImageDefaults(): ImageDefaults {\n return inject(IMAGE_DEFAULTS);\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * What the picture tells the image it sits in.\n *\n * It is a token rather than the component's own class so that one directive\n * can serve both pictures the family knows about: the `<img>` the image\n * renders for its own `src`, and the `<img>` the consumer projects — which is\n * the one that carries `ngSrc`, and therefore the one `NgOptimizedImage` can\n * reach. A directive that injected the component directly would put a cycle\n * between the two files, and the component imports the directive for its own\n * template.\n */\nexport interface ImageMediaHost {\n /** The picture arrived, or was already there. */\n reportLoaded(): void;\n /** The picture failed. The host decides whether a second URL is tried. */\n reportError(): void;\n}\n\nexport const IMAGE_MEDIA_HOST = new InjectionToken<ImageMediaHost>('slotted image media host');\n","import { afterNextRender, Directive, ElementRef, inject } from '@angular/core';\n\nimport { IMAGE_MEDIA_HOST } from './image-media-host';\n\n/**\n * The picture inside an image.\n *\n * It is written on an `<img>` the consumer owns, which is what lets\n * `NgOptimizedImage` do its work: `ngSrc`, the priority hint, the generated\n * `srcset` and the size warnings all belong to a real `<img>` in the\n * consumer's template, and none of them survive being handed a `src` string\n * through an input. React has no equivalent, and its `renderImage` is the\n * other half of the same idea.\n *\n * A projected picture keeps every attribute the consumer wrote — `alt`,\n * `loading`, `width`, `height` — and the family writes only its part name.\n */\n@Directive({\n selector: 'img[slImageMedia]',\n standalone: true,\n exportAs: 'slImageMedia',\n host: {\n 'data-part': 'image',\n '(load)': 'host.reportLoaded()',\n '(error)': 'host.reportError()',\n },\n})\nexport class SlImageMedia {\n protected readonly host = inject(IMAGE_MEDIA_HOST);\n\n private readonly element = inject<ElementRef<HTMLImageElement>>(ElementRef).nativeElement;\n\n constructor() {\n /**\n * A picture already in the browser cache finishes decoding before the\n * listener is attached, so the element is asked whether it is already\n * complete rather than waited on for an event that has been and gone.\n * Without it an image shows its ground over a picture that is already\n * there.\n */\n afterNextRender(() => {\n if (this.element.complete && this.element.naturalWidth > 0) {\n this.host.reportLoaded();\n }\n });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n forwardRef,\n input,\n linkedSignal,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlAspectRatio } from '@slotted/angular/aspect-ratio';\nimport type { AspectRatioValue } from '@slotted/angular/aspect-ratio';\n\nimport {\n injectImageDefaults,\n type ImageDecoding,\n type ImageFit,\n type ImageLayout,\n type ImageLoading,\n type ImagePlaceholder,\n type ImagePosition,\n type ImagePositionAttribute,\n type ImageRadius,\n type ImageSource,\n type ImageStatus,\n} from './image-defaults';\nimport { IMAGE_MEDIA_HOST } from './image-media-host';\nimport { SlImageMedia } from './image-media';\n\nexport type {\n ImageDecoding,\n ImageDefaults,\n ImageFit,\n ImageLayout,\n ImageLoading,\n ImagePlaceholder,\n ImagePosition,\n ImagePositionAttribute,\n ImageRadius,\n ImageSource,\n ImageStatus,\n} from './image-defaults';\n\nconst POSITIONS = new Set(['center', 'top', 'bottom', 'start', 'end']);\n\n/** Which of the two URLs the element is showing, and what it said about it. */\ninterface Derived {\n attempt: 'primary' | 'fallback';\n status: ImageStatus;\n}\n\n/**\n * A picture, and what stands in for it before it arrives and after it fails.\n * The `<img>` is the platform's and keeps every attribute the platform gives\n * it; the family adds the two layers under it, a fit, a focal point, a\n * corner and an edge, and composes the frame from `slAspectRatio` when a\n * ratio was decided.\n *\n * The component is written on the element the page chose — a `div`, a\n * `figure`, an `a` that opens a page, a `button` that opens a dialog. The\n * picture is either the `<img>` the component renders for its `src`, or the\n * `<img slImageMedia>` the consumer projects, which is the one `ngSrc` and\n * `NgOptimizedImage` belong on.\n *\n * `status` is an input with an output beside it rather than a `model()`. A\n * `model()` promises a two-way binding for a value the browser owns: the\n * component would write over whatever the consumer passed the first time a\n * picture loaded. Here the consumer's value simply wins, and the output\n * reports the derivation — a load event is a fact rather than a request, so\n * there is nothing to cancel and no reason from the closed vocabulary fits.\n * `fallbackSrc` is tried before `error` is reported, on the component's own\n * `<img>`; a projected picture is the consumer's to retry.\n */\n@Component({\n selector: '[slImage]',\n standalone: true,\n exportAs: 'slImage',\n imports: [NgTemplateOutlet, SlAspectRatio, SlGlyph, SlIcon, SlImageMedia],\n providers: [\n /* The component is its own media host, and a decorator is evaluated before\n the class it decorates exists. */\n { provide: IMAGE_MEDIA_HOST, useExisting: forwardRef(() => SlImage) },\n ],\n template: `@if (ratio(); as decided) {\n <div slAspectRatio [ratio]=\"decided\">\n <ng-container *ngTemplateOutlet=\"layers\"></ng-container>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"layers\"></ng-container>\n }\n <ng-template #layers>\n @if (projected() === undefined && src() !== undefined) {\n @if (sources().length > 0) {\n <picture data-part=\"picture\">\n @for (source of sources(); track $index) {\n <source\n [attr.srcset]=\"source.srcSet\"\n [attr.media]=\"source.media ?? null\"\n [attr.sizes]=\"source.sizes ?? null\"\n [attr.type]=\"source.type ?? null\"\n />\n }\n <ng-container *ngTemplateOutlet=\"own\"></ng-container>\n </picture>\n } @else {\n <ng-container *ngTemplateOutlet=\"own\"></ng-container>\n }\n }\n <ng-content select=\"img[slImageMedia]\"></ng-content\n ><span data-part=\"placeholder\" aria-hidden=\"true\">\n @if (resolvedPlaceholder() === 'blur' && placeholderSrc(); as preview) {\n <img alt=\"\" [src]=\"preview\" />\n }\n <ng-content select=\"[slImagePlaceholder]\"></ng-content></span\n ><span data-part=\"fallback\"\n ><ng-content select=\"[slImageFallback]\"\n ><span slIcon><svg slGlyph name=\"image-off\"></svg></span></ng-content\n ></span>\n </ng-template>\n <ng-template #own>\n <img\n slImageMedia\n [src]=\"shownSrc()\"\n [attr.srcset]=\"srcset() ?? null\"\n [attr.sizes]=\"sizes() ?? null\"\n [attr.alt]=\"alt() ?? ''\"\n [attr.width]=\"width() ?? null\"\n [attr.height]=\"height() ?? null\"\n [attr.loading]=\"resolvedLoading()\"\n [attr.decoding]=\"resolvedDecoding()\"\n [attr.fetchpriority]=\"resolvedFetchPriority()\"\n [attr.crossorigin]=\"crossOrigin() ?? null\"\n [attr.referrerpolicy]=\"referrerPolicy() ?? null\"\n />\n </ng-template>`,\n styleUrl: '../../../styles/src/image/image.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'image',\n 'data-part': 'root',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-fit]': 'resolvedFit()',\n '[attr.data-position]': 'positionAttribute()',\n '[attr.data-radius]': 'resolvedRadius()',\n '[attr.data-placeholder]': 'resolvedPlaceholder()',\n '[attr.data-status]': 'resolvedStatus()',\n '[attr.data-bordered]': \"resolvedBordered() ? '' : null\",\n '[style.--slotted-image-position]': 'positionToken()',\n },\n})\nexport class SlImage {\n /** The picture. Absent, the component renders no `<img>` of its own and is idle. */\n readonly src = input<string | undefined>(undefined);\n /** The candidates for the component's own `<img>`, as the platform's `srcset`. */\n readonly srcset = input<string | undefined>(undefined);\n /** The platform's `sizes`, beside `srcset`. */\n readonly sizes = input<string | undefined>(undefined);\n /**\n * What the picture shows, or `\"\"` for a picture that is decoration beside\n * its own text. Written on the component's own `<img>`; a projected\n * picture carries its own.\n */\n readonly alt = input<string | undefined>(undefined);\n /** The intrinsic width, which with `height` reserves the ratio before the picture loads. */\n readonly width = input<number | string | undefined>(undefined);\n readonly height = input<number | string | undefined>(undefined);\n readonly crossOrigin = input<'anonymous' | 'use-credentials' | undefined>(undefined);\n readonly referrerPolicy = input<string | undefined>(undefined);\n /**\n * The proportion the box holds before the picture arrives. Renders an\n * `slAspectRatio` inside the host and lays the picture out `framed`.\n */\n readonly ratio = input<AspectRatioValue | undefined>(undefined);\n /** Defaults to the provider, then to `intrinsic`; a `ratio` implies `framed` unless one is stated. */\n readonly layout = input<ImageLayout | undefined>(undefined);\n /** Defaults to the provider, then to `cover`. */\n readonly fit = input<ImageFit | undefined>(undefined);\n /**\n * A focal point: one of the five names, or any `object-position` value,\n * written on the instance. Defaults to the provider, then to `center`.\n */\n readonly position = input<ImagePosition | (string & {}) | undefined>(undefined);\n /** Defaults to the provider, then to `none`. */\n readonly radius = input<ImageRadius | undefined>(undefined);\n /** A subtle inset edge, for a photograph of a white wall on a white page. */\n readonly bordered = input<boolean | undefined, unknown>(undefined, {\n transform: (value: unknown) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Defaults to the provider, then to `surface`. */\n readonly placeholder = input<ImagePlaceholder | undefined>(undefined);\n /** The small picture `placeholder=\"blur\"` scales and blurs. A data URI, usually. */\n readonly placeholderSrc = input<string | undefined>(undefined);\n /**\n * A second URL to try when `src` fails. The status stays `loading` while\n * it is tried, and `error` is reached only if it fails too.\n */\n readonly fallbackSrc = input<string | undefined>(undefined);\n /** The `<source>`s of a `<picture>`, in order. The `<img>` is written last. */\n readonly sources = input<readonly ImageSource[]>([]);\n /** The platform's `loading`. Defaults to the provider, then to `lazy`; `priority` makes it `eager`. */\n readonly loading = input<ImageLoading | undefined>(undefined);\n /** The platform's `decoding`. Defaults to the provider, then to `async`. */\n readonly decoding = input<ImageDecoding | undefined>(undefined);\n /** The platform's `fetchpriority`. `priority` writes `high` unless one is stated. */\n readonly fetchPriority = input<'high' | 'low' | 'auto' | undefined>(undefined);\n /**\n * The picture the page is waiting for: `loading=\"eager\"` and\n * `fetchpriority=\"high\"`, unless either is stated.\n */\n readonly priority = input(false, { transform: booleanAttribute });\n /**\n * Where the picture is. Supplied, it wins over what the component derives\n * from the element — for a server that already knows, or a loader the\n * family cannot see.\n */\n readonly status = input<ImageStatus | undefined>(undefined);\n\n /** Reports the derived status. Never emits for a status passed in. */\n readonly statusChange = output<ImageStatus>();\n\n private readonly defaults = injectImageDefaults();\n\n protected readonly projected = contentChild(SlImageMedia);\n\n protected readonly resolvedLayout = computed<ImageLayout>(\n () => this.layout() ?? (this.ratio() === undefined ? this.defaults.layout : 'framed'),\n );\n protected readonly resolvedFit = computed(() => this.fit() ?? this.defaults.fit);\n protected readonly resolvedRadius = computed(() => this.radius() ?? this.defaults.radius);\n protected readonly resolvedBordered = computed(() => this.bordered() ?? this.defaults.bordered);\n protected readonly resolvedPlaceholder = computed(\n () => this.placeholder() ?? this.defaults.placeholder,\n );\n protected readonly resolvedLoading = computed(\n () => this.loading() ?? (this.priority() ? 'eager' : this.defaults.loading),\n );\n protected readonly resolvedDecoding = computed(() => this.decoding() ?? this.defaults.decoding);\n protected readonly resolvedFetchPriority = computed(\n () => this.fetchPriority() ?? (this.priority() ? 'high' : null),\n );\n\n private readonly resolvedPosition = computed(() => this.position() ?? this.defaults.position);\n protected readonly positionAttribute = computed<ImagePositionAttribute>(() =>\n POSITIONS.has(this.resolvedPosition())\n ? (this.resolvedPosition() as ImagePositionAttribute)\n : 'custom',\n );\n protected readonly positionToken = computed(() =>\n this.positionAttribute() === 'custom' ? this.resolvedPosition() : null,\n );\n\n /**\n * The derivation, and the picture it belongs to. A new request makes the\n * previous answer describe nothing, so the status starts again from what\n * the inputs alone can say — which is also what a server render and the\n * hydration after it both compute, so nothing flashes between them.\n */\n private readonly derived = linkedSignal<string, Derived>({\n source: () => `${this.src() ?? ''}|${this.projected() === undefined ? '' : 'projected'}`,\n computation: (request) => ({\n attempt: 'primary',\n status: request === '|' ? 'idle' : 'loading',\n }),\n });\n\n protected readonly resolvedStatus = computed(() => this.status() ?? this.derived().status);\n\n /** The URL the component's own `<img>` is showing: `src`, or `fallbackSrc` after `src` failed. */\n protected readonly shownSrc = computed(() =>\n this.derived().attempt === 'fallback' ? (this.fallbackSrc() ?? this.src()) : this.src(),\n );\n\n /** Called by the picture, whichever of the two elements it turned out to be. */\n reportLoaded() {\n if (this.derived().status === 'loaded') return;\n this.derived.set({ attempt: this.derived().attempt, status: 'loaded' });\n this.statusChange.emit('loaded');\n }\n\n /**\n * The first failure is answered with the second URL when there is one, and\n * the status stays `loading` while it is tried; `error` is what is left\n * when nothing could be shown. Only the component's own `<img>` can be\n * re-pointed: a projected picture belongs to the consumer.\n */\n reportError() {\n const { attempt } = this.derived();\n if (\n attempt === 'primary' &&\n this.fallbackSrc() !== undefined &&\n this.projected() === undefined\n ) {\n this.derived.set({ attempt: 'fallback', status: 'loading' });\n return;\n }\n this.derived.set({ attempt, status: 'error' });\n this.statusChange.emit('error');\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Content over the placeholder's ground while the picture is on its way — a\n * skeleton, a blurhash canvas. A marker rather than a bare `<ng-content>`,\n * so the slot can be selected by name and nothing else falls into it.\n */\n@Directive({\n selector: '[slImagePlaceholder]',\n standalone: true,\n exportAs: 'slImagePlaceholder',\n})\nexport class SlImagePlaceholder {}\n\n/**\n * Content of the fallback, in place of the glyph, once the picture has\n * failed: a message, a retry, a logotype. The glyph is the slot's default\n * content, so projecting anything here replaces it.\n */\n@Directive({\n selector: '[slImageFallback]',\n standalone: true,\n exportAs: 'slImageFallback',\n})\nexport class SlImageFallback {}\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-image.mjs","sources":["../../image/src/image-defaults.ts","../../image/src/image-media-host.ts","../../image/src/image-media.ts","../../image/src/image.ts","../../image/src/image-slots.ts","../../image/src/slotted-angular-image.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * How wide and how tall the box is. `intrinsic` is the picture's own size,\n * shrunk to fit; `fill` is the parent's in both axes; `framed` is the\n * column's width and the frame's height, and it is what a decided `ratio`\n * implies.\n */\nexport type ImageLayout = 'intrinsic' | 'fill' | 'framed';\n\n/** The five values `object-fit` has. `cover` crops; `contain` letterboxes. */\nexport type ImageFit = 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';\n\n/**\n * The focal point a crop keeps. `start` and `end` are the family's own —\n * `object-position` has no logical keywords — and mirror under `dir=\"rtl\"`.\n * Any other value (`30% 20%`, a CMS focal point) is written on the instance.\n */\nexport type ImagePosition = 'center' | 'top' | 'bottom' | 'start' | 'end';\n\n/** What the DOM says the focal point is: one of the names, or `custom`. */\nexport type ImagePositionAttribute = ImagePosition | 'custom';\n\nexport type ImageRadius = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * What stands under the picture while it is on its way. `surface` is the\n * sunken ground; `blur` is `placeholderSrc` scaled and blurred where the\n * picture will be; `none` paints nothing.\n */\nexport type ImagePlaceholder = 'none' | 'surface' | 'blur';\n\n/** Where the picture is. Four values, because a boolean cannot say why there is none. */\nexport type ImageStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\nexport type ImageLoading = 'lazy' | 'eager';\nexport type ImageDecoding = 'async' | 'sync' | 'auto';\n\n/** One `<source>` of a `<picture>`: art direction by media, or a format by type. */\nexport interface ImageSource {\n media?: string | undefined;\n sizes?: string | undefined;\n srcSet: string;\n type?: string | undefined;\n}\n\n/** What an application sets once for every image under it. */\nexport interface ImageDefaults {\n bordered: boolean;\n decoding: ImageDecoding;\n fit: ImageFit;\n layout: ImageLayout;\n loading: ImageLoading;\n placeholder: ImagePlaceholder;\n position: ImagePosition | (string & {});\n radius: ImageRadius;\n}\n\nconst FALLBACK: ImageDefaults = {\n bordered: false,\n decoding: 'async',\n fit: 'cover',\n layout: 'intrinsic',\n loading: 'lazy',\n placeholder: 'surface',\n position: 'center',\n radius: 'none',\n};\n\nexport const IMAGE_DEFAULTS = new InjectionToken<ImageDefaults>('slotted image defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its pictures are cut, cornered, edged and\n * held before they arrive, rather than repeating the same inputs on every\n * thumbnail in every grid. An image that states any of them itself still\n * wins: an explicit input is never overridden by the token.\n */\nexport function provideImageDefaults(defaults: Partial<ImageDefaults>) {\n return {\n provide: IMAGE_DEFAULTS,\n useFactory: (): ImageDefaults => ({\n bordered: defaults.bordered ?? FALLBACK.bordered,\n decoding: defaults.decoding ?? FALLBACK.decoding,\n fit: defaults.fit ?? FALLBACK.fit,\n layout: defaults.layout ?? FALLBACK.layout,\n loading: defaults.loading ?? FALLBACK.loading,\n placeholder: defaults.placeholder ?? FALLBACK.placeholder,\n position: defaults.position ?? FALLBACK.position,\n radius: defaults.radius ?? FALLBACK.radius,\n }),\n };\n}\n\n/** What an image renders as here, before it states anything of its own. */\nexport function injectImageDefaults(): ImageDefaults {\n return inject(IMAGE_DEFAULTS);\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * What the picture tells the image it sits in.\n *\n * It is a token rather than the component's own class so that one directive\n * can serve both pictures the family knows about: the `<img>` the image\n * renders for its own `src`, and the `<img>` the consumer projects — which is\n * the one that carries `ngSrc`, and therefore the one `NgOptimizedImage` can\n * reach. A directive that injected the component directly would put a cycle\n * between the two files, and the component imports the directive for its own\n * template.\n */\nexport interface ImageMediaHost {\n /** The picture arrived, or was already there. */\n reportLoaded(): void;\n /** The picture failed. The host decides whether a second URL is tried. */\n reportError(): void;\n}\n\nexport const IMAGE_MEDIA_HOST = new InjectionToken<ImageMediaHost>('slotted image media host');\n","import { afterNextRender, Directive, ElementRef, inject } from '@angular/core';\n\nimport { IMAGE_MEDIA_HOST } from './image-media-host';\n\n/**\n * The picture inside an image.\n *\n * It is written on an `<img>` the consumer owns, which is what lets\n * `NgOptimizedImage` do its work: `ngSrc`, the priority hint, the generated\n * `srcset` and the size warnings all belong to a real `<img>` in the\n * consumer's template, and none of them survive being handed a `src` string\n * through an input. React has no equivalent, and its `renderImage` is the\n * other half of the same idea.\n *\n * A projected picture keeps every attribute the consumer wrote — `alt`,\n * `loading`, `width`, `height` — and the family writes only its part name.\n */\n@Directive({\n selector: 'img[slImageMedia]',\n standalone: true,\n exportAs: 'slImageMedia',\n host: {\n 'data-part': 'image',\n 'data-part-image': '',\n '(load)': 'host.reportLoaded()',\n '(error)': 'host.reportError()',\n },\n})\nexport class SlImageMedia {\n protected readonly host = inject(IMAGE_MEDIA_HOST);\n\n private readonly element = inject<ElementRef<HTMLImageElement>>(ElementRef).nativeElement;\n\n constructor() {\n /**\n * A picture already in the browser cache finishes decoding before the\n * listener is attached, so the element is asked whether it is already\n * complete rather than waited on for an event that has been and gone.\n * Without it an image shows its ground over a picture that is already\n * there.\n */\n afterNextRender(() => {\n if (this.element.complete && this.element.naturalWidth > 0) {\n this.host.reportLoaded();\n }\n });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n forwardRef,\n input,\n linkedSignal,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlAspectRatio } from '@slotted/angular/aspect-ratio';\nimport type { AspectRatioValue } from '@slotted/angular/aspect-ratio';\n\nimport {\n injectImageDefaults,\n type ImageDecoding,\n type ImageFit,\n type ImageLayout,\n type ImageLoading,\n type ImagePlaceholder,\n type ImagePosition,\n type ImagePositionAttribute,\n type ImageRadius,\n type ImageSource,\n type ImageStatus,\n} from './image-defaults';\nimport { IMAGE_MEDIA_HOST } from './image-media-host';\nimport { SlImageMedia } from './image-media';\n\nexport type {\n ImageDecoding,\n ImageDefaults,\n ImageFit,\n ImageLayout,\n ImageLoading,\n ImagePlaceholder,\n ImagePosition,\n ImagePositionAttribute,\n ImageRadius,\n ImageSource,\n ImageStatus,\n} from './image-defaults';\n\nconst POSITIONS = new Set(['center', 'top', 'bottom', 'start', 'end']);\n\n/** Which of the two URLs the element is showing, and what it said about it. */\ninterface Derived {\n attempt: 'primary' | 'fallback';\n status: ImageStatus;\n}\n\n/**\n * A picture, and what stands in for it before it arrives and after it fails.\n * The `<img>` is the platform's and keeps every attribute the platform gives\n * it; the family adds the two layers under it, a fit, a focal point, a\n * corner and an edge, and composes the frame from `slAspectRatio` when a\n * ratio was decided.\n *\n * The component is written on the element the page chose — a `div`, a\n * `figure`, an `a` that opens a page, a `button` that opens a dialog. The\n * picture is either the `<img>` the component renders for its `src`, or the\n * `<img slImageMedia>` the consumer projects, which is the one `ngSrc` and\n * `NgOptimizedImage` belong on.\n *\n * `status` is an input with an output beside it rather than a `model()`. A\n * `model()` promises a two-way binding for a value the browser owns: the\n * component would write over whatever the consumer passed the first time a\n * picture loaded. Here the consumer's value simply wins, and the output\n * reports the derivation — a load event is a fact rather than a request, so\n * there is nothing to cancel and no reason from the closed vocabulary fits.\n * `fallbackSrc` is tried before `error` is reported, on the component's own\n * `<img>`; a projected picture is the consumer's to retry.\n */\n@Component({\n selector: '[slImage]',\n standalone: true,\n exportAs: 'slImage',\n imports: [NgTemplateOutlet, SlAspectRatio, SlGlyph, SlIcon, SlImageMedia],\n providers: [\n /* The component is its own media host, and a decorator is evaluated before\n the class it decorates exists. */\n { provide: IMAGE_MEDIA_HOST, useExisting: forwardRef(() => SlImage) },\n ],\n template: `@if (ratio(); as decided) {\n <div slAspectRatio [ratio]=\"decided\">\n <ng-container *ngTemplateOutlet=\"layers\"></ng-container>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"layers\"></ng-container>\n }\n <ng-template #layers>\n @if (projected() === undefined && src() !== undefined) {\n @if (sources().length > 0) {\n <picture data-part=\"picture\" data-part-picture=\"\">\n @for (source of sources(); track $index) {\n <source\n [attr.srcset]=\"source.srcSet\"\n [attr.media]=\"source.media ?? null\"\n [attr.sizes]=\"source.sizes ?? null\"\n [attr.type]=\"source.type ?? null\"\n />\n }\n <ng-container *ngTemplateOutlet=\"own\"></ng-container>\n </picture>\n } @else {\n <ng-container *ngTemplateOutlet=\"own\"></ng-container>\n }\n }\n <ng-content select=\"img[slImageMedia]\"></ng-content\n ><span data-part=\"placeholder\" data-part-placeholder=\"\" aria-hidden=\"true\">\n @if (resolvedPlaceholder() === 'blur' && placeholderSrc(); as preview) {\n <img alt=\"\" [src]=\"preview\" />\n }\n <ng-content select=\"[slImagePlaceholder]\"></ng-content></span\n ><span data-part=\"fallback\" data-part-fallback=\"\"\n ><ng-content select=\"[slImageFallback]\"\n ><span slIcon><svg slGlyph name=\"image-off\"></svg></span></ng-content\n ></span>\n </ng-template>\n <ng-template #own>\n <img\n slImageMedia\n [src]=\"shownSrc()\"\n [attr.srcset]=\"srcset() ?? null\"\n [attr.sizes]=\"sizes() ?? null\"\n [attr.alt]=\"alt() ?? ''\"\n [attr.width]=\"width() ?? null\"\n [attr.height]=\"height() ?? null\"\n [attr.loading]=\"resolvedLoading()\"\n [attr.decoding]=\"resolvedDecoding()\"\n [attr.fetchpriority]=\"resolvedFetchPriority()\"\n [attr.crossorigin]=\"crossOrigin() ?? null\"\n [attr.referrerpolicy]=\"referrerPolicy() ?? null\"\n />\n </ng-template>`,\n styleUrl: '../../../styles/src/image/image.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'image',\n 'data-ui-image': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-fit]': 'resolvedFit()',\n '[attr.data-position]': 'positionAttribute()',\n '[attr.data-radius]': 'resolvedRadius()',\n '[attr.data-placeholder]': 'resolvedPlaceholder()',\n '[attr.data-status]': 'resolvedStatus()',\n '[attr.data-bordered]': \"resolvedBordered() ? '' : null\",\n '[style.--slotted-image-position]': 'positionToken()',\n },\n})\nexport class SlImage {\n /** The picture. Absent, the component renders no `<img>` of its own and is idle. */\n readonly src = input<string | undefined>(undefined);\n /** The candidates for the component's own `<img>`, as the platform's `srcset`. */\n readonly srcset = input<string | undefined>(undefined);\n /** The platform's `sizes`, beside `srcset`. */\n readonly sizes = input<string | undefined>(undefined);\n /**\n * What the picture shows, or `\"\"` for a picture that is decoration beside\n * its own text. Written on the component's own `<img>`; a projected\n * picture carries its own.\n */\n readonly alt = input<string | undefined>(undefined);\n /** The intrinsic width, which with `height` reserves the ratio before the picture loads. */\n readonly width = input<number | string | undefined>(undefined);\n readonly height = input<number | string | undefined>(undefined);\n readonly crossOrigin = input<'anonymous' | 'use-credentials' | undefined>(undefined);\n readonly referrerPolicy = input<string | undefined>(undefined);\n /**\n * The proportion the box holds before the picture arrives. Renders an\n * `slAspectRatio` inside the host and lays the picture out `framed`.\n */\n readonly ratio = input<AspectRatioValue | undefined>(undefined);\n /** Defaults to the provider, then to `intrinsic`; a `ratio` implies `framed` unless one is stated. */\n readonly layout = input<ImageLayout | undefined>(undefined);\n /** Defaults to the provider, then to `cover`. */\n readonly fit = input<ImageFit | undefined>(undefined);\n /**\n * A focal point: one of the five names, or any `object-position` value,\n * written on the instance. Defaults to the provider, then to `center`.\n */\n readonly position = input<ImagePosition | (string & {}) | undefined>(undefined);\n /** Defaults to the provider, then to `none`. */\n readonly radius = input<ImageRadius | undefined>(undefined);\n /** A subtle inset edge, for a photograph of a white wall on a white page. */\n readonly bordered = input<boolean | undefined, unknown>(undefined, {\n transform: (value: unknown) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Defaults to the provider, then to `surface`. */\n readonly placeholder = input<ImagePlaceholder | undefined>(undefined);\n /** The small picture `placeholder=\"blur\"` scales and blurs. A data URI, usually. */\n readonly placeholderSrc = input<string | undefined>(undefined);\n /**\n * A second URL to try when `src` fails. The status stays `loading` while\n * it is tried, and `error` is reached only if it fails too.\n */\n readonly fallbackSrc = input<string | undefined>(undefined);\n /** The `<source>`s of a `<picture>`, in order. The `<img>` is written last. */\n readonly sources = input<readonly ImageSource[]>([]);\n /** The platform's `loading`. Defaults to the provider, then to `lazy`; `priority` makes it `eager`. */\n readonly loading = input<ImageLoading | undefined>(undefined);\n /** The platform's `decoding`. Defaults to the provider, then to `async`. */\n readonly decoding = input<ImageDecoding | undefined>(undefined);\n /** The platform's `fetchpriority`. `priority` writes `high` unless one is stated. */\n readonly fetchPriority = input<'high' | 'low' | 'auto' | undefined>(undefined);\n /**\n * The picture the page is waiting for: `loading=\"eager\"` and\n * `fetchpriority=\"high\"`, unless either is stated.\n */\n readonly priority = input(false, { transform: booleanAttribute });\n /**\n * Where the picture is. Supplied, it wins over what the component derives\n * from the element — for a server that already knows, or a loader the\n * family cannot see.\n */\n readonly status = input<ImageStatus | undefined>(undefined);\n\n /** Reports the derived status. Never emits for a status passed in. */\n readonly statusChange = output<ImageStatus>();\n\n private readonly defaults = injectImageDefaults();\n\n protected readonly projected = contentChild(SlImageMedia);\n\n protected readonly resolvedLayout = computed<ImageLayout>(\n () => this.layout() ?? (this.ratio() === undefined ? this.defaults.layout : 'framed'),\n );\n protected readonly resolvedFit = computed(() => this.fit() ?? this.defaults.fit);\n protected readonly resolvedRadius = computed(() => this.radius() ?? this.defaults.radius);\n protected readonly resolvedBordered = computed(() => this.bordered() ?? this.defaults.bordered);\n protected readonly resolvedPlaceholder = computed(\n () => this.placeholder() ?? this.defaults.placeholder,\n );\n protected readonly resolvedLoading = computed(\n () => this.loading() ?? (this.priority() ? 'eager' : this.defaults.loading),\n );\n protected readonly resolvedDecoding = computed(() => this.decoding() ?? this.defaults.decoding);\n protected readonly resolvedFetchPriority = computed(\n () => this.fetchPriority() ?? (this.priority() ? 'high' : null),\n );\n\n private readonly resolvedPosition = computed(() => this.position() ?? this.defaults.position);\n protected readonly positionAttribute = computed<ImagePositionAttribute>(() =>\n POSITIONS.has(this.resolvedPosition())\n ? (this.resolvedPosition() as ImagePositionAttribute)\n : 'custom',\n );\n protected readonly positionToken = computed(() =>\n this.positionAttribute() === 'custom' ? this.resolvedPosition() : null,\n );\n\n /**\n * The derivation, and the picture it belongs to. A new request makes the\n * previous answer describe nothing, so the status starts again from what\n * the inputs alone can say — which is also what a server render and the\n * hydration after it both compute, so nothing flashes between them.\n */\n private readonly derived = linkedSignal<string, Derived>({\n source: () => `${this.src() ?? ''}|${this.projected() === undefined ? '' : 'projected'}`,\n computation: (request) => ({\n attempt: 'primary',\n status: request === '|' ? 'idle' : 'loading',\n }),\n });\n\n protected readonly resolvedStatus = computed(() => this.status() ?? this.derived().status);\n\n /** The URL the component's own `<img>` is showing: `src`, or `fallbackSrc` after `src` failed. */\n protected readonly shownSrc = computed(() =>\n this.derived().attempt === 'fallback' ? (this.fallbackSrc() ?? this.src()) : this.src(),\n );\n\n /** Called by the picture, whichever of the two elements it turned out to be. */\n reportLoaded() {\n if (this.derived().status === 'loaded') return;\n this.derived.set({ attempt: this.derived().attempt, status: 'loaded' });\n this.statusChange.emit('loaded');\n }\n\n /**\n * The first failure is answered with the second URL when there is one, and\n * the status stays `loading` while it is tried; `error` is what is left\n * when nothing could be shown. Only the component's own `<img>` can be\n * re-pointed: a projected picture belongs to the consumer.\n */\n reportError() {\n const { attempt } = this.derived();\n if (\n attempt === 'primary' &&\n this.fallbackSrc() !== undefined &&\n this.projected() === undefined\n ) {\n this.derived.set({ attempt: 'fallback', status: 'loading' });\n return;\n }\n this.derived.set({ attempt, status: 'error' });\n this.statusChange.emit('error');\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Content over the placeholder's ground while the picture is on its way — a\n * skeleton, a blurhash canvas. A marker rather than a bare `<ng-content>`,\n * so the slot can be selected by name and nothing else falls into it.\n */\n@Directive({\n selector: '[slImagePlaceholder]',\n standalone: true,\n exportAs: 'slImagePlaceholder',\n})\nexport class SlImagePlaceholder {}\n\n/**\n * Content of the fallback, in place of the glyph, once the picture has\n * failed: a message, a retry, a logotype. The glyph is the slot's default\n * content, so projecting anything here replaces it.\n */\n@Directive({\n selector: '[slImageFallback]',\n standalone: true,\n exportAs: 'slImageFallback',\n})\nexport class SlImageFallback {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|