@slotted/angular 0.1.0-beta.8 → 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/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 +68 -26
- 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 +128 -51
- 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 +38 -12
- 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 +46 -14
- 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 +39 -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 +32 -24
- 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 +46 -12
- 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.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.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-prompt-composer.mjs","sources":["../../prompt-composer/src/prompt-composer-defaults.ts","../../prompt-composer/src/prompt-composer.ts","../../prompt-composer/src/prompt-composer-input.ts","../../prompt-composer/src/prompt-composer-parts.ts","../../prompt-composer/src/slotted-angular-prompt-composer.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport type { UploadFile } from '@slotted/core/upload';\n\nexport type PromptComposerSize = 'sm' | 'md' | 'lg';\n/**\n * `raised` is the chat composer, a surface lifted off the page; `outline` and\n * `subtle` are a composer inside a form, with a one-line control's geometry.\n */\nexport type PromptComposerVariant = 'raised' | 'outline' | 'subtle';\n/** Whether Enter sends, or only Mod+Enter does. Shift+Enter always breaks a line. */\nexport type PromptComposerSubmitOn = 'enter' | 'mod-enter';\n/** Where the request stands. The application owns it. */\nexport type PromptComposerStatus = 'ready' | 'submitted' | 'streaming' | 'error';\nexport type PromptComposerSubmitReason = 'keyboard' | 'pointer';\n\n/** Files from the attach button, a paste or a drop, after the selection rules. */\nexport interface PromptComposerAttachEvent {\n files: File[];\n reason: 'pointer' | 'paste' | 'drop';\n rejected: UploadFile[];\n source: Event;\n}\n\nexport interface PromptComposerStopEvent {\n reason: PromptComposerSubmitReason;\n source: Event;\n}\n\nexport interface PromptComposerDefaults {\n size: PromptComposerSize;\n submitOn: PromptComposerSubmitOn;\n variant: PromptComposerVariant;\n}\n\nconst FALLBACK: PromptComposerDefaults = {\n size: 'md',\n submitOn: 'enter',\n variant: 'raised',\n};\n\nexport const PROMPT_COMPOSER_DEFAULTS = new InjectionToken<PromptComposerDefaults>(\n 'slotted prompt composer defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its composers look and which key sends. A\n * composer that states any of them itself still wins. What the buttons say\n * comes from the language in force (`provideSlotted`).\n */\nexport function providePromptComposerDefaults(defaults: Partial<PromptComposerDefaults>) {\n return {\n provide: PROMPT_COMPOSER_DEFAULTS,\n useFactory: (): PromptComposerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectPromptComposerDefaults(): PromptComposerDefaults {\n return inject(PROMPT_COMPOSER_DEFAULTS);\n}\n\n/**\n * What the composer needs of the textarea inside it. An abstract class rather\n * than an import, so the two directives depend on each other without a cycle.\n */\nexport abstract class SlPromptComposerControl {\n /** What the element shows. */\n abstract readonly current: Signal<string>;\n abstract readonly resolvedDisabled: Signal<boolean | undefined>;\n abstract readonly resolvedReadOnly: Signal<boolean | undefined>;\n abstract readonly resolvedInvalid: Signal<boolean | undefined>;\n /** Empties the value after an accepted send, with reason `submit`. */\n abstract clearAfterSubmit(source: Event): void;\n abstract focus(): void;\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlField } from '@slotted/angular/field';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport {\n type PartialMessages,\n promptComposerMessages,\n type PromptComposerMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { selectFiles } from '@slotted/core/upload';\n\nimport { injectPromptComposerDefaults, SlPromptComposerControl } from './prompt-composer-defaults';\nimport type {\n PromptComposerAttachEvent,\n PromptComposerSize,\n PromptComposerStatus,\n PromptComposerStopEvent,\n PromptComposerSubmitOn,\n PromptComposerSubmitReason,\n PromptComposerVariant,\n} from './prompt-composer-defaults';\n\n/** Whether a drag carries files, rather than a selection of text. */\nfunction carriesFiles(event: DragEvent): boolean {\n return Array.from(event.dataTransfer?.types ?? []).includes('Files');\n}\n\n/**\n * A message being written: the consumer's own `form`, around a textarea, a\n * band above for what the message carries and a band below for what it is\n * sent with.\n *\n * The value is the textarea's, so a reactive form binds there; the status is\n * the application's; the attachments are the application's too — the\n * composer hands over the files after the selection rules `upload` applies,\n * and draws nothing of them.\n */\n@Component({\n selector: 'form[slPromptComposer]',\n standalone: true,\n exportAs: 'slPromptComposer',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/prompt-composer/prompt-composer.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'prompt-composer',\n 'data-part': 'root',\n novalidate: '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-status]': 'status()',\n '[attr.data-loading]': \"busy() ? '' : null\",\n '[attr.data-disabled]': \"control()?.resolvedDisabled() === true ? '' : null\",\n '[attr.data-readonly]': \"control()?.resolvedReadOnly() === true ? '' : null\",\n '[attr.data-invalid]': \"control()?.resolvedInvalid() === true ? '' : null\",\n '[attr.data-drop-target]': \"dropTarget() ? '' : null\",\n '(submit)': 'onSubmit($event)',\n '(mousedown)': 'onMouseDown($event)',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class SlPromptComposer {\n readonly size = input<PromptComposerSize | undefined>(undefined);\n readonly variant = input<PromptComposerVariant | undefined>(undefined);\n /** Where the request stands. The application owns it. */\n readonly status = input<PromptComposerStatus>('ready');\n readonly submitOn = input<PromptComposerSubmitOn | undefined>(undefined);\n /** Whether the send is available. Defaults to \"the value has something besides white space\". */\n readonly canSubmit = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n /** The file types the attach button, a paste and a drop accept. */\n readonly accept = input<string | undefined>(undefined);\n readonly multiple = input(true, { transform: booleanAttribute });\n readonly maxSize = input<number | undefined, unknown>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value)),\n });\n readonly maxFiles = input<number | undefined, unknown>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * names of the attach and submit buttons for each status (`send`, `sending`,\n * `stop`, `retry`), and the `sending` and `stopped` announcements.\n */\n readonly messages = input<PartialMessages<PromptComposerMessages> | undefined>(undefined);\n\n /** Before the message is sent; `cancel()` keeps the value where it is. */\n readonly valueSubmit = output<ChangeRequest<string>>();\n /** The stop button, while the status is `streaming`. */\n readonly stop = output<PromptComposerStopEvent>();\n /** Files from the attach button, a paste or a drop, after the selection rules. */\n readonly attach = output<PromptComposerAttachEvent>();\n\n readonly defaults = injectPromptComposerDefaults();\n /** The family's words in the language in force, with this composer's `messages` laid over them. */\n readonly t = injectMessages(promptComposerMessages, this.messages);\n private readonly field = inject(SlField, { optional: true });\n private readonly element: HTMLFormElement = inject(ElementRef).nativeElement;\n\n readonly control = contentChild(SlPromptComposerControl, { descendants: true });\n protected readonly dropTarget = signal(false);\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedSubmitOn = computed(() => this.submitOn() ?? this.defaults.submitOn);\n readonly busy = computed(() => this.status() === 'submitted' || this.status() === 'streaming');\n readonly resolvedCanSubmit = computed(() => {\n const control = this.control();\n if (control === undefined || this.busy()) return false;\n if (control.resolvedDisabled() === true || control.resolvedReadOnly() === true) return false;\n return this.canSubmit() ?? control.current().trim() !== '';\n });\n readonly off = computed(\n () =>\n this.control()?.resolvedDisabled() === true || this.control()?.resolvedReadOnly() === true,\n );\n\n constructor() {\n /* The request travelling is announced once, as it starts. */\n let previous: PromptComposerStatus = 'ready';\n effect(() => {\n const status = this.status();\n if (status === 'submitted' && previous !== 'submitted') {\n untracked(() => this.announce(this.t('sending')));\n }\n previous = status;\n });\n }\n\n private announce(message: string) {\n getLiveAnnouncer(this.element.ownerDocument).announce(message);\n }\n\n /** Sends what the textarea holds, unless the send is unavailable or refused. */\n submitWith(reason: PromptComposerSubmitReason, source: Event) {\n const control = this.control();\n if (control === undefined || !this.resolvedCanSubmit()) return;\n let cancelled = false;\n const state = createControllable<string>({\n controlled: undefined,\n initial: '',\n equals: () => false,\n onRequest: (request) => {\n this.valueSubmit.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(control.current(), reason, source);\n if (cancelled) return;\n control.clearAfterSubmit(source);\n control.focus();\n }\n\n stopWith(reason: PromptComposerSubmitReason, source: Event) {\n this.stop.emit({ reason, source });\n this.announce(this.t('stopped'));\n this.control()?.focus();\n }\n\n attachFiles(files: readonly File[], reason: PromptComposerAttachEvent['reason'], source: Event) {\n if (files.length === 0 || this.off()) return;\n const outcome = selectFiles(files, [], {\n accept: this.accept(),\n maxFiles: this.maxFiles(),\n maxSize: this.maxSize(),\n multiple: this.multiple(),\n });\n const accepted = outcome.files\n .filter((entry) => entry.status !== 'rejected' && entry.file !== undefined)\n .map((entry) => entry.file as File);\n this.attach.emit({ files: accepted, reason, rejected: outcome.rejected, source });\n }\n\n protected onSubmit(event: SubmitEvent) {\n event.preventDefault();\n this.submitWith('keyboard', event);\n }\n\n /** A press on the frame's padding or a band's empty space puts the caret in the value. */\n protected onMouseDown(event: MouseEvent) {\n const part = (event.target as HTMLElement).getAttribute('data-part');\n if (part !== 'root' && part !== 'header' && part !== 'footer') return;\n event.preventDefault();\n this.control()?.focus();\n }\n\n protected onDragOver(event: DragEvent) {\n if (!carriesFiles(event) || this.off()) return;\n event.preventDefault();\n this.dropTarget.set(true);\n }\n\n protected onDragLeave(event: DragEvent) {\n const next = event.relatedTarget as Node | null;\n if (next === null || !this.element.contains(next)) this.dropTarget.set(false);\n }\n\n protected onDrop(event: DragEvent) {\n this.dropTarget.set(false);\n if (!carriesFiles(event)) return;\n event.preventDefault();\n this.attachFiles(Array.from(event.dataTransfer?.files ?? []), 'drop', event);\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { SlField } from '@slotted/angular/field';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport { SlPromptComposer } from './prompt-composer';\nimport { SlPromptComposerControl } from './prompt-composer-defaults';\n\n/**\n * The value. Enter sends unless the composer's `submitOn` is `mod-enter`;\n * Mod+Enter always sends; Shift+Enter is the platform's line break; nothing is\n * sent while an input method is composing, because there Enter confirms the\n * composition. Files pasted with or without text go to the composer's\n * `attach`.\n *\n * The element owns the characters, as in `text-field`: a form's `writeValue`\n * and a `[value]` binding write the element, and the directive keeps a mirror\n * for the send and the count.\n */\n@Directive({\n selector: 'textarea[slPromptComposerInput]',\n standalone: true,\n exportAs: 'slPromptComposerInput',\n providers: [\n { provide: SlPromptComposerControl, useExisting: forwardRef(() => SlPromptComposerInput) },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlPromptComposerInput),\n multi: true,\n },\n ],\n host: {\n 'data-part': 'input',\n '[attr.id]': 'controlId()',\n '[attr.dir]': \"writtenDir ?? 'auto'\",\n '[attr.rows]': 'rows()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': \"resolvedInvalid() === true ? 'true' : null\",\n '[attr.aria-required]': \"field?.required() === true ? 'true' : null\",\n '[attr.disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[style.--slotted-prompt-composer-rows]': 'rows()',\n '[style.--slotted-prompt-composer-max-rows]': 'maxRows() ?? null',\n '(input)': 'onInput($event)',\n '(keydown)': 'onKeyDown($event)',\n '(paste)': 'onPaste($event)',\n '(blur)': 'onTouchedFn()',\n },\n})\nexport class SlPromptComposerInput\n implements ControlValueAccessor, OnInit, SlPromptComposerControl\n{\n /** Present means the consumer owns the value. */\n readonly value = input<string | undefined>(undefined);\n readonly defaultValue = input<string | undefined>(undefined);\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n /** The fewest lines the value shows. */\n readonly rows = input(1, { transform: numberAttribute });\n /** The most lines it grows to before it scrolls. */\n readonly maxRows = input<number | undefined, unknown>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value)),\n });\n /** Publishes the length of the value to the field, which draws the count. */\n readonly showCount = input(false, { transform: booleanAttribute });\n\n /** Before the value moves: `keyboard` for an edit, `submit` for the clearing after a send. */\n readonly valueChange = output<ChangeRequest<string>>();\n\n private readonly element: HTMLTextAreaElement = inject(ElementRef).nativeElement;\n private readonly composer = inject(SlPromptComposer);\n protected readonly field = inject(SlField, { optional: true });\n protected readonly writtenDir = inject(new HostAttributeToken('dir'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenMaxLength = inject(new HostAttributeToken('maxlength'), {\n optional: true,\n });\n\n private readonly mirror = signal('');\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private onChangeFn: (value: string) => void = () => undefined;\n protected onTouchedFn: () => void = () => undefined;\n\n readonly current = this.mirror.asReadonly();\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(() => this.readOnly() ?? this.field?.resolvedReadOnly());\n readonly resolvedInvalid = computed(() => this.invalid() ?? this.field?.invalid());\n\n protected readonly controlId = computed(\n () => this.writtenId ?? this.field?.ids().control ?? null,\n );\n protected readonly describedBy = computed(() => this.field?.describedBy() || null);\n\n constructor() {\n effect(() => {\n const next = this.value();\n if (next === undefined || next === this.element.value) return;\n this.element.value = next;\n this.mirror.set(next);\n });\n\n effect(() => {\n if (this.field === null) return;\n if (!this.showCount()) {\n this.field.setCount(undefined);\n return;\n }\n const max = this.writtenMaxLength === null ? undefined : Number(this.writtenMaxLength);\n this.field.setCount({ length: this.mirror().length, max });\n });\n }\n\n ngOnInit() {\n const initial = this.defaultValue() ?? this.element.value;\n if (initial !== this.element.value) this.element.value = initial;\n this.mirror.set(this.element.value);\n }\n\n /** The native element, for `focus()`, `select()` and `setSelectionRange()`. */\n get inputElement(): HTMLTextAreaElement {\n return this.element;\n }\n\n focus() {\n this.element.focus();\n }\n\n writeValue(value: string | null | undefined) {\n this.element.value = value ?? '';\n this.mirror.set(this.element.value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n clearAfterSubmit(source: Event) {\n if (!this.request('', 'submit', source)) return;\n this.element.value = '';\n this.mirror.set('');\n this.onChangeFn('');\n }\n\n protected onInput(event: Event) {\n const next = this.element.value;\n if (this.request(next, 'keyboard', event)) {\n this.mirror.set(next);\n this.onChangeFn(next);\n } else {\n this.element.value = this.mirror();\n }\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Enter' || event.shiftKey) return;\n if (event.isComposing || event.keyCode === 229) return;\n const mod = event.metaKey || event.ctrlKey;\n if (!mod && this.composer.resolvedSubmitOn() !== 'enter') return;\n event.preventDefault();\n this.composer.submitWith('keyboard', event);\n }\n\n protected onPaste(event: ClipboardEvent) {\n const files = Array.from(event.clipboardData?.files ?? []);\n if (files.length === 0) return;\n if (event.clipboardData?.getData('text/plain') === '') event.preventDefault();\n this.composer.attachFiles(files, 'paste', event);\n }\n\n private request(next: string, reason: ChangeReason, source: Event): boolean {\n if (next === this.mirror()) return false;\n let cancelled = false;\n const state = createControllable<string>({\n controlled: undefined,\n initial: this.mirror(),\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(next, reason, source);\n return !cancelled;\n }\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlPromptComposer } from './prompt-composer';\n\n/** The band above the value: attachments, a quoted reply, a context chip. */\n@Directive({\n selector: '[slPromptComposerHeader]',\n standalone: true,\n host: { 'data-part': 'header' },\n})\nexport class SlPromptComposerHeader {}\n\n/** The band below the value: tools on the start, the send at the end. */\n@Directive({\n selector: '[slPromptComposerFooter]',\n standalone: true,\n host: { 'data-part': 'footer' },\n})\nexport class SlPromptComposerFooter {}\n\n/**\n * A button of the consumer's in a band: a model menu, a tool, Cancelar.\n * `slMenuTriggerFor` on the same element binds `data-part` to `null`, and the\n * binding is a constant, so the part is written back once after the first\n * render — the rule `menu` records for its own trigger.\n */\n@Directive({\n selector: 'button[slPromptComposerAction]',\n standalone: true,\n exportAs: 'slPromptComposerAction',\n host: { 'data-part': 'action', '[attr.type]': 'type' },\n})\nexport class SlPromptComposerAction {\n protected readonly type = inject(new HostAttributeToken('type'), { optional: true }) ?? 'button';\n\n constructor() {\n const element: HTMLElement = inject(ElementRef).nativeElement;\n afterNextRender(() => element.setAttribute('data-part', 'action'));\n }\n}\n\n/**\n * The paperclip. It opens a file chooser it creates and never attaches to the\n * page, with the composer's `accept` and `multiple`; content projected into\n * the button replaces the mark.\n */\n@Component({\n selector: 'button[slPromptComposerAttach]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"paperclip\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'attach',\n type: 'button',\n '[attr.aria-label]': \"label ?? composer.t('attach')\",\n '[disabled]': 'composer.off()',\n '(click)': 'open()',\n },\n})\nexport class SlPromptComposerAttach {\n protected readonly composer = inject(SlPromptComposer);\n protected readonly label = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected open() {\n const picker = document.createElement('input');\n picker.type = 'file';\n picker.multiple = this.composer.multiple();\n const accept = this.composer.accept();\n if (accept !== undefined) picker.accept = accept;\n picker.addEventListener(\n 'change',\n (event) => this.composer.attachFiles(Array.from(picker.files ?? []), 'pointer', event),\n { once: true },\n );\n picker.click();\n }\n}\n\n/**\n * The send. Round and named by the provider's label for its status; a padded\n * word when given text, which then names it. It turns into a busy ring while\n * the request travels, a stop inside the ring while the answer streams, and a\n * retry after an error.\n */\n@Component({\n selector: 'button[slPromptComposerSubmit]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n template: `<ng-content>\n @switch (composer.status()) {\n @case ('submitted') {\n <span data-ui=\"spinner\" aria-hidden=\"true\"></span>\n }\n @case ('streaming') {\n <span data-ui=\"spinner\" aria-hidden=\"true\"></span>\n <span slIcon><svg slGlyph name=\"stop\"></svg></span>\n }\n @case ('error') {\n <span slIcon><svg slGlyph name=\"rotate-ccw\"></svg></span>\n }\n @default {\n <span slIcon><svg slGlyph name=\"arrow-up\"></svg></span>\n }\n }\n </ng-content>`,\n styleUrl: '../../../styles/src/spinner/spinner.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'submit',\n '[attr.type]': \"composer.busy() ? 'button' : 'submit'\",\n '[attr.aria-label]': 'named() ? null : label()',\n '[attr.aria-disabled]': \"composer.status() === 'submitted' ? 'true' : null\",\n '[disabled]':\n \"composer.status() === 'streaming' ? false : composer.status() !== 'submitted' && !composer.resolvedCanSubmit()\",\n '(click)': 'activate($event)',\n },\n})\nexport class SlPromptComposerSubmit {\n protected readonly composer = inject(SlPromptComposer);\n private readonly element: HTMLButtonElement = inject(ElementRef).nativeElement;\n /** Whether the consumer named the button with words of its own. */\n protected readonly named = signal(false);\n\n protected readonly label = computed(() => {\n const { t } = this.composer;\n switch (this.composer.status()) {\n case 'streaming':\n return t('stop');\n case 'submitted':\n return t('sending');\n case 'error':\n return t('retry');\n default:\n return t('send');\n }\n });\n\n constructor() {\n afterNextRender(() => this.named.set((this.element.textContent ?? '').trim() !== ''));\n }\n\n protected activate(event: MouseEvent) {\n event.preventDefault();\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n const status = this.composer.status();\n if (status === 'streaming') this.composer.stopWith(reason, event);\n else if (status !== 'submitted') this.composer.submitWith(reason, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-prompt-composer.mjs","sources":["../../prompt-composer/src/prompt-composer-defaults.ts","../../prompt-composer/src/prompt-composer.ts","../../prompt-composer/src/prompt-composer-input.ts","../../prompt-composer/src/prompt-composer-parts.ts","../../prompt-composer/src/slotted-angular-prompt-composer.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport type { UploadFile } from '@slotted/core/upload';\n\nexport type PromptComposerSize = 'sm' | 'md' | 'lg';\n/**\n * `raised` is the chat composer, a surface lifted off the page; `outline` and\n * `subtle` are a composer inside a form, with a one-line control's geometry.\n */\nexport type PromptComposerVariant = 'raised' | 'outline' | 'subtle';\n/** Whether Enter sends, or only Mod+Enter does. Shift+Enter always breaks a line. */\nexport type PromptComposerSubmitOn = 'enter' | 'mod-enter';\n/** Where the request stands. The application owns it. */\nexport type PromptComposerStatus = 'ready' | 'submitted' | 'streaming' | 'error';\nexport type PromptComposerSubmitReason = 'keyboard' | 'pointer';\n\n/** Files from the attach button, a paste or a drop, after the selection rules. */\nexport interface PromptComposerAttachEvent {\n files: File[];\n reason: 'pointer' | 'paste' | 'drop';\n rejected: UploadFile[];\n source: Event;\n}\n\nexport interface PromptComposerStopEvent {\n reason: PromptComposerSubmitReason;\n source: Event;\n}\n\nexport interface PromptComposerDefaults {\n size: PromptComposerSize;\n submitOn: PromptComposerSubmitOn;\n variant: PromptComposerVariant;\n}\n\nconst FALLBACK: PromptComposerDefaults = {\n size: 'md',\n submitOn: 'enter',\n variant: 'raised',\n};\n\nexport const PROMPT_COMPOSER_DEFAULTS = new InjectionToken<PromptComposerDefaults>(\n 'slotted prompt composer defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its composers look and which key sends. A\n * composer that states any of them itself still wins. What the buttons say\n * comes from the language in force (`provideSlotted`).\n */\nexport function providePromptComposerDefaults(defaults: Partial<PromptComposerDefaults>) {\n return {\n provide: PROMPT_COMPOSER_DEFAULTS,\n useFactory: (): PromptComposerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectPromptComposerDefaults(): PromptComposerDefaults {\n return inject(PROMPT_COMPOSER_DEFAULTS);\n}\n\n/**\n * What the composer needs of the textarea inside it. An abstract class rather\n * than an import, so the two directives depend on each other without a cycle.\n */\nexport abstract class SlPromptComposerControl {\n /** What the element shows. */\n abstract readonly current: Signal<string>;\n abstract readonly resolvedDisabled: Signal<boolean | undefined>;\n abstract readonly resolvedReadOnly: Signal<boolean | undefined>;\n abstract readonly resolvedInvalid: Signal<boolean | undefined>;\n /** Empties the value after an accepted send, with reason `submit`. */\n abstract clearAfterSubmit(source: Event): void;\n abstract focus(): void;\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlField } from '@slotted/angular/field';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport {\n type PartialMessages,\n promptComposerMessages,\n type PromptComposerMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { selectFiles } from '@slotted/core/upload';\n\nimport { injectPromptComposerDefaults, SlPromptComposerControl } from './prompt-composer-defaults';\nimport type {\n PromptComposerAttachEvent,\n PromptComposerSize,\n PromptComposerStatus,\n PromptComposerStopEvent,\n PromptComposerSubmitOn,\n PromptComposerSubmitReason,\n PromptComposerVariant,\n} from './prompt-composer-defaults';\n\n/** Whether a drag carries files, rather than a selection of text. */\nfunction carriesFiles(event: DragEvent): boolean {\n return Array.from(event.dataTransfer?.types ?? []).includes('Files');\n}\n\n/**\n * A message being written: the consumer's own `form`, around a textarea, a\n * band above for what the message carries and a band below for what it is\n * sent with.\n *\n * The value is the textarea's, so a reactive form binds there; the status is\n * the application's; the attachments are the application's too — the\n * composer hands over the files after the selection rules `upload` applies,\n * and draws nothing of them.\n */\n@Component({\n selector: 'form[slPromptComposer]',\n standalone: true,\n exportAs: 'slPromptComposer',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/prompt-composer/prompt-composer.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'prompt-composer',\n 'data-ui-prompt-composer': '',\n 'data-part': 'root',\n 'data-part-root': '',\n novalidate: '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-status]': 'status()',\n '[attr.data-loading]': \"busy() ? '' : null\",\n '[attr.data-disabled]': \"control()?.resolvedDisabled() === true ? '' : null\",\n '[attr.data-readonly]': \"control()?.resolvedReadOnly() === true ? '' : null\",\n '[attr.data-invalid]': \"control()?.resolvedInvalid() === true ? '' : null\",\n '[attr.data-drop-target]': \"dropTarget() ? '' : null\",\n '(submit)': 'onSubmit($event)',\n '(mousedown)': 'onMouseDown($event)',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class SlPromptComposer {\n readonly size = input<PromptComposerSize | undefined>(undefined);\n readonly variant = input<PromptComposerVariant | undefined>(undefined);\n /** Where the request stands. The application owns it. */\n readonly status = input<PromptComposerStatus>('ready');\n readonly submitOn = input<PromptComposerSubmitOn | undefined>(undefined);\n /** Whether the send is available. Defaults to \"the value has something besides white space\". */\n readonly canSubmit = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n /** The file types the attach button, a paste and a drop accept. */\n readonly accept = input<string | undefined>(undefined);\n readonly multiple = input(true, { transform: booleanAttribute });\n readonly maxSize = input<number | undefined, unknown>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value)),\n });\n readonly maxFiles = input<number | undefined, unknown>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * names of the attach and submit buttons for each status (`send`, `sending`,\n * `stop`, `retry`), and the `sending` and `stopped` announcements.\n */\n readonly messages = input<PartialMessages<PromptComposerMessages> | undefined>(undefined);\n\n /** Before the message is sent; `cancel()` keeps the value where it is. */\n readonly valueSubmit = output<ChangeRequest<string>>();\n /** The stop button, while the status is `streaming`. */\n readonly stop = output<PromptComposerStopEvent>();\n /** Files from the attach button, a paste or a drop, after the selection rules. */\n readonly attach = output<PromptComposerAttachEvent>();\n\n readonly defaults = injectPromptComposerDefaults();\n /** The family's words in the language in force, with this composer's `messages` laid over them. */\n readonly t = injectMessages(promptComposerMessages, this.messages);\n private readonly field = inject(SlField, { optional: true });\n private readonly element: HTMLFormElement = inject(ElementRef).nativeElement;\n\n readonly control = contentChild(SlPromptComposerControl, { descendants: true });\n protected readonly dropTarget = signal(false);\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedSubmitOn = computed(() => this.submitOn() ?? this.defaults.submitOn);\n readonly busy = computed(() => this.status() === 'submitted' || this.status() === 'streaming');\n readonly resolvedCanSubmit = computed(() => {\n const control = this.control();\n if (control === undefined || this.busy()) return false;\n if (control.resolvedDisabled() === true || control.resolvedReadOnly() === true) return false;\n return this.canSubmit() ?? control.current().trim() !== '';\n });\n readonly off = computed(\n () =>\n this.control()?.resolvedDisabled() === true || this.control()?.resolvedReadOnly() === true,\n );\n\n constructor() {\n /* The request travelling is announced once, as it starts. */\n let previous: PromptComposerStatus = 'ready';\n effect(() => {\n const status = this.status();\n if (status === 'submitted' && previous !== 'submitted') {\n untracked(() => this.announce(this.t('sending')));\n }\n previous = status;\n });\n }\n\n private announce(message: string) {\n getLiveAnnouncer(this.element.ownerDocument).announce(message);\n }\n\n /** Sends what the textarea holds, unless the send is unavailable or refused. */\n submitWith(reason: PromptComposerSubmitReason, source: Event) {\n const control = this.control();\n if (control === undefined || !this.resolvedCanSubmit()) return;\n let cancelled = false;\n const state = createControllable<string>({\n controlled: undefined,\n initial: '',\n equals: () => false,\n onRequest: (request) => {\n this.valueSubmit.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(control.current(), reason, source);\n if (cancelled) return;\n control.clearAfterSubmit(source);\n control.focus();\n }\n\n stopWith(reason: PromptComposerSubmitReason, source: Event) {\n this.stop.emit({ reason, source });\n this.announce(this.t('stopped'));\n this.control()?.focus();\n }\n\n attachFiles(files: readonly File[], reason: PromptComposerAttachEvent['reason'], source: Event) {\n if (files.length === 0 || this.off()) return;\n const outcome = selectFiles(files, [], {\n accept: this.accept(),\n maxFiles: this.maxFiles(),\n maxSize: this.maxSize(),\n multiple: this.multiple(),\n });\n const accepted = outcome.files\n .filter((entry) => entry.status !== 'rejected' && entry.file !== undefined)\n .map((entry) => entry.file as File);\n this.attach.emit({ files: accepted, reason, rejected: outcome.rejected, source });\n }\n\n protected onSubmit(event: SubmitEvent) {\n event.preventDefault();\n this.submitWith('keyboard', event);\n }\n\n /** A press on the frame's padding or a band's empty space puts the caret in the value. */\n protected onMouseDown(event: MouseEvent) {\n const part = (event.target as HTMLElement).getAttribute('data-part');\n if (part !== 'root' && part !== 'header' && part !== 'footer') return;\n event.preventDefault();\n this.control()?.focus();\n }\n\n protected onDragOver(event: DragEvent) {\n if (!carriesFiles(event) || this.off()) return;\n event.preventDefault();\n this.dropTarget.set(true);\n }\n\n protected onDragLeave(event: DragEvent) {\n const next = event.relatedTarget as Node | null;\n if (next === null || !this.element.contains(next)) this.dropTarget.set(false);\n }\n\n protected onDrop(event: DragEvent) {\n this.dropTarget.set(false);\n if (!carriesFiles(event)) return;\n event.preventDefault();\n this.attachFiles(Array.from(event.dataTransfer?.files ?? []), 'drop', event);\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { SlField } from '@slotted/angular/field';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport { SlPromptComposer } from './prompt-composer';\nimport { SlPromptComposerControl } from './prompt-composer-defaults';\n\n/**\n * The value. Enter sends unless the composer's `submitOn` is `mod-enter`;\n * Mod+Enter always sends; Shift+Enter is the platform's line break; nothing is\n * sent while an input method is composing, because there Enter confirms the\n * composition. Files pasted with or without text go to the composer's\n * `attach`.\n *\n * The element owns the characters, as in `text-field`: a form's `writeValue`\n * and a `[value]` binding write the element, and the directive keeps a mirror\n * for the send and the count.\n */\n@Directive({\n selector: 'textarea[slPromptComposerInput]',\n standalone: true,\n exportAs: 'slPromptComposerInput',\n providers: [\n { provide: SlPromptComposerControl, useExisting: forwardRef(() => SlPromptComposerInput) },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlPromptComposerInput),\n multi: true,\n },\n ],\n host: {\n 'data-part': 'input',\n 'data-part-input': '',\n '[attr.id]': 'controlId()',\n '[attr.dir]': \"writtenDir ?? 'auto'\",\n '[attr.rows]': 'rows()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': \"resolvedInvalid() === true ? 'true' : null\",\n '[attr.aria-required]': \"field?.required() === true ? 'true' : null\",\n '[attr.disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[style.--slotted-prompt-composer-rows]': 'rows()',\n '[style.--slotted-prompt-composer-max-rows]': 'maxRows() ?? null',\n '(input)': 'onInput($event)',\n '(keydown)': 'onKeyDown($event)',\n '(paste)': 'onPaste($event)',\n '(blur)': 'onTouchedFn()',\n },\n})\nexport class SlPromptComposerInput\n implements ControlValueAccessor, OnInit, SlPromptComposerControl\n{\n /** Present means the consumer owns the value. */\n readonly value = input<string | undefined>(undefined);\n readonly defaultValue = input<string | undefined>(undefined);\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n /** The fewest lines the value shows. */\n readonly rows = input(1, { transform: numberAttribute });\n /** The most lines it grows to before it scrolls. */\n readonly maxRows = input<number | undefined, unknown>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value)),\n });\n /** Publishes the length of the value to the field, which draws the count. */\n readonly showCount = input(false, { transform: booleanAttribute });\n\n /** Before the value moves: `keyboard` for an edit, `submit` for the clearing after a send. */\n readonly valueChange = output<ChangeRequest<string>>();\n\n private readonly element: HTMLTextAreaElement = inject(ElementRef).nativeElement;\n private readonly composer = inject(SlPromptComposer);\n protected readonly field = inject(SlField, { optional: true });\n protected readonly writtenDir = inject(new HostAttributeToken('dir'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenMaxLength = inject(new HostAttributeToken('maxlength'), {\n optional: true,\n });\n\n private readonly mirror = signal('');\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private onChangeFn: (value: string) => void = () => undefined;\n protected onTouchedFn: () => void = () => undefined;\n\n readonly current = this.mirror.asReadonly();\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(() => this.readOnly() ?? this.field?.resolvedReadOnly());\n readonly resolvedInvalid = computed(() => this.invalid() ?? this.field?.invalid());\n\n protected readonly controlId = computed(\n () => this.writtenId ?? this.field?.ids().control ?? null,\n );\n protected readonly describedBy = computed(() => this.field?.describedBy() || null);\n\n constructor() {\n effect(() => {\n const next = this.value();\n if (next === undefined || next === this.element.value) return;\n this.element.value = next;\n this.mirror.set(next);\n });\n\n effect(() => {\n if (this.field === null) return;\n if (!this.showCount()) {\n this.field.setCount(undefined);\n return;\n }\n const max = this.writtenMaxLength === null ? undefined : Number(this.writtenMaxLength);\n this.field.setCount({ length: this.mirror().length, max });\n });\n }\n\n ngOnInit() {\n const initial = this.defaultValue() ?? this.element.value;\n if (initial !== this.element.value) this.element.value = initial;\n this.mirror.set(this.element.value);\n }\n\n /** The native element, for `focus()`, `select()` and `setSelectionRange()`. */\n get inputElement(): HTMLTextAreaElement {\n return this.element;\n }\n\n focus() {\n this.element.focus();\n }\n\n writeValue(value: string | null | undefined) {\n this.element.value = value ?? '';\n this.mirror.set(this.element.value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n clearAfterSubmit(source: Event) {\n if (!this.request('', 'submit', source)) return;\n this.element.value = '';\n this.mirror.set('');\n this.onChangeFn('');\n }\n\n protected onInput(event: Event) {\n const next = this.element.value;\n if (this.request(next, 'keyboard', event)) {\n this.mirror.set(next);\n this.onChangeFn(next);\n } else {\n this.element.value = this.mirror();\n }\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Enter' || event.shiftKey) return;\n if (event.isComposing || event.keyCode === 229) return;\n const mod = event.metaKey || event.ctrlKey;\n if (!mod && this.composer.resolvedSubmitOn() !== 'enter') return;\n event.preventDefault();\n this.composer.submitWith('keyboard', event);\n }\n\n protected onPaste(event: ClipboardEvent) {\n const files = Array.from(event.clipboardData?.files ?? []);\n if (files.length === 0) return;\n if (event.clipboardData?.getData('text/plain') === '') event.preventDefault();\n this.composer.attachFiles(files, 'paste', event);\n }\n\n private request(next: string, reason: ChangeReason, source: Event): boolean {\n if (next === this.mirror()) return false;\n let cancelled = false;\n const state = createControllable<string>({\n controlled: undefined,\n initial: this.mirror(),\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(next, reason, source);\n return !cancelled;\n }\n}\n","import { writeSelectorKey } from '@slotted/core/selector-key';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlPromptComposer } from './prompt-composer';\n\n/** The band above the value: attachments, a quoted reply, a context chip. */\n@Directive({\n selector: '[slPromptComposerHeader]',\n standalone: true,\n host: { 'data-part': 'header', 'data-part-header': '' },\n})\nexport class SlPromptComposerHeader {}\n\n/** The band below the value: tools on the start, the send at the end. */\n@Directive({\n selector: '[slPromptComposerFooter]',\n standalone: true,\n host: { 'data-part': 'footer', 'data-part-footer': '' },\n})\nexport class SlPromptComposerFooter {}\n\n/**\n * A button of the consumer's in a band: a model menu, a tool, Cancelar.\n * `slMenuTriggerFor` on the same element binds `data-part` to `null`, and the\n * binding is a constant, so the part is written back once after the first\n * render — the rule `menu` records for its own trigger.\n */\n@Directive({\n selector: 'button[slPromptComposerAction]',\n standalone: true,\n exportAs: 'slPromptComposerAction',\n host: { 'data-part': 'action', 'data-part-action': '', '[attr.type]': 'type' },\n})\nexport class SlPromptComposerAction {\n protected readonly type = inject(new HostAttributeToken('type'), { optional: true }) ?? 'button';\n\n constructor() {\n const element: HTMLElement = inject(ElementRef).nativeElement;\n afterNextRender(() => writeSelectorKey(element, 'part', 'action'));\n }\n}\n\n/**\n * The paperclip. It opens a file chooser it creates and never attaches to the\n * page, with the composer's `accept` and `multiple`; content projected into\n * the button replaces the mark.\n */\n@Component({\n selector: 'button[slPromptComposerAttach]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"paperclip\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'attach',\n 'data-part-attach': '',\n type: 'button',\n '[attr.aria-label]': \"label ?? composer.t('attach')\",\n '[disabled]': 'composer.off()',\n '(click)': 'open()',\n },\n})\nexport class SlPromptComposerAttach {\n protected readonly composer = inject(SlPromptComposer);\n protected readonly label = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected open() {\n const picker = document.createElement('input');\n picker.type = 'file';\n picker.multiple = this.composer.multiple();\n const accept = this.composer.accept();\n if (accept !== undefined) picker.accept = accept;\n picker.addEventListener(\n 'change',\n (event) => this.composer.attachFiles(Array.from(picker.files ?? []), 'pointer', event),\n { once: true },\n );\n picker.click();\n }\n}\n\n/**\n * The send. Round and named by the provider's label for its status; a padded\n * word when given text, which then names it. It turns into a busy ring while\n * the request travels, a stop inside the ring while the answer streams, and a\n * retry after an error.\n */\n@Component({\n selector: 'button[slPromptComposerSubmit]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n template: `<ng-content>\n @switch (composer.status()) {\n @case ('submitted') {\n <span data-ui=\"spinner\" data-ui-spinner=\"\" aria-hidden=\"true\"></span>\n }\n @case ('streaming') {\n <span data-ui=\"spinner\" data-ui-spinner=\"\" aria-hidden=\"true\"></span>\n <span slIcon><svg slGlyph name=\"stop\"></svg></span>\n }\n @case ('error') {\n <span slIcon><svg slGlyph name=\"rotate-ccw\"></svg></span>\n }\n @default {\n <span slIcon><svg slGlyph name=\"arrow-up\"></svg></span>\n }\n }\n </ng-content>`,\n styleUrl: '../../../styles/src/spinner/spinner.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'submit',\n 'data-part-submit': '',\n '[attr.type]': \"composer.busy() ? 'button' : 'submit'\",\n '[attr.aria-label]': 'named() ? null : label()',\n '[attr.aria-disabled]': \"composer.status() === 'submitted' ? 'true' : null\",\n '[disabled]':\n \"composer.status() === 'streaming' ? false : composer.status() !== 'submitted' && !composer.resolvedCanSubmit()\",\n '(click)': 'activate($event)',\n },\n})\nexport class SlPromptComposerSubmit {\n protected readonly composer = inject(SlPromptComposer);\n private readonly element: HTMLButtonElement = inject(ElementRef).nativeElement;\n /** Whether the consumer named the button with words of its own. */\n protected readonly named = signal(false);\n\n protected readonly label = computed(() => {\n const { t } = this.composer;\n switch (this.composer.status()) {\n case 'streaming':\n return t('stop');\n case 'submitted':\n return t('sending');\n case 'error':\n return t('retry');\n default:\n return t('send');\n }\n });\n\n constructor() {\n afterNextRender(() => this.named.set((this.element.textContent ?? '').trim() !== ''));\n }\n\n protected activate(event: MouseEvent) {\n event.preventDefault();\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n const status = this.composer.status();\n if (status === 'streaming') this.composer.stopWith(reason, event);\n else if (status !== 'submitted') this.composer.submitWith(reason, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -77,16 +77,18 @@ class SlProse {
|
|
|
77
77
|
resolvedFlow = computed(() => this.flow() ?? this.defaults.flow, /* @ts-ignore */
|
|
78
78
|
...(ngDevMode ? [{ debugName: "resolvedFlow" }] : /* istanbul ignore next */ []));
|
|
79
79
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProse, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlProse, isStandalone: true, selector: "[slProse]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, flow: { classPropertyName: "flow", publicName: "flow", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "prose", "data-part": "root" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-flow": "resolvedFlow()" } }, exportAs: ["slProse"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui=prose]{--_flow: var(--slotted-prose-flow-normal, 1.15em);--_h1: var(--slotted-prose-h1-size, 2em);--_h2: var(--slotted-prose-h2-size, 1.5em);--_h3: var(--slotted-prose-h3-size, 1.25em);--_h4: var(--slotted-prose-h4-size, 1.125em);--_h5: var(--slotted-prose-h5-size, 1em);--_h6: var(--slotted-prose-h6-size, .875em);--_muted: var(--slotted-text-muted, GrayText);--_rule: var(--slotted-border-subtle, ButtonBorder);--_ground: var(--slotted-surface-sunken, Canvas);container-name:slotted-prose;container-type:inline-size;font-family:var( --slotted-prose-font-family, var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif) );font-size:var(--slotted-font-size-lg, 1rem);line-height:var(--slotted-prose-line-height, var(--slotted-line-height-md, 1.5));overflow-wrap:anywhere}[data-ui=prose][data-size=md]{font-size:var(--slotted-font-size-md, .875rem)}[data-ui=prose][data-size=lg]{font-size:var(--slotted-font-size-lg, 1rem)}[data-ui=prose][data-size=xl]{font-size:var(--slotted-font-size-xl, 1.125rem)}[data-ui=prose][data-flow=tight]{--_flow: var(--slotted-prose-flow-tight, .75em)}[data-ui=prose][data-flow=normal]{--_flow: var(--slotted-prose-flow-normal, 1.15em)}[data-ui=prose][data-flow=loose]{--_flow: var(--slotted-prose-flow-loose, 1.6em)}[data-ui=prose] :where(p,ul,ol,dl,pre,table,figure,blockquote,details,hr,h1,h2,h3,h4,h5,h6,[data-part=scroll],[data-part=footnotes]):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-end:0;margin-block-start:var(--_flow)}[data-ui=prose]>:first-child,[data-ui=prose] :where(li,blockquote,td,th,details,figure,[data-part=scroll])>:first-child{margin-block-start:0}[data-ui=prose] :where(h1,h2,h3,h4,h5,h6):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--slotted-text, CanvasText);font-family:var( --slotted-font-family-heading, var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif) );font-weight:var(--slotted-font-weight-semibold, 600);line-height:var(--slotted-line-height-2xl, 1.4);margin-block-start:calc(var(--_flow) * 1.75);scroll-margin-block-start:var(--_flow);text-wrap:balance}[data-ui=prose] :where(h1,h2,h3,h4,h5,h6)+:not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .5)}[data-ui=prose] :where(h1):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h1);line-height:var(--slotted-line-height-3xl, 1.3)}[data-ui=prose] :where(h2):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h2);line-height:var(--slotted-line-height-3xl, 1.3)}[data-ui=prose] :where(h3):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h3)}[data-ui=prose] :where(h4):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h4)}[data-ui=prose] :where(h5):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h5)}[data-ui=prose] :where(h6):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--_muted);font-size:var(--_h6);letter-spacing:var(--slotted-prose-h6-tracking, .06em);text-transform:uppercase}[data-ui=prose] :where(h6):not(:where([data-part=exclude],[data-part=exclude] *)):where(:lang(ar),:lang(fa),:lang(ur)){letter-spacing:normal;text-transform:none}[data-ui=prose] :where(p):not(:where([data-part=exclude],[data-part=exclude] *)){text-wrap:pretty}[data-ui=prose] :where(strong,b):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui=prose] :where(small):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-small-size, .875em)}[data-ui=prose] :where(mark):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--slotted-tone-warning-surface, Mark);border-radius:var(--slotted-radius-xs, 2px);color:var(--slotted-tone-warning-text, MarkText);padding-inline:var(--slotted-prose-mark-inset, .2em)}[data-ui=prose] :where(abbr[title]):not(:where([data-part=exclude],[data-part=exclude] *)){text-decoration-line:underline;text-decoration-style:dotted;text-underline-offset:.2em}[data-ui=prose] :where(sub,sup):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:.75em;line-height:0}[data-ui=prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText));text-decoration-color:var( --slotted-link-underline-color, color-mix(in oklab, currentColor 55%, transparent) );text-decoration-line:underline;text-decoration-thickness:var(--slotted-link-underline-thickness, from-font);text-underline-offset:var(--slotted-link-underline-offset, .15em);transition:color var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)):not([data-disabled]):hover{color:var( --slotted-link-color-hover, color-mix( in oklab, var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText)) 65%, var(--slotted-text, CanvasText) ) );text-decoration-color:currentColor}[data-ui=prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)):focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-link-focus-ring-offset, 1px)}[data-ui=prose] :where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:var(--slotted-prose-list-inset, 1.5em)}[data-ui=prose] :where(li):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .35);padding-inline-start:var(--slotted-prose-marker-gap, .25em)}[data-ui=prose] :where(li):not(:where([data-part=exclude],[data-part=exclude] *))::marker{color:var(--_muted)}[data-ui=prose] :where(li)>:where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .35)}[data-ui=prose] :where(dt):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600);margin-block-start:calc(var(--_flow) * .5)}[data-ui=prose] :where(dd):not(:where([data-part=exclude],[data-part=exclude] *)){margin-inline-start:var(--slotted-prose-list-inset, 1.5em)}[data-ui=prose] :where(blockquote):not(:where([data-part=exclude],[data-part=exclude] *)){border-inline-start:var( --slotted-prose-quote-thickness, var(--slotted-border-width-thick, 2px) ) solid var(--slotted-prose-quote-color, var(--slotted-border-strong, ButtonBorder));color:var(--_muted);margin-inline:0;padding-inline-start:var(--slotted-prose-quote-inset, 1em)}[data-ui=prose] :where(figure):not(:where([data-part=exclude],[data-part=exclude] *)){margin-inline:0}[data-ui=prose] :where(figcaption,caption):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--_muted);font-size:var(--slotted-prose-caption-size, .875em);margin-block-start:calc(var(--_flow) * .5);text-align:start}[data-ui=prose] :where(img,svg,video,canvas):not(:where([data-part=exclude],[data-part=exclude] *)){block-size:auto;border-radius:var(--slotted-prose-media-radius, var(--slotted-radius-md, 6px));display:block;max-inline-size:100%}[data-ui=prose] :where(code,kbd,samp,var):not(:where([data-part=exclude],[data-part=exclude] *)){font-family:var(--slotted-font-family-mono, ui-monospace, monospace);font-size:var(--slotted-prose-code-size, .9em)}[data-ui=prose] :where(code):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--_ground);border:var(--slotted-border-width-thin, 1px) solid var(--_rule);border-radius:var(--slotted-radius-sm, 4px);padding-inline:var(--slotted-prose-code-inset, .3em)}[data-ui=prose] :where(kbd):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--slotted-surface-raised, Canvas);border:var(--slotted-kbd-border-width, var(--slotted-border-width-thin, 1px)) solid var(--slotted-border-strong, ButtonBorder);border-radius:var(--slotted-kbd-radius, var(--slotted-radius-sm, 4px));font-family:var(--slotted-kbd-font-family, var(--slotted-font-family-mono, monospace));font-weight:var(--slotted-kbd-font-weight, var(--slotted-font-weight-medium, 500));padding-inline:var(--slotted-prose-code-inset, .3em)}[data-ui=prose] :where(pre):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--_ground);direction:ltr;border:var(--slotted-border-width-thin, 1px) solid var(--_rule);border-radius:var(--slotted-prose-media-radius, var(--slotted-radius-md, 6px));overflow-x:auto;padding-block:var(--slotted-space-5, .75rem);padding-inline:var(--slotted-space-6, 1rem)}[data-ui=prose] :where(pre)>:where(code):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:transparent;border:0;border-radius:0;font-size:inherit;padding-inline:0}[data-ui=prose] :where(table):not(:where([data-part=exclude],[data-part=exclude] *)){border-collapse:collapse;inline-size:100%;text-align:start}[data-ui=prose] [data-part=scroll]>:where(table):not(:where([data-part=exclude],[data-part=exclude] *)){inline-size:max-content;min-inline-size:100%}[data-ui=prose] :where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){padding-block:var(--slotted-space-4, .5rem);padding-inline:var(--slotted-space-5, .75rem);text-align:start;vertical-align:baseline}[data-ui=prose] :where(th):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui=prose] :where(thead)>:where(tr)>:where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){border-block-end:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-strong, ButtonBorder)}[data-ui=prose] :where(tr+tr)>:where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){border-block-start:var(--slotted-border-width-thin, 1px) solid var(--_rule)}[data-ui=prose] :where(hr):not(:where([data-part=exclude],[data-part=exclude] *)){border:0;border-block-start:var(--slotted-divider-thickness, var(--slotted-border-width-thin, 1px)) solid var(--slotted-divider-color, var(--slotted-border-subtle, ButtonBorder));margin-block-start:calc(var(--_flow) * 1.75)}[data-ui=prose] :where(summary):not(:where([data-part=exclude],[data-part=exclude] *)){cursor:pointer;font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=prose] :where(summary):not(:where([data-part=exclude],[data-part=exclude] *)):focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui=prose] [data-part=lead]+:not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * 1.35)}[data-ui=prose] [data-part=lead]{color:var(--_muted);font-size:var(--slotted-prose-lead-size, 1.125em);line-height:var(--slotted-prose-lead-line-height, var(--slotted-line-height-lg, 1.5));text-wrap:pretty}[data-ui=prose] [data-part=anchor]{align-items:center;color:var(--_muted);display:inline-flex;justify-content:center;margin-inline-start:var(--slotted-prose-anchor-gap, .35em);min-block-size:var(--slotted-target-min, 24px);min-inline-size:var(--slotted-target-min, 24px);opacity:0;text-decoration-line:none;transition:opacity var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=prose] :where(h1,h2,h3,h4,h5,h6):hover>[data-part=anchor]:not([data-disabled]),[data-ui=prose] [data-part=anchor]:focus-visible{opacity:1}[data-ui=prose] [data-part=anchor]:focus-visible{border-radius:var(--slotted-radius-sm, 4px);outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui=prose] [data-part=scroll]{max-inline-size:100%;overflow-x:auto;overscroll-behavior-inline:contain}[data-ui=prose] [data-part=scroll][tabindex]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui=prose] [data-part=footnotes]{border-block-start:var(--slotted-border-width-thin, 1px) solid var(--_rule);color:var(--_muted);font-size:var(--slotted-prose-footnotes-size, .875em);margin-block-start:calc(var(--_flow) * 2);padding-block-start:var(--_flow)}[data-ui=prose] [data-part=exclude]{font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--slotted-font-size-md, .875rem);line-height:var(--slotted-line-height-md, 1.5);overflow-wrap:normal;text-wrap:wrap}@container slotted-prose (max-width: 34rem){[data-ui=prose] :where(h1):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-h1-size-narrow, 1.6em)}[data-ui=prose] :where(h2):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-h2-size-narrow, 1.35em)}}@container slotted-prose (max-width: 22rem){[data-ui=prose] :where(blockquote):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:calc(var(--slotted-prose-quote-inset, 1em) / 2)}[data-ui=prose] :where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:var(--slotted-prose-list-inset-narrow, 1.15em)}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
80
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlProse, isStandalone: true, selector: "[slProse]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, flow: { classPropertyName: "flow", publicName: "flow", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "prose", "data-ui-prose": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-flow": "resolvedFlow()" } }, exportAs: ["slProse"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui-prose]{--_flow: var(--slotted-prose-flow-normal, 1.15em);--_h1: var(--slotted-prose-h1-size, 2em);--_h2: var(--slotted-prose-h2-size, 1.5em);--_h3: var(--slotted-prose-h3-size, 1.25em);--_h4: var(--slotted-prose-h4-size, 1.125em);--_h5: var(--slotted-prose-h5-size, 1em);--_h6: var(--slotted-prose-h6-size, .875em);--_muted: var(--slotted-text-muted, GrayText);--_rule: var(--slotted-border-subtle, ButtonBorder);--_ground: var(--slotted-surface-sunken, Canvas);container-name:slotted-prose;container-type:inline-size;font-family:var( --slotted-prose-font-family, var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif) );font-size:var(--slotted-font-size-lg, 1rem);line-height:var(--slotted-prose-line-height, var(--slotted-line-height-md, 1.5));overflow-wrap:anywhere}[data-ui-prose][data-size=md]{font-size:var(--slotted-font-size-md, .875rem)}[data-ui-prose][data-size=lg]{font-size:var(--slotted-font-size-lg, 1rem)}[data-ui-prose][data-size=xl]{font-size:var(--slotted-font-size-xl, 1.125rem)}[data-ui-prose][data-flow=tight]{--_flow: var(--slotted-prose-flow-tight, .75em)}[data-ui-prose][data-flow=normal]{--_flow: var(--slotted-prose-flow-normal, 1.15em)}[data-ui-prose][data-flow=loose]{--_flow: var(--slotted-prose-flow-loose, 1.6em)}[data-ui-prose] :where(p,ul,ol,dl,pre,table,figure,blockquote,details,hr,h1,h2,h3,h4,h5,h6,[data-part-scroll],[data-part=footnotes]):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-end:0;margin-block-start:var(--_flow)}[data-ui-prose]>:first-child,[data-ui-prose] :where(li,blockquote,td,th,details,figure,[data-part-scroll])>:first-child{margin-block-start:0}[data-ui-prose] :where(h1,h2,h3,h4,h5,h6):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--slotted-text, CanvasText);font-family:var( --slotted-font-family-heading, var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif) );font-weight:var(--slotted-font-weight-semibold, 600);line-height:var(--slotted-line-height-2xl, 1.4);margin-block-start:calc(var(--_flow) * 1.75);scroll-margin-block-start:var(--_flow);text-wrap:balance}[data-ui-prose] :where(h1,h2,h3,h4,h5,h6)+:not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .5)}[data-ui-prose] :where(h1):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h1);line-height:var(--slotted-line-height-3xl, 1.3)}[data-ui-prose] :where(h2):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h2);line-height:var(--slotted-line-height-3xl, 1.3)}[data-ui-prose] :where(h3):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h3)}[data-ui-prose] :where(h4):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h4)}[data-ui-prose] :where(h5):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h5)}[data-ui-prose] :where(h6):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--_muted);font-size:var(--_h6);letter-spacing:var(--slotted-prose-h6-tracking, .06em);text-transform:uppercase}[data-ui-prose] :where(h6):not(:where([data-part=exclude],[data-part=exclude] *)):where(:lang(ar),:lang(fa),:lang(ur)){letter-spacing:normal;text-transform:none}[data-ui-prose] :where(p):not(:where([data-part=exclude],[data-part=exclude] *)){text-wrap:pretty}[data-ui-prose] :where(strong,b):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui-prose] :where(small):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-small-size, .875em)}[data-ui-prose] :where(mark):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--slotted-tone-warning-surface, Mark);border-radius:var(--slotted-radius-xs, 2px);color:var(--slotted-tone-warning-text, MarkText);padding-inline:var(--slotted-prose-mark-inset, .2em)}[data-ui-prose] :where(abbr[title]):not(:where([data-part=exclude],[data-part=exclude] *)){text-decoration-line:underline;text-decoration-style:dotted;text-underline-offset:.2em}[data-ui-prose] :where(sub,sup):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:.75em;line-height:0}[data-ui-prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText));text-decoration-color:var( --slotted-link-underline-color, color-mix(in oklab, currentColor 55%, transparent) );text-decoration-line:underline;text-decoration-thickness:var(--slotted-link-underline-thickness, from-font);text-underline-offset:var(--slotted-link-underline-offset, .15em);transition:color var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)):not([data-disabled]):hover{color:var( --slotted-link-color-hover, color-mix( in oklab, var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText)) 65%, var(--slotted-text, CanvasText) ) );text-decoration-color:currentColor}[data-ui-prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)):focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-link-focus-ring-offset, 1px)}[data-ui-prose] :where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:var(--slotted-prose-list-inset, 1.5em)}[data-ui-prose] :where(li):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .35);padding-inline-start:var(--slotted-prose-marker-gap, .25em)}[data-ui-prose] :where(li):not(:where([data-part=exclude],[data-part=exclude] *))::marker{color:var(--_muted)}[data-ui-prose] :where(li)>:where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .35)}[data-ui-prose] :where(dt):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600);margin-block-start:calc(var(--_flow) * .5)}[data-ui-prose] :where(dd):not(:where([data-part=exclude],[data-part=exclude] *)){margin-inline-start:var(--slotted-prose-list-inset, 1.5em)}[data-ui-prose] :where(blockquote):not(:where([data-part=exclude],[data-part=exclude] *)){border-inline-start:var( --slotted-prose-quote-thickness, var(--slotted-border-width-thick, 2px) ) solid var(--slotted-prose-quote-color, var(--slotted-border-strong, ButtonBorder));color:var(--_muted);margin-inline:0;padding-inline-start:var(--slotted-prose-quote-inset, 1em)}[data-ui-prose] :where(figure):not(:where([data-part=exclude],[data-part=exclude] *)){margin-inline:0}[data-ui-prose] :where(figcaption,caption):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--_muted);font-size:var(--slotted-prose-caption-size, .875em);margin-block-start:calc(var(--_flow) * .5);text-align:start}[data-ui-prose] :where(img,svg,video,canvas):not(:where([data-part=exclude],[data-part=exclude] *)){block-size:auto;border-radius:var(--slotted-prose-media-radius, var(--slotted-radius-md, 6px));display:block;max-inline-size:100%}[data-ui-prose] :where(code,kbd,samp,var):not(:where([data-part=exclude],[data-part=exclude] *)){font-family:var(--slotted-font-family-mono, ui-monospace, monospace);font-size:var(--slotted-prose-code-size, .9em)}[data-ui-prose] :where(code):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--_ground);border:var(--slotted-border-width-thin, 1px) solid var(--_rule);border-radius:var(--slotted-radius-sm, 4px);padding-inline:var(--slotted-prose-code-inset, .3em)}[data-ui-prose] :where(kbd):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--slotted-surface-raised, Canvas);border:var(--slotted-kbd-border-width, var(--slotted-border-width-thin, 1px)) solid var(--slotted-border-strong, ButtonBorder);border-radius:var(--slotted-kbd-radius, var(--slotted-radius-sm, 4px));font-family:var(--slotted-kbd-font-family, var(--slotted-font-family-mono, monospace));font-weight:var(--slotted-kbd-font-weight, var(--slotted-font-weight-medium, 500));padding-inline:var(--slotted-prose-code-inset, .3em)}[data-ui-prose] :where(pre):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--_ground);direction:ltr;border:var(--slotted-border-width-thin, 1px) solid var(--_rule);border-radius:var(--slotted-prose-media-radius, var(--slotted-radius-md, 6px));overflow-x:auto;padding-block:var(--slotted-space-5, .75rem);padding-inline:var(--slotted-space-6, 1rem)}[data-ui-prose] :where(pre)>:where(code):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:transparent;border:0;border-radius:0;font-size:inherit;padding-inline:0}[data-ui-prose] :where(table):not(:where([data-part=exclude],[data-part=exclude] *)){border-collapse:collapse;inline-size:100%;text-align:start}[data-ui-prose] [data-part-scroll]>:where(table):not(:where([data-part=exclude],[data-part=exclude] *)){inline-size:max-content;min-inline-size:100%}[data-ui-prose] :where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){padding-block:var(--slotted-space-4, .5rem);padding-inline:var(--slotted-space-5, .75rem);text-align:start;vertical-align:baseline}[data-ui-prose] :where(th):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui-prose] :where(thead)>:where(tr)>:where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){border-block-end:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-strong, ButtonBorder)}[data-ui-prose] :where(tr+tr)>:where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){border-block-start:var(--slotted-border-width-thin, 1px) solid var(--_rule)}[data-ui-prose] :where(hr):not(:where([data-part=exclude],[data-part=exclude] *)){border:0;border-block-start:var(--slotted-divider-thickness, var(--slotted-border-width-thin, 1px)) solid var(--slotted-divider-color, var(--slotted-border-subtle, ButtonBorder));margin-block-start:calc(var(--_flow) * 1.75)}[data-ui-prose] :where(summary):not(:where([data-part=exclude],[data-part=exclude] *)){cursor:pointer;font-weight:var(--slotted-font-weight-medium, 500)}[data-ui-prose] :where(summary):not(:where([data-part=exclude],[data-part=exclude] *)):focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui-prose] [data-part=lead]+:not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * 1.35)}[data-ui-prose] [data-part=lead]{color:var(--_muted);font-size:var(--slotted-prose-lead-size, 1.125em);line-height:var(--slotted-prose-lead-line-height, var(--slotted-line-height-lg, 1.5));text-wrap:pretty}[data-ui-prose] [data-part-anchor]{align-items:center;color:var(--_muted);display:inline-flex;justify-content:center;margin-inline-start:var(--slotted-prose-anchor-gap, .35em);min-block-size:var(--slotted-target-min, 24px);min-inline-size:var(--slotted-target-min, 24px);opacity:0;text-decoration-line:none;transition:opacity var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-prose] :where(h1,h2,h3,h4,h5,h6):hover>[data-part-anchor]:not([data-disabled]),[data-ui-prose] [data-part-anchor]:focus-visible{opacity:1}[data-ui-prose] [data-part-anchor]:focus-visible{border-radius:var(--slotted-radius-sm, 4px);outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui-prose] [data-part-scroll]{max-inline-size:100%;overflow-x:auto;overscroll-behavior-inline:contain}[data-ui-prose] [data-part-scroll][tabindex]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui-prose] [data-part=footnotes]{border-block-start:var(--slotted-border-width-thin, 1px) solid var(--_rule);color:var(--_muted);font-size:var(--slotted-prose-footnotes-size, .875em);margin-block-start:calc(var(--_flow) * 2);padding-block-start:var(--_flow)}[data-ui-prose] [data-part=exclude]{font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--slotted-font-size-md, .875rem);line-height:var(--slotted-line-height-md, 1.5);overflow-wrap:normal;text-wrap:wrap}@container slotted-prose (max-width: 34rem){[data-ui-prose] :where(h1):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-h1-size-narrow, 1.6em)}[data-ui-prose] :where(h2):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-h2-size-narrow, 1.35em)}}@container slotted-prose (max-width: 22rem){[data-ui-prose] :where(blockquote):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:calc(var(--slotted-prose-quote-inset, 1em) / 2)}[data-ui-prose] :where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:var(--slotted-prose-list-inset-narrow, 1.15em)}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
81
81
|
}
|
|
82
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProse, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
84
|
args: [{ selector: '[slProse]', standalone: true, exportAs: 'slProse', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
85
85
|
'data-ui': 'prose',
|
|
86
|
+
'data-ui-prose': '',
|
|
86
87
|
'data-part': 'root',
|
|
88
|
+
'data-part-root': '',
|
|
87
89
|
'[attr.data-size]': 'resolvedSize()',
|
|
88
90
|
'[attr.data-flow]': 'resolvedFlow()',
|
|
89
|
-
}, styles: ["@layer slotted.components{[data-ui=prose]{--_flow: var(--slotted-prose-flow-normal, 1.15em);--_h1: var(--slotted-prose-h1-size, 2em);--_h2: var(--slotted-prose-h2-size, 1.5em);--_h3: var(--slotted-prose-h3-size, 1.25em);--_h4: var(--slotted-prose-h4-size, 1.125em);--_h5: var(--slotted-prose-h5-size, 1em);--_h6: var(--slotted-prose-h6-size, .875em);--_muted: var(--slotted-text-muted, GrayText);--_rule: var(--slotted-border-subtle, ButtonBorder);--_ground: var(--slotted-surface-sunken, Canvas);container-name:slotted-prose;container-type:inline-size;font-family:var( --slotted-prose-font-family, var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif) );font-size:var(--slotted-font-size-lg, 1rem);line-height:var(--slotted-prose-line-height, var(--slotted-line-height-md, 1.5));overflow-wrap:anywhere}[data-ui=prose][data-size=md]{font-size:var(--slotted-font-size-md, .875rem)}[data-ui=prose][data-size=lg]{font-size:var(--slotted-font-size-lg, 1rem)}[data-ui=prose][data-size=xl]{font-size:var(--slotted-font-size-xl, 1.125rem)}[data-ui=prose][data-flow=tight]{--_flow: var(--slotted-prose-flow-tight, .75em)}[data-ui=prose][data-flow=normal]{--_flow: var(--slotted-prose-flow-normal, 1.15em)}[data-ui=prose][data-flow=loose]{--_flow: var(--slotted-prose-flow-loose, 1.6em)}[data-ui=prose] :where(p,ul,ol,dl,pre,table,figure,blockquote,details,hr,h1,h2,h3,h4,h5,h6,[data-part=scroll],[data-part=footnotes]):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-end:0;margin-block-start:var(--_flow)}[data-ui=prose]>:first-child,[data-ui=prose] :where(li,blockquote,td,th,details,figure,[data-part=scroll])>:first-child{margin-block-start:0}[data-ui=prose] :where(h1,h2,h3,h4,h5,h6):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--slotted-text, CanvasText);font-family:var( --slotted-font-family-heading, var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif) );font-weight:var(--slotted-font-weight-semibold, 600);line-height:var(--slotted-line-height-2xl, 1.4);margin-block-start:calc(var(--_flow) * 1.75);scroll-margin-block-start:var(--_flow);text-wrap:balance}[data-ui=prose] :where(h1,h2,h3,h4,h5,h6)+:not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .5)}[data-ui=prose] :where(h1):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h1);line-height:var(--slotted-line-height-3xl, 1.3)}[data-ui=prose] :where(h2):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h2);line-height:var(--slotted-line-height-3xl, 1.3)}[data-ui=prose] :where(h3):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h3)}[data-ui=prose] :where(h4):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h4)}[data-ui=prose] :where(h5):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h5)}[data-ui=prose] :where(h6):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--_muted);font-size:var(--_h6);letter-spacing:var(--slotted-prose-h6-tracking, .06em);text-transform:uppercase}[data-ui=prose] :where(h6):not(:where([data-part=exclude],[data-part=exclude] *)):where(:lang(ar),:lang(fa),:lang(ur)){letter-spacing:normal;text-transform:none}[data-ui=prose] :where(p):not(:where([data-part=exclude],[data-part=exclude] *)){text-wrap:pretty}[data-ui=prose] :where(strong,b):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui=prose] :where(small):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-small-size, .875em)}[data-ui=prose] :where(mark):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--slotted-tone-warning-surface, Mark);border-radius:var(--slotted-radius-xs, 2px);color:var(--slotted-tone-warning-text, MarkText);padding-inline:var(--slotted-prose-mark-inset, .2em)}[data-ui=prose] :where(abbr[title]):not(:where([data-part=exclude],[data-part=exclude] *)){text-decoration-line:underline;text-decoration-style:dotted;text-underline-offset:.2em}[data-ui=prose] :where(sub,sup):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:.75em;line-height:0}[data-ui=prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText));text-decoration-color:var( --slotted-link-underline-color, color-mix(in oklab, currentColor 55%, transparent) );text-decoration-line:underline;text-decoration-thickness:var(--slotted-link-underline-thickness, from-font);text-underline-offset:var(--slotted-link-underline-offset, .15em);transition:color var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)):not([data-disabled]):hover{color:var( --slotted-link-color-hover, color-mix( in oklab, var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText)) 65%, var(--slotted-text, CanvasText) ) );text-decoration-color:currentColor}[data-ui=prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)):focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-link-focus-ring-offset, 1px)}[data-ui=prose] :where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:var(--slotted-prose-list-inset, 1.5em)}[data-ui=prose] :where(li):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .35);padding-inline-start:var(--slotted-prose-marker-gap, .25em)}[data-ui=prose] :where(li):not(:where([data-part=exclude],[data-part=exclude] *))::marker{color:var(--_muted)}[data-ui=prose] :where(li)>:where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .35)}[data-ui=prose] :where(dt):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600);margin-block-start:calc(var(--_flow) * .5)}[data-ui=prose] :where(dd):not(:where([data-part=exclude],[data-part=exclude] *)){margin-inline-start:var(--slotted-prose-list-inset, 1.5em)}[data-ui=prose] :where(blockquote):not(:where([data-part=exclude],[data-part=exclude] *)){border-inline-start:var( --slotted-prose-quote-thickness, var(--slotted-border-width-thick, 2px) ) solid var(--slotted-prose-quote-color, var(--slotted-border-strong, ButtonBorder));color:var(--_muted);margin-inline:0;padding-inline-start:var(--slotted-prose-quote-inset, 1em)}[data-ui=prose] :where(figure):not(:where([data-part=exclude],[data-part=exclude] *)){margin-inline:0}[data-ui=prose] :where(figcaption,caption):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--_muted);font-size:var(--slotted-prose-caption-size, .875em);margin-block-start:calc(var(--_flow) * .5);text-align:start}[data-ui=prose] :where(img,svg,video,canvas):not(:where([data-part=exclude],[data-part=exclude] *)){block-size:auto;border-radius:var(--slotted-prose-media-radius, var(--slotted-radius-md, 6px));display:block;max-inline-size:100%}[data-ui=prose] :where(code,kbd,samp,var):not(:where([data-part=exclude],[data-part=exclude] *)){font-family:var(--slotted-font-family-mono, ui-monospace, monospace);font-size:var(--slotted-prose-code-size, .9em)}[data-ui=prose] :where(code):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--_ground);border:var(--slotted-border-width-thin, 1px) solid var(--_rule);border-radius:var(--slotted-radius-sm, 4px);padding-inline:var(--slotted-prose-code-inset, .3em)}[data-ui=prose] :where(kbd):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--slotted-surface-raised, Canvas);border:var(--slotted-kbd-border-width, var(--slotted-border-width-thin, 1px)) solid var(--slotted-border-strong, ButtonBorder);border-radius:var(--slotted-kbd-radius, var(--slotted-radius-sm, 4px));font-family:var(--slotted-kbd-font-family, var(--slotted-font-family-mono, monospace));font-weight:var(--slotted-kbd-font-weight, var(--slotted-font-weight-medium, 500));padding-inline:var(--slotted-prose-code-inset, .3em)}[data-ui=prose] :where(pre):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--_ground);direction:ltr;border:var(--slotted-border-width-thin, 1px) solid var(--_rule);border-radius:var(--slotted-prose-media-radius, var(--slotted-radius-md, 6px));overflow-x:auto;padding-block:var(--slotted-space-5, .75rem);padding-inline:var(--slotted-space-6, 1rem)}[data-ui=prose] :where(pre)>:where(code):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:transparent;border:0;border-radius:0;font-size:inherit;padding-inline:0}[data-ui=prose] :where(table):not(:where([data-part=exclude],[data-part=exclude] *)){border-collapse:collapse;inline-size:100%;text-align:start}[data-ui=prose] [data-part=scroll]>:where(table):not(:where([data-part=exclude],[data-part=exclude] *)){inline-size:max-content;min-inline-size:100%}[data-ui=prose] :where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){padding-block:var(--slotted-space-4, .5rem);padding-inline:var(--slotted-space-5, .75rem);text-align:start;vertical-align:baseline}[data-ui=prose] :where(th):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui=prose] :where(thead)>:where(tr)>:where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){border-block-end:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-strong, ButtonBorder)}[data-ui=prose] :where(tr+tr)>:where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){border-block-start:var(--slotted-border-width-thin, 1px) solid var(--_rule)}[data-ui=prose] :where(hr):not(:where([data-part=exclude],[data-part=exclude] *)){border:0;border-block-start:var(--slotted-divider-thickness, var(--slotted-border-width-thin, 1px)) solid var(--slotted-divider-color, var(--slotted-border-subtle, ButtonBorder));margin-block-start:calc(var(--_flow) * 1.75)}[data-ui=prose] :where(summary):not(:where([data-part=exclude],[data-part=exclude] *)){cursor:pointer;font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=prose] :where(summary):not(:where([data-part=exclude],[data-part=exclude] *)):focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui=prose] [data-part=lead]+:not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * 1.35)}[data-ui=prose] [data-part=lead]{color:var(--_muted);font-size:var(--slotted-prose-lead-size, 1.125em);line-height:var(--slotted-prose-lead-line-height, var(--slotted-line-height-lg, 1.5));text-wrap:pretty}[data-ui=prose] [data-part=anchor]{align-items:center;color:var(--_muted);display:inline-flex;justify-content:center;margin-inline-start:var(--slotted-prose-anchor-gap, .35em);min-block-size:var(--slotted-target-min, 24px);min-inline-size:var(--slotted-target-min, 24px);opacity:0;text-decoration-line:none;transition:opacity var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=prose] :where(h1,h2,h3,h4,h5,h6):hover>[data-part=anchor]:not([data-disabled]),[data-ui=prose] [data-part=anchor]:focus-visible{opacity:1}[data-ui=prose] [data-part=anchor]:focus-visible{border-radius:var(--slotted-radius-sm, 4px);outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui=prose] [data-part=scroll]{max-inline-size:100%;overflow-x:auto;overscroll-behavior-inline:contain}[data-ui=prose] [data-part=scroll][tabindex]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui=prose] [data-part=footnotes]{border-block-start:var(--slotted-border-width-thin, 1px) solid var(--_rule);color:var(--_muted);font-size:var(--slotted-prose-footnotes-size, .875em);margin-block-start:calc(var(--_flow) * 2);padding-block-start:var(--_flow)}[data-ui=prose] [data-part=exclude]{font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--slotted-font-size-md, .875rem);line-height:var(--slotted-line-height-md, 1.5);overflow-wrap:normal;text-wrap:wrap}@container slotted-prose (max-width: 34rem){[data-ui=prose] :where(h1):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-h1-size-narrow, 1.6em)}[data-ui=prose] :where(h2):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-h2-size-narrow, 1.35em)}}@container slotted-prose (max-width: 22rem){[data-ui=prose] :where(blockquote):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:calc(var(--slotted-prose-quote-inset, 1em) / 2)}[data-ui=prose] :where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:var(--slotted-prose-list-inset-narrow, 1.15em)}}}\n"] }]
|
|
91
|
+
}, styles: ["@layer slotted.components{[data-ui-prose]{--_flow: var(--slotted-prose-flow-normal, 1.15em);--_h1: var(--slotted-prose-h1-size, 2em);--_h2: var(--slotted-prose-h2-size, 1.5em);--_h3: var(--slotted-prose-h3-size, 1.25em);--_h4: var(--slotted-prose-h4-size, 1.125em);--_h5: var(--slotted-prose-h5-size, 1em);--_h6: var(--slotted-prose-h6-size, .875em);--_muted: var(--slotted-text-muted, GrayText);--_rule: var(--slotted-border-subtle, ButtonBorder);--_ground: var(--slotted-surface-sunken, Canvas);container-name:slotted-prose;container-type:inline-size;font-family:var( --slotted-prose-font-family, var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif) );font-size:var(--slotted-font-size-lg, 1rem);line-height:var(--slotted-prose-line-height, var(--slotted-line-height-md, 1.5));overflow-wrap:anywhere}[data-ui-prose][data-size=md]{font-size:var(--slotted-font-size-md, .875rem)}[data-ui-prose][data-size=lg]{font-size:var(--slotted-font-size-lg, 1rem)}[data-ui-prose][data-size=xl]{font-size:var(--slotted-font-size-xl, 1.125rem)}[data-ui-prose][data-flow=tight]{--_flow: var(--slotted-prose-flow-tight, .75em)}[data-ui-prose][data-flow=normal]{--_flow: var(--slotted-prose-flow-normal, 1.15em)}[data-ui-prose][data-flow=loose]{--_flow: var(--slotted-prose-flow-loose, 1.6em)}[data-ui-prose] :where(p,ul,ol,dl,pre,table,figure,blockquote,details,hr,h1,h2,h3,h4,h5,h6,[data-part-scroll],[data-part=footnotes]):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-end:0;margin-block-start:var(--_flow)}[data-ui-prose]>:first-child,[data-ui-prose] :where(li,blockquote,td,th,details,figure,[data-part-scroll])>:first-child{margin-block-start:0}[data-ui-prose] :where(h1,h2,h3,h4,h5,h6):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--slotted-text, CanvasText);font-family:var( --slotted-font-family-heading, var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif) );font-weight:var(--slotted-font-weight-semibold, 600);line-height:var(--slotted-line-height-2xl, 1.4);margin-block-start:calc(var(--_flow) * 1.75);scroll-margin-block-start:var(--_flow);text-wrap:balance}[data-ui-prose] :where(h1,h2,h3,h4,h5,h6)+:not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .5)}[data-ui-prose] :where(h1):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h1);line-height:var(--slotted-line-height-3xl, 1.3)}[data-ui-prose] :where(h2):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h2);line-height:var(--slotted-line-height-3xl, 1.3)}[data-ui-prose] :where(h3):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h3)}[data-ui-prose] :where(h4):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h4)}[data-ui-prose] :where(h5):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--_h5)}[data-ui-prose] :where(h6):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--_muted);font-size:var(--_h6);letter-spacing:var(--slotted-prose-h6-tracking, .06em);text-transform:uppercase}[data-ui-prose] :where(h6):not(:where([data-part=exclude],[data-part=exclude] *)):where(:lang(ar),:lang(fa),:lang(ur)){letter-spacing:normal;text-transform:none}[data-ui-prose] :where(p):not(:where([data-part=exclude],[data-part=exclude] *)){text-wrap:pretty}[data-ui-prose] :where(strong,b):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui-prose] :where(small):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-small-size, .875em)}[data-ui-prose] :where(mark):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--slotted-tone-warning-surface, Mark);border-radius:var(--slotted-radius-xs, 2px);color:var(--slotted-tone-warning-text, MarkText);padding-inline:var(--slotted-prose-mark-inset, .2em)}[data-ui-prose] :where(abbr[title]):not(:where([data-part=exclude],[data-part=exclude] *)){text-decoration-line:underline;text-decoration-style:dotted;text-underline-offset:.2em}[data-ui-prose] :where(sub,sup):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:.75em;line-height:0}[data-ui-prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText));text-decoration-color:var( --slotted-link-underline-color, color-mix(in oklab, currentColor 55%, transparent) );text-decoration-line:underline;text-decoration-thickness:var(--slotted-link-underline-thickness, from-font);text-underline-offset:var(--slotted-link-underline-offset, .15em);transition:color var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)):not([data-disabled]):hover{color:var( --slotted-link-color-hover, color-mix( in oklab, var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText)) 65%, var(--slotted-text, CanvasText) ) );text-decoration-color:currentColor}[data-ui-prose] :where(a[href]):not(:where([data-part=exclude],[data-part=exclude] *)):focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-link-focus-ring-offset, 1px)}[data-ui-prose] :where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:var(--slotted-prose-list-inset, 1.5em)}[data-ui-prose] :where(li):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .35);padding-inline-start:var(--slotted-prose-marker-gap, .25em)}[data-ui-prose] :where(li):not(:where([data-part=exclude],[data-part=exclude] *))::marker{color:var(--_muted)}[data-ui-prose] :where(li)>:where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * .35)}[data-ui-prose] :where(dt):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600);margin-block-start:calc(var(--_flow) * .5)}[data-ui-prose] :where(dd):not(:where([data-part=exclude],[data-part=exclude] *)){margin-inline-start:var(--slotted-prose-list-inset, 1.5em)}[data-ui-prose] :where(blockquote):not(:where([data-part=exclude],[data-part=exclude] *)){border-inline-start:var( --slotted-prose-quote-thickness, var(--slotted-border-width-thick, 2px) ) solid var(--slotted-prose-quote-color, var(--slotted-border-strong, ButtonBorder));color:var(--_muted);margin-inline:0;padding-inline-start:var(--slotted-prose-quote-inset, 1em)}[data-ui-prose] :where(figure):not(:where([data-part=exclude],[data-part=exclude] *)){margin-inline:0}[data-ui-prose] :where(figcaption,caption):not(:where([data-part=exclude],[data-part=exclude] *)){color:var(--_muted);font-size:var(--slotted-prose-caption-size, .875em);margin-block-start:calc(var(--_flow) * .5);text-align:start}[data-ui-prose] :where(img,svg,video,canvas):not(:where([data-part=exclude],[data-part=exclude] *)){block-size:auto;border-radius:var(--slotted-prose-media-radius, var(--slotted-radius-md, 6px));display:block;max-inline-size:100%}[data-ui-prose] :where(code,kbd,samp,var):not(:where([data-part=exclude],[data-part=exclude] *)){font-family:var(--slotted-font-family-mono, ui-monospace, monospace);font-size:var(--slotted-prose-code-size, .9em)}[data-ui-prose] :where(code):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--_ground);border:var(--slotted-border-width-thin, 1px) solid var(--_rule);border-radius:var(--slotted-radius-sm, 4px);padding-inline:var(--slotted-prose-code-inset, .3em)}[data-ui-prose] :where(kbd):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--slotted-surface-raised, Canvas);border:var(--slotted-kbd-border-width, var(--slotted-border-width-thin, 1px)) solid var(--slotted-border-strong, ButtonBorder);border-radius:var(--slotted-kbd-radius, var(--slotted-radius-sm, 4px));font-family:var(--slotted-kbd-font-family, var(--slotted-font-family-mono, monospace));font-weight:var(--slotted-kbd-font-weight, var(--slotted-font-weight-medium, 500));padding-inline:var(--slotted-prose-code-inset, .3em)}[data-ui-prose] :where(pre):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:var(--_ground);direction:ltr;border:var(--slotted-border-width-thin, 1px) solid var(--_rule);border-radius:var(--slotted-prose-media-radius, var(--slotted-radius-md, 6px));overflow-x:auto;padding-block:var(--slotted-space-5, .75rem);padding-inline:var(--slotted-space-6, 1rem)}[data-ui-prose] :where(pre)>:where(code):not(:where([data-part=exclude],[data-part=exclude] *)){background-color:transparent;border:0;border-radius:0;font-size:inherit;padding-inline:0}[data-ui-prose] :where(table):not(:where([data-part=exclude],[data-part=exclude] *)){border-collapse:collapse;inline-size:100%;text-align:start}[data-ui-prose] [data-part-scroll]>:where(table):not(:where([data-part=exclude],[data-part=exclude] *)){inline-size:max-content;min-inline-size:100%}[data-ui-prose] :where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){padding-block:var(--slotted-space-4, .5rem);padding-inline:var(--slotted-space-5, .75rem);text-align:start;vertical-align:baseline}[data-ui-prose] :where(th):not(:where([data-part=exclude],[data-part=exclude] *)){font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui-prose] :where(thead)>:where(tr)>:where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){border-block-end:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-strong, ButtonBorder)}[data-ui-prose] :where(tr+tr)>:where(th,td):not(:where([data-part=exclude],[data-part=exclude] *)){border-block-start:var(--slotted-border-width-thin, 1px) solid var(--_rule)}[data-ui-prose] :where(hr):not(:where([data-part=exclude],[data-part=exclude] *)){border:0;border-block-start:var(--slotted-divider-thickness, var(--slotted-border-width-thin, 1px)) solid var(--slotted-divider-color, var(--slotted-border-subtle, ButtonBorder));margin-block-start:calc(var(--_flow) * 1.75)}[data-ui-prose] :where(summary):not(:where([data-part=exclude],[data-part=exclude] *)){cursor:pointer;font-weight:var(--slotted-font-weight-medium, 500)}[data-ui-prose] :where(summary):not(:where([data-part=exclude],[data-part=exclude] *)):focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui-prose] [data-part=lead]+:not(:where([data-part=exclude],[data-part=exclude] *)){margin-block-start:calc(var(--_flow) * 1.35)}[data-ui-prose] [data-part=lead]{color:var(--_muted);font-size:var(--slotted-prose-lead-size, 1.125em);line-height:var(--slotted-prose-lead-line-height, var(--slotted-line-height-lg, 1.5));text-wrap:pretty}[data-ui-prose] [data-part-anchor]{align-items:center;color:var(--_muted);display:inline-flex;justify-content:center;margin-inline-start:var(--slotted-prose-anchor-gap, .35em);min-block-size:var(--slotted-target-min, 24px);min-inline-size:var(--slotted-target-min, 24px);opacity:0;text-decoration-line:none;transition:opacity var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-prose] :where(h1,h2,h3,h4,h5,h6):hover>[data-part-anchor]:not([data-disabled]),[data-ui-prose] [data-part-anchor]:focus-visible{opacity:1}[data-ui-prose] [data-part-anchor]:focus-visible{border-radius:var(--slotted-radius-sm, 4px);outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui-prose] [data-part-scroll]{max-inline-size:100%;overflow-x:auto;overscroll-behavior-inline:contain}[data-ui-prose] [data-part-scroll][tabindex]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-prose-focus-ring-offset, 2px)}[data-ui-prose] [data-part=footnotes]{border-block-start:var(--slotted-border-width-thin, 1px) solid var(--_rule);color:var(--_muted);font-size:var(--slotted-prose-footnotes-size, .875em);margin-block-start:calc(var(--_flow) * 2);padding-block-start:var(--_flow)}[data-ui-prose] [data-part=exclude]{font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--slotted-font-size-md, .875rem);line-height:var(--slotted-line-height-md, 1.5);overflow-wrap:normal;text-wrap:wrap}@container slotted-prose (max-width: 34rem){[data-ui-prose] :where(h1):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-h1-size-narrow, 1.6em)}[data-ui-prose] :where(h2):not(:where([data-part=exclude],[data-part=exclude] *)){font-size:var(--slotted-prose-h2-size-narrow, 1.35em)}}@container slotted-prose (max-width: 22rem){[data-ui-prose] :where(blockquote):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:calc(var(--slotted-prose-quote-inset, 1em) / 2)}[data-ui-prose] :where(ul,ol):not(:where([data-part=exclude],[data-part=exclude] *)){padding-inline-start:var(--slotted-prose-list-inset-narrow, 1.15em)}}}\n"] }]
|
|
90
92
|
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], flow: [{ type: i0.Input, args: [{ isSignal: true, alias: "flow", required: false }] }] } });
|
|
91
93
|
|
|
92
94
|
/**
|
|
@@ -96,7 +98,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
96
98
|
*/
|
|
97
99
|
class SlProseLead {
|
|
98
100
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseLead, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
99
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlProseLead, isStandalone: true, selector: "[slProseLead]", host: { attributes: { "data-part": "lead" } }, exportAs: ["slProseLead"], ngImport: i0 });
|
|
101
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlProseLead, isStandalone: true, selector: "[slProseLead]", host: { attributes: { "data-part": "lead", "data-part-lead": "" } }, exportAs: ["slProseLead"], ngImport: i0 });
|
|
100
102
|
}
|
|
101
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseLead, decorators: [{
|
|
102
104
|
type: Directive,
|
|
@@ -104,7 +106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
104
106
|
selector: '[slProseLead]',
|
|
105
107
|
standalone: true,
|
|
106
108
|
exportAs: 'slProseLead',
|
|
107
|
-
host: { 'data-part': 'lead' },
|
|
109
|
+
host: { 'data-part': 'lead', 'data-part-lead': '' },
|
|
108
110
|
}]
|
|
109
111
|
}] });
|
|
110
112
|
/**
|
|
@@ -144,7 +146,7 @@ class SlProseAnchor {
|
|
|
144
146
|
});
|
|
145
147
|
}
|
|
146
148
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseAnchor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
147
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlProseAnchor, isStandalone: true, selector: "[slProseAnchor]", host: { attributes: { "data-part": "anchor" } }, exportAs: ["slProseAnchor"], ngImport: i0 });
|
|
149
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlProseAnchor, isStandalone: true, selector: "[slProseAnchor]", host: { attributes: { "data-part": "anchor", "data-part-anchor": "" } }, exportAs: ["slProseAnchor"], ngImport: i0 });
|
|
148
150
|
}
|
|
149
151
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseAnchor, decorators: [{
|
|
150
152
|
type: Directive,
|
|
@@ -152,7 +154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
152
154
|
selector: '[slProseAnchor]',
|
|
153
155
|
standalone: true,
|
|
154
156
|
exportAs: 'slProseAnchor',
|
|
155
|
-
host: { 'data-part': 'anchor' },
|
|
157
|
+
host: { 'data-part': 'anchor', 'data-part-anchor': '' },
|
|
156
158
|
}]
|
|
157
159
|
}], ctorParameters: () => [] });
|
|
158
160
|
/**
|
|
@@ -166,7 +168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
166
168
|
*/
|
|
167
169
|
class SlProseExclude {
|
|
168
170
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseExclude, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
169
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlProseExclude, isStandalone: true, selector: "[slProseExclude]", host: { attributes: { "data-part": "exclude" } }, exportAs: ["slProseExclude"], ngImport: i0 });
|
|
171
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlProseExclude, isStandalone: true, selector: "[slProseExclude]", host: { attributes: { "data-part": "exclude", "data-part-exclude": "" } }, exportAs: ["slProseExclude"], ngImport: i0 });
|
|
170
172
|
}
|
|
171
173
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseExclude, decorators: [{
|
|
172
174
|
type: Directive,
|
|
@@ -174,13 +176,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
174
176
|
selector: '[slProseExclude]',
|
|
175
177
|
standalone: true,
|
|
176
178
|
exportAs: 'slProseExclude',
|
|
177
|
-
host: { 'data-part': 'exclude' },
|
|
179
|
+
host: { 'data-part': 'exclude', 'data-part-exclude': '' },
|
|
178
180
|
}]
|
|
179
181
|
}] });
|
|
180
182
|
/** What GitHub Flavored Markdown emits at the end of a document. */
|
|
181
183
|
class SlProseFootnotes {
|
|
182
184
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseFootnotes, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
183
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlProseFootnotes, isStandalone: true, selector: "[slProseFootnotes]", host: { attributes: { "data-part": "footnotes" } }, exportAs: ["slProseFootnotes"], ngImport: i0 });
|
|
185
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlProseFootnotes, isStandalone: true, selector: "[slProseFootnotes]", host: { attributes: { "data-part": "footnotes", "data-part-footnotes": "" } }, exportAs: ["slProseFootnotes"], ngImport: i0 });
|
|
184
186
|
}
|
|
185
187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseFootnotes, decorators: [{
|
|
186
188
|
type: Directive,
|
|
@@ -188,7 +190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
188
190
|
selector: '[slProseFootnotes]',
|
|
189
191
|
standalone: true,
|
|
190
192
|
exportAs: 'slProseFootnotes',
|
|
191
|
-
host: { 'data-part': 'footnotes' },
|
|
193
|
+
host: { 'data-part': 'footnotes', 'data-part-footnotes': '' },
|
|
192
194
|
}]
|
|
193
195
|
}] });
|
|
194
196
|
|
|
@@ -288,7 +290,7 @@ class SlProseScroll {
|
|
|
288
290
|
return this.overflowing();
|
|
289
291
|
}
|
|
290
292
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
291
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlProseScroll, isStandalone: true, selector: "[slProseScroll]", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "labelledBy", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "scroll" }, properties: { "attr.role": "resolvedRole()", "attr.tabindex": "resolvedTabIndex()", "attr.aria-label": "resolvedLabel()", "attr.aria-labelledby": "resolvedLabelledBy()" } }, exportAs: ["slProseScroll"], ngImport: i0 });
|
|
293
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlProseScroll, isStandalone: true, selector: "[slProseScroll]", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "labelledBy", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "scroll", "data-part-scroll": "" }, properties: { "attr.role": "resolvedRole()", "attr.tabindex": "resolvedTabIndex()", "attr.aria-label": "resolvedLabel()", "attr.aria-labelledby": "resolvedLabelledBy()" } }, exportAs: ["slProseScroll"], ngImport: i0 });
|
|
292
294
|
}
|
|
293
295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlProseScroll, decorators: [{
|
|
294
296
|
type: Directive,
|
|
@@ -298,6 +300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
298
300
|
exportAs: 'slProseScroll',
|
|
299
301
|
host: {
|
|
300
302
|
'data-part': 'scroll',
|
|
303
|
+
'data-part-scroll': '',
|
|
301
304
|
'[attr.role]': 'resolvedRole()',
|
|
302
305
|
'[attr.tabindex]': 'resolvedTabIndex()',
|
|
303
306
|
'[attr.aria-label]': 'resolvedLabel()',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-prose.mjs","sources":["../../prose/src/prose-defaults.ts","../../prose/src/prose.ts","../../prose/src/prose-parts.ts","../../prose/src/prose-scroll.ts","../../prose/src/slotted-angular-prose.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * The type-scale step the body text takes. Named for the scale's own steps, as\n * `slText` names its own, so the offset from control type is visible rather\n * than hidden: `lg` is one rem, and `--slotted-font-size-md` is the size a\n * button label is set in.\n */\nexport type ProseSize = 'md' | 'lg' | 'xl';\n\n/**\n * The space between blocks, from which every other distance in the region\n * derives. `tight` is a message in a thread, `normal` a documentation page,\n * `loose` an article.\n */\nexport type ProseFlow = 'tight' | 'normal' | 'loose';\n\nexport interface ProseDefaults {\n flow: ProseFlow;\n size: ProseSize;\n}\n\n/**\n * `lg` rather than the control step: the family exists for text a reader stays\n * with, and 0.875rem is the size a button label is set in. `normal` is the\n * documentation rhythm, which is what a region of rendered Markdown is in\n * unless the application says otherwise.\n *\n * The scrolling region's name comes from the catalog rather than a required\n * input because a Markdown renderer's component map cannot supply one per\n * table.\n */\nconst FALLBACK: ProseDefaults = {\n flow: 'normal',\n size: 'lg',\n};\n\nexport const PROSE_DEFAULTS = new InjectionToken<ProseDefaults>('slotted prose defaults', {\n providedIn: 'root',\n factory: (): ProseDefaults => ({ ...FALLBACK }),\n});\n\n/**\n * An application decides once how its rendered content reads — Typeset's\n * presets, as a provider rather than as a class. A region that states any of\n * them itself still wins: an explicit input is never overridden by the token.\n */\nexport function provideProseDefaults(defaults: Partial<ProseDefaults>) {\n return {\n provide: PROSE_DEFAULTS,\n useFactory: (): ProseDefaults => ({\n flow: defaults.flow ?? FALLBACK.flow,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\n/** What a region is set in here, before it states anything of its own. */\nexport function injectProseDefaults(): ProseDefaults {\n return inject(PROSE_DEFAULTS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectProseDefaults } from './prose-defaults';\nimport type { ProseFlow, ProseSize } from './prose-defaults';\n\nexport type { ProseFlow, ProseSize } from './prose-defaults';\n\n/**\n * The typography of a region the application did not author element by\n * element. The tree arrives from a Markdown renderer, a CMS or a language\n * model, and the page never gets to put an attribute on the `h2`.\n *\n * Text the application does author is `slText` and `slHeading`: those carry a\n * size, a weight and a tone per element, and wrapping two authored paragraphs\n * in this family is choosing a recipe over a decision. The boundary is who\n * wrote the tags.\n *\n * It does not sanitise. The renderer that produced the tree is where a\n * sanitiser belongs, and a component that both styled and sanitised would hide\n * which of the two failed.\n *\n * The selector is an attribute, so the page keeps its own element: a `div`\n * claims nothing, and `article`, `section` or `main` is a claim the page\n * makes. Measure is not painted here either — `slContainer` owns it, and one\n * element composes the two:\n *\n * ```html\n * <div slContainer size=\"measure\"><article slProse [innerHTML]=\"rendered\"></article></div>\n * ```\n */\n@Component({\n selector: '[slProse]',\n standalone: true,\n exportAs: 'slProse',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/prose/prose.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'prose',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-flow]': 'resolvedFlow()',\n },\n})\nexport class SlProse {\n /** The type-scale step the body text takes. Falls back to the token. */\n readonly size = input<ProseSize>();\n /** The space between blocks, from which every other distance derives. */\n readonly flow = input<ProseFlow>();\n\n private readonly defaults = injectProseDefaults();\n\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedFlow = computed(() => this.flow() ?? this.defaults.flow);\n}\n","import { afterNextRender, Directive, ElementRef, inject, Renderer2 } from '@angular/core';\n\n/**\n * The opening paragraph, one step up and in the muted tone. Tailwind's\n * equivalent is a class the author writes into the Markdown; this is a part,\n * so it is contract and it is selectable.\n */\n@Directive({\n selector: '[slProseLead]',\n standalone: true,\n exportAs: 'slProseLead',\n host: { 'data-part': 'lead' },\n})\nexport class SlProseLead {}\n\n/**\n * A heading's permalink. The destination is the consumer's —\n * `rehype-autolink-headings` writes it — and the family owns where it sits,\n * how large its target is, and the rule that it appears on hover **and** on\n * focus. It is hidden with opacity, never with `display: none`, so a keyboard\n * reader can reach it and a screen reader can announce it.\n */\n@Directive({\n selector: '[slProseAnchor]',\n standalone: true,\n exportAs: 'slProseAnchor',\n host: { 'data-part': 'anchor' },\n})\nexport class SlProseAnchor {\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n\n constructor() {\n /**\n * A word joiner — U+2060, the zero-width character whose whole purpose is\n * to forbid a break without occupying anything — goes before the anchor,\n * so the last word of a title and its permalink wrap together. Without it\n * the whitespace a template leaves between the two is a break opportunity,\n * and an anchor that is invisible at rest wraps to a line of its own and\n * opens an empty line under every heading.\n *\n * It is written after the first render rather than in the template,\n * because the directive attaches to the consumer's own element and has no\n * template of its own to put a character in front of. Hydration has\n * finished by then, so the insertion is an ordinary DOM mutation. `Link`\n * uses the same device for its external marker.\n */\n afterNextRender(() => {\n const element: HTMLElement = this.host.nativeElement;\n const parent = element.parentNode;\n if (parent === null) return;\n\n const previous = element.previousSibling;\n if (previous?.nodeType === Node.TEXT_NODE && previous.textContent?.endsWith('\\u2060')) return;\n\n this.renderer.insertBefore(parent, this.renderer.createText('\\u2060'), element);\n });\n }\n}\n\n/**\n * A subtree the family does not style. Every content rule carries a guard\n * against this part and everything under it, and the four properties\n * inheritance still carried in — family, size, leading and wrapping — are\n * returned to control type here.\n *\n * Tailwind's `not-prose` and Typeset's `not-typeset` both leave the inherited\n * type in place, so a card inside a large region is set in the region's text.\n */\n@Directive({\n selector: '[slProseExclude]',\n standalone: true,\n exportAs: 'slProseExclude',\n host: { 'data-part': 'exclude' },\n})\nexport class SlProseExclude {}\n\n/** What GitHub Flavored Markdown emits at the end of a document. */\n@Directive({\n selector: '[slProseFootnotes]',\n standalone: true,\n exportAs: 'slProseFootnotes',\n host: { 'data-part': 'footnotes' },\n})\nexport class SlProseFootnotes {}\n","import { createScrollAffordance } from '@slotted/core/overflow';\nimport type { ScrollAffordanceHandle } from '@slotted/core/overflow';\nimport {\n afterNextRender,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { proseMessages, type PartialMessages, type ProseMessages } from '@slotted/core/i18n';\n\n/**\n * A wide block — a table, a fence — that scrolls sideways instead of pushing\n * the page over. The axe rule `scrollable-region-focusable` makes that a WCAG\n * 2.2 level A failure unless a keyboard can reach it, and anything that takes\n * focus then needs a name and a role or it fails SC 4.1.2. Adrian Roselli's\n * pattern is `<div role=\"region\" aria-labelledby tabindex=\"0\">`.\n *\n * None of the four surveyed implementations of this family ships it: Typeset's\n * `typeset-scroll` is a `div` with `overflow: auto`, and GitHub's table\n * wrapper is the same.\n *\n * The wiring is written **only while the block actually overflows**, measured\n * by `@slotted/core/overflow` — the module `slTabs` already uses. A tab stop\n * on a block that fits is a tab stop that does nothing, and a reader tabbing a\n * documentation page would hit one per table.\n *\n * `refresh()` is reachable through `exportAs`, for content that arrives after\n * the observer's last measurement:\n *\n * ```html\n * <div slProseScroll #wide=\"slProseScroll\"><table>…</table></div>\n * <button type=\"button\" (click)=\"wide.refresh()\">Reloaded</button>\n * ```\n */\n@Directive({\n selector: '[slProseScroll]',\n standalone: true,\n exportAs: 'slProseScroll',\n host: {\n 'data-part': 'scroll',\n '[attr.role]': 'resolvedRole()',\n '[attr.tabindex]': 'resolvedTabIndex()',\n '[attr.aria-label]': 'resolvedLabel()',\n '[attr.aria-labelledby]': 'resolvedLabelledBy()',\n },\n})\nexport class SlProseScroll {\n /**\n * Words laid over the catalog of the language in force: the last resort name\n * of the region (`scroll`). A static `aria-label` still wins.\n */\n readonly messages = input<PartialMessages<ProseMessages> | undefined>(undefined);\n /** Names it from an element already on the page — a table's own caption. */\n readonly labelledBy = input<string>();\n\n private readonly host = inject(ElementRef<HTMLElement>);\n /** The family's words in the language in force, with this block's `messages` laid over them. */\n readonly t = injectMessages(proseMessages, this.messages);\n private readonly overflowing = signal(false);\n private affordance: ScrollAffordanceHandle | null = null;\n\n /**\n * A consumer who wrote its own `role` or `aria-label` on the element keeps\n * them: the attribute is read once, before anything is bound over it.\n */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected readonly resolvedRole = computed(() => {\n if (this.writtenRole !== null) return this.writtenRole;\n return this.overflowing() ? 'region' : null;\n });\n\n protected readonly resolvedTabIndex = computed(() => (this.overflowing() ? '0' : null));\n\n protected readonly resolvedLabelledBy = computed(() => {\n if (!this.overflowing()) return null;\n return this.labelledBy() ?? null;\n });\n\n protected readonly resolvedLabel = computed(() => {\n if (!this.overflowing() || this.labelledBy() !== undefined) return null;\n if (this.writtenLabel !== null) return this.writtenLabel;\n return this.t('scroll');\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n /**\n * The measurement runs after the first render and never during it, so the\n * server renders a plain scroller and hydration finds the same DOM. It is\n * also the first moment a browser can say whether the block overflows.\n */\n afterNextRender(() => {\n const handle = createScrollAffordance(this.host.nativeElement, {\n onChange: (state) => this.overflowing.set(state.overflowing),\n });\n this.affordance = handle;\n this.overflowing.set(handle.state().overflowing);\n\n destroyRef.onDestroy(() => {\n handle.destroy();\n this.affordance = null;\n });\n });\n }\n\n /** Measures the block again and rewrites the wiring if the answer changed. */\n refresh(): void {\n this.affordance?.refresh();\n }\n\n /** Whether the block is scrollable as of the last measurement. */\n isOverflowing(): boolean {\n return this.overflowing();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-prose.mjs","sources":["../../prose/src/prose-defaults.ts","../../prose/src/prose.ts","../../prose/src/prose-parts.ts","../../prose/src/prose-scroll.ts","../../prose/src/slotted-angular-prose.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * The type-scale step the body text takes. Named for the scale's own steps, as\n * `slText` names its own, so the offset from control type is visible rather\n * than hidden: `lg` is one rem, and `--slotted-font-size-md` is the size a\n * button label is set in.\n */\nexport type ProseSize = 'md' | 'lg' | 'xl';\n\n/**\n * The space between blocks, from which every other distance in the region\n * derives. `tight` is a message in a thread, `normal` a documentation page,\n * `loose` an article.\n */\nexport type ProseFlow = 'tight' | 'normal' | 'loose';\n\nexport interface ProseDefaults {\n flow: ProseFlow;\n size: ProseSize;\n}\n\n/**\n * `lg` rather than the control step: the family exists for text a reader stays\n * with, and 0.875rem is the size a button label is set in. `normal` is the\n * documentation rhythm, which is what a region of rendered Markdown is in\n * unless the application says otherwise.\n *\n * The scrolling region's name comes from the catalog rather than a required\n * input because a Markdown renderer's component map cannot supply one per\n * table.\n */\nconst FALLBACK: ProseDefaults = {\n flow: 'normal',\n size: 'lg',\n};\n\nexport const PROSE_DEFAULTS = new InjectionToken<ProseDefaults>('slotted prose defaults', {\n providedIn: 'root',\n factory: (): ProseDefaults => ({ ...FALLBACK }),\n});\n\n/**\n * An application decides once how its rendered content reads — Typeset's\n * presets, as a provider rather than as a class. A region that states any of\n * them itself still wins: an explicit input is never overridden by the token.\n */\nexport function provideProseDefaults(defaults: Partial<ProseDefaults>) {\n return {\n provide: PROSE_DEFAULTS,\n useFactory: (): ProseDefaults => ({\n flow: defaults.flow ?? FALLBACK.flow,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\n/** What a region is set in here, before it states anything of its own. */\nexport function injectProseDefaults(): ProseDefaults {\n return inject(PROSE_DEFAULTS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectProseDefaults } from './prose-defaults';\nimport type { ProseFlow, ProseSize } from './prose-defaults';\n\nexport type { ProseFlow, ProseSize } from './prose-defaults';\n\n/**\n * The typography of a region the application did not author element by\n * element. The tree arrives from a Markdown renderer, a CMS or a language\n * model, and the page never gets to put an attribute on the `h2`.\n *\n * Text the application does author is `slText` and `slHeading`: those carry a\n * size, a weight and a tone per element, and wrapping two authored paragraphs\n * in this family is choosing a recipe over a decision. The boundary is who\n * wrote the tags.\n *\n * It does not sanitise. The renderer that produced the tree is where a\n * sanitiser belongs, and a component that both styled and sanitised would hide\n * which of the two failed.\n *\n * The selector is an attribute, so the page keeps its own element: a `div`\n * claims nothing, and `article`, `section` or `main` is a claim the page\n * makes. Measure is not painted here either — `slContainer` owns it, and one\n * element composes the two:\n *\n * ```html\n * <div slContainer size=\"measure\"><article slProse [innerHTML]=\"rendered\"></article></div>\n * ```\n */\n@Component({\n selector: '[slProse]',\n standalone: true,\n exportAs: 'slProse',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/prose/prose.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'prose',\n 'data-ui-prose': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-flow]': 'resolvedFlow()',\n },\n})\nexport class SlProse {\n /** The type-scale step the body text takes. Falls back to the token. */\n readonly size = input<ProseSize>();\n /** The space between blocks, from which every other distance derives. */\n readonly flow = input<ProseFlow>();\n\n private readonly defaults = injectProseDefaults();\n\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedFlow = computed(() => this.flow() ?? this.defaults.flow);\n}\n","import { afterNextRender, Directive, ElementRef, inject, Renderer2 } from '@angular/core';\n\n/**\n * The opening paragraph, one step up and in the muted tone. Tailwind's\n * equivalent is a class the author writes into the Markdown; this is a part,\n * so it is contract and it is selectable.\n */\n@Directive({\n selector: '[slProseLead]',\n standalone: true,\n exportAs: 'slProseLead',\n host: { 'data-part': 'lead', 'data-part-lead': '' },\n})\nexport class SlProseLead {}\n\n/**\n * A heading's permalink. The destination is the consumer's —\n * `rehype-autolink-headings` writes it — and the family owns where it sits,\n * how large its target is, and the rule that it appears on hover **and** on\n * focus. It is hidden with opacity, never with `display: none`, so a keyboard\n * reader can reach it and a screen reader can announce it.\n */\n@Directive({\n selector: '[slProseAnchor]',\n standalone: true,\n exportAs: 'slProseAnchor',\n host: { 'data-part': 'anchor', 'data-part-anchor': '' },\n})\nexport class SlProseAnchor {\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n\n constructor() {\n /**\n * A word joiner — U+2060, the zero-width character whose whole purpose is\n * to forbid a break without occupying anything — goes before the anchor,\n * so the last word of a title and its permalink wrap together. Without it\n * the whitespace a template leaves between the two is a break opportunity,\n * and an anchor that is invisible at rest wraps to a line of its own and\n * opens an empty line under every heading.\n *\n * It is written after the first render rather than in the template,\n * because the directive attaches to the consumer's own element and has no\n * template of its own to put a character in front of. Hydration has\n * finished by then, so the insertion is an ordinary DOM mutation. `Link`\n * uses the same device for its external marker.\n */\n afterNextRender(() => {\n const element: HTMLElement = this.host.nativeElement;\n const parent = element.parentNode;\n if (parent === null) return;\n\n const previous = element.previousSibling;\n if (previous?.nodeType === Node.TEXT_NODE && previous.textContent?.endsWith('\\u2060')) return;\n\n this.renderer.insertBefore(parent, this.renderer.createText('\\u2060'), element);\n });\n }\n}\n\n/**\n * A subtree the family does not style. Every content rule carries a guard\n * against this part and everything under it, and the four properties\n * inheritance still carried in — family, size, leading and wrapping — are\n * returned to control type here.\n *\n * Tailwind's `not-prose` and Typeset's `not-typeset` both leave the inherited\n * type in place, so a card inside a large region is set in the region's text.\n */\n@Directive({\n selector: '[slProseExclude]',\n standalone: true,\n exportAs: 'slProseExclude',\n host: { 'data-part': 'exclude', 'data-part-exclude': '' },\n})\nexport class SlProseExclude {}\n\n/** What GitHub Flavored Markdown emits at the end of a document. */\n@Directive({\n selector: '[slProseFootnotes]',\n standalone: true,\n exportAs: 'slProseFootnotes',\n host: { 'data-part': 'footnotes', 'data-part-footnotes': '' },\n})\nexport class SlProseFootnotes {}\n","import { createScrollAffordance } from '@slotted/core/overflow';\nimport type { ScrollAffordanceHandle } from '@slotted/core/overflow';\nimport {\n afterNextRender,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { proseMessages, type PartialMessages, type ProseMessages } from '@slotted/core/i18n';\n\n/**\n * A wide block — a table, a fence — that scrolls sideways instead of pushing\n * the page over. The axe rule `scrollable-region-focusable` makes that a WCAG\n * 2.2 level A failure unless a keyboard can reach it, and anything that takes\n * focus then needs a name and a role or it fails SC 4.1.2. Adrian Roselli's\n * pattern is `<div role=\"region\" aria-labelledby tabindex=\"0\">`.\n *\n * None of the four surveyed implementations of this family ships it: Typeset's\n * `typeset-scroll` is a `div` with `overflow: auto`, and GitHub's table\n * wrapper is the same.\n *\n * The wiring is written **only while the block actually overflows**, measured\n * by `@slotted/core/overflow` — the module `slTabs` already uses. A tab stop\n * on a block that fits is a tab stop that does nothing, and a reader tabbing a\n * documentation page would hit one per table.\n *\n * `refresh()` is reachable through `exportAs`, for content that arrives after\n * the observer's last measurement:\n *\n * ```html\n * <div slProseScroll #wide=\"slProseScroll\"><table>…</table></div>\n * <button type=\"button\" (click)=\"wide.refresh()\">Reloaded</button>\n * ```\n */\n@Directive({\n selector: '[slProseScroll]',\n standalone: true,\n exportAs: 'slProseScroll',\n host: {\n 'data-part': 'scroll',\n 'data-part-scroll': '',\n '[attr.role]': 'resolvedRole()',\n '[attr.tabindex]': 'resolvedTabIndex()',\n '[attr.aria-label]': 'resolvedLabel()',\n '[attr.aria-labelledby]': 'resolvedLabelledBy()',\n },\n})\nexport class SlProseScroll {\n /**\n * Words laid over the catalog of the language in force: the last resort name\n * of the region (`scroll`). A static `aria-label` still wins.\n */\n readonly messages = input<PartialMessages<ProseMessages> | undefined>(undefined);\n /** Names it from an element already on the page — a table's own caption. */\n readonly labelledBy = input<string>();\n\n private readonly host = inject(ElementRef<HTMLElement>);\n /** The family's words in the language in force, with this block's `messages` laid over them. */\n readonly t = injectMessages(proseMessages, this.messages);\n private readonly overflowing = signal(false);\n private affordance: ScrollAffordanceHandle | null = null;\n\n /**\n * A consumer who wrote its own `role` or `aria-label` on the element keeps\n * them: the attribute is read once, before anything is bound over it.\n */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n protected readonly resolvedRole = computed(() => {\n if (this.writtenRole !== null) return this.writtenRole;\n return this.overflowing() ? 'region' : null;\n });\n\n protected readonly resolvedTabIndex = computed(() => (this.overflowing() ? '0' : null));\n\n protected readonly resolvedLabelledBy = computed(() => {\n if (!this.overflowing()) return null;\n return this.labelledBy() ?? null;\n });\n\n protected readonly resolvedLabel = computed(() => {\n if (!this.overflowing() || this.labelledBy() !== undefined) return null;\n if (this.writtenLabel !== null) return this.writtenLabel;\n return this.t('scroll');\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n /**\n * The measurement runs after the first render and never during it, so the\n * server renders a plain scroller and hydration finds the same DOM. It is\n * also the first moment a browser can say whether the block overflows.\n */\n afterNextRender(() => {\n const handle = createScrollAffordance(this.host.nativeElement, {\n onChange: (state) => this.overflowing.set(state.overflowing),\n });\n this.affordance = handle;\n this.overflowing.set(handle.state().overflowing);\n\n destroyRef.onDestroy(() => {\n handle.destroy();\n this.affordance = null;\n });\n });\n }\n\n /** Measures the block again and rewrites the wiring if the answer changed. */\n refresh(): void {\n this.affordance?.refresh();\n }\n\n /** Whether the block is scrollable as of the last measurement. */\n isOverflowing(): boolean {\n return this.overflowing();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|