@ethlete/components 0.1.0-beta.4
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/CHANGELOG.md +50 -0
- package/README.md +9 -0
- package/fesm2022/ethlete-components.mjs +11542 -0
- package/fesm2022/ethlete-components.mjs.map +1 -0
- package/package.json +33 -0
- package/types/ethlete-components.d.ts +3702 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ethlete-components.mjs","sources":["../../../../libs/components/src/lib/button/button-properties-styles.component.ts","../../../../libs/components/src/lib/button/button-styles.directive.ts","../../../../libs/components/src/lib/focus-ring/focus-ring-styles.component.ts","../../../../libs/components/src/lib/focus-ring/focus-ring.directive.ts","../../../../libs/components/src/lib/loader/brand-loader/brand-loader.component.ts","../../../../libs/components/src/lib/loader/progress-bar/progress-bar.component.ts","../../../../libs/components/src/lib/loader/spinner/spinner.component.ts","../../../../libs/components/src/lib/button/headless/button.directive.ts","../../../../libs/components/src/lib/button/button.component.ts","../../../../libs/components/src/lib/button/fab.component.ts","../../../../libs/components/src/lib/button/icon-button.component.ts","../../../../libs/components/src/lib/button/text-button.component.ts","../../../../libs/components/src/lib/button/window-control-button.component.ts","../../../../libs/components/src/lib/button/button.imports.ts","../../../../libs/components/src/lib/forms/form-field/headless/form-field-errors.ts","../../../../libs/components/src/lib/forms/form-field/headless/form-field.tokens.ts","../../../../libs/components/src/lib/forms/form-field/headless/form-field.directive.ts","../../../../libs/components/src/lib/forms/form-field/headless/form-support.ts","../../../../libs/components/src/lib/forms/form-field/headless/label.directive.ts","../../../../libs/components/src/lib/forms/checkbox/headless/checkbox.directive.ts","../../../../libs/components/src/lib/forms/checkbox/checkbox.component.ts","../../../../libs/components/src/lib/forms/checkbox/checkbox.component.html","../../../../libs/components/src/lib/forms/checkbox/checkbox.imports.ts","../../../../libs/components/src/lib/forms/form-field/form-error.component.ts","../../../../libs/components/src/lib/forms/choice-field/choice-field.component.ts","../../../../libs/components/src/lib/forms/choice-field/choice-field.component.html","../../../../libs/components/src/lib/forms/form-field/hint.component.ts","../../../../libs/components/src/lib/forms/choice-field/choice-field.imports.ts","../../../../libs/components/src/lib/forms/description/description.component.ts","../../../../libs/components/src/lib/forms/form-field/form-field.variants.ts","../../../../libs/components/src/lib/forms/form-field/form-field.component.ts","../../../../libs/components/src/lib/forms/form-field/form-field.component.html","../../../../libs/components/src/lib/forms/form-field/partials/input-prefix.directive.ts","../../../../libs/components/src/lib/forms/form-field/partials/input-suffix.directive.ts","../../../../libs/components/src/lib/forms/form-field/form-field.imports.ts","../../../../libs/components/src/lib/forms/input/input.types.ts","../../../../libs/components/src/lib/forms/input/headless/input.directive.ts","../../../../libs/components/src/lib/forms/input/input.component.ts","../../../../libs/components/src/lib/forms/input/input.component.html","../../../../libs/components/src/lib/forms/input/input.imports.ts","../../../../libs/components/src/lib/forms/selection-list/headless/selection-list.tokens.ts","../../../../libs/components/src/lib/forms/selection-list/headless/selection-list-control.directive.ts","../../../../libs/components/src/lib/forms/selection-list/headless/selection-list.directive.ts","../../../../libs/components/src/lib/forms/selection-list/headless/selection-option.directive.ts","../../../../libs/components/src/lib/forms/selection-list/checkbox-group/checkbox-group.component.ts","../../../../libs/components/src/lib/forms/selection-list/checkbox-group/checkbox-group.component.html","../../../../libs/components/src/lib/forms/selection-list/checkbox-group/checkbox-option.component.ts","../../../../libs/components/src/lib/forms/selection-list/checkbox-group/checkbox-option.component.html","../../../../libs/components/src/lib/forms/selection-list/radio-group/radio-group.component.ts","../../../../libs/components/src/lib/forms/selection-list/radio-group/radio-group.component.html","../../../../libs/components/src/lib/forms/selection-list/radio-group/radio.component.ts","../../../../libs/components/src/lib/forms/selection-list/radio-group/radio.component.html","../../../../libs/components/src/lib/forms/selection-list/segmented-button-group/segmented-button-group.component.ts","../../../../libs/components/src/lib/forms/selection-list/segmented-button-group/segmented-button-group.component.html","../../../../libs/components/src/lib/forms/selection-list/segmented-button-group/segmented-button.component.ts","../../../../libs/components/src/lib/forms/switch/headless/switch.directive.ts","../../../../libs/components/src/lib/forms/switch/switch.component.ts","../../../../libs/components/src/lib/forms/switch/switch.component.html","../../../../libs/components/src/lib/forms/switch/switch.imports.ts","../../../../libs/components/src/lib/grid/headless/grid-config.ts","../../../../libs/components/src/lib/grid/headless/grid.tokens.ts","../../../../libs/components/src/lib/grid/headless/internals/layout-engine.ts","../../../../libs/components/src/lib/grid/headless/internals/responsive.ts","../../../../libs/components/src/lib/grid/headless/internals/serialization.ts","../../../../libs/components/src/lib/grid/headless/grid.directive.ts","../../../../libs/components/src/lib/grid/headless/grid-item.directive.ts","../../../../libs/components/src/lib/grid/headless/grid-drag.directive.ts","../../../../libs/components/src/lib/grid/headless/grid-resize.directive.ts","../../../../libs/components/src/lib/grid/headless/grid.types.ts","../../../../libs/components/src/lib/grid/headless/grid-adapter.ts","../../../../libs/components/src/lib/grid/grid.component.ts","../../../../libs/components/src/lib/grid/grid-item.component.ts","../../../../libs/components/src/lib/grid/grid-errors.ts","../../../../libs/components/src/lib/grid/grid.imports.ts","../../../../libs/components/src/lib/icon/headless/arrow-out-up-right-icon.ts","../../../../libs/components/src/lib/icon/headless/arrow-right-icon.ts","../../../../libs/components/src/lib/icon/headless/chevron-icon.ts","../../../../libs/components/src/lib/icon/headless/clipboard-check-icon.ts","../../../../libs/components/src/lib/icon/headless/floppy-disk-icon.ts","../../../../libs/components/src/lib/icon/headless/focus-frame-icon.ts","../../../../libs/components/src/lib/icon/headless/grid-2x2-icon.ts","../../../../libs/components/src/lib/icon/headless/icon-errors.ts","../../../../libs/components/src/lib/icon/headless/icon-provider.ts","../../../../libs/components/src/lib/icon/headless/icon.directive.ts","../../../../libs/components/src/lib/icon/headless/lock-icon.ts","../../../../libs/components/src/lib/icon/headless/pencil-icon.ts","../../../../libs/components/src/lib/icon/headless/plus-icon.ts","../../../../libs/components/src/lib/icon/headless/times-icon.ts","../../../../libs/components/src/lib/icon/headless/triangle-exclamation-icon.ts","../../../../libs/components/src/lib/icon/icon.imports.ts","../../../../libs/components/src/lib/notification/notification-errors.ts","../../../../libs/components/src/lib/notification/headless/notification.directive.ts","../../../../libs/components/src/lib/notification/headless/notification-action.directive.ts","../../../../libs/components/src/lib/notification/headless/notification-dismiss.directive.ts","../../../../libs/components/src/lib/notification/notification-stack-context.token.ts","../../../../libs/components/src/lib/notification/headless/notification-stack.directive.ts","../../../../libs/components/src/lib/notification/headless/notification-item.directive.ts","../../../../libs/components/src/lib/notification/notification-config.ts","../../../../libs/components/src/lib/notification/notification-ref.ts","../../../../libs/components/src/lib/notification/notification.component.ts","../../../../libs/components/src/lib/notification/notification.component.html","../../../../libs/components/src/lib/notification/notification-stack.component.ts","../../../../libs/components/src/lib/notification/notification-stack.component.html","../../../../libs/components/src/lib/notification/notification-manager.ts","../../../../libs/components/src/lib/notification/notification.imports.ts","../../../../libs/components/src/lib/overlay/overlay-errors.ts","../../../../libs/components/src/lib/overlay/overlay-ref.ts","../../../../libs/components/src/lib/overlay/overlay-manager.ts","../../../../libs/components/src/lib/overlay/overlay-template-host.component.ts","../../../../libs/components/src/lib/overlay/overlay-template-host.component.html","../../../../libs/components/src/lib/overlay/headless/overlay.directive.ts","../../../../libs/components/src/lib/overlay/headless/overlay-anchor.directive.ts","../../../../libs/components/src/lib/overlay/headless/overlay-surface.directive.ts","../../../../libs/components/src/lib/overlay/headless/overlay-trigger.directive.ts","../../../../libs/components/src/lib/overlay/overlay.imports.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-errors.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-active-child.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-buttons.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-darken.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-drag.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-ignore-child.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-loading-template.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-masks.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-navigation.directive.ts","../../../../libs/components/src/lib/scrollable/headless/scrollable-snap.directive.ts","../../../../libs/components/src/lib/scrollable/scrollable.component.ts","../../../../libs/components/src/lib/scrollable/scrollable.component.html","../../../../libs/components/src/lib/scrollable/scrollable.imports.ts","../../../../libs/components/src/lib/stream/consent/headless/stream-consent.directive.ts","../../../../libs/components/src/lib/stream/consent/headless/stream-consent-accept.directive.ts","../../../../libs/components/src/lib/stream/consent/stream-consent-config.ts","../../../../libs/components/src/lib/stream/consent/stream-consent.component.ts","../../../../libs/components/src/lib/stream/error/headless/stream-player-error.directive.ts","../../../../libs/components/src/lib/stream/error/stream-player-error-config.ts","../../../../libs/components/src/lib/stream/error/stream-player-error.component.ts","../../../../libs/components/src/lib/stream/loading/stream-player-loading-config.ts","../../../../libs/components/src/lib/stream/loading/stream-player-loading.component.ts","../../../../libs/components/src/lib/stream/pip/headless/internals/pip-animation.ts","../../../../libs/components/src/lib/stream/pip/pip-chrome.config.ts","../../../../libs/components/src/lib/stream/stream-manager.ts","../../../../libs/components/src/lib/stream/pip-manager.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-chrome-ref.token.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-entry.token.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-back.directive.ts","../../../../libs/components/src/lib/stream/stream-manager.types.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-bring-back.directive.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-cell.directive.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-chrome-animations.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-chrome-state.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-collapse-overlay.directive.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-title-bar-template.directive.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-title-bar.directive.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-grid-toggle.directive.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-stage.directive.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-window-aspect-ratio.token.ts","../../../../libs/components/src/lib/stream/pip/pip-player.component.ts","../../../../libs/components/src/lib/stream/pip/pip-chrome.component.ts","../../../../libs/components/src/lib/stream/pip/pip-chrome.component.html","../../../../libs/components/src/lib/stream/stream-config.ts","../../../../libs/components/src/lib/stream/pip/headless/pip-window-params.directive.ts","../../../../libs/components/src/lib/stream/pip/headless/internals/pip-window-position.ts","../../../../libs/components/src/lib/stream/pip/headless/internals/pip-window-size.ts","../../../../libs/components/src/lib/stream/pip/pip-window.component.ts","../../../../libs/components/src/lib/stream/pip/pip-window.component.html","../../../../libs/components/src/lib/stream/pip/headless/pip-close.directive.ts","../../../../libs/components/src/lib/stream/pip/pip-slot-placeholder-config.ts","../../../../libs/components/src/lib/stream/pip/pip-slot-placeholder.component.ts","../../../../libs/components/src/lib/stream/stream-errors.ts","../../../../libs/components/src/lib/stream/pip-chrome-manager.ts","../../../../libs/components/src/lib/stream/stream-player.ts","../../../../libs/components/src/lib/stream/stream.types.ts","../../../../libs/components/src/lib/stream/stream-player-slot.ts","../../../../libs/components/src/lib/stream/stream-player-slot-styles.component.ts","../../../../libs/components/src/lib/stream/stream-player-slot.directive.ts","../../../../libs/components/src/lib/stream/platform/dailymotion/headless/dailymotion-player-params.directive.ts","../../../../libs/components/src/lib/stream/platform/dailymotion/headless/dailymotion-player.directive.ts","../../../../libs/components/src/lib/stream/platform/dailymotion/dailymotion-player.component.ts","../../../../libs/components/src/lib/stream/platform/dailymotion/dailymotion-player-slot.component.ts","../../../../libs/components/src/lib/stream/platform/facebook/headless/facebook-player-params.directive.ts","../../../../libs/components/src/lib/stream/stream-script-loader.ts","../../../../libs/components/src/lib/stream/platform/facebook/headless/facebook-player.directive.ts","../../../../libs/components/src/lib/stream/platform/facebook/facebook-player.component.ts","../../../../libs/components/src/lib/stream/platform/facebook/facebook-player-slot.component.ts","../../../../libs/components/src/lib/stream/platform/kick/headless/kick-player-params.directive.ts","../../../../libs/components/src/lib/stream/platform/kick/headless/kick-player.directive.ts","../../../../libs/components/src/lib/stream/platform/kick/kick-player.component.ts","../../../../libs/components/src/lib/stream/platform/kick/kick-player-slot.component.ts","../../../../libs/components/src/lib/stream/platform/soop/headless/soop-player-params.directive.ts","../../../../libs/components/src/lib/stream/platform/soop/headless/soop-player.directive.ts","../../../../libs/components/src/lib/stream/platform/soop/soop-player.component.ts","../../../../libs/components/src/lib/stream/platform/soop/soop-player-slot.component.ts","../../../../libs/components/src/lib/stream/platform/tiktok/headless/tiktok-player-params.directive.ts","../../../../libs/components/src/lib/stream/platform/tiktok/headless/tiktok-player.directive.ts","../../../../libs/components/src/lib/stream/platform/tiktok/tiktok-player.component.ts","../../../../libs/components/src/lib/stream/platform/tiktok/tiktok-player-slot.component.ts","../../../../libs/components/src/lib/stream/platform/twitch/headless/twitch-player-params.directive.ts","../../../../libs/components/src/lib/stream/platform/twitch/headless/twitch-player.directive.ts","../../../../libs/components/src/lib/stream/platform/twitch/twitch-player.component.ts","../../../../libs/components/src/lib/stream/platform/twitch/twitch-player-slot.component.ts","../../../../libs/components/src/lib/stream/platform/vimeo/headless/vimeo-player-params.directive.ts","../../../../libs/components/src/lib/stream/platform/vimeo/headless/vimeo-player.directive.ts","../../../../libs/components/src/lib/stream/platform/vimeo/vimeo-player.component.ts","../../../../libs/components/src/lib/stream/platform/vimeo/vimeo-player-slot.component.ts","../../../../libs/components/src/lib/stream/platform/youtube/headless/youtube-player-params.directive.ts","../../../../libs/components/src/lib/stream/platform/youtube/headless/youtube-player.directive.ts","../../../../libs/components/src/lib/stream/platform/youtube/youtube-player.component.ts","../../../../libs/components/src/lib/stream/platform/youtube/headless/youtube-player-slot.directive.ts","../../../../libs/components/src/lib/stream/platform/youtube/youtube-player-slot.component.ts","../../../../libs/components/src/lib/stream/stream.imports.ts","../../../../libs/components/src/lib/tabs/headless/tab-bar.tokens.ts","../../../../libs/components/src/lib/tabs/headless/tab-bar-trigger.directive.ts","../../../../libs/components/src/lib/tabs/headless/tab-bar-underline.directive.ts","../../../../libs/components/src/lib/tabs/headless/tab-bar.types.ts","../../../../libs/components/src/lib/tabs/headless/tab-bar.directive.ts","../../../../libs/components/src/lib/tabs/nav-tabs/headless/nav-tab-link.directive.ts","../../../../libs/components/src/lib/tabs/nav-tabs/headless/nav-tabs-outlet.directive.ts","../../../../libs/components/src/lib/tabs/nav-tabs/headless/nav-tabs.tokens.ts","../../../../libs/components/src/lib/tabs/nav-tabs/headless/nav-tabs.directive.ts","../../../../libs/components/src/lib/tabs/nav-tabs/nav-tab-link.component.ts","../../../../libs/components/src/lib/tabs/nav-tabs/nav-tabs-outlet.component.ts","../../../../libs/components/src/lib/tabs/tab-sizes.ts","../../../../libs/components/src/lib/tabs/nav-tabs/nav-tabs.component.ts","../../../../libs/components/src/lib/tabs/tab-errors.ts","../../../../libs/components/src/lib/tabs/tabs/headless/tab-group.tokens.ts","../../../../libs/components/src/lib/tabs/tabs/headless/tab-group.directive.ts","../../../../libs/components/src/lib/tabs/tabs/headless/tab-panel.directive.ts","../../../../libs/components/src/lib/tabs/tabs/headless/tab-trigger.directive.ts","../../../../libs/components/src/lib/tabs/tabs/tab-label.directive.ts","../../../../libs/components/src/lib/tabs/tabs/tab.component.ts","../../../../libs/components/src/lib/tabs/tabs/tab-group.component.ts","../../../../libs/components/src/lib/tabs/tabs.imports.ts","../../../../libs/components/src/lib/toggletip/headless/toggletip-close.directive.ts","../../../../libs/components/src/lib/toggletip/toggletip-errors.ts","../../../../libs/components/src/lib/toggletip/toggletip.component.ts","../../../../libs/components/src/lib/toggletip/toggletip.component.html","../../../../libs/components/src/lib/toggletip/toggletip.utils.ts","../../../../libs/components/src/lib/toggletip/headless/toggletip.directive.ts","../../../../libs/components/src/lib/toggletip/headless/toggletip-trigger.directive.ts","../../../../libs/components/src/lib/toggletip/toggletip.imports.ts","../../../../libs/components/src/lib/tooltip/tooltip-errors.ts","../../../../libs/components/src/lib/tooltip/tooltip.component.ts","../../../../libs/components/src/lib/tooltip/tooltip.component.html","../../../../libs/components/src/lib/tooltip/tooltip.utils.ts","../../../../libs/components/src/lib/tooltip/headless/tooltip.directive.ts","../../../../libs/components/src/lib/tooltip/tooltip.imports.ts","../../../../libs/components/src/ethlete-components.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'et-button-properties-styles',\n template: '',\n styleUrl: './button-properties-styles.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonPropertiesStylesComponent {}\n","import { Directive } from '@angular/core';\nimport { injectStyleManager } from '@ethlete/core';\nimport { ButtonPropertiesStylesComponent } from './button-properties-styles.component';\n\n@Directive({\n selector: '[etButtonStyles]',\n})\nexport class ButtonStylesDirective {\n private styleManager = injectStyleManager();\n\n constructor() {\n this.styleManager.mount(ButtonPropertiesStylesComponent);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'et-focus-ring-styles',\n template: '',\n styleUrl: './focus-ring-styles.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FocusRingStylesComponent {}\n","import { Directive, booleanAttribute, effect, input, signal } from '@angular/core';\nimport { injectStyleManager } from '@ethlete/core';\nimport { FocusRingStylesComponent } from './focus-ring-styles.component';\n\n@Directive({\n selector: '[etFocusRing]',\n host: {\n '[class.et-focus-ring]': '!disabled()',\n '[class.et-focus-ring--active]': 'active()',\n '(keydown.enter)': 'active.set(true)',\n '(keyup.enter)': 'active.set(false)',\n '(keydown.space)': 'active.set(true)',\n '(keyup.space)': 'active.set(false)',\n },\n})\nexport class FocusRingDirective {\n public disabled = input(false, { transform: booleanAttribute });\n\n private styleManager = injectStyleManager();\n\n protected active = signal(false);\n\n constructor() {\n effect(() => {\n if (this.disabled()) {\n return;\n }\n\n this.styleManager.mount(FocusRingStylesComponent);\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\nconst BRAND_E_PATH =\n 'M15.905 6.21401C15.7794 6.8902 16.2818 7.51877 16.9517 7.51877H23.8598L22.9201 12.3378H15.6817C15.1048 12.3378 14.6071 12.7569 14.5001 13.3378C14.4861 13.4188 14.4768 13.4997 14.4768 13.5811C14.4768 14.2426 15.0071 14.8092 15.6817 14.8092H23.9435L22.9201 19.9997H6.79183L7.2198 17.814H7.64313C7.94085 17.814 8.20601 17.6907 8.40139 17.495C8.59212 17.2954 8.71307 17.0235 8.71307 16.7235C8.71307 16.1188 8.23858 15.6331 7.64778 15.6288H2.73534C2.14919 15.6288 1.67004 15.1426 1.67004 14.5378C1.67004 14.2383 1.791 13.9621 1.98172 13.7664C2.17711 13.5711 2.44227 13.4473 2.73534 13.4473H8.07111L8.96428 8.88115H9.39226C9.68533 8.88115 9.95049 8.75686 10.1459 8.5621C10.3366 8.3621 10.4576 8.08591 10.4576 7.78543C10.4576 7.18543 9.9784 6.69543 9.39226 6.69543H4.48447C3.89367 6.69543 3.41452 6.20448 3.41452 5.60496C3.41452 5.30448 3.53547 5.02877 3.7262 4.82829C3.92158 4.63353 4.19139 4.50924 4.48447 4.50924H10.2436C10.5366 4.50924 10.8064 4.3902 10.9972 4.1902C11.1879 3.99496 11.3089 3.72401 11.3089 3.41877C11.3089 2.81401 10.8344 2.32829 10.2436 2.32829H1.06994C0.479149 2.32829 0 1.83829 0 1.23305C0 0.933054 0.12095 0.656864 0.31168 0.461626C0.507061 0.266864 0.776873 0.142578 1.06994 0.142578H26.4369L25.4135 5.33305H16.9517C16.4446 5.33305 16.0027 5.70496 15.905 6.21401Z';\n\nconst BRAND_E_OUTLINE_PATH =\n 'M1.07 0.14 L26.44 0.14 L25.41 5.33 L16.95 5.33 C16.44 5.33 16.0 5.70 15.91 6.21 C15.78 6.89 16.28 7.52 16.95 7.52 L23.86 7.52 L22.92 12.34 L15.68 12.34 C15.10 12.34 14.61 12.76 14.50 13.34 C14.49 13.42 14.48 13.50 14.48 13.58 C14.48 14.24 15.01 14.81 15.68 14.81 L23.94 14.81 L22.92 20.0 L6.79 20.0 L7.22 17.81 L7.64 17.81 C7.94 17.81 8.21 17.69 8.40 17.50 C8.59 17.30 8.71 17.02 8.71 16.72 C8.71 16.12 8.24 15.63 7.65 15.63 L2.74 15.63 C2.15 15.63 1.67 15.14 1.67 14.54 C1.67 14.24 1.79 13.96 1.98 13.77 C2.18 13.57 2.44 13.45 2.74 13.45 L8.07 13.45 L8.96 8.88 L9.39 8.88 C9.69 8.88 9.95 8.76 10.15 8.56 C10.34 8.36 10.46 8.09 10.46 7.79 C10.46 7.19 9.98 6.70 9.39 6.70 L4.48 6.70 C3.89 6.70 3.41 6.20 3.41 5.60 C3.41 5.30 3.54 5.03 3.73 4.83 C3.92 4.63 4.19 4.51 4.48 4.51 L10.24 4.51 C10.54 4.51 10.81 4.39 10.997 4.19 C11.188 3.99 11.31 3.72 11.31 3.42 C11.31 2.81 10.83 2.33 10.24 2.33 L1.07 2.33 C0.48 2.33 0 1.84 0 1.23 C0 0.93 0.12 0.66 0.31 0.46 C0.51 0.27 0.78 0.14 1.07 0.14 Z';\n\nlet nextId = 0;\n\n@Component({\n selector: 'et-brand-loader',\n template: `\n <svg class=\"et-brand-loader__svg\" viewBox=\"0 0 26.4369 20\" aria-hidden=\"true\">\n <defs>\n <clipPath [attr.id]=\"SHAPE_CLIP_ID\" clipPathUnits=\"userSpaceOnUse\">\n <path [attr.d]=\"PATH\" />\n </clipPath>\n\n <clipPath [attr.id]=\"FILL_CLIP_ID\" clipPathUnits=\"userSpaceOnUse\">\n <rect class=\"et-brand-loader__fill-clip-rect\" x=\"0\" y=\"0\" width=\"0\" height=\"20\" />\n </clipPath>\n </defs>\n\n <path [attr.d]=\"PATH\" class=\"et-brand-loader__ghost\" />\n\n <path [attr.d]=\"OUTLINE_PATH\" [attr.clip-path]=\"shapeClip\" class=\"et-brand-loader__outline\" pathLength=\"100\" />\n\n <path [attr.d]=\"PATH\" [attr.clip-path]=\"fillClip\" class=\"et-brand-loader__fill\" />\n </svg>\n `,\n styleUrl: './brand-loader.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'et-brand-loader',\n role: 'progressbar',\n 'aria-label': 'Loading',\n },\n})\nexport class BrandLoaderComponent {\n public readonly PATH = BRAND_E_PATH;\n public readonly OUTLINE_PATH = BRAND_E_OUTLINE_PATH;\n\n public readonly SHAPE_CLIP_ID = `et-brand-loader-shape-${nextId}`;\n public shapeClip = `url(#${this.SHAPE_CLIP_ID})`;\n\n public readonly FILL_CLIP_ID = `et-brand-loader-fill-${nextId}`;\n public fillClip = `url(#${this.FILL_CLIP_ID})`;\n\n constructor() {\n nextId++;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n} from '@angular/core';\n\n@Component({\n selector: 'et-progress-bar',\n template: `\n <div class=\"et-progress-bar__track\" aria-hidden=\"true\">\n <div\n [style.transform]=\"indeterminate() ? '' : 'scaleX(' + clampedValue() / 100 + ')'\"\n class=\"et-progress-bar__bar et-progress-bar__bar--primary\"\n >\n <span class=\"et-progress-bar__bar-inner\"></span>\n </div>\n <div class=\"et-progress-bar__bar et-progress-bar__bar--secondary\">\n <span class=\"et-progress-bar__bar-inner\"></span>\n </div>\n </div>\n `,\n styleUrl: './progress-bar.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'et-progress-bar',\n '[class.et-progress-bar--indeterminate]': 'indeterminate()',\n role: 'progressbar',\n '[attr.aria-valuenow]': 'indeterminate() ? null : clampedValue()',\n '[attr.aria-valuemin]': 'indeterminate() ? null : 0',\n '[attr.aria-valuemax]': 'indeterminate() ? null : 100',\n },\n})\nexport class ProgressBarComponent {\n public value = input(0, { transform: numberAttribute });\n public indeterminate = input(false, { transform: booleanAttribute });\n\n public clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n} from '@angular/core';\n\nconst BASE_STROKE_WIDTH = 10;\n\n@Component({\n selector: 'et-spinner',\n template: `\n <ng-template #circle>\n <svg\n [attr.viewBox]=\"viewBox()\"\n class=\"et-spinner-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"circleRadius()\"\n [style.stroke-dasharray.px]=\"strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"strokeCircumference() / 2\"\n [style.stroke-width.%]=\"circleStrokeWidth()\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n </ng-template>\n\n @if (track()) {\n <div class=\"et-spinner-track-container\" aria-hidden=\"true\">\n <svg\n [attr.viewBox]=\"viewBox()\"\n class=\"et-spinner-track-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"circleRadius()\"\n [style.stroke-dasharray.px]=\"strokeCircumference()\"\n [style.stroke-width.%]=\"circleStrokeWidth()\"\n class=\"et-spinner-track-circle\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n </div>\n }\n\n @if (determinate()) {\n <svg\n [attr.viewBox]=\"viewBox()\"\n class=\"et-spinner-determinate-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <circle\n [attr.r]=\"circleRadius()\"\n [style.stroke-dasharray.px]=\"strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"determinateDashOffset()\"\n [style.stroke-width.%]=\"circleStrokeWidth()\"\n class=\"et-spinner-determinate-circle\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n } @else {\n <div class=\"et-spinner-indeterminate-container\" aria-hidden=\"true\">\n <div class=\"et-spinner-layer\">\n <div class=\"et-spinner-circle-clipper et-spinner-circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"et-spinner-gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"et-spinner-circle-clipper et-spinner-circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n </div>\n </div>\n }\n `,\n styleUrl: './spinner.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: {\n class: 'et-spinner',\n '[class.et-spinner--determinate]': 'determinate()',\n '[style.--et-spinner-size.px]': 'diameter()',\n '[style.--et-spinner-stroke-width.px]': 'strokeWidth()',\n role: 'progressbar',\n '[attr.aria-valuenow]': 'determinate() ? clampedValue() : null',\n '[attr.aria-valuemin]': 'determinate() ? 0 : null',\n '[attr.aria-valuemax]': 'determinate() ? 100 : null',\n },\n})\nexport class SpinnerComponent {\n public diameter = input(18, { transform: numberAttribute });\n public strokeWidth = input(2.25, { transform: numberAttribute });\n public track = input(false, { transform: booleanAttribute });\n public value = input(0, { transform: numberAttribute });\n public determinate = input(false, { transform: booleanAttribute });\n\n public circleRadius = computed(() => Math.max(1, (this.diameter() - BASE_STROKE_WIDTH) / 2));\n\n public normalizedStrokeWidth = computed(() => (this.strokeWidth() / this.diameter()) * 100);\n\n public viewBox = computed(() => {\n const diameter = this.circleRadius() * 2 + this.strokeWidth();\n\n return `0 0 ${diameter} ${diameter}`;\n });\n\n public strokeCircumference = computed(() => 2 * Math.PI * this.circleRadius());\n\n public circleStrokeWidth = computed(() => this.normalizedStrokeWidth());\n\n public clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\n\n public determinateDashOffset = computed(() => {\n const circumference = this.strokeCircumference();\n\n return circumference - (this.clampedValue() / 100) * circumference;\n });\n}\n","import { Directive, ElementRef, booleanAttribute, computed, inject, input } from '@angular/core';\n\nexport const BUTTON_TYPES = {\n BUTTON: 'button',\n SUBMIT: 'submit',\n RESET: 'reset',\n} as const;\n\ntype ButtonType = (typeof BUTTON_TYPES)[keyof typeof BUTTON_TYPES];\n\n@Directive({\n selector: '[etButton]',\n exportAs: 'etButton',\n host: {\n '[attr.data-loading]': 'loading() ? true : null',\n '[attr.data-pressed]': 'pressed() ? true : null',\n '[attr.disabled]': 'IS_BUTTON && isInactive() ? \"\" : null',\n '[attr.aria-busy]': 'loading() ? true : null',\n '[attr.aria-disabled]': 'isInactive() ? true : null',\n '[attr.aria-pressed]': 'emitAriaPressed() && pressed() ? true : null',\n '[attr.type]': 'IS_BUTTON ? type() : null',\n '[attr.tabindex]': 'IS_ANCHOR && isInactive() ? -1 : null',\n },\n})\nexport class ButtonDirective {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n public disabled = input(false, { transform: booleanAttribute });\n public loading = input(false, { transform: booleanAttribute });\n public type = input<ButtonType>('button');\n public pressed = input(false, { transform: booleanAttribute });\n public emitAriaPressed = input(true, { transform: booleanAttribute });\n\n public readonly IS_BUTTON = this.elementRef.nativeElement.tagName === 'BUTTON';\n public readonly IS_ANCHOR = this.elementRef.nativeElement.tagName === 'A';\n\n public isInactive = computed(() => this.disabled() || this.loading());\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal, ProvideColorDirective } from '@ethlete/core';\nimport { FocusRingDirective } from '../focus-ring';\nimport { SpinnerComponent } from '../loader';\nimport { ButtonStylesDirective } from './button-styles.directive';\nimport { ButtonDirective } from './headless';\n\nexport const BUTTON_SIZES = {\n XS: 'xs',\n SM: 'sm',\n MD: 'md',\n LG: 'lg',\n XL: 'xl',\n} as const;\n\nexport type ButtonSize = (typeof BUTTON_SIZES)[keyof typeof BUTTON_SIZES];\n\nexport const BUTTON_ICON_ALIGNMENTS = {\n START: 'start',\n END: 'end',\n} as const;\n\nexport type ButtonIconAlignment = (typeof BUTTON_ICON_ALIGNMENTS)[keyof typeof BUTTON_ICON_ALIGNMENTS];\n\nexport const BUTTON_VARIANTS = {\n FILLED: 'filled',\n OUTLINE: 'outline',\n TONAL: 'tonal',\n TRANSPARENT: 'transparent',\n} as const;\n\ntype ButtonVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];\n\nexport const BUTTON_SPINNER_CONFIG: Record<ButtonSize, { diameter: number; strokeWidth: number }> = {\n [BUTTON_SIZES.XS]: { diameter: 12, strokeWidth: 1.5 },\n [BUTTON_SIZES.SM]: { diameter: 14, strokeWidth: 1.75 },\n [BUTTON_SIZES.MD]: { diameter: 16, strokeWidth: 2 },\n [BUTTON_SIZES.LG]: { diameter: 20, strokeWidth: 2.5 },\n [BUTTON_SIZES.XL]: { diameter: 24, strokeWidth: 3 },\n};\n\nconst PRESSED_VARIANT_MAP: Record<ButtonVariant, string> = {\n [BUTTON_VARIANTS.FILLED]: 'outline',\n [BUTTON_VARIANTS.OUTLINE]: 'filled',\n [BUTTON_VARIANTS.TONAL]: 'filled',\n [BUTTON_VARIANTS.TRANSPARENT]: 'tonal',\n};\n\n@Component({\n selector: '[et-button]',\n template: `\n @if (iconAlignment() === 'start') {\n <div class=\"et-button-icon\">\n <ng-container *ngTemplateOutlet=\"iconTpl\" />\n </div>\n }\n\n <div class=\"et-button-contents\">\n <ng-content />\n </div>\n\n @if (iconAlignment() === 'end') {\n <div class=\"et-button-icon\">\n <ng-container *ngTemplateOutlet=\"iconTpl\" />\n </div>\n }\n\n @if (buttonDir.loading()) {\n <div class=\"et-button-loader\" aria-hidden=\"true\">\n <et-spinner\n [diameter]=\"spinnerConfig().diameter\"\n [strokeWidth]=\"spinnerConfig().strokeWidth\"\n class=\"et-button-loader-spinner\"\n />\n </div>\n }\n\n <ng-template #iconTpl>\n <ng-content select=\"[etIcon]\" />\n </ng-template>\n `,\n styleUrl: './button.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SpinnerComponent],\n hostDirectives: [\n {\n directive: ButtonDirective,\n inputs: ['disabled', 'loading', 'type', 'pressed'],\n },\n ButtonStylesDirective,\n ColorInteractiveDirective,\n FocusRingDirective,\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n ],\n host: {\n class: 'et-button',\n '[attr.data-icon-alignment]': 'iconAlignment()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-size]': 'size()',\n '[attr.data-pressed-variant]': 'pressedVariant()',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class ButtonComponent {\n protected buttonDir = inject(ButtonDirective);\n\n public variant = input<ButtonVariant>(BUTTON_VARIANTS.FILLED);\n public size = input<ButtonSize>(BUTTON_SIZES.MD);\n public iconAlignment = input<ButtonIconAlignment>(BUTTON_ICON_ALIGNMENTS.START);\n\n public canAnimate = createCanAnimateSignal();\n\n public spinnerConfig = computed(() => BUTTON_SPINNER_CONFIG[this.size()]);\n\n public pressedVariant = computed(() => (this.buttonDir.pressed() ? PRESSED_VARIANT_MAP[this.variant()] : null));\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { createCanAnimateSignal, ProvideColorDirective } from '@ethlete/core';\nimport { FocusRingDirective } from '../focus-ring';\nimport { SpinnerComponent } from '../loader';\nimport { ButtonStylesDirective } from './button-styles.directive';\nimport {\n BUTTON_ICON_ALIGNMENTS,\n BUTTON_SIZES,\n BUTTON_SPINNER_CONFIG,\n BUTTON_VARIANTS,\n ButtonIconAlignment,\n ButtonSize,\n} from './button.component';\nimport { ButtonDirective } from './headless';\n\ntype FabVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];\n\n@Component({\n selector: '[et-fab]',\n template: `\n @if (iconAlignment() === 'start') {\n <div class=\"et-fab-icon\">\n <ng-container *ngTemplateOutlet=\"iconTpl\" />\n </div>\n }\n <div class=\"et-fab-contents\">\n <div class=\"et-fab-contents-inner\"><ng-content /></div>\n </div>\n @if (iconAlignment() === 'end') {\n <div class=\"et-fab-icon\">\n <ng-container *ngTemplateOutlet=\"iconTpl\" />\n </div>\n }\n\n @if (buttonDir.loading()) {\n <div class=\"et-button-loader\" aria-hidden=\"true\">\n <et-spinner\n [diameter]=\"spinnerConfig().diameter\"\n [strokeWidth]=\"spinnerConfig().strokeWidth\"\n class=\"et-button-loader-spinner\"\n />\n </div>\n }\n\n <ng-template #iconTpl>\n <ng-content select=\"[etIcon]\" />\n </ng-template>\n `,\n styleUrl: './fab.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SpinnerComponent],\n hostDirectives: [\n {\n directive: ButtonDirective,\n inputs: ['disabled', 'loading', 'type'],\n },\n ButtonStylesDirective,\n FocusRingDirective,\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n ],\n host: {\n class: 'et-fab',\n '[attr.data-variant]': 'variant()',\n '[attr.data-size]': 'size()',\n '[attr.data-expanded]': 'expandedAttr()',\n '[attr.data-icon-alignment]': 'iconAlignment()',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class FabComponent {\n protected buttonDir = inject(ButtonDirective);\n\n public variant = input<FabVariant>(BUTTON_VARIANTS.FILLED);\n public size = input<ButtonSize>(BUTTON_SIZES.MD);\n public expanded = input(false, { transform: booleanAttribute });\n public iconAlignment = input<ButtonIconAlignment>(BUTTON_ICON_ALIGNMENTS.START);\n\n public canAnimate = createCanAnimateSignal();\n\n public spinnerConfig = computed(() => BUTTON_SPINNER_CONFIG[this.size()]);\n\n public expandedAttr = computed(() => (this.expanded() ? true : null));\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal, ProvideColorDirective } from '@ethlete/core';\nimport { FocusRingDirective } from '../focus-ring';\nimport { SpinnerComponent } from '../loader';\nimport { ButtonStylesDirective } from './button-styles.directive';\nimport { BUTTON_SIZES, BUTTON_SPINNER_CONFIG, BUTTON_VARIANTS, ButtonSize } from './button.component';\nimport { ButtonDirective } from './headless';\n\ntype IconButtonVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];\n\nconst PRESSED_VARIANT_MAP: Record<IconButtonVariant, string> = {\n [BUTTON_VARIANTS.FILLED]: 'transparent',\n [BUTTON_VARIANTS.OUTLINE]: 'filled',\n [BUTTON_VARIANTS.TONAL]: 'filled',\n [BUTTON_VARIANTS.TRANSPARENT]: 'tonal',\n};\n\n@Component({\n selector: '[et-icon-button]',\n template: `\n <div class=\"et-icon-button-icon\">\n <ng-content select=\"[etIcon]\" />\n </div>\n\n @if (buttonDir.loading()) {\n <div class=\"et-button-loader\" aria-hidden=\"true\">\n <et-spinner\n [diameter]=\"spinnerConfig().diameter\"\n [strokeWidth]=\"spinnerConfig().strokeWidth\"\n class=\"et-button-loader-spinner\"\n />\n </div>\n }\n `,\n styleUrl: './icon-button.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SpinnerComponent],\n hostDirectives: [\n {\n directive: ButtonDirective,\n inputs: ['disabled', 'loading', 'type', 'pressed'],\n },\n ButtonStylesDirective,\n ColorInteractiveDirective,\n FocusRingDirective,\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n ],\n host: {\n class: 'et-icon-button',\n '[attr.data-variant]': 'variant()',\n '[attr.data-size]': 'size()',\n '[attr.data-pressed-variant]': 'pressedVariant()',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class IconButtonComponent {\n protected buttonDir = inject(ButtonDirective);\n\n public variant = input<IconButtonVariant>(BUTTON_VARIANTS.TRANSPARENT);\n public size = input<ButtonSize>(BUTTON_SIZES.MD);\n\n public canAnimate = createCanAnimateSignal();\n\n public spinnerConfig = computed(() => BUTTON_SPINNER_CONFIG[this.size()]);\n\n public pressedVariant = computed(() => (this.buttonDir.pressed() ? PRESSED_VARIANT_MAP[this.variant()] : null));\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal, ProvideColorDirective } from '@ethlete/core';\nimport { FocusRingDirective } from '../focus-ring';\nimport { SpinnerComponent } from '../loader';\nimport { ButtonStylesDirective } from './button-styles.directive';\nimport {\n BUTTON_ICON_ALIGNMENTS,\n BUTTON_SIZES,\n BUTTON_SPINNER_CONFIG,\n ButtonIconAlignment,\n ButtonSize,\n} from './button.component';\nimport { ButtonDirective } from './headless';\n\n@Component({\n selector: '[et-text-button]',\n template: `\n @if (iconAlignment() === 'start') {\n <div class=\"et-text-button-icon\">\n <ng-container *ngTemplateOutlet=\"iconTpl\" />\n </div>\n }\n\n <div class=\"et-text-button-contents\">\n <ng-content />\n </div>\n\n @if (iconAlignment() === 'end') {\n <div class=\"et-text-button-icon\">\n <ng-container *ngTemplateOutlet=\"iconTpl\" />\n </div>\n }\n\n @if (buttonDir.loading()) {\n <div class=\"et-button-loader\" aria-hidden=\"true\">\n <et-spinner\n [diameter]=\"spinnerConfig().diameter\"\n [strokeWidth]=\"spinnerConfig().strokeWidth\"\n class=\"et-button-loader-spinner\"\n />\n </div>\n }\n\n <ng-template #iconTpl>\n <ng-content select=\"[etIcon]\" />\n </ng-template>\n `,\n styleUrl: './text-button.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SpinnerComponent],\n hostDirectives: [\n {\n directive: ButtonDirective,\n inputs: ['disabled', 'loading', 'type'],\n },\n ButtonStylesDirective,\n ColorInteractiveDirective,\n FocusRingDirective,\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n ],\n host: {\n class: 'et-text-button',\n '[attr.data-icon-alignment]': 'iconAlignment()',\n '[attr.data-size]': 'size()',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class TextButtonComponent {\n protected buttonDir = inject(ButtonDirective);\n\n public size = input<ButtonSize>(BUTTON_SIZES.MD);\n public iconAlignment = input<ButtonIconAlignment>(BUTTON_ICON_ALIGNMENTS.START);\n\n public canAnimate = createCanAnimateSignal();\n\n public spinnerConfig = computed(() => BUTTON_SPINNER_CONFIG[this.size()]);\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal, ProvideColorDirective } from '@ethlete/core';\nimport { FocusRingDirective } from '../focus-ring';\nimport { SpinnerComponent } from '../loader';\nimport { ButtonStylesDirective } from './button-styles.directive';\nimport { ButtonDirective } from './headless';\n\nexport const WINDOW_CONTROL_BUTTON_SIZES = {\n SM: 'sm',\n MD: 'md',\n LG: 'lg',\n} as const;\n\nexport type WindowControlButtonSize = (typeof WINDOW_CONTROL_BUTTON_SIZES)[keyof typeof WINDOW_CONTROL_BUTTON_SIZES];\n\nexport const WINDOW_CONTROL_BUTTON_KINDS = {\n DEFAULT: 'default',\n CLOSE: 'close',\n} as const;\n\nexport type WindowControlButtonKind = (typeof WINDOW_CONTROL_BUTTON_KINDS)[keyof typeof WINDOW_CONTROL_BUTTON_KINDS];\n\nconst WINDOW_CONTROL_BUTTON_SPINNER_CONFIG = {\n [WINDOW_CONTROL_BUTTON_SIZES.SM]: { diameter: 12, strokeWidth: 2 },\n [WINDOW_CONTROL_BUTTON_SIZES.MD]: { diameter: 14, strokeWidth: 2 },\n [WINDOW_CONTROL_BUTTON_SIZES.LG]: { diameter: 16, strokeWidth: 2.5 },\n} as const;\n\n@Component({\n selector: '[et-window-control-button]',\n template: `\n <div class=\"et-window-control-button-icon\">\n <ng-content />\n </div>\n\n @if (buttonDir.loading()) {\n <div class=\"et-button-loader\" aria-hidden=\"true\">\n <et-spinner\n [diameter]=\"spinnerConfig().diameter\"\n [strokeWidth]=\"spinnerConfig().strokeWidth\"\n class=\"et-button-loader-spinner\"\n />\n </div>\n }\n `,\n styleUrl: './window-control-button.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SpinnerComponent],\n hostDirectives: [\n {\n directive: ButtonDirective,\n inputs: ['disabled', 'loading', 'type', 'pressed'],\n },\n ButtonStylesDirective,\n ColorInteractiveDirective,\n FocusRingDirective,\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n ],\n host: {\n class: 'et-window-control-button',\n '[attr.data-kind]': 'kind()',\n '[attr.data-size]': 'size()',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class WindowControlButtonComponent {\n protected buttonDir = inject(ButtonDirective);\n\n public size = input<WindowControlButtonSize>(WINDOW_CONTROL_BUTTON_SIZES.MD);\n public kind = input<WindowControlButtonKind>(WINDOW_CONTROL_BUTTON_KINDS.DEFAULT);\n\n public canAnimate = createCanAnimateSignal();\n\n protected spinnerConfig = computed(() => WINDOW_CONTROL_BUTTON_SPINNER_CONFIG[this.size()]);\n}\n","import { ButtonComponent } from './button.component';\nimport { FabComponent } from './fab.component';\nimport { ButtonDirective } from './headless';\nimport { IconButtonComponent } from './icon-button.component';\nimport { TextButtonComponent } from './text-button.component';\nimport { WindowControlButtonComponent } from './window-control-button.component';\n\nexport const BUTTON_IMPORTS = [\n ButtonComponent,\n FabComponent,\n IconButtonComponent,\n TextButtonComponent,\n WindowControlButtonComponent,\n ButtonDirective,\n] as const;\n","export const FORM_FIELD_ERROR_CODES = {\n MISSING_CONTROL: 1800,\n} as const;\n","import { InjectionToken, Signal, WritableSignal } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\n\nexport const FORM_FIELD_CONTROL_TYPES = {\n TEXT_INPUT: 'text-input',\n CHECKBOX: 'checkbox',\n RADIO: 'radio',\n SWITCH: 'switch',\n SEGMENTED_BUTTON: 'segmented-button',\n SELECTION_LIST: 'selection-list',\n} as const;\n\nexport type FormFieldControlType = (typeof FORM_FIELD_CONTROL_TYPES)[keyof typeof FORM_FIELD_CONTROL_TYPES];\n\nexport type FormFieldControl = {\n touched: Signal<boolean>;\n invalid: Signal<boolean>;\n errors: Signal<readonly ValidationError.WithOptionalFieldTree[]>;\n name: Signal<string>;\n required?: Signal<boolean>;\n disabled?: Signal<boolean>;\n effectiveDisabled?: Signal<boolean>;\n describedBy: WritableSignal<string | null>;\n controlType: Signal<FormFieldControlType>;\n focused?: Signal<boolean>;\n hasValue?: Signal<boolean>;\n activate(): void;\n};\n\nexport type HintComponentBase = object;\n\nexport const FORM_FIELD_TOKEN = new InjectionToken<FormFieldDirectiveBase>('FORM_FIELD_TOKEN');\n\nexport type FormFieldDirectiveBase = {\n registerControl(control: FormFieldControl): void;\n unregisterControl(control: FormFieldControl): void;\n registerHint(hint: HintComponentBase): void;\n unregisterHint(hint: HintComponentBase): void;\n unregisterLabel(label: LabelDirectiveBase): void;\n registeredControl: WritableSignal<FormFieldControl | null>;\n registeredHint: WritableSignal<HintComponentBase | null>;\n registeredLabel: WritableSignal<LabelDirectiveBase | null>;\n activate(): void;\n};\n\nexport type LabelDirectiveBase = {\n id: Signal<string>;\n};\n","import { afterNextRender, computed, Directive, effect, signal } from '@angular/core';\nimport { RuntimeError } from '@ethlete/core';\nimport { FORM_FIELD_ERROR_CODES } from './form-field-errors';\nimport {\n FORM_FIELD_CONTROL_TYPES,\n FORM_FIELD_TOKEN,\n FormFieldControl,\n FormFieldDirectiveBase,\n HintComponentBase,\n LabelDirectiveBase,\n} from './form-field.tokens';\n\nlet uniqueIdCounter = 0;\n\n@Directive({\n selector: '[etFormField]',\n providers: [{ provide: FORM_FIELD_TOKEN, useExisting: FormFieldDirective }],\n})\nexport class FormFieldDirective implements FormFieldDirectiveBase {\n /** @internal */\n public registeredControl = signal<FormFieldControl | null>(null);\n\n /** @internal */\n public registeredHint = signal<HintComponentBase | null>(null);\n\n /** @internal */\n public registeredLabel = signal<LabelDirectiveBase | null>(null);\n\n private readonly FALLBACK_ID = `ff-${uniqueIdCounter++}`;\n\n public errorId = computed(() => {\n const ctrl = this.registeredControl();\n const name = ctrl?.name();\n\n return name ? `et-form-field-error-${name}` : `et-form-field-error-${this.FALLBACK_ID}`;\n });\n\n public hintId = computed(() => {\n const ctrl = this.registeredControl();\n const name = ctrl?.name();\n\n return name ? `et-form-field-hint-${name}` : `et-form-field-hint-${this.FALLBACK_ID}`;\n });\n\n public shouldDisplayError = computed(() => {\n const ctrl = this.registeredControl();\n\n if (!ctrl) {\n return false;\n }\n\n return ctrl.touched() && ctrl.invalid();\n });\n\n public errors = computed(() => this.registeredControl()?.errors() ?? []);\n\n public controlType = computed(() => this.registeredControl()?.controlType() ?? FORM_FIELD_CONTROL_TYPES.TEXT_INPUT);\n\n public focused = computed(() => this.registeredControl()?.focused?.() ?? false);\n\n public hasValue = computed(() => this.registeredControl()?.hasValue?.() ?? false);\n\n public usesTextFieldShell = computed(() => this.controlType() === FORM_FIELD_CONTROL_TYPES.TEXT_INPUT);\n\n public shouldFloatLabel = computed(() => this.focused() || this.hasValue());\n\n public describedById = computed(() => {\n if (this.shouldDisplayError() && this.errors().length > 0) {\n return this.errorId();\n }\n\n if (this.registeredHint()) {\n return this.hintId();\n }\n\n return null;\n });\n\n constructor() {\n effect(() => {\n const control = this.registeredControl();\n\n if (!control) {\n return;\n }\n\n control.describedBy.set(this.describedById());\n });\n\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.registeredControl()) {\n throw new RuntimeError(\n FORM_FIELD_ERROR_CODES.MISSING_CONTROL,\n '[FormFieldDirective] No form control found. Add <et-input> or <et-checkbox> inside <et-form-field>.',\n );\n }\n });\n }\n }\n\n /** @internal */\n public registerControl(control: FormFieldControl) {\n const previousControl = this.registeredControl();\n\n if (previousControl === control) {\n return;\n }\n\n previousControl?.describedBy.set(null);\n this.registeredControl.set(control);\n }\n\n /** @internal */\n public unregisterControl(control: FormFieldControl) {\n if (this.registeredControl() === control) {\n control.describedBy.set(null);\n this.registeredControl.set(null);\n }\n }\n\n /** @internal */\n public registerHint(hint: HintComponentBase) {\n if (this.registeredHint() === hint) {\n return;\n }\n\n this.registeredHint.set(hint);\n }\n\n /** @internal */\n public unregisterHint(hint: HintComponentBase) {\n if (this.registeredHint() === hint) {\n this.registeredHint.set(null);\n }\n }\n\n /** @internal */\n public unregisterLabel(label: LabelDirectiveBase) {\n if (this.registeredLabel() === label) {\n this.registeredLabel.set(null);\n }\n }\n\n public activate() {\n this.registeredControl()?.activate();\n }\n}\n","import { computed, effect, ElementRef, inject, signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ValidationError } from '@angular/forms/signals';\nimport {\n AnimatableDirective,\n createProvider,\n injectErrorTheme,\n ProvideColorDirective,\n signalElementDimensions,\n} from '@ethlete/core';\nimport { EMPTY, filter, switchMap, tap } from 'rxjs';\nimport { FormFieldDirective } from './form-field.directive';\n\nconst SUPPORT_CONTENT_STATE = {\n NONE: 'none',\n HINT: 'hint',\n ERROR: 'error',\n} as const;\n\ntype SupportContentState = (typeof SUPPORT_CONTENT_STATE)[keyof typeof SUPPORT_CONTENT_STATE];\n\nconst formSupportFactory = () => {\n const provideColor = inject(ProvideColorDirective, { optional: true });\n const formFieldDir = inject(FormFieldDirective);\n const errorColorTheme = injectErrorTheme();\n\n const errorContent = signal<ElementRef<HTMLElement> | undefined>(undefined);\n const hintContent = signal<ElementRef<HTMLElement> | undefined>(undefined);\n const errorAnimatable = signal<AnimatableDirective | undefined>(undefined);\n const hintAnimatable = signal<AnimatableDirective | undefined>(undefined);\n\n const errorDimensions = signalElementDimensions(errorContent);\n const hintDimensions = signalElementDimensions(hintContent);\n\n const semanticSupportState = computed<SupportContentState>(() => {\n if (formFieldDir.shouldDisplayError() && formFieldDir.errors().length > 0) {\n return SUPPORT_CONTENT_STATE.ERROR;\n }\n\n if (formFieldDir.registeredHint()) {\n return SUPPORT_CONTENT_STATE.HINT;\n }\n\n return SUPPORT_CONTENT_STATE.NONE;\n });\n\n const displaysError = computed(() => semanticSupportState() === SUPPORT_CONTENT_STATE.ERROR);\n\n const supportState = signal<{\n renderedErrors: readonly ValidationError.WithOptionalFieldTree[];\n leavingState: SupportContentState;\n frozenErrorColor: string | null;\n }>({ renderedErrors: [], leavingState: SUPPORT_CONTENT_STATE.NONE, frozenErrorColor: null });\n\n const shouldRenderSupport = computed(() => {\n return (\n semanticSupportState() !== SUPPORT_CONTENT_STATE.NONE ||\n supportState().leavingState !== SUPPORT_CONTENT_STATE.NONE\n );\n });\n\n const shouldRenderError = computed(() => {\n return (\n semanticSupportState() === SUPPORT_CONTENT_STATE.ERROR ||\n supportState().leavingState === SUPPORT_CONTENT_STATE.ERROR\n );\n });\n\n const shouldRenderHint = computed(() => {\n return (\n semanticSupportState() === SUPPORT_CONTENT_STATE.HINT ||\n supportState().leavingState === SUPPORT_CONTENT_STATE.HINT\n );\n });\n\n const errorActive = computed(() => semanticSupportState() === SUPPORT_CONTENT_STATE.ERROR);\n const hintActive = computed(() => semanticSupportState() === SUPPORT_CONTENT_STATE.HINT);\n\n const visibleErrors = computed(() => {\n if (semanticSupportState() === SUPPORT_CONTENT_STATE.ERROR) {\n return formFieldDir.errors();\n }\n\n return supportState().renderedErrors;\n });\n\n const supportHeight = computed(() => {\n switch (semanticSupportState()) {\n case SUPPORT_CONTENT_STATE.ERROR:\n return errorDimensions().offset?.height ?? 0;\n case SUPPORT_CONTENT_STATE.HINT:\n return hintDimensions().offset?.height ?? 0;\n default:\n return 0;\n }\n });\n\n toObservable(errorAnimatable)\n .pipe(\n switchMap((animatable) => (animatable ? animatable.animationEnd$ : EMPTY)),\n filter(() => {\n return (\n supportState().leavingState === SUPPORT_CONTENT_STATE.ERROR &&\n semanticSupportState() !== SUPPORT_CONTENT_STATE.ERROR\n );\n }),\n tap(() => {\n supportState.update((s) => ({\n ...s,\n leavingState: SUPPORT_CONTENT_STATE.NONE,\n renderedErrors: [],\n frozenErrorColor: null,\n }));\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n toObservable(hintAnimatable)\n .pipe(\n switchMap((animatable) => (animatable ? animatable.animationEnd$ : EMPTY)),\n filter(() => {\n return (\n supportState().leavingState === SUPPORT_CONTENT_STATE.HINT &&\n semanticSupportState() !== SUPPORT_CONTENT_STATE.HINT\n );\n }),\n tap(() => {\n supportState.update((s) => ({ ...s, leavingState: SUPPORT_CONTENT_STATE.NONE }));\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n effect(() => {\n const state = semanticSupportState();\n const errors = formFieldDir.errors();\n const errorEl = errorContent()?.nativeElement;\n const currentErrorColor = errorEl ? getComputedStyle(errorEl).color : null;\n\n supportState.update((s) => {\n if (state === SUPPORT_CONTENT_STATE.ERROR) {\n return {\n renderedErrors: errors,\n leavingState:\n s.leavingState === SUPPORT_CONTENT_STATE.HINT ? SUPPORT_CONTENT_STATE.HINT : SUPPORT_CONTENT_STATE.NONE,\n frozenErrorColor: null,\n };\n }\n\n if (state === SUPPORT_CONTENT_STATE.HINT) {\n const hasErrors = s.renderedErrors.length > 0;\n\n return {\n renderedErrors: hasErrors ? s.renderedErrors : [],\n leavingState: hasErrors ? SUPPORT_CONTENT_STATE.ERROR : SUPPORT_CONTENT_STATE.NONE,\n frozenErrorColor: hasErrors ? (s.frozenErrorColor ?? currentErrorColor) : null,\n };\n }\n\n const leaving =\n s.renderedErrors.length > 0\n ? SUPPORT_CONTENT_STATE.ERROR\n : formFieldDir.registeredHint()\n ? SUPPORT_CONTENT_STATE.HINT\n : SUPPORT_CONTENT_STATE.NONE;\n\n return {\n renderedErrors: s.renderedErrors,\n leavingState: leaving,\n frozenErrorColor: leaving === SUPPORT_CONTENT_STATE.ERROR ? (s.frozenErrorColor ?? currentErrorColor) : null,\n };\n });\n });\n\n effect(() => {\n const showError = displaysError();\n\n untracked(() => {\n if (!provideColor) return;\n\n if (showError) {\n provideColor.forceColor(errorColorTheme);\n\n return;\n }\n\n provideColor.clearForcedColor();\n });\n });\n\n return {\n errorColorTheme,\n formFieldDir,\n errorContent,\n hintContent,\n errorAnimatable,\n hintAnimatable,\n semanticSupportState,\n displaysError,\n shouldRenderSupport,\n shouldRenderError,\n shouldRenderHint,\n errorActive,\n hintActive,\n visibleErrors,\n supportHeight,\n };\n};\n\nexport const [provideFormSupport, injectFormSupport] = createProvider(formSupportFactory, {\n name: 'FormSupport',\n});\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FORM_FIELD_TOKEN, LabelDirectiveBase } from './form-field.tokens';\n\nlet uniqueIdCounter = 0;\n\n@Component({\n selector: 'et-label',\n template: `\n <span class=\"et-label-content\">\n <ng-content />\n </span>\n\n @if (requiredMarkerVisible()) {\n <span class=\"et-label-required-marker\" aria-hidden=\"true\">*</span>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id()',\n '[attr.data-disabled]': 'effectiveDisabled() || null',\n '(click)': 'activateControl()',\n },\n styles: `\n et-label {\n display: inline;\n min-inline-size: 0;\n }\n\n .et-label-content {\n min-inline-size: 0;\n }\n\n .et-label-required-marker {\n display: inline-block;\n color: var(--et-theme-color-primary-solid);\n margin-inline-start: 0.45ch;\n transition: color 150ms ease;\n }\n\n et-label[data-disabled] .et-label-required-marker {\n color: var(--et-surface-interaction-disabled-solid, currentColor);\n }\n `,\n})\nexport class LabelDirective implements LabelDirectiveBase {\n private formField = inject(FORM_FIELD_TOKEN, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n public id = signal(`et-label-${uniqueIdCounter++}`);\n public requiredMarkerVisible = computed(() => this.formField?.registeredControl()?.required?.() ?? false);\n public effectiveDisabled = computed(\n () =>\n this.formField?.registeredControl()?.effectiveDisabled?.() ??\n this.formField?.registeredControl()?.disabled?.() ??\n false,\n );\n\n constructor() {\n this.formField?.registeredLabel.set(this);\n this.destroyRef.onDestroy(() => this.formField?.unregisterLabel(this));\n }\n\n public activateControl() {\n this.formField?.activate();\n }\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject, input, model, signal } from '@angular/core';\nimport { FormCheckboxControl, ValidationError } from '@angular/forms/signals';\nimport { FORM_FIELD_CONTROL_TYPES, FORM_FIELD_TOKEN, FormFieldControl } from '../../form-field/headless';\n\n@Directive({\n selector: '[etCheckbox]',\n host: {\n role: 'checkbox',\n '[attr.aria-checked]': 'ariaChecked()',\n '[attr.aria-invalid]': 'shouldDisplayError() || null',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.aria-required]': 'required() || null',\n '[attr.aria-describedby]': 'describedById() || null',\n '[attr.aria-labelledby]': 'labelId() || null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.space)': '$event.preventDefault()',\n '(keyup.space)': 'toggle()',\n '(blur)': 'touched.set(true)',\n },\n})\nexport class CheckboxDirective implements FormCheckboxControl, FormFieldControl {\n private formField = inject(FORM_FIELD_TOKEN, { optional: true });\n private destroyRef = inject(DestroyRef);\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n public checked = model(false);\n public indeterminate = model(false);\n public touched = model(false);\n public disabled = input(false);\n public invalid = input(false);\n public errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n public required = input(false);\n public name = input('');\n\n public ariaChecked = computed(() => {\n if (this.indeterminate()) {\n return 'mixed';\n }\n\n return this.checked();\n });\n\n public shouldDisplayError = computed(() => this.touched() && this.invalid());\n\n public describedBy = signal<string | null>(null);\n public controlType = signal(FORM_FIELD_CONTROL_TYPES.CHECKBOX);\n\n public labelId = computed(() => this.formField?.registeredLabel()?.id() ?? null);\n\n public describedById = computed(() => this.describedBy());\n\n constructor() {\n this.formField?.registerControl(this);\n this.destroyRef.onDestroy(() => this.formField?.unregisterControl(this));\n }\n\n public toggle() {\n if (this.disabled()) {\n return;\n }\n\n if (this.indeterminate()) {\n this.indeterminate.set(false);\n this.checked.set(true);\n\n return;\n }\n\n this.checked.update((value) => !value);\n }\n\n public activate() {\n if (this.disabled()) return;\n\n this.toggle();\n this.el.nativeElement.focus({ focusVisible: false } as unknown as FocusOptions);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal } from '@ethlete/core';\nimport { FocusRingDirective } from '../../focus-ring';\nimport { CheckboxDirective } from './headless';\n\n@Component({\n selector: 'et-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CheckboxDirective,\n inputs: ['checked', 'indeterminate', 'disabled', 'invalid', 'errors', 'required', 'name'],\n outputs: ['checkedChange', 'indeterminateChange', 'touchedChange'],\n },\n ColorInteractiveDirective,\n FocusRingDirective,\n ],\n host: {\n class: 'et-checkbox',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class CheckboxComponent {\n private checkboxDir = inject(CheckboxDirective);\n private checkmarkEl = viewChild<ElementRef<HTMLElement>>('checkmark');\n private indeterminateEl = viewChild<ElementRef<HTMLElement>>('indeterminate');\n\n public canAnimate = createCanAnimateSignal();\n\n protected frozenCheckmarkColor = signal<string | null>(null);\n protected frozenIndeterminateColor = signal<string | null>(null);\n\n public isChecked = computed(() => this.checkboxDir.ariaChecked() === true);\n public isIndeterminate = computed(() => this.checkboxDir.ariaChecked() === 'mixed');\n\n constructor() {\n effect(() => {\n const checked = this.isChecked();\n const checkmarkEl = this.checkmarkEl()?.nativeElement;\n\n untracked(() => {\n if (checked) {\n this.frozenCheckmarkColor.set(null);\n } else if (checkmarkEl) {\n this.frozenCheckmarkColor.set(getComputedStyle(checkmarkEl).color);\n }\n });\n });\n\n effect(() => {\n const indeterminate = this.isIndeterminate();\n const indeterminateEl = this.indeterminateEl()?.nativeElement;\n\n untracked(() => {\n if (indeterminate) {\n this.frozenIndeterminateColor.set(null);\n } else if (indeterminateEl) {\n this.frozenIndeterminateColor.set(getComputedStyle(indeterminateEl).color);\n }\n });\n });\n }\n}\n","<div class=\"et-checkbox-box\">\n <svg\n #checkmark\n [style.color]=\"frozenCheckmarkColor()\"\n class=\"et-checkbox-checkmark\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <polyline\n class=\"et-checkbox-checkmark-path\"\n points=\"3.5 8 6.5 11 12.5 5\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <svg\n #indeterminate\n [style.color]=\"frozenIndeterminateColor()\"\n class=\"et-checkbox-indeterminate\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <line\n class=\"et-checkbox-indeterminate-path\"\n x1=\"4\"\n y1=\"8\"\n x2=\"12\"\n y2=\"8\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n</div>\n","import { CheckboxComponent } from './checkbox.component';\nimport { CheckboxDirective } from './headless';\n\nexport const CHECKBOX_IMPORTS = [CheckboxComponent, CheckboxDirective] as const;\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\n\n@Component({\n selector: 'et-form-error',\n template: '{{ error().message }}',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'et-form-error',\n },\n})\nexport class FormErrorComponent {\n public error = input.required<ValidationError.WithOptionalFieldTree>();\n}\n","import { ChangeDetectionStrategy, Component, effect, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport {\n AnimatableDirective,\n ColorInteractiveContainerDirective,\n ColorInteractiveExcludeDirective,\n createCanAnimateSignal,\n ProvideColorDirective,\n} from '@ethlete/core';\nimport { FormErrorComponent } from '../form-field/form-error.component';\nimport { FormFieldDirective, injectFormSupport, provideFormSupport } from '../form-field/headless';\n\n@Component({\n selector: 'et-choice-field',\n templateUrl: './choice-field.component.html',\n styleUrl: './choice-field.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AnimatableDirective,\n ColorInteractiveContainerDirective,\n ColorInteractiveExcludeDirective,\n FormErrorComponent,\n ProvideColorDirective,\n ],\n providers: [provideFormSupport()],\n hostDirectives: [FormFieldDirective, { directive: ProvideColorDirective, inputs: ['etProvideColor:color'] }],\n host: {\n class: 'et-choice-field',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n '[attr.data-error]': 'support.displaysError() || null',\n },\n})\nexport class ChoiceFieldComponent {\n private errorContentRef = viewChild<ElementRef<HTMLElement>>('errorContent');\n private hintContentRef = viewChild<ElementRef<HTMLElement>>('hintContent');\n private errorAnimatableRef = viewChild<AnimatableDirective>('errorAnimatable');\n private hintAnimatableRef = viewChild<AnimatableDirective>('hintAnimatable');\n\n public support = injectFormSupport();\n public canAnimate = createCanAnimateSignal();\n\n constructor() {\n effect(() => {\n this.support.errorContent.set(this.errorContentRef());\n this.support.hintContent.set(this.hintContentRef());\n this.support.errorAnimatable.set(this.errorAnimatableRef());\n this.support.hintAnimatable.set(this.hintAnimatableRef());\n });\n }\n}\n","<div class=\"et-choice-field-control\" etColorInteractiveContainer>\n <div class=\"et-choice-field-control-slot\">\n <ng-content />\n </div>\n\n <div class=\"et-choice-field-label-area\">\n <ng-content select=\"et-label\" />\n </div>\n</div>\n\n@if (support.shouldRenderSupport()) {\n <div [style.block-size.px]=\"support.supportHeight()\" class=\"et-choice-field-support\" etColorInteractiveExclude>\n <div class=\"et-choice-field-support-stack\">\n @if (support.shouldRenderError()) {\n <div\n #errorContent\n #errorAnimatable=\"etAnimatable\"\n [id]=\"support.formFieldDir.errorId()\"\n [attr.aria-atomic]=\"support.errorActive() ? 'true' : null\"\n [attr.aria-hidden]=\"!support.errorActive() ? 'true' : null\"\n [attr.aria-live]=\"support.errorActive() ? 'polite' : null\"\n [attr.data-active]=\"support.errorActive() || null\"\n [etProvideColor]=\"support.errorColorTheme\"\n class=\"et-choice-field-support-content et-choice-field-errors\"\n etAnimatable\n >\n @for (error of support.visibleErrors(); track $index) {\n <et-form-error [error]=\"error\" />\n }\n </div>\n }\n\n @if (support.shouldRenderHint()) {\n <div\n #hintContent\n #hintAnimatable=\"etAnimatable\"\n [id]=\"support.formFieldDir.hintId()\"\n [attr.aria-hidden]=\"!support.hintActive() ? 'true' : null\"\n [attr.data-active]=\"support.hintActive() || null\"\n class=\"et-choice-field-support-content et-choice-field-hint\"\n etAnimatable\n >\n <ng-content select=\"et-hint\" />\n </div>\n }\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, DestroyRef, inject, ViewEncapsulation } from '@angular/core';\nimport { FORM_FIELD_TOKEN, HintComponentBase } from './headless';\n\n@Component({\n selector: 'et-hint',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HintComponent implements HintComponentBase {\n private formField = inject(FORM_FIELD_TOKEN, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n this.formField?.registerHint(this);\n this.destroyRef.onDestroy(() => this.formField?.unregisterHint(this));\n }\n}\n","import { FormFieldDirective, LabelDirective } from '../form-field/headless';\nimport { HintComponent } from '../form-field/hint.component';\nimport { ChoiceFieldComponent } from './choice-field.component';\n\nexport const CHOICE_FIELD_IMPORTS = [ChoiceFieldComponent, FormFieldDirective, LabelDirective, HintComponent] as const;\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'et-description',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'et-description',\n },\n styles: `\n et-description {\n display: block;\n font-size: var(--et-description-font-size, 12px);\n color: var(--et-surface-color-muted-solid, currentColor);\n }\n `,\n})\nexport class DescriptionComponent {}\n","export const FORM_FIELD_APPEARANCES = {\n BOX: 'box',\n UNDERLINE: 'underline',\n} as const;\n\nexport type FormFieldAppearance = (typeof FORM_FIELD_APPEARANCES)[keyof typeof FORM_FIELD_APPEARANCES];\n\nexport const FORM_FIELD_FILLS = {\n TRANSPARENT: 'transparent',\n FILLED: 'filled',\n} as const;\n\nexport type FormFieldFill = (typeof FORM_FIELD_FILLS)[keyof typeof FORM_FIELD_FILLS];\n\nexport const FORM_FIELD_LABEL_MODES = {\n STATIC: 'static',\n INLINE: 'inline',\n FLOATING_INSIDE: 'floating-inside',\n FLOATING_OUTSIDE: 'floating-outside',\n} as const;\n\nexport type FormFieldLabelMode = (typeof FORM_FIELD_LABEL_MODES)[keyof typeof FORM_FIELD_LABEL_MODES];\n\nexport const FORM_FIELD_SIZES = {\n SM: 'sm',\n MD: 'md',\n LG: 'lg',\n} as const;\n\nexport type FormFieldSize = (typeof FORM_FIELD_SIZES)[keyof typeof FORM_FIELD_SIZES];\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ValidationError } from '@angular/forms/signals';\nimport {\n AnimatableDirective,\n ColorInteractiveExcludeDirective,\n ColorInteractiveHasFocusDirective,\n createCanAnimateSignal,\n injectErrorTheme,\n injectSurfaceThemes,\n ProvideColorDirective,\n ProvideSurfaceDirective,\n resolveSurfaceByElevation,\n signalElementDimensions,\n SURFACE_PROVIDER,\n} from '@ethlete/core';\nimport { EMPTY, filter, switchMap, tap } from 'rxjs';\nimport { FormErrorComponent } from './form-error.component';\nimport {\n FORM_FIELD_APPEARANCES,\n FORM_FIELD_FILLS,\n FORM_FIELD_LABEL_MODES,\n FORM_FIELD_SIZES,\n FormFieldAppearance,\n FormFieldFill,\n FormFieldLabelMode,\n FormFieldSize,\n} from './form-field.variants';\nimport { FormFieldDirective } from './headless';\n\nconst SUPPORT_CONTENT_STATE = {\n NONE: 'none',\n HINT: 'hint',\n ERROR: 'error',\n} as const;\n\ntype SupportContentState = (typeof SUPPORT_CONTENT_STATE)[keyof typeof SUPPORT_CONTENT_STATE];\n\nconst SUPPORT_TRANSITION_DIRECTION = {\n FROM_ABOVE: 'from-above',\n FROM_BELOW: 'from-below',\n TO_ABOVE: 'to-above',\n TO_BELOW: 'to-below',\n} as const;\n\ntype SupportTransitionDirection = (typeof SUPPORT_TRANSITION_DIRECTION)[keyof typeof SUPPORT_TRANSITION_DIRECTION];\n\ntype SupportPresentationState = {\n renderedState: SupportContentState;\n leavingState: SupportContentState;\n renderedErrors: readonly ValidationError.WithOptionalFieldTree[];\n frozenErrorColor: string | null;\n errorDirection: SupportTransitionDirection;\n hintDirection: SupportTransitionDirection;\n};\n\ntype ReduceSupportPresentationInput = {\n presentation: SupportPresentationState;\n semanticSupportState: SupportContentState;\n errors: readonly ValidationError.WithOptionalFieldTree[];\n currentErrorColor: string | null;\n};\n\nconst INITIAL_SUPPORT_PRESENTATION_STATE: SupportPresentationState = {\n renderedState: SUPPORT_CONTENT_STATE.NONE,\n leavingState: SUPPORT_CONTENT_STATE.NONE,\n renderedErrors: [],\n frozenErrorColor: null,\n errorDirection: SUPPORT_TRANSITION_DIRECTION.FROM_BELOW,\n hintDirection: SUPPORT_TRANSITION_DIRECTION.FROM_ABOVE,\n};\n\nconst supportPresentationIncludesState = ({\n presentation,\n state,\n}: {\n presentation: SupportPresentationState;\n state: SupportContentState;\n}) => {\n return presentation.renderedState === state || presentation.leavingState === state;\n};\n\nconst reduceSupportPresentation = ({\n presentation,\n semanticSupportState,\n errors,\n currentErrorColor,\n}: ReduceSupportPresentationInput) => {\n if (semanticSupportState === SUPPORT_CONTENT_STATE.ERROR) {\n const hasHintPresentation = supportPresentationIncludesState({\n presentation,\n state: SUPPORT_CONTENT_STATE.HINT,\n });\n\n return {\n ...presentation,\n renderedState: SUPPORT_CONTENT_STATE.ERROR,\n leavingState: hasHintPresentation ? SUPPORT_CONTENT_STATE.HINT : SUPPORT_CONTENT_STATE.NONE,\n renderedErrors: errors,\n frozenErrorColor: null,\n errorDirection: SUPPORT_TRANSITION_DIRECTION.FROM_BELOW,\n hintDirection: hasHintPresentation ? SUPPORT_TRANSITION_DIRECTION.TO_ABOVE : presentation.hintDirection,\n };\n }\n\n if (semanticSupportState === SUPPORT_CONTENT_STATE.HINT) {\n const hasErrorPresentation = supportPresentationIncludesState({\n presentation,\n state: SUPPORT_CONTENT_STATE.ERROR,\n });\n\n return {\n ...presentation,\n renderedState: SUPPORT_CONTENT_STATE.HINT,\n leavingState: hasErrorPresentation ? SUPPORT_CONTENT_STATE.ERROR : SUPPORT_CONTENT_STATE.NONE,\n renderedErrors: hasErrorPresentation ? presentation.renderedErrors : [],\n frozenErrorColor: hasErrorPresentation ? (presentation.frozenErrorColor ?? currentErrorColor) : null,\n errorDirection: hasErrorPresentation ? SUPPORT_TRANSITION_DIRECTION.TO_BELOW : presentation.errorDirection,\n hintDirection: hasErrorPresentation ? SUPPORT_TRANSITION_DIRECTION.FROM_ABOVE : presentation.hintDirection,\n };\n }\n\n const nextLeavingState = supportPresentationIncludesState({\n presentation,\n state: SUPPORT_CONTENT_STATE.ERROR,\n })\n ? SUPPORT_CONTENT_STATE.ERROR\n : supportPresentationIncludesState({\n presentation,\n state: SUPPORT_CONTENT_STATE.HINT,\n })\n ? SUPPORT_CONTENT_STATE.HINT\n : SUPPORT_CONTENT_STATE.NONE;\n\n return {\n ...presentation,\n renderedState: SUPPORT_CONTENT_STATE.NONE,\n leavingState: nextLeavingState,\n renderedErrors: nextLeavingState === SUPPORT_CONTENT_STATE.ERROR ? presentation.renderedErrors : [],\n frozenErrorColor:\n nextLeavingState === SUPPORT_CONTENT_STATE.ERROR ? (presentation.frozenErrorColor ?? currentErrorColor) : null,\n errorDirection:\n nextLeavingState === SUPPORT_CONTENT_STATE.ERROR\n ? SUPPORT_TRANSITION_DIRECTION.TO_BELOW\n : presentation.errorDirection,\n hintDirection:\n nextLeavingState === SUPPORT_CONTENT_STATE.HINT\n ? SUPPORT_TRANSITION_DIRECTION.TO_ABOVE\n : presentation.hintDirection,\n };\n};\n\n@Component({\n selector: 'et-form-field',\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AnimatableDirective, ColorInteractiveExcludeDirective, FormErrorComponent, ProvideColorDirective],\n hostDirectives: [\n FormFieldDirective,\n { directive: ProvideColorDirective, inputs: ['etProvideColor:color'] },\n { directive: ProvideSurfaceDirective, inputs: ['etProvideSurface:surface'] },\n ColorInteractiveHasFocusDirective,\n ],\n host: {\n class: 'et-form-field',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n '[attr.data-control-type]': 'formFieldDir.controlType()',\n '[attr.data-error]': 'displaysError() || null',\n '[attr.data-appearance]': 'formFieldDir.usesTextFieldShell() ? appearance() : null',\n '[attr.data-fill]': 'formFieldDir.usesTextFieldShell() ? fill() : null',\n '[attr.data-label-floated]': 'hasFloatingTextLabel() && formFieldDir.shouldFloatLabel() ? \"\" : null',\n '[attr.data-label-mode]': 'formFieldDir.usesTextFieldShell() ? labelMode() : null',\n '[attr.data-size]': 'formFieldDir.usesTextFieldShell() ? size() : null',\n '[attr.data-text-shell]': 'formFieldDir.usesTextFieldShell() || null',\n '[style.--_et-form-field-prefix-offset]': 'prefixOffset()',\n },\n})\nexport class FormFieldComponent {\n private provideColor = inject(ProvideColorDirective);\n private provideSurface = inject(ProvideSurfaceDirective);\n private parentSurfaceProvider = inject(SURFACE_PROVIDER, { optional: true, skipSelf: true });\n\n protected formFieldDir = inject(FormFieldDirective);\n\n public appearance = input<FormFieldAppearance>(FORM_FIELD_APPEARANCES.BOX);\n public fill = input<FormFieldFill>(FORM_FIELD_FILLS.TRANSPARENT);\n public labelMode = input<FormFieldLabelMode>(FORM_FIELD_LABEL_MODES.STATIC);\n public size = input<FormFieldSize>(FORM_FIELD_SIZES.MD);\n\n protected errorContent = viewChild<ElementRef<HTMLElement>>('errorContent');\n protected hintContent = viewChild<ElementRef<HTMLElement>>('hintContent');\n public prefixEl = viewChild<ElementRef<HTMLElement>>('prefixEl');\n protected errorAnimatable = viewChild<AnimatableDirective>('errorAnimatable');\n protected hintAnimatable = viewChild<AnimatableDirective>('hintAnimatable');\n\n protected errorColorTheme = injectErrorTheme();\n private surfaceThemes = injectSurfaceThemes({ optional: true });\n\n private errorDimensions = signalElementDimensions(this.errorContent);\n private hintDimensions = signalElementDimensions(this.hintContent);\n private prefixDimensions = signalElementDimensions(this.prefixEl);\n\n private supportPresentation = signal<SupportPresentationState>(INITIAL_SUPPORT_PRESENTATION_STATE);\n\n private resolvedSurface = computed(() => {\n const themes = this.surfaceThemes;\n const parentSurfaceProvider = this.parentSurfaceProvider;\n\n if (!themes || !parentSurfaceProvider) {\n return null;\n }\n\n return resolveSurfaceByElevation(\n themes,\n parentSurfaceProvider.surfaceType() ?? 'dark',\n parentSurfaceProvider.elevation() + 1,\n );\n });\n\n public canAnimate = createCanAnimateSignal();\n\n public semanticSupportState = computed<SupportContentState>(() => {\n if (this.formFieldDir.shouldDisplayError() && this.formFieldDir.errors().length > 0) {\n return SUPPORT_CONTENT_STATE.ERROR;\n }\n\n if (this.formFieldDir.registeredHint()) {\n return SUPPORT_CONTENT_STATE.HINT;\n }\n\n return SUPPORT_CONTENT_STATE.NONE;\n });\n\n protected displaysError = computed(() => this.semanticSupportState() === SUPPORT_CONTENT_STATE.ERROR);\n\n protected hasFloatingTextLabel = computed(\n () =>\n this.formFieldDir.usesTextFieldShell() &&\n this.labelMode() !== FORM_FIELD_LABEL_MODES.STATIC &&\n this.labelMode() !== FORM_FIELD_LABEL_MODES.INLINE,\n );\n\n protected hasInlineLabel = computed(\n () => this.formFieldDir.usesTextFieldShell() && this.labelMode() === FORM_FIELD_LABEL_MODES.INLINE,\n );\n\n protected prefixOffset = computed(() => {\n const width = this.prefixDimensions()?.offset?.width;\n\n if (!width) {\n return null;\n }\n\n return `calc(${width}px + var(--et-form-field-control-affix-gap))`;\n });\n\n protected shouldRenderSupport = computed(() => {\n const presentation = this.supportPresentation();\n\n return (\n presentation.renderedState !== SUPPORT_CONTENT_STATE.NONE ||\n presentation.leavingState !== SUPPORT_CONTENT_STATE.NONE\n );\n });\n\n protected shouldRenderError = computed(() => {\n const presentation = this.supportPresentation();\n\n return (\n presentation.renderedState === SUPPORT_CONTENT_STATE.ERROR ||\n presentation.leavingState === SUPPORT_CONTENT_STATE.ERROR\n );\n });\n\n protected shouldRenderHint = computed(() => {\n const presentation = this.supportPresentation();\n\n return (\n presentation.renderedState === SUPPORT_CONTENT_STATE.HINT ||\n presentation.leavingState === SUPPORT_CONTENT_STATE.HINT\n );\n });\n\n protected errorActive = computed(() => this.semanticSupportState() === SUPPORT_CONTENT_STATE.ERROR);\n protected errorState = computed(() => {\n const presentation = this.supportPresentation();\n\n return presentation.leavingState === SUPPORT_CONTENT_STATE.ERROR ? 'leaving' : 'active';\n });\n protected errorDirection = computed(() => this.supportPresentation().errorDirection);\n protected visibleErrors = computed(() => this.supportPresentation().renderedErrors);\n\n protected hintActive = computed(() => this.semanticSupportState() === SUPPORT_CONTENT_STATE.HINT);\n protected hintState = computed(() => {\n const presentation = this.supportPresentation();\n\n return presentation.leavingState === SUPPORT_CONTENT_STATE.HINT ? 'leaving' : 'active';\n });\n protected hintDirection = computed(() => this.supportPresentation().hintDirection);\n\n protected supportHeight = computed(() => {\n switch (this.semanticSupportState()) {\n case SUPPORT_CONTENT_STATE.ERROR:\n return this.errorDimensions().offset?.height ?? 0;\n case SUPPORT_CONTENT_STATE.HINT:\n return this.hintDimensions().offset?.height ?? 0;\n default:\n return 0;\n }\n });\n\n constructor() {\n toObservable(this.errorAnimatable)\n .pipe(\n switchMap((animatable) => {\n if (!animatable) {\n return EMPTY;\n }\n\n return animatable.animationEnd$;\n }),\n filter(() => {\n const presentation = this.supportPresentation();\n\n return (\n presentation.leavingState === SUPPORT_CONTENT_STATE.ERROR &&\n this.semanticSupportState() !== SUPPORT_CONTENT_STATE.ERROR\n );\n }),\n tap(() => {\n this.supportPresentation.update((presentation) => ({\n ...presentation,\n leavingState: SUPPORT_CONTENT_STATE.NONE,\n renderedErrors: [],\n frozenErrorColor: null,\n }));\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n toObservable(this.hintAnimatable)\n .pipe(\n switchMap((animatable) => {\n if (!animatable) {\n return EMPTY;\n }\n\n return animatable.animationEnd$;\n }),\n filter(() => {\n const presentation = this.supportPresentation();\n\n return (\n presentation.leavingState === SUPPORT_CONTENT_STATE.HINT &&\n this.semanticSupportState() !== SUPPORT_CONTENT_STATE.HINT\n );\n }),\n tap(() => {\n this.supportPresentation.update((presentation) => ({\n ...presentation,\n leavingState: SUPPORT_CONTENT_STATE.NONE,\n }));\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n effect(() => {\n const semanticSupportState = this.semanticSupportState();\n const errors = this.formFieldDir.errors();\n const errorContent = this.errorContent()?.nativeElement;\n const currentErrorColor = errorContent ? getComputedStyle(errorContent).color : null;\n\n this.supportPresentation.update((presentation) =>\n reduceSupportPresentation({\n presentation,\n semanticSupportState,\n errors,\n currentErrorColor,\n }),\n );\n });\n\n effect(() => {\n const showError = this.displaysError();\n\n untracked(() => {\n if (showError) {\n this.provideColor.forceColor(this.errorColorTheme);\n\n return;\n }\n\n this.provideColor.clearForcedColor();\n });\n });\n\n effect(() => {\n const surface = this.resolvedSurface();\n\n untracked(() => {\n if (surface) {\n this.provideSurface.forceSurface(surface.name);\n\n return;\n }\n\n this.provideSurface.clearForcedSurface();\n });\n });\n }\n\n protected handleFramePointerDown(event: MouseEvent) {\n if (!this.formFieldDir.usesTextFieldShell()) {\n return;\n }\n\n const target = event.target as HTMLElement;\n const tagName = target.tagName;\n\n if (\n tagName === 'INPUT' ||\n tagName === 'TEXTAREA' ||\n tagName === 'SELECT' ||\n tagName === 'BUTTON' ||\n tagName === 'A'\n ) {\n return;\n }\n\n event.preventDefault();\n this.formFieldDir.activate();\n }\n}\n","<div class=\"et-form-field-shell\">\n <div (mousedown)=\"handleFramePointerDown($event)\" class=\"et-form-field-control-frame\">\n <div #prefixEl class=\"et-form-field-affix et-form-field-prefix\">\n <ng-content select=\"[etInputPrefix]\" />\n </div>\n\n <div class=\"et-form-field-control-area\">\n <div\n [class.et-form-field-label-area--floating]=\"hasFloatingTextLabel()\"\n [class.et-form-field-label-area--inline]=\"hasInlineLabel()\"\n class=\"et-form-field-label-area\"\n >\n <ng-content select=\"et-label\" />\n </div>\n\n <div class=\"et-form-field-control-slot\">\n <ng-content />\n </div>\n </div>\n\n <div class=\"et-form-field-affix et-form-field-suffix\">\n <ng-content select=\"[etInputSuffix]\" />\n </div>\n </div>\n</div>\n\n@if (shouldRenderSupport()) {\n <div [style.block-size.px]=\"supportHeight()\" class=\"et-form-field-support\" etColorInteractiveExclude>\n <div class=\"et-form-field-support-stack\">\n @if (shouldRenderError()) {\n <div\n #errorContent\n #errorAnimatable=\"etAnimatable\"\n [id]=\"formFieldDir.errorId()\"\n [attr.aria-atomic]=\"errorActive() ? 'true' : null\"\n [attr.aria-hidden]=\"!errorActive() ? 'true' : null\"\n [attr.aria-live]=\"errorActive() ? 'polite' : null\"\n [attr.data-active]=\"errorActive() || null\"\n [attr.data-direction]=\"errorDirection()\"\n [attr.data-state]=\"errorState()\"\n [etProvideColor]=\"errorColorTheme\"\n class=\"et-form-field-support-content et-form-field-errors\"\n etAnimatable\n >\n @for (error of visibleErrors(); track $index) {\n <et-form-error [error]=\"error\" />\n }\n </div>\n }\n\n @if (shouldRenderHint()) {\n <div\n #hintContent\n #hintAnimatable=\"etAnimatable\"\n [id]=\"formFieldDir.hintId()\"\n [attr.aria-hidden]=\"!hintActive() ? 'true' : null\"\n [attr.data-active]=\"hintActive() || null\"\n [attr.data-direction]=\"hintDirection()\"\n [attr.data-state]=\"hintState()\"\n class=\"et-form-field-support-content et-form-field-hint\"\n etAnimatable\n >\n <ng-content select=\"et-hint\" />\n </div>\n }\n </div>\n </div>\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[etInputPrefix]',\n})\nexport class InputPrefixDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[etInputSuffix]',\n})\nexport class InputSuffixDirective {}\n","import { FormFieldComponent } from './form-field.component';\nimport { FormFieldDirective, LabelDirective } from './headless';\nimport { HintComponent } from './hint.component';\nimport { InputPrefixDirective, InputSuffixDirective } from './partials';\n\nexport const FORM_FIELD_IMPORTS = [\n FormFieldComponent,\n FormFieldDirective,\n LabelDirective,\n HintComponent,\n InputPrefixDirective,\n InputSuffixDirective,\n] as const;\n","export const INPUT_TEXT_ALIGNMENTS = {\n START: 'start',\n CENTER: 'center',\n END: 'end',\n} as const;\n\nexport type InputTextAlignment = (typeof INPUT_TEXT_ALIGNMENTS)[keyof typeof INPUT_TEXT_ALIGNMENTS];\n","import { computed, DestroyRef, Directive, inject, input, model, signal } from '@angular/core';\nimport { FormValueControl, ValidationError } from '@angular/forms/signals';\nimport { FORM_FIELD_CONTROL_TYPES, FORM_FIELD_TOKEN, FormFieldControl } from '../../form-field/headless';\nimport { INPUT_TEXT_ALIGNMENTS, InputTextAlignment } from '../input.types';\n\nexport const INPUT_TYPES = {\n TEXT: 'text',\n EMAIL: 'email',\n PASSWORD: 'password',\n TEL: 'tel',\n URL: 'url',\n SEARCH: 'search',\n} as const;\n\ntype InputType = (typeof INPUT_TYPES)[keyof typeof INPUT_TYPES];\n\n@Directive({\n selector: '[etInput]',\n})\nexport class InputDirective implements FormValueControl<string>, FormFieldControl {\n private formField = inject(FORM_FIELD_TOKEN, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n public value = model('');\n public touched = model(false);\n public disabled = input(false);\n public readonly = input(false);\n public hidden = input(false);\n public invalid = input(false);\n public errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n public required = input(false);\n public name = input('');\n\n public type = input<InputType>(INPUT_TYPES.TEXT);\n public placeholder = input('');\n public autocomplete = input('');\n public textAlign = input<InputTextAlignment>(INPUT_TEXT_ALIGNMENTS.START);\n\n public shouldDisplayError = computed(() => this.touched() && this.invalid());\n public hasValue = computed(() => this.value().length > 0);\n\n public describedBy = signal<string | null>(null);\n public controlType = signal(FORM_FIELD_CONTROL_TYPES.TEXT_INPUT);\n public focused = signal(false);\n\n public labelId = computed(() => this.formField?.registeredLabel()?.id() ?? null);\n\n public describedById = computed(() => this.describedBy());\n\n /** @internal */\n public focusTarget = signal<HTMLElement | null>(null);\n\n constructor() {\n this.formField?.registerControl(this);\n this.destroyRef.onDestroy(() => this.formField?.unregisterControl(this));\n }\n\n public activate() {\n if (this.disabled()) return;\n\n this.focusTarget()?.focus();\n }\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ColorInteractiveDirective } from '@ethlete/core';\nimport { InputDirective } from './headless';\n\n@Component({\n selector: 'et-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: InputDirective,\n inputs: [\n 'type',\n 'placeholder',\n 'autocomplete',\n 'textAlign',\n 'value',\n 'disabled',\n 'readonly',\n 'hidden',\n 'invalid',\n 'errors',\n 'required',\n 'name',\n ],\n outputs: ['valueChange', 'touchedChange'],\n },\n ColorInteractiveDirective,\n ],\n host: {\n class: 'et-input',\n '(click)': 'inputDir.activate()',\n },\n})\nexport class InputComponent {\n protected inputDir = inject(InputDirective);\n\n private nativeInput = viewChild<ElementRef<HTMLInputElement>>('nativeInput');\n\n constructor() {\n afterNextRender(() => {\n this.inputDir.focusTarget.set(this.nativeInput()?.nativeElement ?? null);\n });\n }\n\n public syncNativeValue(event: Event) {\n this.inputDir.value.set((event.target as HTMLInputElement).value);\n }\n}\n","<input\n #nativeInput\n [type]=\"inputDir.type()\"\n [value]=\"inputDir.value()\"\n [disabled]=\"inputDir.disabled()\"\n [readOnly]=\"inputDir.readonly()\"\n [required]=\"inputDir.required()\"\n [placeholder]=\"inputDir.placeholder()\"\n [autocomplete]=\"inputDir.autocomplete()\"\n [attr.name]=\"inputDir.name() || null\"\n [attr.aria-invalid]=\"inputDir.shouldDisplayError() || null\"\n [attr.aria-describedby]=\"inputDir.describedById() || null\"\n [attr.aria-labelledby]=\"inputDir.labelId() || null\"\n [attr.data-text-align]=\"inputDir.textAlign()\"\n (input)=\"syncNativeValue($event)\"\n (focus)=\"inputDir.focused.set(true)\"\n (blur)=\"inputDir.focused.set(false); inputDir.touched.set(true)\"\n class=\"et-input-native\"\n/>\n","import { InputDirective } from './headless';\nimport { InputComponent } from './input.component';\n\nexport const INPUT_IMPORTS = [InputComponent, InputDirective] as const;\n","import { ElementRef, InjectionToken, Signal, WritableSignal } from '@angular/core';\n\nexport const SELECTION_LIST_TOKEN = new InjectionToken<SelectionListDirectiveBase>('SELECTION_LIST_TOKEN');\n\nexport const SELECTION_LIST_MULTIPLE = new InjectionToken<boolean>('SELECTION_LIST_MULTIPLE');\n\nexport type SelectionListItem<TValue = unknown> = {\n value: Signal<TValue>;\n checked: WritableSignal<boolean>;\n disabled: Signal<boolean>;\n elementRef: ElementRef<HTMLElement>;\n};\n\nexport type SelectionListDirectiveBase<TValue = unknown> = {\n value: WritableSignal<TValue | TValue[] | null>;\n multiple: Signal<boolean>;\n disabled: Signal<boolean>;\n required: Signal<boolean>;\n name: Signal<string>;\n items: Signal<SelectionListItem<TValue>[]>;\n allSelected: Signal<boolean>;\n someSelected: Signal<boolean>;\n registerItem(item: SelectionListItem<TValue>): void;\n unregisterItem(item: SelectionListItem<TValue>): void;\n select(item: SelectionListItem<TValue>): void;\n focusItem(item: SelectionListItem<TValue>): void;\n markTouched(): void;\n toggleAll(): void;\n};\n","import { computed, Directive, inject, signal } from '@angular/core';\nimport { SELECTION_LIST_TOKEN } from './selection-list.tokens';\n\n@Directive({\n selector: '[etSelectionListControl]',\n host: {\n '[attr.role]': '\"option\"',\n '[attr.aria-checked]': 'ariaChecked()',\n '[attr.aria-disabled]': 'list.disabled() || null',\n '[attr.tabindex]': 'list.disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.space)': 'toggle(); $event.preventDefault()',\n '(keydown.enter)': 'toggle(); $event.preventDefault()',\n },\n})\nexport class SelectionListControlDirective {\n public list = inject(SELECTION_LIST_TOKEN);\n\n public checked = computed(() => this.list.allSelected());\n public indeterminate = computed(() => this.list.someSelected());\n\n public labelId = signal(`et-selection-list-control-label-${uniqueControlLabelId++}`);\n\n public ariaChecked = computed(() => {\n if (this.indeterminate()) {\n return 'mixed';\n }\n\n return this.checked();\n });\n\n public toggle() {\n if (this.list.disabled()) {\n return;\n }\n\n this.list.toggleAll();\n }\n}\n\nlet uniqueControlLabelId = 0;\n","import { computed, DestroyRef, Directive, effect, inject, input, model, signal, untracked } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\nimport { FORM_FIELD_CONTROL_TYPES, FORM_FIELD_TOKEN, FormFieldControl } from '../../form-field/headless';\nimport {\n SELECTION_LIST_MULTIPLE,\n SELECTION_LIST_TOKEN,\n SelectionListDirectiveBase,\n SelectionListItem,\n} from './selection-list.tokens';\n\n@Directive({\n selector: '[etSelectionList]',\n providers: [{ provide: SELECTION_LIST_TOKEN, useExisting: SelectionListDirective }],\n host: {\n '[attr.role]': 'role()',\n '[attr.aria-invalid]': 'shouldDisplayError() || null',\n '[attr.aria-required]': 'required() || null',\n '[attr.aria-describedby]': 'describedById() || null',\n '[attr.aria-labelledby]': 'labelId() || null',\n '[attr.data-disabled]': 'disabled() || null',\n },\n})\nexport class SelectionListDirective implements SelectionListDirectiveBase, FormFieldControl {\n private formField = inject(FORM_FIELD_TOKEN, { optional: true });\n private destroyRef = inject(DestroyRef);\n private multipleOverride = inject(SELECTION_LIST_MULTIPLE, { optional: true });\n\n public value = model<unknown | unknown[] | null>(null);\n public touched = model(false);\n public multipleInput = input(false, { alias: 'multiple' });\n public disabled = input(false);\n public invalid = input(false);\n public errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n public required = input(false);\n public name = input('');\n\n public multiple = computed(() => this.multipleOverride ?? this.multipleInput());\n public items = signal<SelectionListItem[]>([]);\n\n public shouldDisplayError = computed(() => this.touched() && this.invalid());\n public role = computed(() => (this.multiple() ? 'group' : 'radiogroup'));\n\n public describedBy = signal<string | null>(null);\n public controlType = signal(FORM_FIELD_CONTROL_TYPES.SELECTION_LIST);\n\n public describedById = computed(() => this.describedBy());\n public labelId = computed(() => this.formField?.registeredLabel()?.id() ?? null);\n\n public allSelected = computed(() => {\n const list = this.items();\n\n if (list.length === 0) {\n return false;\n }\n\n return list.every((item) => item.checked());\n });\n\n public someSelected = computed(() => {\n const list = this.items();\n\n if (list.length === 0) {\n return false;\n }\n\n const checkedCount = list.filter((item) => item.checked()).length;\n\n return checkedCount > 0 && checkedCount < list.length;\n });\n\n constructor() {\n this.formField?.registerControl(this);\n this.destroyRef.onDestroy(() => this.formField?.unregisterControl(this));\n\n effect(() => {\n const currentValue = this.value();\n const currentItems = this.items();\n\n if (currentItems.length === 0) {\n return;\n }\n\n untracked(() => {\n if (this.multiple()) {\n const valueArray = Array.isArray(currentValue) ? currentValue : [];\n\n for (const item of currentItems) {\n item.checked.set(valueArray.includes(item.value()));\n }\n } else {\n for (const item of currentItems) {\n item.checked.set(item.value() === currentValue);\n }\n }\n });\n });\n }\n\n public registerItem(item: SelectionListItem) {\n this.items.update((items) => [...items, item]);\n }\n\n public unregisterItem(item: SelectionListItem) {\n this.items.update((items) => items.filter((i) => i !== item));\n }\n\n public markTouched() {\n this.touched.set(true);\n }\n\n public select(item: SelectionListItem) {\n if (this.disabled() || item.disabled()) {\n return;\n }\n\n if (this.multiple()) {\n item.checked.update((v) => !v);\n this.value.set(\n this.items()\n .filter((i) => i.checked())\n .map((i) => i.value()),\n );\n } else {\n for (const i of this.items()) {\n i.checked.set(i === item);\n }\n\n this.value.set(item.value());\n }\n }\n\n public focusItem(item: SelectionListItem) {\n item.elementRef.nativeElement.focus();\n }\n\n public toggleAll() {\n if (this.disabled()) {\n return;\n }\n\n const shouldCheck = !this.allSelected();\n\n for (const item of this.items()) {\n if (!item.disabled()) {\n item.checked.set(shouldCheck);\n }\n }\n\n this.value.set(\n this.items()\n .filter((i) => i.checked())\n .map((i) => i.value()),\n );\n }\n\n public activate() {\n const firstItem = this.items().find((i) => !i.disabled());\n\n if (firstItem) {\n this.select(firstItem);\n this.focusItem(firstItem);\n }\n }\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject, input, model, signal } from '@angular/core';\nimport { SELECTION_LIST_TOKEN } from './selection-list.tokens';\n\nlet uniqueOptionLabelId = 0;\n\n@Directive({\n selector: '[etSelectionOption]',\n host: {\n '[attr.role]': 'role()',\n '[attr.aria-checked]': 'checked()',\n '[attr.aria-selected]': 'checked()',\n '[attr.aria-disabled]': 'effectiveDisabled() || null',\n '[attr.tabindex]': 'tabindex()',\n '(click)': 'select()',\n '(keydown.space)': 'select(); $event.preventDefault()',\n '(keydown.enter)': 'select(); $event.preventDefault()',\n '(keydown.ArrowDown)': 'focusNext($event)',\n '(keydown.ArrowRight)': 'focusNext($event)',\n '(keydown.ArrowUp)': 'focusPrevious($event)',\n '(keydown.ArrowLeft)': 'focusPrevious($event)',\n '(blur)': 'markTouched()',\n },\n})\nexport class SelectionOptionDirective {\n private list = inject(SELECTION_LIST_TOKEN, { optional: true });\n private destroyRef = inject(DestroyRef);\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n public value = input.required<unknown>();\n public checked = model(false);\n public disabled = input(false);\n\n public effectiveDisabled = computed(() => this.disabled() || (this.list?.disabled() ?? false));\n public role = computed(() => (this.list?.multiple() ? 'option' : 'radio'));\n\n public labelId = signal(`et-selection-option-label-${uniqueOptionLabelId++}`);\n\n private listItem = {\n value: this.value,\n checked: this.checked,\n disabled: this.effectiveDisabled,\n elementRef: this.el,\n };\n\n public tabindex = computed(() => {\n if (this.effectiveDisabled()) {\n return -1;\n }\n\n if (!this.list) {\n return 0;\n }\n\n const items = this.list.items();\n const checkedItem = items.find((i) => i.checked());\n\n if (checkedItem) {\n return checkedItem === this.listItem ? 0 : -1;\n }\n\n return items[0] === this.listItem ? 0 : -1;\n });\n\n constructor() {\n if (this.list) {\n const list = this.list;\n list.registerItem(this.listItem);\n this.destroyRef.onDestroy(() => list.unregisterItem(this.listItem));\n }\n }\n\n public select() {\n if (this.effectiveDisabled()) {\n return;\n }\n\n if (this.list) {\n this.list.select(this.listItem);\n } else {\n this.checked.update((v) => !v);\n }\n }\n\n public markTouched() {\n if (this.list) {\n this.list.markTouched();\n }\n }\n\n public focusNext(event: Event) {\n event.preventDefault();\n\n if (!this.list || this.effectiveDisabled()) {\n return;\n }\n\n const items = this.list.items();\n const currentIndex = items.indexOf(this.listItem);\n let nextIndex = (currentIndex + 1) % items.length;\n\n while (items[nextIndex]?.disabled() && nextIndex !== currentIndex) {\n nextIndex = (nextIndex + 1) % items.length;\n }\n\n const nextItem = items[nextIndex];\n\n if (nextItem && !nextItem.disabled()) {\n if (!this.list.multiple()) {\n this.list.select(nextItem);\n }\n\n this.list.focusItem(nextItem);\n }\n }\n\n public focusPrevious(event: Event) {\n event.preventDefault();\n\n if (!this.list || this.effectiveDisabled()) {\n return;\n }\n\n const items = this.list.items();\n const currentIndex = items.indexOf(this.listItem);\n let prevIndex = (currentIndex - 1 + items.length) % items.length;\n\n while (items[prevIndex]?.disabled() && prevIndex !== currentIndex) {\n prevIndex = (prevIndex - 1 + items.length) % items.length;\n }\n\n const prevItem = items[prevIndex];\n\n if (prevItem && !prevItem.disabled()) {\n if (!this.list.multiple()) {\n this.list.select(prevItem);\n }\n\n this.list.focusItem(prevItem);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, effect, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AnimatableDirective, createCanAnimateSignal, ProvideColorDirective } from '@ethlete/core';\nimport { FormErrorComponent } from '../../form-field/form-error.component';\nimport { FormFieldDirective, injectFormSupport, provideFormSupport } from '../../form-field/headless';\nimport { SELECTION_LIST_MULTIPLE, SelectionListDirective } from '../headless';\n\n@Component({\n selector: 'et-checkbox-group',\n templateUrl: './checkbox-group.component.html',\n styleUrl: './checkbox-group.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AnimatableDirective, FormErrorComponent, ProvideColorDirective],\n providers: [{ provide: SELECTION_LIST_MULTIPLE, useValue: true }, provideFormSupport()],\n hostDirectives: [\n FormFieldDirective,\n {\n directive: SelectionListDirective,\n inputs: ['value', 'touched', 'disabled', 'invalid', 'errors', 'required', 'name'],\n outputs: ['valueChange', 'touchedChange'],\n },\n { directive: ProvideColorDirective, inputs: ['etProvideColor:color'] },\n ],\n host: {\n class: 'et-checkbox-group',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n '[attr.data-error]': 'support.displaysError() || null',\n },\n})\nexport class CheckboxGroupComponent {\n private errorContentRef = viewChild<ElementRef<HTMLElement>>('errorContent');\n private hintContentRef = viewChild<ElementRef<HTMLElement>>('hintContent');\n private errorAnimatableRef = viewChild<AnimatableDirective>('errorAnimatable');\n private hintAnimatableRef = viewChild<AnimatableDirective>('hintAnimatable');\n\n public support = injectFormSupport();\n public canAnimate = createCanAnimateSignal();\n\n constructor() {\n effect(() => {\n this.support.errorContent.set(this.errorContentRef());\n this.support.hintContent.set(this.hintContentRef());\n this.support.errorAnimatable.set(this.errorAnimatableRef());\n this.support.hintAnimatable.set(this.hintAnimatableRef());\n });\n }\n}\n","<ng-content />\n\n@if (support.shouldRenderSupport()) {\n <div [style.block-size.px]=\"support.supportHeight()\" class=\"et-checkbox-group-support\">\n <div class=\"et-checkbox-group-support-stack\">\n @if (support.shouldRenderError()) {\n <div\n #errorContent\n #errorAnimatable=\"etAnimatable\"\n [attr.aria-atomic]=\"support.errorActive() ? 'true' : null\"\n [attr.aria-hidden]=\"!support.errorActive() ? 'true' : null\"\n [attr.aria-live]=\"support.errorActive() ? 'polite' : null\"\n [attr.data-active]=\"support.errorActive() || null\"\n [etProvideColor]=\"support.errorColorTheme\"\n class=\"et-checkbox-group-support-content et-checkbox-group-errors\"\n etAnimatable\n >\n @for (error of support.visibleErrors(); track $index) {\n <et-form-error [error]=\"error\" />\n }\n </div>\n }\n\n @if (support.shouldRenderHint()) {\n <div\n #hintContent\n #hintAnimatable=\"etAnimatable\"\n [attr.aria-hidden]=\"!support.hintActive() ? 'true' : null\"\n [attr.data-active]=\"support.hintActive() || null\"\n class=\"et-checkbox-group-support-content et-checkbox-group-hint\"\n etAnimatable\n >\n <ng-content select=\"et-hint\" />\n </div>\n }\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal } from '@ethlete/core';\nimport { DescriptionComponent } from '../../description';\nimport { SelectionOptionDirective } from '../headless';\n\n@Component({\n selector: 'et-checkbox-option',\n templateUrl: './checkbox-option.component.html',\n styleUrl: './checkbox-option.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DescriptionComponent],\n hostDirectives: [\n {\n directive: SelectionOptionDirective,\n inputs: ['value', 'checked', 'disabled'],\n outputs: ['checkedChange'],\n },\n ColorInteractiveDirective,\n ],\n host: {\n class: 'et-checkbox-option',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class CheckboxOptionComponent {\n public optionDirective = inject(SelectionOptionDirective);\n\n public canAnimate = createCanAnimateSignal();\n}\n","<div class=\"et-checkbox-option-box\">\n <svg class=\"et-checkbox-option-check\" viewBox=\"0 0 12 10\" fill=\"none\">\n <path\n d=\"M1 5L4.5 8.5L11 1.5\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n</div>\n<div class=\"et-checkbox-option-content\">\n <span [attr.id]=\"optionDirective.labelId()\" class=\"et-checkbox-option-label\">\n <ng-content />\n </span>\n <ng-content select=\"et-description\" />\n</div>\n","import { ChangeDetectionStrategy, Component, effect, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AnimatableDirective, createCanAnimateSignal, ProvideColorDirective } from '@ethlete/core';\nimport { FormErrorComponent } from '../../form-field/form-error.component';\nimport { FormFieldDirective, injectFormSupport, provideFormSupport } from '../../form-field/headless';\nimport { SelectionListDirective } from '../../selection-list/headless';\n\n@Component({\n selector: 'et-radio-group',\n templateUrl: './radio-group.component.html',\n styleUrl: './radio-group.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AnimatableDirective, FormErrorComponent, ProvideColorDirective],\n providers: [provideFormSupport()],\n hostDirectives: [\n FormFieldDirective,\n {\n directive: SelectionListDirective,\n inputs: ['value', 'touched', 'disabled', 'invalid', 'errors', 'required', 'name'],\n outputs: ['valueChange', 'touchedChange'],\n },\n { directive: ProvideColorDirective, inputs: ['etProvideColor:color'] },\n ],\n host: {\n class: 'et-radio-group',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n '[attr.data-error]': 'support.displaysError() || null',\n },\n})\nexport class RadioGroupComponent {\n private errorContentRef = viewChild<ElementRef<HTMLElement>>('errorContent');\n private hintContentRef = viewChild<ElementRef<HTMLElement>>('hintContent');\n private errorAnimatableRef = viewChild<AnimatableDirective>('errorAnimatable');\n private hintAnimatableRef = viewChild<AnimatableDirective>('hintAnimatable');\n\n public support = injectFormSupport();\n public canAnimate = createCanAnimateSignal();\n\n constructor() {\n effect(() => {\n this.support.errorContent.set(this.errorContentRef());\n this.support.hintContent.set(this.hintContentRef());\n this.support.errorAnimatable.set(this.errorAnimatableRef());\n this.support.hintAnimatable.set(this.hintAnimatableRef());\n });\n }\n}\n","<ng-content />\n\n@if (support.shouldRenderSupport()) {\n <div [style.block-size.px]=\"support.supportHeight()\" class=\"et-radio-group-support\">\n <div class=\"et-radio-group-support-stack\">\n @if (support.shouldRenderError()) {\n <div\n #errorContent\n #errorAnimatable=\"etAnimatable\"\n [attr.aria-atomic]=\"support.errorActive() ? 'true' : null\"\n [attr.aria-hidden]=\"!support.errorActive() ? 'true' : null\"\n [attr.aria-live]=\"support.errorActive() ? 'polite' : null\"\n [attr.data-active]=\"support.errorActive() || null\"\n [etProvideColor]=\"support.errorColorTheme\"\n class=\"et-radio-group-support-content et-radio-group-errors\"\n etAnimatable\n >\n @for (error of support.visibleErrors(); track $index) {\n <et-form-error [error]=\"error\" />\n }\n </div>\n }\n\n @if (support.shouldRenderHint()) {\n <div\n #hintContent\n #hintAnimatable=\"etAnimatable\"\n [attr.aria-hidden]=\"!support.hintActive() ? 'true' : null\"\n [attr.data-active]=\"support.hintActive() || null\"\n class=\"et-radio-group-support-content et-radio-group-hint\"\n etAnimatable\n >\n <ng-content select=\"et-hint\" />\n </div>\n }\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal } from '@ethlete/core';\nimport { DescriptionComponent } from '../../description';\nimport { SelectionOptionDirective } from '../headless';\n\n@Component({\n selector: 'et-radio',\n templateUrl: './radio.component.html',\n styleUrl: './radio.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DescriptionComponent],\n hostDirectives: [\n {\n directive: SelectionOptionDirective,\n inputs: ['value', 'checked', 'disabled'],\n outputs: ['checkedChange'],\n },\n ColorInteractiveDirective,\n ],\n host: {\n class: 'et-radio',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class RadioComponent {\n public optionDirective = inject(SelectionOptionDirective);\n\n public canAnimate = createCanAnimateSignal();\n}\n","<div class=\"et-radio-circle\"></div>\n<div class=\"et-radio-content\">\n <span [attr.id]=\"optionDirective.labelId()\" class=\"et-radio-label\">\n <ng-content />\n </span>\n <ng-content select=\"et-description\" />\n</div>\n","import { ChangeDetectionStrategy, Component, effect, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AnimatableDirective, createCanAnimateSignal, ProvideColorDirective } from '@ethlete/core';\nimport { FormErrorComponent } from '../../form-field/form-error.component';\nimport { FormFieldDirective, injectFormSupport, provideFormSupport } from '../../form-field/headless';\nimport { SelectionListDirective } from '../headless';\n\n@Component({\n selector: 'et-segmented-button-group',\n templateUrl: './segmented-button-group.component.html',\n styleUrl: './segmented-button-group.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AnimatableDirective, FormErrorComponent, ProvideColorDirective],\n providers: [provideFormSupport()],\n hostDirectives: [\n FormFieldDirective,\n {\n directive: SelectionListDirective,\n inputs: ['value', 'touched', 'disabled', 'invalid', 'errors', 'required', 'name'],\n outputs: ['valueChange', 'touchedChange'],\n },\n { directive: ProvideColorDirective, inputs: ['etProvideColor:color'] },\n ],\n host: {\n class: 'et-segmented-button-group',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n '[attr.data-error]': 'support.displaysError() || null',\n },\n})\nexport class SegmentedButtonGroupComponent {\n private errorContentRef = viewChild<ElementRef<HTMLElement>>('errorContent');\n private hintContentRef = viewChild<ElementRef<HTMLElement>>('hintContent');\n private errorAnimatableRef = viewChild<AnimatableDirective>('errorAnimatable');\n private hintAnimatableRef = viewChild<AnimatableDirective>('hintAnimatable');\n\n public support = injectFormSupport();\n public canAnimate = createCanAnimateSignal();\n\n constructor() {\n effect(() => {\n this.support.errorContent.set(this.errorContentRef());\n this.support.hintContent.set(this.hintContentRef());\n this.support.errorAnimatable.set(this.errorAnimatableRef());\n this.support.hintAnimatable.set(this.hintAnimatableRef());\n });\n }\n}\n","<div class=\"et-segmented-button-group-buttons\">\n <ng-content />\n</div>\n\n@if (support.shouldRenderSupport()) {\n <div [style.block-size.px]=\"support.supportHeight()\" class=\"et-segmented-button-group-support\">\n <div class=\"et-segmented-button-group-support-stack\">\n @if (support.shouldRenderError()) {\n <div\n #errorContent\n #errorAnimatable=\"etAnimatable\"\n [attr.aria-atomic]=\"support.errorActive() ? 'true' : null\"\n [attr.aria-hidden]=\"!support.errorActive() ? 'true' : null\"\n [attr.aria-live]=\"support.errorActive() ? 'polite' : null\"\n [attr.data-active]=\"support.errorActive() || null\"\n [etProvideColor]=\"support.errorColorTheme\"\n class=\"et-segmented-button-group-support-content et-segmented-button-group-errors\"\n etAnimatable\n >\n @for (error of support.visibleErrors(); track $index) {\n <et-form-error [error]=\"error\" />\n }\n </div>\n }\n\n @if (support.shouldRenderHint()) {\n <div\n #hintContent\n #hintAnimatable=\"etAnimatable\"\n [attr.aria-hidden]=\"!support.hintActive() ? 'true' : null\"\n [attr.data-active]=\"support.hintActive() || null\"\n class=\"et-segmented-button-group-support-content et-segmented-button-group-hint\"\n etAnimatable\n >\n <ng-content select=\"et-hint\" />\n </div>\n }\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal } from '@ethlete/core';\nimport { SelectionOptionDirective } from '../headless';\n\n@Component({\n selector: 'et-segmented-button',\n template: '<ng-content />',\n styleUrl: './segmented-button.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: SelectionOptionDirective,\n inputs: ['value', 'checked', 'disabled'],\n outputs: ['checkedChange'],\n },\n ColorInteractiveDirective,\n ],\n host: {\n class: 'et-segmented-button',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class SegmentedButtonComponent {\n public optionDirective = inject(SelectionOptionDirective);\n\n public canAnimate = createCanAnimateSignal();\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject, input, model, signal } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\nimport { FORM_FIELD_CONTROL_TYPES, FORM_FIELD_TOKEN, FormFieldControl } from '../../form-field/headless';\n\n@Directive({\n selector: '[etSwitch]',\n host: {\n role: 'switch',\n '[attr.aria-checked]': 'checked()',\n '[attr.aria-invalid]': 'shouldDisplayError() || null',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.aria-required]': 'required() || null',\n '[attr.aria-describedby]': 'describedById() || null',\n '[attr.aria-labelledby]': 'labelId() || null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.space)': 'toggle(); $event.preventDefault()',\n '(blur)': 'touched.set(true)',\n },\n})\nexport class SwitchDirective implements FormFieldControl {\n private formField = inject(FORM_FIELD_TOKEN, { optional: true });\n private destroyRef = inject(DestroyRef);\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n public checked = model(false);\n public touched = model(false);\n public disabled = input(false);\n public invalid = input(false);\n public errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n public required = input(false);\n public name = input('');\n\n public shouldDisplayError = computed(() => this.touched() && this.invalid());\n\n public describedBy = signal<string | null>(null);\n public controlType = signal(FORM_FIELD_CONTROL_TYPES.SWITCH);\n\n public labelId = computed(() => this.formField?.registeredLabel()?.id() ?? null);\n public describedById = computed(() => this.describedBy());\n\n constructor() {\n this.formField?.registerControl(this);\n this.destroyRef.onDestroy(() => this.formField?.unregisterControl(this));\n }\n\n public toggle() {\n if (this.disabled()) {\n return;\n }\n\n this.checked.update((value) => !value);\n }\n\n public activate() {\n if (this.disabled()) return;\n\n this.toggle();\n this.el.nativeElement.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { ColorInteractiveDirective, createCanAnimateSignal } from '@ethlete/core';\nimport { SwitchDirective } from './headless';\n\n@Component({\n selector: 'et-switch',\n templateUrl: './switch.component.html',\n styleUrl: './switch.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: SwitchDirective,\n inputs: ['checked', 'disabled', 'invalid', 'errors', 'required', 'name'],\n outputs: ['checkedChange', 'touchedChange'],\n },\n ColorInteractiveDirective,\n ],\n host: {\n class: 'et-switch',\n '[attr.data-can-animate]': 'canAnimate.state() || null',\n },\n})\nexport class SwitchComponent {\n public canAnimate = createCanAnimateSignal();\n}\n","<div class=\"et-switch-track\">\n <div class=\"et-switch-thumb\"></div>\n</div>\n","import { SwitchDirective } from './headless';\nimport { SwitchComponent } from './switch.component';\n\nexport const SWITCH_IMPORTS = [SwitchComponent, SwitchDirective] as const;\n","import { createStaticRootProvider } from '@ethlete/core';\nimport { GridComponentRegistration } from './grid.types';\n\nexport type GridConfig = {\n registrations: GridComponentRegistration[];\n interactiveAriaLabel: string;\n readonlyAriaLabel: string;\n dragHandleAriaLabel: string;\n transformer: (text: string, locale: string) => string;\n};\n\nexport const DEFAULT_GRID_CONFIG: GridConfig = {\n registrations: [],\n interactiveAriaLabel: 'Interactive grid layout',\n readonlyAriaLabel: 'Grid layout',\n dragHandleAriaLabel: 'Drag to reorder',\n transformer: (text) => text,\n};\n\nexport const [provideGridConfig, injectGridConfig] = createStaticRootProvider(DEFAULT_GRID_CONFIG, {\n name: 'GridConfig',\n});\n","import { InjectionToken } from '@angular/core';\nimport { GridDirective } from './grid.directive';\n\nexport const GRID_TOKEN = new InjectionToken<GridDirective>('GRID_TOKEN');\n","import { GridItemConstraints, GridItemPosition, GridLayoutEntry } from '../grid.types';\n\nexport type FindCollisionOptions = {\n entries: GridLayoutEntry[];\n position: GridItemPosition;\n excludeId?: string;\n};\n\nexport type AutoPlaceOptions = {\n entries: GridLayoutEntry[];\n colSpan: number;\n rowSpan: number;\n columns: number;\n};\n\nexport type ClampPositionOptions = {\n position: GridItemPosition;\n constraints: GridItemConstraints;\n columns: number;\n};\n\nexport type ResolveCollisionsOptions = {\n entries: GridLayoutEntry[];\n movedId: string;\n columns: number;\n originPosition?: GridItemPosition;\n};\n\n/**\n * Checks whether two grid items overlap.\n */\nexport const itemsCollide = (a: GridItemPosition, b: GridItemPosition) => {\n if (a.col + a.colSpan <= b.col) return false;\n if (b.col + b.colSpan <= a.col) return false;\n if (a.row + a.rowSpan <= b.row) return false;\n if (b.row + b.rowSpan <= a.row) return false;\n return true;\n};\n\n/**\n * Returns the first item that collides with the given position, or undefined if none.\n */\nexport const findCollision = (options: FindCollisionOptions) =>\n options.entries.find((entry) => entry.id !== options.excludeId && itemsCollide(entry.position, options.position));\n\n/**\n * Compacts the layout vertically (moves items up as far as possible without collision).\n */\nexport const compactLayout = (entries: GridLayoutEntry[], _columns: number) => {\n const sorted = [...entries].sort((a, b) => a.position.row - b.position.row || a.position.col - b.position.col);\n const compacted: GridLayoutEntry[] = [];\n\n for (const entry of sorted) {\n const candidate = { ...entry, position: { ...entry.position } };\n\n while (candidate.position.row > 0) {\n const moved = { ...candidate, position: { ...candidate.position, row: candidate.position.row - 1 } };\n\n if (findCollision({ entries: compacted, position: moved.position, excludeId: candidate.id })) {\n break;\n }\n\n candidate.position.row = moved.position.row;\n }\n\n compacted.push(candidate);\n }\n\n return compacted;\n};\n\n/**\n * Finds the first available position for an item with the given span in a grid.\n * Uses top-left gravity: scans row by row, column by column.\n */\nexport const autoPlace = (options: AutoPlaceOptions) => {\n const clampedColSpan = Math.min(options.colSpan, options.columns);\n\n for (let row = 0; ; row++) {\n for (let col = 0; col <= options.columns - clampedColSpan; col++) {\n const candidate: GridItemPosition = { col, row, colSpan: clampedColSpan, rowSpan: options.rowSpan };\n\n if (!findCollision({ entries: options.entries, position: candidate })) {\n return candidate;\n }\n }\n }\n};\n\n/**\n * Validates and clamps a position to respect grid boundaries and item constraints.\n */\nexport const clampPosition = (options: ClampPositionOptions) => {\n const { position, constraints, columns } = options;\n const colSpan = Math.max(constraints.minColSpan, Math.min(constraints.maxColSpan, position.colSpan, columns));\n const rowSpan = Math.max(constraints.minRowSpan, Math.min(constraints.maxRowSpan, position.rowSpan));\n const col = Math.max(0, Math.min(position.col, columns - colSpan));\n const row = Math.max(0, position.row);\n\n return { col, row, colSpan, rowSpan };\n};\n\n/**\n * Resolves collisions by pushing items down when a moved/resized item overlaps others.\n * If exactly one item of the same size collides, they swap positions instead.\n * Cascades: if pushed items collide with others, those are pushed down too.\n */\nexport const resolveCollisions = (options: ResolveCollisionsOptions) => {\n const { entries, movedId, columns, originPosition } = options;\n const moved = entries.find((e) => e.id === movedId);\n\n if (!moved) return entries;\n\n const result = entries.map((e) => ({ ...e, position: { ...e.position } }));\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const movedEntry = result.find((e) => e.id === movedId)!;\n\n // Detect swap candidates: exactly one colliding item\n const colliding = result.filter((e) => e.id !== movedId && itemsCollide(movedEntry.position, e.position));\n const swapTarget = colliding.length === 1 ? colliding[0] : undefined;\n\n // Same-position same-size swap — only when origin was immediately adjacent to the target.\n // Without the adjacency guard a far-away drag (e.g. 4 rows up) would teleport the collider\n // back to the drag origin instead of simply pushing it out of the way.\n if (\n swapTarget &&\n swapTarget.position.col === movedEntry.position.col &&\n swapTarget.position.row === movedEntry.position.row &&\n swapTarget.position.colSpan === movedEntry.position.colSpan &&\n swapTarget.position.rowSpan === movedEntry.position.rowSpan &&\n originPosition\n ) {\n const dragRowDir = Math.sign(originPosition.row - movedEntry.position.row);\n const dragColDir = Math.sign(originPosition.col - movedEntry.position.col);\n\n const adjacentToOrigin =\n (dragRowDir > 0 && swapTarget.position.row + swapTarget.position.rowSpan === originPosition.row) ||\n (dragRowDir < 0 && originPosition.row + originPosition.rowSpan === swapTarget.position.row) ||\n (dragColDir > 0 && swapTarget.position.col + swapTarget.position.colSpan === originPosition.col) ||\n (dragColDir < 0 && originPosition.col + originPosition.colSpan === swapTarget.position.col);\n\n if (adjacentToOrigin) {\n swapTarget.position = { ...originPosition };\n\n return compactLayout(result, columns);\n }\n }\n\n // Horizontal same-row swap for different-size items: when the dragged item moved\n // sideways within the same row and its single collider fits in the vacated origin space.\n if (swapTarget && originPosition) {\n const sameRowBand =\n originPosition.row === movedEntry.position.row &&\n swapTarget.position.row === movedEntry.position.row &&\n swapTarget.position.rowSpan === movedEntry.position.rowSpan;\n\n const movedDir = Math.sign(movedEntry.position.col - originPosition.col);\n\n // Log whenever a single-collision drag is evaluated so we can see why the swap does/doesn't fire\n if (sameRowBand && movedDir !== 0) {\n const proposedCol =\n movedDir > 0 ? originPosition.col : originPosition.col + originPosition.colSpan - swapTarget.position.colSpan;\n\n const proposedPos = { ...swapTarget.position, col: proposedCol };\n\n const fits =\n proposedCol >= 0 &&\n proposedCol + swapTarget.position.colSpan <= columns &&\n // The two items must not overlap after the swap\n (movedEntry.position.col >= proposedCol + swapTarget.position.colSpan ||\n proposedCol >= movedEntry.position.col + movedEntry.position.colSpan);\n\n const noSideEffects =\n fits &&\n !result.some(\n (other) => other.id !== swapTarget.id && other.id !== movedId && itemsCollide(proposedPos, other.position),\n );\n\n if (noSideEffects) {\n swapTarget.position = proposedPos;\n\n return compactLayout(result, columns);\n }\n }\n }\n\n // Sort non-moved items by row so we cascade downward\n const others = result.filter((e) => e.id !== movedId).sort((a, b) => a.position.row - b.position.row);\n\n // Items that need their collisions checked (start with the moved item)\n const toCheck = [movedEntry];\n\n while (toCheck.length > 0) {\n const current = toCheck.shift() as GridLayoutEntry;\n\n for (const entry of others) {\n if (entry === current) continue;\n\n if (itemsCollide(current.position, entry.position)) {\n const newRow = current.position.row + current.position.rowSpan;\n\n if (newRow !== entry.position.row) {\n entry.position.row = newRow;\n toCheck.push(entry);\n }\n }\n }\n }\n\n return compactLayout(result, columns);\n};\n\n/**\n * Computes the total number of rows occupied by the layout.\n */\nexport const computeGridHeight = (entries: GridLayoutEntry[]) => {\n if (entries.length === 0) return 0;\n\n return Math.max(...entries.map((e) => e.position.row + e.position.rowSpan));\n};\n","import { GridBreakpointConfig, GridBreakpointName, GridItemPosition, GridLayoutEntry } from '../grid.types';\n\nexport type MapLayoutOptions = {\n entries: GridLayoutEntry[];\n fromColumns: number;\n toColumns: number;\n};\n\n/**\n * Resolves the active breakpoint name based on the container width.\n * Breakpoints are sorted by minWidth descending — the first one whose minWidth is <= containerWidth wins.\n */\nexport const resolveBreakpoint = (breakpoints: GridBreakpointConfig[], containerWidth: number): GridBreakpointName => {\n const sorted = [...breakpoints].sort((a, b) => b.minWidth - a.minWidth);\n\n for (const bp of sorted) {\n if (containerWidth >= bp.minWidth) {\n return bp.name;\n }\n }\n\n return sorted[sorted.length - 1]?.name ?? 'sm';\n};\n\n/**\n * Auto-generates a layout for a smaller breakpoint from a larger one.\n * Items are re-flowed into fewer columns, maintaining their relative order.\n */\nexport const mapLayoutToBreakpoint = (options: MapLayoutOptions) => {\n const { entries, fromColumns, toColumns } = options;\n\n if (toColumns >= fromColumns) {\n return entries;\n }\n\n const sorted = [...entries].sort((a, b) => a.position.row - b.position.row || a.position.col - b.position.col);\n const result: GridLayoutEntry[] = [];\n\n for (const entry of sorted) {\n const colSpan = Math.min(entry.position.colSpan, toColumns);\n const placed = autoPlaceForMapping({\n placed: result,\n colSpan,\n rowSpan: entry.position.rowSpan,\n columns: toColumns,\n });\n\n result.push({\n id: entry.id,\n position: placed,\n });\n }\n\n return result;\n};\n\ntype AutoPlaceForMappingOptions = {\n placed: GridLayoutEntry[];\n colSpan: number;\n rowSpan: number;\n columns: number;\n};\n\n/**\n * Internal auto-placement used during breakpoint mapping.\n */\nconst autoPlaceForMapping = (options: AutoPlaceForMappingOptions): GridItemPosition => {\n const { placed, colSpan, rowSpan, columns } = options;\n\n for (let row = 0; ; row++) {\n for (let col = 0; col <= columns - colSpan; col++) {\n const candidate: GridItemPosition = { col, row, colSpan, rowSpan };\n const hasCollision = placed.some(\n (existing) =>\n !(\n candidate.col + candidate.colSpan <= existing.position.col ||\n existing.position.col + existing.position.colSpan <= candidate.col ||\n candidate.row + candidate.rowSpan <= existing.position.row ||\n existing.position.row + existing.position.rowSpan <= candidate.row\n ),\n );\n\n if (!hasCollision) {\n return candidate;\n }\n }\n }\n};\n\nexport const DEFAULT_BREAKPOINTS: GridBreakpointConfig[] = [\n { name: 'lg', columns: 12, minWidth: 1200 },\n { name: 'md', columns: 6, minWidth: 768 },\n { name: 'sm', columns: 2, minWidth: 0 },\n] as const;\n","import { GridBreakpointConfig, GridItemConfig, GridSerializedState } from '../grid.types';\n\nexport type SerializeOptions = {\n items: GridItemConfig[];\n breakpoints: GridBreakpointConfig[];\n rowHeight: number;\n};\n\n/**\n * Serializes the current grid state into a JSON-compatible object suitable for DB storage.\n */\nexport const serializeGridLayout = (options: SerializeOptions): GridSerializedState => {\n const { items, breakpoints, rowHeight } = options;\n const columns: Record<string, number> = {};\n\n for (const bp of breakpoints) {\n columns[bp.name] = bp.columns;\n }\n\n return {\n columns,\n rowHeight,\n items: items.map((item) => ({\n id: item.id,\n type: item.type,\n data: item.data,\n layout: { ...item.layout },\n })),\n };\n};\n\n/**\n * Deserializes a stored grid state back into working configuration.\n * Returns breakpoint configs and item configs.\n */\nexport const deserializeGridLayout = (\n state: GridSerializedState,\n breakpointMinWidths: Record<string, number>,\n): { breakpoints: GridBreakpointConfig[]; items: GridItemConfig[]; rowHeight: number } => {\n const breakpoints: GridBreakpointConfig[] = Object.entries(state.columns).map(([name, columns]) => ({\n name,\n columns,\n minWidth: breakpointMinWidths[name] ?? 0,\n }));\n\n const items: GridItemConfig[] = state.items.map((item) => ({\n id: item.id,\n type: item.type,\n data: item.data,\n layout: { ...item.layout },\n }));\n\n return { breakpoints, items, rowHeight: state.rowHeight };\n};\n","import {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { signalHostElementDimensions } from '@ethlete/core';\nimport { injectGridConfig } from './grid-config';\nimport { GRID_TOKEN } from './grid.tokens';\nimport {\n GridBreakpointConfig,\n GridBreakpointName,\n GridComponentRegistration,\n GridItemConfig,\n GridItemConstraints,\n GridItemPosition,\n GridLayoutEntry,\n GridSerializedState,\n} from './grid.types';\nimport {\n autoPlace,\n clampPosition,\n compactLayout,\n DEFAULT_BREAKPOINTS,\n resolveBreakpoint,\n resolveCollisions,\n serializeGridLayout,\n} from './internals';\n\nexport type ResizeItemOptions = {\n id: string;\n newColSpan: number;\n newRowSpan: number;\n newCol?: number;\n newRow?: number;\n};\n\nexport type GridDragState = {\n itemId: string;\n originPosition: GridItemPosition;\n targetPosition: GridItemPosition;\n};\n\nconst DEFAULT_CONSTRAINTS: GridItemConstraints = {\n minColSpan: 1,\n maxColSpan: 12,\n minRowSpan: 1,\n maxRowSpan: 24,\n};\n\nconst resolveItemConstraints = (\n id: string,\n context: {\n itemConfigs: GridItemConfig[];\n registrations: GridComponentRegistration[];\n constraintsRegistry: Map<string, GridItemConstraints>;\n },\n): GridItemConstraints => {\n const item = context.itemConfigs.find((i) => i.id === id);\n if (item) {\n const registration = context.registrations.find((r) => r.type === item.type);\n if (registration?.constraints) {\n return { ...DEFAULT_CONSTRAINTS, ...registration.constraints };\n }\n }\n return context.constraintsRegistry.get(id) ?? DEFAULT_CONSTRAINTS;\n};\n\n@Directive({\n selector: '[etGrid]',\n exportAs: 'etGrid',\n providers: [{ provide: GRID_TOKEN, useExisting: GridDirective }],\n host: {\n class: 'et-grid',\n '[class.et-grid--readonly]': 'readOnly()',\n },\n})\nexport class GridDirective {\n private injector = inject(Injector);\n\n public breakpoints = input<GridBreakpointConfig[]>(DEFAULT_BREAKPOINTS);\n public rowHeight = input(100);\n public gap = input(16);\n public initialItems = input<GridItemConfig[]>([]);\n public readOnly = input(false, { transform: booleanAttribute });\n\n public layoutChange = output<GridSerializedState>();\n private gridConfig = injectGridConfig();\n\n public registrations = computed(() => this.gridConfig.registrations);\n\n private dimensions = signalHostElementDimensions();\n private itemConfigs = signal<GridItemConfig[]>([]);\n private layoutOverrides = signal<Record<GridBreakpointName, GridLayoutEntry[]>>({});\n public dragState = signal<GridDragState | null>(null);\n\n private constraintsRegistry = new Map<string, GridItemConstraints>();\n\n private resizeBaseLayout = signal<GridLayoutEntry[] | null>(null);\n\n private itemElements = new Map<string, HTMLElement>();\n private ghostElement: HTMLElement | null = null;\n private rectSnapshot = new Map<string, DOMRect>();\n\n public containerWidth = computed(() => this.dimensions().client?.width ?? 0);\n\n public activeBreakpoint = computed(() => {\n const width = this.containerWidth();\n return resolveBreakpoint(this.breakpoints(), width);\n });\n\n public activeColumns = computed(() => {\n const bp = this.breakpoints().find((b) => b.name === this.activeBreakpoint());\n return bp?.columns ?? 12;\n });\n\n public items = computed(() => this.itemConfigs());\n\n public baseLayout = computed((): GridLayoutEntry[] => {\n const breakpoint = this.activeBreakpoint();\n const overrides = this.layoutOverrides();\n const items = this.itemConfigs();\n\n if (overrides[breakpoint]) {\n return overrides[breakpoint];\n }\n\n return items.map((item) => ({\n id: item.id,\n position: item.layout[breakpoint] ?? { col: 0, row: 0, colSpan: 1, rowSpan: 1 },\n }));\n });\n\n public layout = computed((): GridLayoutEntry[] => {\n const base = this.baseLayout();\n const drag = this.dragState();\n\n if (!drag) return base;\n\n const columns = this.activeColumns();\n const clamped = clampPosition({\n position: drag.targetPosition,\n constraints: resolveItemConstraints(drag.itemId, {\n itemConfigs: this.itemConfigs(),\n registrations: this.gridConfig.registrations,\n constraintsRegistry: this.constraintsRegistry,\n }),\n columns,\n });\n\n const withTarget = base.map((e) => (e.id === drag.itemId ? { ...e, position: clamped } : e));\n\n return resolveCollisions({\n entries: withTarget,\n movedId: drag.itemId,\n columns,\n originPosition: drag.originPosition,\n });\n });\n\n public ghostPosition = computed((): GridItemPosition | null => {\n const drag = this.dragState();\n\n if (!drag) return null;\n\n const layout = this.layout();\n const entry = layout.find((e) => e.id === drag.itemId);\n return entry?.position ?? null;\n });\n\n constructor() {\n effect(() => {\n const initial = this.initialItems();\n\n untracked(() => {\n if (initial.length === 0) return;\n\n const current = this.itemConfigs();\n\n if (current.length === 0) {\n this.itemConfigs.set(initial);\n\n return;\n }\n\n const currentIds = new Set(current.map((c) => c.id));\n const newItems = initial.filter((item) => !currentIds.has(item.id));\n\n for (const item of newItems) {\n this.placeItem(item);\n }\n\n // Remove items no longer in initial\n const initialIds = new Set(initial.map((i) => i.id));\n const removedIds = current.filter((c) => !initialIds.has(c.id)).map((c) => c.id);\n\n for (const id of removedIds) {\n this.removeItem(id);\n }\n });\n });\n\n effect(() => {\n const breakpoint = this.activeBreakpoint();\n const items = this.itemConfigs();\n\n if (items.length === 0) return;\n\n untracked(() => {\n const overrides = this.layoutOverrides();\n const existing = overrides[breakpoint];\n const columns = this.activeColumns();\n\n if (!existing || existing.length !== items.length) {\n const existingById = existing ? new Map(existing.map((e) => [e.id, e])) : new Map<string, GridLayoutEntry>();\n const entries: GridLayoutEntry[] = [];\n\n for (const item of items) {\n const existingEntry = existingById.get(item.id);\n\n if (existingEntry) {\n entries.push(existingEntry);\n } else {\n const constraints = this.getConstraints(item.id);\n const position =\n item.layout[breakpoint] ??\n autoPlace({\n entries,\n colSpan: constraints.minColSpan,\n rowSpan: constraints.minRowSpan,\n columns,\n });\n entries.push({ id: item.id, position });\n }\n }\n\n const compacted = compactLayout(entries, columns);\n\n this.layoutOverrides.update((prev) => ({ ...prev, [breakpoint]: compacted }));\n } else {\n // Cap items that overflow the column boundary after a breakpoint change.\n // Min span is intentionally NOT enforced here: newly-added items are placed\n // with 1×1 defaults before their GridItemDirective registers real constraints,\n // and registerConstraints() corrects the size on first registration.\n // Enforcing min here would resize those items again on the next addItem call\n // and cause them to overlap their neighbours.\n const clamped = existing.map((entry) => {\n const constraints = this.getConstraints(entry.id);\n const pos = entry.position;\n const colSpan = Math.min(pos.colSpan, constraints.maxColSpan, columns);\n const col = Math.min(pos.col, columns - colSpan);\n const rowSpan = Math.min(pos.rowSpan, constraints.maxRowSpan);\n\n return { ...entry, position: { col, row: pos.row, colSpan, rowSpan } };\n });\n\n const hasChanged = clamped.some((e, i) => {\n const orig = existing[i];\n\n return orig && (e.position.col !== orig.position.col || e.position.colSpan !== orig.position.colSpan);\n });\n\n if (hasChanged) {\n const compacted = compactLayout(clamped, columns);\n this.layoutOverrides.update((prev) => ({ ...prev, [breakpoint]: compacted }));\n }\n }\n });\n });\n }\n\n public registerConstraints(id: string, constraints: GridItemConstraints) {\n const isFirstRegistration = !this.constraintsRegistry.has(id);\n this.constraintsRegistry.set(id, constraints);\n\n if (!isFirstRegistration) return;\n\n // On first registration the item may have been auto-placed with 1×1 defaults\n // (because addItem runs before the GridItemDirective initialises). If so,\n // re-place it now at the correct minimum size.\n const breakpoint = this.activeBreakpoint();\n const existing = this.layoutOverrides()[breakpoint];\n if (!existing) return;\n\n const entry = existing.find((e) => e.id === id);\n if (!entry) return;\n\n const pos = entry.position;\n if (pos.colSpan >= constraints.minColSpan && pos.rowSpan >= constraints.minRowSpan) return;\n\n const cols = this.activeColumns();\n const others = existing.filter((e) => e.id !== id);\n const newPosition = autoPlace({\n entries: others,\n colSpan: Math.max(pos.colSpan, constraints.minColSpan),\n rowSpan: Math.max(pos.rowSpan, constraints.minRowSpan),\n columns: cols,\n });\n\n const updated = existing.map((e) => (e.id === id ? { ...e, position: newPosition } : e));\n const compacted = compactLayout(updated, cols);\n this.layoutOverrides.update((prev) => ({ ...prev, [breakpoint]: compacted }));\n }\n\n public registerItem(id: string, options: { el: HTMLElement; constraints: GridItemConstraints }) {\n this.itemElements.set(id, options.el);\n this.registerConstraints(id, options.constraints);\n }\n\n public unregisterItem(id: string) {\n this.itemElements.delete(id);\n this.constraintsRegistry.delete(id);\n }\n\n public setGhostElement(el: HTMLElement | null) {\n if (this.ghostElement !== el) {\n this.ghostElement = el;\n this.rectSnapshot.delete('__ghost__');\n }\n }\n\n public getConstraints(id: string): GridItemConstraints {\n return resolveItemConstraints(id, {\n itemConfigs: this.itemConfigs(),\n registrations: this.gridConfig.registrations,\n constraintsRegistry: this.constraintsRegistry,\n });\n }\n\n public snapshotRects() {\n this.rectSnapshot.clear();\n\n for (const [id, el] of this.itemElements) {\n this.rectSnapshot.set(id, el.getBoundingClientRect());\n }\n\n if (this.ghostElement) {\n this.rectSnapshot.set('__ghost__', this.ghostElement.getBoundingClientRect());\n }\n }\n\n public animateLayoutTransition(options?: { excludeIds?: Set<string>; scaleIds?: Set<string> }) {\n const excludeIds = options?.excludeIds ?? new Set();\n const snapshot = new Map(this.rectSnapshot);\n const ghostEl = this.ghostElement;\n\n afterNextRender(\n () => {\n for (const [id, el] of this.itemElements) {\n if (excludeIds.has(id)) continue;\n\n const oldRect = snapshot.get(id);\n\n if (!oldRect) continue;\n\n const newRect = el.getBoundingClientRect();\n const dx = oldRect.left - newRect.left;\n const dy = oldRect.top - newRect.top;\n const scaleX = oldRect.width / newRect.width;\n const scaleY = oldRect.height / newRect.height;\n const hasMoved = Math.abs(dx) > 1 || Math.abs(dy) > 1;\n const hasResized = Math.abs(scaleX - 1) > 0.01 || Math.abs(scaleY - 1) > 0.01;\n\n if (!hasMoved && !hasResized) continue;\n\n el.getAnimations().forEach((a) => a.cancel());\n\n if (hasResized) {\n el.animate(\n [\n { transform: `translate(${dx}px, ${dy}px) scale(${scaleX}, ${scaleY})`, transformOrigin: 'top left' },\n { transform: 'translate(0px, 0px) scale(1, 1)', transformOrigin: 'top left' },\n ],\n { duration: 250, easing: 'cubic-bezier(0.2, 0, 0, 1)' },\n );\n } else {\n el.animate([{ transform: `translate(${dx}px, ${dy}px)` }, { transform: 'translate(0px, 0px)' }], {\n duration: 250,\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\n });\n }\n }\n\n if (ghostEl) {\n const oldRect = snapshot.get('__ghost__');\n\n if (oldRect) {\n const newRect = ghostEl.getBoundingClientRect();\n const dx = oldRect.left - newRect.left;\n const dy = oldRect.top - newRect.top;\n\n if (Math.abs(dx) > 1 || Math.abs(dy) > 1) {\n ghostEl.getAnimations().forEach((a) => a.cancel());\n ghostEl.animate([{ transform: `translate(${dx}px, ${dy}px)` }, { transform: 'translate(0px, 0px)' }], {\n duration: 200,\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\n });\n }\n }\n }\n },\n { injector: this.injector },\n );\n }\n\n public beginDrag(itemId: string) {\n const entry = this.baseLayout().find((e) => e.id === itemId);\n\n if (!entry) return;\n\n this.dragState.set({\n itemId,\n originPosition: entry.position,\n targetPosition: entry.position,\n });\n }\n\n public updateDragTarget(targetPosition: GridItemPosition) {\n const drag = this.dragState();\n\n if (!drag) return;\n\n this.dragState.set({ ...drag, targetPosition });\n }\n\n public commitDrag() {\n const drag = this.dragState();\n\n if (!drag) return;\n\n // Commit the full resolved layout (includes swaps and collision resolution)\n const resolvedLayout = this.layout();\n this.updateLayoutForCurrentBreakpoint(resolvedLayout);\n\n const breakpoint = this.activeBreakpoint();\n\n this.itemConfigs.update((items) =>\n items.map((item) => {\n const entry = resolvedLayout.find((e) => e.id === item.id);\n\n if (!entry) return item;\n\n return { ...item, layout: { ...item.layout, [breakpoint]: entry.position } };\n }),\n );\n\n this.dragState.set(null);\n this.emitLayoutChange();\n }\n\n public addItem(type: string, data: unknown) {\n const id = crypto.randomUUID();\n\n const config: GridItemConfig = {\n id,\n type,\n data,\n layout: {},\n };\n\n this.placeItem(config);\n }\n\n public removeItem(id: string) {\n const el = this.itemElements.get(id);\n\n if (el) {\n const anim = el.animate(\n [\n { transform: 'scale(1)', opacity: '1' },\n { transform: 'scale(0.9)', opacity: '0' },\n ],\n { duration: 200, easing: 'cubic-bezier(0.4, 0, 1, 1)', fill: 'forwards' },\n );\n\n anim.onfinish = () => {\n anim.cancel();\n this.snapshotRects();\n this.itemConfigs.update((items) => items.filter((i) => i.id !== id));\n\n const columns = this.activeColumns();\n const currentLayout = this.baseLayout().filter((e) => e.id !== id);\n const compacted = compactLayout(currentLayout, columns);\n\n this.updateLayoutForCurrentBreakpoint(compacted);\n this.emitLayoutChange();\n this.animateLayoutTransition({ excludeIds: new Set([id]) });\n };\n } else {\n this.itemConfigs.update((items) => items.filter((i) => i.id !== id));\n\n const columns = this.activeColumns();\n const currentLayout = this.baseLayout().filter((e) => e.id !== id);\n const compacted = compactLayout(currentLayout, columns);\n\n this.updateLayoutForCurrentBreakpoint(compacted);\n this.emitLayoutChange();\n }\n }\n\n public moveItem(id: string, newPosition: GridItemPosition) {\n const columns = this.activeColumns();\n const item = this.itemConfigs().find((i) => i.id === id);\n\n if (!item) return;\n\n const clamped = clampPosition({ position: newPosition, constraints: this.getConstraints(id), columns });\n const currentLayout = this.baseLayout().map((e) => (e.id === id ? { ...e, position: clamped } : e));\n\n const resolved = resolveCollisions({ entries: currentLayout, movedId: id, columns });\n this.updateLayoutForCurrentBreakpoint(resolved);\n this.updateItemLayout(id, clamped);\n this.emitLayoutChange();\n }\n\n public resizeItem(options: ResizeItemOptions) {\n const { id, newColSpan, newRowSpan, newCol, newRow } = options;\n const columns = this.activeColumns();\n const item = this.itemConfigs().find((i) => i.id === id);\n\n // Use the stored pre-resize layout as the base (captures original neighbor positions)\n if (!this.resizeBaseLayout()) {\n this.resizeBaseLayout.set(this.baseLayout());\n }\n\n const base = this.resizeBaseLayout() ?? this.baseLayout();\n const entry = base.find((e) => e.id === id);\n\n if (!item || !entry) return;\n\n const newPosition: GridItemPosition = {\n col: newCol ?? entry.position.col,\n row: newRow ?? entry.position.row,\n colSpan: newColSpan,\n rowSpan: newRowSpan,\n };\n\n const clamped = clampPosition({ position: newPosition, constraints: this.getConstraints(id), columns });\n\n // Try to shrink horizontal neighbors before pushing them down\n const currentLayout = base.map((e) => (e.id === id ? { ...e, position: clamped } : e));\n\n const withShrunk = this.shrinkNeighbors({\n layout: currentLayout,\n resizedId: id,\n resizedPos: clamped,\n originalPos: entry.position,\n columns,\n });\n const resolved = resolveCollisions({ entries: withShrunk, movedId: id, columns });\n\n this.updateLayoutForCurrentBreakpoint(resolved);\n this.updateItemLayout(id, clamped);\n this.emitLayoutChange();\n }\n\n public commitResize() {\n this.resizeBaseLayout.set(null);\n }\n\n public getSerializedState(): GridSerializedState {\n return serializeGridLayout({\n items: this.itemConfigs(),\n breakpoints: this.breakpoints(),\n rowHeight: this.rowHeight(),\n });\n }\n\n public restoreState(state: GridSerializedState) {\n const items: GridItemConfig[] = state.items.map((item) => ({\n id: item.id,\n type: item.type,\n data: item.data,\n layout: { ...item.layout },\n }));\n\n this.itemConfigs.set(items);\n\n const overrides: Record<GridBreakpointName, GridLayoutEntry[]> = {};\n\n for (const [bpName, columns] of Object.entries(state.columns)) {\n overrides[bpName] = items.map((item) => ({\n id: item.id,\n position:\n item.layout[bpName] ??\n autoPlace({\n entries: [],\n colSpan: this.getConstraints(item.id).minColSpan,\n rowSpan: this.getConstraints(item.id).minRowSpan,\n columns,\n }),\n }));\n }\n\n this.layoutOverrides.set(overrides);\n }\n\n private placeItem(config: GridItemConfig) {\n const breakpoint = this.activeBreakpoint();\n const columns = this.activeColumns();\n const currentLayout = this.baseLayout();\n const constraints = this.getConstraints(config.id);\n\n const position =\n config.layout[breakpoint] ??\n autoPlace({\n entries: currentLayout,\n colSpan: constraints.minColSpan,\n rowSpan: constraints.minRowSpan,\n columns,\n });\n\n const itemWithLayout: GridItemConfig = {\n ...config,\n layout: {\n ...config.layout,\n [breakpoint]: position,\n },\n };\n\n this.itemConfigs.update((items) => [...items, itemWithLayout]);\n this.updateLayoutForCurrentBreakpoint([...currentLayout, { id: config.id, position }]);\n this.emitLayoutChange();\n }\n\n private shrinkNeighbors(options: {\n layout: GridLayoutEntry[];\n resizedId: string;\n resizedPos: GridItemPosition;\n originalPos: GridItemPosition;\n columns: number;\n }): GridLayoutEntry[] {\n const { layout, resizedId, resizedPos, originalPos, columns } = options;\n\n // Compute candidate shrunk positions\n const candidates = layout.map((entry) => {\n if (entry.id === resizedId) return entry;\n\n const pos = entry.position;\n\n // Use original row range so items that only entered the overlap zone due to a south/north\n // resize are not treated as horizontal neighbors and incorrectly shrunk.\n const rowOverlap = pos.row < originalPos.row + originalPos.rowSpan && pos.row + pos.rowSpan > originalPos.row;\n const colOverlap = pos.col < resizedPos.col + resizedPos.colSpan && pos.col + pos.colSpan > resizedPos.col;\n\n if (!rowOverlap || !colOverlap) return entry;\n\n const minColSpan = this.getConstraints(entry.id).minColSpan;\n\n const neighborIsRight = pos.col >= resizedPos.col;\n const shrunkPos = { ...pos };\n\n if (neighborIsRight) {\n const newCol = resizedPos.col + resizedPos.colSpan;\n // Prefer sliding the neighbor right over shrinking it — only shrink if its\n // full colSpan no longer fits within the grid at the new column.\n if (newCol + pos.colSpan <= columns) {\n shrunkPos.col = newCol;\n } else {\n // Compute reduction from the max-slide position, not from the base col.\n // Using the base col would count the already-slid distance as part of the\n // shrink, causing a double-step on the first frame where slide is impossible.\n const maxSlideCol = columns - pos.colSpan;\n const excessCols = newCol - maxSlideCol;\n const newColSpan = Math.max(minColSpan, pos.colSpan - excessCols);\n const clampedCol = Math.min(newCol, columns - newColSpan);\n shrunkPos.col = clampedCol;\n shrunkPos.colSpan = newColSpan;\n }\n } else {\n const maxRight = resizedPos.col;\n // Prefer sliding the neighbor left over shrinking it — only shrink if its\n // full colSpan would go below column 0 at the new position.\n if (maxRight - pos.colSpan >= 0) {\n shrunkPos.col = maxRight - pos.colSpan;\n } else {\n // Compute reduction from the max-slide position (col 0), not from the base col.\n const newColSpan = Math.max(minColSpan, maxRight);\n shrunkPos.col = 0;\n shrunkPos.colSpan = newColSpan;\n }\n }\n\n return { ...entry, position: shrunkPos };\n });\n\n // Validate: revert any shrunk item that now collides with another non-resized item\n return candidates.map((entry, idx) => {\n if (entry.id === resizedId) return entry;\n\n const original = layout[idx] as GridLayoutEntry;\n\n // Only check items that actually changed\n if (entry.position.col === original.position.col && entry.position.colSpan === original.position.colSpan)\n return entry;\n\n // If the shrunk position still overlaps the resized item (couldn't be shrunk enough to\n // fit alongside it), revert to the original so resolveCollisions can push it to another row.\n const resizedEntry = candidates.find((c) => c.id === resizedId);\n if (\n resizedEntry &&\n resizedEntry.position.row < entry.position.row + entry.position.rowSpan &&\n resizedEntry.position.row + resizedEntry.position.rowSpan > entry.position.row &&\n resizedEntry.position.col < entry.position.col + entry.position.colSpan &&\n resizedEntry.position.col + resizedEntry.position.colSpan > entry.position.col\n ) {\n return original;\n }\n\n // Check if the new position collides with any other non-resized item\n const collides = candidates.some(\n (other) =>\n other.id !== entry.id &&\n other.id !== resizedId &&\n other.position.row < entry.position.row + entry.position.rowSpan &&\n other.position.row + other.position.rowSpan > entry.position.row &&\n other.position.col < entry.position.col + entry.position.colSpan &&\n other.position.col + other.position.colSpan > entry.position.col,\n );\n\n return collides ? original : entry;\n });\n }\n\n private updateLayoutForCurrentBreakpoint(entries: GridLayoutEntry[]) {\n const breakpoint = this.activeBreakpoint();\n this.layoutOverrides.update((prev) => ({ ...prev, [breakpoint]: entries }));\n }\n\n private updateItemLayout(id: string, position: GridItemPosition) {\n const breakpoint = this.activeBreakpoint();\n\n this.itemConfigs.update((items) =>\n items.map((item) => (item.id === id ? { ...item, layout: { ...item.layout, [breakpoint]: position } } : item)),\n );\n }\n\n private emitLayoutChange() {\n this.layoutChange.emit(this.getSerializedState());\n }\n}\n","import {\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal,\n untracked,\n} from '@angular/core';\nimport { signalHostStyles } from '@ethlete/core';\nimport { GRID_TOKEN } from './grid.tokens';\n\n@Directive({\n selector: '[etGridItem]',\n exportAs: 'etGridItem',\n host: {\n class: 'et-grid-item',\n },\n})\nexport class GridItemDirective {\n private grid = inject(GRID_TOKEN);\n public hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n\n public itemId = input.required<string>();\n public minColSpan = input(1, { transform: numberAttribute });\n public maxColSpan = input(12, { transform: numberAttribute });\n public minRowSpan = input(1, { transform: numberAttribute });\n public maxRowSpan = input(4, { transform: numberAttribute });\n\n public isBeingDragged = computed(() => this.grid.dragState()?.itemId === this.itemId());\n private frozenPosition = signal<{ col: number; row: number; colSpan: number; rowSpan: number } | null>(null);\n\n public currentPosition = computed(() => {\n const layout = this.grid.layout();\n const entry = layout.find((e) => e.id === this.itemId());\n return entry?.position ?? null;\n });\n\n public renderPosition = computed(() => {\n const frozen = this.frozenPosition();\n\n if (frozen && this.isBeingDragged()) {\n return frozen;\n }\n\n return this.currentPosition();\n });\n\n public currentCol = computed(() => this.renderPosition()?.col ?? 0);\n public currentRow = computed(() => this.renderPosition()?.row ?? 0);\n public currentColSpan = computed(() => this.renderPosition()?.colSpan ?? 1);\n public currentRowSpan = computed(() => this.renderPosition()?.rowSpan ?? 1);\n\n public hostStyles = signalHostStyles({\n 'grid-column': computed(() => `${this.currentCol() + 1} / span ${this.currentColSpan()}`),\n 'grid-row': computed(() => `${this.currentRow() + 1} / span ${this.currentRowSpan()}`),\n });\n\n constructor() {\n effect((onCleanup) => {\n const id = this.itemId();\n const el = this.hostElement.nativeElement;\n this.grid.registerItem(id, {\n el,\n constraints: {\n minColSpan: this.minColSpan(),\n maxColSpan: this.maxColSpan(),\n minRowSpan: this.minRowSpan(),\n maxRowSpan: this.maxRowSpan(),\n },\n });\n onCleanup(() => this.grid.unregisterItem(id));\n });\n\n effect(() => {\n const drag = this.grid.dragState();\n\n untracked(() => {\n if (drag?.itemId === this.itemId()) {\n const pos = this.currentPosition();\n\n if (pos && !this.frozenPosition()) {\n this.frozenPosition.set(pos);\n }\n } else {\n this.frozenPosition.set(null);\n }\n });\n });\n }\n}\n","import { afterNextRender, computed, Directive, ElementRef, inject, Injector, signal } from '@angular/core';\nimport { DragHandleDirective, DragMoveEvent, injectRenderer, signalHostStyles } from '@ethlete/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter, tap } from 'rxjs';\nimport { GridItemDirective } from './grid-item.directive';\nimport { GRID_TOKEN } from './grid.tokens';\n\n@Directive({\n selector: '[etGridDrag]',\n hostDirectives: [\n {\n directive: DragHandleDirective,\n outputs: ['dragStarted', 'dragMoved', 'dragEnded'],\n },\n ],\n host: {\n class: 'et-grid-drag',\n '[class.et-grid-drag--active]': '!grid.readOnly() && dragHandle.isDragging()',\n '[attr.aria-grabbed]': '!grid.readOnly() && dragHandle.isDragging()',\n },\n})\nexport class GridDragDirective {\n protected grid = inject(GRID_TOKEN);\n private gridItem = inject(GridItemDirective);\n private injector = inject(Injector);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n public dragHandle = inject(DragHandleDirective);\n private renderer = injectRenderer();\n\n private dragStartClient = signal<{ x: number; y: number } | null>(null);\n private dragPixelOffset = signal<{ x: number; y: number }>({ x: 0, y: 0 });\n\n public hostStyles = signalHostStyles({\n transform: computed(() => {\n const offset = this.dragPixelOffset();\n return `translate(${offset.x}px, ${offset.y}px)`;\n }),\n });\n\n constructor() {\n outputToObservable(this.dragHandle.dragStarted)\n .pipe(\n filter(() => !this.grid.readOnly()),\n tap(() => {\n this.dragPixelOffset.set({ x: 0, y: 0 });\n this.dragStartClient.set(null);\n\n // Lift out of document flow before beginDrag changes the layout\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n this.applyFixed(rect);\n\n this.grid.beginDrag(this.gridItem.itemId());\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n outputToObservable<DragMoveEvent>(this.dragHandle.dragMoved)\n .pipe(\n filter(() => !this.grid.readOnly()),\n tap((event) => {\n const startClient = this.dragStartClient();\n const anchor = startClient ?? { x: event.clientX, y: event.clientY };\n\n if (!startClient) {\n this.dragStartClient.set(anchor);\n }\n\n const totalDx = event.clientX - anchor.x;\n const totalDy = event.clientY - anchor.y;\n\n this.dragPixelOffset.set({ x: totalDx, y: totalDy });\n\n const columns = this.grid.activeColumns();\n const containerWidth = this.grid.containerWidth();\n const rowHeight = this.grid.rowHeight();\n const gap = this.grid.gap();\n\n const cellWidth = (containerWidth - gap * (columns - 1)) / columns;\n const cellHeight = rowHeight + gap;\n\n const colDelta = Math.round(totalDx / (cellWidth + gap));\n const rowDelta = Math.round(totalDy / cellHeight);\n\n const originPos = this.grid.dragState()?.originPosition;\n\n if (!originPos) return;\n\n const newCol = Math.max(0, Math.min(originPos.col + colDelta, columns - originPos.colSpan));\n const newRow = Math.max(0, originPos.row + rowDelta);\n\n const currentGhost = this.grid.ghostPosition();\n const ghostWillMove = !currentGhost || currentGhost.col !== newCol || currentGhost.row !== newRow;\n\n if (ghostWillMove) {\n this.grid.snapshotRects();\n }\n\n this.grid.updateDragTarget({\n col: newCol,\n row: newRow,\n colSpan: originPos.colSpan,\n rowSpan: originPos.rowSpan,\n });\n\n if (ghostWillMove) {\n this.grid.animateLayoutTransition({ excludeIds: new Set([this.gridItem.itemId()]) });\n }\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n outputToObservable(this.dragHandle.dragEnded)\n .pipe(\n filter(() => !this.grid.readOnly()),\n tap(() => {\n const currentOffset = this.dragPixelOffset();\n const ghostPos = this.grid.ghostPosition();\n const originPos = this.grid.dragState()?.originPosition;\n\n const containerWidth = this.grid.containerWidth();\n const columns = this.grid.activeColumns();\n const rowHeight = this.grid.rowHeight();\n const gap = this.grid.gap();\n const cellWidth = (containerWidth - gap * (columns - 1)) / columns;\n const cellHeight = rowHeight + gap;\n\n let settleFromX = 0;\n let settleFromY = 0;\n\n if (ghostPos && originPos) {\n const targetPixelX = (ghostPos.col - originPos.col) * (cellWidth + gap);\n const targetPixelY = (ghostPos.row - originPos.row) * cellHeight;\n settleFromX = currentOffset.x - targetPixelX;\n settleFromY = currentOffset.y - targetPixelY;\n }\n\n // Reset transform — element stays position:fixed at original screen coords\n this.dragStartClient.set(null);\n this.dragPixelOffset.set({ x: 0, y: 0 });\n this.grid.snapshotRects();\n this.grid.commitDrag();\n this.grid.animateLayoutTransition({ excludeIds: new Set([this.gridItem.itemId()]) });\n\n afterNextRender(\n () => {\n const el = this.elementRef.nativeElement;\n\n // Briefly release fixed to measure where the element landed in the grid,\n // then re-anchor fixed there so the settle animation stays out of flow.\n this.releaseFixed();\n const finalRect = el.getBoundingClientRect();\n this.applyFixed(finalRect);\n\n el.getAnimations().forEach((a) => a.cancel());\n\n const releaseFixed = () => this.releaseFixed();\n\n if (Math.abs(settleFromX) > 1 || Math.abs(settleFromY) > 1) {\n const anim = el.animate(\n [\n { transform: `translate(${settleFromX}px, ${settleFromY}px)` },\n { transform: 'translate(0px, 0px)' },\n ],\n { duration: 250, easing: 'cubic-bezier(0.2, 0, 0, 1)' },\n );\n anim.onfinish = releaseFixed;\n anim.oncancel = releaseFixed;\n } else {\n releaseFixed();\n }\n },\n { injector: this.injector },\n );\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n private applyFixed(rect: { left: number; top: number; width: number; height: number }) {\n const el = this.elementRef.nativeElement;\n this.renderer.setStyle(el, {\n position: 'fixed',\n left: `${rect.left}px`,\n top: `${rect.top}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n });\n }\n\n private releaseFixed() {\n const el = this.elementRef.nativeElement;\n this.renderer.removeStyles(el, 'position', 'left', 'top', 'width', 'height');\n }\n}\n","import { Directive, computed, inject, signal } from '@angular/core';\nimport { ResizeEdge, ResizeMoveEvent } from '@ethlete/core';\nimport { GridItemDirective } from './grid-item.directive';\nimport { GRID_TOKEN } from './grid.tokens';\n\n@Directive({\n selector: '[etGridResize]',\n host: {\n class: 'et-grid-resize',\n '[class.et-grid-resize--active]': 'isResizing()',\n },\n})\nexport class GridResizeDirective {\n private grid = inject(GRID_TOKEN);\n private gridItem = inject(GridItemDirective);\n\n public isResizing = signal(false);\n public resizeEdges = computed((): ResizeEdge[] => ['n', 'e', 's', 'w', 'ne', 'nw', 'se', 'sw']);\n\n private resizeStartPos = signal<{ col: number; row: number; colSpan: number; rowSpan: number } | null>(null);\n\n public beginResize() {\n if (this.grid.readOnly()) return;\n\n const pos = this.gridItem.currentPosition();\n\n if (pos) {\n this.resizeStartPos.set({ col: pos.col, row: pos.row, colSpan: pos.colSpan, rowSpan: pos.rowSpan });\n this.isResizing.set(true);\n }\n }\n\n public updateResize(event: ResizeMoveEvent) {\n const start = this.resizeStartPos();\n\n if (!start) return;\n\n const columns = this.grid.activeColumns();\n const containerWidth = this.grid.containerWidth();\n const rowHeight = this.grid.rowHeight();\n const gap = this.grid.gap();\n\n const cellWidth = (containerWidth - gap * (columns - 1)) / columns;\n const cellHeight = rowHeight + gap;\n\n let newColSpan = start.colSpan;\n let newRowSpan = start.rowSpan;\n let newCol = start.col;\n let newRow = start.row;\n\n // East edges: grow/shrink span to the right\n if (event.edge === 'e' || event.edge === 'se' || event.edge === 'ne') {\n newColSpan = Math.max(1, start.colSpan + Math.round(event.dx / cellWidth));\n }\n\n // West edges: move col left and grow span, keeping right edge fixed\n if (event.edge === 'w' || event.edge === 'sw' || event.edge === 'nw') {\n const rightEdge = start.col + start.colSpan;\n const colDelta = Math.round(event.dx / cellWidth);\n newCol = Math.max(0, start.col + colDelta);\n newColSpan = rightEdge - newCol;\n // Clamp against constraints and recalculate col to keep right edge fixed\n newColSpan = Math.min(this.gridItem.maxColSpan(), Math.max(this.gridItem.minColSpan(), newColSpan));\n newCol = rightEdge - newColSpan;\n }\n\n // South edges: grow/shrink span downward\n if (event.edge === 's' || event.edge === 'se' || event.edge === 'sw') {\n newRowSpan = Math.max(1, start.rowSpan + Math.round(event.dy / cellHeight));\n }\n\n // North edges: move row up and grow span, keeping bottom edge fixed\n if (event.edge === 'n' || event.edge === 'ne' || event.edge === 'nw') {\n const bottomEdge = start.row + start.rowSpan;\n const rowDelta = Math.round(event.dy / cellHeight);\n newRow = Math.max(0, start.row + rowDelta);\n newRowSpan = bottomEdge - newRow;\n // Clamp against constraints and recalculate row to keep bottom edge fixed\n newRowSpan = Math.min(this.gridItem.maxRowSpan(), Math.max(this.gridItem.minRowSpan(), newRowSpan));\n newRow = bottomEdge - newRowSpan;\n }\n\n const currentPos = this.gridItem.currentPosition();\n\n if (\n currentPos &&\n currentPos.colSpan === newColSpan &&\n currentPos.rowSpan === newRowSpan &&\n currentPos.col === newCol &&\n currentPos.row === newRow\n )\n return;\n\n this.grid.snapshotRects();\n this.grid.resizeItem({ id: this.gridItem.itemId(), newColSpan, newRowSpan, newCol, newRow });\n this.grid.animateLayoutTransition({ scaleIds: new Set([this.gridItem.itemId()]) });\n }\n\n public finishResize() {\n this.resizeStartPos.set(null);\n this.isResizing.set(false);\n this.grid.commitResize();\n }\n}\n","import { InputSignal, Signal, Type } from '@angular/core';\n\nexport type GridBreakpointName = string;\n\nexport type GridItemPosition = {\n col: number;\n row: number;\n colSpan: number;\n rowSpan: number;\n};\n\nexport type GridItemConstraints = {\n minColSpan: number;\n maxColSpan: number;\n minRowSpan: number;\n maxRowSpan: number;\n};\n\nexport type GridItemConfig<TType extends string = string, TData = unknown> = {\n id: string;\n type: TType;\n data: TData;\n layout: Record<GridBreakpointName, GridItemPosition>;\n};\n\nexport type GridBreakpointConfig = {\n name: GridBreakpointName;\n columns: number;\n minWidth: number;\n};\n\nexport type GridSerializedState = {\n columns: Record<GridBreakpointName, number>;\n rowHeight: number;\n items: GridItemConfig[];\n};\n\nexport type GridLayoutEntry = {\n id: string;\n position: GridItemPosition;\n};\n\nexport type GridComponentRegistration<TData = unknown> = {\n component: Type<{ data: InputSignal<TData> }>;\n type: string;\n constraints?: {\n minColSpan?: number;\n maxColSpan?: number;\n minRowSpan?: number;\n maxRowSpan?: number;\n };\n configComponent?: Type<unknown>;\n};\n\n/**\n * Injectable reference provided to configComponent instances.\n * Gives the config form access to the item's current data and the ability to save or cancel.\n */\nexport abstract class GridItemRef<TData = unknown> {\n abstract readonly data: Signal<TData | undefined>;\n abstract save(data: TData): void;\n abstract close(): void;\n}\n","import { GridItemConfig, GridItemPosition } from './grid.types';\n\nexport type GridAdapter<TExternal> = {\n fromExternal(items: TExternal[]): GridItemConfig[];\n toExternal(items: GridItemConfig[]): TExternal[];\n};\n\nexport const createGridAdapter = <TExternal>(\n fromItem: (item: TExternal) => GridItemConfig,\n toItem: (item: GridItemConfig) => TExternal,\n): GridAdapter<TExternal> => ({\n fromExternal: (items) => items.map(fromItem),\n toExternal: (items) => items.map(toItem),\n});\n\n/** Map a backend position shaped as `{x, y, cols, rows}` to a `GridItemPosition`. */\nexport const toGridPosition = (pos: { x: number; y: number; cols: number; rows: number }): GridItemPosition => ({\n col: pos.x,\n row: pos.y,\n colSpan: pos.cols,\n rowSpan: pos.rows,\n});\n\n/** Map a `GridItemPosition` to a backend position shaped as `{x, y, cols, rows}`. */\nexport const fromGridPosition = (pos: GridItemPosition): { x: number; y: number; cols: number; rows: number } => ({\n x: pos.col,\n y: pos.row,\n cols: pos.colSpan,\n rows: pos.rowSpan,\n});\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n ElementRef,\n inject,\n viewChild,\n} from '@angular/core';\nimport { injectLocale, signalHostStyles } from '@ethlete/core';\nimport { injectGridConfig } from './headless/grid-config';\nimport { GridDirective } from './headless/grid.directive';\n\n@Component({\n selector: 'et-grid, [et-grid]',\n template: `\n <ng-content />\n @if (grid.ghostPosition(); as ghost) {\n <div\n #ghostRef\n [style.grid-column]=\"ghost.col + 1 + ' / span ' + ghost.colSpan\"\n [style.grid-row]=\"ghost.row + 1 + ' / span ' + ghost.rowSpan\"\n class=\"et-grid-ghost\"\n ></div>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: GridDirective,\n inputs: ['breakpoints', 'rowHeight', 'gap', 'initialItems', 'readOnly'],\n outputs: ['layoutChange'],\n },\n ],\n host: {\n class: 'et-grid',\n role: 'region',\n '[attr.aria-label]': 'ariaLabel()',\n },\n styles: `\n @property --et-grid-gap {\n syntax: '<length>';\n inherits: false;\n initial-value: 16px;\n }\n\n @property --et-grid-row-height {\n syntax: '<length>';\n inherits: false;\n initial-value: 100px;\n }\n\n @property --et-grid-padding {\n syntax: '<length>';\n inherits: false;\n initial-value: 0px;\n }\n\n .et-grid {\n display: grid;\n grid-template-columns: repeat(var(--_et-grid-columns, 12), 1fr);\n grid-auto-rows: var(--et-grid-row-height);\n gap: var(--et-grid-gap);\n padding: var(--et-grid-padding);\n position: relative;\n min-height: 0;\n\n &:has(.et-grid-item--dragging, .et-grid-item--resizing) {\n user-select: none;\n cursor: grabbing;\n }\n\n &:has(.et-grid-item--resizing) {\n cursor: nwse-resize;\n }\n }\n\n .et-grid-ghost {\n border-radius: 8px;\n background: rgb(var(--et-surface-color, 23 23 23) / 0.08);\n border: 2px dashed rgb(var(--et-surface-color, 23 23 23) / 0.2);\n pointer-events: none;\n transition:\n grid-column 0s,\n grid-row 0s;\n }\n\n .et-grid--readonly {\n .et-grid-item__drag-handle {\n cursor: default;\n pointer-events: none;\n }\n\n .et-grid-item__actions {\n display: none;\n }\n\n .et-grid-item:hover {\n .et-resize-handle--e::after,\n .et-resize-handle--s::after,\n .et-resize-handle--w::after,\n .et-resize-handle--n::after,\n .et-resize-handle--se::after,\n .et-resize-handle--sw::after,\n .et-resize-handle--ne::after,\n .et-resize-handle--nw::after {\n content: unset;\n }\n }\n }\n `,\n})\nexport class GridComponent {\n public grid = inject(GridDirective);\n private ghostRef = viewChild<ElementRef<HTMLElement>>('ghostRef');\n private gridConfig = injectGridConfig();\n private locale = injectLocale();\n\n protected ariaLabel = computed(() => {\n const label = this.grid.readOnly() ? this.gridConfig.readonlyAriaLabel : this.gridConfig.interactiveAriaLabel;\n return this.gridConfig.transformer(label, this.locale.currentLocale());\n });\n\n public hostStyles = signalHostStyles({\n '--_et-grid-columns': computed(() => `${this.grid.activeColumns()}`),\n '--et-grid-gap': computed(() => `${this.grid.gap()}px`),\n '--et-grid-row-height': computed(() => `${this.grid.rowHeight()}px`),\n });\n\n constructor() {\n effect(() => {\n this.grid.setGhostElement(this.ghostRef()?.nativeElement ?? null);\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject, input, output } from '@angular/core';\nimport { ResizeHandlesComponent, injectLocale } from '@ethlete/core';\nimport { injectGridConfig } from './headless/grid-config';\nimport { GridDragDirective } from './headless/grid-drag.directive';\nimport { GridItemDirective } from './headless/grid-item.directive';\nimport { GridResizeDirective } from './headless/grid-resize.directive';\nimport { GRID_TOKEN } from './headless/grid.tokens';\n\n@Component({\n selector: 'et-grid-item, [et-grid-item]',\n template: `\n <div [attr.aria-label]=\"dragHandleAriaLabel()\" class=\"et-grid-item__drag-handle\">\n <ng-content select=\"[etGridItemDragHandle]\" />\n </div>\n\n <div (pointerdown)=\"$event.stopPropagation()\" class=\"et-grid-item__content\">\n <ng-content />\n </div>\n\n <et-resize-handles\n [edges]=\"gridResize.resizeEdges()\"\n [disabled]=\"gridResize.isResizing() || isReadOnly()\"\n (resizeStarted)=\"gridResize.beginResize()\"\n (resizeMoved)=\"gridResize.updateResize($event)\"\n (resizeEnded)=\"gridResize.finishResize()\"\n (pointerdown)=\"$event.stopPropagation()\"\n />\n\n <div (pointerdown)=\"$event.stopPropagation()\" class=\"et-grid-item__actions\">\n <ng-content select=\"[etGridItemAction]\" />\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ResizeHandlesComponent],\n hostDirectives: [\n {\n directive: GridItemDirective,\n inputs: ['itemId', 'minColSpan', 'maxColSpan', 'minRowSpan', 'maxRowSpan'],\n },\n GridDragDirective,\n GridResizeDirective,\n ],\n host: {\n class: 'et-grid-item',\n '[class.et-grid-item--dragging]': '!isReadOnly() && gridDrag.dragHandle.isDragging()',\n '[class.et-grid-item--resizing]': 'gridResize.isResizing()',\n '[attr.role]': '\"group\"',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.tabindex]': '\"0\"',\n '(keydown)': 'applyKeyboardShortcut($event)',\n },\n styles: `\n @property --et-grid-item-border-radius {\n syntax: '<length>';\n inherits: false;\n initial-value: 8px;\n }\n\n @property --et-grid-item-bg {\n syntax: '<color>';\n inherits: false;\n initial-value: rgb(var(--et-surface-background, 255 255 255));\n }\n\n @property --et-grid-item-shadow {\n syntax: '*';\n inherits: false;\n initial-value: 0 1px 3px rgba(0, 0, 0, 0.12);\n }\n\n @property --et-grid-item-drag-handle-height {\n syntax: '<length>';\n inherits: false;\n initial-value: 32px;\n }\n\n .et-grid-item {\n position: relative;\n border-radius: var(--et-grid-item-border-radius);\n background: var(--et-grid-item-bg);\n box-shadow: var(--et-grid-item-shadow);\n border: 1px solid rgb(var(--et-surface-border, 229 229 229));\n color: rgb(var(--et-surface-color, 23 23 23));\n overflow: hidden;\n display: flex;\n flex-direction: column;\n outline: none;\n will-change: transform;\n\n &:focus-visible {\n box-shadow: 0 0 0 2px var(--et-grid-item-focus-ring-color, #2563eb);\n }\n\n &:is(.et-grid-item--dragging) {\n z-index: 100;\n box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2);\n opacity: 0.95;\n cursor: grabbing;\n user-select: none;\n }\n\n &:is(.et-grid-item--resizing) {\n z-index: 100;\n user-select: none;\n }\n }\n\n .et-grid-item:hover .et-resize-handle--e::after,\n .et-grid-item:hover .et-resize-handle--s::after,\n .et-grid-item:hover .et-resize-handle--w::after,\n .et-grid-item:hover .et-resize-handle--n::after,\n .et-grid-item:hover .et-resize-handle--se::after,\n .et-grid-item:hover .et-resize-handle--sw::after,\n .et-grid-item:hover .et-resize-handle--ne::after,\n .et-grid-item:hover .et-resize-handle--nw::after,\n .et-grid-item--resizing .et-resize-handle--e::after,\n .et-grid-item--resizing .et-resize-handle--s::after,\n .et-grid-item--resizing .et-resize-handle--w::after,\n .et-grid-item--resizing .et-resize-handle--n::after,\n .et-grid-item--resizing .et-resize-handle--se::after,\n .et-grid-item--resizing .et-resize-handle--sw::after,\n .et-grid-item--resizing .et-resize-handle--ne::after,\n .et-grid-item--resizing .et-resize-handle--nw::after {\n content: '';\n position: absolute;\n border-radius: 2px;\n background: rgb(var(--et-surface-color, 23 23 23) / 0.2);\n transition: opacity 0.15s ease;\n }\n\n .et-grid-item:hover .et-resize-handle--e::after,\n .et-grid-item--resizing .et-resize-handle--e::after {\n right: 2px;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n }\n\n .et-grid-item:hover .et-resize-handle--w::after,\n .et-grid-item--resizing .et-resize-handle--w::after {\n left: 2px;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n }\n\n .et-grid-item:hover .et-resize-handle--s::after,\n .et-grid-item--resizing .et-resize-handle--s::after {\n bottom: 2px;\n left: 50%;\n transform: translateX(-50%);\n height: 3px;\n width: 24px;\n }\n\n .et-grid-item:hover .et-resize-handle--n::after,\n .et-grid-item--resizing .et-resize-handle--n::after {\n top: 2px;\n left: 50%;\n transform: translateX(-50%);\n height: 3px;\n width: 24px;\n }\n\n .et-grid-item:hover .et-resize-handle--se::after,\n .et-grid-item--resizing .et-resize-handle--se::after {\n bottom: 3px;\n right: 3px;\n width: 8px;\n height: 8px;\n border-radius: 1px;\n }\n\n .et-grid-item:hover .et-resize-handle--sw::after,\n .et-grid-item--resizing .et-resize-handle--sw::after {\n bottom: 3px;\n left: 3px;\n width: 8px;\n height: 8px;\n border-radius: 1px;\n }\n\n .et-grid-item:hover .et-resize-handle--ne::after,\n .et-grid-item--resizing .et-resize-handle--ne::after {\n top: 3px;\n right: 3px;\n width: 8px;\n height: 8px;\n border-radius: 1px;\n }\n\n .et-grid-item:hover .et-resize-handle--nw::after,\n .et-grid-item--resizing .et-resize-handle--nw::after {\n top: 3px;\n left: 3px;\n width: 8px;\n height: 8px;\n border-radius: 1px;\n }\n\n .et-grid-item__drag-handle {\n height: var(--et-grid-item-drag-handle-height);\n cursor: grab;\n display: flex;\n align-items: center;\n padding-inline: 8px;\n user-select: none;\n touch-action: none;\n\n .et-grid-item--dragging & {\n cursor: grabbing;\n }\n }\n\n .et-grid-item__content {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n }\n\n .et-grid-item__actions {\n position: absolute;\n top: 4px;\n right: 4px;\n display: flex;\n gap: 4px;\n }\n `,\n})\nexport class GridItemComponent {\n private grid = inject(GRID_TOKEN);\n private gridItem = inject(GridItemDirective);\n\n public gridDrag = inject(GridDragDirective);\n public gridResize = inject(GridResizeDirective);\n\n public ariaLabel = input<string>('Grid item');\n\n public removed = output<void>();\n private gridConfig = injectGridConfig();\n private locale = injectLocale();\n\n protected isReadOnly = computed(() => this.grid.readOnly());\n\n protected dragHandleAriaLabel = computed(() =>\n this.gridConfig.transformer(this.gridConfig.dragHandleAriaLabel, this.locale.currentLocale()),\n );\n\n public applyKeyboardShortcut(event: KeyboardEvent) {\n if (this.isReadOnly()) return;\n const pos = this.gridItem.currentPosition();\n\n if (!pos) return;\n\n const columns = this.grid.activeColumns();\n\n if (event.ctrlKey || event.metaKey) {\n let handled = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n this.grid.moveItem(this.gridItem.itemId(), { ...pos, col: Math.max(0, pos.col - 1) });\n break;\n case 'ArrowRight':\n this.grid.moveItem(this.gridItem.itemId(), { ...pos, col: Math.min(columns - pos.colSpan, pos.col + 1) });\n break;\n case 'ArrowUp':\n this.grid.moveItem(this.gridItem.itemId(), { ...pos, row: Math.max(0, pos.row - 1) });\n break;\n case 'ArrowDown':\n this.grid.moveItem(this.gridItem.itemId(), { ...pos, row: pos.row + 1 });\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n if (event.shiftKey) {\n let handled = true;\n\n switch (event.key) {\n case 'ArrowRight':\n this.grid.resizeItem({ id: this.gridItem.itemId(), newColSpan: pos.colSpan + 1, newRowSpan: pos.rowSpan });\n break;\n case 'ArrowLeft':\n this.grid.resizeItem({ id: this.gridItem.itemId(), newColSpan: pos.colSpan - 1, newRowSpan: pos.rowSpan });\n break;\n case 'ArrowDown':\n this.grid.resizeItem({ id: this.gridItem.itemId(), newColSpan: pos.colSpan, newRowSpan: pos.rowSpan + 1 });\n break;\n case 'ArrowUp':\n this.grid.resizeItem({ id: this.gridItem.itemId(), newColSpan: pos.colSpan, newRowSpan: pos.rowSpan - 1 });\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n if (event.key === 'Delete' || event.key === 'Backspace') {\n if (event.ctrlKey || event.metaKey) {\n this.grid.removeItem(this.gridItem.itemId());\n this.removed.emit();\n event.preventDefault();\n }\n }\n }\n}\n","export const GRID_ERROR_CODES = {\n MISSING_GRID: 1900,\n MISSING_GRID_ITEM: 1901,\n DUPLICATE_ITEM_ID: 1902,\n INVALID_LAYOUT_STATE: 1903,\n} as const;\n","import { GridComponent } from './grid.component';\nimport { GridItemComponent } from './grid-item.component';\n\nexport const GridImports = [GridComponent, GridItemComponent] as const;\n","import { IconDefinition } from './icon-provider';\n\nexport const ARROW_OUT_UP_RIGHT_ICON: IconDefinition = {\n name: 'et-arrow-out-up-right',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M5 6.75A1.75 1.75 0 0 1 6.75 5h4.5a.75.75 0 0 1 0 1.5h-4.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-4.5a.75.75 0 0 1 1.5 0v4.5A1.75 1.75 0 0 1 17.25 19H6.75A1.75 1.75 0 0 1 5 17.25V6.75Z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M11.5 5.75c0-.414.336-.75.75-.75h6c.414 0 .75.336.75.75v6a.75.75 0 0 1-1.5 0V7.56l-6.72 6.72a.75.75 0 1 1-1.06-1.06l6.72-6.72h-4.19a.75.75 0 0 1-.75-.75Z\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\nexport const ARROW_RIGHT_ICON: IconDefinition = {\n name: 'et-arrow-right',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M4 12h14\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13 7l5 5-5 5\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\n// Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.\nexport const CHEVRON_ICON: IconDefinition = {\n name: 'et-chevron',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M244.7 116.7c6.2-6.2 16.4-6.2 22.6 0l192 192c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L256 150.6 75.3 331.3c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l192-192z\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\nexport const CLIPBOARD_CHECK_ICON: IconDefinition = {\n name: 'et-clipboard-check',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M9 4.5h6\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n />\n <path\n d=\"M9 3h6a1.5 1.5 0 0 1 1.5 1.5V6H18a2 2 0 0 1 2 2v10.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 4 18.5V8a2 2 0 0 1 2-2h1.5V4.5A1.5 1.5 0 0 1 9 3z\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8.5 13l2.2 2.2 4.8-4.9\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\nexport const FLOPPY_DISK_ICON: IconDefinition = {\n name: 'et-floppy-disk',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M5 3h11l3 3v13a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V3z\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8 3v6h7V3\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8 17h8\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\nexport const FOCUS_FRAME_ICON: IconDefinition = {\n name: 'et-focus-frame',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n fill-rule=\"evenodd\"\n d=\"M5.75 4A1.75 1.75 0 0 0 4 5.75v12.5C4 19.216 4.784 20 5.75 20h12.5A1.75 1.75 0 0 0 20 18.25V5.75A1.75 1.75 0 0 0 18.25 4H5.75Zm0 1.5a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V5.75a.25.25 0 0 0-.25-.25H5.75Z\"\n clip-rule=\"evenodd\"\n />\n <rect x=\"8\" y=\"8\" width=\"8\" height=\"8\" rx=\"1.25\" fill=\"currentColor\" />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\nexport const GRID_2X2_ICON: IconDefinition = {\n name: 'et-grid-2x2',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n fill-rule=\"evenodd\"\n d=\"M5.75 4A1.75 1.75 0 0 0 4 5.75v12.5C4 19.216 4.784 20 5.75 20h12.5A1.75 1.75 0 0 0 20 18.25V5.75A1.75 1.75 0 0 0 18.25 4H5.75Zm0 1.5a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V5.75a.25.25 0 0 0-.25-.25H5.75Z\"\n clip-rule=\"evenodd\"\n />\n <rect x=\"11.25\" y=\"5.5\" width=\"1.5\" height=\"13\" fill=\"currentColor\" />\n <rect x=\"5.5\" y=\"11.25\" width=\"13\" height=\"1.5\" fill=\"currentColor\" />\n </svg>\n `,\n};\n","export const ICON_ERROR_CODES = {\n NO_ICONS_PROVIDED: 1800,\n ICON_NOT_FOUND: 1801,\n INVALID_SVG: 1802,\n MISSING_XMLNS: 1803,\n MISSING_DIMENSIONS: 1804,\n HARDCODED_COLOR: 1805,\n DUPLICATE_ICON_NAME: 1806,\n} as const;\n","import { InjectionToken } from '@angular/core';\nimport { RuntimeError } from '@ethlete/core';\nimport { ICON_ERROR_CODES } from './icon-errors';\n\nexport type IconDefinition = {\n name: string;\n data: string;\n};\n\nexport const ICONS_TOKEN = new InjectionToken<Record<string, IconDefinition>>('ET_ICONS_TOKEN');\n\nexport const provideIcons = (...icons: IconDefinition[]) => {\n const map: Record<string, IconDefinition> = {};\n\n for (const def of icons) {\n if (map[def.name]) {\n throw new RuntimeError(\n ICON_ERROR_CODES.DUPLICATE_ICON_NAME,\n `[provideIcons] Icon with name \"${def.name}\" already exists. Please provide unique icon names.`,\n );\n }\n\n map[def.name] = def;\n }\n\n return {\n provide: ICONS_TOKEN,\n useValue: map,\n };\n};\n","import { booleanAttribute, computed, Directive, inject, InjectionToken, input } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { RuntimeError } from '@ethlete/core';\nimport { ICON_ERROR_CODES } from './icon-errors';\nimport { ICONS_TOKEN } from './icon-provider';\n\nexport const ICON_DIRECTIVE_TOKEN = new InjectionToken<IconDirective>('ET_ICON_DIRECTIVE_TOKEN');\n\nconst SVG_COLOR_ATTRIBUTES = ['fill', 'stroke', 'stop-color', 'stop-opacity'];\n\n@Directive({\n selector: '[etIcon]',\n providers: [\n {\n provide: ICON_DIRECTIVE_TOKEN,\n useExisting: IconDirective,\n },\n ],\n host: {\n '[innerHTML]': 'iconSrc()',\n 'aria-hidden': 'true',\n '[class]': 'hostClasses()',\n style: 'display: flex; align-items: center; justify-content: center;',\n },\n})\nexport class IconDirective {\n private icons = inject(ICONS_TOKEN, { optional: true });\n private sanitizer = inject(DomSanitizer);\n\n public iconNameToUse = input.required<string>({ alias: 'etIcon' });\n\n public allowHardcodedColor = input(false, { transform: booleanAttribute });\n\n public iconSrc = computed(() => {\n if (!this.icons) {\n return null;\n }\n\n const icon = this.icons[this.iconNameToUse()];\n\n if (!icon) {\n throw new RuntimeError(\n ICON_ERROR_CODES.ICON_NOT_FOUND,\n `[IconDirective] Icon \"${this.iconNameToUse()}\" not found. Available icons: ${Object.keys(this.icons).join(', ')}.`,\n );\n }\n\n const svg = icon.data.trim();\n\n if (ngDevMode) {\n if (!svg.includes('<svg')) {\n throw new RuntimeError(\n ICON_ERROR_CODES.INVALID_SVG,\n `[IconDirective] Icon \"${this.iconNameToUse()}\" is not a valid SVG. The data must contain an <svg> element.`,\n );\n }\n\n if (!svg.includes('xmlns=\"http://www.w3.org/2000/svg\"')) {\n throw new RuntimeError(\n ICON_ERROR_CODES.MISSING_XMLNS,\n `[IconDirective] Icon \"${this.iconNameToUse()}\" is missing xmlns=\"http://www.w3.org/2000/svg\". Add the attribute to the <svg> element.`,\n );\n }\n\n if (!svg.includes('width=\"100%\"') || !svg.includes('height=\"100%\"')) {\n throw new RuntimeError(\n ICON_ERROR_CODES.MISSING_DIMENSIONS,\n `[IconDirective] Icon \"${this.iconNameToUse()}\" is missing width=\"100%\" and/or height=\"100%\". Add both attributes to the <svg> element.`,\n );\n }\n\n if (!this.allowHardcodedColor()) {\n for (const colorAttribute of SVG_COLOR_ATTRIBUTES) {\n if (svg.includes(`${colorAttribute}=\"`) && !svg.includes(`${colorAttribute}=\"currentColor\"`)) {\n throw new RuntimeError(\n ICON_ERROR_CODES.HARDCODED_COLOR,\n `[IconDirective] Icon \"${this.iconNameToUse()}\" uses a hardcoded value for \"${colorAttribute}\". Use currentColor instead, or set [allowHardcodedColor]=\"true\".`,\n );\n }\n }\n }\n }\n\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n });\n\n public hostClasses = computed(() => `et-icon et-icon--${this.iconNameToUse()}`);\n\n constructor() {\n if (!this.icons) {\n throw new RuntimeError(\n ICON_ERROR_CODES.NO_ICONS_PROVIDED,\n '[IconDirective] No icons provided. Register icons via provideIcons() in the component or application providers.',\n );\n }\n }\n}\n","import { IconDefinition } from './icon-provider';\n\n// Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.\nexport const LOCK_ICON: IconDefinition = {\n name: 'et-lock',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n fill=\"currentColor\"\n d=\"M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 48 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48L32 512c-26.5 0-48-21.5-48-48L-16 240c0-26.5 21.5-48 48-48l48 0zm144 184c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\nexport const PENCIL_ICON: IconDefinition = {\n name: 'et-pencil',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M4 20l4.2-1 9.3-9.3a1.8 1.8 0 0 0 0-2.5l-.7-.7a1.8 1.8 0 0 0-2.5 0L5 15.8 4 20z\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12.8 7.2l4 4\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\nexport const PLUS_ICON: IconDefinition = {\n name: 'et-plus',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M12 5v14\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n />\n <path\n d=\"M5 12h14\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\n// Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.\nexport const TIMES_ICON: IconDefinition = {\n name: 'et-times',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n fill=\"currentColor\"\n d=\"M324.5 411.1c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L214.6 256 347.1 123.5c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L192 233.4 59.6 100.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L169.4 256 36.9 388.5c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L192 278.6 324.5 411.1z\"\n />\n </svg>\n `,\n};\n","import { IconDefinition } from './icon-provider';\n\n// Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.\nexport const TRIANGLE_EXCLAMATION_ICON: IconDefinition = {\n name: 'et-triangle-exclamation',\n data: `\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S489.3 480 475.1 480H36.9c-14.3 0-27.6-7.7-34.8-20.2s-7-27.6 .2-40.1l216-368C225.6 39.5 238.7 32 252.9 32h3.1zm0 128c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0-64 0 32 32 0 1 0 64 0z\"\n />\n </svg>\n `,\n};\n","import { IconDirective } from './headless/icon.directive';\n\nexport const ICON_IMPORTS = [IconDirective] as const;\n","export const NOTIFICATION_ERROR_CODES = {\n ACTION_OUTSIDE_NOTIFICATION: 1700,\n DISMISS_OUTSIDE_NOTIFICATION: 1701,\n} as const;\n","import { Directive, computed, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ANIMATED_LIFECYCLE_TOKEN } from '@ethlete/core';\nimport { filter, of, switchMap, take, tap } from 'rxjs';\nimport { NotificationRef } from '../notification-ref';\nimport { NotificationActionDirective } from './notification-action.directive';\nimport { NotificationDismissDirective } from './notification-dismiss.directive';\n\n@Directive({\n selector: '[etNotification]',\n exportAs: 'etNotification',\n host: {\n '[attr.data-status]': 'status()',\n '[attr.data-dismissing]': 'entry().isDismissing || null',\n '[attr.role]': 'ariaRole()',\n },\n})\nexport class NotificationDirective {\n private animatedLifecycle = inject(ANIMATED_LIFECYCLE_TOKEN, { optional: true });\n public ref = input.required<NotificationRef>();\n\n public entry = computed(() => this.ref().entry());\n public status = computed(() => this.entry().config.status);\n public isLoading = computed(() => this.status() === 'loading');\n public isSuccess = computed(() => this.status() === 'success');\n public isError = computed(() => this.status() === 'error');\n public isInfo = computed(() => this.status() === 'info');\n public title = computed(() => this.entry().config.title);\n public message = computed(() => this.entry().config.message);\n public action = computed(() => this.entry().config.action);\n public progress = computed(() => this.entry().config.progress);\n public ariaRole = computed(() => (this.status() === 'error' ? 'alert' : 'status'));\n\n /** @internal */\n public registeredAction = signal<NotificationActionDirective | null>(null);\n /** @internal */\n public registeredDismiss = signal<NotificationDismissDirective | null>(null);\n\n constructor() {\n toObservable(computed(() => this.entry().isDismissing))\n .pipe(\n filter(Boolean),\n take(1),\n switchMap(() => {\n const lifecycle = this.animatedLifecycle;\n if (!lifecycle) {\n return of(null);\n }\n lifecycle.leave();\n return lifecycle.state$.pipe(\n filter((s) => s === 'left'),\n take(1),\n );\n }),\n takeUntilDestroyed(),\n tap(() => this.ref().markDismissed()),\n )\n .subscribe();\n }\n}\n","import { Directive, afterNextRender, inject } from '@angular/core';\nimport { RuntimeError } from '@ethlete/core';\nimport { NOTIFICATION_ERROR_CODES } from '../notification-errors';\nimport { NotificationDirective } from './notification.directive';\n\n@Directive({\n selector: '[etNotificationAction]',\n exportAs: 'etNotificationAction',\n host: {\n '(click)': 'runAction()',\n },\n})\nexport class NotificationActionDirective {\n private notification = inject(NotificationDirective, { optional: true });\n\n constructor() {\n this.notification?.registeredAction.set(this);\n\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.notification) {\n throw new RuntimeError(\n NOTIFICATION_ERROR_CODES.ACTION_OUTSIDE_NOTIFICATION,\n '[EtNotificationActionDirective] etNotificationAction must be placed inside an [etNotification] element.',\n );\n }\n });\n }\n }\n\n public runAction() {\n this.notification?.action()?.handler();\n this.notification?.ref().dismiss();\n }\n}\n","import { Directive, afterNextRender, inject } from '@angular/core';\nimport { RuntimeError } from '@ethlete/core';\nimport { NOTIFICATION_ERROR_CODES } from '../notification-errors';\nimport { NotificationDirective } from './notification.directive';\n\n@Directive({\n selector: '[etNotificationDismiss]',\n exportAs: 'etNotificationDismiss',\n host: {\n '(click)': 'dismiss()',\n },\n})\nexport class NotificationDismissDirective {\n private notification = inject(NotificationDirective, { optional: true });\n\n constructor() {\n this.notification?.registeredDismiss.set(this);\n\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.notification) {\n throw new RuntimeError(\n NOTIFICATION_ERROR_CODES.DISMISS_OUTSIDE_NOTIFICATION,\n '[EtNotificationDismissDirective] etNotificationDismiss must be placed inside an [etNotification] element.',\n );\n }\n });\n }\n }\n\n public dismiss() {\n this.notification?.ref().dismiss();\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { NotificationManagerConfig } from './notification-config';\nimport { NotificationRef } from './notification-ref';\n\nexport type NotificationStackContext = {\n visibleNotifications: Signal<NotificationRef[]>;\n position: NotificationManagerConfig['position'];\n /** @internal Set by the stack component. Called by the manager before any mutation. */\n captureBeforeState: (() => void) | null;\n};\n\nexport const NOTIFICATION_STACK_CONTEXT_TOKEN = new InjectionToken<NotificationStackContext>(\n 'NOTIFICATION_STACK_CONTEXT_TOKEN',\n);\n","import { DestroyRef, Directive, Injector, afterNextRender, computed, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { injectRenderer } from '@ethlete/core';\nimport { animationFrameScheduler, take, tap, timer } from 'rxjs';\nimport { NOTIFICATION_STACK_CONTEXT_TOKEN } from '../notification-stack-context.token';\n\ntype PendingAnimation = {\n el: HTMLElement;\n innerEl?: HTMLElement;\n borderRadius?: string;\n dy?: number;\n oldHeight?: number;\n newHeight?: number;\n oldWidth?: number;\n newWidth?: number;\n};\n\ntype RegisteredNotificationItem = { id: string; el: HTMLElement };\n\n@Directive({\n selector: '[etNotificationStack]',\n exportAs: 'etNotificationStack',\n host: {\n '[attr.data-position]': 'context.position',\n },\n})\nexport class NotificationStackDirective {\n protected context = inject(NOTIFICATION_STACK_CONTEXT_TOKEN);\n private destroyRef = inject(DestroyRef);\n private injector = inject(Injector);\n private renderer = injectRenderer();\n\n /** @internal */\n public registeredItems = signal<RegisteredNotificationItem[]>([]);\n\n public displayRefs = computed(() => {\n const refs = this.context.visibleNotifications();\n return this.context.position.startsWith('top') ? [...refs].reverse() : refs;\n });\n\n constructor() {\n const capturedRects = new Map<string, DOMRect>();\n\n this.destroyRef.onDestroy(() => {\n this.context.captureBeforeState = null;\n });\n\n const captureCurrentRects = () => {\n capturedRects.clear();\n for (const item of this.registeredItems()) {\n capturedRects.set(item.id, item.el.getBoundingClientRect());\n }\n };\n\n this.context.captureBeforeState = () => {\n captureCurrentRects();\n\n afterNextRender(\n {\n earlyRead: () => {\n const pending = new Map<string, PendingAnimation>();\n\n for (const { id, el } of this.registeredItems()) {\n const rect = el.getBoundingClientRect();\n const prev = capturedRects.get(id);\n if (!prev) continue;\n\n const dy = prev.top - rect.top;\n const dHeight = prev.height - rect.height;\n const dWidth = prev.width - rect.width;\n const hasResize = Math.abs(dHeight) > 0.5 || Math.abs(dWidth) > 0.5;\n const hasDy = !hasResize && Math.abs(dy) > 0.5;\n\n if (hasDy || hasResize) {\n const hasWidthChange = Math.abs(dWidth) > 0.5;\n const hasHeightChange = Math.abs(dHeight) > 0.5;\n const innerEl = hasResize ? ((el.firstElementChild as HTMLElement | null) ?? undefined) : undefined;\n const borderRadius = innerEl ? getComputedStyle(innerEl).borderTopLeftRadius : '0px';\n pending.set(id, {\n el,\n ...(innerEl ? { innerEl, borderRadius } : {}),\n ...(hasDy ? { dy } : {}),\n ...(hasHeightChange ? { oldHeight: prev.height, newHeight: rect.height } : {}),\n ...(hasWidthChange ? { oldWidth: prev.width, newWidth: rect.width } : {}),\n });\n }\n }\n\n return pending;\n },\n write: (pending) => {\n if (!pending.size) return;\n\n const animations = Array.from(pending.values());\n\n for (const anim of animations) {\n const styles: Partial<Record<keyof CSSStyleDeclaration, string | null>> = { transition: 'none' };\n if (anim.dy !== undefined) styles.transform = `translateY(${anim.dy}px)`;\n if (anim.oldHeight !== undefined || anim.oldWidth !== undefined) {\n if (anim.oldHeight !== undefined) styles.height = `${anim.oldHeight}px`;\n if (anim.oldWidth !== undefined) styles.width = `${anim.oldWidth}px`;\n styles.clipPath = `inset(0 round ${anim.borderRadius ?? '0px'})`;\n }\n this.renderer.setStyle(anim.el, styles);\n if (anim.innerEl !== undefined && anim.newWidth !== undefined) {\n this.renderer.setStyle(anim.innerEl, { width: `${anim.newWidth}px` });\n }\n }\n\n timer(0, animationFrameScheduler)\n .pipe(\n take(1),\n tap(() => {\n for (const anim of animations) {\n const transitions: string[] = [];\n const styles: Partial<Record<keyof CSSStyleDeclaration, string | null>> = {};\n\n if (anim.dy !== undefined) {\n transitions.push('transform 200ms ease');\n styles.transform = null;\n }\n if (anim.newHeight !== undefined) {\n transitions.push('height 200ms ease');\n styles.height = `${anim.newHeight}px`;\n }\n if (anim.newWidth !== undefined) {\n transitions.push('width 200ms ease');\n styles.width = `${anim.newWidth}px`;\n }\n\n styles.transition = transitions.join(', ');\n this.renderer.setStyle(anim.el, styles);\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n\n const resized = animations.filter((a) => a.newHeight !== undefined || a.newWidth !== undefined);\n if (resized.length) {\n timer(210)\n .pipe(\n take(1),\n tap(() => {\n for (const anim of resized) {\n this.renderer.setStyle(anim.el, { height: null, width: null, clipPath: null, transition: null });\n if (anim.innerEl !== undefined) {\n this.renderer.setStyle(anim.innerEl, { width: null });\n }\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n },\n },\n { injector: this.injector },\n );\n };\n }\n\n /** @internal */\n public registerItem(id: string, el: HTMLElement) {\n this.registeredItems.update((items) => [...items, { id, el }]);\n }\n\n /** @internal */\n public unregisterItem(id: string) {\n this.registeredItems.update((items) => items.filter((item) => item.id !== id));\n }\n}\n","import { Directive, ElementRef, effect, inject, input } from '@angular/core';\nimport { NotificationRef } from '../notification-ref';\nimport { NotificationStackDirective } from './notification-stack.directive';\n\n@Directive({\n selector: '[etNotificationItem]',\n host: {\n '[attr.data-notification-id]': 'ref().id',\n },\n})\nexport class NotificationItemDirective {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private stack = inject(NotificationStackDirective, { optional: true });\n public ref = input.required<NotificationRef>({ alias: 'etNotificationItem' });\n\n constructor() {\n const el = this.elementRef.nativeElement;\n\n effect(() => {\n const id = this.ref().id;\n this.stack?.registerItem(id, el);\n\n return () => this.stack?.unregisterItem(id);\n });\n }\n}\n","import { createStaticRootProvider } from '@ethlete/core';\n\nexport const NOTIFICATION_STATUS = {\n LOADING: 'loading',\n SUCCESS: 'success',\n ERROR: 'error',\n INFO: 'info',\n} as const;\n\nexport type NotificationStatus = (typeof NOTIFICATION_STATUS)[keyof typeof NOTIFICATION_STATUS];\n\nexport type NotificationAction = {\n label: string;\n handler: () => void;\n};\n\nexport type NotificationConfig = {\n status: NotificationStatus;\n title: string;\n message?: string;\n action?: NotificationAction;\n /**\n * Auto-dismiss duration in milliseconds.\n * `0` or `undefined` uses the manager's `defaultDuration` for the current status.\n * Set explicitly to override the default (e.g. `duration: 0` to prevent auto-dismiss\n * for a status that defaults to non-zero).\n */\n duration?: number;\n /** Optional progress value (0–100). When set, a progress bar is shown below the notification body. */\n progress?: number;\n};\n\nexport type NotificationManagerConfig = {\n /** Position of the notification stack on screen. @default 'bottom-end' */\n position: 'bottom-center' | 'bottom-start' | 'bottom-end' | 'top-center' | 'top-start' | 'top-end';\n /** Maximum number of simultaneously visible notifications. @default 3 */\n maxVisible: number;\n /**\n * Default auto-dismiss duration (ms) per status.\n * `0` means no auto-dismiss.\n * @default `{ success: 4000, info: 4000, loading: 0, error: 0 }`\n */\n defaultDuration: Partial<Record<NotificationStatus, number>>;\n /**\n * Maps each notification status to a color key used by `ProvideColorDirective`.\n * When set, the notification host element receives the corresponding color class\n * so that `et-button` and other colored components render correctly inside the notification.\n */\n statusColorMapping?: Partial<Record<NotificationStatus, string>>;\n /**\n * Color key applied to control elements (e.g. the dismiss button).\n * Uses the notification's status color when not set.\n */\n controlsColor?: string;\n /**\n * Accessible label for the dismiss button.\n * @default 'Dismiss'\n */\n dismissLabel: string;\n};\n\nexport const DEFAULT_NOTIFICATION_MANAGER_CONFIG: NotificationManagerConfig = {\n position: 'bottom-end',\n maxVisible: 3,\n defaultDuration: {\n success: 4000,\n info: 4000,\n loading: 0,\n error: 0,\n },\n statusColorMapping: undefined,\n controlsColor: undefined,\n dismissLabel: 'Dismiss',\n};\n\nexport const [provideNotificationManagerConfig, injectNotificationManagerConfig] = createStaticRootProvider(\n DEFAULT_NOTIFICATION_MANAGER_CONFIG,\n { name: 'NotificationManagerConfig' },\n);\n","import { signal } from '@angular/core';\nimport { Subject, Subscription, tap, timer } from 'rxjs';\nimport { NotificationConfig, NotificationManagerConfig, NotificationStatus } from './notification-config';\n\nexport type NotificationEntry = {\n id: string;\n config: NotificationConfig;\n isDismissing: boolean;\n isDismissed: boolean;\n};\n\nconst ID_PREFIX = 'et-notification-';\nlet uniqueId = 0;\n\nexport const createNotificationRef = (\n config: NotificationConfig,\n { managerConfig, beforeChange }: { managerConfig: NotificationManagerConfig; beforeChange?: () => void },\n) => {\n const id = `${ID_PREFIX}${uniqueId++}`;\n\n const entryState = signal<NotificationEntry>({\n id,\n config,\n isDismissing: false,\n isDismissed: false,\n });\n\n const afterDismissedSubject$ = new Subject<void>();\n let timerSubscription: Subscription | null = null;\n let timerStartedAt = 0;\n let remainingDuration = 0;\n\n const getEffectiveDuration = (cfg: NotificationConfig) => {\n if (cfg.duration !== undefined) return cfg.duration;\n return managerConfig.defaultDuration[cfg.status as NotificationStatus] ?? 0;\n };\n\n const startTimer = (cfg: NotificationConfig) => {\n timerSubscription?.unsubscribe();\n timerSubscription = null;\n\n const duration = getEffectiveDuration(cfg);\n if (!duration) return;\n\n remainingDuration = duration;\n timerStartedAt = Date.now();\n\n timerSubscription = timer(duration)\n .pipe(tap(() => dismiss()))\n .subscribe();\n };\n\n const pauseTimer = () => {\n if (!timerSubscription || remainingDuration <= 0) return;\n\n const elapsed = Date.now() - timerStartedAt;\n remainingDuration = Math.max(0, remainingDuration - elapsed);\n\n timerSubscription.unsubscribe();\n timerSubscription = null;\n };\n\n const resumeTimer = () => {\n if (timerSubscription || remainingDuration <= 0) return;\n\n timerStartedAt = Date.now();\n\n timerSubscription = timer(remainingDuration)\n .pipe(tap(() => dismiss()))\n .subscribe();\n };\n\n const update = (partial: Partial<NotificationConfig>) => {\n const current = entryState().config;\n\n const mightResize =\n ('status' in partial && partial.status !== current.status) ||\n ('title' in partial && partial.title !== current.title) ||\n ('message' in partial && partial.message !== current.message) ||\n ('action' in partial && partial.action !== current.action) ||\n ('progress' in partial && (partial.progress === undefined) !== (current.progress === undefined));\n\n if (mightResize) beforeChange?.();\n\n const needsDurationReset =\n partial.status !== undefined && partial.status !== current.status && !('duration' in partial);\n\n const base: NotificationConfig = needsDurationReset ? { ...current, duration: undefined } : current;\n const updated: NotificationConfig = { ...base, ...partial };\n\n entryState.update((e) => ({ ...e, config: updated }));\n startTimer(updated);\n };\n\n const dismiss = () => {\n const entry = entryState();\n if (entry.isDismissing || entry.isDismissed) return;\n\n beforeChange?.();\n timerSubscription?.unsubscribe();\n timerSubscription = null;\n entryState.update((e) => ({ ...e, isDismissing: true }));\n };\n\n const afterDismissed = () => afterDismissedSubject$.asObservable();\n\n /** @internal Called by EtNotificationDirective after the leave animation completes. */\n const markDismissed = () => {\n beforeChange?.();\n entryState.update((e) => ({ ...e, isDismissed: true, isDismissing: false }));\n afterDismissedSubject$.next();\n afterDismissedSubject$.complete();\n };\n\n startTimer(config);\n\n return {\n id,\n entry: entryState.asReadonly(),\n update,\n dismiss,\n pauseTimer,\n resumeTimer,\n afterDismissed,\n markDismissed,\n };\n};\n\nexport type NotificationRef = ReturnType<typeof createNotificationRef>;\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n afterNextRender,\n computed,\n effect,\n inject,\n untracked,\n} from '@angular/core';\nimport {\n ANIMATED_LIFECYCLE_TOKEN,\n AnimatedLifecycleDirective,\n ProvideColorDirective,\n ProvideSurfaceDirective,\n injectSurfaceContextTracker,\n injectSurfaceThemes,\n resolveSurfaceByElevation,\n} from '@ethlete/core';\nimport { IconButtonComponent } from '../button/icon-button.component';\nimport { TextButtonComponent } from '../button/text-button.component';\nimport { ICON_IMPORTS, TIMES_ICON, provideIcons } from '../icon';\nimport { ProgressBarComponent } from '../loader/progress-bar/progress-bar.component';\nimport { SpinnerComponent } from '../loader/spinner/spinner.component';\nimport { NotificationActionDirective } from './headless/notification-action.directive';\nimport { NotificationDismissDirective } from './headless/notification-dismiss.directive';\nimport { NotificationDirective } from './headless/notification.directive';\nimport { injectNotificationManagerConfig } from './notification-config';\n\n@Component({\n selector: 'et-notification',\n templateUrl: './notification.component.html',\n styleUrl: './notification.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NotificationActionDirective,\n NotificationDismissDirective,\n SpinnerComponent,\n ProgressBarComponent,\n IconButtonComponent,\n TextButtonComponent,\n ...ICON_IMPORTS,\n ],\n providers: [provideIcons(TIMES_ICON)],\n hostDirectives: [\n { directive: NotificationDirective, inputs: ['ref'] },\n AnimatedLifecycleDirective,\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n {\n directive: ProvideSurfaceDirective,\n inputs: ['etProvideSurface:surface'],\n },\n ],\n host: {\n class: 'et-notification',\n '(keydown.escape)': 'notification.ref().dismiss()',\n '(mouseenter)': 'notification.ref().pauseTimer()',\n '(mouseleave)': 'notification.ref().resumeTimer()',\n '(focusin)': 'notification.ref().pauseTimer()',\n '(focusout)': 'notification.ref().resumeTimer()',\n },\n})\nexport class NotificationComponent {\n protected notification = inject(NotificationDirective);\n\n private animatedLifecycle = inject(ANIMATED_LIFECYCLE_TOKEN);\n private provideTheme = inject(ProvideColorDirective);\n private provideSurface = inject(ProvideSurfaceDirective);\n private managerConfig = injectNotificationManagerConfig();\n private surfaceThemes = injectSurfaceThemes({ optional: true });\n private surfaceContextTracker = injectSurfaceContextTracker();\n\n private resolvedColor = computed(() => {\n const mapping = this.managerConfig.statusColorMapping;\n if (!mapping) return null;\n\n const status = this.notification.status();\n return mapping[status] ?? null;\n });\n\n private resolvedSurface = computed(() => {\n const themes = this.surfaceThemes;\n if (!themes) return null;\n\n const type = this.surfaceContextTracker.topType() ?? 'dark';\n const elevation = this.surfaceContextTracker.topElevation() + 1;\n return resolveSurfaceByElevation(themes, type, elevation);\n });\n\n protected controlsColor = computed(() => {\n return this.managerConfig.controlsColor ?? this.resolvedColor();\n });\n\n protected dismissLabel = computed(() => this.managerConfig.dismissLabel);\n\n constructor() {\n effect(() => {\n const theme = this.resolvedColor();\n\n untracked(() => {\n if (theme) {\n this.provideTheme.forceColor(theme);\n\n return;\n }\n\n this.provideTheme.clearForcedColor();\n });\n });\n\n effect(() => {\n const surface = this.resolvedSurface();\n\n untracked(() => {\n if (surface) {\n this.provideSurface.forceSurface(surface.name);\n\n return;\n }\n\n this.provideSurface.clearForcedSurface();\n });\n });\n\n afterNextRender(() => {\n this.animatedLifecycle.enter();\n });\n }\n}\n","<div class=\"et-notification-content\">\n <div class=\"et-notification-header\">\n @if (notification.isLoading()) {\n <et-spinner class=\"et-notification-spinner\" diameter=\"16\" strokeWidth=\"2\" />\n }\n\n <span class=\"et-notification-title\">{{ notification.title() }}</span>\n\n <button\n [color]=\"controlsColor()\"\n [attr.aria-label]=\"dismissLabel()\"\n class=\"et-notification-dismiss-btn\"\n et-icon-button\n etNotificationDismiss\n size=\"xs\"\n type=\"button\"\n >\n <i etIcon=\"et-times\"></i>\n </button>\n </div>\n\n @if (notification.message()) {\n <p class=\"et-notification-message\">{{ notification.message() }}</p>\n }\n\n @if (notification.progress() !== undefined) {\n <et-progress-bar [value]=\"notification.progress()!\" class=\"et-notification-progress-bar\" />\n }\n\n @if (notification.action()) {\n <div class=\"et-notification-footer\">\n <button et-text-button etNotificationAction size=\"xs\" type=\"button\">\n {{ notification.action()!.label }}\n </button>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { NotificationItemDirective } from './headless/notification-item.directive';\nimport { NotificationStackDirective } from './headless/notification-stack.directive';\nimport { NotificationComponent } from './notification.component';\n\n@Component({\n selector: 'et-notification-stack',\n templateUrl: './notification-stack.component.html',\n styleUrl: './notification-stack.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NotificationComponent, NotificationItemDirective],\n hostDirectives: [NotificationStackDirective],\n host: {\n class: 'et-notification-stack',\n role: 'log',\n 'aria-live': 'polite',\n 'aria-relevant': 'additions',\n },\n})\nexport class NotificationStackComponent {\n protected stackDirective = inject(NotificationStackDirective);\n}\n","@for (ref of stackDirective.displayRefs(); track ref.id) {\n <div [etNotificationItem]=\"ref\">\n <et-notification [ref]=\"ref\" />\n </div>\n}\n","import {\n ApplicationRef,\n ComponentRef,\n DOCUMENT,\n DestroyRef,\n EnvironmentInjector,\n Signal,\n computed,\n createComponent,\n createEnvironmentInjector,\n effect,\n inject,\n signal,\n untracked,\n} from '@angular/core';\nimport { createRootProvider, injectRenderer } from '@ethlete/core';\nimport {\n NotificationConfig,\n NotificationManagerConfig,\n injectNotificationManagerConfig,\n provideNotificationManagerConfig,\n} from './notification-config';\nimport { NotificationRef, createNotificationRef } from './notification-ref';\nimport { NOTIFICATION_STACK_CONTEXT_TOKEN } from './notification-stack-context.token';\nimport { NotificationStackComponent } from './notification-stack.component';\n\nexport type NotificationManager = {\n open: (config: NotificationConfig) => NotificationRef;\n dismissAll: () => void;\n notifications: Signal<NotificationRef[]>;\n visibleNotifications: Signal<NotificationRef[]>;\n};\n\nexport const [provideNotificationManagerInstance, injectNotificationManager] = createRootProvider(\n (): NotificationManager => {\n const managerConfig = injectNotificationManagerConfig();\n const appRef = inject(ApplicationRef);\n const envInjector = inject(EnvironmentInjector);\n const destroyRef = inject(DestroyRef);\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n\n const notifications = signal<NotificationRef[]>([]);\n\n const visibleNotifications = computed(() => {\n const active = notifications().filter((r) => !r.entry().isDismissing && !r.entry().isDismissed);\n const cappedActiveIds = new Set(active.slice(-managerConfig.maxVisible).map((r) => r.id));\n // Keep insertion order stable: dismissing items stay in their original position\n return notifications().filter((r) => r.entry().isDismissing || cappedActiveIds.has(r.id));\n });\n\n let stackRef: ComponentRef<NotificationStackComponent> | null = null;\n\n const stackContext = {\n visibleNotifications,\n position: managerConfig.position,\n captureBeforeState: null as (() => void) | null,\n };\n\n const beforeChange = () => stackContext.captureBeforeState?.();\n\n const destroyStack = () => {\n if (!stackRef) return;\n appRef.detachView(stackRef.hostView);\n stackRef.destroy();\n stackRef = null;\n };\n\n const createStack = () => {\n const childInjector = createEnvironmentInjector(\n [\n {\n provide: NOTIFICATION_STACK_CONTEXT_TOKEN,\n useValue: stackContext,\n },\n ...provideNotificationManagerConfig(managerConfig),\n ],\n envInjector,\n );\n\n stackRef = createComponent(NotificationStackComponent, { environmentInjector: childInjector });\n appRef.attachView(stackRef.hostView);\n renderer.appendChild(document.body, stackRef.location.nativeElement);\n };\n\n effect(() => {\n const visible = visibleNotifications();\n\n if (visible.length > 0 && !stackRef) {\n untracked(createStack);\n } else if (visible.length === 0 && stackRef) {\n untracked(() => {\n destroyStack();\n notifications.set([]);\n });\n }\n });\n\n destroyRef.onDestroy(destroyStack);\n\n const open = (config: NotificationConfig): NotificationRef => {\n const currentActive = notifications().filter((r) => !r.entry().isDismissing && !r.entry().isDismissed);\n if (currentActive.length >= managerConfig.maxVisible) {\n currentActive[0]?.dismiss();\n }\n\n beforeChange();\n const ref = createNotificationRef(config, { managerConfig, beforeChange });\n notifications.update((n) => [...n, ref]);\n\n return ref;\n };\n\n const dismissAll = () => {\n notifications().forEach((r) => r.dismiss());\n };\n\n return {\n open,\n dismissAll,\n notifications: notifications.asReadonly(),\n visibleNotifications,\n };\n },\n { name: 'NotificationManager' },\n);\n\nexport const provideNotificationManager = (config?: Partial<NotificationManagerConfig>) => [\n ...provideNotificationManagerConfig(config),\n ...provideNotificationManagerInstance(),\n];\n","import { NotificationActionDirective } from './headless/notification-action.directive';\nimport { NotificationDismissDirective } from './headless/notification-dismiss.directive';\nimport { NotificationDirective } from './headless/notification.directive';\nimport { NotificationComponent } from './notification.component';\n\nexport const NOTIFICATION_IMPORTS = [\n NotificationComponent,\n NotificationDirective,\n NotificationActionDirective,\n NotificationDismissDirective,\n] as const;\n","export const OVERLAY_ERROR_CODES = {\n MISSING_OVERLAY_SURFACE: 1200,\n TRIGGER_OUTSIDE_OVERLAY: 1201,\n ANCHOR_OUTSIDE_OVERLAY: 1202,\n SURFACE_OUTSIDE_OVERLAY: 1203,\n} as const;\n","import { InjectionToken } from '@angular/core';\nimport { OverlayRuntimeRef } from '@ethlete/core';\nimport { Observable, Subject, take, tap } from 'rxjs';\nimport { OverlayConfig } from './overlay-config';\n\nexport const createOverlayRef = <TComponent extends object, TResult = unknown>(config: OverlayConfig) => {\n let _id = '';\n let _runtimeRef: OverlayRuntimeRef<TComponent, TResult> | null = null;\n\n const afterOpened$ = new Subject<void>();\n const beforeClosed$ = new Subject<TResult | undefined>();\n const afterClosed$ = new Subject<TResult | undefined>();\n\n return {\n get id() {\n return _id;\n },\n config,\n\n get componentInstance(): TComponent | null {\n return _runtimeRef?.componentInstance() ?? null;\n },\n\n close(result?: TResult) {\n _runtimeRef?.close(result);\n },\n\n afterOpened(): Observable<void> {\n return afterOpened$.asObservable();\n },\n\n beforeClosed(): Observable<TResult | undefined> {\n return beforeClosed$.asObservable();\n },\n\n afterClosed(): Observable<TResult | undefined> {\n return afterClosed$.asObservable();\n },\n\n attachRuntime(runtimeRef: OverlayRuntimeRef<TComponent, TResult>) {\n _runtimeRef = runtimeRef;\n _id = runtimeRef.id;\n\n runtimeRef\n .afterOpened()\n .pipe(\n take(1),\n tap(() => {\n afterOpened$.next();\n afterOpened$.complete();\n }),\n )\n .subscribe();\n\n runtimeRef\n .beforeClosed()\n .pipe(\n take(1),\n tap((event) => {\n beforeClosed$.next(event.result);\n beforeClosed$.complete();\n }),\n )\n .subscribe();\n\n runtimeRef\n .afterClosed()\n .pipe(\n take(1),\n tap((event) => {\n afterClosed$.next(event.result);\n afterClosed$.complete();\n }),\n )\n .subscribe();\n },\n };\n};\n\nexport type OverlayRef<TComponent extends object = object, TResult = unknown> = ReturnType<\n typeof createOverlayRef<TComponent, TResult>\n>;\n\nexport const OVERLAY_REF = new InjectionToken<OverlayRef>('OverlayRef');\n","import { Type, computed } from '@angular/core';\nimport { OverlayRuntimeRef, createRootProvider, injectOverlayRuntime } from '@ethlete/core';\nimport { OverlayConfig } from './overlay-config';\nimport { OVERLAY_REF, OverlayRef, createOverlayRef } from './overlay-ref';\n\nexport type OverlayManager = {\n open: <TComponent extends object, TResult = unknown>(\n component: Type<TComponent>,\n config?: OverlayConfig,\n ) => OverlayRef<TComponent, TResult>;\n openOverlays: ReturnType<typeof computed<OverlayRef<object, unknown>[]>>;\n};\n\nlet overlayId = 0;\n\nconst normalizeClassList = (value?: string | string[]) => {\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n};\n\nexport const [provideOverlayManager, injectOverlayManager] = createRootProvider(\n (): OverlayManager => {\n const overlayRuntime = injectOverlayRuntime();\n const runtimeToOverlayRef = new WeakMap<OverlayRuntimeRef<object, unknown>, OverlayRef<object, unknown>>();\n\n const openOverlays = computed(() => {\n return overlayRuntime\n .openEntries()\n .map((runtimeRef) => runtimeToOverlayRef.get(runtimeRef))\n .filter((overlayRef): overlayRef is OverlayRef<object, unknown> => overlayRef !== undefined);\n });\n\n const open = <TComponent extends object, TResult = unknown>(\n component: Type<TComponent>,\n config: OverlayConfig = {},\n ) => {\n const id = config.id ?? `et-overlay-${++overlayId}`;\n const overlayRef = createOverlayRef<TComponent, TResult>(config);\n const modal = config.mode !== 'non-modal';\n const role = config.role ?? (modal ? 'dialog' : undefined);\n const disableClose = config.disableClose ?? false;\n const positionStrategy =\n config.positionStrategy ??\n (config.origin\n ? {\n kind: 'anchored' as const,\n referenceElement: config.origin,\n }\n : {\n kind: 'center' as const,\n });\n const runtimeRef = overlayRuntime.mount<TComponent, TResult>({\n id,\n component,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector,\n providers: [{ provide: OVERLAY_REF, useValue: overlayRef }, ...(config.providers ?? [])],\n inputBindings: config.inputBindings,\n role,\n positionStrategy,\n hasBackdrop: config.hasBackdrop ?? modal,\n modal,\n autoFocus: config.autoFocus,\n restoreFocus: config.restoreFocus,\n closeOnEscape: disableClose ? false : (config.closeOnEscape ?? true),\n closeOnOutsidePointer: disableClose ? false : (config.closeOnOutsidePointer ?? true),\n ariaDescribedBy: config.ariaDescribedBy,\n ariaLabelledBy: config.ariaLabelledBy,\n ariaLabel: config.ariaLabel,\n hostClass: normalizeClassList(config.hostClass),\n backdropClass: normalizeClassList(config.backdropClass),\n paneClass: normalizeClassList(config.panelClass),\n });\n\n overlayRef.attachRuntime(runtimeRef);\n runtimeToOverlayRef.set(\n runtimeRef as OverlayRuntimeRef<object, unknown>,\n overlayRef as OverlayRef<object, unknown>,\n );\n\n return overlayRef;\n };\n\n return {\n open,\n openOverlays,\n };\n },\n { name: 'OverlayManager' },\n);\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { ANIMATED_LIFECYCLE_TOKEN, AnimatedLifecycleDirective } from '@ethlete/core';\nimport { OverlaySurfaceContext } from './headless/overlay-surface.directive';\n\n@Component({\n selector: 'et-overlay-template-host',\n templateUrl: './overlay-template-host.component.html',\n styleUrl: './overlay-template-host.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n hostDirectives: [AnimatedLifecycleDirective],\n host: {\n class: 'et-overlay-template-host',\n },\n})\nexport class OverlayTemplateHostComponent {\n private animatedLifecycleInstance = inject(ANIMATED_LIFECYCLE_TOKEN);\n\n protected template = input.required<TemplateRef<OverlaySurfaceContext>>();\n protected context = input.required<OverlaySurfaceContext>();\n\n public animatedLifecycle = signal(this.animatedLifecycleInstance);\n}\n","<ng-container [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"context()\" />\n","import {\n DestroyRef,\n Directive,\n afterNextRender,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RuntimeError } from '@ethlete/core';\nimport { OffsetOptions, Padding, Placement } from '@floating-ui/dom';\nimport { take, tap } from 'rxjs';\nimport { OverlayAutoFocusTarget, OverlayMode, OverlayRole } from '../overlay-config';\nimport { OVERLAY_ERROR_CODES } from '../overlay-errors';\nimport { injectOverlayManager } from '../overlay-manager';\nimport { OverlayRef } from '../overlay-ref';\nimport { OverlayTemplateHostComponent } from '../overlay-template-host.component';\nimport { OverlayAnchorDirective } from './overlay-anchor.directive';\nimport { OverlaySurfaceContext, OverlaySurfaceDirective } from './overlay-surface.directive';\nimport { OverlayTriggerDirective } from './overlay-trigger.directive';\n\n@Directive({\n selector: '[etOverlay]',\n exportAs: 'etOverlay',\n host: {\n '[attr.data-overlay-open]': 'open() || null',\n '[attr.data-overlay-mode]': 'mode()',\n },\n})\nexport class OverlayDirective {\n private destroyRef = inject(DestroyRef);\n\n public mode = input<OverlayMode>('non-modal');\n public role = input<OverlayRole | undefined>(undefined);\n public open = model(false);\n public disabled = input(false);\n public disableClose = input(false);\n public autoFocus = input<OverlayAutoFocusTarget | string | false | undefined>(undefined);\n public restoreFocus = input(true);\n public hasBackdrop = input<boolean | undefined>(undefined);\n public closeOnEscape = input(true);\n public closeOnOutsidePointer = input(true);\n public hostClass = input<string | string[] | undefined>(undefined);\n public backdropClass = input<string | string[] | undefined>(undefined);\n public panelClass = input<string | string[] | undefined>(undefined);\n public placement = input<Placement>('bottom');\n public fallbackPlacements = input<Placement[] | undefined>(undefined);\n public offset = input<OffsetOptions | null>(8);\n public viewportPadding = input<Padding | null>(8);\n public autoResize = input(false);\n public shift = input(true);\n public autoHide = input(false);\n public autoCloseIfReferenceHidden = input(false);\n public mirrorWidth = input(false);\n private overlayManager = injectOverlayManager();\n\n /** @internal */\n public registeredAnchor = signal<OverlayAnchorDirective | null>(null);\n /** @internal */\n public registeredSurface = signal<OverlaySurfaceDirective | null>(null);\n /** @internal */\n public registeredTrigger = signal<OverlayTriggerDirective | null>(null);\n /** @internal */\n public overlayRef = signal<OverlayRef<OverlayTemplateHostComponent, unknown> | null>(null);\n\n public isMounted = computed(() => this.overlayRef() !== null);\n\n private originElement = computed(() => {\n return (\n this.registeredAnchor()?.elementRef?.nativeElement ?? this.registeredTrigger()?.elementRef?.nativeElement ?? null\n );\n });\n\n constructor() {\n effect(() => {\n const disabled = this.disabled();\n const shouldBeOpen = this.open();\n const currentRef = this.overlayRef();\n\n if (disabled) {\n if (currentRef) {\n untracked(() => this.hide());\n }\n\n if (shouldBeOpen) {\n untracked(() => {\n this.open.set(false);\n });\n }\n\n return;\n }\n\n if (shouldBeOpen && !currentRef) {\n untracked(() => {\n this.mountOverlay();\n });\n\n return;\n }\n\n if (!shouldBeOpen && currentRef) {\n untracked(() => {\n currentRef.close();\n });\n }\n });\n\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.registeredSurface()) {\n throw new RuntimeError(\n OVERLAY_ERROR_CODES.MISSING_OVERLAY_SURFACE,\n '[OverlayDirective] Overlay surface not found. Add <ng-template etOverlaySurface> inside the [etOverlay] element.',\n );\n }\n });\n }\n }\n\n public show() {\n if (this.disabled()) {\n return;\n }\n\n if (!this.open()) {\n this.open.set(true);\n }\n }\n\n public hide(result?: unknown) {\n this.overlayRef()?.close(result);\n\n if (this.open()) {\n this.open.set(false);\n }\n }\n\n public toggle() {\n if (this.open()) {\n this.hide();\n\n return;\n }\n\n this.show();\n }\n\n /** @internal */\n public unregisterTrigger(trigger: OverlayTriggerDirective) {\n if (this.registeredTrigger() === trigger) {\n this.registeredTrigger.set(null);\n }\n }\n\n /** @internal */\n public unregisterAnchor(anchor: OverlayAnchorDirective) {\n if (this.registeredAnchor() === anchor) {\n this.registeredAnchor.set(null);\n }\n }\n\n /** @internal */\n public unregisterSurface(surface: OverlaySurfaceDirective) {\n if (this.registeredSurface() === surface) {\n this.registeredSurface.set(null);\n }\n }\n\n private mountOverlay() {\n const surface = this.registeredSurface();\n if (!surface) {\n return;\n }\n\n const templateContext: OverlaySurfaceContext = {\n $implicit: this,\n overlay: this,\n close: (result?: unknown) => this.hide(result),\n };\n\n const origin = this.originElement();\n const isAnchored = this.mode() === 'non-modal' && origin !== null;\n const overlayRef = this.overlayManager.open<OverlayTemplateHostComponent>(OverlayTemplateHostComponent, {\n autoFocus: this.autoFocus(),\n backdropClass: this.backdropClass(),\n closeOnEscape: this.closeOnEscape(),\n closeOnOutsidePointer: this.closeOnOutsidePointer(),\n inputBindings: {\n template: surface.templateRef,\n context: templateContext,\n },\n disableClose: this.disableClose(),\n hasBackdrop: this.hasBackdrop(),\n hostClass: this.hostClass(),\n mode: this.mode(),\n origin: isAnchored ? origin : undefined,\n panelClass: this.panelClass(),\n positionStrategy: isAnchored\n ? {\n kind: 'anchored',\n referenceElement: origin,\n placement: this.placement(),\n fallbackPlacements: this.fallbackPlacements(),\n offset: this.offset(),\n viewportPadding: this.viewportPadding(),\n autoResize: this.autoResize(),\n shift: this.shift(),\n autoHide: this.autoHide(),\n autoCloseIfReferenceHidden: this.autoCloseIfReferenceHidden(),\n mirrorWidth: this.mirrorWidth(),\n }\n : {\n kind: 'center',\n },\n restoreFocus: this.restoreFocus(),\n role: this.role(),\n });\n\n this.overlayRef.set(overlayRef);\n\n overlayRef\n .afterClosed()\n .pipe(\n take(1),\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.overlayRef.set(null);\n\n if (this.open()) {\n this.open.set(false);\n }\n }),\n )\n .subscribe();\n }\n}\n","import { DestroyRef, Directive, ElementRef, afterNextRender, inject } from '@angular/core';\nimport { RuntimeError } from '@ethlete/core';\nimport { OVERLAY_ERROR_CODES } from '../overlay-errors';\nimport { OverlayDirective } from './overlay.directive';\n\n@Directive({\n selector: '[etOverlayAnchor]',\n exportAs: 'etOverlayAnchor',\n})\nexport class OverlayAnchorDirective {\n private overlay = inject(OverlayDirective, { optional: true });\n private destroyRef = inject(DestroyRef);\n public elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n this.overlay?.registeredAnchor.set(this);\n\n this.destroyRef.onDestroy(() => {\n this.overlay?.unregisterAnchor(this);\n });\n\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.overlay) {\n throw new RuntimeError(\n OVERLAY_ERROR_CODES.ANCHOR_OUTSIDE_OVERLAY,\n '[OverlayAnchorDirective] etOverlayAnchor must be placed inside an [etOverlay] element.',\n );\n }\n });\n }\n }\n}\n","import { DestroyRef, Directive, TemplateRef, afterNextRender, inject } from '@angular/core';\nimport { RuntimeError } from '@ethlete/core';\nimport { OVERLAY_ERROR_CODES } from '../overlay-errors';\nimport { OverlayDirective } from './overlay.directive';\n\nexport type OverlaySurfaceContext = {\n $implicit: OverlayDirective;\n overlay: OverlayDirective;\n close: (result?: unknown) => void;\n};\n\n@Directive({\n selector: 'ng-template[etOverlaySurface]',\n exportAs: 'etOverlaySurface',\n})\nexport class OverlaySurfaceDirective {\n private overlay = inject(OverlayDirective, { optional: true });\n public templateRef = inject<TemplateRef<OverlaySurfaceContext>>(TemplateRef);\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n this.overlay?.registeredSurface.set(this);\n\n this.destroyRef.onDestroy(() => {\n this.overlay?.unregisterSurface(this);\n });\n\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.overlay) {\n throw new RuntimeError(\n OVERLAY_ERROR_CODES.SURFACE_OUTSIDE_OVERLAY,\n '[OverlaySurfaceDirective] etOverlaySurface must be placed inside an [etOverlay] element.',\n );\n }\n });\n }\n }\n}\n","import { DestroyRef, Directive, ElementRef, afterNextRender, inject } from '@angular/core';\nimport { RuntimeError } from '@ethlete/core';\nimport { OVERLAY_ERROR_CODES } from '../overlay-errors';\nimport { OverlayDirective } from './overlay.directive';\n\n@Directive({\n selector: '[etOverlayTrigger]',\n exportAs: 'etOverlayTrigger',\n host: {\n '(click)': 'toggle()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.data-overlay-open]': 'isOpen() || null',\n },\n})\nexport class OverlayTriggerDirective {\n private overlay = inject(OverlayDirective, { optional: true });\n private destroyRef = inject(DestroyRef);\n public elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n this.overlay?.registeredTrigger.set(this);\n\n this.destroyRef.onDestroy(() => {\n this.overlay?.unregisterTrigger(this);\n });\n\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.overlay) {\n throw new RuntimeError(\n OVERLAY_ERROR_CODES.TRIGGER_OUTSIDE_OVERLAY,\n '[OverlayTriggerDirective] etOverlayTrigger must be placed inside an [etOverlay] element.',\n );\n }\n });\n }\n }\n\n public toggle() {\n this.overlay?.toggle();\n }\n\n public isOpen() {\n return this.overlay?.open() ?? false;\n }\n\n public expanded() {\n return this.overlay?.open() ?? null;\n }\n}\n","import { OverlayAnchorDirective } from './headless/overlay-anchor.directive';\nimport { OverlaySurfaceDirective } from './headless/overlay-surface.directive';\nimport { OverlayTriggerDirective } from './headless/overlay-trigger.directive';\nimport { OverlayDirective } from './headless/overlay.directive';\n\nexport const OVERLAY_IMPORTS = [\n OverlayDirective,\n OverlayTriggerDirective,\n OverlayAnchorDirective,\n OverlaySurfaceDirective,\n] as const;\n","export const ScrollableErrorCode = {\n MISSING_SCROLL_CONTAINER: 1800,\n} as const;\n","import {\n Directive,\n ElementRef,\n Signal,\n TemplateRef,\n afterNextRender,\n computed,\n input,\n numberAttribute,\n signal,\n} from '@angular/core';\nimport {\n RuntimeError,\n ScrollObserverDirective,\n ScrollToElementOptions,\n getElementScrollCoordinates,\n getScrollContainerTarget,\n getScrollItemTarget,\n provideBreakpointInstance,\n signalElementChildren,\n signalElementDimensions,\n signalElementIntersection,\n signalElementScrollState,\n signalHostAttributes,\n signalHostClasses,\n signalHostStyles,\n typedBreakpointTransform,\n} from '@ethlete/core';\nimport { ScrollableErrorCode } from './scrollable-errors';\nimport {\n ScrollableDirection,\n ScrollableItemSize,\n ScrollableScrollMode,\n ScrollableScrollOrigin,\n} from './scrollable.types';\n\nconst SCROLLABLE_IGNORE_CHILD_ATTRIBUTE = 'etScrollableIgnoreChild';\n\nconst isScrollableChildIgnored = (el: HTMLElement) => {\n const attr = el.attributes.getNamedItem(SCROLLABLE_IGNORE_CHILD_ATTRIBUTE)?.value;\n return attr === 'true' || attr === '';\n};\n\n// Thresholds for the intersection observer.\nconst ELEMENT_INTERSECTION_THRESHOLD = [\n ...Array.from({ length: 21 }, (_, i) => i * 0.05),\n 0.01,\n 0.005,\n 0.001,\n 0.99,\n 0.995,\n 0.999,\n];\n\n@Directive({\n selector: '[etScrollable]',\n exportAs: 'etScrollable',\n providers: [provideBreakpointInstance(ScrollableDirective)],\n host: {\n class: 'et-scrollable',\n },\n})\nexport class ScrollableDirective {\n // --- Inputs ---\n\n public itemSize = input('auto', { transform: typedBreakpointTransform<ScrollableItemSize>() });\n public direction = input('horizontal', {\n transform: typedBreakpointTransform<ScrollableDirection>(),\n });\n public scrollMode = input('container', {\n transform: typedBreakpointTransform<ScrollableScrollMode>(),\n });\n public scrollOrigin = input<ScrollableScrollOrigin>('auto');\n public scrollMargin = input(0, { transform: numberAttribute });\n public renderScrollbars = input(false);\n\n // --- Internal template refs (set by Tier 3 template) ---\n\n /** @internal */\n public scrollContainerRef = signal<ElementRef<HTMLElement> | null>(null);\n\n // --- Lazy intersection ---\n\n private childIntersectionsActivated = signal(false);\n\n // --- Child tracking ---\n\n private allScrollableChildren = signalElementChildren(this.scrollContainerRef);\n\n public scrollableChildren = computed(() => this.allScrollableChildren().filter((c) => !isScrollableChildIgnored(c)));\n\n // --- Scroll state ---\n\n /** @internal */\n public scrollObserverRef = signal<ScrollObserverDirective | null>(null);\n\n public containerScrollState = signalElementScrollState(this.scrollContainerRef);\n\n public isAtStart = computed(() => this.scrollObserverRef()?.isAtStart() ?? false);\n public isAtEnd = computed(() => this.scrollObserverRef()?.isAtEnd() ?? false);\n\n public canScroll = computed(() =>\n this.direction() === 'horizontal'\n ? this.containerScrollState().canScrollHorizontally\n : this.containerScrollState().canScrollVertically,\n );\n\n // --- Lazy child intersections ---\n\n public childIntersections = signalElementIntersection(this.scrollableChildren, {\n root: this.scrollContainerRef,\n threshold: ELEMENT_INTERSECTION_THRESHOLD,\n enabled: this.childIntersectionsActivated,\n });\n\n // --- Container dimensions (always available, cheap) ---\n\n public scrollableDimensions = signalElementDimensions(this.scrollContainerRef);\n\n // --- Active children (self-registration) ---\n\n private activeChildren = signal<ScrollableActiveChildRef[]>([]);\n\n // --- Loading template (self-registration) ---\n\n /** @internal */\n public loadingTemplateRef = signal<ScrollableLoadingTemplateRef | null>(null);\n\n public loadingTemplate = this.loadingTemplateRef.asReadonly();\n\n // --- Sub-directive registrations ---\n\n /** @internal */\n public masksDirective = signal<unknown | null>(null);\n /** @internal */\n public buttonsDirective = signal<unknown | null>(null);\n /** @internal */\n public navigationDirective = signal<unknown | null>(null);\n /** @internal */\n public snapDirective = signal<unknown | null>(null);\n /** @internal */\n public dragDirective = signal<unknown | null>(null);\n /** @internal */\n public darkenDirective = signal<unknown | null>(null);\n\n // --- Host bindings ---\n\n /** @internal */\n public hostAttributeBindings = signalHostAttributes({\n 'item-size': this.itemSize,\n direction: this.direction,\n 'render-scrollbars': this.renderScrollbars,\n });\n\n /** @internal */\n public hostClassBindings = signalHostClasses({\n 'et-scrollable--can-scroll': this.canScroll,\n 'et-scrollable--is-at-start': this.isAtStart,\n 'et-scrollable--is-at-end': this.isAtEnd,\n 'et-scrollable--has-partial-items': computed(() =>\n this.childIntersections().some((i) => i.intersectionRatio > 0 && i.intersectionRatio < 1),\n ),\n });\n\n // --- Computed ---\n\n public gapValue = computed(() => {\n this.scrollableDimensions();\n\n const scrollable = this.scrollContainerRef()?.nativeElement;\n if (!scrollable) return null;\n\n const computedStyle = getComputedStyle(scrollable);\n const gap = computedStyle.gap;\n\n if (gap === 'normal') return '0px';\n\n return gap;\n });\n\n /** @internal */\n public hostStyleBindings = signalHostStyles({\n '--item-count': computed(() => this.scrollableChildren().length),\n '--item-gap': this.gapValue,\n });\n\n constructor() {\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.scrollContainerRef()) {\n throw new RuntimeError(\n ScrollableErrorCode.MISSING_SCROLL_CONTAINER,\n '[ScrollableDirective] No scroll container registered. ' +\n 'Use registerScrollContainer() from the Tier 3 template or provide a scroll container element.',\n );\n }\n });\n }\n }\n\n // --- Registration API ---\n\n /** @internal */\n public unregisterActiveChild(child: ScrollableActiveChildRef) {\n this.activeChildren.update((children) => children.filter((c) => c !== child));\n }\n\n public activateChildIntersections() {\n this.childIntersectionsActivated.set(true);\n }\n\n // --- Scroll methods ---\n\n public scrollOneContainerSize(scrollDirection: 'start' | 'end') {\n const scrollElement = this.scrollContainerRef()?.nativeElement;\n if (!scrollElement) return;\n\n const snap = this.snapDirective();\n\n if (snap) {\n const target = getScrollContainerTarget(this.childIntersections(), scrollDirection);\n if (target) this.scrollToElement(target);\n } else {\n const dimensions = this.scrollableDimensions().client;\n const scrollableSize = this.direction() === 'horizontal' ? (dimensions?.width ?? 0) : (dimensions?.height ?? 0);\n const currentScroll = this.direction() === 'horizontal' ? scrollElement.scrollLeft : scrollElement.scrollTop;\n\n scrollElement.scrollTo({\n [this.direction() === 'horizontal' ? 'left' : 'top']:\n currentScroll + (scrollDirection === 'start' ? -scrollableSize : scrollableSize),\n behavior: 'smooth',\n });\n }\n }\n\n public scrollOneItemSize(scrollDirection: 'start' | 'end') {\n const allIntersections = this.childIntersections();\n const scrollElement = this.scrollContainerRef()?.nativeElement;\n\n if (!allIntersections.length || !scrollElement) return;\n\n const target = getScrollItemTarget(\n allIntersections,\n scrollElement,\n scrollDirection,\n this.scrollOrigin(),\n this.direction(),\n );\n\n if (!target) return;\n\n this.scrollToElement(target);\n }\n\n public getElementScrollCoordinates(\n options: Omit<ScrollToElementOptions, 'container'> & { ignoreForcedOrigin?: boolean },\n ) {\n const scrollElement = this.scrollContainerRef()?.nativeElement;\n const { origin } = options;\n const forcedOrigin = this.scrollOrigin();\n\n return getElementScrollCoordinates({\n container: scrollElement,\n direction: this.direction() === 'horizontal' ? 'inline' : 'block',\n ...(this.direction() === 'horizontal'\n ? { scrollInlineMargin: this.scrollMargin() }\n : { scrollBlockMargin: this.scrollMargin() }),\n ...options,\n ...(forcedOrigin === 'auto' || options.ignoreForcedOrigin ? { origin } : { origin: forcedOrigin }),\n });\n }\n\n public scrollToElement(options: Omit<ScrollToElementOptions, 'container'> & { ignoreForcedOrigin?: boolean }) {\n this.scrollContainerRef()?.nativeElement.scroll(this.getElementScrollCoordinates(options));\n }\n\n public scrollToElementByIndex(\n options: Omit<ScrollToElementOptions, 'container'> & { index: number; ignoreForcedOrigin?: boolean },\n ) {\n const elements = this.scrollableChildren();\n const element = elements[options.index];\n if (!element) return;\n\n this.scrollToElement({ element, ...options });\n }\n\n public scrollToStartDirection() {\n if (this.scrollMode() === 'container') {\n this.scrollOneContainerSize('start');\n } else {\n this.scrollOneItemSize('start');\n }\n }\n\n public scrollToEndDirection() {\n if (this.scrollMode() === 'container') {\n this.scrollOneContainerSize('end');\n } else {\n this.scrollOneItemSize('end');\n }\n }\n\n public getActiveChildren() {\n return this.activeChildren.asReadonly();\n }\n\n public getScrollContainerRef() {\n return this.scrollContainerRef.asReadonly();\n }\n}\n\nexport type ScrollableActiveChildRef = {\n elementRef: ElementRef<HTMLElement>;\n isActiveChildEnabled: Signal<boolean>;\n};\n\nexport type ScrollableLoadingTemplateRef = {\n templateRef: TemplateRef<unknown>;\n repeat: Signal<unknown[]>;\n};\n","import { DestroyRef, Directive, ElementRef, booleanAttribute, inject, input, linkedSignal } from '@angular/core';\nimport { ScrollableDirective } from './scrollable.directive';\n\n@Directive({\n selector: '[etScrollableActiveChild]',\n})\nexport class ScrollableActiveChildDirective {\n private scrollable = inject(ScrollableDirective, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n public isActiveChildEnabled = input(true, { alias: 'etScrollableActiveChild', transform: booleanAttribute });\n\n private isActiveChildEnabledSignal = linkedSignal(() => this.isActiveChildEnabled());\n\n constructor() {\n if (!this.scrollable) return;\n\n const ref = {\n elementRef: this.elementRef,\n isActiveChildEnabled: this.isActiveChildEnabledSignal,\n };\n\n this.destroyRef.onDestroy(() => {\n this.scrollable?.unregisterActiveChild(ref);\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { IconButtonComponent } from '../../button/icon-button.component';\nimport { CHEVRON_ICON } from '../../icon/headless/chevron-icon';\nimport { provideIcons } from '../../icon/headless/icon-provider';\nimport { IconDirective } from '../../icon/headless/icon.directive';\nimport { ScrollableDirective } from './scrollable.directive';\nimport { ScrollableButtonPosition } from './scrollable.types';\n\n@Component({\n selector: 'et-scrollable-buttons, [et-scrollable-buttons]',\n template: `\n <button\n [disabled]=\"scrollable.isAtStart()\"\n (click)=\"scrollable.scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n et-icon-button\n size=\"xs\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n <button\n [disabled]=\"scrollable.isAtEnd()\"\n (click)=\"scrollable.scrollToEndDirection()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n et-icon-button\n size=\"xs\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconDirective, IconButtonComponent],\n providers: [provideIcons(CHEVRON_ICON)],\n host: {\n class: 'et-scrollable-buttons',\n '[class.et-scrollable-buttons--inside]': 'position() === \"inside\"',\n '[class.et-scrollable-buttons--footer]': 'position() === \"footer\"',\n },\n styles: `\n .et-scrollable-buttons {\n grid-row: 1 / 1;\n grid-column: 1 / 1;\n pointer-events: none;\n\n .et-scrollable-button {\n position: absolute;\n opacity: 0;\n }\n }\n `,\n})\nexport class ScrollableButtonsDirective {\n protected scrollable = inject(ScrollableDirective);\n\n public position = input<ScrollableButtonPosition>('inside');\n\n constructor() {\n this.scrollable.buttonsDirective.set(this);\n }\n}\n","import { Directive, computed, inject, signal } from '@angular/core';\nimport { signalClasses } from '@ethlete/core';\nimport { ScrollableDirective } from './scrollable.directive';\n\n@Directive({\n selector: '[etScrollableDarken]',\n})\nexport class ScrollableDarkenDirective {\n private scrollable = inject(ScrollableDirective);\n\n private nonFullIntersecting = computed(\n () => {\n const allIntersections = this.scrollable.childIntersections();\n return allIntersections.filter((i) => i.intersectionRatio !== 1).map((i) => i.target as HTMLElement);\n },\n { equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]) },\n );\n\n /** @internal */\n public nonFullIntersectingClassBindings = signalClasses(this.nonFullIntersecting, {\n 'et-scrollable-item--not-intersecting': signal(true),\n });\n\n constructor() {\n this.scrollable.activateChildIntersections();\n this.scrollable.darkenDirective.set(this);\n }\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { useCursorDragScroll } from '@ethlete/core';\nimport { ScrollableDirective } from './scrollable.directive';\n\n@Directive({\n selector: '[etScrollableDrag]',\n})\nexport class ScrollableDragDirective {\n private scrollable = inject(ScrollableDirective);\n\n public enabled = input(true);\n\n public cursorDragScrollState = useCursorDragScroll(this.scrollable.getScrollContainerRef(), {\n enabled: this.enabled,\n allowedDirection: this.scrollable.direction,\n });\n\n constructor() {\n this.scrollable?.dragDirective.set(this);\n }\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: `[etScrollableIgnoreChild]`,\n host: {\n '[attr.etScrollableIgnoreChild]': 'enabled() ? \"\" : null',\n },\n})\nexport class ScrollableIgnoreChildDirective {\n public enabled = input(true);\n}\n","import { Directive, TemplateRef, computed, inject, input, numberAttribute } from '@angular/core';\nimport { ScrollableDirective } from './scrollable.directive';\n\n@Directive({\n selector: 'ng-template[etScrollableLoadingTemplate]',\n})\nexport class ScrollableLoadingTemplateDirective {\n private scrollable = inject(ScrollableDirective, { optional: true });\n\n private templateRef = inject(TemplateRef);\n public repeatContentCount = input(1, { transform: numberAttribute });\n public repeat = computed(() => Array.from({ length: this.repeatContentCount() }));\n\n constructor() {\n this.scrollable?.loadingTemplateRef.set({\n templateRef: this.templateRef,\n repeat: this.repeat,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { ScrollableDirective } from './scrollable.directive';\n\n@Component({\n selector: 'et-scrollable-masks, [et-scrollable-masks]',\n template: `\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'et-scrollable-masks',\n },\n styles: `\n .et-scrollable-masks {\n grid-row: 1 / 1;\n grid-column: 1 / 1;\n pointer-events: none;\n\n .et-scrollable-mask {\n position: absolute;\n opacity: 0;\n }\n }\n `,\n})\nexport class ScrollableMasksDirective {\n private scrollable = inject(ScrollableDirective);\n\n constructor() {\n this.scrollable.masksDirective.set(this);\n this.scrollable.activateChildIntersections();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { signalElementDimensions, signalStyles } from '@ethlete/core';\nimport { EMPTY, debounceTime, filter, fromEvent, switchMap, tap } from 'rxjs';\nimport { ScrollableDirective } from './scrollable.directive';\nimport { ScrollableNavigation } from './scrollable.types';\n\n@Component({\n selector: 'et-scrollable-navigation, [et-scrollable-navigation]',\n template: `\n <div class=\"et-scrollable-progress-bar\">\n <div #navigationDotsContainer class=\"et-scrollable-dots-container\">\n @for (item of navigation().items; track i; let i = $index) {\n <button\n #navigationDot\n [class.et-scrollable-navigation-item--active]=\"item.isActive\"\n [class.et-scrollable-navigation-item--close]=\"\n navigation().items[i + 1]?.isActive || navigation().items[i - 1]?.isActive\n \"\n [class.et-scrollable-navigation-item--far]=\"\n !navigation().items[i + 1]?.isActive && !navigation().items[i - 1]?.isActive && !item.isActive\n \"\n [attr.active-offset]=\"item.activeOffset\"\n (click)=\"scrollToElementViaNavigation(i)\"\n class=\"et-scrollable-navigation-item\"\n type=\"button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n ></button>\n }\n </div>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'et-scrollable-navigation',\n 'aria-hidden': 'true',\n },\n styles: `\n .et-scrollable-navigation {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .et-scrollable-navigation-item {\n display: flex;\n justify-content: center;\n align-items: center;\n border: none;\n padding: 0;\n inline-size: 20px;\n block-size: 20px;\n border-radius: 50%;\n cursor: pointer;\n background-color: transparent;\n\n &.et-scrollable-navigation-item--active::after {\n background-color: var(--et-theme-color-primary, #c6c6c6);\n }\n\n &::after {\n content: '';\n display: block;\n inline-size: 50%;\n block-size: 50%;\n border-radius: 50%;\n background-color: var(--et-surface-interaction-solid, #4b4b4b);\n opacity: 0.3;\n transform: scale(0);\n }\n\n &[active-offset='0']::after {\n opacity: 1;\n transform: scale(1);\n }\n &[active-offset='1']::after {\n opacity: 0.6;\n transform: scale(0.75);\n }\n &[active-offset='2']::after {\n opacity: 0.45;\n transform: scale(0.6);\n }\n &[active-offset='3']::after {\n opacity: 0.35;\n transform: scale(0.5);\n }\n &[active-offset='4']::after {\n opacity: 0.3;\n transform: scale(0.4);\n }\n }\n\n .et-scrollable-progress-bar {\n overflow: hidden;\n max-inline-size: 100px;\n display: flex;\n align-items: center;\n\n .et-scrollable-dots-container {\n display: flex;\n flex-wrap: nowrap;\n }\n }\n `,\n})\nexport class ScrollableNavigationDirective {\n protected scrollable = inject(ScrollableDirective);\n\n private navigationDotsContainer = viewChild<ElementRef<HTMLElement>>('navigationDotsContainer');\n private firstNavigationDot = viewChild<ElementRef<HTMLButtonElement>>('navigationDot');\n\n private navigationDotDimensions = signalElementDimensions(this.firstNavigationDot);\n\n private manualActiveNavigationIndex = signal<number | null>(null);\n\n public navigation = computed<ScrollableNavigation>(\n () => {\n const allIntersections = this.scrollable.childIntersections();\n const manualActiveIndex = this.manualActiveNavigationIndex();\n const isAtStart = this.scrollable.isAtStart();\n const isAtEnd = this.scrollable.isAtEnd();\n\n const firstIntersection = allIntersections[0];\n const lastIntersection = allIntersections[allIntersections.length - 1];\n\n const highestIntersection = isAtStart\n ? firstIntersection\n : isAtEnd\n ? lastIntersection\n : allIntersections.reduce((prev, curr) => {\n if (prev && prev.intersectionRatio > curr.intersectionRatio) return prev;\n return curr;\n }, allIntersections[0]);\n\n if (!highestIntersection) {\n return { items: [], activeIndex: -1 };\n }\n\n const activeIndex =\n manualActiveIndex !== null ? manualActiveIndex : allIntersections.findIndex((i) => i === highestIntersection);\n\n const items = allIntersections.map((i, index) => ({\n isActive:\n manualActiveIndex !== null\n ? manualActiveIndex === index\n : i === highestIntersection && highestIntersection.intersectionRatio > 0,\n activeOffset: index === activeIndex ? 0 : Math.abs(index - activeIndex),\n element: i.target as HTMLElement,\n }));\n\n return { items, activeIndex };\n },\n {\n equal: (a, b) =>\n a.activeIndex === b.activeIndex &&\n a.items.length === b.items.length &&\n a.items.every((v, i) => v.isActive === b.items[i]?.isActive && v.activeOffset === b.items[i]?.activeOffset),\n },\n );\n\n public activeIndex = computed(() => this.navigation().activeIndex);\n\n /** @internal */\n public dotsContainerStyleBindings = signalStyles(this.navigationDotsContainer, {\n transform: computed(() => {\n const activeIdx = this.navigation().activeIndex;\n const childCount = this.navigation().items.length;\n let offset = '0px';\n\n if (childCount > 5) {\n const dotContainerWidth = this.navigationDotDimensions().client?.width ?? 20;\n let offsetValue = -(activeIdx - 2);\n\n if (activeIdx < 3) {\n offsetValue = 0;\n } else if (activeIdx >= childCount - 3) {\n offsetValue = 5 - childCount;\n }\n\n offset = `${offsetValue * dotContainerWidth}px`;\n }\n\n const dir = this.scrollable.direction() === 'horizontal' ? 'X' : 'Y';\n\n return `translate${dir}(${offset})`;\n }),\n });\n\n constructor() {\n this.scrollable.activateChildIntersections();\n this.scrollable.navigationDirective.set(this);\n\n const scrollContainerRef$ = toObservable(this.scrollable.getScrollContainerRef());\n\n toObservable(this.manualActiveNavigationIndex)\n .pipe(\n takeUntilDestroyed(),\n filter((i) => i !== null),\n switchMap(() =>\n scrollContainerRef$.pipe(\n switchMap((ref) => {\n if (!ref) return EMPTY;\n // FIXME: eslint prefers signalElementScrollState but this pattern is intentional for debouncing\n // eslint-disable-next-line ethlete/prefer-scroll-state\n return fromEvent(ref.nativeElement, 'scroll');\n }),\n ),\n ),\n debounceTime(50),\n tap(() => this.manualActiveNavigationIndex.set(null)),\n )\n .subscribe();\n }\n\n public scrollToElementViaNavigation(elementIndex: number) {\n const element = this.scrollable.scrollableChildren()[elementIndex];\n if (!element) return;\n\n this.manualActiveNavigationIndex.set(elementIndex);\n this.scrollable.scrollToElement({ element });\n }\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { getScrollSnapTarget } from '@ethlete/core';\nimport { EMPTY, debounceTime, switchMap, tap } from 'rxjs';\nimport { ScrollableDirective } from './scrollable.directive';\nimport { ScrollableScrollOrigin } from './scrollable.types';\n\n@Directive({\n selector: '[etScrollableSnap]',\n})\nexport class ScrollableSnapDirective {\n private scrollable = inject(ScrollableDirective);\n\n public enabled = input(true);\n public snapOrigin = input<ScrollableScrollOrigin>('auto');\n\n constructor() {\n this.scrollable.activateChildIntersections();\n this.scrollable.snapDirective.set(this);\n\n const childIntersections$ = toObservable(this.scrollable.childIntersections);\n const enabled$ = toObservable(this.enabled);\n\n enabled$\n .pipe(\n takeUntilDestroyed(),\n switchMap((enabled) => {\n if (!enabled) return EMPTY;\n\n return childIntersections$.pipe(\n debounceTime(150),\n tap((allIntersections) => {\n const scrollContainerRef = this.scrollable.getScrollContainerRef();\n const scrollElement = scrollContainerRef()?.nativeElement;\n if (!scrollElement) return;\n\n const visibleItems = allIntersections\n .filter((i) => i.intersectionRatio > 0)\n .map((i) => i.target as HTMLElement);\n\n const target = getScrollSnapTarget(\n visibleItems,\n scrollElement,\n this.scrollable.direction(),\n this.snapOrigin(),\n this.scrollable.scrollMargin(),\n );\n\n if (target) {\n this.scrollable.scrollToElement({\n element: target.element,\n origin: target.origin,\n ignoreForcedOrigin: true,\n });\n }\n }),\n );\n }),\n )\n .subscribe();\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { outputFromObservable, takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n ProvideColorDirective,\n ScrollObserverDirective,\n ScrollObserverEndDirective,\n ScrollObserverStartDirective,\n createCanAnimateSignal,\n signalClasses,\n} from '@ethlete/core';\nimport { debounceTime, map, tap } from 'rxjs';\nimport { ScrollableButtonsDirective } from './headless/scrollable-buttons.directive';\nimport { ScrollableDarkenDirective } from './headless/scrollable-darken.directive';\nimport { ScrollableDragDirective } from './headless/scrollable-drag.directive';\nimport { ScrollableIgnoreChildDirective } from './headless/scrollable-ignore-child.directive';\nimport { ScrollableMasksDirective } from './headless/scrollable-masks.directive';\nimport { ScrollableNavigationDirective } from './headless/scrollable-navigation.directive';\nimport { ScrollableSnapDirective } from './headless/scrollable-snap.directive';\nimport { ScrollableDirective } from './headless/scrollable.directive';\nimport {\n ScrollableButtonPosition,\n ScrollableIntersectionChange,\n ScrollableLoadingTemplatePosition,\n ScrollableMaskVariant,\n ScrollableScrollState,\n} from './headless/scrollable.types';\n\n@Component({\n selector: 'et-scrollable',\n templateUrl: './scrollable.component.html',\n styleUrl: './scrollable.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ScrollObserverDirective,\n ScrollObserverStartDirective,\n ScrollObserverEndDirective,\n ScrollableIgnoreChildDirective,\n ScrollableMasksDirective,\n ScrollableButtonsDirective,\n ScrollableNavigationDirective,\n ScrollableSnapDirective,\n ScrollableDragDirective,\n ScrollableDarkenDirective,\n NgTemplateOutlet,\n ],\n hostDirectives: [\n {\n directive: ScrollableDirective,\n inputs: ['itemSize', 'direction', 'scrollMode', 'scrollOrigin', 'scrollMargin', 'renderScrollbars'],\n },\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n ],\n host: {\n class: 'et-scrollable',\n '[class.et-scrollable--can-animate]': 'canAnimate.state()',\n '[class.et-scrollable--darken-non-intersecting-items]': 'darkenNonIntersectingItems()',\n '[class.et-scrollable--sticky-buttons]': 'stickyButtons() && renderButtonsInside()',\n '[attr.mask-variant]': 'maskVariant()',\n },\n})\nexport class ScrollableComponent {\n public scrollableDir = inject(ScrollableDirective);\n\n public renderMasks = input(true);\n public maskVariant = input<ScrollableMaskVariant>('gradient');\n public renderButtons = input(true);\n public buttonPosition = input<ScrollableButtonPosition>('inside');\n public renderNavigation = input(false);\n public snap = input(false);\n public cursorDragScroll = input(true);\n public darkenNonIntersectingItems = input(false);\n public stickyButtons = input(false);\n public showLoadingTemplate = input(false);\n public loadingTemplatePosition = input<ScrollableLoadingTemplatePosition>('end');\n public scrollableRole = input<string | null>(null);\n public scrollableClass = input<string | null>(null);\n\n public intersectionChange = outputFromObservable<ScrollableIntersectionChange[]>(\n toObservable(this.scrollableDir.childIntersections).pipe(\n takeUntilDestroyed(),\n debounceTime(50),\n map((entries) =>\n entries.map((i, index) => ({\n index,\n element: i.target as HTMLElement,\n intersectionRatio: i.intersectionRatio,\n isIntersecting: i.isIntersecting,\n })),\n ),\n ),\n );\n\n public scrollStateChange = outputFromObservable<ScrollableScrollState>(\n toObservable(\n computed(() => ({\n canScroll: this.scrollableDir.canScroll(),\n isAtEnd: this.scrollableDir.isAtEnd(),\n isAtStart: this.scrollableDir.isAtStart(),\n })),\n ),\n );\n\n private scrollContainerEl = viewChild<ElementRef<HTMLElement>>('scrollable');\n private scrollObserver = viewChild.required(ScrollObserverDirective);\n\n public renderButtonsInside = computed(() => this.buttonPosition() === 'inside' && this.renderButtons());\n public renderButtonsInFooter = computed(() => this.buttonPosition() === 'footer' && this.renderButtons());\n public canAnimate = createCanAnimateSignal();\n\n constructor() {\n const scrollContainerEl$ = toObservable(this.scrollContainerEl);\n const scrollObserver$ = toObservable(this.scrollObserver);\n\n scrollContainerEl$\n .pipe(\n takeUntilDestroyed(),\n tap((el) => {\n if (el) this.scrollableDir.scrollContainerRef.set(el);\n }),\n )\n .subscribe();\n\n scrollObserver$\n .pipe(\n takeUntilDestroyed(),\n tap((obs) => {\n if (obs) this.scrollableDir.scrollObserverRef.set(obs);\n }),\n )\n .subscribe();\n\n signalClasses(this.scrollableDir.scrollableChildren, {\n 'et-scrollable-item': computed(() => true),\n });\n }\n}\n","<div class=\"et-scrollable-wrapper\">\n <div\n #scrollable\n [attr.role]=\"scrollableRole() ?? undefined\"\n [class]=\"scrollableClass()\"\n class=\"et-scrollable-container\"\n etScrollObserver\n >\n <div class=\"et-scroll-observer-first-element\" etScrollObserverStart etScrollableIgnoreChild></div>\n\n @if (loadingTemplatePosition() === 'start' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n\n <ng-content />\n\n @if (loadingTemplatePosition() === 'end' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n\n <div class=\"et-scroll-observer-last-element\" etScrollObserverEnd etScrollableIgnoreChild></div>\n </div>\n\n @if (renderMasks()) {\n <et-scrollable-masks />\n }\n\n @if (renderButtonsInside()) {\n <et-scrollable-buttons />\n }\n</div>\n\n@if ((renderButtonsInFooter() || (renderNavigation() && scrollableDir.canScroll())) && scrollableDir.canScroll()) {\n <div\n [class.et-scrollable-footer--with-navigation]=\"renderNavigation()\"\n [class.et-scrollable-footer--with-buttons]=\"renderButtonsInFooter()\"\n class=\"et-scrollable-footer\"\n aria-hidden=\"true\"\n >\n @if (renderButtonsInFooter()) {\n <et-scrollable-buttons position=\"footer\" />\n }\n\n @if (renderNavigation()) {\n <et-scrollable-navigation />\n }\n\n @if (renderButtonsInFooter()) {\n <!-- Second buttons instance for end side in footer layout is handled by the buttons directive itself -->\n }\n </div>\n}\n\n@if (snap()) {\n <ng-container etScrollableSnap />\n}\n\n@if (cursorDragScroll()) {\n <ng-container etScrollableDrag />\n}\n\n@if (darkenNonIntersectingItems()) {\n <ng-container etScrollableDarken />\n}\n\n<ng-template #loadingTpl>\n @if (scrollableDir.loadingTemplate(); as tpl) {\n @for (\n _ of tpl.repeat();\n track index;\n let index = $index;\n let even = $even;\n let odd = $odd;\n let first = $first;\n let last = $last\n ) {\n <ng-container *ngTemplateOutlet=\"tpl.templateRef; context: { index, even, odd, first, last }\" />\n }\n }\n</ng-template>\n","import { ScrollableActiveChildDirective } from './headless/scrollable-active-child.directive';\nimport { ScrollableIgnoreChildDirective } from './headless/scrollable-ignore-child.directive';\nimport { ScrollableLoadingTemplateDirective } from './headless/scrollable-loading-template.directive';\nimport { ScrollableComponent } from './scrollable.component';\n\nexport const SCROLLABLE_IMPORTS = [\n ScrollableComponent,\n ScrollableActiveChildDirective,\n ScrollableIgnoreChildDirective,\n ScrollableLoadingTemplateDirective,\n] as const;\n","import { Directive, InjectionToken, computed, inject, signal } from '@angular/core';\nimport { ConsentHandler } from '@ethlete/core';\n\nexport const STREAM_CONSENT_TOKEN = new InjectionToken<StreamConsentDirective>('STREAM_CONSENT_TOKEN');\n\nexport const STREAM_USER_CONSENT_PROVIDER_TOKEN = new InjectionToken<ConsentHandler | null>(\n 'STREAM_USER_CONSENT_PROVIDER_TOKEN',\n);\n\nexport const injectStreamUserConsentProvider = () => inject(STREAM_USER_CONSENT_PROVIDER_TOKEN, { optional: true });\n\n@Directive({\n selector: '[etStreamConsent]',\n providers: [{ provide: STREAM_CONSENT_TOKEN, useExisting: StreamConsentDirective }],\n})\nexport class StreamConsentDirective {\n private handler = injectStreamUserConsentProvider();\n private localGranted = signal(false);\n\n public isGranted = this.handler ? computed(() => (this.handler as ConsentHandler).isGranted()) : this.localGranted;\n\n public grant() {\n if (this.handler) {\n this.handler.grant();\n } else {\n this.localGranted.set(true);\n }\n }\n\n public revoke() {\n if (this.handler) {\n this.handler.revoke?.();\n } else {\n this.localGranted.set(false);\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { STREAM_CONSENT_TOKEN } from './stream-consent.directive';\n\n@Directive({\n selector: '[etStreamConsentAccept]',\n host: {\n '(click)': 'consent.grant()',\n },\n})\nexport class StreamConsentAcceptDirective {\n protected consent = inject(STREAM_CONSENT_TOKEN);\n}\n","import { createStaticRootProvider } from '@ethlete/core';\n\nexport type StreamConsentConfig = {\n /** The heading displayed in the consent placeholder. */\n heading: string;\n\n /** The description text displayed below the heading. */\n description: string;\n\n /** The label for the accept button. */\n acceptLabel: string;\n\n /**\n * The color theme name to apply on the accept button.\n * When set, applies `[etProvideColor]` on the button element.\n */\n acceptButtonColor: string | null;\n\n /**\n * A function to transform text based on the current locale.\n * Use `provideLocale()` to update the locale dynamically.\n */\n transformer: (text: string, locale: string) => string;\n};\n\nconst DEFAULT_STREAM_CONSENT_CONFIG: StreamConsentConfig = {\n heading: 'Content blocked',\n description: 'Playback requires your consent. Third-party cookies and data may be used.',\n acceptLabel: 'Allow and play',\n acceptButtonColor: null,\n transformer: (text: string) => text,\n};\n\nexport const [provideStreamConsentConfig, injectStreamConsentConfig] = createStaticRootProvider<StreamConsentConfig>(\n DEFAULT_STREAM_CONSENT_CONFIG,\n { name: 'StreamConsentConfig' },\n);\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject } from '@angular/core';\nimport {\n ProvideSurfaceDirective,\n SURFACE_PROVIDER,\n injectLocale,\n injectSurfaceThemes,\n resolveSurfaceByElevation,\n} from '@ethlete/core';\nimport { ButtonComponent } from '../../button';\nimport { IconDirective, LOCK_ICON, provideIcons } from '../../icon';\nimport { StreamConsentAcceptDirective } from './headless/stream-consent-accept.directive';\nimport { StreamConsentDirective } from './headless/stream-consent.directive';\nimport { injectStreamConsentConfig } from './stream-consent-config';\n\n@Component({\n selector: 'et-stream-consent',\n template: `\n <div [etProvideSurface]=\"cardSurface()\" class=\"et-stream-consent-card\" etSurfaced>\n <span class=\"et-stream-consent-icon\" etIcon=\"et-lock\"></span>\n <h3 class=\"et-stream-consent-heading\">{{ heading() }}</h3>\n <p class=\"et-stream-consent-description\">{{ description() }}</p>\n <button [color]=\"acceptButtonColor()\" et-button etStreamConsentAccept>\n {{ acceptLabel() }}\n </button>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [StreamConsentAcceptDirective, ButtonComponent, IconDirective, ProvideSurfaceDirective],\n providers: [provideIcons(LOCK_ICON)],\n hostDirectives: [StreamConsentDirective],\n host: {\n class: 'et-stream-consent',\n },\n styles: `\n @property --et-stream-consent-padding {\n syntax: '<length>';\n inherits: false;\n initial-value: 32px;\n }\n\n @property --et-stream-consent-gap {\n syntax: '<length>';\n inherits: false;\n initial-value: 12px;\n }\n\n @property --et-stream-consent-icon-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 36px;\n }\n\n @property --et-stream-consent-border-radius {\n syntax: '<length>';\n inherits: false;\n initial-value: 16px;\n }\n\n @property --et-stream-consent-heading-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 16px;\n }\n\n @property --et-stream-consent-heading-weight {\n syntax: '<number>';\n inherits: false;\n initial-value: 600;\n }\n\n @property --et-stream-consent-heading-line-height {\n syntax: '<percentage>';\n inherits: false;\n initial-value: 122%;\n }\n\n @property --et-stream-consent-heading-letter-spacing {\n syntax: '<length>';\n inherits: false;\n initial-value: 0.2px;\n }\n\n @property --et-stream-consent-description-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 14px;\n }\n\n @property --et-stream-consent-description-weight {\n syntax: '<number>';\n inherits: false;\n initial-value: 400;\n }\n\n @property --et-stream-consent-description-line-height {\n syntax: '<percentage>';\n inherits: false;\n initial-value: 150%;\n }\n\n .et-stream-consent {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n background: var(--et-surface-background-solid, inherit);\n color: var(--et-surface-color-solid, inherit);\n\n .et-stream-consent-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--et-stream-consent-gap);\n padding: var(--et-stream-consent-padding);\n border-radius: var(--et-stream-consent-border-radius);\n max-width: 36rem;\n text-align: center;\n background: var(--et-surface-background-solid, inherit);\n }\n\n .et-stream-consent-icon {\n width: var(--et-stream-consent-icon-size);\n height: var(--et-stream-consent-icon-size);\n color: var(--et-surface-color-subtle-solid, currentColor);\n margin-block-end: 0.4rem;\n }\n\n .et-stream-consent-heading {\n margin: 0;\n font-size: var(--et-stream-consent-heading-size);\n font-weight: var(--et-stream-consent-heading-weight);\n line-height: var(--et-stream-consent-heading-line-height);\n letter-spacing: var(--et-stream-consent-heading-letter-spacing);\n color: var(--et-surface-color-solid, currentColor);\n }\n\n .et-stream-consent-description {\n margin: 0;\n font-size: var(--et-stream-consent-description-size);\n font-weight: var(--et-stream-consent-description-weight);\n line-height: var(--et-stream-consent-description-line-height);\n color: var(--et-surface-color-muted-solid, currentColor);\n margin-block-end: 0.8rem;\n }\n }\n `,\n})\nexport class StreamConsentComponent {\n private parentSurfaceProvider = inject(SURFACE_PROVIDER, { optional: true, skipSelf: true });\n private config = injectStreamConsentConfig();\n private locale = injectLocale();\n private surfaceThemes = injectSurfaceThemes({ optional: true });\n\n public cardSurface = computed(() => {\n const themes = this.surfaceThemes;\n if (!themes) return null;\n\n const type = this.parentSurfaceProvider?.surfaceType() ?? 'dark';\n const elevation = (this.parentSurfaceProvider?.elevation() ?? 0) + 1;\n\n return resolveSurfaceByElevation(themes, type, elevation)?.name ?? null;\n });\n\n public heading = computed(() => this.config.transformer(this.config.heading, this.locale.currentLocale()));\n public description = computed(() => this.config.transformer(this.config.description, this.locale.currentLocale()));\n public acceptLabel = computed(() => this.config.transformer(this.config.acceptLabel, this.locale.currentLocale()));\n public acceptButtonColor = computed(() => this.config.acceptButtonColor);\n}\n","import { Directive, InjectionToken, Signal, inject } from '@angular/core';\n\nexport type StreamPlayerErrorContext = {\n readonly error: Signal<unknown>;\n retry(): void;\n};\n\nexport const STREAM_PLAYER_ERROR_CONTEXT_TOKEN = new InjectionToken<StreamPlayerErrorContext>(\n 'STREAM_PLAYER_ERROR_CONTEXT_TOKEN',\n);\n\nexport const STREAM_PLAYER_ERROR_TOKEN = new InjectionToken<StreamPlayerErrorDirective>('STREAM_PLAYER_ERROR_TOKEN');\n\n@Directive({\n selector: '[etStreamPlayerError]',\n providers: [{ provide: STREAM_PLAYER_ERROR_TOKEN, useExisting: StreamPlayerErrorDirective }],\n})\nexport class StreamPlayerErrorDirective {\n public context = inject(STREAM_PLAYER_ERROR_CONTEXT_TOKEN);\n}\n","import { createStaticRootProvider } from '@ethlete/core';\n\nexport type StreamPlayerErrorConfig = {\n /** The heading displayed in the error overlay. */\n heading: string;\n\n /** The description text displayed below the heading. */\n description: string;\n\n /** The label for the retry button. */\n retryLabel: string;\n\n /**\n * The color theme name to apply on the retry button.\n * When set, applies `[color]` on the button element.\n */\n retryButtonColor: string | null;\n\n /**\n * A function to transform text based on the current locale.\n * Use `provideLocale()` to update the locale dynamically.\n */\n transformer: (text: string, locale: string) => string;\n};\n\nconst DEFAULT_STREAM_PLAYER_ERROR_CONFIG: StreamPlayerErrorConfig = {\n heading: 'Playback failed',\n description: 'The player could not be loaded. Please check your connection or try again.',\n retryLabel: 'Retry',\n retryButtonColor: null,\n transformer: (text: string) => text,\n};\n\nexport const [provideStreamPlayerErrorConfig, injectStreamPlayerErrorConfig] =\n createStaticRootProvider<StreamPlayerErrorConfig>(DEFAULT_STREAM_PLAYER_ERROR_CONFIG, {\n name: 'StreamPlayerErrorConfig',\n });\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject } from '@angular/core';\nimport {\n ProvideSurfaceDirective,\n SURFACE_PROVIDER,\n injectLocale,\n injectSurfaceThemes,\n resolveSurfaceByElevation,\n} from '@ethlete/core';\nimport { ButtonComponent } from '../../button';\nimport { IconDirective, TRIANGLE_EXCLAMATION_ICON, provideIcons } from '../../icon';\nimport { STREAM_PLAYER_ERROR_TOKEN, StreamPlayerErrorDirective } from './headless/stream-player-error.directive';\nimport { injectStreamPlayerErrorConfig } from './stream-player-error-config';\n\n@Component({\n selector: 'et-stream-player-error',\n template: `\n <div [etProvideSurface]=\"cardSurface()\" class=\"et-stream-player-error-card\" etSurfaced>\n <span class=\"et-stream-player-error-icon\" etIcon=\"et-triangle-exclamation\"></span>\n <h3 class=\"et-stream-player-error-heading\">{{ heading() }}</h3>\n <p class=\"et-stream-player-error-description\">{{ description() }}</p>\n <button [color]=\"retryButtonColor()\" (click)=\"retry()\" et-button type=\"button\">\n {{ retryLabel() }}\n </button>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconDirective, ProvideSurfaceDirective],\n providers: [provideIcons(TRIANGLE_EXCLAMATION_ICON)],\n hostDirectives: [StreamPlayerErrorDirective],\n host: {\n class: 'et-stream-player-error',\n },\n styles: `\n @property --et-stream-player-error-gap {\n syntax: '<length>';\n inherits: false;\n initial-value: 12px;\n }\n\n @property --et-stream-player-error-padding {\n syntax: '<length>';\n inherits: false;\n initial-value: 32px;\n }\n\n @property --et-stream-player-error-icon-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 36px;\n }\n\n @property --et-stream-player-error-border-radius {\n syntax: '<length>';\n inherits: false;\n initial-value: 16px;\n }\n\n @property --et-stream-player-error-heading-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 16px;\n }\n\n @property --et-stream-player-error-heading-weight {\n syntax: '<number>';\n inherits: false;\n initial-value: 600;\n }\n\n @property --et-stream-player-error-heading-line-height {\n syntax: '<percentage>';\n inherits: false;\n initial-value: 122%;\n }\n\n @property --et-stream-player-error-heading-letter-spacing {\n syntax: '<length>';\n inherits: false;\n initial-value: 0.2px;\n }\n\n @property --et-stream-player-error-description-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 14px;\n }\n\n @property --et-stream-player-error-description-weight {\n syntax: '<number>';\n inherits: false;\n initial-value: 400;\n }\n\n @property --et-stream-player-error-description-line-height {\n syntax: '<percentage>';\n inherits: false;\n initial-value: 150%;\n }\n\n .et-stream-player-error {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--et-surface-background-solid, inherit);\n color: var(--et-surface-color-solid, inherit);\n z-index: 1;\n\n .et-stream-player-error-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--et-stream-player-error-gap);\n padding: var(--et-stream-player-error-padding);\n border-radius: var(--et-stream-player-error-border-radius);\n max-width: 36rem;\n text-align: center;\n background: var(--et-surface-background-solid, inherit);\n }\n\n .et-stream-player-error-icon {\n width: var(--et-stream-player-error-icon-size);\n height: var(--et-stream-player-error-icon-size);\n color: var(--et-surface-color-subtle-solid, currentColor);\n margin-block-end: 0.4rem;\n }\n\n .et-stream-player-error-heading {\n margin: 0;\n font-size: var(--et-stream-player-error-heading-size);\n font-weight: var(--et-stream-player-error-heading-weight);\n line-height: var(--et-stream-player-error-heading-line-height);\n letter-spacing: var(--et-stream-player-error-heading-letter-spacing);\n color: var(--et-surface-color-solid, currentColor);\n }\n\n .et-stream-player-error-description {\n margin: 0;\n font-size: var(--et-stream-player-error-description-size);\n font-weight: var(--et-stream-player-error-description-weight);\n line-height: var(--et-stream-player-error-description-line-height);\n color: var(--et-surface-color-muted-solid, currentColor);\n margin-block-end: 0.8rem;\n }\n }\n `,\n})\nexport class StreamPlayerErrorComponent {\n private errorDirective = inject(STREAM_PLAYER_ERROR_TOKEN);\n private parentSurfaceProvider = inject(SURFACE_PROVIDER, { optional: true, skipSelf: true });\n private config = injectStreamPlayerErrorConfig();\n private locale = injectLocale();\n private surfaceThemes = injectSurfaceThemes({ optional: true });\n\n public cardSurface = computed(() => {\n const themes = this.surfaceThemes;\n if (!themes) return null;\n\n const type = this.parentSurfaceProvider?.surfaceType() ?? 'dark';\n const elevation = (this.parentSurfaceProvider?.elevation() ?? 0) + 1;\n\n return resolveSurfaceByElevation(themes, type, elevation)?.name ?? null;\n });\n\n public heading = computed(() => this.config.transformer(this.config.heading, this.locale.currentLocale()));\n public description = computed(() => this.config.transformer(this.config.description, this.locale.currentLocale()));\n public retryLabel = computed(() => this.config.transformer(this.config.retryLabel, this.locale.currentLocale()));\n public retryButtonColor = computed(() => this.config.retryButtonColor);\n\n public retry() {\n this.errorDirective.context.retry();\n }\n}\n","import { createStaticRootProvider } from '@ethlete/core';\n\nexport type StreamPlayerLoadingConfig = {\n /** Diameter of the loading spinner in px. */\n spinnerDiameter: number;\n\n /** Stroke width of the loading spinner in px. */\n spinnerStrokeWidth: number;\n};\n\nconst DEFAULT_STREAM_PLAYER_LOADING_CONFIG: StreamPlayerLoadingConfig = {\n spinnerDiameter: 35,\n spinnerStrokeWidth: 2,\n};\n\nexport const [provideStreamPlayerLoadingConfig, injectStreamPlayerLoadingConfig] =\n createStaticRootProvider<StreamPlayerLoadingConfig>(DEFAULT_STREAM_PLAYER_LOADING_CONFIG, {\n name: 'StreamPlayerLoadingConfig',\n });\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { SpinnerComponent } from '../../loader';\nimport { injectStreamPlayerLoadingConfig } from './stream-player-loading-config';\n\n@Component({\n selector: 'et-stream-player-loading',\n template: ` <et-spinner [diameter]=\"config.spinnerDiameter\" [strokeWidth]=\"config.spinnerStrokeWidth\" track /> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SpinnerComponent],\n host: {\n class: 'et-stream-player-loading',\n },\n styles: `\n .et-stream-player-loading {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--et-surface-background-solid, inherit);\n color: var(--et-surface-color-solid, inherit);\n z-index: 1;\n\n .et-spinner {\n --et-spinner-color: var(--et-surface-color-muted-solid, currentColor);\n --et-spinner-track-color: var(--et-surface-color-subtle-solid, currentColor);\n }\n }\n `,\n})\nexport class StreamPlayerLoadingComponent {\n protected config = injectStreamPlayerLoadingConfig();\n}\n","import { AngularRenderer } from '@ethlete/core';\nimport { take, tap, timer } from 'rxjs';\n\nexport const animateWithFixedWrapper = (config: {\n playerEl: HTMLElement;\n fromRect: DOMRect;\n toRect: DOMRect;\n document: Document;\n renderer: AngularRenderer;\n onFinish: () => void;\n duration?: number;\n easing?: string;\n}) => {\n const {\n playerEl,\n fromRect,\n toRect,\n document,\n renderer,\n onFinish,\n duration = 250,\n easing = 'cubic-bezier(0.4, 0, 0.2, 1)',\n } = config;\n\n const dx = toRect.left - fromRect.left;\n const dy = toRect.top - fromRect.top;\n const sx = fromRect.width > 0 ? toRect.width / fromRect.width : 1;\n const sy = fromRect.height > 0 ? toRect.height / fromRect.height : 1;\n const finalTransform = `translate(${dx}px, ${dy}px) scale(${sx}, ${sy})`;\n\n const wrapper = renderer.createElement('div');\n renderer.setStyle(wrapper, {\n position: 'fixed',\n left: `${fromRect.left}px`,\n top: `${fromRect.top}px`,\n width: `${fromRect.width}px`,\n height: `${fromRect.height}px`,\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '2147483647',\n });\n renderer.appendChild(document.body, wrapper);\n renderer.moveBefore({ newParent: wrapper, child: playerEl, before: null });\n\n const anim = wrapper.animate(\n [\n { transformOrigin: 'top left', transform: 'none' },\n { transformOrigin: 'top left', transform: finalTransform },\n ],\n { duration, easing },\n );\n\n let done = false;\n const cleanup = () => {\n if (done) return;\n done = true;\n renderer.setStyle(wrapper, { transform: finalTransform, transformOrigin: 'top left', visibility: 'hidden' });\n anim.cancel();\n onFinish();\n renderer.removeChild(document.body, wrapper);\n };\n\n anim.onfinish = cleanup;\n anim.oncancel = cleanup;\n};\n\nexport const animateElementTo = (config: {\n el: HTMLElement;\n fromRect: DOMRect;\n toRect: DOMRect;\n duration?: number;\n easing?: string;\n}) => {\n const { el, fromRect, toRect, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n const parent = el.parentElement;\n if (!parent) return;\n const pRect = parent.getBoundingClientRect();\n if (!pRect.width || !pRect.height) return;\n\n const mk = (r: DOMRect) =>\n `translate(${r.left - pRect.left}px,${r.top - pRect.top}px) scale(${r.width / pRect.width},${r.height / pRect.height})`;\n\n el.animate(\n [\n { transform: mk(fromRect), transformOrigin: 'top left', composite: 'replace' },\n { transform: mk(toRect), transformOrigin: 'top left', composite: 'replace' },\n ],\n { duration, easing },\n );\n};\n\nexport const animatePulse = (el: HTMLElement) => {\n el.animate(\n [\n { transform: 'scale(1)', offset: 0 },\n { transform: 'scale(1)', offset: 0.15 },\n { transform: 'scale(1.22)', offset: 0.4 },\n { transform: 'scale(0.92)', offset: 0.65 },\n { transform: 'scale(1.06)', offset: 0.82 },\n { transform: 'scale(1)', offset: 1 },\n ],\n { duration: 600, easing: 'ease-out', fill: 'none' },\n );\n};\n\nexport const animateScaleFadeIn = (el: HTMLElement) => {\n el.animate(\n [\n { transform: 'scale(0.85)', opacity: '0' },\n { transform: 'scale(1)', opacity: '1' },\n ],\n { duration: 200, easing: 'ease-out' },\n );\n};\n\nexport const animateScaleFadeOut = (el: HTMLElement, config: { onFinish: () => void }) => {\n const anim = el.animate(\n [\n { transform: 'scale(1)', opacity: '1' },\n { transform: 'scale(0.85)', opacity: '0' },\n ],\n { duration: 160, easing: 'ease-in', fill: 'forwards' },\n );\n anim.onfinish = () => config.onFinish();\n};\n\nexport type NewPipAnimationConfig = {\n cell: HTMLElement;\n stageEl: HTMLElement;\n stageRect: DOMRect;\n /** Natural aspect ratio of the video being animated (width/height). */\n aspectRatio: number;\n gridBtnEl: HTMLElement | undefined;\n renderer: AngularRenderer;\n showForcedTitleBar: () => void;\n hideForcedTitleBar: () => void;\n};\n\nexport const animateNewPipInSingleMode = (config: NewPipAnimationConfig) => {\n const {\n cell,\n stageEl,\n stageRect,\n aspectRatio,\n gridBtnEl: gridBtn,\n renderer,\n showForcedTitleBar,\n hideForcedTitleBar,\n } = config;\n\n if (!stageRect.width || !stageRect.height) return;\n\n const videoW = Math.min(stageRect.width, stageRect.height * aspectRatio);\n const videoH = Math.min(stageRect.height, stageRect.width / aspectRatio);\n const videoX = (stageRect.width - videoW) / 2;\n const videoY = (stageRect.height - videoH) / 2;\n\n renderer.setStyle(cell, { width: `${videoW}px`, height: `${videoH}px`, left: `${videoX}px`, top: `${videoY}px` });\n\n const holdDuration = 550;\n const flyDuration = 350;\n const fadeInFrac = 0.15;\n\n const thumbW = videoW * 0.22;\n const thumbH = videoH * 0.22;\n const thumbSx = thumbW / videoW;\n const thumbSy = thumbH / videoH;\n\n const btnRectNow = gridBtn?.getBoundingClientRect();\n\n const showDxMax = stageRect.width - videoX - thumbW - 4;\n let showDx = showDxMax;\n if (btnRectNow && btnRectNow.width > 0) {\n const cx = btnRectNow.left + btnRectNow.width / 2 - (stageRect.left + videoX);\n showDx = Math.min(Math.max(-videoX, cx - thumbW / 2), showDxMax);\n }\n const showDy = 4 - videoY;\n\n showForcedTitleBar();\n renderer.setStyle(stageEl, { overflow: 'visible' });\n const phase1 = cell.animate(\n [\n {\n transform: `translate(${showDx}px,${showDy}px) scale(${thumbSx},${thumbSy})`,\n transformOrigin: 'top left',\n opacity: '0',\n },\n {\n transform: `translate(${showDx}px,${showDy}px) scale(${thumbSx},${thumbSy})`,\n transformOrigin: 'top left',\n opacity: '1',\n offset: fadeInFrac,\n },\n {\n transform: `translate(${showDx}px,${showDy}px) scale(${thumbSx},${thumbSy})`,\n transformOrigin: 'top left',\n opacity: '1',\n },\n ],\n { duration: holdDuration, fill: 'forwards' },\n );\n\n phase1.onfinish = () => {\n const freshStageRect = stageEl.getBoundingClientRect();\n const freshBtnRect = gridBtn?.getBoundingClientRect();\n const freshVideoX = (freshStageRect.width - videoW) / 2;\n const freshVideoY = (freshStageRect.height - videoH) / 2;\n\n const freshShowDx = showDx + (stageRect.left + videoX) - (freshStageRect.left + freshVideoX);\n const freshShowDy = showDy + (stageRect.top + videoY) - (freshStageRect.top + freshVideoY);\n\n const exitScaleW = thumbW * 0.15;\n const exitScaleH = thumbH * 0.15;\n const exitSx = thumbSx * 0.15;\n const exitSy = thumbSy * 0.15;\n\n let exitDx: number;\n let exitDy: number;\n if (freshBtnRect && freshBtnRect.width > 0) {\n exitDx = freshBtnRect.left + freshBtnRect.width / 2 - (freshStageRect.left + freshVideoX) - exitScaleW / 2;\n exitDy = freshBtnRect.top + freshBtnRect.height / 2 - (freshStageRect.top + freshVideoY) - exitScaleH / 2;\n } else {\n exitDx = freshShowDx + thumbW * 0.4;\n exitDy = freshShowDy - thumbH;\n }\n\n gridBtn?.animate(\n [\n { transform: 'scale(1)', offset: 0 },\n { transform: 'scale(1.5)', offset: 0.4 },\n { transform: 'scale(1)', offset: 1 },\n ],\n { duration: 400, easing: 'cubic-bezier(0.4,0,0.2,1)', fill: 'none' },\n );\n\n const phase2 = cell.animate(\n [\n {\n transform: `translate(${freshShowDx}px,${freshShowDy}px) scale(${thumbSx},${thumbSy})`,\n transformOrigin: 'top left',\n opacity: '1',\n },\n {\n transform: `translate(${exitDx}px,${exitDy}px) scale(${exitSx},${exitSy})`,\n transformOrigin: 'top left',\n opacity: '0',\n },\n ],\n { duration: flyDuration, easing: 'ease-in', fill: 'none' },\n );\n\n phase2.onfinish = () => {\n renderer.setStyle(cell, { width: null, height: null, left: null, top: null });\n phase1.cancel();\n renderer.removeStyle(stageEl, 'overflow');\n timer(100)\n .pipe(\n take(1),\n tap(() => hideForcedTitleBar()),\n )\n .subscribe();\n };\n };\n};\n","export type StreamPipChromeConfig = {\n /**\n * Optional color key applied to built-in PiP titlebar controls.\n * Uses the button's neutral fallback styling when omitted.\n */\n controlsColor?: string;\n};\n\nexport const DEFAULT_PIP_CHROME_CONFIG: StreamPipChromeConfig = {\n controlsColor: undefined,\n};\n","import { DOCUMENT, inject } from '@angular/core';\nimport { createFlipAnimation, createRootProvider, injectRenderer, injectViewportSize } from '@ethlete/core';\nimport { StreamManager, StreamPlayerEntry, StreamPlayerId, StreamSlotEntry } from './stream-manager.types';\n\ntype InternalPlayerEntry = StreamPlayerEntry & {\n /** True while this player is in PIP mode — prevents slot reassignment. */\n isInPip: boolean;\n /**\n * True while the exit (pip→slot) animation is in flight.\n * `reassignPlayer()` skips this player so the animation wrapper keeps ownership.\n */\n isAnimatingOut: boolean;\n};\n\nexport const [provideStreamManager, injectStreamManager] = createRootProvider(\n (): StreamManager => {\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n\n const container = renderer.createElement('div');\n renderer.addClass(container, 'et-stream-manager');\n renderer.appendChild(document.body, container);\n\n const viewportSize = injectViewportSize();\n\n const players = new Map<StreamPlayerId, InternalPlayerEntry>();\n const slots = new Map<HTMLElement, StreamSlotEntry>();\n\n const resolveBestSlot = (playerId: StreamPlayerId): StreamSlotEntry | null => {\n let best: StreamSlotEntry | null = null;\n\n for (const slot of slots.values()) {\n if (slot.playerId !== playerId) continue;\n if (!best) {\n best = slot;\n continue;\n }\n if (!best.priority) {\n best = slot;\n continue;\n }\n if (slot.priority) {\n best = slot;\n }\n }\n\n return best;\n };\n\n const isInViewport = (r: DOMRect) =>\n r.width > 0 &&\n r.height > 0 &&\n r.right > 0 &&\n r.bottom > 0 &&\n r.left < viewportSize().width &&\n r.top < viewportSize().height;\n\n const moveWithFlip = (element: HTMLElement, targetParent: HTMLElement) => {\n const initialRect = element.getBoundingClientRect();\n if (!isInViewport(initialRect)) {\n renderer.moveBefore({ newParent: targetParent, child: element });\n\n return;\n }\n const flip = createFlipAnimation({ element });\n flip.updateInit();\n renderer.moveBefore({ newParent: targetParent, child: element });\n flip.play();\n };\n\n const hasSlotFor = (playerId: StreamPlayerId) => {\n for (const slot of slots.values()) {\n if (slot.playerId === playerId) return true;\n }\n return false;\n };\n\n const reassignPlayer = (playerId: StreamPlayerId) => {\n const player = players.get(playerId);\n if (!player || player.isInPip || player.isAnimatingOut) return;\n\n const bestSlot = resolveBestSlot(playerId);\n const targetParent = bestSlot?.element ?? container;\n\n if (player.element.parentElement !== targetParent) {\n moveWithFlip(player.element, targetParent);\n }\n };\n\n const registerPlayer = (entry: StreamPlayerEntry) => {\n const internal: InternalPlayerEntry = {\n ...entry,\n isInPip: false,\n isAnimatingOut: false,\n };\n players.set(entry.id, internal);\n renderer.appendChild(container, entry.element);\n reassignPlayer(entry.id);\n };\n\n const unregisterPlayer = (playerId: StreamPlayerId) => {\n const entry = players.get(playerId);\n if (!entry) return;\n entry.element.remove();\n players.delete(playerId);\n entry.onDestroy?.();\n };\n\n const registerSlot = (entry: StreamSlotEntry) => {\n slots.set(entry.element, entry);\n reassignPlayer(entry.playerId);\n };\n\n const unregisterSlot = (element: HTMLElement) => {\n const slot = slots.get(element);\n if (!slot) return;\n slots.delete(element);\n\n const player = players.get(slot.playerId);\n if (!player) return;\n\n if (player.isInPip) return;\n\n if (player.element.parentElement === element) {\n if (hasSlotFor(slot.playerId)) {\n reassignPlayer(slot.playerId);\n } else {\n unregisterPlayer(slot.playerId);\n }\n }\n };\n\n const transferPlayer = (oldId: StreamPlayerId, newId: StreamPlayerId) => {\n const entry = players.get(oldId);\n if (!entry || oldId === newId) return;\n players.delete(oldId);\n players.set(newId, { ...entry, id: newId });\n };\n\n const getPlayerElement = (playerId: StreamPlayerId): HTMLElement | null => players.get(playerId)?.element ?? null;\n\n const getPlayerEntry = (playerId: StreamPlayerId): StreamPlayerEntry | null => {\n const entry = players.get(playerId);\n if (!entry) return null;\n return { id: entry.id, element: entry.element, onDestroy: entry.onDestroy, thumbnail: entry.thumbnail };\n };\n\n const getSlot = (element: HTMLElement): StreamSlotEntry | null => slots.get(element) ?? null;\n\n const movePlayerToContainer = (playerId: StreamPlayerId) => {\n const player = players.get(playerId);\n if (!player) return;\n if (player.element.parentElement === container) return;\n renderer.moveBefore({ newParent: container, child: player.element });\n };\n\n const setPlayerInPip = (playerId: StreamPlayerId, inPip: boolean) => {\n const player = players.get(playerId);\n if (player) player.isInPip = inPip;\n };\n\n const isPlayerInPip = (playerId: StreamPlayerId) => players.get(playerId)?.isInPip ?? false;\n\n const setPlayerAnimatingOut = (playerId: StreamPlayerId, animating: boolean) => {\n const player = players.get(playerId);\n if (player) player.isAnimatingOut = animating;\n };\n\n return {\n hasSlotFor,\n registerPlayer,\n unregisterPlayer,\n registerSlot,\n unregisterSlot,\n transferPlayer,\n getPlayerElement,\n getPlayerEntry,\n getSlot,\n resolveBestSlot,\n movePlayerToContainer,\n setPlayerInPip,\n isPlayerInPip,\n setPlayerAnimatingOut,\n };\n },\n { name: 'Stream Manager' },\n);\n","import { DOCUMENT, computed, inject, signal } from '@angular/core';\nimport { createRootProvider, injectRenderer, injectViewportSize } from '@ethlete/core';\nimport { animateWithFixedWrapper } from './pip/headless/internals/pip-animation';\nimport { DEFAULT_PIP_CHROME_CONFIG } from './pip/pip-chrome.config';\nimport { injectStreamManager } from './stream-manager';\nimport { PipManager, StreamPipEntry, StreamPlayerId } from './stream-manager.types';\n\nexport const [providePipManager, injectPipManager] = createRootProvider(\n (): PipManager => {\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n const streamManager = injectStreamManager();\n\n const viewportSize = injectViewportSize();\n\n const pips = signal<StreamPipEntry[]>([]);\n const featuredPipId = signal<StreamPlayerId | null>(null);\n const pipInitialRects = new Map<StreamPlayerId, DOMRect>();\n const pendingBackPulses = new Set<StreamPlayerId>();\n const backPulseCounter = signal(0);\n const animatingOutIds = new Set<StreamPlayerId>();\n const latestPip = computed(() => {\n const currentPips = pips();\n\n return currentPips[currentPips.length - 1] ?? null;\n });\n const pipChromeComponent = computed(() => latestPip()?.pipChromeComponent ?? null);\n const pipChromeConfig = computed(() => latestPip()?.pipChromeConfig ?? DEFAULT_PIP_CHROME_CONFIG);\n\n const setFeaturedPip = (playerId: StreamPlayerId | null) => {\n featuredPipId.set(playerId);\n };\n\n const notifyBackPressed = (playerId: StreamPlayerId) => {\n pendingBackPulses.add(playerId);\n backPulseCounter.update((n) => n + 1);\n };\n\n const consumeBackPulse = (playerId: StreamPlayerId) => {\n if (pendingBackPulses.has(playerId)) {\n pendingBackPulses.delete(playerId);\n\n return true;\n }\n return false;\n };\n\n const isInViewport = (r: DOMRect) =>\n r.width > 0 &&\n r.height > 0 &&\n r.right > 0 &&\n r.bottom > 0 &&\n r.left < viewportSize().width &&\n r.top < viewportSize().height;\n\n const isInPip = (playerId: StreamPlayerId) => pips().some((p) => p.playerId === playerId);\n\n const pipActivate = (\n element: HTMLElement,\n options?: {\n onBack?: () => void;\n aspectRatio?: number;\n pipChromeComponent?: StreamPipEntry['pipChromeComponent'];\n pipChromeConfig?: StreamPipEntry['pipChromeConfig'];\n },\n ) => {\n const slot = streamManager.getSlot(element);\n if (!slot) return;\n\n const playerEntry = streamManager.getPlayerEntry(slot.playerId);\n if (!playerEntry || isInPip(slot.playerId)) return;\n\n const initialRect = playerEntry.element.getBoundingClientRect();\n if (isInViewport(initialRect)) {\n pipInitialRects.set(slot.playerId, initialRect);\n }\n\n streamManager.setPlayerInPip(slot.playerId, true);\n streamManager.movePlayerToContainer(slot.playerId);\n pips.update((current) => [\n ...current,\n {\n playerId: slot.playerId,\n onBack: options?.onBack ?? slot.onPipBack,\n thumbnail: playerEntry.thumbnail,\n pipChromeComponent: options?.pipChromeComponent,\n pipChromeConfig: options?.pipChromeConfig ?? DEFAULT_PIP_CHROME_CONFIG,\n aspectRatio: options?.aspectRatio ?? 16 / 9,\n },\n ]);\n };\n\n const pipDeactivate = (\n playerId: StreamPlayerId,\n options?: { skipAnimation?: boolean; animation?: 'flip' | 'scaleFadeIn' },\n ) => {\n if (!isInPip(playerId)) return;\n\n pipInitialRects.delete(playerId);\n\n const playerEl = streamManager.getPlayerElement(playerId);\n if (!playerEl) {\n pips.update((current) => current.filter((p) => p.playerId !== playerId));\n streamManager.setPlayerInPip(playerId, false);\n\n return;\n }\n\n const bestSlot = streamManager.resolveBestSlot(playerId);\n\n if (!bestSlot) {\n pips.update((current) => current.filter((p) => p.playerId !== playerId));\n streamManager.setPlayerInPip(playerId, false);\n streamManager.unregisterPlayer(playerId);\n\n return;\n }\n\n const targetParent = bestSlot.element;\n\n if (!options?.skipAnimation) {\n const requestedAnim = options?.animation ?? 'flip';\n const fromRect = playerEl.getBoundingClientRect();\n\n const featuredId = featuredPipId();\n const animMode =\n requestedAnim === 'flip' && featuredId !== null && playerId !== featuredId ? 'scaleFadeIn' : requestedAnim;\n\n if (animMode === 'scaleFadeIn') {\n animatingOutIds.add(playerId);\n streamManager.setPlayerAnimatingOut(playerId, true);\n renderer.moveBefore({ newParent: targetParent, child: playerEl });\n const anim = playerEl.animate(\n [\n { transform: 'scale(0.85)', opacity: '0' },\n { transform: 'scale(1)', opacity: '1' },\n ],\n { duration: 200, easing: 'ease-out' },\n );\n anim.onfinish = () => {\n animatingOutIds.delete(playerId);\n streamManager.setPlayerAnimatingOut(playerId, false);\n };\n pips.update((current) => current.filter((p) => p.playerId !== playerId));\n streamManager.setPlayerInPip(playerId, false);\n\n return;\n }\n\n const toRect = targetParent.getBoundingClientRect();\n\n if (fromRect.width > 0 && fromRect.height > 0 && toRect.width > 0 && toRect.height > 0) {\n animatingOutIds.add(playerId);\n streamManager.setPlayerAnimatingOut(playerId, true);\n animateWithFixedWrapper({\n playerEl,\n fromRect,\n toRect,\n document,\n renderer,\n onFinish: () => {\n animatingOutIds.delete(playerId);\n streamManager.setPlayerAnimatingOut(playerId, false);\n renderer.moveBefore({ newParent: targetParent, child: playerEl });\n },\n });\n pips.update((current) => current.filter((p) => p.playerId !== playerId));\n streamManager.setPlayerInPip(playerId, false);\n\n return;\n }\n }\n\n renderer.moveBefore({ newParent: targetParent, child: playerEl });\n pips.update((current) => current.filter((p) => p.playerId !== playerId));\n streamManager.setPlayerInPip(playerId, false);\n };\n\n const getInitialRect = (playerId: StreamPlayerId): DOMRect | null => {\n const rect = pipInitialRects.get(playerId) ?? null;\n pipInitialRects.delete(playerId);\n return rect;\n };\n\n const parkPlayerElement = (playerId: StreamPlayerId) => {\n if (animatingOutIds.has(playerId)) return;\n streamManager.movePlayerToContainer(playerId);\n };\n\n return {\n pips: pips.asReadonly(),\n pipChromeComponent,\n pipChromeConfig,\n featuredPipId: featuredPipId.asReadonly(),\n setFeaturedPip,\n backPulseCounter: backPulseCounter.asReadonly(),\n notifyBackPressed,\n consumeBackPulse,\n pipActivate,\n pipDeactivate,\n getInitialRect,\n parkPlayerElement,\n };\n },\n { name: 'Pip Manager' },\n);\n","import { InjectionToken } from '@angular/core';\nimport { PipChromeAnimations } from './pip-chrome-animations';\nimport { PipChromeState } from './pip-chrome-state';\n\nexport type PipChromeRef = {\n state: PipChromeState;\n animations: PipChromeAnimations;\n};\n\nexport const PIP_CHROME_REF_TOKEN = new InjectionToken<PipChromeRef>('PIP_CHROME_REF_TOKEN');\n","import { InjectionToken, Signal } from '@angular/core';\nimport { StreamPipEntry } from '../../stream-manager.types';\n\nexport const PIP_ENTRY_TOKEN = new InjectionToken<Signal<StreamPipEntry>>('PIP_ENTRY_TOKEN');\n","import { Directive, inject, input } from '@angular/core';\nimport { injectPipManager } from '../../pip-manager';\nimport { StreamPipEntry } from '../../stream-manager.types';\nimport { PIP_CHROME_REF_TOKEN } from './pip-chrome-ref.token';\nimport { PIP_ENTRY_TOKEN } from './pip-entry.token';\n\n@Directive({\n selector: '[etPipBack]',\n host: {\n class: 'et-stream-pip-chrome__back',\n type: 'button',\n 'attr.aria-label': '\"Focus\"',\n '(click)': 'back($event)',\n },\n})\nexport class PipBackDirective {\n private chrome = inject(PIP_CHROME_REF_TOKEN, { optional: true });\n private tokenEntry = inject(PIP_ENTRY_TOKEN, { optional: true });\n\n public entry = input<StreamPipEntry>();\n private pipManager = injectPipManager();\n\n public back(event: Event) {\n event.stopPropagation();\n const entry = this.resolveEntry();\n if (!entry) return;\n this.pipManager.notifyBackPressed(entry.playerId);\n entry.onBack?.();\n }\n\n private resolveEntry() {\n return this.entry() ?? this.tokenEntry?.() ?? this.chrome?.state.featuredPip() ?? null;\n }\n}\n","import { InjectionToken, Signal, Type } from '@angular/core';\nimport { StreamPipChromeConfig } from './pip/pip-chrome.config';\n\n/**\n * Unique id for a stream player entry.\n * Convention: `'{platform}-{resourceId}'`, e.g. `'youtube-dQw4w9WgXcQ'`.\n */\nexport type StreamPlayerId = string;\n\n/**\n * Token provided by player-slot directives/components (e.g. `YoutubePlayerSlotDirective`).\n * Yields a reactive signal of the current player id the slot is bound to, or `null` when\n * the slot has not yet initialised. Consumed by `PipSlotPlaceholderComponent` to\n * auto-detect whether its hosting slot currently has its player in PIP mode.\n */\nexport const STREAM_SLOT_PLAYER_ID_TOKEN = new InjectionToken<Signal<StreamPlayerId | null>>(\n 'STREAM_SLOT_PLAYER_ID_TOKEN',\n);\n\nexport type StreamSlotEntry = {\n /**\n * The player id this slot wants to display (e.g. `'youtube-dQw4w9WgXcQ'`).\n * Multiple slots may share the same id — priority resolves which one is shown.\n */\n playerId: StreamPlayerId;\n\n /**\n * Whether this slot is considered high priority.\n * Among all slots registered for the same player id, `priority = true`\n * wins. If multiple high-priority slots exist, the last-registered wins.\n */\n priority: boolean;\n\n /**\n * The host element of the slot — used as the unique key in the manager.\n * The player element will be moved into this element when the slot is active.\n */\n element: HTMLElement;\n\n /**\n * Optional callback invoked when the user presses the \"back\" action inside the\n * PIP chrome while this slot's player is in PIP mode.\n */\n onPipBack?: () => void;\n};\n\nexport type StreamPlayerEntry = {\n /** The stream player id (e.g. `'youtube-dQw4w9WgXcQ'`). */\n id: StreamPlayerId;\n\n /** The live DOM element of the player (lives in the body container by default). */\n element: HTMLElement;\n\n /**\n * Called by the manager when the player is no longer needed (no slot claims it\n * and it is not in PIP mode). Use this to destroy the underlying component ref.\n */\n onDestroy?: () => void;\n\n /** Reactive thumbnail URL from the player, forwarded to PIP entries. */\n thumbnail?: Signal<string | null>;\n};\n\nexport type StreamPipEntry = {\n /** The player that is currently in PIP mode. */\n playerId: StreamPlayerId;\n\n /**\n * Optional callback invoked when the user presses the \"back\" action inside\n * the PIP chrome for this PIP entry.\n */\n onBack?: () => void;\n\n /** Reactive thumbnail URL for the player, used to render preview tiles. */\n thumbnail?: Signal<string | null>;\n\n /** The chrome component to use while this entry is active in PIP. */\n pipChromeComponent?: Type<unknown>;\n\n /** Appearance config for the active PIP chrome. */\n pipChromeConfig?: StreamPipChromeConfig;\n\n /**\n * The player's natural aspect ratio (width / height).\n * Used by the PIP chrome to resize the floating window and letterbox grid cells.\n * Defaults to `16 / 9` if not provided.\n */\n aspectRatio: number;\n};\n\nexport type StreamManager = {\n /** Returns true if at least one registered slot exists for the given player id. */\n hasSlotFor(playerId: StreamPlayerId): boolean;\n\n /**\n * Registers a stream player element with the manager. The element is appended\n * to the body-level manager container. If a slot is already waiting for this\n * player id, the player is immediately moved into it (FLIP-animated).\n */\n registerPlayer(entry: StreamPlayerEntry): void;\n\n /**\n * Unregisters a player and removes its element from the DOM.\n * Only call this when the player is not in PIP mode — PipManager handles\n * clean-up for orphaned players when PIP is closed.\n */\n unregisterPlayer(playerId: StreamPlayerId): void;\n\n /**\n * Registers a slot. If a player with a matching id already exists, it is\n * immediately moved into the best available slot (FLIP-animated).\n */\n registerSlot(entry: StreamSlotEntry): void;\n\n /**\n * Unregisters the slot identified by `element`. If the player was in this\n * slot and is not currently in PIP mode, it is moved to the next best slot\n * or fully unregistered when no slots remain. If the player IS in PIP mode,\n * it stays in PIP until deactivated.\n */\n unregisterSlot(element: HTMLElement): void;\n\n /**\n * Re-keys a player entry from `oldId` to `newId` without touching the DOM.\n * Use this when the video id changes on an existing slot (e.g. playlist navigation)\n * so the manager's internal tracking stays consistent.\n */\n transferPlayer(oldId: StreamPlayerId, newId: StreamPlayerId): void;\n\n /**\n * Returns the live DOM element for `playerId`, or `null` if the player is not\n * registered.\n */\n getPlayerElement(playerId: StreamPlayerId): HTMLElement | null;\n\n /**\n * Returns the full `StreamPlayerEntry` for `playerId`, or `null` if not\n * registered. Useful for reading `thumbnail` and other metadata.\n */\n getPlayerEntry(playerId: StreamPlayerId): StreamPlayerEntry | null;\n\n /**\n * Returns the `StreamSlotEntry` associated with `element`, or `null` if not\n * registered.\n */\n getSlot(element: HTMLElement): StreamSlotEntry | null;\n\n /**\n * Returns the highest-priority slot registered for `playerId`, or `null` if\n * none exists.\n */\n resolveBestSlot(playerId: StreamPlayerId): StreamSlotEntry | null;\n\n /**\n * Moves the player element into the manager's body container.\n * Used by PipManager for `pipActivate` and `parkPlayerElement`.\n */\n movePlayerToContainer(playerId: StreamPlayerId): void;\n\n /**\n * Marks the player as being in (or leaving) PIP mode. PipManager calls this\n * to keep the stream manager's internal routing decisions (e.g. `reassignPlayer`,\n * `unregisterSlot`) consistent with PIP state.\n */\n setPlayerInPip(playerId: StreamPlayerId, inPip: boolean): void;\n\n /** Returns `true` if the player is currently in PIP mode. */\n isPlayerInPip(playerId: StreamPlayerId): boolean;\n\n /**\n * Marks the player as currently running a PIP-exit animation so that\n * `reassignPlayer` does not interfere while the animation is in flight.\n */\n setPlayerAnimatingOut(playerId: StreamPlayerId, animating: boolean): void;\n};\n\nexport type PipManager = {\n /** Currently active PIP entries (one per player in PIP mode). */\n readonly pips: Signal<StreamPipEntry[]>;\n\n /** The chrome component to use for the currently active PIP chrome. */\n readonly pipChromeComponent: Signal<Type<unknown> | null>;\n\n /** Appearance config for the currently active PIP chrome. */\n readonly pipChromeConfig: Signal<StreamPipChromeConfig>;\n\n /**\n * The player id of the currently featured (visible) pip in single mode.\n * `null` when in grid mode or when no chrome is active.\n * Set by the chrome so that `pipDeactivate` can automatically choose\n * `scaleFadeIn` for non-featured pips instead of FLIP.\n */\n readonly featuredPipId: Signal<StreamPlayerId | null>;\n\n /**\n * Called by the chrome to keep `featuredPipId` in sync.\n * Pass `null` when switching to grid mode or when no pip is active.\n */\n setFeaturedPip(playerId: StreamPlayerId | null): void;\n\n /**\n * Increments each time `notifyBackPressed` is called. Useful for reactive\n * consumers (e.g. `viewChild` effects in slot placeholders) that need to\n * re-check `consumeBackPulse` without polling.\n */\n readonly backPulseCounter: Signal<number>;\n\n /**\n * Records that the user pressed the \"back\" button in the PIP chrome for this\n * player. The matching `etPipBringBack` button will consume this on its first\n * render and play an attention-pulse + scroll-into-view.\n */\n notifyBackPressed(playerId: StreamPlayerId): void;\n\n /**\n * Returns true (and clears the flag) if `notifyBackPressed` was called for this\n * player since the last consume. Used by `etPipBringBack` on init.\n */\n consumeBackPulse(playerId: StreamPlayerId): boolean;\n\n /**\n * Moves the player currently in the slot identified by `element` into the\n * body PIP container, activating PIP mode.\n */\n pipActivate(\n element: HTMLElement,\n options?: {\n onBack?: () => void;\n aspectRatio?: number;\n pipChromeComponent?: Type<unknown>;\n pipChromeConfig?: StreamPipChromeConfig;\n },\n ): void;\n\n /**\n * Deactivates PIP for `playerId` and moves the player back to the best\n * available slot (highest priority / last registered). If no slot exists, the\n * player is fully unregistered.\n *\n * Pass `{ skipAnimation: true }` to skip the exit animation.\n */\n pipDeactivate(\n playerId: StreamPlayerId,\n options?: { skipAnimation?: boolean; animation?: 'flip' | 'scaleFadeIn' },\n ): void;\n\n /**\n * Consumes and returns the rect captured just before `pipActivate` moved the player\n * to the body container. Returns `null` if no rect was stored.\n * Deleted on first read so the enter animation only fires once.\n */\n getInitialRect(playerId: StreamPlayerId): DOMRect | null;\n\n /**\n * Moves the player element back to the manager's body container without\n * changing PIP state. Call this before a pip-player component is destroyed so\n * the iframe remains connected to the document and `moveBefore` can preserve\n * its state when another pip-player picks it up immediately after.\n */\n parkPlayerElement(playerId: StreamPlayerId): void;\n};\n","import { Directive, ElementRef, afterRenderEffect, inject, signal } from '@angular/core';\nimport { signalHostElementIntersection } from '@ethlete/core';\nimport { injectPipManager } from '../../pip-manager';\nimport { STREAM_SLOT_PLAYER_ID_TOKEN } from '../../stream-manager.types';\nimport { animatePulse } from './internals/pip-animation';\n\n@Directive({\n selector: '[etPipBringBack]',\n host: {\n '(click)': 'bringBack($event)',\n },\n})\nexport class PipBringBackDirective {\n private slotPlayerId = inject(STREAM_SLOT_PLAYER_ID_TOKEN, { optional: true });\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private pipManager = injectPipManager();\n private intersection = signalHostElementIntersection();\n private pendingPulse = signal(false);\n\n constructor() {\n afterRenderEffect(() => {\n if (!this.pendingPulse()) return;\n if (!this.intersection().some((e) => e.isVisible)) return;\n this.pendingPulse.set(false);\n animatePulse(this.el.nativeElement);\n });\n }\n\n public pulse() {\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n this.pendingPulse.set(true);\n }\n\n public bringBack(event: Event) {\n event.stopPropagation();\n const playerId = this.slotPlayerId?.();\n if (playerId) this.pipManager.pipDeactivate(playerId);\n }\n}\n","import { Directive, ElementRef, effect, inject, input } from '@angular/core';\nimport { PIP_CHROME_REF_TOKEN } from './pip-chrome-ref.token';\nimport { PipCellData } from './pip-chrome-state';\n\n@Directive({\n selector: '[etPipCell]',\n host: {\n class: 'et-stream-pip-chrome__cell',\n '[style.--et-cell-col]': 'cell().col',\n '[style.--et-cell-row]': 'cell().row',\n '[style.--et-cell-exit-h]': 'cell().exitH',\n '[style.--et-cell-exit-v]': 'cell().exitV',\n '[attr.data-cell-player-id]': 'cell().playerId',\n '[class.et-stream-pip-chrome__cell--featured]': 'cell().isFeatured',\n '[attr.inert]': 'cell().inertAttr',\n '[attr.role]': 'cell().gridRole',\n '[attr.tabindex]': 'cell().gridTabIndex',\n '(click)': 'selectCell()',\n '(keydown.enter)': 'selectCell()',\n '(keydown.space)': 'selectCell()',\n },\n})\nexport class PipCellDirective {\n private chrome = inject(PIP_CHROME_REF_TOKEN);\n\n public cell = input.required<PipCellData>({ alias: 'etPipCell' });\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const el = elementRef.nativeElement;\n\n effect(() => {\n const playerId = this.cell().playerId;\n this.chrome.state.registerCell(playerId, el);\n\n return () => this.chrome.state.unregisterCell(playerId);\n });\n }\n\n public selectCell() {\n this.chrome.animations.selectCell(this.cell().playerId);\n }\n}\n","import { ElementRef, Signal, afterRenderEffect, effect, untracked } from '@angular/core';\nimport { injectRenderer } from '@ethlete/core';\nimport { StreamPlayerId } from '../../stream-manager.types';\nimport { PipWindowComponent } from '../pip-window.component';\nimport { animateElementTo, animateNewPipInSingleMode } from './internals/pip-animation';\nimport { PipChromeState } from './pip-chrome-state';\n\ntype FlipItem = { el: HTMLElement; fromRect: DOMRect };\n\ntype PipChromeAnimationRefs = {\n stageRef: Signal<ElementRef<HTMLElement> | undefined>;\n gridBtnRef: Signal<ElementRef<HTMLElement> | undefined>;\n pipWindowRef: Signal<PipWindowComponent | undefined>;\n};\n\nexport type PipChromeAnimations = {\n enterMultiView(): void;\n exitMultiView(): void;\n toggleMultiView(): void;\n selectCell(playerId: StreamPlayerId): void;\n};\n\nexport const createPipChromeAnimations = (state: PipChromeState, refs: PipChromeAnimationRefs): PipChromeAnimations => {\n const renderer = injectRenderer();\n\n let pendingFlips: FlipItem[] = [];\n let prevPipCount = 0;\n let prevPipIds = new Set<StreamPlayerId>();\n let pendingNewInSingleMode = new Set<StreamPlayerId>();\n\n const captureAllCellRects = (): FlipItem[] =>\n Array.from(state.cellElements.values()).map((el) => ({ el, fromRect: el.getBoundingClientRect() }));\n\n const enterMultiView = () => {\n if (state.multiView()) return;\n pendingFlips = captureAllCellRects();\n state.multiView.set(true);\n };\n\n const exitMultiView = () => {\n if (!state.multiView()) return;\n pendingFlips = captureAllCellRects();\n state.multiView.set(false);\n };\n\n const toggleMultiView = () => {\n if (state.multiView()) exitMultiView();\n else enterMultiView();\n };\n\n const selectCell = (playerId: StreamPlayerId) => {\n if (!state.multiView()) return;\n const newPip = state.allPips().find((p) => p.playerId === playerId);\n const newRatio = newPip?.aspectRatio ?? 16 / 9;\n const currentRatio = untracked(() => state.windowAspectRatio());\n if (newRatio !== currentRatio) {\n refs.pipWindowRef()?.posState.startModeTransition(260);\n }\n pendingFlips = captureAllCellRects();\n state.featuredId.set(playerId);\n state.multiView.set(false);\n };\n\n effect(() => {\n const pipCount = state.allPips().length;\n if (pipCount <= 1 && untracked(() => state.multiView())) {\n untracked(() => {\n pendingFlips = captureAllCellRects();\n state.multiView.set(false);\n });\n }\n });\n\n effect(() => {\n const newPips = state.allPips();\n const isGrid = state.multiView();\n const newCount = newPips.length;\n const oldCount = prevPipCount;\n prevPipCount = newCount;\n\n if (oldCount > 0 && newCount !== oldCount) {\n if (isGrid) {\n pendingFlips = captureAllCellRects();\n } else if (newCount > oldCount) {\n for (const pip of newPips) {\n if (!prevPipIds.has(pip.playerId)) {\n pendingNewInSingleMode.add(pip.playerId);\n }\n }\n }\n }\n\n prevPipIds = new Set(newPips.map((p) => p.playerId));\n });\n\n afterRenderEffect(() => {\n state.multiView();\n state.featuredPip();\n state.allPips();\n\n const newInSingle = pendingNewInSingleMode;\n if (newInSingle.size > 0) {\n pendingNewInSingleMode = new Set();\n const stageEl = refs.stageRef()?.nativeElement;\n if (stageEl) {\n const stageRect = stageEl.getBoundingClientRect();\n for (const playerId of newInSingle) {\n const cell = state.cellElements.get(playerId) ?? null;\n if (cell) {\n const pip = state.allPips().find((p) => p.playerId === playerId);\n animateNewPipInSingleMode({\n cell,\n stageEl,\n stageRect,\n aspectRatio: pip?.aspectRatio ?? 16 / 9,\n gridBtnEl: refs.gridBtnRef()?.nativeElement,\n renderer,\n showForcedTitleBar: () => refs.pipWindowRef()?.forcedTitleBar.set(true),\n hideForcedTitleBar: () => refs.pipWindowRef()?.forcedTitleBar.set(false),\n });\n }\n }\n }\n }\n\n const pending = pendingFlips;\n if (!pending.length) return;\n pendingFlips = [];\n\n for (const item of pending) {\n const toRect = item.el.getBoundingClientRect();\n if (toRect.width > 0 && toRect.height > 0) {\n animateElementTo({ el: item.el, fromRect: item.fromRect, toRect });\n }\n }\n });\n\n return { enterMultiView, exitMultiView, toggleMultiView, selectCell };\n};\n","import { Signal, WritableSignal, computed, effect, linkedSignal, signal, untracked } from '@angular/core';\nimport { injectPipManager } from '../../pip-manager';\nimport { StreamPipEntry, StreamPlayerId } from '../../stream-manager.types';\nimport { PipWindowComponent } from '../pip-window.component';\n\nexport type PipCellData = {\n /** The underlying pip entry. */\n pip: StreamPipEntry;\n /** Shortcut to `pip.playerId`. */\n playerId: StreamPlayerId;\n /** CSS grid column (1-based). */\n col: number;\n /** CSS grid row (1-based). */\n row: number;\n /** Horizontal exit direction offset (used for CSS `--et-cell-exit-h`). */\n exitH: number;\n /** Vertical exit direction offset (used for CSS `--et-cell-exit-v`). */\n exitV: number;\n /** Whether this is the currently featured pip. */\n isFeatured: boolean;\n /** `''` when this cell should be inert (single mode, non-featured), `null` otherwise. */\n inertAttr: '' | null;\n /** `''` when the player inside this cell should be inert, `null` otherwise. */\n playerInertAttr: '' | null;\n /** `'button'` in grid mode (cells are interactive), `null` in single mode. */\n gridRole: 'button' | null;\n /** `0` in grid mode, `null` in single mode. */\n gridTabIndex: 0 | null;\n};\n\nexport type PipChromeState = {\n featuredId: WritableSignal<StreamPlayerId | null>;\n multiView: WritableSignal<boolean>;\n isExiting: WritableSignal<boolean>;\n\n allPips: Signal<StreamPipEntry[]>;\n /** The currently featured pip, or `undefined` when none is active. */\n featuredPip: Signal<StreamPipEntry | undefined>;\n gridCols: Signal<number>;\n gridRows: Signal<number>;\n /** Per-cell layout data — iterate over this in `@for` instead of calling methods. */\n cells: Signal<PipCellData[]>;\n /** True when more than one pip is active (shows the grid-toggle button). */\n hasMultiplePips: Signal<boolean>;\n /** True when the back button should be visible. */\n showBackButton: Signal<boolean>;\n /** Accessible label for the grid toggle button. */\n gridToggleLabel: Signal<string>;\n /** The natural aspect ratio of the currently featured pip. */\n featuredAspectRatio: Signal<number>;\n /**\n * The aspect ratio to apply to the pip window.\n * In single mode: tracks the featured pip's ratio.\n * In grid mode: locked to the ratio at the time grid was entered; unlocks when a pip is removed.\n */\n windowAspectRatio: Signal<number>;\n\n setFeatured(playerId: StreamPlayerId): void;\n /** Closes all pip entries, optionally animating via the pip window. */\n close(event: Event, pipWindow: PipWindowComponent | undefined): void;\n\n /** @internal Map from playerId to the host HTMLElement. Populated by PipCellDirective. */\n cellElements: Map<StreamPlayerId, HTMLElement>;\n /** @internal */\n registerCell(playerId: StreamPlayerId, el: HTMLElement): void;\n /** @internal */\n unregisterCell(playerId: StreamPlayerId): void;\n};\n\nexport const createPipChromeState = (): PipChromeState => {\n const pipManager = injectPipManager();\n\n const featuredId = signal<StreamPlayerId | null>(null);\n const multiView = signal(false);\n const isExiting = signal(false);\n\n const allPips = computed(() => pipManager.pips());\n\n const featuredPip = computed((): StreamPipEntry | undefined => {\n const pips = pipManager.pips();\n if (!pips.length) return undefined;\n const id = featuredId();\n if (id) {\n const match = pips.find((p) => p.playerId === id);\n if (match) return match;\n }\n return pips[0];\n });\n\n const gridCols = computed(() => Math.max(1, Math.ceil(Math.sqrt(allPips().length))));\n const gridRows = computed(() => Math.max(1, Math.ceil(allPips().length / gridCols())));\n\n const cells = computed((): PipCellData[] => {\n const pips = allPips();\n const cols = gridCols();\n const featured = featuredPip();\n const isGrid = multiView();\n\n const fIdx = featured\n ? Math.max(\n 0,\n pips.findIndex((p) => p.playerId === featured.playerId),\n )\n : 0;\n const fCol = (fIdx % cols) + 1;\n const fRow = Math.floor(fIdx / cols) + 1;\n\n return pips.map((pip, i) => {\n const col = (i % cols) + 1;\n const row = Math.floor(i / cols) + 1;\n const isFeatured = pip.playerId === featured?.playerId;\n const isInert = !isGrid && !isFeatured;\n\n return {\n pip,\n playerId: pip.playerId,\n col,\n row,\n exitH: isGrid ? 0 : col !== fCol ? col - fCol : 0,\n exitV: isGrid ? 0 : row !== fRow ? row - fRow : 0,\n isFeatured,\n inertAttr: isInert ? '' : null,\n playerInertAttr: isGrid || !isFeatured ? '' : null,\n gridRole: isGrid ? 'button' : null,\n gridTabIndex: isGrid ? 0 : null,\n };\n });\n });\n\n const hasMultiplePips = computed(() => allPips().length > 1);\n const showBackButton = computed(() => !!featuredPip()?.onBack && !multiView());\n const gridToggleLabel = computed(() => (multiView() ? 'Single view' : 'Grid view'));\n\n const featuredAspectRatio = computed(() => featuredPip()?.aspectRatio ?? 16 / 9);\n\n let prevMultiPipCount = allPips().length;\n const windowAspectRatio = linkedSignal<{ multi: boolean; exiting: boolean; ar: number; pipCount: number }, number>({\n source: () => ({ multi: multiView(), exiting: isExiting(), ar: featuredAspectRatio(), pipCount: allPips().length }),\n computation: ({ multi, exiting, ar, pipCount }, prev) => {\n const pipCountChanged = pipCount !== prevMultiPipCount;\n prevMultiPipCount = pipCount;\n return !multi || exiting || pipCountChanged ? ar : (prev?.value ?? ar);\n },\n });\n\n effect(() => {\n const pips = pipManager.pips();\n const id = featuredId();\n if (id && !pips.find((p) => p.playerId === id)) {\n untracked(() => featuredId.set(null));\n }\n });\n\n effect(() => {\n const featured = featuredPip();\n pipManager.setFeaturedPip(multiView() ? null : (featured?.playerId ?? null));\n });\n\n const setFeatured = (playerId: StreamPlayerId) => {\n featuredId.set(playerId);\n };\n\n const cellElements = new Map<StreamPlayerId, HTMLElement>();\n\n const registerCell = (playerId: StreamPlayerId, el: HTMLElement) => {\n cellElements.set(playerId, el);\n };\n\n const unregisterCell = (playerId: StreamPlayerId) => {\n cellElements.delete(playerId);\n };\n\n const close = (event: Event, pipWindow: PipWindowComponent | undefined) => {\n event.stopPropagation();\n const pips = untracked(() => allPips());\n\n if (!pipWindow) {\n for (const pip of pips) pipManager.pipDeactivate(pip.playerId);\n\n return;\n }\n\n isExiting.set(true);\n pipWindow.posState.animateExit(() => {\n for (const pip of pips) pipManager.pipDeactivate(pip.playerId, { animation: 'scaleFadeIn' });\n isExiting.set(false);\n });\n };\n\n return {\n featuredId,\n multiView,\n isExiting,\n allPips,\n featuredPip,\n gridCols,\n gridRows,\n cells,\n hasMultiplePips,\n showBackButton,\n gridToggleLabel,\n featuredAspectRatio,\n windowAspectRatio,\n setFeatured,\n close,\n cellElements,\n registerCell,\n unregisterCell,\n };\n};\n","import { Directive, input } from '@angular/core';\nimport { DragHandleDirective } from '@ethlete/core';\n\n@Directive({\n selector: '[etPipCollapseOverlay]',\n host: {\n class: 'et-pip-window__collapse-overlay',\n '(pointerdown)': 'dragHandle().startGesture($event)',\n },\n})\nexport class PipCollapseOverlayDirective {\n public dragHandle = input.required<DragHandleDirective>();\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[etPipTitleBar]',\n})\nexport class PipTitleBarTemplateDirective {\n public template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Directive, computed, inject } from '@angular/core';\nimport { DragHandleDirective, signalHostElementDimensions } from '@ethlete/core';\n\n@Directive({\n selector: '[etPipTitleBar]',\n hostDirectives: [\n {\n directive: DragHandleDirective,\n inputs: ['disabled: dragDisabled'],\n outputs: ['dragTapped', 'dragStarted', 'dragMoved', 'dragEnded'],\n },\n ],\n host: {\n class: 'et-pip-window__title-bar',\n },\n})\nexport class PipTitleBarDirective {\n public dragHandle = inject(DragHandleDirective);\n private dims = signalHostElementDimensions();\n\n public titleBarH = computed(() => this.dims().client?.height ?? 32);\n}\n","import { Directive, inject } from '@angular/core';\nimport { PIP_CHROME_REF_TOKEN } from './pip-chrome-ref.token';\n\n@Directive({\n selector: '[etPipGridToggle]',\n host: {\n class: 'et-stream-pip-chrome__view-btn',\n type: 'button',\n '[attr.aria-label]': 'chrome?.state?.gridToggleLabel()',\n '[attr.title]': 'chrome?.state?.gridToggleLabel()',\n '(click)': 'toggle($event)',\n },\n})\nexport class PipGridToggleDirective {\n protected chrome = inject(PIP_CHROME_REF_TOKEN, { optional: true });\n\n public toggle(event: Event) {\n event.stopPropagation();\n this.chrome?.animations.toggleMultiView();\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { PIP_CHROME_REF_TOKEN } from './pip-chrome-ref.token';\n\n@Directive({\n selector: '[etPipStage]',\n host: {\n class: 'et-stream-pip-chrome__stage',\n '[style.--et-pip-grid-cols]': 'chrome.state.gridCols()',\n '[style.--et-pip-grid-rows]': 'chrome.state.gridRows()',\n },\n})\nexport class PipStageDirective {\n protected chrome = inject(PIP_CHROME_REF_TOKEN);\n}\n","import { InjectionToken, Signal } from '@angular/core';\n\nexport const PIP_WINDOW_ASPECT_RATIO_TOKEN = new InjectionToken<Signal<number>>('PIP_WINDOW_ASPECT_RATIO_TOKEN');\n","import {\n ChangeDetectionStrategy,\n Component,\n DOCUMENT,\n DestroyRef,\n ElementRef,\n ViewEncapsulation,\n afterRenderEffect,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { injectRenderer } from '@ethlete/core';\nimport { injectPipManager } from '../pip-manager';\nimport { injectStreamManager } from '../stream-manager';\nimport { StreamPipEntry } from '../stream-manager.types';\nimport { animateWithFixedWrapper } from './headless/internals/pip-animation';\nimport { PipCellDirective } from './headless/pip-cell.directive';\nimport { PIP_ENTRY_TOKEN } from './headless/pip-entry.token';\n\n@Component({\n selector: 'et-pip-player',\n template: `\n @if (thumbnailUrl(); as url) {\n <div [class.et-pip-player__thumb-wrapper--hidden]=\"!isThumbVisible()\" class=\"et-pip-player__thumb-wrapper\">\n <img [src]=\"url\" class=\"et-pip-player__preview-thumb\" alt=\"\" aria-hidden=\"true\" />\n </div>\n }\n `,\n styleUrl: './pip-player.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: PIP_ENTRY_TOKEN,\n useFactory: () => {\n const player = inject(PipPlayerComponent);\n return player.resolvedEntry;\n },\n },\n ],\n host: {\n class: 'et-pip-player',\n '[class.et-pip-player--ready]': 'isReady()',\n '[attr.data-pip-player-id]': 'resolvedEntry().playerId',\n '[attr.inert]': 'pipCell ? pipCell.cell().playerInertAttr : null',\n '[style.--et-pip-player-ratio]': 'resolvedEntry()?.aspectRatio ?? (16 / 9)',\n },\n})\nexport class PipPlayerComponent {\n private document = inject(DOCUMENT);\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n protected pipCell = inject(PipCellDirective, { optional: true });\n\n public entry = input<StreamPipEntry>();\n public showThumbnail = input<boolean>();\n private streamManager = injectStreamManager();\n private pipManager = injectPipManager();\n private renderer = injectRenderer();\n public isReady = signal(false);\n\n public resolvedEntry = computed(\n () => this.entry() ?? this.pipCell?.cell().pip ?? (null as unknown as StreamPipEntry),\n );\n\n public thumbnailUrl = computed(() => this.resolvedEntry().thumbnail?.() ?? null);\n\n public isThumbVisible = computed(\n () => this.showThumbnail() ?? (this.pipCell ? !this.pipCell.cell().isFeatured : false),\n );\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.pipManager.parkPlayerElement(this.resolvedEntry().playerId));\n\n afterRenderEffect(() => {\n const pip = this.resolvedEntry();\n const entryEl = this.el.nativeElement;\n const { playerId } = pip;\n\n const playerEl = this.streamManager.getPlayerElement(playerId);\n if (!playerEl) return;\n if (playerEl.parentElement === entryEl) {\n return;\n }\n\n this.isReady.set(false);\n\n const fromRect = this.pipManager.getInitialRect(playerId);\n\n queueMicrotask(() => {\n if (!entryEl.isConnected) return;\n if (playerEl.parentElement === entryEl) {\n this.isReady.set(true);\n\n return;\n }\n\n const toRect = entryEl.getBoundingClientRect();\n\n if (fromRect && fromRect.width > 0 && fromRect.height > 0 && toRect.width > 0 && toRect.height > 0) {\n this.renderer.setStyle(entryEl, { visibility: 'hidden' });\n\n animateWithFixedWrapper({\n playerEl,\n fromRect,\n toRect,\n document: this.document,\n renderer: this.renderer,\n onFinish: () => {\n this.renderer.moveBefore({ newParent: entryEl, child: playerEl, before: entryEl.firstElementChild });\n this.renderer.setStyle(entryEl, { visibility: null });\n this.isReady.set(true);\n },\n });\n } else {\n this.renderer.moveBefore({ newParent: entryEl, child: playerEl, before: entryEl.firstElementChild });\n this.isReady.set(true);\n }\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n inject,\n viewChild,\n} from '@angular/core';\nimport { WINDOW_CONTROL_BUTTON_KINDS, WINDOW_CONTROL_BUTTON_SIZES, WindowControlButtonComponent } from '../../button';\nimport {\n ARROW_OUT_UP_RIGHT_ICON,\n FOCUS_FRAME_ICON,\n GRID_2X2_ICON,\n ICON_IMPORTS,\n TIMES_ICON,\n provideIcons,\n} from '../../icon';\nimport { injectPipManager } from '../pip-manager';\nimport { PipBackDirective } from './headless/pip-back.directive';\nimport { PipCellDirective } from './headless/pip-cell.directive';\nimport { createPipChromeAnimations } from './headless/pip-chrome-animations';\nimport { PIP_CHROME_REF_TOKEN, PipChromeRef } from './headless/pip-chrome-ref.token';\nimport { createPipChromeState } from './headless/pip-chrome-state';\nimport { PipCloseDirective } from './headless/pip-close.directive';\nimport { PipGridToggleDirective } from './headless/pip-grid-toggle.directive';\nimport { PipStageDirective } from './headless/pip-stage.directive';\nimport { PipTitleBarTemplateDirective } from './headless/pip-title-bar-template.directive';\nimport { PIP_WINDOW_ASPECT_RATIO_TOKEN } from './headless/pip-window-aspect-ratio.token';\nimport { PipPlayerComponent } from './pip-player.component';\nimport { PipWindowComponent } from './pip-window.component';\n\n@Component({\n selector: 'et-stream-pip-chrome',\n templateUrl: './pip-chrome.component.html',\n styleUrl: './pip-chrome.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ...ICON_IMPORTS,\n PipWindowComponent,\n PipPlayerComponent,\n PipBackDirective,\n PipGridToggleDirective,\n PipStageDirective,\n PipTitleBarTemplateDirective,\n PipCellDirective,\n PipCloseDirective,\n WindowControlButtonComponent,\n ],\n providers: [\n provideIcons(ARROW_OUT_UP_RIGHT_ICON, FOCUS_FRAME_ICON, GRID_2X2_ICON, TIMES_ICON),\n { provide: PIP_CHROME_REF_TOKEN, useExisting: StreamPipChromeComponent },\n {\n provide: PIP_WINDOW_ASPECT_RATIO_TOKEN,\n useFactory: () => {\n const chrome = inject(StreamPipChromeComponent);\n return chrome.state.windowAspectRatio;\n },\n },\n ],\n host: {\n class: 'et-stream-pip-chrome',\n '[class.et-stream-pip-chrome--grid]': 'state.multiView()',\n },\n})\nexport class StreamPipChromeComponent implements PipChromeRef {\n public stageRef = viewChild<PipStageDirective, ElementRef<HTMLElement>>(PipStageDirective, { read: ElementRef });\n public pipWindowRef = viewChild(PipWindowComponent);\n public gridBtnRef = viewChild<PipGridToggleDirective, ElementRef<HTMLElement>>(PipGridToggleDirective, {\n read: ElementRef,\n });\n public pipManager = injectPipManager();\n\n public state = createPipChromeState();\n public animations = createPipChromeAnimations(this.state, {\n stageRef: this.stageRef,\n gridBtnRef: this.gridBtnRef,\n pipWindowRef: this.pipWindowRef,\n });\n\n public readonly CLOSE_KIND = WINDOW_CONTROL_BUTTON_KINDS.CLOSE;\n public controlsColor = computed(() => this.pipManager.pipChromeConfig().controlsColor);\n public readonly WINDOW_CONTROL_BUTTON_SIZE = WINDOW_CONTROL_BUTTON_SIZES.SM;\n}\n","<et-pip-window>\n <ng-template etPipTitleBar>\n @if (state.showBackButton()) {\n <button [color]=\"controlsColor()\" [size]=\"WINDOW_CONTROL_BUTTON_SIZE\" et-window-control-button etPipBack>\n <i etIcon=\"et-arrow-out-up-right\"></i>\n </button>\n }\n <span class=\"et-pip-window__title-bar-spacer\"></span>\n @if (state.hasMultiplePips()) {\n <button\n [color]=\"controlsColor()\"\n [pressed]=\"state.multiView()\"\n [size]=\"WINDOW_CONTROL_BUTTON_SIZE\"\n et-window-control-button\n etPipGridToggle\n >\n @if (state.multiView()) {\n <i etIcon=\"et-focus-frame\"></i>\n } @else {\n <i etIcon=\"et-grid-2x2\"></i>\n }\n </button>\n }\n <button\n [color]=\"controlsColor()\"\n [kind]=\"CLOSE_KIND\"\n [size]=\"WINDOW_CONTROL_BUTTON_SIZE\"\n et-window-control-button\n etPipClose\n >\n <i etIcon=\"et-times\"></i>\n </button>\n </ng-template>\n\n <div etPipStage>\n @for (c of state.cells(); track c.playerId) {\n <div [etPipCell]=\"c\">\n <et-pip-player />\n </div>\n }\n </div>\n</et-pip-window>\n","import { Type } from '@angular/core';\nimport { createStaticRootProvider } from '@ethlete/core';\nimport { StreamPlayerErrorComponent } from './error';\nimport { StreamPlayerLoadingComponent } from './loading';\nimport { StreamPipChromeComponent } from './pip/pip-chrome.component';\nimport { DEFAULT_PIP_CHROME_CONFIG, StreamPipChromeConfig } from './pip/pip-chrome.config';\n\nexport type StreamPipWindowConfig = {\n /** Minimum allowed width in px. @default 160 */\n minWidth: number;\n /** Maximum allowed width in px. @default 640 */\n maxWidth: number;\n /** Minimum allowed height in px. @default 90 */\n minHeight: number;\n /** Maximum allowed height in px. @default 360 */\n maxHeight: number;\n /** Desired initial size (longest side) in px. @default 400 */\n desiredSize: number;\n /** Height in px of the collapsed peek strip. @default 40 */\n collapsePeek: number;\n /** Minimum distance from the viewport edge in px. @default 8 */\n viewportPadding: number;\n};\n\n/**\n * Default pip window sizing / layout config.\n * Spread this when you only want to override a subset of values:\n * `{ ...DEFAULT_PIP_WINDOW_CONFIG, minWidth: 200 }`\n */\nexport const DEFAULT_PIP_WINDOW_CONFIG: StreamPipWindowConfig = {\n minWidth: 160,\n maxWidth: 640,\n minHeight: 90,\n maxHeight: 360,\n desiredSize: 400,\n collapsePeek: 40,\n viewportPadding: 8,\n};\n\nexport type StreamConfig = {\n /**\n * An optional consent component to automatically render around stream player components.\n * When set, any stream player component will use this component as its consent gate.\n *\n * The component must have `[etStreamConsent]` as a `hostDirective` (or equivalent consent\n * directive) so the stream player can read the consent state from the injector tree.\n */\n consentComponent: Type<unknown> | null;\n\n /**\n * An optional component to render inside every player slot as a PIP overlay.\n */\n pipSlotPlaceholderComponent: Type<unknown> | null;\n\n /**\n * An optional component shown while the player is initializing (before `isReady`).\n * It is automatically destroyed once the player fires its ready event.\n *\n * @default `StreamPlayerLoadingComponent`\n */\n loadingComponent: Type<unknown>;\n\n /**\n * An optional component shown when the player fails to load (e.g. SDK blocked by an ad-blocker).\n * It is automatically destroyed when the player is retried and hid again when retry succeeds.\n *\n * @default `StreamPlayerErrorComponent`\n */\n errorComponent: Type<unknown>;\n\n /**\n * The component rendered by `PipManager` when at least one pip is active.\n * It is automatically created when the first pip activates and destroyed\n * after the last pip exits (including exit animations).\n *\n * Supply a custom component that provides `PIP_CHROME_REF_TOKEN` to fully\n * replace the built-in pip chrome UI.\n *\n * @default `StreamPipChromeComponent`\n */\n pipChromeComponent: Type<unknown>;\n\n /**\n * Sizing and layout defaults for the floating pip window.\n * Override individual values by spreading `DEFAULT_PIP_WINDOW_CONFIG`:\n * `{ ...DEFAULT_PIP_WINDOW_CONFIG, minWidth: 200 }`\n *\n * @default `DEFAULT_PIP_WINDOW_CONFIG`\n */\n pipWindow: StreamPipWindowConfig;\n\n /**\n * Appearance defaults for the built-in pip chrome UI.\n * Custom `pipChromeComponent` implementations may ignore this entirely.\n *\n * @default `DEFAULT_PIP_CHROME_CONFIG`\n */\n pipChrome: StreamPipChromeConfig;\n};\n\nconst DEFAULT_STREAM_CONFIG: StreamConfig = {\n consentComponent: null,\n pipSlotPlaceholderComponent: null,\n loadingComponent: StreamPlayerLoadingComponent,\n errorComponent: StreamPlayerErrorComponent,\n pipChromeComponent: StreamPipChromeComponent,\n pipWindow: DEFAULT_PIP_WINDOW_CONFIG,\n pipChrome: DEFAULT_PIP_CHROME_CONFIG,\n};\n\nconst [provideStreamConfigBase, injectStreamConfigBase] = createStaticRootProvider<StreamConfig>(\n DEFAULT_STREAM_CONFIG,\n {\n name: 'StreamConfig',\n },\n);\n\nexport const injectStreamConfig = injectStreamConfigBase;\n\nexport const createStreamConfig = (valueOverride: Partial<StreamConfig> = {}) => ({\n ...DEFAULT_STREAM_CONFIG,\n ...valueOverride,\n pipWindow: {\n ...DEFAULT_PIP_WINDOW_CONFIG,\n ...(valueOverride.pipWindow ?? {}),\n },\n pipChrome: {\n ...DEFAULT_PIP_CHROME_CONFIG,\n ...(valueOverride.pipChrome ?? {}),\n },\n});\n\nexport const provideStreamConfig = (valueOverride: Partial<StreamConfig> = {}) =>\n provideStreamConfigBase(createStreamConfig(valueOverride));\n","import { Directive, inject, signal } from '@angular/core';\nimport { injectStreamConfig } from '../../stream-config';\nimport { PIP_WINDOW_ASPECT_RATIO_TOKEN } from './pip-window-aspect-ratio.token';\n\n@Directive({})\nexport class PipWindowParamsDirective {\n public aspectRatio = inject(PIP_WINDOW_ASPECT_RATIO_TOKEN);\n private config = injectStreamConfig();\n\n public minWidth = signal(this.config.pipWindow.minWidth);\n public maxWidth = signal(this.config.pipWindow.maxWidth);\n public minHeight = signal(this.config.pipWindow.minHeight);\n public maxHeight = signal(this.config.pipWindow.maxHeight);\n public desiredSize = signal(this.config.pipWindow.desiredSize);\n public collapsePeek = signal(this.config.pipWindow.collapsePeek);\n public viewportPadding = signal(this.config.pipWindow.viewportPadding);\n}\n","import {\n DOCUMENT,\n DestroyRef,\n ElementRef,\n Signal,\n WritableSignal,\n afterRenderEffect,\n computed,\n effect,\n inject,\n signal,\n untracked,\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n DragHandleDirective,\n DragMoveEvent,\n ResizeHandlesComponent,\n ResizeMoveEvent,\n injectRenderer,\n injectViewportSize,\n} from '@ethlete/core';\nimport { exhaustMap, finalize, switchMap, take, takeUntil, tap, timer } from 'rxjs';\nimport { PipWindowParamsDirective } from '../pip-window-params.directive';\nimport { animateScaleFadeOut } from './pip-animation';\nimport { PipWindowSize } from './pip-window-size';\n\nconst SNAP_DURATION_MS = 150;\nconst SNAP_EASE = 'cubic-bezier(0.4,0,0.2,1)';\n\nexport type PipWindowPositionOptions = {\n params: PipWindowParamsDirective;\n titleBarH: Signal<number>;\n size: PipWindowSize;\n resizeHandles: Signal<ResizeHandlesComponent>;\n dragHandle: Signal<DragHandleDirective>;\n forcedTitleBar: WritableSignal<boolean>;\n};\n\nexport type PipWindowPosition = {\n position: Signal<string>;\n positionInitialized: WritableSignal<boolean>;\n isCollapsed: WritableSignal<boolean>;\n isDragging: Signal<boolean>;\n isResizing: Signal<boolean>;\n initPosition(): void;\n checkAndCollapse(): void;\n snapToViewport(): void;\n animateExit(callback: () => void): void;\n startModeTransition(duration?: number): void;\n};\n\nexport const createPipWindowPosition = (options: PipWindowPositionOptions): PipWindowPosition => {\n const { params, titleBarH, size, resizeHandles, dragHandle, forcedTitleBar } = options;\n\n const el = inject<ElementRef<HTMLElement>>(ElementRef);\n const renderer = injectRenderer();\n const document = inject(DOCUMENT);\n const destroyRef = inject(DestroyRef);\n const viewportSize = injectViewportSize();\n\n const isDragging = computed(() => dragHandle().isDragging());\n const isResizing = computed(() => resizeHandles().isResizing());\n\n const pos = signal({ x: 0, y: 0 });\n const positionInitialized = signal(false);\n const isCollapsed = signal(false);\n\n let resizeBaseW = 0;\n let resizeBaseH = 0;\n let resizeBaseX = 0;\n let resizeBaseY = 0;\n\n const snapToPosition = (newX: number, newY: number) => {\n renderer.setStyle(el.nativeElement, { transition: `translate ${SNAP_DURATION_MS}ms ${SNAP_EASE}` });\n pos.set({ x: newX, y: newY });\n timer(SNAP_DURATION_MS + 10)\n .pipe(\n take(1),\n tap(() => renderer.removeStyle(el.nativeElement, 'transition')),\n )\n .subscribe();\n };\n\n const snapTo = ({ x, y, collapsed = false }: { x: number; y: number; collapsed?: boolean }) => {\n renderer.setStyle(el.nativeElement, { transition: `translate ${SNAP_DURATION_MS}ms ${SNAP_EASE}` });\n pos.set({ x, y });\n if (collapsed) isCollapsed.set(true);\n timer(SNAP_DURATION_MS + 10)\n .pipe(\n take(1),\n tap(() => renderer.removeStyle(el.nativeElement, 'transition')),\n )\n .subscribe();\n };\n\n const snapToViewport = () => {\n const elem = el.nativeElement;\n const rect = elem.getBoundingClientRect();\n const vw = viewportSize().width;\n const vh = viewportSize().height;\n const pad = params.viewportPadding();\n const { x: lx, y: ly } = pos();\n let newX = lx;\n let newY = ly;\n\n if (rect.left < pad) newX += pad - rect.left;\n else if (rect.right > vw - pad) newX -= rect.right - (vw - pad);\n\n if (rect.top < pad) newY += pad - rect.top;\n else if (rect.bottom > vh - pad) newY -= rect.bottom - (vh - pad);\n\n isCollapsed.set(false);\n snapTo({ x: newX, y: newY });\n };\n\n const checkAndCollapse = () => {\n const elem = el.nativeElement;\n const rect = elem.getBoundingClientRect();\n const vw = viewportSize().width;\n const vh = viewportSize().height;\n const peek = params.collapsePeek();\n\n const offLeft = Math.max(0, peek - rect.right);\n const offRight = Math.max(0, rect.left - (vw - peek));\n const offTop = Math.max(0, peek - rect.bottom);\n const offBottom = Math.max(0, rect.top - (vh - peek));\n\n const rawOffLeft = Math.max(0, -rect.left);\n const rawOffRight = Math.max(0, rect.right - vw);\n const rawOffTop = Math.max(0, -rect.top);\n const rawOffBottom = Math.max(0, rect.bottom - vh);\n\n const rawOffX = Math.max(rawOffLeft, rawOffRight);\n const rawOffY = Math.max(rawOffTop, rawOffBottom);\n\n if (rawOffX > rect.width * 0.5 || rawOffY > rect.height * 0.5) {\n const collapseOnX = rawOffX / rect.width >= rawOffY / rect.height;\n const { x: lx, y: ly } = pos();\n let newX = lx;\n let newY = ly;\n\n if (collapseOnX) {\n newX = rawOffLeft > rawOffRight ? lx + (peek - rect.right) : lx + (vw - peek - rect.left);\n } else {\n newY = rawOffTop > rawOffBottom ? ly + (peek - rect.bottom) : ly + (vh - peek - rect.top);\n }\n\n snapTo({ x: newX, y: newY, collapsed: true });\n } else if (offLeft > 0 || offRight > 0 || offTop > 0 || offBottom > 0) {\n const { x: lx, y: ly } = pos();\n const pad = params.viewportPadding();\n let newX = lx;\n let newY = ly;\n if (offLeft > 0) newX += offLeft;\n else if (offRight > 0) newX -= offRight;\n if (offTop > 0) newY += offTop;\n else if (offBottom > 0) newY -= offBottom;\n newX = Math.max(pad, Math.min(vw - pad - rect.width, newX));\n newY = Math.max(pad, Math.min(vh - pad - rect.height, newY));\n snapToPosition(newX, newY);\n } else {\n snapToViewport();\n }\n };\n\n let positionUpdateBlocked = false;\n let pendingPositionApply: (() => void) | null = null;\n\n let stickyLeft = false;\n let stickyRight = false;\n let stickyTop = false;\n let stickyBottom = false;\n\n let lastKnownW: number | null = null;\n\n const deriveStickyEdges = () => {\n const { x: lx, y: ly } = pos();\n const { w, h } = size.get();\n if (w === null || h === null) return;\n const vw = viewportSize().width;\n const vh = viewportSize().height;\n const pad = params.viewportPadding();\n stickyLeft = lx <= pad;\n stickyRight = lx + w >= vw - pad;\n stickyTop = ly <= pad;\n stickyBottom = ly + h >= vh - pad;\n };\n\n const handlePositionAfterResize = () => {\n const { w: newW, h: newH } = size.get();\n if (newW === null || newH === null) return;\n\n if (isDragging() || isResizing()) return;\n\n if (isCollapsed()) {\n if (positionInitialized()) checkAndCollapse();\n\n return;\n }\n\n if (!positionInitialized()) return;\n\n const { x: lx, y: ly } = pos();\n const vw = viewportSize().width;\n const vh = viewportSize().height;\n const pad = params.viewportPadding();\n\n let newX: number;\n let newY: number;\n\n if (stickyRight) {\n newX = vw - pad - newW;\n } else if (stickyLeft) {\n newX = pad;\n } else if (lastKnownW !== null && newW < lastKnownW && lx + lastKnownW / 2 >= vw / 2) {\n newX = Math.max(pad, Math.min(vw - pad - newW, lx + lastKnownW - newW));\n } else {\n newX = Math.max(pad, Math.min(vw - pad - newW, lx));\n }\n\n if (stickyBottom) {\n newY = vh - pad - newH;\n } else if (stickyTop) {\n newY = pad;\n } else {\n newY = Math.max(pad, Math.min(vh - pad - newH, ly));\n }\n\n if (newX === lx && newY === ly) return;\n\n if (positionUpdateBlocked) {\n pendingPositionApply = () => {\n snapToPosition(newX, newY);\n deriveStickyEdges();\n };\n } else {\n pos.set({ x: newX, y: newY });\n deriveStickyEdges();\n }\n };\n\n const startInteraction = () => {\n renderer.setStyle(document.body, { userSelect: 'none' });\n renderer.addClass(document.body, 'et-pip-interacting');\n };\n\n const endInteraction = () => {\n renderer.setStyle(document.body, { userSelect: null });\n renderer.removeClass(document.body, 'et-pip-interacting');\n };\n\n const applyInitialSize = () => {\n if (size.get().w !== null) return;\n const ratio = params.aspectRatio();\n const vw = document.documentElement.clientWidth;\n const vh = document.documentElement.clientHeight;\n const tbH = titleBarH();\n const desired = params.desiredSize();\n const pad = params.viewportPadding();\n const availW = Math.max(0, vw - pad * 2);\n const availH = Math.max(0, vh - pad * 2);\n let initW: number;\n if (ratio !== null && ratio > 0) {\n if (ratio < 1) {\n const targetH = Math.min(desired, availH);\n const maxContentH = Math.max(0, targetH - tbH);\n initW = Math.max(params.minWidth(), maxContentH * ratio);\n } else {\n const maxContentH = Math.max(0, availH - tbH);\n const maxWFromH = maxContentH * ratio;\n initW = Math.min(desired, params.maxWidth(), availW, maxWFromH);\n initW = Math.max(params.minWidth(), initW);\n }\n } else {\n initW = Math.min(desired, params.maxWidth(), availW);\n initW = Math.max(params.minWidth(), initW);\n }\n const initH = ratio !== null && ratio > 0 ? tbH + initW / ratio : null;\n size.update((s) => ({ w: s.w ?? initW, h: s.h ?? initH }));\n };\n\n const initPosition = () => {\n if (positionInitialized()) return;\n applyInitialSize();\n const rect = el.nativeElement.getBoundingClientRect();\n pos.set({ x: rect.left, y: rect.top });\n\n positionInitialized.set(true);\n deriveStickyEdges();\n };\n\n afterRenderEffect(() => {\n untracked(() => applyInitialSize());\n });\n\n const startDrag = () => {\n initPosition();\n isCollapsed.set(false);\n startInteraction();\n };\n\n const endDrag = () => {\n endInteraction();\n checkAndCollapse();\n deriveStickyEdges();\n };\n\n const applyDragStep = ({ stepX, stepY }: DragMoveEvent) => {\n const elem = el.nativeElement;\n const vw = viewportSize().width;\n const vh = viewportSize().height;\n const peek = params.collapsePeek();\n const pad = params.viewportPadding();\n const minX = Math.min(pad - elem.offsetWidth, peek - elem.offsetWidth);\n const maxX = Math.max(vw - pad, vw - peek);\n const minY = Math.min(pad - elem.offsetHeight, peek - elem.offsetHeight);\n const maxY = Math.max(vh - pad, vh - peek);\n pos.update((p) => ({\n x: Math.max(minX, Math.min(maxX, p.x + stepX)),\n y: Math.max(minY, Math.min(maxY, p.y + stepY)),\n }));\n };\n\n const startResize = () => {\n initPosition();\n forcedTitleBar.set(true);\n const { w: lw, h: lh } = size.get();\n const { x: lx, y: ly } = pos();\n resizeBaseW = lw ?? el.nativeElement.offsetWidth;\n resizeBaseH = lh ?? el.nativeElement.offsetHeight;\n resizeBaseX = lx;\n resizeBaseY = ly;\n startInteraction();\n };\n\n const endResize = () => {\n size.clearResize();\n forcedTitleBar.set(false);\n endInteraction();\n snapToViewport();\n deriveStickyEdges();\n };\n\n const applyResizeDelta = ({ edge, dx, dy }: ResizeMoveEvent) => {\n const movesE = edge.includes('e');\n const movesW = edge.includes('w');\n const movesN = edge.includes('n');\n const movesS = edge.includes('s');\n\n if (!movesE && !movesW && !movesS) return;\n\n const ratio = params.aspectRatio();\n const pad = params.viewportPadding();\n const vw = viewportSize().width;\n const vh = viewportSize().height;\n const maxViewportW = vw - pad * 2;\n const maxWFromHeight = ratio !== null ? Math.max(0, vh - pad * 2 - titleBarH()) * ratio : params.maxWidth();\n const maxW = Math.min(params.maxWidth(), maxViewportW, maxWFromHeight);\n\n let newW: number;\n let newX = resizeBaseX;\n let newY = resizeBaseY;\n\n if (movesS && !movesE && !movesW) {\n if (ratio !== null && ratio > 0) {\n const newContentH = Math.max(0, resizeBaseH - titleBarH() + dy);\n newW = Math.max(params.minWidth(), Math.min(maxW, newContentH * ratio));\n } else {\n newW = resizeBaseW;\n }\n newX = resizeBaseX + (resizeBaseW - newW) / 2;\n } else if (movesE) {\n newW = Math.max(params.minWidth(), Math.min(maxW, resizeBaseW + dx));\n } else {\n newW = Math.max(params.minWidth(), Math.min(maxW, resizeBaseW - dx));\n newX = resizeBaseX + (resizeBaseW - newW);\n }\n\n let newH: number;\n if (ratio !== null) {\n newH = titleBarH() + newW / ratio;\n if (movesN) newY = resizeBaseY + (resizeBaseH - newH);\n } else {\n newH = resizeBaseH;\n }\n\n size.setResize(newW, newH);\n pos.set({ x: newX, y: newY });\n };\n\n effect(() => {\n viewportSize();\n size.w();\n size.h();\n untracked(() => {\n handlePositionAfterResize();\n lastKnownW = size.get().w;\n });\n });\n\n destroyRef.onDestroy(() => endInteraction());\n\n toObservable(resizeHandles)\n .pipe(\n switchMap((handles) =>\n outputToObservable(handles.resizeStarted).pipe(\n exhaustMap(() => {\n startResize();\n return outputToObservable(handles.resizeMoved).pipe(\n tap((event) => applyResizeDelta(event)),\n takeUntil(outputToObservable(handles.resizeEnded)),\n finalize(() => endResize()),\n );\n }),\n ),\n ),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n toObservable(dragHandle)\n .pipe(\n switchMap((handle) =>\n outputToObservable(handle.dragStarted).pipe(\n exhaustMap(() => {\n startDrag();\n return outputToObservable(handle.dragMoved).pipe(\n tap((event) => applyDragStep(event)),\n takeUntil(outputToObservable(handle.dragEnded)),\n finalize(() => endDrag()),\n );\n }),\n ),\n ),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n toObservable(dragHandle)\n .pipe(\n switchMap((handle) =>\n outputToObservable(handle.dragTapped).pipe(\n tap(() => {\n initPosition();\n if (isCollapsed()) snapToViewport();\n }),\n ),\n ),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return {\n position: computed(() => `${pos().x}px ${pos().y}px`),\n positionInitialized,\n isCollapsed,\n isDragging,\n isResizing,\n initPosition,\n checkAndCollapse,\n snapToViewport,\n animateExit: (callback) => {\n animateScaleFadeOut(el.nativeElement, { onFinish: callback });\n },\n startModeTransition: (duration = 260) => {\n positionUpdateBlocked = true;\n renderer.addClass(el.nativeElement, 'et-pip-window--mode-transitioning');\n timer(duration)\n .pipe(\n take(1),\n tap(() => {\n positionUpdateBlocked = false;\n renderer.removeClass(el.nativeElement, 'et-pip-window--mode-transitioning');\n const apply = pendingPositionApply;\n pendingPositionApply = null;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n apply ? apply() : snapToViewport();\n }),\n )\n .subscribe();\n },\n };\n};\n","import { Signal, computed, linkedSignal, signal } from '@angular/core';\nimport { injectViewportSize } from '@ethlete/core';\nimport { PipWindowParamsDirective } from '../pip-window-params.directive';\n\nexport type PipWindowSizeOptions = {\n params: PipWindowParamsDirective;\n titleBarH: Signal<number>;\n};\n\nexport type PipWindowSize = {\n w: Signal<number | null>;\n h: Signal<number | null>;\n get(): { w: number | null; h: number | null };\n update(fn: (prev: { w: number | null; h: number | null }) => { w: number | null; h: number | null }): void;\n setResize(w: number, h: number): void;\n clearResize(): void;\n};\n\nexport const createPipWindowSize = (options: PipWindowSizeOptions): PipWindowSize => {\n const { params, titleBarH } = options;\n\n const viewportSize = injectViewportSize();\n const resizeState = signal<{ w: number; h: number } | null>(null);\n\n const size = linkedSignal<\n {\n ratio: number | null;\n vw: number;\n vh: number;\n pad: number;\n minW: number;\n minH: number;\n resize: { w: number; h: number } | null;\n },\n { w: number | null; h: number | null }\n >({\n source: () => ({\n ratio: params.aspectRatio(),\n vw: viewportSize().width,\n vh: viewportSize().height,\n pad: params.viewportPadding(),\n minW: params.minWidth(),\n minH: params.minHeight(),\n resize: resizeState(),\n }),\n computation: ({ ratio, vw, vh, pad, minW, minH, resize }, previous) => {\n if (resize !== null) return { w: resize.w, h: resize.h };\n const prev = previous?.value ?? { w: null, h: null };\n if (prev.w === null) return prev;\n let { w, h } = prev;\n const availW = vw > 0 ? vw - pad * 2 : Infinity;\n const availH = vh > 0 ? vh - pad * 2 : Infinity;\n if (w > availW) w = Math.max(minW, availW);\n if (ratio !== null) {\n h = titleBarH() + w / ratio;\n if (h > availH) {\n const maxContentH = Math.max(0, availH - titleBarH());\n w = Math.max(minW, maxContentH * ratio);\n h = titleBarH() + w / ratio;\n }\n } else if (h !== null && h > availH) {\n h = Math.max(minH, availH);\n }\n\n return { w, h };\n },\n });\n\n return {\n w: computed(() => size().w),\n h: computed(() => size().h),\n get: () => size(),\n update: (fn) => size.update(fn),\n setResize: (w, h) => resizeState.set({ w, h }),\n clearResize: () => resizeState.set(null),\n };\n};\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n contentChild,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ResizeEdge, ResizeHandlesComponent } from '@ethlete/core';\nimport { PipCollapseOverlayDirective } from './headless/pip-collapse-overlay.directive';\nimport { PipTitleBarTemplateDirective } from './headless/pip-title-bar-template.directive';\nimport { PipTitleBarDirective } from './headless/pip-title-bar.directive';\nimport { PipWindowParamsDirective } from './headless/pip-window-params.directive';\nimport { createPipWindowPosition } from './headless/internals/pip-window-position';\nimport { createPipWindowSize } from './headless/internals/pip-window-size';\n\n@Component({\n selector: 'et-pip-window',\n templateUrl: './pip-window.component.html',\n styleUrl: './pip-window.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, ResizeHandlesComponent, PipTitleBarDirective, PipCollapseOverlayDirective],\n hostDirectives: [PipWindowParamsDirective],\n host: {\n class: 'et-pip-window',\n '[class.et-pip-window--title-bar-forced]': 'forcedTitleBar()',\n '[class.et-pip-window--dragging]': 'posState.isDragging()',\n '[class.et-pip-window--collapsed]': 'posState.isCollapsed()',\n '[class.et-pip-window--resizing]': 'posState.isResizing()',\n '[class.et-pip-window--positioned]': 'posState.positionInitialized()',\n '[style.translate]': 'posState.position()',\n '[style.width.px]': 'sizeState.w()',\n '[style.height.px]': 'sizeState.h()',\n '[style.--et-pip-title-bar-h.px]': 'titleBarH()',\n '[style.--et-pip-content-ratio]': '!posState.positionInitialized() ? params.aspectRatio() : null',\n },\n})\nexport class PipWindowComponent {\n protected params = inject(PipWindowParamsDirective);\n\n private resizeHandles = viewChild.required(ResizeHandlesComponent);\n private titleBar = viewChild.required(PipTitleBarDirective);\n protected titleBarTemplate = contentChild.required(PipTitleBarTemplateDirective);\n\n protected dragHandle = computed(() => this.titleBar().dragHandle);\n protected titleBarH = computed(() => this.titleBar().titleBarH());\n\n public sizeState = createPipWindowSize({\n params: this.params,\n titleBarH: this.titleBarH,\n });\n\n public forcedTitleBar = signal(false);\n\n public posState = createPipWindowPosition({\n params: this.params,\n titleBarH: this.titleBarH,\n size: this.sizeState,\n resizeHandles: this.resizeHandles,\n dragHandle: this.dragHandle,\n forcedTitleBar: this.forcedTitleBar,\n });\n\n public readonly RESIZE_EDGES: ResizeEdge[] = ['s', 'e', 'w', 'se', 'sw'];\n}\n","<et-resize-handles [edges]=\"RESIZE_EDGES\" [disabled]=\"posState.isCollapsed() || posState.isDragging()\" />\n\n@if (posState.isCollapsed()) {\n <div [dragHandle]=\"dragHandle()\" etPipCollapseOverlay></div>\n}\n\n<div [dragDisabled]=\"posState.isResizing()\" etPipTitleBar>\n <ng-container [ngTemplateOutlet]=\"titleBarTemplate().template\" />\n</div>\n\n<div class=\"et-pip-window__content\">\n <ng-content />\n</div>\n","import { Directive, inject, input } from '@angular/core';\nimport { injectPipManager } from '../../pip-manager';\nimport { StreamPipEntry } from '../../stream-manager.types';\nimport { PIP_CHROME_REF_TOKEN } from './pip-chrome-ref.token';\nimport { PIP_ENTRY_TOKEN } from './pip-entry.token';\nimport { PipWindowComponent } from '../pip-window.component';\n\n@Directive({\n selector: '[etPipClose]',\n host: {\n class: 'et-stream-pip-chrome__close',\n type: 'button',\n 'attr.aria-label': '\"Close\"',\n '(click)': 'close($event)',\n },\n})\nexport class PipCloseDirective {\n private chrome = inject(PIP_CHROME_REF_TOKEN, { optional: true });\n private pipWindow = inject(PipWindowComponent, { optional: true });\n private tokenEntry = inject(PIP_ENTRY_TOKEN, { optional: true });\n\n public entry = input<StreamPipEntry>();\n private pipManager = injectPipManager();\n\n public close(event: Event) {\n event.stopPropagation();\n const e = this.resolveEntry();\n if (e) {\n this.pipManager.pipDeactivate(e.playerId);\n } else if (this.chrome) {\n this.chrome.state.close(event, this.pipWindow ?? undefined);\n }\n }\n\n private resolveEntry(): StreamPipEntry | null {\n return this.entry() ?? this.tokenEntry?.() ?? null;\n }\n}\n","import { createStaticRootProvider } from '@ethlete/core';\n\nexport type PipSlotPlaceholderConfig = {\n /** The message displayed in the placeholder overlay. */\n message: string;\n\n /** The label for the \"back to player\" button. */\n backLabel: string;\n\n /**\n * The color theme name to apply on the back button.\n * When set, applies `[color]` on the button element.\n */\n backButtonColor: string | null;\n\n /**\n * A function to transform text based on the current locale.\n * Use `provideLocale()` to update the locale dynamically.\n */\n transformer: (text: string, locale: string) => string;\n};\n\nconst DEFAULT_PIP_SLOT_PLACEHOLDER_CONFIG: PipSlotPlaceholderConfig = {\n message: 'Playing in picture-in-picture',\n backLabel: 'Back to player',\n backButtonColor: null,\n transformer: (text: string) => text,\n};\n\nexport const [providePipSlotPlaceholderConfig, injectPipSlotPlaceholderConfig] =\n createStaticRootProvider<PipSlotPlaceholderConfig>(DEFAULT_PIP_SLOT_PLACEHOLDER_CONFIG, {\n name: 'PipSlotPlaceholderConfig',\n });\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n untracked,\n viewChild,\n} from '@angular/core';\nimport {\n ProvideSurfaceDirective,\n SURFACE_PROVIDER,\n injectLocale,\n injectSurfaceThemes,\n resolveSurfaceByElevation,\n} from '@ethlete/core';\nimport { ButtonComponent } from '../../button';\nimport { ARROW_OUT_UP_RIGHT_ICON, IconDirective, provideIcons } from '../../icon';\nimport { injectPipManager } from '../pip-manager';\nimport { STREAM_SLOT_PLAYER_ID_TOKEN } from '../stream-manager.types';\nimport { PipBringBackDirective } from './headless/pip-bring-back.directive';\nimport { injectPipSlotPlaceholderConfig } from './pip-slot-placeholder-config';\n\n@Component({\n selector: 'et-pip-slot-placeholder',\n template: `\n @if (isInPip()) {\n <div class=\"et-pip-slot-placeholder-overlay\">\n <div [etProvideSurface]=\"cardSurface()\" class=\"et-pip-slot-placeholder-card\" etSurfaced>\n <span class=\"et-pip-slot-placeholder-icon\" etIcon=\"et-arrow-out-up-right\"></span>\n <p class=\"et-pip-slot-placeholder-message\">{{ message() }}</p>\n <button [color]=\"backButtonColor()\" et-button etPipBringBack type=\"button\">\n {{ backLabel() }}\n </button>\n </div>\n </div>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PipBringBackDirective, ButtonComponent, IconDirective, ProvideSurfaceDirective],\n providers: [provideIcons(ARROW_OUT_UP_RIGHT_ICON)],\n styles: `\n @property --et-pip-slot-placeholder-gap {\n syntax: '<length>';\n inherits: false;\n initial-value: 12px;\n }\n\n @property --et-pip-slot-placeholder-padding {\n syntax: '<length>';\n inherits: false;\n initial-value: 32px;\n }\n\n @property --et-pip-slot-placeholder-icon-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 36px;\n }\n\n @property --et-pip-slot-placeholder-border-radius {\n syntax: '<length>';\n inherits: false;\n initial-value: 16px;\n }\n\n @property --et-pip-slot-placeholder-message-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 14px;\n }\n\n @property --et-pip-slot-placeholder-message-weight {\n syntax: '<number>';\n inherits: false;\n initial-value: 400;\n }\n\n @property --et-pip-slot-placeholder-message-line-height {\n syntax: '<percentage>';\n inherits: false;\n initial-value: 150%;\n }\n\n et-pip-slot-placeholder {\n display: contents;\n }\n\n .et-pip-slot-placeholder-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--et-surface-background-solid, inherit);\n color: var(--et-surface-color-solid, inherit);\n z-index: 20;\n\n .et-pip-slot-placeholder-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--et-pip-slot-placeholder-gap);\n padding: var(--et-pip-slot-placeholder-padding);\n border-radius: var(--et-pip-slot-placeholder-border-radius);\n max-width: 36rem;\n text-align: center;\n background: var(--et-surface-background-solid, inherit);\n }\n\n .et-pip-slot-placeholder-icon {\n width: var(--et-pip-slot-placeholder-icon-size);\n height: var(--et-pip-slot-placeholder-icon-size);\n color: var(--et-surface-color-subtle-solid, currentColor);\n }\n\n .et-pip-slot-placeholder-message {\n margin: 0;\n font-size: var(--et-pip-slot-placeholder-message-size);\n font-weight: var(--et-pip-slot-placeholder-message-weight);\n line-height: var(--et-pip-slot-placeholder-message-line-height);\n color: var(--et-surface-color-muted-solid, currentColor);\n text-align: center;\n }\n }\n `,\n})\nexport class PipSlotPlaceholderComponent {\n private slotPlayerId = inject(STREAM_SLOT_PLAYER_ID_TOKEN);\n private parentSurfaceProvider = inject(SURFACE_PROVIDER, { optional: true, skipSelf: true });\n private bringBackDir = viewChild(PipBringBackDirective);\n private pipManager = injectPipManager();\n private config = injectPipSlotPlaceholderConfig();\n private locale = injectLocale();\n private surfaceThemes = injectSurfaceThemes({ optional: true });\n\n public cardSurface = computed(() => {\n const themes = this.surfaceThemes;\n if (!themes) return null;\n\n const type = this.parentSurfaceProvider?.surfaceType() ?? 'dark';\n const elevation = (this.parentSurfaceProvider?.elevation() ?? 0) + 1;\n\n return resolveSurfaceByElevation(themes, type, elevation)?.name ?? null;\n });\n\n public isInPip = computed(() => {\n const playerId = this.slotPlayerId();\n if (!playerId) return false;\n return this.pipManager.pips().some((p) => p.playerId === playerId);\n });\n\n public message = computed(() => this.config.transformer(this.config.message, this.locale.currentLocale()));\n public backLabel = computed(() => this.config.transformer(this.config.backLabel, this.locale.currentLocale()));\n public backButtonColor = computed(() => this.config.backButtonColor);\n\n constructor() {\n effect(() => {\n this.pipManager.backPulseCounter();\n const dir = this.bringBackDir();\n const playerId = this.slotPlayerId();\n if (!dir || !playerId) return;\n untracked(() => {\n if (this.pipManager.consumeBackPulse(playerId)) {\n dir.pulse();\n }\n });\n });\n }\n}\n","export const STREAM_ERROR_CODES = {\n MISSING_CONSENT_TOKEN: 1600,\n SCRIPT_LOAD_FAILED: 1601,\n TWITCH_SDK_NOT_AVAILABLE: 1602,\n YOUTUBE_SDK_NOT_AVAILABLE: 1603,\n MISSING_PIP_CHROME_TOKEN: 1604,\n FACEBOOK_SDK_NOT_AVAILABLE: 1605,\n VIMEO_SDK_NOT_AVAILABLE: 1606,\n TIKTOK_PLAYER_ERROR: 1607,\n FACEBOOK_VIDEO_UNAVAILABLE: 1608,\n} as const;\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n DestroyRef,\n DOCUMENT,\n effect,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport { createRootProvider, injectRenderer, RuntimeError } from '@ethlete/core';\nimport { injectPipManager } from './pip-manager';\nimport { PIP_CHROME_REF_TOKEN } from './pip/headless/pip-chrome-ref.token';\nimport { injectStreamConfig } from './stream-config';\nimport { STREAM_ERROR_CODES } from './stream-errors';\n\nexport const [providePipChromeManager, injectPipChromeManager] = createRootProvider(\n () => {\n const pipManager = injectPipManager();\n const streamConfig = injectStreamConfig();\n const appRef = inject(ApplicationRef);\n const envInjector = inject(EnvironmentInjector);\n const destroyRef = inject(DestroyRef);\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n\n let pipChromeRef: ComponentRef<unknown> | null = null;\n\n const destroyPipChrome = () => {\n if (!pipChromeRef) return;\n appRef.detachView(pipChromeRef.hostView);\n pipChromeRef.destroy();\n pipChromeRef = null;\n };\n\n effect(() => {\n const activePips = pipManager.pips();\n if (activePips.length > 0 && !pipChromeRef) {\n const pipChromeComponent = pipManager.pipChromeComponent() ?? streamConfig.pipChromeComponent;\n\n const ref = createComponent(pipChromeComponent, {\n environmentInjector: envInjector,\n });\n\n if (ngDevMode && !ref.injector.get(PIP_CHROME_REF_TOKEN, null)) {\n throw new RuntimeError(\n STREAM_ERROR_CODES.MISSING_PIP_CHROME_TOKEN,\n '[PipChromeManager] pipChromeComponent does not provide PIP_CHROME_REF_TOKEN. Ensure the component has hostDirectives: [StreamPipChromeComponent].',\n );\n }\n\n appRef.attachView(ref.hostView);\n renderer.appendChild(document.body, ref.location.nativeElement);\n pipChromeRef = ref;\n } else if (activePips.length === 0 && pipChromeRef) {\n destroyPipChrome();\n }\n });\n\n destroyRef.onDestroy(destroyPipChrome);\n },\n { name: 'PipChromeManager' },\n);\n","import { InjectionToken, Signal } from '@angular/core';\nimport { StreamPlayerCapabilities, StreamPlayerState } from './stream.types';\n\nexport type StreamPlayer = {\n /** Capabilities of the player, e.g. whether it supports seeking. */\n readonly CAPABILITIES: StreamPlayerCapabilities;\n\n /**\n * Current state of the player, e.g. whether it's playing or paused.\n * Note that the state depends on the capabilities - e.g. a player that doesn't support seeking will always have currentTime = null.\n */\n state: Signal<StreamPlayerState>;\n\n /**\n * A reactive thumbnail URL for this player, or `null` if unavailable.\n * Only populated when `CAPABILITIES.hasThumbnail` is true.\n */\n thumbnail: Signal<string | null>;\n\n /** Start playback. No-op if already playing or if canPlay capability is false. */\n play(): void;\n\n /** Pause playback. No-op if already paused or if canPause capability is false. */\n pause(): void;\n\n /** Mute playback. No-op if already muted or if canMute capability is false. */\n mute(): void;\n\n /** Unmute playback. No-op if already unmuted or if canMute capability is false. */\n unmute(): void;\n\n /** Seek to time in seconds. No-op if canSeek capability is false. */\n seek(seconds: number): void;\n\n /** Reload the player resource, e.g. after a script load failure. */\n retry(): void;\n};\n\nexport const STREAM_PLAYER_TOKEN = new InjectionToken<StreamPlayer>('STREAM_PLAYER_TOKEN');\n","export type StreamPlayerCapabilities = {\n canPlay: boolean;\n canPause: boolean;\n canMute: boolean;\n canSeek: boolean;\n canGetDuration: boolean;\n isLiveCapable: boolean;\n hasThumbnail: boolean;\n};\n\nexport type StreamPlayerState = {\n isReady: boolean;\n isLoading: boolean;\n error: null | unknown;\n isPlaying: boolean;\n isMuted: boolean;\n isEnded: boolean;\n /** null until the player is ready and duration is available */\n duration: number | null;\n /** null for live streams */\n currentTime: number | null;\n};\n\nexport const DEFAULT_STREAM_PLAYER_STATE: StreamPlayerState = {\n isReady: false,\n isLoading: true,\n error: null,\n isPlaying: false,\n isMuted: false,\n isEnded: false,\n duration: null,\n currentTime: null,\n};\n","import {\n ApplicationRef,\n ComponentRef,\n DestroyRef,\n EnvironmentInjector,\n Injector,\n Signal,\n WritableSignal,\n afterNextRender,\n computed,\n createComponent,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { RuntimeError, injectHostElement, injectRenderer } from '@ethlete/core';\nimport { distinctUntilChanged, filter, map, take, tap } from 'rxjs';\nimport { STREAM_CONSENT_TOKEN, STREAM_USER_CONSENT_PROVIDER_TOKEN } from './consent/headless/stream-consent.directive';\nimport {\n STREAM_PLAYER_ERROR_CONTEXT_TOKEN,\n StreamPlayerErrorContext,\n} from './error/headless/stream-player-error.directive';\nimport { injectPipChromeManager } from './pip-chrome-manager';\nimport { injectPipManager } from './pip-manager';\nimport { injectStreamConfig } from './stream-config';\nimport { STREAM_ERROR_CODES } from './stream-errors';\nimport { injectStreamManager } from './stream-manager';\nimport { StreamPlayerId } from './stream-manager.types';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from './stream-player';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerState } from './stream.types';\n\nexport type StreamPlayerSlotOptions = {\n /** Reactive player id derived from platform-specific params (e.g. `computed(() => \\`youtube-\\${params.videoId()}\\`)`). */\n playerId: Signal<StreamPlayerId>;\n /** Natural aspect ratio (width / height) of the player. Passed to PIP entries so the chrome can resize accordingly. */\n aspectRatio: number;\n /** Forwarded from the host directive's `streamSlotPriority` input. */\n streamSlotPriority: Signal<boolean>;\n /** Forwarded from the host directive's `streamSlotOnPipBack` input. */\n streamSlotOnPipBack: Signal<(() => void) | undefined>;\n /**\n * Creates and returns the platform player `ComponentRef`.\n * Receives the environment and element injectors so input bindings have the\n * correct injection context.\n */\n createPlayer: (envInjector: EnvironmentInjector, elementInjector: Injector) => ComponentRef<unknown>;\n /** Used in dev-mode warnings to identify which directive misconfigured consent. */\n directiveName?: string;\n};\n\nexport type StreamPlayerSlotHandle = {\n currentPlayerIdSignal: WritableSignal<StreamPlayerId | null>;\n currentState: Signal<StreamPlayerState>;\n pipActivate(onBack?: () => void): void;\n pipDeactivate(): void;\n};\n\nexport const createStreamPlayerSlot = (options: StreamPlayerSlotOptions): StreamPlayerSlotHandle => {\n const streamManager = injectStreamManager();\n const pipManager = injectPipManager();\n injectPipChromeManager();\n const el = injectHostElement<HTMLElement>();\n const appRef = inject(ApplicationRef);\n const envInjector = inject(EnvironmentInjector);\n const elementInjector = inject(Injector);\n const destroyRef = inject(DestroyRef);\n const streamConfig = injectStreamConfig();\n const renderer = injectRenderer();\n const consentHandler = inject(STREAM_USER_CONSENT_PROVIDER_TOKEN, { optional: true });\n\n const currentPlayerIdSignal = signal<StreamPlayerId | null>(null);\n const currentPlayer = signal<StreamPlayer | null>(null);\n const currentState = computed(() => currentPlayer()?.state() ?? DEFAULT_STREAM_PLAYER_STATE);\n let consentComponentRef: ComponentRef<unknown> | null = null;\n let pipPlaceholderComponentRef: ComponentRef<unknown> | null = null;\n let loadingComponentRef: ComponentRef<unknown> | null = null;\n let errorComponentRef: ComponentRef<unknown> | null = null;\n\n const destroyLoadingComponent = () => {\n if (loadingComponentRef) {\n appRef.detachView(loadingComponentRef.hostView);\n loadingComponentRef.destroy();\n loadingComponentRef = null;\n }\n };\n\n const destroyErrorComponent = () => {\n if (errorComponentRef) {\n appRef.detachView(errorComponentRef.hostView);\n errorComponentRef.destroy();\n errorComponentRef = null;\n }\n };\n\n effect(() => {\n const newPlayerId = options.playerId();\n const oldPlayerId = currentPlayerIdSignal();\n\n if (!oldPlayerId || oldPlayerId === newPlayerId) return;\n\n streamManager.transferPlayer(oldPlayerId, newPlayerId);\n streamManager.unregisterSlot(el);\n streamManager.registerSlot({\n playerId: newPlayerId,\n priority: options.streamSlotPriority(),\n element: el,\n onPipBack: options.streamSlotOnPipBack(),\n });\n currentPlayerIdSignal.set(newPlayerId);\n });\n\n const createAndRegisterPlayer = (currentPlayerId: StreamPlayerId) => {\n const componentRef = options.createPlayer(envInjector, elementInjector);\n appRef.attachView(componentRef.hostView);\n\n const playerElement = componentRef.location.nativeElement as HTMLElement;\n const player = componentRef.injector.get<StreamPlayer>(STREAM_PLAYER_TOKEN);\n\n currentPlayer.set(player);\n\n streamManager.registerPlayer({\n id: currentPlayerId,\n element: playerElement,\n thumbnail: player.thumbnail,\n onDestroy: () => {\n appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n },\n });\n streamManager.registerSlot({\n playerId: currentPlayerId,\n priority: options.streamSlotPriority(),\n element: el,\n onPipBack: options.streamSlotOnPipBack(),\n });\n\n const { loadingComponent, errorComponent, pipSlotPlaceholderComponent } = streamConfig;\n\n if (loadingComponent) {\n const loadingRef = createComponent(loadingComponent, {\n environmentInjector: envInjector,\n elementInjector,\n });\n appRef.attachView(loadingRef.hostView);\n renderer.appendChild(el, loadingRef.location.nativeElement);\n loadingComponentRef = loadingRef;\n }\n\n if (loadingComponent || errorComponent) {\n afterNextRender(\n () => {\n toObservable(player.state, { injector: componentRef.injector })\n .pipe(\n map((state) => {\n if (state.error !== null) return 'error' as const;\n if (state.isReady) return 'ready' as const;\n return 'loading' as const;\n }),\n distinctUntilChanged(),\n tap((displayState) => {\n if (displayState === 'loading') {\n destroyErrorComponent();\n if (loadingComponent && !loadingComponentRef) {\n const loadingRef = createComponent(loadingComponent, {\n environmentInjector: envInjector,\n elementInjector,\n });\n appRef.attachView(loadingRef.hostView);\n renderer.appendChild(el, loadingRef.location.nativeElement);\n loadingComponentRef = loadingRef;\n }\n } else if (displayState === 'ready') {\n destroyLoadingComponent();\n destroyErrorComponent();\n } else {\n destroyLoadingComponent();\n if (errorComponent && !errorComponentRef) {\n const errorInjector = Injector.create({\n parent: elementInjector,\n providers: [\n {\n provide: STREAM_PLAYER_ERROR_CONTEXT_TOKEN,\n useValue: {\n error: computed(() => player.state().error),\n retry: () => player.retry(),\n } satisfies StreamPlayerErrorContext,\n },\n ],\n });\n const errorRef = createComponent(errorComponent, {\n environmentInjector: envInjector,\n elementInjector: errorInjector,\n });\n appRef.attachView(errorRef.hostView);\n renderer.appendChild(el, errorRef.location.nativeElement);\n errorComponentRef = errorRef;\n }\n }\n }),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe();\n },\n { injector: elementInjector },\n );\n }\n\n if (pipSlotPlaceholderComponent) {\n const placeholderRef = createComponent(pipSlotPlaceholderComponent, {\n environmentInjector: envInjector,\n elementInjector,\n });\n appRef.attachView(placeholderRef.hostView);\n renderer.appendChild(el, placeholderRef.location.nativeElement);\n pipPlaceholderComponentRef = placeholderRef;\n }\n };\n\n const showConsentComponent = (currentPlayerId: StreamPlayerId) => {\n const { consentComponent } = streamConfig;\n\n if (!consentComponent) {\n return;\n }\n\n const consentRef = createComponent(consentComponent, {\n environmentInjector: envInjector,\n elementInjector,\n });\n appRef.attachView(consentRef.hostView);\n renderer.appendChild(el, consentRef.location.nativeElement);\n consentComponentRef = consentRef;\n\n const consentDirective = consentRef.injector.get(STREAM_CONSENT_TOKEN, null);\n\n if (!consentDirective) {\n if (ngDevMode) {\n throw new RuntimeError(\n STREAM_ERROR_CODES.MISSING_CONSENT_TOKEN,\n `[${options.directiveName ?? 'StreamPlayerSlot'}] consentComponent does not provide STREAM_CONSENT_TOKEN. Ensure the component has hostDirectives: [StreamConsentDirective].`,\n );\n }\n\n return;\n }\n\n toObservable(consentDirective.isGranted, { injector: envInjector })\n .pipe(\n filter(Boolean),\n take(1),\n tap(() => {\n appRef.detachView(consentRef.hostView);\n consentRef.destroy();\n consentComponentRef = null;\n createAndRegisterPlayer(currentPlayerId);\n }),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe();\n };\n\n const init = () => {\n const currentPlayerId = options.playerId();\n currentPlayerIdSignal.set(currentPlayerId);\n\n if (streamManager.getPlayerElement(currentPlayerId)) {\n streamManager.registerSlot({\n playerId: currentPlayerId,\n priority: options.streamSlotPriority(),\n element: el,\n onPipBack: options.streamSlotOnPipBack(),\n });\n\n const { pipSlotPlaceholderComponent } = streamConfig;\n if (pipSlotPlaceholderComponent && !pipPlaceholderComponentRef) {\n const placeholderRef = createComponent(pipSlotPlaceholderComponent, {\n environmentInjector: envInjector,\n elementInjector,\n });\n appRef.attachView(placeholderRef.hostView);\n renderer.appendChild(el, placeholderRef.location.nativeElement);\n pipPlaceholderComponentRef = placeholderRef;\n }\n\n return;\n }\n\n const { consentComponent } = streamConfig;\n\n if (consentHandler?.isGranted()) {\n createAndRegisterPlayer(currentPlayerId);\n\n return;\n }\n\n if (!consentHandler && !consentComponent) {\n createAndRegisterPlayer(currentPlayerId);\n\n return;\n }\n\n if (consentHandler && !consentComponent) {\n toObservable(consentHandler.isGranted, { injector: envInjector })\n .pipe(\n filter(Boolean),\n take(1),\n tap(() => createAndRegisterPlayer(currentPlayerId)),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe();\n\n return;\n }\n\n showConsentComponent(currentPlayerId);\n };\n\n const destroy = () => {\n if (currentPlayerIdSignal()) {\n streamManager.unregisterSlot(el);\n }\n\n if (consentComponentRef) {\n appRef.detachView(consentComponentRef.hostView);\n consentComponentRef.destroy();\n consentComponentRef = null;\n }\n\n if (pipPlaceholderComponentRef) {\n appRef.detachView(pipPlaceholderComponentRef.hostView);\n pipPlaceholderComponentRef.destroy();\n pipPlaceholderComponentRef = null;\n }\n\n destroyLoadingComponent();\n destroyErrorComponent();\n };\n\n const pipActivate = (onBack?: () => void) =>\n pipManager.pipActivate(el, {\n onBack,\n aspectRatio: options.aspectRatio,\n pipChromeComponent: streamConfig.pipChromeComponent,\n pipChromeConfig: streamConfig.pipChrome,\n });\n\n const pipDeactivate = () => {\n const id = currentPlayerIdSignal();\n\n if (id) {\n pipManager.pipDeactivate(id);\n }\n };\n\n afterNextRender(() => init());\n destroyRef.onDestroy(() => destroy());\n\n return { currentPlayerIdSignal, currentState, pipActivate, pipDeactivate };\n};\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'et-stream-player-slot-styles',\n template: '',\n styleUrl: './stream-player-slot-styles.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StreamPlayerSlotStylesComponent {}\n","import {\n Binding,\n Directive,\n InjectionToken,\n Signal,\n Type,\n booleanAttribute,\n computed,\n createComponent,\n effect,\n inject,\n input,\n untracked,\n} from '@angular/core';\nimport {\n ProvideSurfaceDirective,\n SURFACE_PROVIDER,\n injectStyleManager,\n injectSurfaceThemes,\n resolveSurfaceByElevation,\n setInputSignal,\n} from '@ethlete/core';\nimport { STREAM_SLOT_PLAYER_ID_TOKEN, StreamPlayerId } from './stream-manager.types';\nimport { createStreamPlayerSlot } from './stream-player-slot';\nimport { StreamPlayerSlotStylesComponent } from './stream-player-slot-styles.component';\n\nexport type StreamPlayerParams = {\n readonly playerId: Signal<StreamPlayerId>;\n /** Natural aspect ratio (width / height) of the player. Defaults to 16/9 if absent. */\n readonly ASPECT_RATIO?: number;\n createBindings(): Binding[];\n};\n\nexport const STREAM_PLAYER_PARAMS_TOKEN = new InjectionToken<StreamPlayerParams>('STREAM_PLAYER_PARAMS_TOKEN');\nexport const STREAM_PLAYER_COMPONENT_TOKEN = new InjectionToken<Type<unknown>>('STREAM_PLAYER_COMPONENT_TOKEN');\nexport const STREAM_PLAYER_SLOT_TOKEN = new InjectionToken<StreamPlayerSlotDirective>('STREAM_PLAYER_SLOT_TOKEN');\n\n@Directive({\n providers: [\n { provide: STREAM_PLAYER_SLOT_TOKEN, useExisting: StreamPlayerSlotDirective },\n {\n provide: STREAM_SLOT_PLAYER_ID_TOKEN,\n useFactory: () => {\n const directive = inject(StreamPlayerSlotDirective);\n return directive.slot.currentPlayerIdSignal;\n },\n },\n ],\n hostDirectives: [\n {\n directive: ProvideSurfaceDirective,\n inputs: ['etProvideSurface:surface'],\n },\n ],\n host: {\n class: 'et-stream-player-slot',\n },\n})\nexport class StreamPlayerSlotDirective {\n private params = inject(STREAM_PLAYER_PARAMS_TOKEN);\n private playerComponent = inject(STREAM_PLAYER_COMPONENT_TOKEN);\n private provideSurface = inject(ProvideSurfaceDirective);\n private parentSurfaceProvider = inject(SURFACE_PROVIDER, { optional: true, skipSelf: true });\n\n public streamSlotPriority = input(false, { transform: booleanAttribute });\n public streamSlotOnPipBack = input<() => void>();\n private surfaceThemes = injectSurfaceThemes({ optional: true });\n private styleManager = injectStyleManager();\n\n private resolvedSurface = computed(() => {\n const themes = this.surfaceThemes;\n if (!themes) return null;\n\n const type = this.parentSurfaceProvider?.surfaceType() ?? 'dark';\n const elevation = (this.parentSurfaceProvider?.elevation() ?? 0) + 1;\n return resolveSurfaceByElevation(themes, type, elevation);\n });\n\n public slot = createStreamPlayerSlot({\n playerId: this.params.playerId,\n aspectRatio: this.params.ASPECT_RATIO ?? 16 / 9,\n streamSlotPriority: this.streamSlotPriority,\n streamSlotOnPipBack: this.streamSlotOnPipBack,\n createPlayer: (envInjector, elementInjector) =>\n createComponent(this.playerComponent, {\n environmentInjector: envInjector,\n elementInjector,\n bindings: this.params.createBindings(),\n }),\n });\n\n constructor() {\n this.styleManager.mount(StreamPlayerSlotStylesComponent);\n\n if (this.surfaceThemes) {\n effect(() => {\n const surface = this.resolvedSurface();\n\n untracked(() => {\n setInputSignal(this.provideSurface.surface, surface?.name ?? null);\n });\n });\n }\n }\n}\n","import { Directive, computed, input, inputBinding, numberAttribute } from '@angular/core';\nimport { STREAM_PLAYER_PARAMS_TOKEN, StreamPlayerParams } from '../../../stream-player-slot.directive';\n\n@Directive({\n providers: [{ provide: STREAM_PLAYER_PARAMS_TOKEN, useExisting: DailymotionPlayerParamsDirective }],\n})\nexport class DailymotionPlayerParamsDirective implements StreamPlayerParams {\n public videoId = input.required<string>();\n public startTime = input(0, { transform: numberAttribute });\n public width = input<string | number>('100%');\n public height = input<string | number>('100%');\n\n public playerId = computed(() => `dailymotion-${this.videoId()}`);\n\n public createBindings() {\n return [\n inputBinding('videoId', () => this.videoId()),\n inputBinding('startTime', () => this.startTime()),\n inputBinding('width', () => this.width()),\n inputBinding('height', () => this.height()),\n ];\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, InjectionToken, PLATFORM_ID, effect, inject, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { injectHostElement, injectRenderer } from '@ethlete/core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from '../../../stream-player';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerCapabilities, StreamPlayerState } from '../../../stream.types';\nimport { DailymotionPlayerParamsDirective } from './dailymotion-player-params.directive';\n\nexport const DAILYMOTION_PLAYER_TOKEN = new InjectionToken<DailymotionPlayerDirective>('DAILYMOTION_PLAYER_TOKEN');\n\n@Directive({\n providers: [\n { provide: DAILYMOTION_PLAYER_TOKEN, useExisting: DailymotionPlayerDirective },\n { provide: STREAM_PLAYER_TOKEN, useExisting: DailymotionPlayerDirective },\n ],\n})\nexport class DailymotionPlayerDirective implements StreamPlayer {\n private platformId = inject(PLATFORM_ID);\n private params = inject(DailymotionPlayerParamsDirective);\n private el = injectHostElement();\n private renderer = injectRenderer();\n\n public readonly CAPABILITIES: StreamPlayerCapabilities = {\n canPlay: false,\n canPause: false,\n canMute: false,\n canSeek: false,\n canGetDuration: false,\n isLiveCapable: true,\n hasThumbnail: false,\n };\n\n public state = signal<StreamPlayerState>({ ...DEFAULT_STREAM_PLAYER_STATE });\n public thumbnail = signal<string | null>(null);\n\n private playerResource = rxResource({\n params: () => (isPlatformBrowser(this.platformId) ? this.params.videoId() : null),\n stream: ({ params: videoId }) => {\n if (!videoId) return EMPTY;\n\n return new Observable<void>((subscriber) => {\n const iframe = this.renderer.createElement('iframe');\n const qs = new URLSearchParams({ autoplay: '0' });\n const startTime = this.params.startTime();\n if (startTime > 0) qs.set('start', String(startTime));\n\n const w = this.params.width();\n const h = this.params.height();\n iframe.src = `https://www.dailymotion.com/embed/video/${videoId}?${qs}`;\n iframe.width = typeof w === 'number' ? String(w) : w;\n iframe.height = typeof h === 'number' ? String(h) : h;\n this.renderer.setStyle(iframe, { border: 'none' });\n iframe.allow = 'autoplay; encrypted-media';\n iframe.allowFullscreen = true;\n iframe.scrolling = 'no';\n\n iframe.onload = () => {\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE, isReady: true, isLoading: false });\n subscriber.next();\n };\n\n this.renderer.appendChild(this.el, iframe);\n\n return () => {\n if (this.el.contains(iframe)) this.renderer.removeChild(this.el, iframe);\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE });\n };\n });\n },\n });\n\n constructor() {\n effect(() => {\n const error = this.playerResource.error();\n this.state.update((s) => ({\n ...s,\n isLoading: error !== undefined ? false : this.playerResource.isLoading(),\n error: error ?? null,\n }));\n });\n }\n\n // Dailymotion embeds have no programmatic control API without a dashboard-created player ID\n\n public play() {\n // no-op\n }\n\n public pause() {\n // no-op\n }\n\n public mute() {\n // no-op\n }\n\n public unmute() {\n // no-op\n }\n\n public seek() {\n // no-op\n }\n\n public retry() {\n this.playerResource.reload();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { DailymotionPlayerParamsDirective } from './headless/dailymotion-player-params.directive';\nimport { DAILYMOTION_PLAYER_TOKEN, DailymotionPlayerDirective } from './headless/dailymotion-player.directive';\n\n@Component({\n selector: 'et-dailymotion-player',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: DailymotionPlayerParamsDirective,\n inputs: ['videoId', 'startTime', 'width', 'height'],\n },\n DailymotionPlayerDirective,\n ],\n host: {\n class: 'et-dailymotion-player et-stream-player',\n style: 'display: block; width: 100%; height: 100%',\n },\n})\nexport class DailymotionPlayerComponent {\n public player = inject(DAILYMOTION_PLAYER_TOKEN);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport {\n STREAM_PLAYER_COMPONENT_TOKEN,\n STREAM_PLAYER_SLOT_TOKEN,\n StreamPlayerSlotDirective,\n} from '../../stream-player-slot.directive';\nimport { DailymotionPlayerComponent } from './dailymotion-player.component';\nimport { DailymotionPlayerParamsDirective } from './headless/dailymotion-player-params.directive';\n\n@Component({\n selector: 'et-dailymotion-player-slot',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: STREAM_PLAYER_COMPONENT_TOKEN, useValue: DailymotionPlayerComponent }],\n hostDirectives: [\n {\n directive: DailymotionPlayerParamsDirective,\n inputs: ['videoId', 'startTime', 'width', 'height'],\n },\n {\n directive: StreamPlayerSlotDirective,\n inputs: ['streamSlotPriority', 'streamSlotOnPipBack'],\n },\n ],\n host: {\n class: 'et-dailymotion-player-slot et-stream-player-slot',\n },\n})\nexport class DailymotionPlayerSlotComponent {\n public slotDirective = inject(STREAM_PLAYER_SLOT_TOKEN);\n}\n","import { Directive, computed, input, inputBinding } from '@angular/core';\nimport { STREAM_PLAYER_PARAMS_TOKEN, StreamPlayerParams } from '../../../stream-player-slot.directive';\n\n@Directive({\n providers: [{ provide: STREAM_PLAYER_PARAMS_TOKEN, useExisting: FacebookPlayerParamsDirective }],\n})\nexport class FacebookPlayerParamsDirective implements StreamPlayerParams {\n public videoId = input.required<string>();\n public width = input<string | number>('100%');\n public height = input<string | number>('100%');\n\n public playerId = computed(() => `facebook-${this.videoId()}`);\n\n public createBindings() {\n return [\n inputBinding('videoId', () => this.videoId()),\n inputBinding('width', () => this.width()),\n inputBinding('height', () => this.height()),\n ];\n }\n}\n","import { DOCUMENT, inject } from '@angular/core';\nimport { RuntimeError, createRootProvider, injectRenderer } from '@ethlete/core';\nimport { Observable, shareReplay } from 'rxjs';\nimport { STREAM_ERROR_CODES } from './stream-errors';\n\nexport const [, injectStreamScriptLoader] = createRootProvider(\n () => {\n const document = inject(DOCUMENT);\n const cache = new Map<string, Observable<void>>();\n const mountedScripts = new Set<string>();\n const renderer = injectRenderer();\n\n const load = (src: string): Observable<void> => {\n const cached = cache.get(src);\n\n if (cached) return cached;\n\n const obs$ = new Observable<void>((subscriber) => {\n const isMounted = mountedScripts.has(src);\n\n if (isMounted) {\n subscriber.next();\n subscriber.complete();\n\n return;\n }\n\n const script = renderer.createElement('script');\n script.src = src;\n script.async = true;\n\n renderer.listen(script, 'load', () => {\n subscriber.next();\n subscriber.complete();\n mountedScripts.add(src);\n });\n\n renderer.listen(script, 'error', () => {\n cache.delete(src);\n script.remove();\n mountedScripts.delete(src);\n subscriber.error(\n new RuntimeError(\n STREAM_ERROR_CODES.SCRIPT_LOAD_FAILED,\n `[StreamScriptLoader] Failed to load script: ${src}.`,\n ),\n );\n });\n\n renderer.appendChild(document.head, script);\n }).pipe(shareReplay(1));\n\n cache.set(src, obs$);\n return obs$;\n };\n\n return { load };\n },\n { name: 'Stream Script Loader' },\n);\n\nexport type StreamScriptLoader = ReturnType<typeof injectStreamScriptLoader>;\n","import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, Directive, InjectionToken, PLATFORM_ID, effect, inject, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { RuntimeError, injectHostElement, injectRenderer } from '@ethlete/core';\nimport { EMPTY, Observable, catchError, tap, timer } from 'rxjs';\nimport { STREAM_ERROR_CODES } from '../../../stream-errors';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from '../../../stream-player';\nimport { injectStreamScriptLoader } from '../../../stream-script-loader';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerCapabilities, StreamPlayerState } from '../../../stream.types';\nimport { FacebookPlayerParamsDirective } from './facebook-player-params.directive';\nimport { FacebookVideoPlayer, FacebookWindow } from './facebook-player.types';\n\nconst FB_SDK_URL = 'https://connect.facebook.net/de_DE/sdk.js#xfbml=1&version=v3.2';\nconst FB_READY_TIMEOUT = 15_000;\n\nexport const FACEBOOK_PLAYER_TOKEN = new InjectionToken<FacebookPlayerDirective>('FACEBOOK_PLAYER_TOKEN');\n\n@Directive({\n providers: [\n { provide: FACEBOOK_PLAYER_TOKEN, useExisting: FacebookPlayerDirective },\n { provide: STREAM_PLAYER_TOKEN, useExisting: FacebookPlayerDirective },\n ],\n})\nexport class FacebookPlayerDirective implements StreamPlayer {\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private params = inject(FacebookPlayerParamsDirective);\n private el = injectHostElement();\n private scriptLoader = injectStreamScriptLoader();\n private renderer = injectRenderer();\n\n public readonly CAPABILITIES: StreamPlayerCapabilities = {\n canPlay: true,\n canPause: true,\n canMute: true,\n canSeek: true,\n canGetDuration: true,\n isLiveCapable: false,\n hasThumbnail: false,\n };\n\n public state = signal<StreamPlayerState>({ ...DEFAULT_STREAM_PLAYER_STATE });\n public thumbnail = signal<string | null>(null);\n\n private playerResource = rxResource({\n params: () => (isPlatformBrowser(this.platformId) ? this.params.videoId() : null),\n stream: ({ params: videoId }) => {\n if (!videoId) return EMPTY;\n\n const videoUrl = `https://www.facebook.com/video/${videoId}`;\n\n return new Observable<FacebookVideoPlayer>((subscriber) => {\n const win = this.document.defaultView as unknown as FacebookWindow;\n const playerSubscriptions: Array<{ release(): void }> = [];\n let active = true;\n let loaderSub: { unsubscribe(): void } | null = null;\n let xfbmlReadyHandler: ((msg: unknown) => void) | null = null;\n let readyTimeoutSub: { unsubscribe(): void } | null = null;\n\n const createEmbed = () => {\n if (!active) return;\n\n if (!win.FB) {\n subscriber.error(\n new RuntimeError(\n STREAM_ERROR_CODES.FACEBOOK_SDK_NOT_AVAILABLE,\n '[EtFacebookPlayer] Facebook SDK not available after script load. Ensure the Facebook SDK URL is accessible.',\n ),\n );\n\n return;\n }\n\n const containerId = `et-fb-${Math.random().toString(36).slice(2)}`;\n\n xfbmlReadyHandler = (rawMsg: unknown) => {\n const msg = rawMsg as { type: string; id: string; instance: unknown };\n if (msg.type !== 'video' || msg.id !== containerId) return;\n\n readyTimeoutSub?.unsubscribe();\n readyTimeoutSub = null;\n\n const player = msg.instance as FacebookVideoPlayer;\n\n this.state.update((s) => ({ ...s, isReady: true, isLoading: false }));\n subscriber.next(player);\n\n playerSubscriptions.push(\n player.subscribe('startedPlaying', () => {\n this.state.update((s) => ({ ...s, isPlaying: true, isEnded: false }));\n }),\n );\n playerSubscriptions.push(\n player.subscribe('paused', () => {\n this.state.update((s) => ({ ...s, isPlaying: false }));\n }),\n );\n playerSubscriptions.push(\n player.subscribe('finishedPlaying', () => {\n this.state.update((s) => ({ ...s, isPlaying: false, isEnded: true }));\n }),\n );\n };\n\n win.FB.Event.subscribe('xfbml.ready', xfbmlReadyHandler);\n\n const w = this.params.width();\n const h = this.params.height();\n const container = this.renderer.createElement('div');\n container.id = containerId;\n container.className = 'fb-video';\n container.dataset['href'] = videoUrl;\n container.dataset['width'] = typeof w === 'number' ? String(w) : 'auto';\n container.dataset['showText'] = 'false';\n\n this.renderer.setStyle(this.el, {\n display: 'block',\n width: typeof w === 'number' ? `${w}px` : w,\n height: typeof h === 'number' ? `${h}px` : null,\n });\n\n this.renderer.appendChild(this.el, container);\n win.FB.XFBML.parse(this.el);\n\n readyTimeoutSub = timer(FB_READY_TIMEOUT)\n .pipe(\n tap(() => {\n if (!active) return;\n\n subscriber.error(\n new RuntimeError(\n STREAM_ERROR_CODES.FACEBOOK_VIDEO_UNAVAILABLE,\n '[EtFacebookPlayer] The Facebook video did not become ready within the expected time. The video may be unavailable or restricted.',\n ),\n );\n }),\n )\n .subscribe();\n };\n\n if (win.FB) {\n createEmbed();\n } else {\n const prev = win.fbAsyncInit;\n win.fbAsyncInit = () => {\n prev?.();\n createEmbed();\n };\n loaderSub = this.scriptLoader\n .load(FB_SDK_URL)\n .pipe(\n catchError((e: unknown) => {\n subscriber.error(e);\n return EMPTY;\n }),\n )\n .subscribe();\n }\n\n return () => {\n active = false;\n loaderSub?.unsubscribe();\n readyTimeoutSub?.unsubscribe();\n if (xfbmlReadyHandler) win.FB?.Event.unsubscribe('xfbml.ready', xfbmlReadyHandler);\n for (const sub of playerSubscriptions) sub.release();\n this.el.innerHTML = '';\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE });\n };\n });\n },\n });\n\n constructor() {\n effect(() => {\n const error = this.playerResource.error();\n this.state.update((s) => ({\n ...s,\n isLoading: error !== undefined ? false : this.playerResource.isLoading(),\n error: error ?? null,\n }));\n });\n }\n\n public play() {\n this.playerResource.value()?.play();\n }\n\n public pause() {\n this.playerResource.value()?.pause();\n }\n\n public mute() {\n this.playerResource.value()?.mute();\n this.state.update((s) => ({ ...s, isMuted: true }));\n }\n\n public unmute() {\n this.playerResource.value()?.unmute();\n this.state.update((s) => ({ ...s, isMuted: false }));\n }\n\n public seek(seconds: number) {\n this.playerResource.value()?.seek(seconds);\n }\n\n public retry() {\n this.playerResource.reload();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { FacebookPlayerParamsDirective } from './headless/facebook-player-params.directive';\nimport { FACEBOOK_PLAYER_TOKEN, FacebookPlayerDirective } from './headless/facebook-player.directive';\n\n@Component({\n selector: 'et-facebook-player',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: FacebookPlayerParamsDirective,\n inputs: ['videoId', 'width', 'height'],\n },\n FacebookPlayerDirective,\n ],\n host: {\n class: 'et-facebook-player et-stream-player',\n style: 'display: block; width: 100%; height: 100%',\n },\n})\nexport class FacebookPlayerComponent {\n public player = inject(FACEBOOK_PLAYER_TOKEN);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport {\n STREAM_PLAYER_COMPONENT_TOKEN,\n STREAM_PLAYER_SLOT_TOKEN,\n StreamPlayerSlotDirective,\n} from '../../stream-player-slot.directive';\nimport { FacebookPlayerComponent } from './facebook-player.component';\nimport { FacebookPlayerParamsDirective } from './headless/facebook-player-params.directive';\n\n@Component({\n selector: 'et-facebook-player-slot',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: STREAM_PLAYER_COMPONENT_TOKEN, useValue: FacebookPlayerComponent }],\n hostDirectives: [\n {\n directive: FacebookPlayerParamsDirective,\n inputs: ['videoId', 'width', 'height'],\n },\n {\n directive: StreamPlayerSlotDirective,\n inputs: ['streamSlotPriority', 'streamSlotOnPipBack'],\n },\n ],\n host: {\n class: 'et-facebook-player-slot et-stream-player-slot',\n },\n})\nexport class FacebookPlayerSlotComponent {\n public slotDirective = inject(STREAM_PLAYER_SLOT_TOKEN);\n}\n","import { Directive, booleanAttribute, computed, input, inputBinding } from '@angular/core';\nimport { STREAM_PLAYER_PARAMS_TOKEN, StreamPlayerParams } from '../../../stream-player-slot.directive';\n\n@Directive({\n providers: [{ provide: STREAM_PLAYER_PARAMS_TOKEN, useExisting: KickPlayerParamsDirective }],\n})\nexport class KickPlayerParamsDirective implements StreamPlayerParams {\n public channel = input.required<string>();\n public width = input<string | number>('100%');\n public height = input<string | number>('100%');\n public muted = input(false, { transform: booleanAttribute });\n\n public playerId = computed(() => `kick-${this.channel()}`);\n\n public createBindings() {\n return [\n inputBinding('channel', () => this.channel()),\n inputBinding('width', () => this.width()),\n inputBinding('height', () => this.height()),\n inputBinding('muted', () => this.muted()),\n ];\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, InjectionToken, DOCUMENT, PLATFORM_ID, effect, inject, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { injectHostElement, injectRenderer } from '@ethlete/core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from '../../../stream-player';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerCapabilities, StreamPlayerState } from '../../../stream.types';\nimport { KickPlayerParamsDirective } from './kick-player-params.directive';\n\nexport const KICK_PLAYER_TOKEN = new InjectionToken<KickPlayerDirective>('KICK_PLAYER_TOKEN');\n\n@Directive({\n providers: [\n { provide: KICK_PLAYER_TOKEN, useExisting: KickPlayerDirective },\n { provide: STREAM_PLAYER_TOKEN, useExisting: KickPlayerDirective },\n ],\n})\nexport class KickPlayerDirective implements StreamPlayer {\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private params = inject(KickPlayerParamsDirective);\n private el = injectHostElement();\n private renderer = injectRenderer();\n\n public readonly CAPABILITIES: StreamPlayerCapabilities = {\n canPlay: false,\n canPause: false,\n canMute: false,\n canSeek: false,\n canGetDuration: false,\n isLiveCapable: true,\n hasThumbnail: false,\n };\n\n public state = signal<StreamPlayerState>({ ...DEFAULT_STREAM_PLAYER_STATE });\n public thumbnail = signal<string | null>(null);\n\n private playerResource = rxResource({\n params: () => (isPlatformBrowser(this.platformId) ? this.params.channel() : null),\n stream: ({ params: channel }) => {\n if (!channel) return EMPTY;\n\n return new Observable<void>((subscriber) => {\n const iframe = this.renderer.createElement('iframe');\n const qs = new URLSearchParams({ parent: this.document.defaultView?.location.hostname ?? '' });\n if (this.params.muted()) qs.set('muted', 'true');\n\n iframe.src = `https://player.kick.com/${channel}?${qs}`;\n iframe.width = String(this.params.width());\n iframe.height = String(this.params.height());\n this.renderer.setStyle(iframe, { border: 'none' });\n iframe.scrolling = 'no';\n iframe.allowFullscreen = true;\n iframe.allow = 'autoplay; encrypted-media';\n\n iframe.onload = () => {\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE, isReady: true, isLoading: false });\n subscriber.next();\n };\n\n this.renderer.appendChild(this.el, iframe);\n\n return () => {\n if (this.el.contains(iframe)) {\n this.renderer.removeChild(this.el, iframe);\n }\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE });\n };\n });\n },\n });\n\n constructor() {\n effect(() => {\n const error = this.playerResource.error();\n this.state.update((s) => ({\n ...s,\n isLoading: error !== undefined ? false : this.playerResource.isLoading(),\n error: error ?? null,\n }));\n });\n }\n\n // Kick embeds have no programmatic control API — these are intentional no-ops.\n\n public play() {\n // no-op\n }\n public pause() {\n // no-op\n }\n public mute() {\n // no-op\n }\n public unmute() {\n // no-op\n }\n public seek() {\n // no-op\n }\n\n public retry() {\n this.playerResource.reload();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { KickPlayerParamsDirective } from './headless/kick-player-params.directive';\nimport { KICK_PLAYER_TOKEN, KickPlayerDirective } from './headless/kick-player.directive';\n\n@Component({\n selector: 'et-kick-player',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: KickPlayerParamsDirective,\n inputs: ['channel', 'width', 'height', 'muted'],\n },\n KickPlayerDirective,\n ],\n host: {\n class: 'et-kick-player et-stream-player',\n style: 'display: block; width: 100%; height: 100%',\n },\n})\nexport class KickPlayerComponent {\n public player = inject(KICK_PLAYER_TOKEN);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport {\n STREAM_PLAYER_COMPONENT_TOKEN,\n STREAM_PLAYER_SLOT_TOKEN,\n StreamPlayerSlotDirective,\n} from '../../stream-player-slot.directive';\nimport { KickPlayerParamsDirective } from './headless/kick-player-params.directive';\nimport { KickPlayerComponent } from './kick-player.component';\n\n@Component({\n selector: 'et-kick-player-slot',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: STREAM_PLAYER_COMPONENT_TOKEN, useValue: KickPlayerComponent }],\n hostDirectives: [\n {\n directive: KickPlayerParamsDirective,\n inputs: ['channel', 'width', 'height', 'muted'],\n },\n {\n directive: StreamPlayerSlotDirective,\n inputs: ['streamSlotPriority', 'streamSlotOnPipBack'],\n },\n ],\n host: {\n class: 'et-kick-player-slot et-stream-player-slot',\n },\n})\nexport class KickPlayerSlotComponent {\n public slotDirective = inject(STREAM_PLAYER_SLOT_TOKEN);\n}\n","import { Directive, computed, input, inputBinding } from '@angular/core';\nimport { STREAM_PLAYER_PARAMS_TOKEN, StreamPlayerParams } from '../../../stream-player-slot.directive';\n\n@Directive({\n providers: [{ provide: STREAM_PLAYER_PARAMS_TOKEN, useExisting: SoopPlayerParamsDirective }],\n})\nexport class SoopPlayerParamsDirective implements StreamPlayerParams {\n public userId = input<string | null>(null);\n public videoId = input<string | null>(null);\n public width = input<string | number>('100%');\n public height = input<string | number>('100%');\n\n public playerId = computed(() => {\n const u = this.userId();\n return u ? `soop-user-${u}` : `soop-video-${this.videoId()}`;\n });\n\n public createBindings() {\n return [\n inputBinding('userId', () => this.userId()),\n inputBinding('videoId', () => this.videoId()),\n inputBinding('width', () => this.width()),\n inputBinding('height', () => this.height()),\n ];\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, InjectionToken, PLATFORM_ID, effect, inject, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { injectHostElement, injectRenderer } from '@ethlete/core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from '../../../stream-player';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerCapabilities, StreamPlayerState } from '../../../stream.types';\nimport { SoopPlayerParamsDirective } from './soop-player-params.directive';\n\nexport const SOOP_PLAYER_TOKEN = new InjectionToken<SoopPlayerDirective>('SOOP_PLAYER_TOKEN');\n\n@Directive({\n providers: [\n { provide: SOOP_PLAYER_TOKEN, useExisting: SoopPlayerDirective },\n { provide: STREAM_PLAYER_TOKEN, useExisting: SoopPlayerDirective },\n ],\n})\nexport class SoopPlayerDirective implements StreamPlayer {\n private platformId = inject(PLATFORM_ID);\n private params = inject(SoopPlayerParamsDirective);\n private el = injectHostElement();\n private renderer = injectRenderer();\n\n public readonly CAPABILITIES: StreamPlayerCapabilities = {\n canPlay: false,\n canPause: false,\n canMute: false,\n canSeek: false,\n canGetDuration: false,\n isLiveCapable: true,\n hasThumbnail: false,\n };\n\n public state = signal<StreamPlayerState>({ ...DEFAULT_STREAM_PLAYER_STATE });\n public thumbnail = signal<string | null>(null);\n\n private playerResource = rxResource({\n params: (): { userId: string | null; videoId: string | null } | null => {\n if (!isPlatformBrowser(this.platformId)) return null;\n const userId = this.params.userId();\n const videoId = this.params.videoId();\n if (!userId && !videoId) return null;\n return { userId, videoId };\n },\n stream: ({ params }) => {\n if (!params) return EMPTY;\n\n return new Observable<void>((subscriber) => {\n const iframe = this.renderer.createElement('iframe');\n const w = this.params.width();\n const h = this.params.height();\n\n if (params.userId) {\n iframe.src = `https://play.afreecatv.com/${params.userId}/embed`;\n } else {\n iframe.src = `https://vod.afreecatv.com/player/${params.videoId}`;\n }\n\n iframe.width = typeof w === 'number' ? String(w) : w;\n iframe.height = typeof h === 'number' ? String(h) : h;\n this.renderer.setStyle(iframe, { border: 'none' });\n iframe.scrolling = 'no';\n iframe.allowFullscreen = true;\n iframe.allow = 'autoplay; encrypted-media';\n\n iframe.onload = () => {\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE, isReady: true, isLoading: false });\n subscriber.next();\n };\n\n this.renderer.appendChild(this.el, iframe);\n\n return () => {\n if (this.el.contains(iframe)) {\n this.renderer.removeChild(this.el, iframe);\n }\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE });\n };\n });\n },\n });\n\n constructor() {\n effect(() => {\n const error = this.playerResource.error();\n this.state.update((s) => ({\n ...s,\n isLoading: error !== undefined ? false : this.playerResource.isLoading(),\n error: error ?? null,\n }));\n });\n }\n\n // SOOP embeds have no programmatic control API — these are intentional no-ops.\n\n public play() {\n // no-op\n }\n public pause() {\n // no-op\n }\n public mute() {\n // no-op\n }\n public unmute() {\n // no-op\n }\n public seek() {\n // no-op\n }\n\n public retry() {\n this.playerResource.reload();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { SoopPlayerParamsDirective } from './headless/soop-player-params.directive';\nimport { SOOP_PLAYER_TOKEN, SoopPlayerDirective } from './headless/soop-player.directive';\n\n@Component({\n selector: 'et-soop-player',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: SoopPlayerParamsDirective,\n inputs: ['userId', 'videoId', 'width', 'height'],\n },\n SoopPlayerDirective,\n ],\n host: {\n class: 'et-soop-player et-stream-player',\n style: 'display: block; width: 100%; height: 100%',\n },\n})\nexport class SoopPlayerComponent {\n public player = inject(SOOP_PLAYER_TOKEN);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport {\n STREAM_PLAYER_COMPONENT_TOKEN,\n STREAM_PLAYER_SLOT_TOKEN,\n StreamPlayerSlotDirective,\n} from '../../stream-player-slot.directive';\nimport { SoopPlayerParamsDirective } from './headless/soop-player-params.directive';\nimport { SoopPlayerComponent } from './soop-player.component';\n\n@Component({\n selector: 'et-soop-player-slot',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: STREAM_PLAYER_COMPONENT_TOKEN, useValue: SoopPlayerComponent }],\n hostDirectives: [\n {\n directive: SoopPlayerParamsDirective,\n inputs: ['userId', 'videoId', 'width', 'height'],\n },\n {\n directive: StreamPlayerSlotDirective,\n inputs: ['streamSlotPriority', 'streamSlotOnPipBack'],\n },\n ],\n host: {\n class: 'et-soop-player-slot et-stream-player-slot',\n },\n})\nexport class SoopPlayerSlotComponent {\n public slotDirective = inject(STREAM_PLAYER_SLOT_TOKEN);\n}\n","import { Directive, computed, input, inputBinding } from '@angular/core';\nimport { STREAM_PLAYER_PARAMS_TOKEN, StreamPlayerParams } from '../../../stream-player-slot.directive';\n\n@Directive({\n providers: [{ provide: STREAM_PLAYER_PARAMS_TOKEN, useExisting: TikTokPlayerParamsDirective }],\n})\nexport class TikTokPlayerParamsDirective implements StreamPlayerParams {\n public videoId = input.required<string>();\n public width = input<string | number>('100%');\n public height = input<string | number>('100%');\n\n public readonly ASPECT_RATIO = 9 / 16;\n\n public playerId = computed(() => `tiktok-${this.videoId()}`);\n\n public createBindings() {\n return [\n inputBinding('videoId', () => this.videoId()),\n inputBinding('width', () => this.width()),\n inputBinding('height', () => this.height()),\n ];\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, InjectionToken, PLATFORM_ID, effect, inject, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { RuntimeError, injectHostElement, injectRenderer } from '@ethlete/core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { STREAM_ERROR_CODES } from '../../../stream-errors';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from '../../../stream-player';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerCapabilities, StreamPlayerState } from '../../../stream.types';\nimport { TikTokPlayerParamsDirective } from './tiktok-player-params.directive';\n\nexport const TIKTOK_PLAYER_TOKEN = new InjectionToken<TikTokPlayerDirective>('TIKTOK_PLAYER_TOKEN');\n\nconst TIKTOK_PLAYER_STATE = { INIT: -1, ENDED: 0, PLAYING: 1, PAUSED: 2, BUFFERING: 3 } as const;\n\n@Directive({\n providers: [\n { provide: TIKTOK_PLAYER_TOKEN, useExisting: TikTokPlayerDirective },\n { provide: STREAM_PLAYER_TOKEN, useExisting: TikTokPlayerDirective },\n ],\n})\nexport class TikTokPlayerDirective implements StreamPlayer {\n private platformId = inject(PLATFORM_ID);\n private params = inject(TikTokPlayerParamsDirective);\n private el = injectHostElement();\n private renderer = injectRenderer();\n\n public readonly CAPABILITIES: StreamPlayerCapabilities = {\n canPlay: true,\n canPause: true,\n canMute: true,\n canSeek: true,\n canGetDuration: true,\n isLiveCapable: false,\n hasThumbnail: false,\n };\n\n public state = signal<StreamPlayerState>({ ...DEFAULT_STREAM_PLAYER_STATE });\n public thumbnail = signal<string | null>(null);\n\n private iframe: HTMLIFrameElement | null = null;\n\n private playerResource = rxResource({\n params: () => (isPlatformBrowser(this.platformId) ? this.params.videoId() : null),\n stream: ({ params: videoId }) => {\n if (!videoId) return EMPTY;\n\n return new Observable<void>((subscriber) => {\n const iframe = this.renderer.createElement('iframe');\n const w = this.params.width();\n const h = this.params.height();\n\n iframe.src = `https://www.tiktok.com/player/v1/${videoId}?rel=0`;\n iframe.width = typeof w === 'number' ? String(w) : w;\n iframe.height = typeof h === 'number' ? String(h) : h;\n this.renderer.setStyle(iframe, { border: 'none' });\n iframe.scrolling = 'no';\n iframe.allowFullscreen = true;\n iframe.allow = 'accelerometer; autoplay; fullscreen; encrypted-media; gyroscope; picture-in-picture';\n\n this.iframe = iframe;\n\n const handleMessage = (event: Event) => {\n const e = event as MessageEvent;\n if (!iframe || e.source !== iframe.contentWindow) return;\n const msg = e.data as Record<string, unknown> | null;\n if (!msg?.['x-tiktok-player']) return;\n\n switch (msg['type']) {\n case 'onPlayerReady':\n this.state.update((s) => ({ ...s, isReady: true, isLoading: false }));\n break;\n case 'onStateChange': {\n const value = msg['value'] as number;\n this.state.update((s) => ({\n ...s,\n isPlaying: value === TIKTOK_PLAYER_STATE.PLAYING || value === TIKTOK_PLAYER_STATE.BUFFERING,\n isEnded: value === TIKTOK_PLAYER_STATE.ENDED,\n }));\n break;\n }\n case 'onCurrentTime': {\n const val = msg['value'] as { currentTime: number; duration: number };\n this.state.update((s) => ({ ...s, currentTime: val.currentTime, duration: val.duration }));\n break;\n }\n case 'onMute': {\n const muted = !!msg['value'];\n this.state.update((s) => ({ ...s, isMuted: muted }));\n break;\n }\n case 'onError': {\n const tiktokError = new RuntimeError(\n STREAM_ERROR_CODES.TIKTOK_PLAYER_ERROR,\n `[EtTikTokPlayer] TikTok player error: ${msg['value'] ?? 'unknown error'}`,\n );\n this.state.update((s) => ({ ...s, error: tiktokError, isLoading: false }));\n subscriber.error(tiktokError);\n break;\n }\n }\n };\n\n const unlisten = this.renderer.listen('window', 'message', handleMessage);\n\n iframe.onload = () => {\n this.state.update((s) => ({ ...s, isReady: true, isLoading: false }));\n subscriber.next();\n };\n\n this.renderer.appendChild(this.el, iframe);\n\n return () => {\n unlisten();\n this.iframe = null;\n if (this.el.contains(iframe)) {\n this.renderer.removeChild(this.el, iframe);\n }\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE });\n };\n });\n },\n });\n\n constructor() {\n effect(() => {\n const error = this.playerResource.error();\n this.state.update((s) => ({\n ...s,\n isLoading: error !== undefined ? false : this.playerResource.isLoading(),\n error: error ?? null,\n }));\n });\n }\n\n public play() {\n this.post('play');\n }\n\n public pause() {\n this.post('pause');\n }\n\n public mute() {\n this.post('mute');\n }\n\n public unmute() {\n this.post('unMute');\n }\n\n public seek(seconds: number) {\n this.post('seekTo', seconds);\n }\n\n public retry() {\n this.playerResource.reload();\n }\n\n private post(type: string, value?: unknown) {\n if (!this.iframe?.contentWindow) return;\n const message: Record<string, unknown> = { 'x-tiktok-player': true, type };\n if (value !== undefined) message['value'] = value;\n this.iframe.contentWindow.postMessage(message, '*');\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { TikTokPlayerParamsDirective } from './headless/tiktok-player-params.directive';\nimport { TIKTOK_PLAYER_TOKEN, TikTokPlayerDirective } from './headless/tiktok-player.directive';\n\n@Component({\n selector: 'et-tiktok-player',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TikTokPlayerParamsDirective,\n inputs: ['videoId', 'width', 'height'],\n },\n TikTokPlayerDirective,\n ],\n host: {\n class: 'et-tiktok-player et-stream-player',\n style: 'display: block; width: 100%; height: 100%',\n },\n})\nexport class TikTokPlayerComponent {\n public player = inject(TIKTOK_PLAYER_TOKEN);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport {\n STREAM_PLAYER_COMPONENT_TOKEN,\n STREAM_PLAYER_SLOT_TOKEN,\n StreamPlayerSlotDirective,\n} from '../../stream-player-slot.directive';\nimport { TikTokPlayerParamsDirective } from './headless/tiktok-player-params.directive';\nimport { TikTokPlayerComponent } from './tiktok-player.component';\n\n@Component({\n selector: 'et-tiktok-player-slot',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: STREAM_PLAYER_COMPONENT_TOKEN, useValue: TikTokPlayerComponent }],\n hostDirectives: [\n {\n directive: TikTokPlayerParamsDirective,\n inputs: ['videoId', 'width', 'height'],\n },\n {\n directive: StreamPlayerSlotDirective,\n inputs: ['streamSlotPriority', 'streamSlotOnPipBack'],\n },\n ],\n host: {\n class: 'et-tiktok-player-slot et-stream-player-slot',\n },\n})\nexport class TikTokPlayerSlotComponent {\n public slotDirective = inject(STREAM_PLAYER_SLOT_TOKEN);\n}\n","import { Directive, booleanAttribute, computed, input, inputBinding, numberAttribute } from '@angular/core';\nimport { STREAM_PLAYER_PARAMS_TOKEN, StreamPlayerParams } from '../../../stream-player-slot.directive';\n\n// Matches Twitch VOD URLs: twitch.tv/videos/123 or twitch.tv/video/123\nconst MATCH_VIDEO = /(?:www\\.|go\\.)?twitch\\.tv\\/(?:videos?\\/)([\\d]+)/;\n// Matches Twitch channel URLs: twitch.tv/channelname\nconst MATCH_CHANNEL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)/;\n\n@Directive({\n providers: [{ provide: STREAM_PLAYER_PARAMS_TOKEN, useExisting: TwitchPlayerParamsDirective }],\n})\nexport class TwitchPlayerParamsDirective implements StreamPlayerParams {\n public src = input.required<string>();\n public width = input<string | number>('100%');\n public height = input<string | number>('100%');\n public autoplay = input(false, { transform: booleanAttribute });\n public chat = input(false, { transform: booleanAttribute });\n public startTime = input(0, { transform: numberAttribute });\n\n public channel = computed(() => {\n const s = this.src();\n if (MATCH_VIDEO.test(s)) return null;\n const m = s.match(MATCH_CHANNEL);\n if (m) return m[1] ?? null;\n return /^\\d+$/.test(s) ? null : s;\n });\n\n public video = computed(() => {\n const s = this.src();\n const m = s.match(MATCH_VIDEO);\n if (m) return m[1] ?? null;\n if (MATCH_CHANNEL.test(s)) return null;\n return /^\\d+$/.test(s) ? s : null;\n });\n\n public playerId = computed(() => {\n const c = this.channel();\n return c ? `twitch-channel-${c}` : `twitch-video-${this.video()}`;\n });\n\n public createBindings() {\n return [\n inputBinding('src', () => this.src()),\n inputBinding('width', () => this.width()),\n inputBinding('height', () => this.height()),\n inputBinding('autoplay', () => this.autoplay()),\n inputBinding('chat', () => this.chat()),\n inputBinding('startTime', () => this.startTime()),\n ];\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, Directive, InjectionToken, PLATFORM_ID, effect, inject, isDevMode, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { RuntimeError, injectHostElement } from '@ethlete/core';\nimport { EMPTY, Observable, Subscription, interval, switchMap, tap } from 'rxjs';\nimport { STREAM_ERROR_CODES } from '../../../stream-errors';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from '../../../stream-player';\nimport { injectStreamScriptLoader } from '../../../stream-script-loader';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerCapabilities, StreamPlayerState } from '../../../stream.types';\nimport { TwitchPlayerParamsDirective } from './twitch-player-params.directive';\nimport { TwitchEmbedPlayer, TwitchPlayerParams, TwitchWindow } from './twitch-player.types';\n\nconst TWITCH_EMBED_URL = 'https://embed.twitch.tv/embed/v1.js';\n\nexport const TWITCH_PLAYER_TOKEN = new InjectionToken<TwitchPlayerDirective>('TWITCH_PLAYER_TOKEN');\n\n@Directive({\n providers: [\n { provide: TWITCH_PLAYER_TOKEN, useExisting: TwitchPlayerDirective },\n { provide: STREAM_PLAYER_TOKEN, useExisting: TwitchPlayerDirective },\n ],\n})\nexport class TwitchPlayerDirective implements StreamPlayer {\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private params = inject(TwitchPlayerParamsDirective);\n private el = injectHostElement();\n private scriptLoader = injectStreamScriptLoader();\n\n public readonly CAPABILITIES: StreamPlayerCapabilities = {\n canPlay: true,\n canPause: true,\n canMute: true,\n canSeek: true,\n canGetDuration: true,\n isLiveCapable: true,\n hasThumbnail: false,\n };\n\n public state = signal<StreamPlayerState>({ ...DEFAULT_STREAM_PLAYER_STATE });\n public thumbnail = signal<string | null>(null);\n\n private playerResource = rxResource({\n params: (): TwitchPlayerParams | null => {\n if (!isPlatformBrowser(this.platformId)) return null;\n const channel = this.params.channel();\n const video = this.params.video();\n if (!channel && !video) {\n if (isDevMode()) console.warn('[et-twitch-player] Either `channel` or `video` input is required.');\n\n return null;\n }\n return { channel, video };\n },\n stream: ({ params }) => {\n if (!params) return EMPTY;\n\n return this.scriptLoader.load(TWITCH_EMBED_URL).pipe(\n switchMap(\n () =>\n new Observable<TwitchEmbedPlayer>((subscriber) => {\n const win = this.document.defaultView as unknown as TwitchWindow;\n const TwitchEmbed = win.Twitch?.Embed;\n\n if (!TwitchEmbed) {\n subscriber.error(\n new RuntimeError(\n STREAM_ERROR_CODES.TWITCH_SDK_NOT_AVAILABLE,\n '[EtTwitchPlayer] Twitch Embed SDK not available after script load. Ensure the Twitch Embed SDK URL is accessible.',\n ),\n );\n\n return;\n }\n\n let active = true;\n let twitchPlayer: TwitchEmbedPlayer | null = null;\n let currentTimeSub: Subscription | null = null;\n\n const clearCurrentTimeInterval = () => {\n currentTimeSub?.unsubscribe();\n currentTimeSub = null;\n };\n\n const startSeconds = this.params.startTime();\n\n const embed = new TwitchEmbed(this.el, {\n width: this.params.width(),\n height: this.params.height(),\n parent: [this.document.defaultView?.location.hostname ?? ''],\n autoplay: this.params.autoplay(),\n layout: this.params.chat() ? 'video-with-chat' : 'video',\n ...(params.channel ? { channel: params.channel } : {}),\n ...(params.video ? { video: params.video } : {}),\n ...(startSeconds ? { time: secondsToTimestamp(startSeconds) } : {}),\n });\n\n // eslint-disable-next-line ethlete/prefer-rxjs-timer\n embed.addEventListener(TwitchEmbed.READY, () => {\n if (!active) return;\n twitchPlayer = embed.getPlayer();\n const duration = twitchPlayer.getDuration();\n this.state.set({\n ...DEFAULT_STREAM_PLAYER_STATE,\n isReady: true,\n isLoading: false,\n isMuted: twitchPlayer.getMuted(),\n duration: duration > 0 ? duration : null,\n });\n subscriber.next(twitchPlayer);\n });\n\n // eslint-disable-next-line ethlete/prefer-rxjs-timer\n embed.addEventListener(TwitchEmbed.PLAY, () => {\n if (!active || !twitchPlayer) return;\n clearCurrentTimeInterval();\n const player = twitchPlayer;\n currentTimeSub = interval(250)\n .pipe(\n tap(() => {\n this.state.update((s) => ({ ...s, currentTime: player.getCurrentTime() }));\n }),\n )\n .subscribe();\n const duration = player.getDuration();\n this.state.update((s) => ({\n ...s,\n isPlaying: true,\n isEnded: false,\n duration: duration > 0 ? duration : s.duration,\n currentTime: player.getCurrentTime(),\n }));\n });\n\n // eslint-disable-next-line ethlete/prefer-rxjs-timer\n embed.addEventListener(TwitchEmbed.PAUSE, () => {\n if (!active) return;\n clearCurrentTimeInterval();\n this.state.update((s) => ({ ...s, isPlaying: false }));\n });\n\n // eslint-disable-next-line ethlete/prefer-rxjs-timer\n embed.addEventListener(TwitchEmbed.ENDED, () => {\n if (!active) return;\n clearCurrentTimeInterval();\n this.state.update((s) => ({ ...s, isPlaying: false, isEnded: true }));\n });\n\n return () => {\n active = false;\n clearCurrentTimeInterval();\n this.el.innerHTML = '';\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE });\n };\n }),\n ),\n );\n },\n });\n\n constructor() {\n effect(() => {\n const error = this.playerResource.error();\n this.state.update((s) => ({\n ...s,\n isLoading: error !== undefined ? false : this.playerResource.isLoading(),\n error: error ?? null,\n }));\n });\n }\n\n public play() {\n this.playerResource.value()?.play();\n }\n\n public pause() {\n this.playerResource.value()?.pause();\n }\n\n public mute() {\n this.playerResource.value()?.setMuted(true);\n this.state.update((s) => ({ ...s, isMuted: true }));\n }\n\n public unmute() {\n this.playerResource.value()?.setMuted(false);\n this.state.update((s) => ({ ...s, isMuted: false }));\n }\n\n public seek(seconds: number) {\n this.playerResource.value()?.seek(seconds);\n }\n\n public retry() {\n this.playerResource.reload();\n }\n}\n\nconst secondsToTimestamp = (seconds: number) => {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.floor(seconds % 60);\n return `${h}h${m}m${s}s`;\n};\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { TwitchPlayerParamsDirective } from './headless/twitch-player-params.directive';\nimport { TWITCH_PLAYER_TOKEN, TwitchPlayerDirective } from './headless/twitch-player.directive';\n\n@Component({\n selector: 'et-twitch-player',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TwitchPlayerParamsDirective,\n inputs: ['src', 'width', 'height', 'autoplay', 'chat', 'startTime'],\n },\n TwitchPlayerDirective,\n ],\n host: {\n class: 'et-twitch-player et-stream-player',\n style: 'display: block; width: 100%; height: 100%',\n },\n})\nexport class TwitchPlayerComponent {\n public player = inject(TWITCH_PLAYER_TOKEN);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport {\n STREAM_PLAYER_COMPONENT_TOKEN,\n STREAM_PLAYER_SLOT_TOKEN,\n StreamPlayerSlotDirective,\n} from '../../stream-player-slot.directive';\nimport { TwitchPlayerParamsDirective } from './headless/twitch-player-params.directive';\nimport { TwitchPlayerComponent } from './twitch-player.component';\n\n@Component({\n selector: 'et-twitch-player-slot',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: STREAM_PLAYER_COMPONENT_TOKEN, useValue: TwitchPlayerComponent }],\n hostDirectives: [\n {\n directive: TwitchPlayerParamsDirective,\n inputs: ['src', 'width', 'height', 'autoplay', 'chat', 'startTime'],\n },\n {\n directive: StreamPlayerSlotDirective,\n inputs: ['streamSlotPriority', 'streamSlotOnPipBack'],\n },\n ],\n host: {\n class: 'et-twitch-player-slot et-stream-player-slot',\n },\n})\nexport class TwitchPlayerSlotComponent {\n public slotDirective = inject(STREAM_PLAYER_SLOT_TOKEN);\n}\n","import { Directive, computed, input, inputBinding, numberAttribute } from '@angular/core';\nimport { STREAM_PLAYER_PARAMS_TOKEN, StreamPlayerParams } from '../../../stream-player-slot.directive';\n\n@Directive({\n providers: [{ provide: STREAM_PLAYER_PARAMS_TOKEN, useExisting: VimeoPlayerParamsDirective }],\n})\nexport class VimeoPlayerParamsDirective implements StreamPlayerParams {\n public videoId = input.required<string | number>();\n public startTime = input(0, { transform: numberAttribute });\n public width = input<string | number>('100%');\n public height = input<string | number>('100%');\n\n public playerId = computed(() => `vimeo-${this.videoId()}`);\n\n public createBindings() {\n return [\n inputBinding('videoId', () => this.videoId()),\n inputBinding('startTime', () => this.startTime()),\n inputBinding('width', () => this.width()),\n inputBinding('height', () => this.height()),\n ];\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, Directive, InjectionToken, PLATFORM_ID, effect, inject, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { RuntimeError, injectHostElement, injectRenderer } from '@ethlete/core';\nimport { EMPTY, Observable, switchMap } from 'rxjs';\nimport { STREAM_ERROR_CODES } from '../../../stream-errors';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from '../../../stream-player';\nimport { injectStreamScriptLoader } from '../../../stream-script-loader';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerCapabilities, StreamPlayerState } from '../../../stream.types';\nimport { VimeoPlayerParamsDirective } from './vimeo-player-params.directive';\nimport { VimeoDurationChangeEvent, VimeoPlaybackEvent, VimeoPlayer, VimeoWindow } from './vimeo-player.types';\n\nconst VIMEO_SDK_URL = 'https://player.vimeo.com/api/player.js';\n\nexport const VIMEO_PLAYER_TOKEN = new InjectionToken<VimeoPlayerDirective>('VIMEO_PLAYER_TOKEN');\n\n@Directive({\n providers: [\n { provide: VIMEO_PLAYER_TOKEN, useExisting: VimeoPlayerDirective },\n { provide: STREAM_PLAYER_TOKEN, useExisting: VimeoPlayerDirective },\n ],\n})\nexport class VimeoPlayerDirective implements StreamPlayer {\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private params = inject(VimeoPlayerParamsDirective);\n private el = injectHostElement();\n private scriptLoader = injectStreamScriptLoader();\n private renderer = injectRenderer();\n\n public readonly CAPABILITIES: StreamPlayerCapabilities = {\n canPlay: true,\n canPause: true,\n canMute: true,\n canSeek: true,\n canGetDuration: true,\n isLiveCapable: true,\n hasThumbnail: false,\n };\n\n public state = signal<StreamPlayerState>({ ...DEFAULT_STREAM_PLAYER_STATE });\n public thumbnail = signal<string | null>(null);\n\n private playerResource = rxResource({\n params: () => (isPlatformBrowser(this.platformId) ? this.params.videoId() : null),\n stream: ({ params: videoId }) => {\n if (!videoId) return EMPTY;\n\n return this.scriptLoader.load(VIMEO_SDK_URL).pipe(\n switchMap(\n () =>\n new Observable<VimeoPlayer>((subscriber) => {\n const win = this.document.defaultView as unknown as VimeoWindow;\n const startTime = this.params.startTime();\n let active = true;\n\n if (!win.Vimeo?.Player) {\n subscriber.error(\n new RuntimeError(\n STREAM_ERROR_CODES.VIMEO_SDK_NOT_AVAILABLE,\n '[EtVimeoPlayer] Vimeo Player SDK not available after script load. Ensure the Vimeo SDK URL is accessible.',\n ),\n );\n\n return;\n }\n\n const w = this.params.width();\n const h = this.params.height();\n this.renderer.setStyle(this.el, {\n display: 'block',\n width: typeof w === 'number' ? `${w}px` : w,\n height: typeof h === 'number' ? `${h}px` : h,\n });\n\n const player = new win.Vimeo.Player(this.el, { id: videoId, responsive: true });\n\n const onPlay = (data: unknown) => {\n const e = data as VimeoPlaybackEvent;\n this.state.update((s) => ({\n ...s,\n isPlaying: true,\n isEnded: false,\n duration: e.duration,\n currentTime: e.seconds,\n }));\n };\n\n const onPause = (data: unknown) => {\n const e = data as VimeoPlaybackEvent;\n this.state.update((s) => ({ ...s, isPlaying: false, currentTime: e.seconds }));\n };\n\n const onEnded = (data: unknown) => {\n const e = data as VimeoPlaybackEvent;\n this.state.update((s) => ({ ...s, isPlaying: false, isEnded: true, currentTime: e.seconds }));\n };\n\n const onTimeUpdate = (data: unknown) => {\n const e = data as VimeoPlaybackEvent;\n this.state.update((s) => ({ ...s, duration: e.duration, currentTime: e.seconds }));\n };\n\n const onDurationChange = (data: unknown) => {\n const e = data as VimeoDurationChangeEvent;\n this.state.update((s) => ({ ...s, duration: e.duration }));\n };\n\n const onVolumeChange = () => {\n player.getMuted().then((isMuted) => {\n if (!active) return;\n this.state.update((s) => ({ ...s, isMuted }));\n });\n };\n\n player.on('play', onPlay);\n player.on('pause', onPause);\n player.on('ended', onEnded);\n player.on('timeupdate', onTimeUpdate);\n player.on('durationchange', onDurationChange);\n player.on('volumechange', onVolumeChange);\n\n player\n .ready()\n .then(() => Promise.all([player.getMuted(), player.getDuration()]))\n .then(([isMuted, duration]) => {\n if (!active) return;\n this.state.set({\n ...DEFAULT_STREAM_PLAYER_STATE,\n isReady: true,\n isLoading: false,\n isMuted,\n duration: isFinite(duration) ? duration : null,\n });\n if (startTime > 0) player.setCurrentTime(startTime);\n subscriber.next(player);\n })\n .catch((err: unknown) => {\n if (active)\n subscriber.error(\n new RuntimeError(\n STREAM_ERROR_CODES.VIMEO_SDK_NOT_AVAILABLE,\n `[EtVimeoPlayer] Vimeo player failed to become ready: ${err instanceof Error ? err.message : String(err)}`,\n ),\n );\n });\n\n return () => {\n active = false;\n player.off('play', onPlay);\n player.off('pause', onPause);\n player.off('ended', onEnded);\n player.off('timeupdate', onTimeUpdate);\n player.off('durationchange', onDurationChange);\n player.off('volumechange', onVolumeChange);\n player.destroy();\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE });\n };\n }),\n ),\n );\n },\n });\n\n constructor() {\n effect(() => {\n const error = this.playerResource.error();\n this.state.update((s) => ({\n ...s,\n isLoading: error !== undefined ? false : this.playerResource.isLoading(),\n error: error ?? null,\n }));\n });\n }\n\n public play() {\n this.playerResource.value()?.play();\n }\n\n public pause() {\n this.playerResource.value()?.pause();\n }\n\n public mute() {\n this.playerResource.value()?.setMuted(true);\n }\n\n public unmute() {\n this.playerResource.value()?.setMuted(false);\n }\n\n public seek(seconds: number) {\n this.playerResource.value()?.setCurrentTime(seconds);\n }\n\n public retry() {\n this.playerResource.reload();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { VimeoPlayerParamsDirective } from './headless/vimeo-player-params.directive';\nimport { VIMEO_PLAYER_TOKEN, VimeoPlayerDirective } from './headless/vimeo-player.directive';\n\n@Component({\n selector: 'et-vimeo-player',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: VimeoPlayerParamsDirective,\n inputs: ['videoId', 'startTime', 'width', 'height'],\n },\n VimeoPlayerDirective,\n ],\n host: {\n class: 'et-vimeo-player et-stream-player',\n style: 'display: block; width: 100%; height: 100%',\n },\n})\nexport class VimeoPlayerComponent {\n public player = inject(VIMEO_PLAYER_TOKEN);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport {\n STREAM_PLAYER_COMPONENT_TOKEN,\n STREAM_PLAYER_SLOT_TOKEN,\n StreamPlayerSlotDirective,\n} from '../../stream-player-slot.directive';\nimport { VimeoPlayerParamsDirective } from './headless/vimeo-player-params.directive';\nimport { VimeoPlayerComponent } from './vimeo-player.component';\n\n@Component({\n selector: 'et-vimeo-player-slot',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: STREAM_PLAYER_COMPONENT_TOKEN, useValue: VimeoPlayerComponent }],\n hostDirectives: [\n {\n directive: VimeoPlayerParamsDirective,\n inputs: ['videoId', 'startTime', 'width', 'height'],\n },\n {\n directive: StreamPlayerSlotDirective,\n inputs: ['streamSlotPriority', 'streamSlotOnPipBack'],\n },\n ],\n host: {\n class: 'et-vimeo-player-slot et-stream-player-slot',\n },\n})\nexport class VimeoPlayerSlotComponent {\n public slotDirective = inject(STREAM_PLAYER_SLOT_TOKEN);\n}\n","import { Directive, computed, input, inputBinding, numberAttribute } from '@angular/core';\nimport { STREAM_PLAYER_PARAMS_TOKEN, StreamPlayerParams } from '../../../stream-player-slot.directive';\n\n@Directive({\n providers: [{ provide: STREAM_PLAYER_PARAMS_TOKEN, useExisting: YoutubePlayerParamsDirective }],\n})\nexport class YoutubePlayerParamsDirective implements StreamPlayerParams {\n public videoId = input.required<string>();\n public startTime = input(0, { transform: numberAttribute });\n public width = input<string | number>('100%');\n public height = input<string | number>('100%');\n\n public playerId = computed(() => `youtube-${this.videoId()}`);\n\n public createBindings() {\n return [\n inputBinding('videoId', () => this.videoId()),\n inputBinding('startTime', () => this.startTime()),\n inputBinding('width', () => this.width()),\n inputBinding('height', () => this.height()),\n ];\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, Directive, InjectionToken, PLATFORM_ID, computed, effect, inject, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { RuntimeError, injectHostElement, injectRenderer } from '@ethlete/core';\nimport { EMPTY, Observable, Subscription, interval, of, switchMap, tap } from 'rxjs';\nimport { STREAM_ERROR_CODES } from '../../../stream-errors';\nimport { STREAM_PLAYER_TOKEN, StreamPlayer } from '../../../stream-player';\nimport { injectStreamScriptLoader } from '../../../stream-script-loader';\nimport { DEFAULT_STREAM_PLAYER_STATE, StreamPlayerCapabilities, StreamPlayerState } from '../../../stream.types';\nimport { YoutubePlayerParamsDirective } from './youtube-player-params.directive';\nimport { YtPlayer, YtWindow } from './youtube-player.types';\n\nconst YT_API_URL = 'https://www.youtube.com/iframe_api';\n\nexport const YOUTUBE_PLAYER_TOKEN = new InjectionToken<YoutubePlayerDirective>('YOUTUBE_PLAYER_TOKEN');\n\nconst waitForYtReady = (win: YtWindow): Observable<void> => {\n if (win.YT?.Player) return of(undefined);\n\n return new Observable<void>((subscriber) => {\n const prev = win.onYouTubeIframeAPIReady;\n win.onYouTubeIframeAPIReady = () => {\n prev?.();\n subscriber.next();\n subscriber.complete();\n };\n });\n};\n\n@Directive({\n providers: [\n { provide: YOUTUBE_PLAYER_TOKEN, useExisting: YoutubePlayerDirective },\n { provide: STREAM_PLAYER_TOKEN, useExisting: YoutubePlayerDirective },\n ],\n})\nexport class YoutubePlayerDirective implements StreamPlayer {\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private params = inject(YoutubePlayerParamsDirective);\n private el = injectHostElement();\n private scriptLoader = injectStreamScriptLoader();\n private renderer = injectRenderer();\n\n public readonly CAPABILITIES: StreamPlayerCapabilities = {\n canPlay: true,\n canPause: true,\n canMute: true,\n canSeek: true,\n canGetDuration: true,\n isLiveCapable: true,\n hasThumbnail: true,\n };\n\n public state = signal<StreamPlayerState>({ ...DEFAULT_STREAM_PLAYER_STATE });\n public thumbnail = computed(() => `https://img.youtube.com/vi/${this.params.videoId()}/mqdefault.jpg`);\n\n private playerResource = rxResource({\n params: () => (isPlatformBrowser(this.platformId) ? this.params.videoId() : null),\n stream: ({ params: videoId }) => {\n if (!videoId) return EMPTY;\n\n return this.scriptLoader.load(YT_API_URL).pipe(\n switchMap(() => waitForYtReady(this.document.defaultView as unknown as YtWindow)),\n switchMap(\n () =>\n new Observable<YtPlayer>((subscriber) => {\n const win = this.document.defaultView as unknown as YtWindow;\n\n if (!win.YT?.Player) {\n subscriber.error(\n new RuntimeError(\n STREAM_ERROR_CODES.YOUTUBE_SDK_NOT_AVAILABLE,\n '[EtYoutubePlayer] YT.Player not available after SDK load. Ensure the YouTube IFrame API URL is accessible.',\n ),\n );\n\n return;\n }\n\n let currentTimeSub: Subscription | null = null;\n\n const clearCurrentTimeInterval = () => {\n currentTimeSub?.unsubscribe();\n currentTimeSub = null;\n };\n\n const placeholder = this.renderer.createElement('div');\n this.renderer.appendChild(this.el, placeholder);\n\n const player = new win.YT.Player(placeholder, {\n videoId,\n width: this.params.width() as string,\n height: this.params.height() as string,\n playerVars: {\n enablejsapi: 1,\n origin: this.document.defaultView?.location.origin ?? '',\n start: this.params.startTime() || undefined,\n rel: 0,\n },\n events: {\n onReady: () => {\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE, isReady: true, isLoading: false });\n subscriber.next(player);\n },\n onStateChange: (event) => {\n const yt = win.YT;\n const s = event.data;\n const isPlaying = s === yt.PlayerState.PLAYING;\n\n clearCurrentTimeInterval();\n\n if (isPlaying) {\n currentTimeSub = interval(250)\n .pipe(\n tap(() => {\n this.state.update((prev) => ({\n ...prev,\n currentTime: player.getCurrentTime() ?? null,\n }));\n }),\n )\n .subscribe();\n }\n\n this.state.update((prev) => ({\n ...prev,\n isPlaying,\n isEnded: s === yt.PlayerState.ENDED,\n duration: player.getDuration() ?? null,\n currentTime: player.getCurrentTime() ?? null,\n isMuted: player.isMuted(),\n }));\n },\n },\n });\n\n return () => {\n clearCurrentTimeInterval();\n player.destroy();\n this.state.set({ ...DEFAULT_STREAM_PLAYER_STATE });\n };\n }),\n ),\n );\n },\n });\n\n constructor() {\n effect(() => {\n const error = this.playerResource.error();\n this.state.update((s) => ({\n ...s,\n isLoading: error !== undefined ? false : this.playerResource.isLoading(),\n error: error ?? null,\n }));\n });\n }\n\n public play() {\n this.playerResource.value()?.playVideo();\n }\n\n public pause() {\n this.playerResource.value()?.pauseVideo();\n }\n\n public mute() {\n this.playerResource.value()?.mute();\n this.state.update((s) => ({ ...s, isMuted: true }));\n }\n\n public unmute() {\n this.playerResource.value()?.unMute();\n this.state.update((s) => ({ ...s, isMuted: false }));\n }\n\n public seek(seconds: number) {\n this.playerResource.value()?.seekTo(seconds, true);\n }\n\n public retry() {\n this.playerResource.reload();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { YoutubePlayerParamsDirective } from './headless/youtube-player-params.directive';\nimport { YOUTUBE_PLAYER_TOKEN, YoutubePlayerDirective } from './headless/youtube-player.directive';\n\n@Component({\n selector: 'et-youtube-player',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: YoutubePlayerParamsDirective,\n inputs: ['videoId', 'startTime', 'width', 'height'],\n },\n YoutubePlayerDirective,\n ],\n host: {\n class: 'et-youtube-player et-stream-player',\n style: 'display: block; width: 100%; height: 100%',\n },\n})\nexport class YoutubePlayerComponent {\n public player = inject(YOUTUBE_PLAYER_TOKEN);\n}\n","import {\n Directive,\n InjectionToken,\n booleanAttribute,\n computed,\n createComponent,\n inject,\n input,\n inputBinding,\n} from '@angular/core';\nimport { STREAM_SLOT_PLAYER_ID_TOKEN } from '../../../stream-manager.types';\nimport { createStreamPlayerSlot } from '../../../stream-player-slot';\nimport { YoutubePlayerParamsDirective } from './youtube-player-params.directive';\nimport { YoutubePlayerComponent } from '../youtube-player.component';\n\nexport const YOUTUBE_PLAYER_SLOT_TOKEN = new InjectionToken<YoutubePlayerSlotDirective>('YOUTUBE_PLAYER_SLOT_TOKEN');\n\n@Directive({\n providers: [\n { provide: YOUTUBE_PLAYER_SLOT_TOKEN, useExisting: YoutubePlayerSlotDirective },\n {\n provide: STREAM_SLOT_PLAYER_ID_TOKEN,\n useFactory: () => {\n const directive = inject(YoutubePlayerSlotDirective);\n return directive.slot.currentPlayerIdSignal;\n },\n },\n ],\n})\nexport class YoutubePlayerSlotDirective {\n private params = inject(YoutubePlayerParamsDirective);\n\n public streamSlotPriority = input(false, { transform: booleanAttribute });\n public streamSlotOnPipBack = input<() => void>();\n\n public slot = createStreamPlayerSlot({\n playerId: computed(() => `youtube-${this.params.videoId()}`),\n aspectRatio: 16 / 9,\n streamSlotPriority: this.streamSlotPriority,\n streamSlotOnPipBack: this.streamSlotOnPipBack,\n createPlayer: (envInjector, elementInjector) =>\n createComponent(YoutubePlayerComponent, {\n environmentInjector: envInjector,\n elementInjector,\n bindings: [\n inputBinding('videoId', () => this.params.videoId()),\n inputBinding('startTime', () => this.params.startTime()),\n inputBinding('width', () => this.params.width()),\n inputBinding('height', () => this.params.height()),\n ],\n }),\n directiveName: 'YoutubePlayerSlotDirective',\n });\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport {\n STREAM_PLAYER_COMPONENT_TOKEN,\n STREAM_PLAYER_SLOT_TOKEN,\n StreamPlayerSlotDirective,\n} from '../../stream-player-slot.directive';\nimport { YoutubePlayerParamsDirective } from './headless/youtube-player-params.directive';\nimport { YoutubePlayerComponent } from './youtube-player.component';\n\n@Component({\n selector: 'et-youtube-player-slot',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: STREAM_PLAYER_COMPONENT_TOKEN, useValue: YoutubePlayerComponent }],\n hostDirectives: [\n {\n directive: YoutubePlayerParamsDirective,\n inputs: ['videoId', 'startTime', 'width', 'height'],\n },\n {\n directive: StreamPlayerSlotDirective,\n inputs: ['streamSlotPriority', 'streamSlotOnPipBack'],\n },\n ],\n host: {\n class: 'et-youtube-player-slot et-stream-player-slot',\n },\n})\nexport class YoutubePlayerSlotComponent {\n public slotDirective = inject(STREAM_PLAYER_SLOT_TOKEN);\n}\n","import { StreamConsentAcceptDirective } from './consent/headless/stream-consent-accept.directive';\nimport { StreamConsentComponent } from './consent/stream-consent.component';\nimport { StreamPlayerErrorComponent } from './error/stream-player-error.component';\nimport { StreamPlayerErrorDirective } from './error/headless/stream-player-error.directive';\nimport { StreamPlayerLoadingComponent } from './loading/stream-player-loading.component';\nimport { PipBackDirective } from './pip/headless/pip-back.directive';\nimport { PipBringBackDirective } from './pip/headless/pip-bring-back.directive';\nimport { PipCloseDirective } from './pip/headless/pip-close.directive';\nimport { PipGridToggleDirective } from './pip/headless/pip-grid-toggle.directive';\nimport { PipPlayerComponent } from './pip/pip-player.component';\nimport { PipWindowComponent } from './pip/pip-window.component';\nimport { DailymotionPlayerSlotComponent } from './platform/dailymotion/dailymotion-player-slot.component';\nimport { DailymotionPlayerComponent } from './platform/dailymotion/dailymotion-player.component';\nimport { DailymotionPlayerDirective } from './platform/dailymotion/headless/dailymotion-player.directive';\nimport { FacebookPlayerSlotComponent } from './platform/facebook/facebook-player-slot.component';\nimport { FacebookPlayerComponent } from './platform/facebook/facebook-player.component';\nimport { FacebookPlayerDirective } from './platform/facebook/headless/facebook-player.directive';\nimport { KickPlayerSlotComponent } from './platform/kick/kick-player-slot.component';\nimport { KickPlayerComponent } from './platform/kick/kick-player.component';\nimport { KickPlayerDirective } from './platform/kick/headless/kick-player.directive';\nimport { SoopPlayerSlotComponent } from './platform/soop/soop-player-slot.component';\nimport { SoopPlayerComponent } from './platform/soop/soop-player.component';\nimport { SoopPlayerDirective } from './platform/soop/headless/soop-player.directive';\nimport { TikTokPlayerSlotComponent } from './platform/tiktok/tiktok-player-slot.component';\nimport { TikTokPlayerComponent } from './platform/tiktok/tiktok-player.component';\nimport { TikTokPlayerDirective } from './platform/tiktok/headless/tiktok-player.directive';\nimport { TwitchPlayerSlotComponent } from './platform/twitch/twitch-player-slot.component';\nimport { TwitchPlayerComponent } from './platform/twitch/twitch-player.component';\nimport { TwitchPlayerDirective } from './platform/twitch/headless/twitch-player.directive';\nimport { VimeoPlayerSlotComponent } from './platform/vimeo/vimeo-player-slot.component';\nimport { VimeoPlayerComponent } from './platform/vimeo/vimeo-player.component';\nimport { VimeoPlayerDirective } from './platform/vimeo/headless/vimeo-player.directive';\nimport { YoutubePlayerParamsDirective } from './platform/youtube/headless/youtube-player-params.directive';\nimport { YoutubePlayerSlotComponent } from './platform/youtube/youtube-player-slot.component';\nimport { YoutubePlayerComponent } from './platform/youtube/youtube-player.component';\nimport { YoutubePlayerDirective } from './platform/youtube/headless/youtube-player.directive';\nimport { StreamPlayerSlotDirective } from './stream-player-slot.directive';\n\nexport const StreamImports = [\n StreamConsentComponent,\n StreamConsentAcceptDirective,\n StreamPlayerLoadingComponent,\n StreamPlayerErrorComponent,\n StreamPlayerErrorDirective,\n YoutubePlayerComponent,\n YoutubePlayerDirective,\n YoutubePlayerParamsDirective,\n YoutubePlayerSlotComponent,\n StreamPlayerSlotDirective,\n TwitchPlayerComponent,\n TwitchPlayerDirective,\n TwitchPlayerSlotComponent,\n VimeoPlayerComponent,\n VimeoPlayerDirective,\n VimeoPlayerSlotComponent,\n DailymotionPlayerComponent,\n DailymotionPlayerDirective,\n DailymotionPlayerSlotComponent,\n KickPlayerComponent,\n KickPlayerDirective,\n KickPlayerSlotComponent,\n FacebookPlayerComponent,\n FacebookPlayerDirective,\n FacebookPlayerSlotComponent,\n TikTokPlayerComponent,\n TikTokPlayerDirective,\n TikTokPlayerSlotComponent,\n SoopPlayerComponent,\n SoopPlayerDirective,\n SoopPlayerSlotComponent,\n PipWindowComponent,\n PipPlayerComponent,\n PipCloseDirective,\n PipBackDirective,\n PipBringBackDirective,\n PipGridToggleDirective,\n] as const;\n","import { InjectionToken } from '@angular/core';\nimport { TabBarTriggerDirective } from './tab-bar-trigger.directive';\nimport { TabBarDirective } from './tab-bar.directive';\n\nexport const TAB_BAR_TOKEN = new InjectionToken<TabBarDirective>('TAB_BAR_TOKEN');\n\nexport const TAB_BAR_TRIGGER_TOKEN = new InjectionToken<TabBarTriggerDirective>('TAB_BAR_TRIGGER_TOKEN');\n","import { Directive, ElementRef, computed, effect, inject, input, signal } from '@angular/core';\nimport { SurfaceInteractiveDirective } from '@ethlete/core';\nimport { ScrollableDirective } from '../../scrollable/headless/scrollable.directive';\nimport { TAB_BAR_TOKEN, TAB_BAR_TRIGGER_TOKEN } from './tab-bar.tokens';\n\nlet nextTriggerId = 0;\n\n@Directive({\n selector: '[etTabBarTrigger]',\n providers: [{ provide: TAB_BAR_TRIGGER_TOKEN, useExisting: TabBarTriggerDirective }],\n hostDirectives: [SurfaceInteractiveDirective],\n host: {\n role: 'tab',\n '[attr.id]': 'ID',\n '[attr.aria-selected]': 'isSelected()',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.disabled]': 'disabled() || null',\n '[attr.tabindex]': 'tabIndex()',\n '[class.et-tab-bar-trigger--just-activated]': 'justActivated()',\n '[class.et-tab-bar-trigger--no-initial-transition]': '!tabBar.animationsReady()',\n '(click)': 'handleClick()',\n '(mouseleave)': 'justActivated.set(false)',\n },\n})\nexport class TabBarTriggerDirective {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private scrollable = inject(ScrollableDirective, { optional: true });\n protected tabBar = inject(TAB_BAR_TOKEN);\n\n public disabled = input(false);\n\n public readonly ID = `et-tab-trigger-${nextTriggerId++}`;\n\n public justActivated = signal(false);\n\n public isSelected = computed(() => {\n const idx = this.tabBar.triggers().indexOf(this);\n\n return idx === this.tabBar.selectedIndex();\n });\n\n public tabIndex = computed(() => {\n const myIndex = this.tabBar.triggers().indexOf(this);\n const focusedIdx = this.tabBar.focusedIndex();\n\n if (focusedIdx !== -1) {\n return myIndex === focusedIdx ? 0 : -1;\n }\n\n return this.isSelected() ? 0 : -1;\n });\n\n constructor() {\n effect(() => {\n this.tabBar.registerTrigger(this);\n\n return () => this.tabBar.unregisterTrigger(this);\n });\n\n effect(() => {\n if (!this.scrollable) {\n return;\n }\n\n if (!this.isSelected()) {\n return;\n }\n\n if (!this.scrollable.getScrollContainerRef()()) {\n return;\n }\n\n this.scrollIntoView();\n });\n }\n\n /** @internal */\n public focus() {\n this.elementRef.nativeElement.focus();\n this.scrollIntoView();\n }\n\n /** @internal */\n public getElement() {\n return this.elementRef.nativeElement;\n }\n\n public handleClick() {\n if (!this.disabled()) {\n const wasSelected = this.isSelected();\n\n this.tabBar.selectTrigger(this);\n\n if (!wasSelected) {\n this.justActivated.set(true);\n }\n }\n }\n\n private scrollIntoView() {\n if (!this.scrollable) {\n return;\n }\n\n this.scrollable.scrollToElement({\n element: this.elementRef.nativeElement,\n origin: 'center',\n });\n }\n}\n","import { Directive, ElementRef, computed, effect, inject, untracked } from '@angular/core';\nimport { createFlipAnimation } from '@ethlete/core';\nimport { TAB_BAR_TOKEN, TAB_BAR_TRIGGER_TOKEN } from './tab-bar.tokens';\n\n@Directive({\n selector: '[etTabBarUnderline]',\n host: {\n class: 'et-tab-bar-underline',\n '[class.et-tab-bar-underline--active]': 'isActive()',\n },\n})\nexport class TabBarUnderlineDirective {\n private tabBar = inject(TAB_BAR_TOKEN);\n private trigger = inject(TAB_BAR_TRIGGER_TOKEN);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n public isActive = computed(() => this.tabBar.activeTrigger() === this.trigger);\n\n constructor() {\n effect(() => {\n const activeTrigger = this.tabBar.activeTrigger();\n\n if (activeTrigger !== this.trigger) {\n return;\n }\n\n const underlineEl = this.elementRef.nativeElement;\n const previousOriginEl = untracked(() => this.tabBar.lastActiveUnderlineElement());\n\n // Store this underline element for the next transition\n untracked(() => {\n this.tabBar.lastActiveUnderlineElement.set(underlineEl);\n });\n\n // Skip animation until the tab bar has completed initial render\n if (!previousOriginEl || !this.tabBar.animationsReady() || previousOriginEl === underlineEl) {\n return;\n }\n\n const flip = createFlipAnimation({\n element: underlineEl,\n originElement: previousOriginEl,\n duration: 250,\n easing: 'cubic-bezier(0.35, 0.25, 0.2, 1)',\n });\n\n flip.play();\n });\n }\n}\n","export const TAB_BAR_ORIENTATIONS = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical',\n} as const;\n\nexport type TabBarOrientation = (typeof TAB_BAR_ORIENTATIONS)[keyof typeof TAB_BAR_ORIENTATIONS];\n\nexport const TAB_BAR_FITS = {\n CONTENT: 'content',\n FILL: 'fill',\n} as const;\n\nexport type TabBarFit = (typeof TAB_BAR_FITS)[keyof typeof TAB_BAR_FITS];\n\nexport const TAB_BAR_VARIANTS = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n} as const;\n\nexport type TabBarVariant = (typeof TAB_BAR_VARIANTS)[keyof typeof TAB_BAR_VARIANTS];\n","import { afterNextRender, computed, DestroyRef, Directive, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { tap, timer } from 'rxjs';\nimport { TabBarTriggerDirective } from './tab-bar-trigger.directive';\nimport { TAB_BAR_TOKEN } from './tab-bar.tokens';\nimport {\n TAB_BAR_FITS,\n TAB_BAR_ORIENTATIONS,\n TAB_BAR_VARIANTS,\n TabBarFit,\n TabBarOrientation,\n TabBarVariant,\n} from './tab-bar.types';\n\nlet nextTabBarId = 0;\n\n@Directive({\n selector: '[etTabBar]',\n providers: [{ provide: TAB_BAR_TOKEN, useExisting: TabBarDirective }],\n host: {\n role: 'tablist',\n '[attr.aria-orientation]': 'orientation()',\n '(keydown)': 'handleKeydown($event)',\n '(focusout)': 'handleFocusout($event)',\n },\n})\nexport class TabBarDirective {\n private destroyRef = inject(DestroyRef);\n\n public orientation = input<TabBarOrientation>(TAB_BAR_ORIENTATIONS.HORIZONTAL);\n public fit = input<TabBarFit>(TAB_BAR_FITS.CONTENT);\n public variant = input<TabBarVariant>(TAB_BAR_VARIANTS.SECONDARY);\n public divider = input(true);\n /** @internal */\n public triggers = signal<TabBarTriggerDirective[]>([]);\n /** @internal */\n public focusedIndex = signal(-1);\n public selectedIndex = signal(0);\n\n /** @internal */\n public readonly ID = `et-tab-bar-${nextTabBarId++}`;\n\n /** @internal */\n public lastActiveUnderlineElement = signal<HTMLElement | null>(null);\n\n /** @internal */\n public animationsReady = signal(false);\n\n public activeTrigger = computed(() => {\n const idx = this.selectedIndex();\n const all = this.triggers();\n\n return all[idx] ?? null;\n });\n\n constructor() {\n afterNextRender(() => {\n timer(0)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.animationsReady.set(true);\n }),\n )\n .subscribe();\n });\n }\n\n /** @internal */\n public registerTrigger(trigger: TabBarTriggerDirective) {\n this.triggers.update((list) => [...list, trigger]);\n }\n\n /** @internal */\n public unregisterTrigger(trigger: TabBarTriggerDirective) {\n this.triggers.update((list) => list.filter((t) => t !== trigger));\n }\n\n /** @internal */\n public selectTrigger(trigger: TabBarTriggerDirective) {\n const idx = this.triggers().indexOf(trigger);\n\n if (idx !== -1) {\n this.selectedIndex.set(idx);\n }\n }\n\n public handleKeydown(event: KeyboardEvent) {\n const isHorizontal = this.orientation() === TAB_BAR_ORIENTATIONS.HORIZONTAL;\n const nextKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';\n const prevKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';\n\n if (event.key === nextKey) {\n event.preventDefault();\n this.moveFocus(1);\n } else if (event.key === prevKey) {\n event.preventDefault();\n this.moveFocus(-1);\n } else if (event.key === 'Home') {\n event.preventDefault();\n this.focusFirst();\n } else if (event.key === 'End') {\n event.preventDefault();\n this.focusLast();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n this.activateFocused();\n }\n }\n\n public handleFocusout(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n const triggers = this.triggers();\n const isFocusStillInBar = relatedTarget !== null && triggers.some((t) => t.getElement() === relatedTarget);\n\n if (!isFocusStillInBar) {\n this.focusedIndex.set(-1);\n }\n }\n\n private moveFocus(direction: 1 | -1) {\n const all = this.triggers();\n\n if (all.length === 0) {\n return;\n }\n\n let currentIndex = this.focusedIndex();\n\n if (currentIndex === -1) {\n currentIndex = this.selectedIndex();\n }\n\n let nextIndex = currentIndex;\n const length = all.length;\n\n for (let i = 0; i < length; i++) {\n nextIndex = (nextIndex + direction + length) % length;\n const trigger = all[nextIndex];\n\n if (trigger && !trigger.disabled()) {\n this.focusedIndex.set(nextIndex);\n trigger.focus();\n\n return;\n }\n }\n }\n\n private focusFirst() {\n const all = this.triggers();\n\n for (let i = 0; i < all.length; i++) {\n const trigger = all[i];\n\n if (trigger && !trigger.disabled()) {\n this.focusedIndex.set(i);\n trigger.focus();\n\n return;\n }\n }\n }\n\n private focusLast() {\n const all = this.triggers();\n\n for (let i = all.length - 1; i >= 0; i--) {\n const trigger = all[i];\n\n if (trigger && !trigger.disabled()) {\n this.focusedIndex.set(i);\n trigger.focus();\n\n return;\n }\n }\n }\n\n private activateFocused() {\n const idx = this.focusedIndex();\n\n if (idx === -1) {\n return;\n }\n\n const trigger = this.triggers()[idx];\n\n if (trigger && !trigger.disabled()) {\n trigger.getElement().click();\n }\n }\n}\n","import { DestroyRef, Directive, computed, effect, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RouterLinkActive } from '@angular/router';\nimport { tap } from 'rxjs';\nimport { TabBarTriggerDirective } from '../../headless/tab-bar-trigger.directive';\nimport { TabBarDirective } from '../../headless/tab-bar.directive';\n\n@Directive({\n selector: '[etNavTabLink]',\n})\nexport class NavTabLinkDirective {\n private routerLinkActive = inject(RouterLinkActive, { self: true });\n private tabBar = inject(TabBarDirective);\n private destroyRef = inject(DestroyRef);\n\n public trigger = inject(TabBarTriggerDirective);\n\n private routerLinkIsActive = signal(this.routerLinkActive.isActive ?? false);\n\n public isActive = computed(() => this.routerLinkIsActive());\n\n constructor() {\n this.routerLinkActive.isActiveChange\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap((active) => {\n this.routerLinkIsActive.set(active);\n }),\n )\n .subscribe();\n\n effect(() => {\n if (this.isActive()) {\n this.tabBar.selectTrigger(this.trigger);\n }\n });\n }\n}\n","import { Directive, computed, inject } from '@angular/core';\nimport { TabBarDirective } from '../../headless/tab-bar.directive';\n\nlet nextOutletId = 0;\n\n@Directive({\n selector: '[etNavTabsOutlet]',\n host: {\n role: 'tabpanel',\n '[attr.id]': 'ID',\n '[attr.aria-labelledby]': 'activeTriggerId()',\n },\n})\nexport class NavTabsOutletDirective {\n private tabBar = inject(TabBarDirective);\n\n public readonly ID = `et-nav-tabs-outlet-${nextOutletId++}`;\n\n public activeTriggerId = computed(() => this.tabBar.activeTrigger()?.ID ?? null);\n}\n","import { InjectionToken } from '@angular/core';\nimport { NavTabsDirective } from './nav-tabs.directive';\n\nexport const NAV_TABS_TOKEN = new InjectionToken<NavTabsDirective>('NAV_TABS_TOKEN');\n","import { Directive, computed } from '@angular/core';\nimport { NavigationEnd } from '@angular/router';\nimport { injectRouterEvent } from '@ethlete/core';\nimport { NAV_TABS_TOKEN } from './nav-tabs.tokens';\n\n@Directive({\n selector: '[etNavTabs]',\n providers: [{ provide: NAV_TABS_TOKEN, useExisting: NavTabsDirective }],\n})\nexport class NavTabsDirective {\n private routerEvent = injectRouterEvent();\n\n /** @internal */\n public navigationVersion = computed(() => {\n const event = this.routerEvent();\n\n if (event instanceof NavigationEnd) {\n return event.id;\n }\n\n return -1;\n });\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, inject } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { FocusRingDirective } from '../../focus-ring';\nimport { TabBarTriggerDirective } from '../headless/tab-bar-trigger.directive';\nimport { TabBarUnderlineDirective } from '../headless/tab-bar-underline.directive';\nimport { NavTabLinkDirective } from './headless/nav-tab-link.directive';\n\n@Component({\n selector: 'a[et-nav-tab-link]',\n template: `<span class=\"et-nav-tab-link__content\"><ng-content /></span><span etTabBarUnderline></span>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TabBarUnderlineDirective],\n hostDirectives: [\n {\n directive: RouterLink,\n inputs: [\n 'routerLink:et-nav-tab-link',\n 'queryParams',\n 'fragment',\n 'queryParamsHandling',\n 'preserveFragment',\n 'skipLocationChange',\n 'replaceUrl',\n 'state',\n 'relativeTo',\n ],\n },\n {\n directive: RouterLinkActive,\n inputs: ['routerLinkActive', 'routerLinkActiveOptions', 'ariaCurrentWhenActive'],\n },\n {\n directive: TabBarTriggerDirective,\n inputs: ['disabled'],\n },\n NavTabLinkDirective,\n FocusRingDirective,\n ],\n host: {\n class: 'et-nav-tab-link',\n '[class.et-nav-tab-link--active]': 'navTabLink.isActive()',\n '[class.et-nav-tab-link--disabled]': 'navTabLink.trigger.disabled()',\n '(keydown.space)': 'handleSpace($event)',\n },\n styles: `\n @property --et-nav-tab-link-padding-inline {\n syntax: '<length>';\n inherits: false;\n initial-value: 16px;\n }\n\n @property --et-nav-tab-link-padding-block {\n syntax: '<length>';\n inherits: false;\n initial-value: 12px;\n }\n\n .et-nav-tab-link {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding-inline: var(--et-nav-tab-link-padding-inline);\n padding-block: var(--et-nav-tab-link-padding-block);\n text-decoration: none;\n color: var(--et-surface-interaction-solid, inherit);\n font-size: var(--et-nav-tabs-font-size, inherit);\n cursor: pointer;\n position: relative;\n white-space: nowrap;\n user-select: none;\n transition:\n color 150ms ease,\n background 150ms ease;\n outline: none;\n border-radius: 0.5rem;\n\n &.et-tab-bar-trigger--no-initial-transition {\n transition: none;\n }\n\n &.et-nav-tab-link--active:not(.et-tab-bar-trigger--just-activated):hover {\n background: rgb(var(--et-color-primary, 0 0 0) / 0.08);\n }\n\n &.et-nav-tab-link--active:not(.et-tab-bar-trigger--just-activated):focus-visible {\n background: rgb(var(--et-color-primary, 0 0 0) / 0.12);\n }\n\n &.et-nav-tab-link--active:not(.et-tab-bar-trigger--just-activated):active {\n background: rgb(var(--et-color-primary, 0 0 0) / 0.16);\n }\n\n [data-variant='primary'] & {\n flex-direction: column;\n gap: 4px;\n }\n\n [etIcon] {\n width: 1.2em;\n height: 1.2em;\n }\n\n &.et-nav-tab-link--active {\n color: var(--et-surface-color-solid, inherit);\n }\n\n &.et-nav-tab-link--disabled {\n pointer-events: none;\n cursor: default;\n }\n\n .et-nav-tab-link__content {\n display: inline-flex;\n align-items: center;\n gap: inherit;\n border-radius: 0.5rem;\n padding: 4px 8px;\n margin: -4px -8px;\n }\n\n &:focus-visible .et-nav-tab-link__content {\n outline: 2px solid var(--et-theme-color-primary-solid, currentColor);\n outline-offset: 2px;\n }\n\n .et-tab-bar-underline {\n position: absolute;\n z-index: 1;\n background: var(--et-theme-color-ink-solid, currentColor);\n border-radius: var(--et-nav-tabs-underline-radius, 1px);\n pointer-events: none;\n opacity: 0;\n }\n\n .et-tab-bar-underline--active {\n opacity: 1;\n }\n }\n\n [data-orientation='horizontal'] .et-nav-tab-link .et-tab-bar-underline {\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--et-nav-tabs-underline-size, 2px);\n transform-origin: left;\n }\n\n [data-variant='primary'][data-orientation='horizontal'] .et-nav-tab-link .et-tab-bar-underline {\n left: 25%;\n right: 25%;\n height: var(--et-nav-tabs-underline-size, 3px);\n border-radius: var(--et-nav-tabs-underline-size, 3px) var(--et-nav-tabs-underline-size, 3px) 0 0;\n }\n\n [data-orientation='vertical'] .et-nav-tab-link .et-tab-bar-underline {\n left: 0;\n top: 0;\n bottom: 0;\n width: var(--et-nav-tabs-underline-size, 2px);\n transform-origin: top;\n }\n\n [data-variant='primary'][data-orientation='vertical'] .et-nav-tab-link .et-tab-bar-underline {\n top: 25%;\n bottom: 25%;\n width: var(--et-nav-tabs-underline-size, 3px);\n border-radius: 0 var(--et-nav-tabs-underline-size, 3px) var(--et-nav-tabs-underline-size, 3px) 0;\n }\n\n [data-size='sm'] .et-nav-tab-link {\n --et-nav-tab-link-padding-inline: 12px;\n --et-nav-tab-link-padding-block: 8px;\n }\n\n [data-size='md'] .et-nav-tab-link {\n --et-nav-tab-link-padding-inline: 16px;\n --et-nav-tab-link-padding-block: 12px;\n }\n\n [data-size='lg'] .et-nav-tab-link {\n --et-nav-tab-link-padding-inline: 20px;\n --et-nav-tab-link-padding-block: 14px;\n }\n `,\n})\nexport class NavTabLinkComponent {\n protected navTabLink = inject(NavTabLinkDirective);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected handleSpace(event: Event) {\n event.preventDefault();\n this.elementRef.nativeElement.click();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { NavTabsOutletDirective } from './headless/nav-tabs-outlet.directive';\n\n@Component({\n selector: 'et-nav-tabs-outlet',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [NavTabsOutletDirective],\n host: {\n class: 'et-nav-tabs-outlet',\n },\n styles: `\n .et-nav-tabs-outlet {\n display: block;\n }\n `,\n})\nexport class NavTabsOutletComponent {}\n","export const TAB_SIZES = {\n SM: 'sm',\n MD: 'md',\n LG: 'lg',\n} as const;\n\nexport type TabSize = (typeof TAB_SIZES)[keyof typeof TAB_SIZES];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject, input } from '@angular/core';\nimport { ProvideColorDirective, ProvideSurfaceDirective } from '@ethlete/core';\nimport { SCROLLABLE_IMPORTS } from '../../scrollable/scrollable.imports';\nimport { TabBarDirective } from '../headless/tab-bar.directive';\nimport { TAB_SIZES, TabSize } from '../tab-sizes';\nimport { NavTabsDirective } from './headless/nav-tabs.directive';\n\n@Component({\n selector: 'et-nav-tabs',\n template: `\n <et-scrollable\n [direction]=\"tabBar.orientation()\"\n [itemSize]=\"tabBar.fit() === 'fill' ? 'same' : 'auto'\"\n [renderMasks]=\"false\"\n class=\"et-nav-tabs__scrollable\"\n buttonPosition=\"inside\"\n scrollMode=\"element\"\n scrollOrigin=\"center\"\n scrollableClass=\"et-nav-tabs__container\"\n >\n <ng-content />\n </et-scrollable>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SCROLLABLE_IMPORTS],\n hostDirectives: [\n {\n directive: ProvideSurfaceDirective,\n inputs: ['etProvideSurface:surface'],\n },\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n {\n directive: TabBarDirective,\n inputs: ['orientation', 'fit', 'divider', 'variant'],\n },\n NavTabsDirective,\n ],\n host: {\n class: 'et-nav-tabs',\n '[attr.data-orientation]': 'tabBar.orientation()',\n '[attr.data-size]': 'size()',\n '[attr.data-fit]': 'tabBar.fit()',\n '[attr.data-divider]': 'tabBar.divider()',\n '[attr.data-variant]': 'tabBar.variant()',\n },\n styles: `\n @property --et-nav-tabs-gap {\n syntax: '<length>';\n inherits: false;\n initial-value: 0px;\n }\n\n @property --et-nav-tabs-underline-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 2px;\n }\n\n @property --et-nav-tabs-underline-radius {\n syntax: '<length>';\n inherits: false;\n initial-value: 1px;\n }\n\n @property --et-nav-tabs-font-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 1.4rem;\n }\n\n .et-nav-tabs {\n display: block;\n min-inline-size: 0;\n }\n\n .et-nav-tabs__scrollable {\n min-inline-size: 0;\n }\n\n .et-nav-tabs__container {\n position: relative;\n gap: var(--et-nav-tabs-gap);\n\n &::after {\n content: '';\n position: absolute;\n background: var(--et-surface-border-solid, currentColor);\n opacity: 0.2;\n pointer-events: none;\n }\n\n [data-divider='false'] &::after {\n display: none;\n }\n\n [data-orientation='horizontal'] &::after {\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--et-nav-tabs-underline-size);\n border-radius: var(--et-nav-tabs-underline-radius);\n }\n\n [data-orientation='vertical'] & {\n justify-items: start;\n }\n\n [data-orientation='vertical'] &::after {\n left: 0;\n top: 0;\n bottom: 0;\n width: var(--et-nav-tabs-underline-size);\n border-radius: var(--et-nav-tabs-underline-radius);\n }\n\n [data-size='sm'] & {\n --et-nav-tabs-underline-size: 2px;\n --et-nav-tabs-font-size: 1.2rem;\n }\n\n [data-size='md'] & {\n --et-nav-tabs-underline-size: 2px;\n --et-nav-tabs-font-size: 1.4rem;\n }\n\n [data-size='lg'] & {\n --et-nav-tabs-underline-size: 3px;\n --et-nav-tabs-font-size: 1.6rem;\n }\n\n [data-variant='primary'][data-size='sm'] & {\n --et-nav-tabs-underline-size: 3px;\n }\n\n [data-variant='primary'][data-size='md'] & {\n --et-nav-tabs-underline-size: 3px;\n }\n\n [data-variant='primary'][data-size='lg'] & {\n --et-nav-tabs-underline-size: 4px;\n }\n }\n `,\n})\nexport class NavTabsComponent {\n protected tabBar = inject(TabBarDirective);\n\n public size = input<TabSize>(TAB_SIZES.MD);\n}\n","export const TAB_ERROR_CODES = {\n MISSING_TAB_BAR: 1800,\n MISSING_TAB_GROUP: 1801,\n MISSING_TAB_PANEL: 1802,\n MISSING_NAV_TABS: 1803,\n} as const;\n","import { InjectionToken } from '@angular/core';\nimport { TabGroupDirective } from './tab-group.directive';\nimport { TabPanelDirective } from './tab-panel.directive';\n\nexport const TAB_GROUP_TOKEN = new InjectionToken<TabGroupDirective>('TAB_GROUP_TOKEN');\n\nexport const TAB_PANEL_TOKEN = new InjectionToken<TabPanelDirective>('TAB_PANEL_TOKEN');\n","import { Directive, ElementRef, effect, inject, input, model, signal, untracked } from '@angular/core';\nimport { canUseSessionMemory, createAutoSessionMemoryKey, createSessionMemory } from '@ethlete/core';\nimport { TabBarDirective } from '../../headless/tab-bar.directive';\nimport { TAB_GROUP_TOKEN } from './tab-group.tokens';\nimport { TabPanelDirective } from './tab-panel.directive';\n\nconst ET_TAB_GROUP_AUTO_SESSION_MEMORY_PREFIX = 'tab-group';\nconst ET_TAB_GROUP_SESSION_MEMORY_PREFIX = 'et-tab-group:';\n\n@Directive({\n selector: '[etTabGroup]',\n providers: [{ provide: TAB_GROUP_TOKEN, useExisting: TabGroupDirective }],\n})\nexport class TabGroupDirective {\n public tabBar = inject(TabBarDirective);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n public preserveContent = input(true);\n public selectedIndex = model(0);\n public sessionMemoryKey = input<string | null>(null);\n private sessionMemoryAvailable = canUseSessionMemory();\n\n /** @internal */\n public panels = signal<TabPanelDirective[]>([]);\n\n public restoredSessionMemoryKey = signal('');\n\n constructor() {\n effect(() => {\n const selectedIndex = this.selectedIndex();\n\n untracked(() => {\n if (this.tabBar.selectedIndex() !== selectedIndex) {\n this.tabBar.selectedIndex.set(selectedIndex);\n }\n });\n });\n\n effect(() => {\n const selectedIndex = this.tabBar.selectedIndex();\n\n untracked(() => {\n if (this.selectedIndex() !== selectedIndex) {\n this.selectedIndex.set(selectedIndex);\n }\n });\n });\n\n effect(() => {\n const selectedIndex = this.selectedIndex();\n const triggerCount = this.tabBar.triggers().length;\n\n if (triggerCount === 0) {\n return;\n }\n\n const resolvedSelectedIndex = this.resolveSelectedIndex(selectedIndex);\n\n if (resolvedSelectedIndex === null || resolvedSelectedIndex === selectedIndex) {\n return;\n }\n\n untracked(() => {\n this.selectedIndex.set(resolvedSelectedIndex);\n });\n });\n\n effect(() => {\n if (!this.sessionMemoryAvailable) {\n return;\n }\n\n const sessionMemoryKey = this.getResolvedSessionMemoryKey();\n const restoredSessionMemoryKey = this.restoredSessionMemoryKey();\n const triggerCount = this.tabBar.triggers().length;\n\n if (triggerCount === 0 || restoredSessionMemoryKey === sessionMemoryKey) {\n return;\n }\n\n const storedSelectedIndex = this.getSessionMemory(sessionMemoryKey).read();\n const resolvedSelectedIndex = this.resolveSelectedIndex(storedSelectedIndex ?? this.selectedIndex());\n\n untracked(() => {\n this.restoredSessionMemoryKey.set(sessionMemoryKey);\n\n if (resolvedSelectedIndex !== null && this.selectedIndex() !== resolvedSelectedIndex) {\n this.selectedIndex.set(resolvedSelectedIndex);\n }\n });\n });\n\n effect(() => {\n if (!this.sessionMemoryAvailable) {\n return;\n }\n\n const sessionMemoryKey = this.getResolvedSessionMemoryKey();\n const restoredSessionMemoryKey = this.restoredSessionMemoryKey();\n const selectedIndex = this.selectedIndex();\n const triggerCount = this.tabBar.triggers().length;\n\n if (restoredSessionMemoryKey !== sessionMemoryKey || triggerCount === 0) {\n return;\n }\n\n const resolvedSelectedIndex = this.resolveSelectedIndex(selectedIndex);\n\n if (resolvedSelectedIndex === null) {\n return;\n }\n\n this.getSessionMemory(sessionMemoryKey).write(resolvedSelectedIndex);\n });\n }\n\n /** @internal */\n public registerPanel(panel: TabPanelDirective) {\n this.panels.update((list) => [...list, panel]);\n }\n\n /** @internal */\n public unregisterPanel(panel: TabPanelDirective) {\n this.panels.update((list) => list.filter((p) => p !== panel));\n }\n\n private resolveSelectedIndex(index: number) {\n const triggers = this.tabBar.triggers();\n\n if (triggers.length === 0) {\n return null;\n }\n\n const clampedIndex = Math.min(Math.max(index, 0), triggers.length - 1);\n const selectedTrigger = triggers[clampedIndex];\n\n if (selectedTrigger && !selectedTrigger.disabled()) {\n return clampedIndex;\n }\n\n for (let currentIndex = 0; currentIndex < triggers.length; currentIndex++) {\n const trigger = triggers[currentIndex];\n\n if (trigger && !trigger.disabled()) {\n return currentIndex;\n }\n }\n\n return null;\n }\n\n private getSessionMemoryStorageKey(sessionMemoryKey: string) {\n return `${ET_TAB_GROUP_SESSION_MEMORY_PREFIX}${sessionMemoryKey}`;\n }\n\n private getResolvedSessionMemoryKey() {\n return (\n this.sessionMemoryKey() ??\n createAutoSessionMemoryKey({\n element: this.elementRef.nativeElement,\n prefix: ET_TAB_GROUP_AUTO_SESSION_MEMORY_PREFIX,\n })\n );\n }\n\n private getSessionMemory(sessionMemoryKey: string) {\n return createSessionMemory<number>({\n key: this.getSessionMemoryStorageKey(sessionMemoryKey),\n parse: (storedSelectedIndex) => this.parseSelectedIndex(storedSelectedIndex),\n serialize: (selectedIndex) => String(selectedIndex),\n });\n }\n\n private parseSelectedIndex(storedSelectedIndex: string) {\n const parsedSelectedIndex = Number.parseInt(storedSelectedIndex, 10);\n\n if (!Number.isInteger(parsedSelectedIndex)) {\n return null;\n }\n\n return parsedSelectedIndex;\n }\n}\n","import { Directive, computed, effect, inject, input } from '@angular/core';\nimport { TAB_GROUP_TOKEN, TAB_PANEL_TOKEN } from './tab-group.tokens';\n\nlet nextPanelId = 0;\n\n@Directive({\n selector: '[etTabPanel]',\n providers: [{ provide: TAB_PANEL_TOKEN, useExisting: TabPanelDirective }],\n host: {\n role: 'tabpanel',\n '[attr.id]': 'ID',\n '[attr.aria-labelledby]': 'triggerId()',\n '[attr.inert]': 'isInactive() || null',\n '[attr.hidden]': 'isHidden() || null',\n },\n})\nexport class TabPanelDirective {\n private tabGroup = inject(TAB_GROUP_TOKEN);\n\n public triggerId = input<string | null>(null);\n public readonly ID = `et-tab-panel-${nextPanelId++}`;\n\n public isActive = computed(() => {\n const idx = this.tabGroup.panels().indexOf(this);\n\n return idx === this.tabGroup.tabBar.selectedIndex();\n });\n\n public isInactive = computed(() => !this.isActive());\n\n public isHidden = computed(() => {\n if (this.tabGroup.preserveContent()) {\n return !this.isActive();\n }\n\n return false;\n });\n\n public shouldRender = computed(() => {\n if (this.tabGroup.preserveContent()) {\n return true;\n }\n\n return this.isActive();\n });\n\n constructor() {\n effect(() => {\n this.tabGroup.registerPanel(this);\n\n return () => this.tabGroup.unregisterPanel(this);\n });\n }\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[etTabTrigger]',\n host: {\n '[attr.aria-controls]': 'panelId()',\n },\n})\nexport class TabTriggerDirective {\n public panelId = input<string | null>(null);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[etTabLabel]',\n})\nexport class TabLabelDirective {\n public templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n contentChild,\n input,\n viewChild,\n} from '@angular/core';\nimport { TabLabelDirective } from './tab-label.directive';\n\n@Component({\n selector: 'et-tab',\n template: `\n <ng-template #implicitLabel>{{ label() }}</ng-template>\n <ng-template #contentTpl>\n <ng-content />\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'et-tab',\n style: 'display: none',\n },\n})\nexport class TabComponent {\n public label = input('');\n public icon = input<string | null>(null);\n public disabled = input(false);\n\n public customLabel = contentChild(TabLabelDirective);\n /** @internal */\n public implicitLabelRef = viewChild.required<TemplateRef<unknown>>('implicitLabel');\n /** @internal */\n public contentRef = viewChild.required<TemplateRef<unknown>>('contentTpl');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n contentChildren,\n inject,\n input,\n} from '@angular/core';\nimport { ProvideColorDirective, ProvideSurfaceDirective } from '@ethlete/core';\nimport { FocusRingDirective } from '../../focus-ring';\nimport { IconDirective } from '../../icon';\nimport { SCROLLABLE_IMPORTS } from '../../scrollable/scrollable.imports';\nimport { TabBarTriggerDirective } from '../headless/tab-bar-trigger.directive';\nimport { TabBarUnderlineDirective } from '../headless/tab-bar-underline.directive';\nimport { TabBarDirective } from '../headless/tab-bar.directive';\nimport { TAB_SIZES, TabSize } from '../tab-sizes';\nimport { TabGroupDirective } from './headless/tab-group.directive';\nimport { TabComponent } from './tab.component';\n\n@Component({\n selector: 'et-tab-group',\n template: `\n <div [attr.aria-orientation]=\"tabGroup.tabBar.orientation()\" class=\"et-tab-group__header-shell\" role=\"tablist\">\n <et-scrollable\n [direction]=\"tabGroup.tabBar.orientation()\"\n [itemSize]=\"tabGroup.tabBar.fit() === 'fill' ? 'same' : 'auto'\"\n [renderMasks]=\"false\"\n class=\"et-tab-group__header-scrollable\"\n buttonPosition=\"inside\"\n scrollMode=\"element\"\n scrollOrigin=\"center\"\n scrollableClass=\"et-tab-group__header\"\n >\n @for (tab of tabs(); track tab; let idx = $index) {\n <button\n [class.et-tab-group__trigger--active]=\"tabGroup.tabBar.selectedIndex() === idx\"\n [class.et-tab-group__trigger--disabled]=\"tab.disabled()\"\n [disabled]=\"tab.disabled()\"\n [attr.aria-controls]=\"'et-tab-panel-' + tabGroupId + '-' + idx\"\n class=\"et-tab-group__trigger\"\n etTabBarTrigger\n etFocusRing\n >\n <span class=\"et-tab-group__trigger-content\">\n @if (tab.icon(); as icon) {\n <span [etIcon]=\"icon\" class=\"et-tab-group__trigger-icon\"></span>\n }\n @if (tab.customLabel(); as customLabel) {\n <ng-container [ngTemplateOutlet]=\"customLabel.templateRef\" />\n } @else {\n <ng-container [ngTemplateOutlet]=\"tab.implicitLabelRef()\" />\n }\n </span>\n <span etTabBarUnderline></span>\n </button>\n }\n </et-scrollable>\n </div>\n <div class=\"et-tab-group__body\">\n @for (tab of tabs(); track tab; let idx = $index) {\n <div\n [attr.id]=\"'et-tab-panel-' + tabGroupId + '-' + idx\"\n [attr.aria-labelledby]=\"triggerElements()[idx]?.ID ?? null\"\n [attr.inert]=\"tabGroup.tabBar.selectedIndex() !== idx || null\"\n [attr.hidden]=\"isPanelHidden(idx) || null\"\n class=\"et-tab-group__panel\"\n role=\"tabpanel\"\n >\n @if (shouldRenderPanel(idx)) {\n <ng-container [ngTemplateOutlet]=\"tab.contentRef()\" />\n }\n </div>\n }\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TabBarTriggerDirective,\n TabBarUnderlineDirective,\n NgTemplateOutlet,\n IconDirective,\n FocusRingDirective,\n SCROLLABLE_IMPORTS,\n ],\n hostDirectives: [\n {\n directive: ProvideSurfaceDirective,\n inputs: ['etProvideSurface:surface'],\n },\n {\n directive: ProvideColorDirective,\n inputs: ['etProvideColor:color'],\n },\n {\n directive: TabBarDirective,\n inputs: ['orientation', 'fit', 'divider', 'variant'],\n },\n {\n directive: TabGroupDirective,\n inputs: ['preserveContent', 'selectedIndex', 'sessionMemoryKey'],\n outputs: ['selectedIndexChange'],\n },\n ],\n host: {\n class: 'et-tab-group',\n role: 'none',\n '[attr.data-orientation]': 'tabGroup.tabBar.orientation()',\n '[attr.data-size]': 'size()',\n '[attr.data-fit]': 'tabGroup.tabBar.fit()',\n '[attr.data-divider]': 'tabGroup.tabBar.divider()',\n '[attr.data-variant]': 'tabGroup.tabBar.variant()',\n },\n styles: `\n @property --et-tab-group-gap {\n syntax: '<length>';\n inherits: false;\n initial-value: 0px;\n }\n\n @property --et-tab-group-header-gap {\n syntax: '<length>';\n inherits: false;\n initial-value: 0px;\n }\n\n @property --et-tab-group-trigger-padding-inline {\n syntax: '<length>';\n inherits: false;\n initial-value: 16px;\n }\n\n @property --et-tab-group-trigger-padding-block {\n syntax: '<length>';\n inherits: false;\n initial-value: 12px;\n }\n\n @property --et-tab-group-underline-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 2px;\n }\n\n @property --et-tab-group-underline-radius {\n syntax: '<length>';\n inherits: false;\n initial-value: 1px;\n }\n\n @property --et-tab-group-font-size {\n syntax: '<length>';\n inherits: false;\n initial-value: 1.4rem;\n }\n\n .et-tab-group {\n display: flex;\n flex-direction: column;\n gap: var(--et-tab-group-gap);\n\n &[data-orientation='vertical'] {\n flex-direction: row;\n }\n\n &:where([data-size='sm']) {\n --et-tab-group-trigger-padding-inline: 12px;\n --et-tab-group-trigger-padding-block: 8px;\n --et-tab-group-font-size: 1.2rem;\n --et-tab-group-underline-size: 2px;\n }\n\n &:where([data-size='md']) {\n --et-tab-group-trigger-padding-inline: 16px;\n --et-tab-group-trigger-padding-block: 12px;\n --et-tab-group-font-size: 1.4rem;\n --et-tab-group-underline-size: 2px;\n }\n\n &:where([data-size='lg']) {\n --et-tab-group-trigger-padding-inline: 20px;\n --et-tab-group-trigger-padding-block: 14px;\n --et-tab-group-font-size: 1.6rem;\n --et-tab-group-underline-size: 3px;\n }\n\n &:where([data-variant='primary'][data-size='sm']) {\n --et-tab-group-underline-size: 3px;\n }\n\n &:where([data-variant='primary'][data-size='md']) {\n --et-tab-group-underline-size: 3px;\n }\n\n &:where([data-variant='primary'][data-size='lg']) {\n --et-tab-group-underline-size: 4px;\n }\n }\n\n .et-tab-group__header-shell {\n min-inline-size: 0;\n }\n\n .et-tab-group__header-scrollable {\n min-inline-size: 0;\n }\n\n .et-tab-group__header {\n position: relative;\n gap: var(--et-tab-group-header-gap);\n\n &::after {\n content: '';\n position: absolute;\n background: var(--et-surface-border-solid, currentColor);\n opacity: 0.2;\n pointer-events: none;\n }\n\n [data-divider='false'] &::after {\n display: none;\n }\n\n [data-orientation='horizontal'] &::after {\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--et-tab-group-underline-size);\n border-radius: var(--et-tab-group-underline-radius);\n }\n\n [data-orientation='vertical'] & {\n justify-items: start;\n }\n\n [data-orientation='vertical'] &::after {\n left: 0;\n top: 0;\n bottom: 0;\n width: var(--et-tab-group-underline-size);\n border-radius: var(--et-tab-group-underline-radius);\n }\n }\n\n .et-tab-group__trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding-inline: var(--et-tab-group-trigger-padding-inline);\n padding-block: var(--et-tab-group-trigger-padding-block);\n border: none;\n background: none;\n color: var(--et-surface-interaction-solid, inherit);\n font: inherit;\n font-size: var(--et-tab-group-font-size);\n cursor: pointer;\n position: relative;\n white-space: nowrap;\n user-select: none;\n transition:\n color 150ms ease,\n background 150ms ease;\n outline: none;\n border-radius: 0.5rem;\n\n &.et-tab-bar-trigger--no-initial-transition {\n transition: none;\n }\n\n &.et-tab-group__trigger--active:not(.et-tab-bar-trigger--just-activated):hover {\n background: rgb(var(--et-color-primary, 0 0 0) / 0.08);\n }\n\n &.et-tab-group__trigger--active:not(.et-tab-bar-trigger--just-activated):focus-visible {\n background: rgb(var(--et-color-primary, 0 0 0) / 0.12);\n }\n\n &.et-tab-group__trigger--active:not(.et-tab-bar-trigger--just-activated):active {\n background: rgb(var(--et-color-primary, 0 0 0) / 0.16);\n }\n\n .et-tab-group__trigger-content {\n display: flex;\n align-items: center;\n gap: 8px;\n border-radius: 0.5rem;\n padding: 4px 8px;\n margin: -4px -8px;\n }\n\n &:focus-visible .et-tab-group__trigger-content {\n outline: 2px solid var(--et-theme-color-primary-solid, currentColor);\n outline-offset: 2px;\n }\n\n .et-tab-group__trigger-icon {\n width: 1.2em;\n height: 1.2em;\n }\n\n [data-variant='primary'] & .et-tab-group__trigger-content {\n flex-direction: column;\n gap: 4px;\n }\n\n .et-tab-bar-underline {\n position: absolute;\n z-index: 1;\n background: var(--et-theme-color-ink-solid, currentColor);\n border-radius: var(--et-tab-group-underline-radius);\n pointer-events: none;\n opacity: 0;\n }\n\n .et-tab-bar-underline--active {\n opacity: 1;\n }\n\n [data-orientation='horizontal'] & .et-tab-bar-underline {\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--et-tab-group-underline-size);\n transform-origin: left;\n }\n\n [data-variant='primary'][data-orientation='horizontal'] & .et-tab-bar-underline {\n left: 25%;\n right: 25%;\n height: var(--et-tab-group-underline-size);\n border-radius: var(--et-tab-group-underline-size) var(--et-tab-group-underline-size) 0 0;\n }\n\n [data-orientation='vertical'] & .et-tab-bar-underline {\n left: 0;\n top: 0;\n bottom: 0;\n width: var(--et-tab-group-underline-size);\n transform-origin: top;\n }\n\n [data-variant='primary'][data-orientation='vertical'] & .et-tab-bar-underline {\n top: 25%;\n bottom: 25%;\n width: var(--et-tab-group-underline-size);\n border-radius: 0 var(--et-tab-group-underline-size) var(--et-tab-group-underline-size) 0;\n }\n\n &.et-tab-group__trigger--active {\n color: var(--et-surface-color-solid, inherit);\n }\n\n &:disabled {\n pointer-events: none;\n cursor: default;\n }\n }\n\n .et-tab-group__body {\n display: grid;\n }\n\n .et-tab-group__panel {\n grid-area: 1 / 1;\n\n &[hidden] {\n display: none;\n }\n }\n `,\n})\nexport class TabGroupComponent {\n protected tabGroup = inject(TabGroupDirective);\n\n public size = input<TabSize>(TAB_SIZES.MD);\n public tabs = contentChildren(TabComponent);\n protected triggerElements = computed(() => this.tabGroup.tabBar.triggers());\n\n /** @internal */\n public tabGroupId = this.tabGroup.tabBar.ID;\n\n protected isPanelHidden(index: number) {\n if (this.tabGroup.preserveContent()) {\n return this.tabGroup.tabBar.selectedIndex() !== index;\n }\n\n return false;\n }\n\n protected shouldRenderPanel(index: number) {\n if (this.tabGroup.preserveContent()) {\n return true;\n }\n\n return this.tabGroup.tabBar.selectedIndex() === index;\n }\n}\n","import { NavTabLinkComponent } from './nav-tabs/nav-tab-link.component';\nimport { NavTabsOutletComponent } from './nav-tabs/nav-tabs-outlet.component';\nimport { NavTabsComponent } from './nav-tabs/nav-tabs.component';\nimport { TabGroupComponent } from './tabs/tab-group.component';\nimport { TabLabelDirective } from './tabs/tab-label.directive';\nimport { TabComponent } from './tabs/tab.component';\n\nexport const NavTabImports = [NavTabsComponent, NavTabLinkComponent, NavTabsOutletComponent] as const;\n\nexport const TabImports = [TabGroupComponent, TabComponent, TabLabelDirective] as const;\n","import { Directive, inject } from '@angular/core';\nimport { OVERLAY_REF, OverlayRef } from '../../overlay';\nimport { ToggletipComponent } from '../toggletip.component';\n\n@Directive({\n selector: '[etToggletipClose]',\n host: {\n '(click)': 'overlayRef.close()',\n },\n})\nexport class ToggletipCloseDirective {\n protected overlayRef = inject<OverlayRef<ToggletipComponent, unknown>>(OVERLAY_REF);\n}\n","export const TOGGLETIP_ERROR_CODES = {\n TEMPLATE_TOGGLETIP_REQUIRES_LABEL: 1500,\n TRIGGER_REQUIRES_BUTTON: 1501,\n TRIGGER_REQUIRES_TOGGLETIP: 1502,\n} as const;\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Injector,\n TemplateRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n untracked,\n viewChild,\n} from '@angular/core';\nimport {\n ANIMATED_LIFECYCLE_TOKEN,\n AnimatedLifecycleDirective,\n COLOR_PROVIDER,\n ProvideColorDirective,\n ProvideSurfaceDirective,\n SURFACE_PROVIDER,\n injectSurfaceThemes,\n resolveSurfaceByElevation,\n setInputSignal,\n} from '@ethlete/core';\nimport { ToggletipContent } from './headless/toggletip.directive';\n\n@Component({\n selector: 'et-toggletip',\n templateUrl: './toggletip.component.html',\n styleUrl: './toggletip.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, AnimatedLifecycleDirective],\n hostDirectives: [ProvideColorDirective, ProvideSurfaceDirective],\n host: {\n class: 'et-toggletip',\n '[attr.id]': 'toggletipId()',\n '[attr.data-has-template]': 'hasTemplate() || null',\n },\n})\nexport class ToggletipComponent {\n private ownColorProvider = inject(ProvideColorDirective);\n private ownSurfaceProvider = inject(ProvideSurfaceDirective);\n private triggerColorProvider = inject(COLOR_PROVIDER, { optional: true, skipSelf: true });\n private triggerSurfaceProvider = inject(SURFACE_PROVIDER, { optional: true, skipSelf: true });\n protected injector = inject(Injector);\n\n public toggletipId = input.required<string>();\n protected contentId = input.required<string>();\n public content = input.required<ToggletipContent>();\n public colorProvider = input.required<ProvideColorDirective | null>();\n public surfaceProvider = input.required<ProvideSurfaceDirective | null>();\n\n public animatedLifecycle = viewChild(ANIMATED_LIFECYCLE_TOKEN);\n private surfaceThemes = injectSurfaceThemes({ optional: true });\n\n public hasTemplate = computed(() => this.content() instanceof TemplateRef);\n public contentText = computed<string | null>(() => {\n const content = this.content();\n return typeof content === 'string' ? content : null;\n });\n public contentTemplate = computed<TemplateRef<unknown> | null>(() => {\n const content = this.content();\n return content instanceof TemplateRef ? content : null;\n });\n public resolvedSurface = computed(() => {\n const themes = this.surfaceThemes;\n const parentSurfaceProvider = this.surfaceProvider() ?? this.triggerSurfaceProvider ?? null;\n\n if (!themes || !parentSurfaceProvider) {\n return null;\n }\n\n return (\n resolveSurfaceByElevation(\n themes,\n parentSurfaceProvider.surfaceType() ?? 'dark',\n parentSurfaceProvider.elevation() + 1,\n )?.name ?? null\n );\n });\n\n constructor() {\n effect(() => {\n const providedColor = this.colorProvider() ?? this.triggerColorProvider ?? null;\n\n untracked(() => {\n if (providedColor) {\n this.ownColorProvider.syncWithProvider(providedColor);\n }\n });\n });\n\n effect(() => {\n const surface = this.resolvedSurface();\n\n untracked(() => {\n setInputSignal(this.ownSurfaceProvider.surface, surface);\n });\n });\n }\n}\n","<div class=\"et-toggletip__surface\" etAnimatedLifecycle>\n <div [attr.id]=\"contentId()\" class=\"et-toggletip__content\">\n @if (contentText(); as text) {\n <p class=\"et-toggletip__text\">{{ text }}</p>\n } @else if (contentTemplate()) {\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" [ngTemplateOutletInjector]=\"injector\" />\n }\n </div>\n</div>\n\n<div class=\"et-toggletip__arrow\" et-floating-arrow></div>\n","let nextToggletipId = 0;\n\nexport const createToggletipId = (prefix = 'et-toggletip') => {\n nextToggletipId += 1;\n return `${prefix}-${nextToggletipId}`;\n};\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n TemplateRef,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { COLOR_PROVIDER, RuntimeError, SURFACE_PROVIDER } from '@ethlete/core';\nimport { OffsetOptions, Padding, Placement } from '@floating-ui/dom';\nimport { tap } from 'rxjs';\nimport { OverlayRef } from '../../overlay';\nimport { injectOverlayManager } from '../../overlay/overlay-manager';\nimport { TOGGLETIP_ERROR_CODES } from '../toggletip-errors';\nimport { ToggletipComponent } from '../toggletip.component';\nimport { createToggletipId } from '../toggletip.utils';\n\nexport type ToggletipContent = string | TemplateRef<unknown>;\n\n@Directive({\n selector: '[etToggletip]',\n exportAs: 'etToggletip',\n host: {\n '(click)': 'toggle()',\n '(keydown.escape)': 'hide()',\n '[attr.aria-controls]': 'controls()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-haspopup]': 'popupRole()',\n '[attr.data-toggletip-open]': 'isOpen() || null',\n },\n})\nexport class ToggletipDirective {\n private destroyRef = inject(DestroyRef);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private colorProvider = inject(COLOR_PROVIDER, { optional: true });\n private surfaceProvider = inject(SURFACE_PROVIDER, { optional: true });\n\n public content = input<ToggletipContent | null>(null, { alias: 'etToggletip' });\n public ariaLabel = input<string | null>(null, { alias: 'etToggletipAriaLabel' });\n public ariaLabelledBy = input<string | null>(null, { alias: 'etToggletipAriaLabelledBy' });\n public placement = input<Placement>('top');\n public fallbackPlacements = input<Placement[] | undefined>(undefined);\n public offset = input<OffsetOptions | null>(10);\n public arrowPadding = input<Padding | null>(8);\n public viewportPadding = input<Padding | null>(8);\n public disabled = input(false, { alias: 'etToggletipDisabled' });\n public open = model(false, { alias: 'etToggletipOpen' });\n\n private overlayManager = injectOverlayManager();\n\n /** @internal */\n public overlayRef = signal<OverlayRef<ToggletipComponent, unknown> | null>(null);\n\n private toggletipId = createToggletipId();\n private contentId = `${this.toggletipId}-content`;\n private resolvedAriaLabel = computed(() => {\n if (this.ariaLabelledBy()) {\n return null;\n }\n\n const ariaLabel = this.ariaLabel();\n if (ariaLabel) {\n return ariaLabel;\n }\n\n const content = this.content();\n return typeof content === 'string' ? content : null;\n });\n private resolvedAriaDescribedBy = computed(() => {\n const content = this.content();\n\n if (content instanceof TemplateRef) {\n return this.contentId;\n }\n\n return this.ariaLabel() || this.ariaLabelledBy() ? this.contentId : null;\n });\n\n constructor() {\n effect(() => {\n const content = this.content();\n const disabled = this.disabled();\n\n if ((content === null || disabled) && this.open()) {\n untracked(() => {\n this.open.set(false);\n });\n }\n });\n\n effect(() => {\n const content = this.content();\n const disabled = this.disabled();\n const open = this.open();\n\n if (!open || disabled || content === null) {\n untracked(() => {\n this.closeOverlay();\n });\n\n return;\n }\n\n if (!this.overlayRef()) {\n untracked(() => {\n this.mountToggletip(content);\n });\n }\n });\n }\n\n public toggle() {\n if (this.disabled() || this.content() === null) {\n this.hide();\n\n return;\n }\n\n this.open.update((open) => !open);\n }\n\n public show() {\n if (this.disabled() || this.content() === null) {\n return;\n }\n\n this.open.set(true);\n }\n\n public hide() {\n this.open.set(false);\n }\n\n public isOpen() {\n return this.open();\n }\n\n public controls() {\n return this.open() ? this.toggletipId : null;\n }\n\n public expanded() {\n return this.content() && !this.disabled() ? this.open() : null;\n }\n\n public popupRole() {\n return this.content() && !this.disabled() ? 'dialog' : null;\n }\n\n private mountToggletip(content: ToggletipContent) {\n if (this.overlayRef()) {\n return;\n }\n\n if (content instanceof TemplateRef && !this.ariaLabel() && !this.ariaLabelledBy()) {\n if (ngDevMode) {\n throw new RuntimeError(\n TOGGLETIP_ERROR_CODES.TEMPLATE_TOGGLETIP_REQUIRES_LABEL,\n '[ToggletipDirective] Template toggletips require etToggletipAriaLabel or etToggletipAriaLabelledBy so the dialog has an accessible name.',\n );\n }\n\n this.open.set(false);\n\n return;\n }\n\n const hostElement = this.elementRef.nativeElement;\n const overlayRef = this.overlayManager.open<ToggletipComponent>(ToggletipComponent, {\n id: this.toggletipId,\n inputBindings: {\n toggletipId: this.toggletipId,\n contentId: this.contentId,\n content,\n colorProvider: this.colorProvider ?? null,\n surfaceProvider: this.surfaceProvider ?? null,\n },\n role: 'dialog',\n ariaLabel: this.resolvedAriaLabel(),\n ariaLabelledBy: this.ariaLabelledBy(),\n ariaDescribedBy: this.resolvedAriaDescribedBy(),\n disableClose: false,\n hasBackdrop: false,\n mode: 'non-modal',\n origin: hostElement,\n closeOnEscape: true,\n closeOnOutsidePointer: true,\n panelClass: 'et-toggletip-panel',\n positionStrategy: {\n kind: 'anchored',\n referenceElement: hostElement,\n placement: this.placement(),\n fallbackPlacements: this.fallbackPlacements(),\n offset: this.offset(),\n arrowPadding: this.arrowPadding(),\n viewportPadding: this.viewportPadding(),\n shift: true,\n autoHide: true,\n autoCloseIfReferenceHidden: true,\n },\n restoreFocus: true,\n autoFocus: 'first-tabbable',\n });\n\n this.overlayRef.set(overlayRef);\n\n overlayRef\n .afterClosed()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n if (this.overlayRef() === overlayRef) {\n this.overlayRef.set(null);\n }\n\n if (this.open()) {\n this.open.set(false);\n }\n }),\n )\n .subscribe();\n }\n\n private closeOverlay() {\n this.overlayRef()?.close();\n }\n}\n","import { DestroyRef, Directive, ElementRef, afterNextRender, effect, inject, untracked } from '@angular/core';\nimport { RuntimeError, setInputSignal } from '@ethlete/core';\nimport { BUTTON_VARIANTS } from '../../button/button.component';\nimport { ButtonDirective } from '../../button/headless';\nimport { TOGGLETIP_ERROR_CODES } from '../toggletip-errors';\nimport { ToggletipDirective } from './toggletip.directive';\n\nconst PRESSED_VARIANT_MAP: Record<string, string> = {\n [BUTTON_VARIANTS.FILLED]: 'outline',\n [BUTTON_VARIANTS.OUTLINE]: 'filled',\n [BUTTON_VARIANTS.TONAL]: 'filled',\n [BUTTON_VARIANTS.TRANSPARENT]: 'tonal',\n};\n\n@Directive({\n selector: '[etToggletipTrigger]',\n exportAs: 'etToggletipTrigger',\n host: {\n '[attr.data-pressed-variant]': 'pressedVariant()',\n },\n})\nexport class ToggletipTriggerDirective {\n private button = inject(ButtonDirective, { optional: true });\n private destroyRef = inject(DestroyRef);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private toggletip = inject(ToggletipDirective, { optional: true });\n\n constructor() {\n const button = this.button;\n const toggletip = this.toggletip;\n\n if (button && toggletip) {\n effect(() => {\n const inactive = button.isInactive();\n\n untracked(() => {\n setInputSignal(toggletip.disabled, inactive);\n });\n });\n\n effect(() => {\n const open = toggletip.open();\n\n untracked(() => {\n setInputSignal(button.pressed, open);\n setInputSignal(button.emitAriaPressed, false);\n });\n });\n }\n\n if (ngDevMode) {\n afterNextRender(() => {\n if (!this.button) {\n throw new RuntimeError(\n TOGGLETIP_ERROR_CODES.TRIGGER_REQUIRES_BUTTON,\n '[ToggletipTriggerDirective] etToggletipTrigger must be used on an element that also has a button directive such as [et-button].',\n );\n }\n\n if (!this.toggletip) {\n throw new RuntimeError(\n TOGGLETIP_ERROR_CODES.TRIGGER_REQUIRES_TOGGLETIP,\n '[ToggletipTriggerDirective] etToggletipTrigger must be used on the same element as [etToggletip].',\n );\n }\n });\n }\n\n this.destroyRef.onDestroy(() => {\n if (!button || !toggletip) {\n return;\n }\n\n setInputSignal(toggletip.disabled, false);\n setInputSignal(button.pressed, false);\n setInputSignal(button.emitAriaPressed, true);\n });\n }\n\n public isOpen() {\n return this.toggletip?.open() ?? false;\n }\n\n public pressedVariant() {\n if (!this.isOpen()) {\n return null;\n }\n\n const variant = this.elementRef.nativeElement.getAttribute('data-variant');\n return variant ? (PRESSED_VARIANT_MAP[variant] ?? null) : null;\n }\n}\n","import { ToggletipCloseDirective, ToggletipDirective, ToggletipTriggerDirective } from './headless';\nimport { ToggletipComponent } from './toggletip.component';\n\nexport const TOGGLETIP_IMPORTS = [\n ToggletipDirective,\n ToggletipCloseDirective,\n ToggletipTriggerDirective,\n ToggletipComponent,\n] as const;\n","export const TOOLTIP_ERROR_CODES = {\n TEMPLATE_TOOLTIP_REQUIRES_DESCRIPTION: 1400,\n} as const;\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n untracked,\n viewChild,\n} from '@angular/core';\nimport {\n ANIMATED_LIFECYCLE_TOKEN,\n AnimatedLifecycleDirective,\n COLOR_PROVIDER,\n ProvideColorDirective,\n ProvideSurfaceDirective,\n SURFACE_PROVIDER,\n injectSurfaceThemes,\n resolveSurfaceByElevation,\n setInputSignal,\n} from '@ethlete/core';\nimport { TooltipContent } from './headless/tooltip.directive';\n\n@Component({\n selector: 'et-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, AnimatedLifecycleDirective],\n hostDirectives: [ProvideColorDirective, ProvideSurfaceDirective],\n host: {\n class: 'et-tooltip',\n role: 'tooltip',\n '[attr.id]': 'tooltipId()',\n '[attr.data-has-template]': 'hasTemplate() || null',\n },\n})\nexport class TooltipComponent {\n private ownColorProvider = inject(ProvideColorDirective);\n private ownSurfaceProvider = inject(ProvideSurfaceDirective);\n private triggerColorProvider = inject(COLOR_PROVIDER, { optional: true, skipSelf: true });\n private triggerSurfaceProvider = inject(SURFACE_PROVIDER, { optional: true, skipSelf: true });\n\n public tooltipId = input.required<string>();\n public content = input.required<TooltipContent>();\n public colorProvider = input.required<ProvideColorDirective | null>();\n public surfaceProvider = input.required<ProvideSurfaceDirective | null>();\n\n public animatedLifecycle = viewChild(ANIMATED_LIFECYCLE_TOKEN);\n private surfaceThemes = injectSurfaceThemes({ optional: true });\n\n public hasTemplate = computed(() => this.content() instanceof TemplateRef);\n public contentText = computed<string | null>(() => {\n const content = this.content();\n return typeof content === 'string' ? content : null;\n });\n public contentTemplate = computed<TemplateRef<unknown> | null>(() => {\n const content = this.content();\n return content instanceof TemplateRef ? content : null;\n });\n public resolvedSurface = computed(() => {\n const themes = this.surfaceThemes;\n const parentSurfaceProvider = this.surfaceProvider() ?? this.triggerSurfaceProvider ?? null;\n\n if (!themes || !parentSurfaceProvider) {\n return null;\n }\n\n return (\n resolveSurfaceByElevation(\n themes,\n parentSurfaceProvider.surfaceType() ?? 'dark',\n parentSurfaceProvider.elevation() + 1,\n )?.name ?? null\n );\n });\n\n constructor() {\n effect(() => {\n const providedColor = this.colorProvider() ?? this.triggerColorProvider ?? null;\n\n untracked(() => {\n if (providedColor) {\n this.ownColorProvider.syncWithProvider(providedColor);\n }\n });\n });\n\n effect(() => {\n const surface = this.resolvedSurface();\n\n untracked(() => {\n setInputSignal(this.ownSurfaceProvider.surface, surface);\n });\n });\n }\n}\n","<div class=\"et-tooltip__surface\" etAnimatedLifecycle>\n <div class=\"et-tooltip__content\">\n @if (contentText(); as text) {\n <p class=\"et-tooltip__text\">{{ text }}</p>\n } @else if (contentTemplate()) {\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n }\n </div>\n</div>\n\n<div class=\"et-tooltip__arrow\" et-floating-arrow></div>\n","let nextTooltipId = 0;\n\nexport const createTooltipId = (prefix = 'et-tooltip') => {\n nextTooltipId += 1;\n return `${prefix}-${nextTooltipId}`;\n};\n","import {\n DOCUMENT,\n DestroyRef,\n Directive,\n ElementRef,\n TemplateRef,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n COLOR_PROVIDER,\n RuntimeError,\n SURFACE_PROVIDER,\n injectFocusVisibleTracker,\n injectRenderer,\n} from '@ethlete/core';\nimport { OffsetOptions, Padding, Placement } from '@floating-ui/dom';\nimport { filter, fromEvent, map, switchMap, takeUntil, tap, timer } from 'rxjs';\nimport { OverlayRef } from '../../overlay';\nimport { injectOverlayManager } from '../../overlay/overlay-manager';\nimport { TOOLTIP_ERROR_CODES } from '../tooltip-errors';\nimport { TooltipComponent } from '../tooltip.component';\nimport { createTooltipId } from '../tooltip.utils';\n\nexport type TooltipContent = string | TemplateRef<unknown>;\n\nconst DEFAULT_TOOLTIP_DELAY = 300;\n\n@Directive({\n selector: '[etTooltip]',\n exportAs: 'etTooltip',\n host: {\n '(keydown.escape)': 'hide()',\n },\n})\nexport class TooltipDirective {\n private document = inject(DOCUMENT);\n private destroyRef = inject(DestroyRef);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private colorProvider = inject(COLOR_PROVIDER, { optional: true });\n private surfaceProvider = inject(SURFACE_PROVIDER, { optional: true });\n\n public content = input<TooltipContent | null>(null, { alias: 'etTooltip' });\n public ariaDescription = input<string | null>(null, { alias: 'etTooltipAriaDescription' });\n public placement = input<Placement>('top');\n public fallbackPlacements = input<Placement[] | undefined>(undefined);\n public offset = input<OffsetOptions | null>(8);\n public arrowPadding = input<Padding | null>(8);\n public viewportPadding = input<Padding | null>(8);\n public showDelay = input(DEFAULT_TOOLTIP_DELAY);\n public disabled = input(false, { alias: 'etTooltipDisabled' });\n private overlayManager = injectOverlayManager();\n private focusVisibleTracker = injectFocusVisibleTracker();\n private renderer = injectRenderer();\n\n /** @internal */\n public overlayRef = signal<OverlayRef<TooltipComponent, unknown> | null>(null);\n\n private hasHover = signal(false);\n private hasFocus = signal(false);\n private descriptionId = createTooltipId('et-tooltip-description');\n private descriptionElement: HTMLElement | null = null;\n\n private accessibleDescription = computed(() => {\n const ariaDescription = this.ariaDescription();\n\n if (ariaDescription) {\n return ariaDescription;\n }\n\n const content = this.content();\n return typeof content === 'string' ? content : null;\n });\n\n constructor() {\n this.setupHoverBehavior();\n this.setupFocusBehavior();\n\n effect(() => {\n const description = this.accessibleDescription();\n\n untracked(() => {\n this.syncDescriptionElement(description);\n\n if (!this.overlayRef()) {\n this.syncHostDescription(description ? this.descriptionId : null);\n }\n });\n });\n\n effect(() => {\n const content = this.content();\n const disabled = this.disabled();\n\n if ((content === null || disabled) && this.overlayRef()) {\n untracked(() => {\n this.hide();\n });\n }\n });\n\n this.destroyRef.onDestroy(() => {\n this.removeDescriptionElement();\n this.syncHostDescription(null);\n });\n }\n\n public show() {\n if (this.disabled()) {\n return;\n }\n\n const content = this.content();\n if (content === null) {\n return;\n }\n\n const accessibleDescription = this.accessibleDescription();\n if (content instanceof TemplateRef && !accessibleDescription) {\n if (ngDevMode) {\n throw new RuntimeError(\n TOOLTIP_ERROR_CODES.TEMPLATE_TOOLTIP_REQUIRES_DESCRIPTION,\n '[TooltipDirective] Template tooltips require etTooltipAriaDescription so non-visual users get an equivalent description.',\n );\n }\n\n return;\n }\n\n if (this.overlayRef()) {\n return;\n }\n\n const tooltipId = createTooltipId();\n const hostElement = this.elementRef.nativeElement;\n const overlayRef = this.overlayManager.open<TooltipComponent>(TooltipComponent, {\n id: tooltipId,\n inputBindings: {\n tooltipId,\n content,\n colorProvider: this.colorProvider ?? null,\n surfaceProvider: this.surfaceProvider ?? null,\n },\n disableClose: true,\n hasBackdrop: false,\n mode: 'non-modal',\n origin: hostElement,\n closeOnEscape: false,\n closeOnOutsidePointer: false,\n panelClass: 'et-tooltip-panel',\n positionStrategy: {\n kind: 'anchored',\n referenceElement: hostElement,\n placement: this.placement(),\n fallbackPlacements: this.fallbackPlacements(),\n offset: this.offset(),\n arrowPadding: this.arrowPadding(),\n viewportPadding: this.viewportPadding(),\n shift: true,\n autoHide: true,\n autoCloseIfReferenceHidden: true,\n },\n restoreFocus: false,\n autoFocus: false,\n });\n\n this.overlayRef.set(overlayRef);\n this.syncHostDescription(tooltipId);\n\n overlayRef\n .afterClosed()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n if (this.overlayRef() === overlayRef) {\n this.overlayRef.set(null);\n }\n\n this.syncHostDescription(this.accessibleDescription() ? this.descriptionId : null);\n }),\n )\n .subscribe();\n }\n\n public hide() {\n this.overlayRef()?.close();\n }\n\n private setupHoverBehavior() {\n const hostElement = this.elementRef.nativeElement;\n\n fromEvent(hostElement, 'mouseenter')\n .pipe(\n tap(() => this.hasHover.set(true)),\n switchMap(() =>\n timer(this.showDelay()).pipe(\n takeUntil(fromEvent(hostElement, 'mouseleave').pipe(tap(() => this.hasHover.set(false)))),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n if (!this.hasHover()) {\n return;\n }\n\n this.show();\n }),\n )\n .subscribe();\n\n fromEvent(hostElement, 'mouseleave')\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.hasHover.set(false);\n\n if (!this.hasFocus()) {\n this.hide();\n }\n }),\n )\n .subscribe();\n }\n\n private setupFocusBehavior() {\n const hostElement = this.elementRef.nativeElement;\n\n fromEvent(hostElement, 'focus')\n .pipe(\n map(() => this.focusVisibleTracker.isFocusVisible()),\n filter(Boolean),\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.hasFocus.set(true);\n this.show();\n }),\n )\n .subscribe();\n\n fromEvent(hostElement, 'blur')\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.hasFocus.set(false);\n\n if (!this.hasHover()) {\n this.hide();\n }\n }),\n )\n .subscribe();\n }\n\n private syncHostDescription(descriptionId: string | null) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-describedby', descriptionId);\n }\n\n private syncDescriptionElement(description: string | null) {\n if (!description) {\n this.removeDescriptionElement();\n\n return;\n }\n\n if (!this.descriptionElement) {\n const descriptionElement = this.renderer.createElement('div');\n\n this.renderer.setAttribute(descriptionElement, 'id', this.descriptionId);\n this.renderer.setStyle(descriptionElement, {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n border: '0',\n });\n\n this.renderer.appendChild(this.document.body, descriptionElement);\n this.descriptionElement = descriptionElement;\n }\n\n this.renderer.setTextContent(this.descriptionElement, description);\n }\n\n private removeDescriptionElement() {\n if (!this.descriptionElement) {\n return;\n }\n\n const parentNode = this.renderer.parentNode(this.descriptionElement);\n if (parentNode) {\n this.renderer.removeChild(parentNode, this.descriptionElement);\n }\n\n this.descriptionElement = null;\n }\n}\n","import { TooltipDirective } from './headless/tooltip.directive';\nimport { TooltipComponent } from './tooltip.component';\n\nexport const TOOLTIP_IMPORTS = [TooltipDirective, TooltipComponent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PRESSED_VARIANT_MAP","i1.ButtonDirective","i2.ButtonStylesDirective","i3","i4.FocusRingDirective","i3.FocusRingDirective","i4","uniqueIdCounter","SUPPORT_CONTENT_STATE","i1.FormFieldDirective","i2.SelectionListDirective","i1","i1.GridDirective","i1.GridItemDirective","i2.GridDragDirective","i3.GridResizeDirective","i3.IconDirective","i1.NotificationStackDirective","i1.ScrollableDirective","i1.StreamConsentDirective","i1.StreamPlayerErrorDirective","i1.IconDirective","i1.PipWindowParamsDirective","i2.TabBarTriggerDirective","i3.NavTabLinkDirective","i2.TabBarDirective","i3.NavTabsDirective","i4.ScrollableComponent","i3.TabGroupDirective"],"mappings":"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"}
|