@skyux/core 12.11.3 → 12.12.1
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.
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"skyux-core.mjs","sources":["../../../../../libs/components/core/src/lib/modules/adapter-service/adapter.module.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-breakpoints.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint-utils.ts","../../../../../libs/components/core/src/lib/modules/adapter-service/adapter.service.ts","../../../../../libs/components/core/src/lib/modules/affix/affix-auto-fit-context.ts","../../../../../libs/components/core/src/lib/modules/affix/affix-utils.ts","../../../../../libs/components/core/src/lib/modules/affix/dom-utils.ts","../../../../../libs/components/core/src/lib/modules/affix/affixer.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.service.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.directive.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.module.ts","../../../../../libs/components/core/src/lib/modules/content-info-provider/content-info-provider.ts","../../../../../libs/components/core/src/lib/modules/default-input-provider/default-input-provider.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-item.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-location.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.module.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component-location.ts","../../../../../libs/components/core/src/lib/modules/window/window-ref.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component.service.ts","../../../../../libs/components/core/src/lib/modules/mutation/mutation-observer-service.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-dom-adapter.service.ts","../../../../../libs/components/core/src/lib/modules/dock/sort-by-stack-order.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.component.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.component.html","../../../../../libs/components/core/src/lib/modules/dock/dock.service.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component.module.ts","../../../../../libs/components/core/src/lib/modules/file-reader/file-reader.service.ts","../../../../../libs/components/core/src/lib/modules/format/app-format.ts","../../../../../libs/components/core/src/lib/modules/help/help-global-options-token.ts","../../../../../libs/components/core/src/lib/modules/help/help.service.ts","../../../../../libs/components/core/src/lib/modules/id/id.service.ts","../../../../../libs/components/core/src/lib/modules/id/id.directive.ts","../../../../../libs/components/core/src/lib/modules/id/id.module.ts","../../../../../libs/components/core/src/lib/modules/layout-host/layout-host.service.ts","../../../../../libs/components/core/src/lib/modules/layout-host/layout-host.directive.ts","../../../../../libs/components/core/src/lib/modules/live-announcer/live-announcer.service.ts","../../../../../libs/components/core/src/lib/modules/log/log.module.ts","../../../../../libs/components/core/src/lib/modules/log/types/log-level.ts","../../../../../libs/components/core/src/lib/modules/log/types/log-level-token.ts","../../../../../libs/components/core/src/lib/modules/log/log.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint-observer.token.ts","../../../../../libs/components/core/src/lib/modules/resize-observer/resize-observer.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/container-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/media-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-query.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/provide-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/responsive-host.directive.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-query.module.ts","../../../../../libs/components/core/src/lib/modules/shared/sky-core-resources.module.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.options.ts","../../../../../libs/components/core/src/lib/modules/shared/number-format/number-format-utility.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.service.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.pipe.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.module.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-instance.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.module.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-adapter.service.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-context.ts","../../../../../libs/components/core/src/lib/modules/stacking-context/stacking-context-token.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.component.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.component.html","../../../../../libs/components/core/src/lib/modules/overlay/overlay.service.ts","../../../../../libs/components/core/src/lib/modules/percent-pipe/percent.pipe.ts","../../../../../libs/components/core/src/lib/modules/percent-pipe/percent-pipe.module.ts","../../../../../libs/components/core/src/lib/modules/resize-observer/resize-observer-media-query.service.ts","../../../../../libs/components/core/src/lib/modules/screen-reader-label/screen-reader-label.directive.ts","../../../../../libs/components/core/src/lib/modules/scroll-shadow/scroll-shadow.directive.ts","../../../../../libs/components/core/src/lib/modules/scrollable-host/scrollable-host.service.ts","../../../../../libs/components/core/src/lib/modules/title/title.service.ts","../../../../../libs/components/core/src/lib/modules/trim/trim.directive.ts","../../../../../libs/components/core/src/lib/modules/trim/trim.module.ts","../../../../../libs/components/core/src/lib/modules/ui-config/ui-config.service.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper-host-options.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.service.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.directive.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.module.ts","../../../../../libs/components/core/src/version.ts","../../../../../libs/components/core/src/skyux-core.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyCoreAdapterService` no longer needs the `SkyCoreAdapterModule`.\n * The `SkyCoreAdapterModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyCoreAdapterModule {}\n","/**\n * A list of all breakpoints.\n * @internal\n */\nexport const SKY_BREAKPOINTS = ['xs', 'sm', 'md', 'lg'] as const;\n\n/**\n * The name of a viewport or container breakpoint.\n */\nexport type SkyBreakpoint = (typeof SKY_BREAKPOINTS)[number];\n","/**\n * Represents all available media breakpoints.\n * @deprecated Use `SkyBreakpoint` instead.\n */\nexport enum SkyMediaBreakpoints {\n /**\n * Screen widths of 767px or less.\n */\n xs = 1,\n\n /**\n * Screen widths of 768px to 991px.\n */\n sm,\n\n /**\n * Screen widths of 992px to 1199px.\n */\n md,\n\n /**\n * Screen widths of 1200px or greater.\n */\n lg,\n}\n","import { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\n\nimport { SKY_BREAKPOINTS, SkyBreakpoint } from './breakpoint';\n\nconst breakpointLookup = new Map<SkyMediaBreakpoints, SkyBreakpoint>([\n [SkyMediaBreakpoints.xs, 'xs'],\n [SkyMediaBreakpoints.sm, 'sm'],\n [SkyMediaBreakpoints.md, 'md'],\n [SkyMediaBreakpoints.lg, 'lg'],\n]);\n\nconst legacyLookup = new Map<SkyBreakpoint, SkyMediaBreakpoints>([\n ['xs', SkyMediaBreakpoints.xs],\n ['sm', SkyMediaBreakpoints.sm],\n ['md', SkyMediaBreakpoints.md],\n ['lg', SkyMediaBreakpoints.lg],\n]);\n\n/**\n * Whether the value is of type `SkyBreakpoint`.\n * @internal\n */\nexport function isSkyBreakpoint(\n value: SkyBreakpoint | SkyMediaBreakpoints | null | undefined,\n): value is SkyBreakpoint {\n return (\n value !== null &&\n value !== undefined &&\n SKY_BREAKPOINTS.includes(value as SkyBreakpoint)\n );\n}\n\n/**\n * Transforms a `SkyMediaBreakpoints` value to `SkyBreakpoint`.\n * @internal\n */\nexport function toSkyBreakpoint(\n breakpoint: SkyMediaBreakpoints,\n): SkyBreakpoint {\n return breakpointLookup.get(breakpoint) as SkyBreakpoint;\n}\n\n/**\n * Transforms a `SkyBreakpoint` value to `SkyMediaBreakpoints`.\n * @internal\n */\nexport function toSkyMediaBreakpoints(\n breakpoint: SkyBreakpoint,\n): SkyMediaBreakpoints {\n return legacyLookup.get(breakpoint) as SkyMediaBreakpoints;\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport {\n SKY_BREAKPOINTS,\n SkyBreakpoint,\n} from '../breakpoint-observer/breakpoint';\nimport {\n isSkyBreakpoint,\n toSkyBreakpoint,\n} from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\n\nimport { SkyFocusableChildrenOptions } from './focusable-children-options';\n\nconst SKY_TABBABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'button:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[contenteditable=true]:not([disabled])',\n '*[tabindex]:not([disabled])',\n].join(', ');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyCoreAdapterService {\n #renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2) {\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Set the responsive container CSS class for a given element.\n *\n * @param elementRef - The element that will receive the new CSS class.\n * @param breakpoint - The breakpoint to determine which class gets set.\n * For example a breakpoint of \"xs\" will set a CSS class of \"sky-responsive-container-xs\".\n * @deprecated Use the `SkyResponsiveHostDirective` instead.\n */\n public setResponsiveContainerClass(\n elementRef: ElementRef,\n breakpoint: SkyBreakpoint | SkyMediaBreakpoints,\n ): void {\n const nativeEl = elementRef.nativeElement;\n\n for (const breakpointType of SKY_BREAKPOINTS) {\n this.#renderer.removeClass(\n nativeEl,\n `sky-responsive-container-${breakpointType}`,\n );\n }\n\n if (!isSkyBreakpoint(breakpoint)) {\n breakpoint = toSkyBreakpoint(breakpoint);\n }\n\n this.#renderer.addClass(nativeEl, `sky-responsive-container-${breakpoint}`);\n }\n\n /**\n * This method temporarily enables/disables pointer events.\n * This is helpful to prevent iFrames from interfering with drag events.\n *\n * @param enable - Set to `true` to enable pointer events. Set to `false` to disable.\n */\n public toggleIframePointerEvents(enable: boolean): void {\n const iframes = Array.from<HTMLElement>(\n document.querySelectorAll('iframe'),\n );\n for (const iframe of iframes) {\n this.#renderer.setStyle(iframe, 'pointer-events', enable ? '' : 'none');\n }\n }\n\n /**\n * Focuses on the first element found with an `autofocus` attribute inside the supplied `elementRef`.\n *\n * @param elementRef - The element to search within.\n * @return Returns `true` if a child element with autofocus is found.\n */\n public applyAutoFocus(elementRef?: ElementRef): boolean {\n if (!elementRef) {\n return false;\n }\n\n const elementWithAutoFocus =\n elementRef.nativeElement.querySelector('[autofocus]');\n\n // Child was found with the autofocus property. Set focus and return true.\n if (elementWithAutoFocus) {\n elementWithAutoFocus.focus();\n return true;\n }\n\n // No children were found with autofocus property. Return false.\n return false;\n }\n\n /**\n * Sets focus on the first focusable child of the `elementRef` parameter.\n * If no focusable children are found, and `focusOnContainerIfNoChildrenFound` is `true`,\n * focus will be set on the container element.\n *\n * @param elementRef - The element to search within.\n * @param containerSelector - A CSS selector indicating the container that should\n * receive focus if no focusable children are found.\n * @param focusOnContainerIfNoChildrenFound - It set to `true`, the container will\n * receive focus if no focusable children are found.\n */\n public getFocusableChildrenAndApplyFocus(\n elementRef: ElementRef,\n containerSelector?: string,\n focusOnContainerIfNoChildrenFound = false,\n ): void {\n const containerElement =\n elementRef.nativeElement.querySelector(containerSelector);\n\n if (containerElement) {\n const focusableChildren = this.getFocusableChildren(containerElement);\n\n // Focus first focusable child if available. Otherwise, set focus on container.\n if (\n !this.#focusFirstElement(focusableChildren) &&\n focusOnContainerIfNoChildrenFound\n ) {\n containerElement.focus();\n }\n }\n }\n\n /**\n * Returns an array of all focusable children of provided `element`.\n *\n * @param element - The HTMLElement to search within.\n * @param options - Options for getting focusable children.\n */\n public getFocusableChildren(\n element?: HTMLElement,\n options?: SkyFocusableChildrenOptions,\n ): HTMLElement[] {\n if (!element) {\n return [];\n }\n\n let elements = Array.prototype.slice.call(\n element.querySelectorAll(SKY_TABBABLE_SELECTOR),\n );\n\n // Unless ignoreTabIndex = true, filter out elements with tabindex = -1.\n if (!options || !options.ignoreTabIndex) {\n elements = elements.filter((el: HTMLElement) => {\n return el.tabIndex !== -1;\n });\n }\n\n // Unless ignoreVisibility = true, filter out elements that are not visible.\n if (!options || !options.ignoreVisibility) {\n elements = elements.filter((el: HTMLElement) => {\n return this.#isVisible(el);\n });\n }\n\n return elements;\n }\n\n /**\n * Returns the clientWidth of the provided elementRef.\n * @param elementRef - The element to calculate width from.\n */\n public getWidth(elementRef: ElementRef): number {\n return elementRef.nativeElement.clientWidth;\n }\n\n /**\n * Checks if an event target has a higher z-index than a given element.\n * @param target The event target element.\n * @param element The element to test against. A z-index must be explicitly set for this element.\n */\n public isTargetAboveElement(\n target: EventTarget,\n element: HTMLElement,\n ): boolean {\n const zIndex = getComputedStyle(element).zIndex;\n\n let el = target as HTMLElement;\n\n while (el) {\n // Getting the computed style only works for elements that exist in the DOM.\n // In certain scenarios, an element is removed after a click event; by the time the event\n // bubbles up to other elements, however, the element has been removed and the computed style returns empty.\n // In this case, we'll need to check the z-index directly, via the style property.\n const targetZIndex = getComputedStyle(el).zIndex || el.style.zIndex;\n if (\n targetZIndex !== '' &&\n targetZIndex !== 'auto' &&\n +targetZIndex > +zIndex\n ) {\n return true;\n }\n\n el = el.parentElement as HTMLElement;\n }\n\n return false;\n }\n\n /**\n * Remove inline height styles from the provided elements.\n * @param elementRef - The element to search within.\n * @param selector - The CSS selector to use when finding elements for removing height.\n */\n public resetHeight(elementRef: ElementRef, selector: string): void {\n const children = Array.from<HTMLElement>(\n elementRef.nativeElement.querySelectorAll(selector),\n );\n for (const child of children) {\n this.#renderer.removeStyle(child, 'height');\n }\n }\n\n /**\n * Sets all element heights to match the height of the tallest element.\n * @param elementRef - The element to search within.\n * @param selector - The CSS selector to use when finding elements for syncing height.\n */\n public syncMaxHeight(elementRef: ElementRef, selector: string): void {\n const children = Array.from<HTMLElement>(\n elementRef.nativeElement.querySelectorAll(selector),\n );\n /* istanbul ignore else */\n if (children.length > 0) {\n let maxHeight = 0;\n for (const child of children) {\n maxHeight = Math.max(maxHeight, child.offsetHeight);\n }\n for (const child of children) {\n this.#renderer.setStyle(child, 'height', `${maxHeight}px`);\n }\n }\n }\n\n #focusFirstElement(list: HTMLElement[]): boolean {\n if (list.length > 0) {\n list[0].focus();\n return true;\n }\n return false;\n }\n\n #isVisible(element: HTMLElement): boolean {\n const style = window.getComputedStyle(element);\n const isHidden = style.display === 'none' || style.visibility === 'hidden';\n if (isHidden) {\n return false;\n }\n\n const hasBounds = !!(\n element.offsetWidth ||\n element.offsetHeight ||\n element.getClientRects().length\n );\n return hasBounds;\n }\n}\n","export enum SkyAffixAutoFitContext {\n /**\n * Auto-fit functionality will respect the nearest overflow parent element's dimensions.\n */\n OverflowParent = 0,\n\n /**\n * Auto-fit functionality will respect the browser viewport dimensions.\n */\n Viewport = 1,\n}\n","import { SkyAffixPlacement } from './affix-placement';\n\nexport function getNextPlacement(\n placement: SkyAffixPlacement,\n): SkyAffixPlacement {\n const placements: SkyAffixPlacement[] = ['above', 'right', 'below', 'left'];\n\n let index = placements.indexOf(placement) + 1;\n if (index >= placements.length) {\n index = 0;\n }\n\n return placements[index];\n}\n\nexport function getInversePlacement(\n placement: SkyAffixPlacement,\n): SkyAffixPlacement {\n const pairings: Record<string, SkyAffixPlacement> = {\n above: 'below',\n below: 'above',\n right: 'left',\n left: 'right',\n };\n\n return pairings[placement];\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\n\nimport { SkyAffixOffset } from './affix-offset';\nimport { AffixRect } from './affix-rect';\n\nfunction useViewportForBounds(element: HTMLElement) {\n return 'BODY' === element.tagName;\n}\n\n/**\n * Returns the offset values of a given element.\n * @param element The HTML element.\n * @param bufferOffset An optional offset to add/subtract to the element's actual offset.\n */\nexport function getElementOffset(\n element: HTMLElement,\n bufferOffset?: SkyAffixOffset,\n): Required<SkyAffixOffset> {\n const bufferOffsetBottom = bufferOffset?.bottom || 0;\n const bufferOffsetLeft = bufferOffset?.left || 0;\n const bufferOffsetRight = bufferOffset?.right || 0;\n const bufferOffsetTop = bufferOffset?.top || 0;\n\n let top: number;\n let left: number;\n let right: number;\n let bottom: number;\n\n const clientRect = element.getBoundingClientRect();\n left = clientRect.left;\n top = clientRect.top;\n right = clientRect.right;\n bottom = clientRect.bottom;\n\n bottom -= bufferOffsetBottom;\n left += bufferOffsetLeft;\n right -= bufferOffsetRight;\n top += bufferOffsetTop;\n\n return {\n bottom,\n left,\n right,\n top,\n };\n}\n\n/**\n * Returns an AffixRect that represents the outer dimensions of a given element.\n */\nexport function getOuterRect(element: HTMLElement): Required<AffixRect> {\n const rect = element.getBoundingClientRect();\n const computedStyle = window.getComputedStyle(element, undefined);\n const marginTop = parseFloat(computedStyle.marginTop);\n const marginLeft = parseFloat(computedStyle.marginLeft);\n const marginRight = parseFloat(computedStyle.marginRight);\n const marginBottom = parseFloat(computedStyle.marginBottom);\n\n return {\n top: rect.top - marginTop,\n left: rect.left - marginLeft,\n bottom: rect.top + rect.height + marginBottom,\n right: rect.left + rect.width + marginLeft + marginRight,\n width: rect.width + marginLeft + marginRight,\n height: rect.height + marginTop + marginBottom,\n };\n}\n\n/**\n * Returns the visible rect for a given element.\n */\nexport function getVisibleRectForElement(\n viewportRuler: ViewportRuler,\n element: HTMLElement,\n): Required<AffixRect> {\n const elementRect = getOuterRect(element);\n const viewportRect = viewportRuler.getViewportRect();\n\n const visibleRect = {\n top: Math.max(elementRect.top, 0),\n left: Math.max(elementRect.left, 0),\n bottom: Math.min(elementRect.bottom, viewportRect.height),\n right: Math.min(elementRect.right, viewportRect.width),\n };\n\n return {\n ...visibleRect,\n width: visibleRect.right - visibleRect.left,\n height: visibleRect.bottom - visibleRect.top,\n };\n}\n\nexport function getOverflowParents(child: HTMLElement): HTMLElement[] {\n const bodyElement = window.document.body;\n const results = [];\n\n let parentElement = child?.parentNode;\n\n while (parentElement !== undefined && parentElement instanceof HTMLElement) {\n if (parentElement.matches('body')) {\n break;\n }\n\n const computedStyle = window.getComputedStyle(parentElement, undefined);\n const overflowY = computedStyle.overflowY.toLowerCase();\n\n const largerThanTheDocumentElement =\n window.document.documentElement.scrollWidth < parentElement.scrollWidth ||\n window.document.documentElement.scrollHeight < parentElement.scrollHeight;\n const hasOverflowRules =\n overflowY === 'auto' || overflowY === 'hidden' || overflowY === 'scroll';\n\n if (largerThanTheDocumentElement || hasOverflowRules) {\n results.push(parentElement);\n }\n if (computedStyle.position === 'fixed') {\n break;\n }\n\n parentElement = parentElement.parentNode;\n }\n\n results.push(bodyElement);\n\n return results;\n}\n\n/**\n * Confirms offset is fully visible within a parent element.\n */\nexport function isOffsetFullyVisibleWithinParent(\n viewportRuler: ViewportRuler,\n parent: HTMLElement,\n offset: Required<SkyAffixOffset>,\n bufferOffset?: SkyAffixOffset,\n): boolean {\n let parentOffset: Required<SkyAffixOffset>;\n\n if (useViewportForBounds(parent)) {\n const viewportRect = viewportRuler.getViewportRect();\n parentOffset = {\n top: 0,\n left: 0,\n right: viewportRect.width,\n bottom: viewportRect.height,\n };\n } else if (bufferOffset) {\n parentOffset = getElementOffset(parent, bufferOffset);\n } else {\n parentOffset = getVisibleRectForElement(viewportRuler, parent);\n }\n\n return (\n parentOffset.top <= offset.top &&\n parentOffset.right >= offset.right &&\n parentOffset.bottom >= offset.bottom &&\n parentOffset.left <= offset.left\n );\n}\n\nexport function isOffsetPartiallyVisibleWithinParent(\n viewportRuler: ViewportRuler,\n parent: HTMLElement,\n offset: Required<SkyAffixOffset>,\n bufferOffset?: SkyAffixOffset,\n): boolean {\n let parentOffset: Required<SkyAffixOffset>;\n if (useViewportForBounds(parent)) {\n const viewportRect = viewportRuler.getViewportRect();\n parentOffset = {\n top: 0,\n left: 0,\n right: viewportRect.width,\n bottom: viewportRect.height,\n };\n } else if (bufferOffset) {\n parentOffset = getElementOffset(parent, bufferOffset);\n } else {\n parentOffset = getVisibleRectForElement(viewportRuler, parent);\n }\n\n return !(\n parentOffset.top >= offset.bottom ||\n parentOffset.right <= offset.left ||\n parentOffset.bottom <= offset.top ||\n parentOffset.left >= offset.right\n );\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { NgZone, Renderer2 } from '@angular/core';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { SkyAffixAutoFitContext } from './affix-auto-fit-context';\nimport { SkyAffixConfig } from './affix-config';\nimport { SkyAffixOffset } from './affix-offset';\nimport { SkyAffixOffsetChange } from './affix-offset-change';\nimport { SkyAffixPlacement } from './affix-placement';\nimport { SkyAffixPlacementChange } from './affix-placement-change';\nimport { AffixRect } from './affix-rect';\nimport { getInversePlacement, getNextPlacement } from './affix-utils';\nimport {\n getElementOffset,\n getOuterRect,\n getOverflowParents,\n getVisibleRectForElement,\n isOffsetFullyVisibleWithinParent,\n isOffsetPartiallyVisibleWithinParent,\n} from './dom-utils';\n\n/**\n * Make specific properties required, so that we don't have to\n * do null checks throughout this file.\n */\ntype AffixConfigOrDefaults = SkyAffixConfig &\n Required<\n Pick<\n SkyAffixConfig,\n | 'autoFitContext'\n | 'enableAutoFit'\n | 'horizontalAlignment'\n | 'isSticky'\n | 'placement'\n >\n >;\n\nconst DEFAULT_AFFIX_CONFIG: AffixConfigOrDefaults = {\n autoFitContext: SkyAffixAutoFitContext.OverflowParent,\n enableAutoFit: false,\n horizontalAlignment: 'center',\n isSticky: false,\n placement: 'above',\n};\n\nexport class SkyAffixer {\n /**\n * Fires when the affixed element's offset changes.\n */\n public get offsetChange(): Observable<SkyAffixOffsetChange> {\n return this.#offsetChangeObs;\n }\n\n /**\n * Fires when the base element's nearest overflow parent is scrolling. This is useful if you need\n * to perform an additional action during the scroll event but don't want to generate another\n * event listener.\n */\n public get overflowScroll(): Observable<void> {\n return this.#overflowScrollObs;\n }\n\n /**\n * Fires when the placement value changes. A `null` value indicates that a suitable\n * placement could not be found.\n */\n public get placementChange(): Observable<SkyAffixPlacementChange> {\n return this.#placementChangeObs;\n }\n\n get #config(): AffixConfigOrDefaults {\n return this.#_config;\n }\n\n set #config(value: SkyAffixConfig | undefined) {\n const merged: AffixConfigOrDefaults = {\n ...DEFAULT_AFFIX_CONFIG,\n ...value,\n };\n\n // Make sure none of the values are undefined.\n let key: keyof typeof merged;\n for (key in merged) {\n if (merged[key] === undefined) {\n (merged as any)[key] = DEFAULT_AFFIX_CONFIG[key];\n }\n }\n\n this.#_config = merged;\n }\n\n #affixedElement: HTMLElement;\n\n #baseElement: HTMLElement | undefined;\n\n #currentOffset: SkyAffixOffset | undefined;\n\n #currentPlacement: SkyAffixPlacement | undefined;\n\n #layoutViewport: HTMLElement;\n\n #offsetChange: Subject<SkyAffixOffsetChange>;\n\n #offsetChangeObs: Observable<SkyAffixOffsetChange>;\n\n #overflowParents: HTMLElement[] = [];\n\n #overflowScroll: Subject<void>;\n\n #overflowScrollObs: Observable<void>;\n\n #placementChange: Subject<SkyAffixPlacementChange>;\n\n #placementChangeObs: Observable<SkyAffixPlacementChange>;\n\n #renderer: Renderer2;\n\n #scrollChange = new Subject<void>();\n\n #viewportListeners: Subscription | undefined;\n\n #viewportRuler: ViewportRuler;\n\n #zone: NgZone;\n\n #_config: AffixConfigOrDefaults = DEFAULT_AFFIX_CONFIG;\n\n #scrollChangeListener: () => void = () => this.#scrollChange.next();\n\n constructor(\n affixedElement: HTMLElement,\n renderer: Renderer2,\n viewportRuler: ViewportRuler,\n zone: NgZone,\n layoutViewport: HTMLElement,\n ) {\n this.#affixedElement = affixedElement;\n this.#renderer = renderer;\n this.#layoutViewport = layoutViewport;\n this.#viewportRuler = viewportRuler;\n this.#zone = zone;\n\n this.#offsetChange = new Subject<SkyAffixOffsetChange>();\n this.#overflowScroll = new Subject<void>();\n this.#placementChange = new Subject<SkyAffixPlacementChange>();\n\n this.#offsetChangeObs = this.#offsetChange.asObservable();\n this.#overflowScrollObs = this.#overflowScroll.asObservable();\n this.#placementChangeObs = this.#placementChange.asObservable();\n }\n\n /**\n * Affixes an element to a base element.\n * @param baseElement The base element.\n * @param config Configuration for the affix action.\n */\n public affixTo(baseElement: HTMLElement, config?: SkyAffixConfig): void {\n this.#reset();\n\n this.#config = config;\n this.#baseElement = baseElement;\n this.#overflowParents = getOverflowParents(baseElement);\n\n this.#affix();\n\n if (this.#config.isSticky) {\n this.#addViewportListeners();\n }\n }\n\n public getConfig(): SkyAffixConfig {\n return this.#config;\n }\n\n /**\n * Re-runs the affix calculation.\n */\n public reaffix(): void {\n // Reset current placement to preferred placement.\n this.#currentPlacement = this.#config.placement;\n this.#affix();\n }\n\n /**\n * Destroys the affixer.\n */\n public destroy(): void {\n this.#reset();\n this.#placementChange.complete();\n this.#offsetChange.complete();\n this.#overflowScroll.complete();\n this.#scrollChange.complete();\n }\n\n #affix(): void {\n const offset = this.#getOffset();\n\n const offsetParentRect = this.#getOffsetParentRect();\n offset.top = offset.top - offsetParentRect.top;\n offset.left = offset.left - offsetParentRect.left;\n offset.bottom = offset.bottom - offsetParentRect.top;\n offset.right = offset.right - offsetParentRect.left;\n\n if (this.#isNewOffset(offset)) {\n this.#renderer.setStyle(this.#affixedElement, 'top', `${offset.top}px`);\n this.#renderer.setStyle(this.#affixedElement, 'left', `${offset.left}px`);\n\n this.#offsetChange.next({ offset });\n }\n }\n\n #getOffsetParentRect(): AffixRect {\n // Firefox sets the offsetParent to document.body if the element uses fixed positioning.\n if (\n this.#config.position === 'absolute' &&\n this.#affixedElement.offsetParent\n ) {\n return getOuterRect(this.#affixedElement.offsetParent as HTMLElement);\n } else {\n const layoutRect = getOuterRect(this.#layoutViewport);\n return {\n top: layoutRect.top,\n left: layoutRect.left,\n height: layoutRect.height,\n width: layoutRect.width,\n bottom: layoutRect.top - layoutRect.height,\n right: layoutRect.left - layoutRect.width,\n };\n }\n }\n\n #getOffset(): Required<SkyAffixOffset> {\n const parent = this.#getAutoFitContextParent();\n\n const maxAttempts = 4;\n let attempts = 0;\n\n let isAffixedElementFullyVisible = false;\n let offset: Required<SkyAffixOffset>;\n let placement = this.#config.placement;\n\n do {\n offset = this.#getPreferredOffset(placement);\n isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(\n this.#viewportRuler,\n parent,\n offset,\n this.#config.autoFitOverflowOffset,\n );\n\n if (!this.#config.enableAutoFit) {\n break;\n }\n\n if (!isAffixedElementFullyVisible) {\n placement =\n attempts % 2 === 0\n ? getInversePlacement(placement)\n : getNextPlacement(placement);\n }\n\n attempts++;\n } while (!isAffixedElementFullyVisible && attempts < maxAttempts);\n\n if (isAffixedElementFullyVisible) {\n if (this.#isBaseElementVisible()) {\n this.#notifyPlacementChange(placement);\n } else {\n this.#notifyPlacementChange(null);\n }\n\n return offset;\n }\n\n if (this.#config.enableAutoFit) {\n this.#notifyPlacementChange(null);\n }\n\n // No suitable placement was found, so revert to preferred placement.\n return this.#getPreferredOffset(this.#config.placement);\n }\n\n #getPreferredOffset(placement: SkyAffixPlacement): Required<SkyAffixOffset> {\n if (!this.#baseElement) {\n return { top: 0, left: 0, bottom: 0, right: 0 };\n }\n\n const affixedRect = getOuterRect(this.#affixedElement);\n const baseRect = this.#baseElement.getBoundingClientRect();\n\n const horizontalAlignment = this.#config.horizontalAlignment;\n const verticalAlignment = this.#config.verticalAlignment;\n const enableAutoFit = this.#config.enableAutoFit;\n\n let top: number;\n let left: number;\n\n if (placement === 'above' || placement === 'below') {\n if (placement === 'above') {\n top = baseRect.top - affixedRect.height;\n\n switch (verticalAlignment) {\n case 'top':\n top = top + affixedRect.height;\n break;\n case 'middle':\n top = top + affixedRect.height / 2;\n break;\n case 'bottom':\n default:\n break;\n }\n } else {\n top = baseRect.bottom;\n\n switch (verticalAlignment) {\n case 'top':\n default:\n break;\n case 'middle':\n top = top - affixedRect.height / 2;\n break;\n case 'bottom':\n top = top - affixedRect.height;\n break;\n }\n }\n\n switch (horizontalAlignment) {\n case 'left':\n left = baseRect.left;\n break;\n\n case 'center':\n default:\n left = baseRect.left + baseRect.width / 2 - affixedRect.width / 2;\n break;\n\n case 'right':\n left = baseRect.right - affixedRect.width;\n break;\n }\n } else {\n if (placement === 'left') {\n left = baseRect.left - affixedRect.width;\n } else {\n left = baseRect.right;\n }\n\n switch (verticalAlignment) {\n case 'top':\n top = baseRect.top;\n break;\n\n case 'middle':\n default:\n top = baseRect.top + baseRect.height / 2 - affixedRect.height / 2;\n break;\n\n case 'bottom':\n top = baseRect.bottom - affixedRect.height;\n break;\n }\n }\n\n const offset: Required<SkyAffixOffset> = { top, left, bottom: 0, right: 0 };\n\n if (enableAutoFit) {\n const adjustments = this.#adjustOffsetToOverflowParent(\n { top, left },\n placement,\n this.#baseElement,\n );\n offset.top = adjustments.top;\n offset.left = adjustments.left;\n }\n\n offset.bottom = offset.top + affixedRect.height;\n offset.right = offset.left + affixedRect.width;\n\n return offset;\n }\n\n /**\n * Slightly adjust the offset to fit within the scroll parent's boundaries if\n * the affixed element would otherwise be clipped.\n */\n #adjustOffsetToOverflowParent(\n offset: { top: number; left: number },\n placement: SkyAffixPlacement,\n baseElement: HTMLElement,\n ): { top: number; left: number } {\n const affixedRect = getOuterRect(this.#affixedElement);\n const baseRect = baseElement.getBoundingClientRect();\n\n const parent = this.#getAutoFitContextParent();\n let parentOffset: Required<SkyAffixOffset>;\n if (this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent) {\n if (this.#config.autoFitOverflowOffset) {\n // When the config contains a specific offset.\n parentOffset = getElementOffset(\n parent,\n this.#config.autoFitOverflowOffset,\n );\n } else if (\n isOffsetFullyVisibleWithinParent(this.#viewportRuler, parent, baseRect)\n ) {\n // When the base element is fully visible within the parent, aim for the visible portion of the parent element.\n parentOffset = getVisibleRectForElement(this.#viewportRuler, parent);\n } else {\n // Anywhere in the parent element.\n parentOffset = getOuterRect(parent);\n }\n } else {\n const viewportRect = this.#viewportRuler.getViewportRect();\n parentOffset = {\n top: -viewportRect.top,\n left: -viewportRect.left,\n bottom: viewportRect.height + viewportRect.top,\n right: viewportRect.width + viewportRect.left,\n };\n }\n\n // A pixel value representing the leeway between the edge of the overflow parent and the edge\n // of the base element before it disappears from view.\n // If the visible portion of the base element is less than this pixel value, the auto-fit\n // functionality attempts to find another placement.\n const defaultPixelTolerance = 40;\n let pixelTolerance: number;\n\n const originalOffsetTop = offset.top;\n const originalOffsetLeft = offset.left;\n\n switch (placement) {\n case 'above':\n case 'below':\n // Keep the affixed element within the overflow parent.\n if (offset.left < parentOffset.left) {\n offset.left = parentOffset.left;\n } else if (offset.left + affixedRect.width > parentOffset.right) {\n offset.left = parentOffset.right - affixedRect.width;\n }\n\n // Use a smaller pixel tolerance if the base element width is less than the default.\n pixelTolerance = Math.min(defaultPixelTolerance, baseRect.width);\n\n // Make sure the affixed element never detaches from the base element.\n if (\n offset.left + pixelTolerance > baseRect.right ||\n offset.left + affixedRect.width - pixelTolerance < baseRect.left\n ) {\n offset.left = originalOffsetLeft;\n }\n\n break;\n\n case 'left':\n case 'right':\n // Keep the affixed element within the overflow parent.\n if (offset.top < parentOffset.top) {\n offset.top = parentOffset.top;\n } else if (offset.top + affixedRect.height > parentOffset.bottom) {\n offset.top = parentOffset.bottom - affixedRect.height;\n }\n\n // Use a smaller pixel tolerance if the base element height is less than the default.\n pixelTolerance = Math.min(defaultPixelTolerance, baseRect.height);\n\n // Make sure the affixed element never detaches from the base element.\n if (\n offset.top + pixelTolerance > baseRect.bottom ||\n offset.top + affixedRect.height - pixelTolerance < baseRect.top\n ) {\n offset.top = originalOffsetTop;\n }\n\n break;\n }\n\n return offset;\n }\n\n #getImmediateOverflowParent(): HTMLElement {\n return this.#overflowParents[0];\n }\n\n #getAutoFitContextParent(): HTMLElement {\n const bodyElement = this.#overflowParents[this.#overflowParents.length - 1];\n\n return this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent\n ? this.#getImmediateOverflowParent()\n : bodyElement;\n }\n\n #notifyPlacementChange(placement: SkyAffixPlacement | null): void {\n if (this.#currentPlacement !== placement) {\n this.#currentPlacement = placement ?? undefined;\n this.#placementChange.next({\n placement,\n });\n }\n }\n\n #reset(): void {\n this.#removeViewportListeners();\n\n this.#overflowParents = [];\n\n this.#config =\n this.#baseElement =\n this.#currentPlacement =\n this.#currentOffset =\n undefined;\n }\n\n #isNewOffset(offset: SkyAffixOffset): boolean {\n if (this.#currentOffset === undefined) {\n this.#currentOffset = offset;\n return true;\n }\n\n if (\n this.#currentOffset.top === offset.top &&\n this.#currentOffset.left === offset.left\n ) {\n return false;\n }\n\n this.#currentOffset = offset;\n\n return true;\n }\n\n #isBaseElementVisible(): boolean {\n // Can't get here if the base element is undefined.\n /* istanbul ignore if */\n if (!this.#baseElement) {\n return false;\n }\n\n const baseRect = this.#baseElement.getBoundingClientRect();\n\n return isOffsetPartiallyVisibleWithinParent(\n this.#viewportRuler,\n this.#getImmediateOverflowParent(),\n {\n top: baseRect.top,\n left: baseRect.left,\n right: baseRect.right,\n bottom: baseRect.bottom,\n },\n this.#config.autoFitOverflowOffset,\n );\n }\n\n #addViewportListeners(): void {\n this.#viewportListeners = new Subscription();\n\n // Resize and orientation changes.\n this.#viewportListeners.add(\n this.#viewportRuler.change().subscribe(() => {\n this.#affix();\n }),\n );\n\n this.#viewportListeners.add(\n this.#scrollChange.subscribe(() => {\n this.#affix();\n this.#overflowScroll.next();\n }),\n );\n\n // Listen for scroll events on the window, visual viewport, and any overflow parents.\n // https://developer.chrome.com/blog/visual-viewport-api/#events-only-fire-when-the-visual-viewport-changes\n this.#zone.runOutsideAngular(() => {\n [window, window.visualViewport, ...this.#overflowParents].forEach(\n (parentElement) => {\n parentElement?.addEventListener('scroll', this.#scrollChangeListener);\n },\n );\n });\n }\n\n #removeViewportListeners(): void {\n this.#viewportListeners?.unsubscribe();\n\n this.#zone.runOutsideAngular(() => {\n [window, window.visualViewport, ...this.#overflowParents].forEach(\n (parentElement) => {\n parentElement?.removeEventListener(\n 'scroll',\n this.#scrollChangeListener,\n );\n },\n );\n });\n }\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ElementRef,\n Injectable,\n NgZone,\n OnDestroy,\n RendererFactory2,\n inject,\n} from '@angular/core';\n\nimport { SkyAffixer } from './affixer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAffixService implements OnDestroy {\n readonly #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n\n readonly #viewportRuler = inject(ViewportRuler);\n\n readonly #zone = inject(NgZone);\n\n readonly #layoutViewport = this.#createLayoutViewportShim(inject(DOCUMENT));\n\n public ngOnDestroy(): void {\n this.#renderer.removeChild(\n this.#layoutViewport.parentNode,\n this.#layoutViewport,\n );\n }\n\n /**\n * Creates an instance of [[SkyAffixer]].\n * @param affixed The element to be affixed.\n */\n public createAffixer(affixed: ElementRef): SkyAffixer {\n return new SkyAffixer(\n affixed.nativeElement,\n this.#renderer,\n this.#viewportRuler,\n this.#zone,\n this.#layoutViewport,\n );\n }\n\n /**\n * Create a layout viewport element that can be used to determine the relative position\n * of the visual viewport. Inspired by\n * https://github.com/WICG/visual-viewport/blob/gh-pages/examples/fixed-to-viewport.html\n */\n #createLayoutViewportShim(doc: Document): HTMLElement {\n const layoutViewportElement = this.#renderer.createElement('div');\n this.#renderer.addClass(\n layoutViewportElement,\n 'sky-affix-layout-viewport-shim',\n );\n this.#renderer.setStyle(layoutViewportElement, 'width', '100%');\n this.#renderer.setStyle(layoutViewportElement, 'height', '100%');\n this.#renderer.setStyle(layoutViewportElement, 'position', 'fixed');\n this.#renderer.setStyle(layoutViewportElement, 'top', '0');\n this.#renderer.setStyle(layoutViewportElement, 'left', '0');\n this.#renderer.setStyle(layoutViewportElement, 'visibility', 'hidden');\n this.#renderer.setStyle(layoutViewportElement, 'pointerEvents', 'none');\n this.#renderer.appendChild(doc.body, layoutViewportElement);\n\n return layoutViewportElement;\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAffixAutoFitContext } from './affix-auto-fit-context';\nimport { SkyAffixHorizontalAlignment } from './affix-horizontal-alignment';\nimport { SkyAffixOffset } from './affix-offset';\nimport { SkyAffixOffsetChange } from './affix-offset-change';\nimport { SkyAffixPlacement } from './affix-placement';\nimport { SkyAffixPlacementChange } from './affix-placement-change';\nimport { SkyAffixPosition } from './affix-position';\nimport { SkyAffixVerticalAlignment } from './affix-vertical-alignment';\nimport { SkyAffixService } from './affix.service';\nimport { SkyAffixer } from './affixer';\n\n/**\n * Affixes the host element to a base element.\n */\n@Directive({\n selector: '[skyAffixTo]',\n standalone: false,\n})\nexport class SkyAffixDirective implements OnInit, OnChanges, OnDestroy {\n /**\n * The base element to affix the host element.\n */\n @Input()\n public skyAffixTo: HTMLElement | undefined;\n\n /**\n * Sets the `autoFitContext` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixAutoFitContext: SkyAffixAutoFitContext | undefined;\n\n /**\n * Sets the `autoFitOverflowOffset` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixAutoFitOverflowOffset: SkyAffixOffset | undefined;\n\n /**\n * Sets the `enableAutoFit` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixEnableAutoFit: boolean | undefined;\n\n /**\n * Sets the `horizontalAlignment` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixHorizontalAlignment: SkyAffixHorizontalAlignment | undefined;\n\n /**\n * Sets the `isSticky` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixIsSticky: boolean | undefined;\n\n /**\n * Sets the `placement` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixPlacement: SkyAffixPlacement | undefined;\n\n /**\n * Sets the `position` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixPosition: SkyAffixPosition | undefined;\n\n /**\n * Sets the `verticalAlignment` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixVerticalAlignment: SkyAffixVerticalAlignment | undefined;\n\n /**\n * Fires when the affixed element's offset changes.\n */\n @Output()\n public affixOffsetChange = new EventEmitter<SkyAffixOffsetChange>();\n\n /**\n * Fires when the affixed element's overflow container is scrolled.\n */\n @Output()\n public affixOverflowScroll = new EventEmitter<void>();\n\n /**\n * Fires when the placement value changes.\n */\n @Output()\n public affixPlacementChange = new EventEmitter<SkyAffixPlacementChange>();\n\n #affixer: SkyAffixer | undefined;\n\n #affixService: SkyAffixService;\n\n #elementRef: ElementRef;\n\n #ngUnsubscribe = new Subject<void>();\n\n constructor(elementRef: ElementRef, affixService: SkyAffixService) {\n this.#elementRef = elementRef;\n this.#affixService = affixService;\n }\n\n public ngOnInit(): void {\n this.#affixer = this.#affixService.createAffixer(this.#elementRef);\n\n this.#affixer.offsetChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixOffsetChange.emit(change));\n\n this.#affixer.overflowScroll\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixOverflowScroll.emit(change));\n\n this.#affixer.placementChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixPlacementChange.emit(change));\n\n this.#updateAlignment();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n /* istanbul ignore else */\n if (\n changes['affixAutoFitContext'] ||\n changes['affixAutoFitOverflowOffset'] ||\n changes['affixEnableAutoFit'] ||\n changes['affixHorizontalAlignment'] ||\n changes['affixIsSticky'] ||\n changes['affixPlacement'] ||\n changes['affixPosition'] ||\n changes['affixVerticalAlignment']\n ) {\n this.#updateAlignment();\n }\n }\n\n public ngOnDestroy(): void {\n this.affixOffsetChange.complete();\n this.affixOverflowScroll.complete();\n this.affixPlacementChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n /*istanbul ignore else*/\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n\n #updateAlignment(): void {\n if (this.skyAffixTo && this.#affixer) {\n this.#affixer.affixTo(this.skyAffixTo, {\n autoFitContext: this.affixAutoFitContext,\n autoFitOverflowOffset: this.affixAutoFitOverflowOffset,\n enableAutoFit: this.affixEnableAutoFit,\n horizontalAlignment: this.affixHorizontalAlignment,\n isSticky: this.affixIsSticky,\n placement: this.affixPlacement,\n position: this.affixPosition,\n verticalAlignment: this.affixVerticalAlignment,\n });\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SkyAffixDirective } from './affix.directive';\n\n@NgModule({\n imports: [CommonModule],\n exports: [SkyAffixDirective],\n declarations: [SkyAffixDirective],\n})\nexport class SkyAffixModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyContentInfo } from './content-info';\n\n/**\n * @internal\n * An API to provide information about a parent component's content to child components.\n * For example, toolbar can use this to provide its child components with a list\n * descriptor they can use to construct aria labels, or tree view can provide the node\n * name to its context menus.\n */\n@Injectable()\nexport class SkyContentInfoProvider {\n #contentInfo = new ReplaySubject<SkyContentInfo>(1);\n #currentValue: SkyContentInfo = {};\n\n public patchInfo(value: SkyContentInfo): void {\n const newValue = {\n ...this.#currentValue,\n ...value,\n };\n\n this.#currentValue = newValue;\n this.#contentInfo.next(newValue);\n }\n\n public getInfo(): Observable<SkyContentInfo> {\n return this.#contentInfo.asObservable();\n }\n}\n","import { Observable, ReplaySubject } from 'rxjs';\n\n/**\n * @internal\n * An API to provide default Angular component input values to child components.\n */\nexport class SkyDefaultInputProvider {\n #props: Record<string, Record<string, ReplaySubject<unknown>>> = {};\n\n public setValue<T>(componentName: string, inputName: string, value: T): void {\n const subject = this.#getSubject(componentName, inputName);\n subject.next(value);\n }\n\n public getValue<T>(\n componentName: string,\n inputName: string,\n ): Observable<T> | undefined {\n const inputDefault = this.#getSubject(componentName, inputName);\n return inputDefault.asObservable() as Observable<T>;\n }\n\n #getSubject(\n componentName: string,\n inputName: string,\n ): ReplaySubject<unknown> {\n const componentSubjects = this.#props[componentName] || {};\n const inputSubject = componentSubjects[inputName];\n\n if (!inputSubject) {\n componentSubjects[inputName] = new ReplaySubject(1);\n this.#props[componentName] = componentSubjects;\n }\n\n return componentSubjects[inputName];\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\n/**\n * Represents a single item added to the dock.\n */\nexport class SkyDockItem<T> {\n /**\n * An event that emits when the item is removed from the dock.\n */\n public get destroyed(): Observable<void> {\n return this.#destroyedObs;\n }\n\n #destroyed = new Subject<void>();\n\n #destroyedObs: Observable<void>;\n\n /**\n * @param componentInstance The item's component instance.\n * @param stackOrder The assigned stack order of the docked item.\n */\n constructor(\n public readonly componentInstance: T,\n public readonly stackOrder: number,\n ) {\n this.#destroyedObs = this.#destroyed.asObservable();\n }\n\n /**\n * Removes the item from the dock.\n */\n public destroy(): void {\n this.#destroyed.next();\n this.#destroyed.complete();\n }\n}\n","/**\n * The location on the page where the dock component should be rendered.\n */\nexport enum SkyDockLocation {\n /**\n * Renders the dock component before a given element.\n */\n BeforeElement,\n\n /**\n * Renders the dock component as the last element inside the BODY element.\n */\n BodyBottom,\n\n /**\n * Renders the dock component as the last element inside a given element.\n */\n ElementBottom,\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyDockModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkyDockModule {}\n","/**\n * The location on the page where the dynamic component should be rendered.\n */\nexport enum SkyDynamicComponentLocation {\n /**\n * Renders the dynamic component before a given element.\n */\n BeforeElement,\n\n /**\n * Renders the dynamic component as the last element inside the BODY element.\n */\n BodyBottom,\n\n /**\n * Renders the dynamic component as the first element inside the BODY element.\n */\n BodyTop,\n\n /**\n * Renders the dynamic component as the last element inside a given element.\n */\n ElementBottom,\n\n /**\n * Renders the dynamic component as the first element inside a given element.\n */\n ElementTop,\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\nexport function getWindow(): any {\n return window;\n}\n\n/**\n * The application window reference service references the global window variable.\n * After users inject SkyAppWindowRef into a component, they can use the service to interact with\n * window properties and event handlers by referencing its nativeWindow property.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppWindowRef {\n /**\n * The global `window` variable.\n */\n public get nativeWindow(): any {\n return getWindow();\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n Injectable,\n Renderer2,\n RendererFactory2,\n Type,\n createComponent,\n createEnvironmentInjector,\n inject,\n} from '@angular/core';\n\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nimport { SkyDynamicComponentLocation } from './dynamic-component-location';\nimport { SkyDynamicComponentOptions } from './dynamic-component-options';\n\n/**\n * Angular service for creating and rendering a dynamic component.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyDynamicComponentService {\n #applicationRef: ApplicationRef;\n\n #renderer: Renderer2;\n\n #windowRef: SkyAppWindowRef;\n\n #environmentInjector = inject(EnvironmentInjector);\n\n constructor(\n applicationRef: ApplicationRef,\n windowRef: SkyAppWindowRef,\n rendererFactory: RendererFactory2,\n ) {\n this.#applicationRef = applicationRef;\n this.#windowRef = windowRef;\n\n // Based on suggestions from https://github.com/angular/angular/issues/17824\n // for accessing an instance of Renderer2 in a service since Renderer2 can't\n // be injected into a service. Passing undefined for both parameters results\n // in the default renderer which is what we want here.\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Creates an instance of the specified component and adds it to the specified location\n * on the page.\n */\n public createComponent<T>(\n componentType: Type<T>,\n options: SkyDynamicComponentOptions = {\n location: SkyDynamicComponentLocation.BodyBottom,\n },\n ): ComponentRef<T> {\n const environmentInjector = createEnvironmentInjector(\n options.providers ?? [],\n options.environmentInjector ?? this.#environmentInjector,\n );\n\n let componentRef: ComponentRef<T>;\n\n if (options.viewContainerRef) {\n componentRef = options.viewContainerRef.createComponent(componentType, {\n environmentInjector,\n });\n } else {\n componentRef = createComponent<T>(componentType, {\n environmentInjector,\n });\n\n this.#applicationRef.attachView(componentRef.hostView);\n\n this.#insertComponentAtLocation(componentRef, options);\n }\n\n if (options.className) {\n const el = this.#getRootNode(componentRef);\n this.#renderer.addClass(el, options.className);\n }\n\n return componentRef;\n }\n\n #insertComponentAtLocation(\n componentRef: ComponentRef<unknown>,\n options: SkyDynamicComponentOptions,\n ): void {\n const el = this.#getRootNode(componentRef);\n\n const bodyEl = this.#windowRef.nativeWindow.document.body;\n\n switch (options.location) {\n case SkyDynamicComponentLocation.BeforeElement:\n if (!options.referenceEl) {\n throw new Error(\n '[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.BeforeElement` because a reference element was not provided.',\n );\n }\n\n this.#renderer.insertBefore(\n options.referenceEl.parentElement,\n el,\n options.referenceEl,\n );\n break;\n case SkyDynamicComponentLocation.ElementTop:\n if (!options.referenceEl) {\n throw new Error(\n '[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.ElementTop` because a reference element was not provided.',\n );\n }\n\n this.#renderer.insertBefore(\n options.referenceEl,\n el,\n options.referenceEl.firstChild,\n );\n break;\n case SkyDynamicComponentLocation.ElementBottom:\n this.#renderer.appendChild(options.referenceEl, el);\n break;\n case SkyDynamicComponentLocation.BodyTop:\n this.#renderer.insertBefore(bodyEl, el, bodyEl.firstChild);\n break;\n default:\n this.#renderer.appendChild(bodyEl, el);\n break;\n }\n }\n\n /**\n * Removes a component ref from the page\n * @param componentRef Component ref for the component being removed\n */\n public removeComponent<T>(componentRef: ComponentRef<T> | undefined): void {\n if (!componentRef) {\n return;\n }\n\n if (!this.#applicationRef.destroyed) {\n this.#applicationRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n }\n\n #getRootNode<T>(componentRef: ComponentRef<T>): any {\n // Technique for retrieving the component's root node taken from here:\n // https://malcoded.com/posts/angular-dynamic-components\n return (componentRef.hostView as EmbeddedViewRef<T>).rootNodes[0];\n }\n}\n\n/**\n * Angular service for creating and rendering a dynamic component.\n * @internal\n * @deprecated Use `SkyDynamicComponentService` to create a standalone component instead.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyDynamicComponentLegacyService extends SkyDynamicComponentService {}\n","import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMutationObserverService {\n public create(callback: MutationCallback): MutationObserver {\n return new MutationObserver(callback);\n }\n}\n","import {\n ElementRef,\n Injectable,\n OnDestroy,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyDockDomAdapterService implements OnDestroy {\n #currentDockHeight: number | undefined;\n\n #mutationSvc: SkyMutationObserverService;\n\n #ngUnsubscribe = new Subject<void>();\n\n #observer: MutationObserver | undefined;\n\n #renderer: Renderer2;\n\n #styleElement: HTMLStyleElement | undefined;\n\n constructor(\n mutationSvc: SkyMutationObserverService,\n rendererFactory: RendererFactory2,\n ) {\n this.#mutationSvc = mutationSvc;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n public ngOnDestroy(): void {\n if (this.#observer) {\n this.#observer.disconnect();\n }\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#currentDockHeight = this.#observer = this.#styleElement = undefined;\n }\n\n public setSticky(elementRef: ElementRef): void {\n this.#renderer.addClass(elementRef.nativeElement, 'sky-dock-sticky');\n }\n\n public setZIndex(zIndex: number, elementRef: ElementRef): void {\n this.#renderer.setStyle(elementRef.nativeElement, 'z-index', zIndex);\n }\n\n public unbindDock(elementRef: ElementRef): void {\n this.#renderer.addClass(elementRef.nativeElement, 'sky-dock-unbound');\n }\n\n public watchDomChanges(elementRef: ElementRef): void {\n this.#observer = this.#mutationSvc.create(() => {\n this.#adjustBodyStyles(elementRef);\n });\n\n this.#observer.observe(elementRef.nativeElement, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n\n observableFromEvent(window, 'resize')\n .pipe(debounceTime(250), takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#adjustBodyStyles(elementRef));\n }\n\n #adjustBodyStyles(elementRef: ElementRef): void {\n const dockHeight = elementRef.nativeElement.getBoundingClientRect().height;\n if (dockHeight === this.#currentDockHeight) {\n return;\n }\n\n // Create a style element to avoid overwriting any existing inline body styles.\n const styleElement = this.#renderer.createElement('style');\n const textNode = this.#renderer.createText(\n `body { margin-bottom: ${dockHeight}px; --sky-dock-height: ${dockHeight}px; }`,\n );\n\n // Apply a `data-` attribute to make unit testing easier.\n this.#renderer.setAttribute(\n styleElement,\n 'data-test-selector',\n 'sky-layout-dock-bottom-styles',\n );\n\n this.#renderer.appendChild(styleElement, textNode);\n this.#renderer.appendChild(document.head, styleElement);\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#currentDockHeight = dockHeight;\n this.#styleElement = styleElement;\n }\n\n #destroyStyleElement(): void {\n this.#renderer.removeChild(document.head, this.#styleElement);\n }\n}\n","/**\n * @internal\n */\nexport function sortByStackOrder(a: any, b: any): number {\n if (a.stackOrder > b.stackOrder) {\n return -1;\n }\n\n if (a.stackOrder < b.stackOrder) {\n return 1;\n }\n\n return 0;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentInjector,\n Type,\n ViewChild,\n ViewContainerRef,\n inject,\n} from '@angular/core';\n\nimport { SkyDynamicComponentService } from '../dynamic-component/dynamic-component.service';\n\nimport { SkyDockDomAdapterService } from './dock-dom-adapter.service';\nimport { SkyDockInsertComponentConfig } from './dock-insert-component-config';\nimport { SkyDockItemReference } from './dock-item-reference';\nimport { SkyDockLocation } from './dock-location';\nimport { SkyDockOptions } from './dock-options';\nimport { sortByStackOrder } from './sort-by-stack-order';\n\n/**\n * @internal\n */\n@Component({\n standalone: true,\n selector: 'sky-dock',\n templateUrl: './dock.component.html',\n styleUrls: ['./dock.component.scss'],\n providers: [SkyDockDomAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyDockComponent {\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n public target: ViewContainerRef | undefined;\n\n #itemRefs: SkyDockItemReference<unknown>[] = [];\n\n #options: SkyDockOptions | undefined;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #domAdapter = inject(SkyDockDomAdapterService);\n readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n readonly #elementRef = inject(ElementRef);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n public insertComponent<T>(\n component: Type<T>,\n config: SkyDockInsertComponentConfig = {},\n ): SkyDockItemReference<T> {\n /*istanbul ignore if: untestable*/\n if (!this.target) {\n throw Error(\n '[SkyDockComponent] Could not insert the component because the target element could not be found.',\n );\n }\n\n const componentRef = this.#dynamicComponentSvc.createComponent(component, {\n environmentInjector: this.#environmentInjector,\n providers: config.providers,\n viewContainerRef: this.target,\n });\n\n const stackOrder =\n config.stackOrder !== null && config.stackOrder !== undefined\n ? config.stackOrder\n : this.#getHighestStackOrder();\n\n this.#itemRefs.push({\n componentRef,\n stackOrder,\n });\n\n this.#sortItemsByStackOrder();\n\n this.#changeDetector.markForCheck();\n\n return {\n componentRef,\n stackOrder,\n };\n }\n\n public removeItem(item: SkyDockItemReference<any>): void {\n /*istanbul ignore if: untestable*/\n if (!this.target) {\n throw Error(\n '[SkyDockComponent] Could not remove the item because the target element could not be found.',\n );\n }\n\n const viewRef = item.componentRef.hostView;\n this.target.remove(this.target.indexOf(viewRef));\n\n const found = this.#itemRefs.find(\n (i) => i.componentRef.hostView === viewRef,\n );\n\n if (found) {\n this.#itemRefs.splice(this.#itemRefs.indexOf(found), 1);\n }\n }\n\n public setOptions(options: SkyDockOptions | undefined): void {\n this.#options = options;\n\n switch (this.#options?.location) {\n case SkyDockLocation.BeforeElement:\n this.#domAdapter.unbindDock(this.#elementRef);\n break;\n case SkyDockLocation.ElementBottom:\n this.#domAdapter.setSticky(this.#elementRef);\n break;\n case SkyDockLocation.BodyBottom:\n default:\n this.#domAdapter.watchDomChanges(this.#elementRef);\n break;\n }\n\n if (this.#options?.zIndex) {\n this.#domAdapter.setZIndex(this.#options.zIndex, this.#elementRef);\n }\n }\n\n #sortItemsByStackOrder(): void {\n if (this.target) {\n this.#itemRefs.sort(sortByStackOrder);\n\n // Reassign the correct index for each view.\n for (let i = 0, len = this.#itemRefs.length; i < len; i++) {\n const item = this.#itemRefs[i];\n this.target.move(item.componentRef.hostView, i);\n }\n }\n }\n\n #getHighestStackOrder(): number {\n if (this.#itemRefs.length === 0) {\n return 0;\n }\n\n return this.#itemRefs[0].stackOrder + 1;\n }\n}\n","<ng-container #target />\n","import { ComponentRef, Injectable, Type, inject } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { SkyDynamicComponentLocation } from '../dynamic-component/dynamic-component-location';\nimport { SkyDynamicComponentOptions } from '../dynamic-component/dynamic-component-options';\nimport { SkyDynamicComponentService } from '../dynamic-component/dynamic-component.service';\n\nimport { SkyDockInsertComponentConfig } from './dock-insert-component-config';\nimport { SkyDockItem } from './dock-item';\nimport { SkyDockLocation } from './dock-location';\nimport { SkyDockOptions } from './dock-options';\nimport { SkyDockComponent } from './dock.component';\nimport { sortByStackOrder } from './sort-by-stack-order';\n\n/**\n * This service docks components to specific areas on the page.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyDockService {\n private static dockRef: ComponentRef<SkyDockComponent> | undefined;\n private static _items: SkyDockItem<any>[] = [];\n\n /**\n * Returns all docked items.\n */\n public get items(): SkyDockItem<any>[] {\n return SkyDockService._items;\n }\n\n readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n #subscription: Subscription | undefined;\n\n #options: SkyDockOptions | undefined;\n\n /**\n * Docks a component to the bottom of the page.\n * @param component The component to dock.\n * @param config Options that affect the docking action.\n */\n public insertComponent<T>(\n component: Type<T>,\n config?: SkyDockInsertComponentConfig,\n ): SkyDockItem<T> {\n this.#subscription ??= new Subscription();\n const dockRef = (SkyDockService.dockRef =\n SkyDockService.dockRef || this.#createDock());\n\n const itemRef = dockRef.instance.insertComponent(component, config);\n const item = new SkyDockItem(\n itemRef.componentRef.instance,\n itemRef.stackOrder,\n );\n\n this.#subscription?.add(\n item.destroyed.subscribe(() => {\n dockRef.instance.removeItem(itemRef);\n SkyDockService._items.splice(SkyDockService._items.indexOf(item), 1);\n if (SkyDockService._items.length === 0) {\n this.#destroyDock();\n }\n }),\n );\n\n SkyDockService._items.push(item);\n SkyDockService._items.sort(sortByStackOrder);\n\n return item;\n }\n\n /**\n * Sets options for the positioning and styling of the dock component. Since the dock service is a\n * singleton instance, these options will be applied to all components inserted into the dock. In\n * order to create a separate dock with different options, consumers should provide a different\n * instance of the dock service.\n * @param options The options for positioning and styling\n */\n public setDockOptions(options: SkyDockOptions): void {\n this.#options = options;\n }\n\n #createDock(): ComponentRef<SkyDockComponent> {\n let dockOptions: SkyDynamicComponentOptions | undefined;\n\n if (this.#options) {\n let dynamicLocation: SkyDynamicComponentLocation;\n switch (this.#options.location) {\n case SkyDockLocation.BeforeElement:\n dynamicLocation = SkyDynamicComponentLocation.BeforeElement;\n break;\n case SkyDockLocation.ElementBottom:\n dynamicLocation = SkyDynamicComponentLocation.ElementBottom;\n break;\n default:\n dynamicLocation = SkyDynamicComponentLocation.BodyTop;\n break;\n }\n\n dockOptions = {\n location: dynamicLocation,\n referenceEl: this.#options.referenceEl,\n };\n }\n\n const dockRef = this.#dynamicComponentSvc.createComponent(\n SkyDockComponent,\n dockOptions,\n );\n\n dockRef.instance.setOptions(this.#options);\n\n return dockRef;\n }\n\n #destroyDock(): void {\n this.#subscription?.unsubscribe();\n this.#subscription = undefined;\n this.#dynamicComponentSvc.removeComponent(SkyDockService.dockRef);\n SkyDockService.dockRef = undefined;\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * Provides services required to create dynamic components on the page.\n * @deprecated The `SkyDynamicComponentService` no longer needs the `SkyDynamicComponentModule`.\n * The `SkyDynamicComponentModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyDynamicComponentModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Wraps the FileReader API so it can be mocked in tests.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyFileReaderService {\n public async readAsDataURL(file: File): Promise<string> {\n return await new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.addEventListener('load', (event) => {\n resolve(event.target?.result as string);\n });\n\n reader.addEventListener('error', () => {\n reject(file);\n });\n\n reader.addEventListener('abort', () => {\n reject(file);\n });\n\n reader.readAsDataURL(file);\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppFormat {\n public formatText(format: string, ...args: any[]): string {\n return String(format).replace(\n /\\{(\\d+)\\}/g,\n function (match, capture): string {\n return args[parseInt(capture, 10)];\n },\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyHelpGlobalOptions } from './help-global-options';\n\n/**\n * Injection token for specifying and retrieving global help options.\n */\nexport const SKY_HELP_GLOBAL_OPTIONS = new InjectionToken<SkyHelpGlobalOptions>(\n 'SkyHelpGlobalOptions',\n);\n","import { Injectable } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\n\nimport { SkyHelpOpenArgs } from './help-open-args';\nimport { SkyHelpUpdateArgs } from './help-update-args';\n\n/**\n * Provides methods for opening and updating a globally accessible help dialog.\n */\n@Injectable()\nexport abstract class SkyHelpService {\n /**\n * Emits when the help widget ready state changes.\n */\n public get widgetReadyStateChange(): Observable<boolean> {\n return of(false);\n }\n\n /**\n * Opens a globally accessible help dialog.\n * @param args The options for opening the help dialog.\n */\n public abstract openHelp(args?: SkyHelpOpenArgs): void;\n\n /**\n * Updates a globally accessible help dialog.\n * @param args The options for updating the help dialog.\n */\n public abstract updateHelp(args: SkyHelpUpdateArgs): void;\n}\n","import { Injectable } from '@angular/core';\n\nlet idIndex = 0;\n\n/**\n * Generates unique IDs to be used with HTML elements.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyIdService {\n public generateId(): string {\n idIndex++;\n\n // Include timestamp and an incrementing index to guarantee unique IDs both during the application\n // lifecycle as well as across sessions, since browsers will try to apply autocomplete options to\n // elements with the same ID across sessions.\n return `sky-id-gen__${new Date().getTime()}__${idIndex}`;\n }\n}\n","import { Directive, ElementRef, Renderer2 } from '@angular/core';\n\nimport { SkyIdService } from './id.service';\n\n/**\n * Sets the element's `id` attribute to a unique ID. To reference this unique ID on other elements,\n * such as in a `label` element's `for` attribute, assign this directive to a template reference\n * variable, then use its `id` property.\n */\n@Directive({\n selector: '[skyId]',\n exportAs: 'skyId',\n standalone: false,\n})\nexport class SkyIdDirective {\n public get id(): string {\n return this.#_id;\n }\n\n #_id: string;\n\n constructor(elRef: ElementRef, renderer: Renderer2, idSvc: SkyIdService) {\n // Generate and apply the ID before the template is rendered\n // to avoid a changed-after-checked error.\n const id = idSvc.generateId();\n\n renderer.setAttribute(elRef.nativeElement, 'id', id);\n\n this.#_id = id;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyIdDirective } from './id.directive';\n\n@NgModule({\n declarations: [SkyIdDirective],\n exports: [SkyIdDirective],\n})\nexport class SkyIdModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyLayoutHostForChildArgs } from './layout-host-for-child-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyLayoutHostService {\n public get hostLayoutForChild(): Observable<SkyLayoutHostForChildArgs> {\n return this.#hostLayoutForChildObs;\n }\n\n #hostLayoutForChild = new Subject<SkyLayoutHostForChildArgs>();\n #hostLayoutForChildObs = this.#hostLayoutForChild.asObservable();\n\n public setHostLayoutForChild(layout: SkyLayoutHostForChildArgs): void {\n this.#hostLayoutForChild.next(layout);\n }\n}\n","import {\n Directive,\n ElementRef,\n RendererFactory2,\n effect,\n inject,\n input,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { SkyLayoutHostService } from './layout-host.service';\n\nconst LAYOUT_FOR_CHILD_CLASS_PREFIX = 'sky-layout-host-for-child-';\nconst LAYOUT_CLASS_PREFIX = 'sky-layout-host-';\n\n/**\n * @internal\n */\n@Directive({\n selector: '[skyLayoutHost]',\n standalone: true,\n providers: [SkyLayoutHostService],\n})\nexport class SkyLayoutHostDirective<T = 'none' | 'fit'> {\n readonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #layoutForChild = toSignal(\n inject(SkyLayoutHostService).hostLayoutForChild,\n );\n readonly #renderer = inject(RendererFactory2).createRenderer(null, null);\n\n public readonly layout = input<T>();\n\n constructor() {\n effect(() => {\n const cssClass = [`${LAYOUT_CLASS_PREFIX}${this.layout() ?? 'none'}`];\n const layoutForChild = this.#layoutForChild()?.layout;\n if (layoutForChild) {\n cssClass.push(`${LAYOUT_FOR_CHILD_CLASS_PREFIX}${layoutForChild}`);\n }\n const classList = this.#elementRef.nativeElement.classList.values();\n for (const className of classList) {\n if (\n className.startsWith(LAYOUT_CLASS_PREFIX) &&\n !cssClass.includes(className)\n ) {\n this.#renderer.removeClass(this.#elementRef.nativeElement, className);\n }\n }\n for (const className of cssClass) {\n this.#renderer.addClass(this.#elementRef.nativeElement, className);\n }\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, OnDestroy, inject } from '@angular/core';\n\nimport { ReplaySubject } from 'rxjs';\n\nimport { SkyIdService } from '../id/id.service';\n\nimport { SkyLiveAnnouncerArgs } from './types/live-announcer-args';\n\n/**\n * Allows for announcing messages to screen reader users through the use of a common `aria-live` element.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyLiveAnnouncerService implements OnDestroy {\n public announcerElementChanged = new ReplaySubject<HTMLElement | undefined>(\n 1,\n );\n\n #announcerElement: HTMLElement | undefined;\n #document = inject(DOCUMENT);\n #idService = inject(SkyIdService);\n #durationTimeout: number | undefined;\n #ngZone = inject(NgZone);\n\n constructor() {\n this.#announcerElement = this.#createLiveElement();\n this.announcerElementChanged.next(this.#announcerElement);\n }\n\n /**\n * Announces a message to screen readers.\n * @param message Message to be announced to the screen reader.\n * @param args Options for the announcement of the message.\n */\n public announce(message: string, args?: SkyLiveAnnouncerArgs): void {\n /* safety-check */\n /* istanbul ignore if */\n if (!this.#announcerElement) {\n this.#announcerElement = this.#createLiveElement();\n this.announcerElementChanged.next(this.#announcerElement);\n }\n\n const politeness = args?.politeness ?? 'polite';\n this.#announcerElement.setAttribute('aria-live', politeness);\n\n this.clear();\n clearTimeout(this.#durationTimeout);\n\n this.#announcerElement.textContent = message;\n this.#ngZone.runOutsideAngular(() => {\n this.#durationTimeout = setTimeout(\n () => this.clear(),\n args?.duration ?? this.#calculateDefaultDurationFromString(message),\n ) as unknown as number;\n });\n }\n\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n public clear(): void {\n if (this.#announcerElement) {\n this.#announcerElement.textContent = '';\n }\n }\n\n /**\n * @internal\n */\n public ngOnDestroy(): void {\n this.#announcerElement?.remove();\n this.#announcerElement = undefined;\n this.announcerElementChanged.next(undefined);\n clearTimeout(this.#durationTimeout);\n }\n\n #calculateDefaultDurationFromString(message: string): number {\n // Research suggests normal WPM is 110 for english. Lowering here to be conservative.\n const baseWordsPerMinute = 80;\n const minuteInMilliseconds = 60000;\n const numberOfWords = message.split(' ').length;\n\n const baseTime =\n (numberOfWords / baseWordsPerMinute) * minuteInMilliseconds;\n\n // Add 50% to time to account for exceptionally slow screen reader settings and/or speech settings that leave long pauses between words.\n return baseTime * 1.5;\n }\n\n #createLiveElement(): HTMLElement {\n const elementClass = 'sky-live-announcer-element';\n const previousElements = Array.from<Element>(\n this.#document.getElementsByClassName(elementClass),\n );\n const liveEl = this.#document.createElement('div');\n\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (const previousElement of previousElements) {\n previousElement.remove();\n }\n\n liveEl.classList.add(elementClass);\n liveEl.classList.add('sky-screen-reader-only');\n\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n liveEl.id = this.#idService.generateId();\n\n this.#document.body.appendChild(liveEl);\n\n return liveEl;\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyLogService` no longer needs the `SkyLogModule`.\n * The `SkyLogModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyLogModule {}\n","/**\n * @internal\n */\nexport enum SkyLogLevel {\n Info = 1,\n Warn = 2,\n Error = 3,\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyLogLevel } from './log-level';\n\n/**\n * @internal\n */\nexport const SKY_LOG_LEVEL = new InjectionToken<SkyLogLevel>('SkyLogLevel');\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { SkyAppFormat } from '../format/app-format';\n\nimport { SkyLogDeprecatedArgs } from './types/log-deprecation-args';\nimport { SkyLogLevel } from './types/log-level';\nimport { SKY_LOG_LEVEL } from './types/log-level-token';\n\nconst previousWarnings = new Set<string>();\n\n/**\n * Logs information to the console based on the application's log level as\n * provided by the `SKY_LOG_LEVEL` injection token. If no token is provided,\n * only `error` logs will be shown.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyLogService {\n #applicationLogLevel: SkyLogLevel;\n\n #formatter: SkyAppFormat;\n\n constructor(\n formatter: SkyAppFormat,\n @Optional()\n @Inject(SKY_LOG_LEVEL)\n applicationLogLevel?: SkyLogLevel,\n ) {\n this.#formatter = formatter;\n this.#applicationLogLevel = applicationLogLevel ?? SkyLogLevel.Error;\n }\n\n /**\n * Clears previously-logged messages. Primarily used for unit\n * testing this service.\n */\n public static clearPreviousLogs(): void {\n previousWarnings.clear();\n }\n\n /**\n * Logs a deprecation warning for a class, property, function, etc. This will\n * be logged as a console warning unless a different log level is given in the\n * `args` parameter.\n * @param name The name of the deprecated class, property, function, etc.\n * @param args Information about the deprecation and replacement recommendations.\n */\n public deprecated(name: string, args?: SkyLogDeprecatedArgs): void {\n const logLevel = args?.logLevel ?? SkyLogLevel.Warn;\n\n name = this.#convertStringToCode(name);\n\n if (this.#canLog(logLevel)) {\n const messageParts = [];\n\n if (args?.deprecationMajorVersion) {\n messageParts.push(\n this.#formatter.formatText(\n '{0} is deprecated starting in SKY UX {1}.',\n name,\n args.deprecationMajorVersion.toLocaleString(),\n ),\n );\n } else {\n messageParts.push(\n this.#formatter.formatText('{0} is deprecated.', name),\n );\n }\n\n if (args?.removalMajorVersion) {\n messageParts.push(\n this.#formatter.formatText(\n 'We will remove it in version {0}.',\n args.removalMajorVersion.toLocaleString(),\n ),\n );\n } else {\n messageParts.push('We will remove it in a future major version.');\n }\n\n if (args?.replacementRecommendation) {\n messageParts.push(args.replacementRecommendation);\n }\n\n if (args?.moreInfoUrl) {\n messageParts.push(\n this.#formatter.formatText(\n 'For more information, see {0}.',\n args.moreInfoUrl,\n ),\n );\n }\n\n this.#logBasedOnLevel(logLevel, messageParts.join(' '));\n }\n }\n\n /**\n * Logs a console error if the application's log level is `SkyLogLevel.Error`.\n * @param message The error message\n * @param params Optional parameters for the error message.\n */\n public error(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Error)) {\n this.#logWithParams('error', message, params);\n }\n }\n\n /**\n * Logs console information if the application's log level is `SkyLogLevel.Info` or above.\n * @param message The informational message\n * @param params Optional parameters for the informational message.\n */\n public info(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Info)) {\n this.#logWithParams('log', message, params);\n }\n }\n\n /**\n * Logs a console warning if the application's log level is `SkyLogLevel.Warn` or above.\n * @param message The warning message\n * @param params Optional parameters for the warning message.\n */\n public warn(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Warn)) {\n const messageKey = this.#buildMessageKey(message, params);\n\n // Only log each warning once per application instance to avoid drowning out other\n // important messages in the console.\n if (!previousWarnings.has(message)) {\n this.#logWithParams('warn', message, params);\n previousWarnings.add(messageKey);\n }\n }\n }\n\n #convertStringToCode(typeString: string): string {\n if (typeString.charAt(0) !== '`' && typeString.charAt(-1) !== '`') {\n typeString = '`' + typeString + '`';\n }\n return typeString;\n }\n\n #canLog(intendedLogLevel: SkyLogLevel): boolean {\n return intendedLogLevel >= this.#applicationLogLevel;\n }\n\n #logBasedOnLevel(\n logLevel: SkyLogLevel,\n message: string,\n params?: unknown[],\n ): void {\n switch (logLevel) {\n case SkyLogLevel.Info:\n this.info(message, params);\n break;\n case SkyLogLevel.Warn:\n this.warn(message, params);\n break;\n case SkyLogLevel.Error:\n this.error(message, params);\n break;\n }\n }\n\n #logWithParams(\n logMethod: 'log' | 'warn' | 'error',\n message: string,\n params: unknown[] | undefined,\n ): void {\n if (params) {\n console[logMethod](message, ...params);\n } else {\n console[logMethod](message);\n }\n }\n\n #buildMessageKey(message: string, params?: unknown[]): string {\n let key = message;\n\n if (params?.length) {\n key = `${key} ${params.join(' ')}`;\n }\n\n return key;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\n/**\n * Used to override a breakpoint observer for specific execution contexts.\n * @internal\n */\nexport const SKY_BREAKPOINT_OBSERVER =\n new InjectionToken<SkyBreakpointObserver>('SKY_BREAKPOINT_OBSERVER');\n","import {\n ApplicationRef,\n ElementRef,\n Injectable,\n NgZone,\n OnDestroy,\n inject,\n} from '@angular/core';\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n distinctUntilChanged,\n filter,\n map,\n observeOn,\n shareReplay,\n takeUntil,\n} from 'rxjs';\n\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nconst errorTest =\n /ResizeObserver loop completed with undelivered notifications/i;\nlet errorLogRegistered = false;\nlet originalOnError:\n | ((event: string | Event) => boolean | undefined)\n | undefined = undefined;\n\nconst errorHandler = (event: ErrorEvent): boolean | undefined => {\n if (errorTest.test(event.message)) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n return undefined;\n};\n\nconst onError = (event: string | ErrorEvent): boolean | undefined => {\n const message = typeof event === 'string' ? event : event.message;\n // This is necessary to prevent the test runner from failing on errors, but challenging to reliably test.\n /* istanbul ignore next */\n if (errorTest.test(message)) {\n if (event instanceof ErrorEvent) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n }\n return false;\n }\n return originalOnError?.call(window, event);\n};\n\n/**\n * Service to create rxjs observables for changes to the content box dimensions of elements.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyResizeObserverService implements OnDestroy {\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #zone = inject(NgZone);\n readonly #resizeObserver = this.#zone.runOutsideAngular(\n () =>\n new ResizeObserver((entries) =>\n this.#zone.run(() => this.#resizeSubject.next(entries)),\n ),\n );\n readonly #resizeSubject = new Subject<ResizeObserverEntry[]>();\n readonly #tracking = new Map<Element, Observable<ResizeObserverEntry>>();\n readonly #window = inject(SkyAppWindowRef);\n\n constructor() {\n this.#expectWindowError();\n // Because the resize observer is a native browser API, it does not shut down\n // synchronously when the service is destroyed. Leave the error handling\n // accommodation in place until the application is destroyed. This also works\n // for the test runner.\n inject(ApplicationRef).onDestroy(() => this.#resetWindowError());\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#resizeObserver.disconnect();\n }\n\n /**\n * Create rxjs observable to get size changes for an element ref.\n */\n public observe(element: ElementRef): Observable<ResizeObserverEntry> {\n const checkTracking = this.#tracking.has(element.nativeElement);\n\n if (!checkTracking) {\n this.#tracking.set(\n element.nativeElement,\n new Observable<ResizeObserverEntry[]>((observer) => {\n const subscription = this.#resizeSubject.subscribe(observer);\n this.#resizeObserver?.observe(element.nativeElement);\n return () => {\n this.#resizeObserver?.unobserve(element.nativeElement);\n subscription.unsubscribe();\n this.#tracking.delete(element.nativeElement);\n };\n }).pipe(\n filter(Boolean),\n filter((entries) =>\n entries.some((entry) => entry.target === element.nativeElement),\n ),\n map(\n (entries) =>\n entries.find(\n (entry) => entry.target === element.nativeElement,\n ) as ResizeObserverEntry,\n ),\n // Ignore subpixel changes.\n distinctUntilChanged(\n (a, b) =>\n Math.round(a.contentRect.width) ===\n Math.round(b.contentRect.width) &&\n Math.round(a.contentRect.height) ===\n Math.round(b.contentRect.height),\n ),\n // Emit the last value for late subscribers. Track references so it\n // un-observes when all subscribers are gone.\n shareReplay({ bufferSize: 1, refCount: true }),\n // Only emit prior to an animation frame to prevent layout thrashing.\n observeOn(animationFrameScheduler),\n takeUntil(this.#ngUnsubscribe),\n ),\n );\n }\n\n return this.#tracking.get(\n element.nativeElement,\n ) as Observable<ResizeObserverEntry>;\n }\n\n #expectWindowError(): void {\n if (!errorLogRegistered) {\n errorLogRegistered = true;\n // ResizeObserver throws an error when it is disconnected while it is\n // still observing an element. When an element is no longer observed, this\n // is not a concern.\n this.#zone.runOutsideAngular(() =>\n this.#window.nativeWindow.addEventListener('error', errorHandler),\n );\n }\n if (this.#window.nativeWindow.onerror !== onError) {\n originalOnError = this.#window.nativeWindow.onerror;\n this.#window.nativeWindow.onerror = onError;\n }\n }\n\n #resetWindowError(): void {\n this.#window.nativeWindow.removeEventListener('error', errorHandler);\n if (originalOnError) {\n this.#window.nativeWindow.onerror = originalOnError;\n originalOnError = undefined;\n }\n errorLogRegistered = false;\n }\n}\n","import {\n ElementRef,\n Injectable,\n OnDestroy,\n afterNextRender,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyResizeObserverService } from '../resize-observer/resize-observer.service';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\nconst QUERIES: [SkyBreakpoint, (width: number) => boolean][] = [\n ['xs', (width): boolean => width > 0 && width <= 767],\n ['sm', (width): boolean => width > 767 && width <= 991],\n ['md', (width): boolean => width > 991 && width <= 1199],\n ['lg', (width): boolean => width > 1199],\n];\n\n/**\n * Emits when the width of the host container changes.\n * @internal\n */\n@Injectable()\nexport class SkyContainerBreakpointObserver\n implements OnDestroy, SkyBreakpointObserver\n{\n readonly #elementRef = inject(ElementRef);\n readonly #resizeObserver = inject(SkyResizeObserverService);\n\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n #breakpoint: SkyBreakpoint | undefined;\n readonly #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n readonly #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n constructor() {\n this.#resizeObserver\n .observe(this.#elementRef)\n .pipe(takeUntilDestroyed())\n .subscribe((entry) => {\n this.#checkBreakpoint(entry.contentRect.width);\n });\n\n afterNextRender(() => {\n this.#checkWidth();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n public destroy(): void {\n this.#breakpointChange.complete();\n }\n\n #checkBreakpoint(width: number): void {\n for (const [breakpoint, check] of QUERIES) {\n if (breakpoint !== this.#breakpoint && check(width)) {\n this.#breakpoint = breakpoint;\n this.#notifyBreakpointChange(breakpoint);\n break;\n }\n }\n }\n\n #checkWidth(): void {\n const width =\n (this.#elementRef.nativeElement as HTMLElement).offsetWidth ?? 0;\n\n this.#checkBreakpoint(width);\n }\n\n #notifyBreakpointChange(breakpoint: SkyBreakpoint): void {\n this.#breakpointChange.next(breakpoint);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\nconst QUERIES = new Map<SkyBreakpoint, string>([\n ['xs', '(max-width: 767px)'],\n ['sm', '(min-width: 768px) and (max-width: 991px)'],\n ['md', '(min-width: 992px) and (max-width: 1199px)'],\n ['lg', '(min-width: 1200px)'],\n]);\n\n/**\n * Emits when the viewport width changes.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMediaBreakpointObserver\n implements OnDestroy, SkyBreakpointObserver\n{\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n readonly #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n readonly #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n #listeners = new Map<MediaQueryList, (evt: MediaQueryListEvent) => void>();\n\n constructor() {\n for (const [breakpoint, query] of QUERIES.entries()) {\n const mq = matchMedia(query);\n\n const listener = (evt: MediaQueryListEvent): void => {\n if (evt.matches) {\n this.#notifyBreakpointChange(breakpoint);\n }\n };\n\n mq.addEventListener('change', listener);\n\n if (mq.matches) {\n this.#notifyBreakpointChange(breakpoint);\n }\n\n this.#listeners.set(mq, listener);\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n public destroy(): void {\n this.#breakpointChange.complete();\n\n for (const [query, listener] of this.#listeners.entries()) {\n query.removeEventListener('change', listener);\n }\n\n this.#listeners.clear();\n }\n\n #notifyBreakpointChange(breakpoint: SkyBreakpoint): void {\n this.#breakpointChange.next(breakpoint);\n }\n}\n","import { Injectable, NgZone, OnDestroy, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { Observable, Subscription, map } from 'rxjs';\n\nimport { SkyBreakpoint } from '../breakpoint-observer/breakpoint';\nimport { toSkyMediaBreakpoints } from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpointObserver } from '../breakpoint-observer/media-breakpoint-observer';\n\nimport { SkyMediaBreakpoints } from './media-breakpoints';\nimport { SkyMediaQueryListener } from './media-query-listener';\n\nconst DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;\n\n/**\n * Utility used to subscribe to viewport and container breakpoint changes.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMediaQueryService implements OnDestroy {\n readonly #breakpointObserver = inject(SkyMediaBreakpointObserver);\n\n /**\n * Emits when the breakpoint changes.\n */\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointObserver.breakpointChange;\n }\n\n /**\n * The size for the `xs` breakpoint.\n * @default \"(max-width: 767px)\"\n */\n public static xs = '(max-width: 767px)';\n\n /**\n * The size for the `sm` breakpoint.\n * @default \"(min-width: 768px) and (max-width: 991px)\"\n */\n public static sm = '(min-width: 768px) and (max-width: 991px)';\n\n /**\n * The size for the `md` breakpoint.\n * @default \"(min-width: 992px) and (max-width: 1199px)\"\n */\n public static md = '(min-width: 992px) and (max-width: 1199px)';\n\n /**\n * The size for the `lg` breakpoint.\n * @default \"(min-width: 1200px)\"\n */\n public static lg = '(min-width: 1200px)';\n\n /**\n * Returns the current breakpoint.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public get current(): SkyMediaBreakpoints {\n return this.#currentBreakpoint();\n }\n\n #currentBreakpoint = toSignal(\n this.#breakpointObserver.breakpointChange.pipe(\n map((breakpoint) => toSkyMediaBreakpoints(breakpoint)),\n ),\n {\n initialValue: DEFAULT_BREAKPOINT,\n },\n );\n\n // Keep NgZone as a constructor param so that consumer mocks don't encounter typing errors.\n constructor(_zone?: NgZone) {}\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n /**\n * @internal\n */\n public destroy(): void {\n this.#breakpointObserver.destroy();\n }\n\n /**\n * Subscribes to screen size changes.\n * @param listener Specifies a function that is called when breakpoints change.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.#breakpointObserver.breakpointChange.subscribe({\n next: (breakpoint: SkyBreakpoint) => {\n listener(toSkyMediaBreakpoints(breakpoint));\n },\n });\n }\n}\n","import { Provider, Type, inject } from '@angular/core';\n\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyBreakpointObserver } from './breakpoint-observer';\nimport { SKY_BREAKPOINT_OBSERVER } from './breakpoint-observer.token';\nimport { SkyMediaBreakpointObserver } from './media-breakpoint-observer';\n\n/**\n * Overrides the default media breakpoint observer with the given observer.\n * @internal\n */\nexport function provideSkyBreakpointObserver(\n observer: Type<SkyBreakpointObserver>,\n): Provider[] {\n return [\n SkyMediaQueryService,\n observer,\n {\n provide: SkyMediaBreakpointObserver,\n useFactory() {\n return (\n // Yield to the injection token, if it's defined.\n inject(SKY_BREAKPOINT_OBSERVER, { optional: true }) ??\n inject(observer)\n );\n },\n },\n ];\n}\n","import { Directive, ElementRef, Injector, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { SkyCoreAdapterService } from '../adapter-service/adapter.service';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyContainerBreakpointObserver } from './container-breakpoint-observer';\nimport { provideSkyBreakpointObserver } from './provide-breakpoint-observer';\n\n/**\n * Overrides the `SkyMediaQueryService` to emit breakpoint changes when the host\n * container is resized. This directive also adds SKY UX CSS classes to the\n * host element to allow for responsive styles.\n */\n@Directive({\n exportAs: 'skyResponsiveHost',\n providers: [provideSkyBreakpointObserver(SkyContainerBreakpointObserver)],\n selector: '[skyResponsiveHost]',\n standalone: true,\n})\nexport class SkyResponsiveHostDirective {\n readonly #injector = inject(Injector);\n readonly #mediaSvc = inject(SkyMediaQueryService);\n\n /**\n * Emits when the breakpoint changes.\n */\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#mediaSvc.breakpointChange;\n }\n\n /**\n * The injector of the responsive host. Useful when displaying child components\n * via `ngTemplateOutlet`.\n * @example```\n * <my-container #responsiveHost=\"skyResponsiveHost\">\n * <ng-container\n * [ngTemplateOutlet]=\"myTemplate\"\n * [ngTemplateOutletInjector]=\"responsiveHost.injector\"\n * />\n * </my-container>\n * ```\n */\n public get injector(): Injector {\n return this.#injector;\n }\n\n constructor() {\n const adapter = inject(SkyCoreAdapterService);\n const elementRef = inject(ElementRef);\n\n this.breakpointChange.subscribe((breakpoint) => {\n adapter.setResponsiveContainerClass(elementRef, breakpoint);\n });\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyMediaQueryService` no longer needs the `SkyMediaQueryModule`.\n * The `SkyMediaQueryModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyMediaQueryModule {}\n","/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-core' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_numeric_billions_symbol: { message: 'B' },\n skyux_numeric_millions_symbol: { message: 'M' },\n skyux_numeric_thousands_symbol: { message: 'K' },\n skyux_numeric_trillions_symbol: { message: 'T' },\n },\n 'FR-CA': {\n skyux_numeric_billions_symbol: { message: 'G' },\n skyux_numeric_millions_symbol: { message: 'M' },\n skyux_numeric_thousands_symbol: { message: 'K' },\n skyux_numeric_trillions_symbol: { message: 'T' },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyCoreResourcesModule {}\n","import { SkyAppFormat } from '../format/app-format';\nimport { SkyLogService } from '../log/log.service';\n\n/**\n * Provides arguments for the number to format.\n */\nexport interface SkyNumericOptions {\n /**\n * Specifies the maximum number of digits after the decimal separator.\n */\n digits?: number;\n\n /**\n * Specifies how to format the number. Options are `currency` or `number`.\n */\n format?: string;\n\n /**\n * Specifies the format of the currency.\n */\n currencySign?: 'accounting' | 'standard';\n\n /**\n * Specifies the display of the currency. Defaults to 'symbol'.\n */\n currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name';\n\n /**\n * Specifies the ISO4217 currency code to use for currency formatting.\n */\n iso?: string;\n\n /**\n * Specifies the locale code to use when formatting.\n */\n locale?: string;\n\n /**\n * Specifies the minimum number of digits after the decimal separator. This property only applies\n * when the `truncate` property is set to `false`. If `digits` specifies a maximum number of\n * digits, then `minDigits` must be less than that value.\n */\n minDigits?: number;\n\n /**\n * Indicates whether to shorten numbers to rounded numbers and abbreviation characters\n * such as K for thousands, M for millions, B for billions, and T for trillions.\n */\n truncate?: boolean;\n\n /**\n * Specifies the minimum value at which numbers are shortened to rounded numbers and abbreviation characters. Values less than `1000` are not truncated.\n */\n truncateAfter?: number;\n}\n\n/**\n * Provides arguments for the number to format.\n * @deprecated Use the `SkyNumericOptions` interface instead.\n * @internal\n */\nexport class NumericOptions implements SkyNumericOptions {\n public digits?: number = 1;\n\n public format?: string = 'number';\n\n public currencySign?: 'accounting' | 'standard' = 'standard';\n\n public currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name';\n\n public iso?: string = 'USD';\n\n public locale?: string;\n\n public minDigits?: number;\n\n public truncate?: boolean = true;\n\n public truncateAfter?: number = 1000;\n\n constructor() {\n const logService = new SkyLogService(new SkyAppFormat());\n\n logService.deprecated('NumericOptions', {\n deprecationMajorVersion: 7,\n moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/numeric',\n replacementRecommendation:\n 'Use the `SkyNumericOptions` interface instead.',\n });\n }\n}\n","/* eslint-disable eqeqeq */\n// This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old\n// behavior of using the `Intl` API for formatting numbers rather than having to register every\n// supported locale.\n// https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/number_pipe.ts\nimport { SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';\n\nfunction isNumeric(value: any): boolean {\n return !isNaN(value - parseFloat(value));\n}\n\nfunction parseIntAutoRadix(text: string): number {\n const result: number = parseInt(text, 10);\n\n /* istanbul ignore next */\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n\n return result;\n}\n\nexport class SkyNumberFormatUtility {\n private static _NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\n\n public static formatNumber(\n locale: string,\n value: number | string,\n style: SkyIntlNumberFormatStyle,\n digits?: string | null,\n currency: string | null = null,\n currencyDisplay: 'code' | 'symbol' | 'narrowSymbol' | 'name' = 'code',\n currencySign?: 'accounting' | 'standard',\n ): string | null {\n if (value == null) {\n return null;\n }\n\n // Convert strings to numbers\n value = typeof value === 'string' && isNumeric(value) ? +value : value;\n if (typeof value !== 'number') {\n throw Error(`SkyInvalidPipeArgument: '${value}'`);\n }\n\n let minInt: number | undefined = undefined;\n let minFraction: number | undefined = undefined;\n let maxFraction: number | undefined = undefined;\n if (style !== SkyIntlNumberFormatStyle.Currency) {\n // rely on Intl default for currency\n minInt = 1;\n minFraction = 0;\n maxFraction = 3;\n }\n\n if (digits) {\n const parts = digits.match(this._NUMBER_FORMAT_REGEXP);\n\n if (parts === null) {\n throw new Error(`${digits} is not a valid digit info for number pipes`);\n }\n\n /* istanbul ignore else */\n if (parts[1] != null) {\n // min integer digits\n minInt = parseIntAutoRadix(parts[1]);\n }\n\n /* istanbul ignore else */\n if (parts[3] != null) {\n // min fraction digits\n minFraction = parseIntAutoRadix(parts[3]);\n }\n\n /* istanbul ignore else */\n if (parts[5] != null) {\n // max fraction digits\n maxFraction = parseIntAutoRadix(parts[5]);\n }\n }\n\n return SkyIntlNumberFormatter.format(value as number, locale, style, {\n minimumIntegerDigits: minInt,\n minimumFractionDigits: minFraction,\n maximumFractionDigits: maxFraction,\n currency: currency,\n currencyDisplay: currencyDisplay,\n currencySign: currencySign,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SkyIntlNumberFormatStyle, SkyLibResourcesService } from '@skyux/i18n';\n\nimport { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';\n\nimport { SkyNumericSymbol } from './numeric-symbol';\nimport { SkyNumericOptions } from './numeric.options';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyNumericService {\n /**\n * The browser's current locale.\n * @internal\n */\n public currentLocale = 'en-US';\n\n /**\n * @internal\n */\n public shortSymbol = '';\n\n #resourcesSvc: SkyLibResourcesService;\n\n #symbolIndex: SkyNumericSymbol[];\n\n constructor(resourcesSvc: SkyLibResourcesService) {\n this.#resourcesSvc = resourcesSvc;\n\n this.#symbolIndex = [\n { value: 1e12, label: this.#getSymbol('skyux_numeric_trillions_symbol') },\n { value: 1e9, label: this.#getSymbol('skyux_numeric_billions_symbol') },\n { value: 1e6, label: this.#getSymbol('skyux_numeric_millions_symbol') },\n { value: 1e3, label: this.#getSymbol('skyux_numeric_thousands_symbol') },\n ];\n }\n\n /**\n * Formats a number based on the provided options.\n * @param value The number to format.\n * @param options Format options.\n */\n public formatNumber(\n value: number | undefined | null,\n options: SkyNumericOptions,\n ): string {\n if (value === undefined || value === null || isNaN(value)) {\n return '';\n }\n\n const numericOptions: SkyNumericOptions = {\n digits: 0,\n format: 'number',\n currencySign: 'standard',\n iso: 'USD',\n truncateAfter: 1000,\n ...options,\n };\n\n const decimalPlaceRegExp = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n const locale = numericOptions.locale || this.currentLocale;\n const digits = numericOptions.digits || 0;\n\n // Get the symbol for the number after rounding, since rounding could push the number\n // into a different symbol range.\n let roundedNumber = this.#roundNumber(value, digits);\n const roundedNumberAbs = Math.abs(roundedNumber);\n\n let suffix = '';\n\n for (let i = 0; i < this.#symbolIndex.length; i++) {\n let symbol = this.#symbolIndex[i];\n\n if (\n numericOptions.truncate &&\n numericOptions.truncateAfter !== undefined &&\n roundedNumberAbs >= numericOptions.truncateAfter &&\n roundedNumberAbs >= symbol.value\n ) {\n roundedNumber = this.#roundNumber(value / symbol.value, digits);\n\n if (Math.abs(roundedNumber) === 1000 && i > 0) {\n // Rounding caused the number to cross into the range of the next symbol.\n symbol = this.#symbolIndex[i - 1];\n roundedNumber /= 1000;\n }\n\n suffix = symbol.label;\n\n break;\n }\n }\n\n let output: string =\n roundedNumber.toString().replace(decimalPlaceRegExp, '$1') + suffix;\n\n this.#storeShortenSymbol(output);\n\n let digitsFormatted: string | undefined;\n let isDecimal = false;\n\n // Checks the string entered for format. Using toLowerCase to ignore case.\n switch (numericOptions.format?.toLowerCase()) {\n // In a case where a decimal value was not shortened and\n // the digit input is 2 or higher, it forces 2 digits.\n // For example, this prevents a value like $15.50 from displaying as $15.5.\n // Note: This will need to be reviewed if we support currencies with\n // three decimal digits.\n case 'currency':\n isDecimal = value % 1 !== 0;\n\n if (numericOptions.minDigits) {\n digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;\n } else if (isDecimal && digits >= 2) {\n digitsFormatted = `1.2-${digits}`;\n } else {\n digitsFormatted = `1.0-${digits}`;\n }\n\n output = SkyNumberFormatUtility.formatNumber(\n locale,\n parseFloat(output),\n SkyIntlNumberFormatStyle.Currency,\n digitsFormatted,\n numericOptions.iso,\n numericOptions.currencyDisplay ?? 'symbol',\n numericOptions.currencySign,\n ) as string;\n // ^^^^^^ Result can't be null since the sanitized input is always a number.\n break;\n\n // The following is a catch-all to ensure that if\n // anything but currency (or a future option) are entered,\n // it will be treated like a number.\n default:\n // Ensures localization of the number to ensure comma and\n // decimal separator\n if (numericOptions.minDigits) {\n digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;\n } else if (numericOptions.truncate) {\n digitsFormatted = `1.0-${digits}`;\n } else {\n digitsFormatted = `1.${digits}-${digits}`;\n }\n\n output = SkyNumberFormatUtility.formatNumber(\n locale,\n parseFloat(output),\n SkyIntlNumberFormatStyle.Decimal,\n digitsFormatted,\n ) as string;\n // ^^^^^^ Result can't be null since the sanitized input is always a number.\n break;\n }\n\n if (numericOptions.truncate) {\n output = this.#replaceShortenSymbol(output);\n }\n\n return output;\n }\n\n /**\n * Rounds a given number\n *\n * JS's limitation - numbers bigger than Number.MIN_SAFE_INTEGER or Number.MAX_SAFE_INTEGER\n * are not guaranteed to be represented or rounded correctly\n * @param value - value to round\n * @param precision - what precision to round with, defaults to 0 decimal places\n */\n #roundNumber(value: number, precision: number): number {\n if (precision < 0) {\n throw new Error('SkyInvalidArgument: precision must be >= 0');\n }\n\n /* Sanity check - ignoring coverage but should not ignore if we make this method public */\n /* istanbul ignore next */\n if (isNaN(value) || value === null) {\n return 0;\n }\n\n const scaledValue: number = this.#scaleNumberByPowerOfTen(\n value,\n precision,\n true,\n );\n const scaledRoundedValue: number = Math.round(scaledValue);\n const unscaledRoundedValue: number = this.#scaleNumberByPowerOfTen(\n scaledRoundedValue,\n precision,\n false,\n );\n\n return unscaledRoundedValue;\n }\n\n /**\n * Scales a given number by a power of 10\n * @param value - value to scale\n * @param scalar - 10^scalar\n * @param scaleUp - whether to increase or decrease the value\n */\n #scaleNumberByPowerOfTen(\n value: number,\n scalar: number,\n scaleUp: boolean,\n ): number {\n const valueStr: string = value.toString().toLowerCase();\n const isExponentFormat: boolean = valueStr.includes('e');\n\n if (isExponentFormat) {\n const [base, exp] = valueStr.split('e');\n const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;\n return Number(`${base}e${newExp}`);\n } else {\n const e = scaleUp ? 'e' : 'e-';\n return Number(`${value}${e}${scalar}`);\n }\n }\n\n /**\n * Stores the symbol added from shortening to reapply later.\n * @param value The string to derive the shorten symbol from.\n */\n #storeShortenSymbol(value: string): void {\n const symbols: string[] = this.#symbolIndex.map((s) => s.label);\n const regexp = new RegExp(symbols.join('|'), 'ig');\n const match = value.match(regexp);\n this.shortSymbol = match ? match.toString() : '';\n }\n\n /**\n * Must have previously called storeShortenSymbol to have something to replace.\n * Finds the last number in the formatted number, gets the index of the position\n * after that character and re-inserts the symbol.\n * Works regardless of currency symbol position.\n * @param value The string to modify.\n */\n #replaceShortenSymbol(value: string): string {\n const result = /(\\d)(?!.*\\d)/g.exec(value);\n /*istanbul ignore else*/\n if (result) {\n const pos = result.index + result.length;\n const output =\n value.substring(0, pos) + this.shortSymbol + value.substring(pos);\n\n return output;\n } else {\n return value;\n }\n }\n\n #getSymbol(key: string): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.#resourcesSvc.getStringForLocale({ locale: 'en_US' }, key);\n }\n}\n","import {\n ChangeDetectorRef,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { SkyAppLocaleProvider } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NumericOptions, SkyNumericOptions } from './numeric.options';\nimport { SkyNumericService } from './numeric.service';\n\n/**\n * Shortens numbers to rounded numbers and abbreviation characters such as K for thousands,\n * M for millions, B for billions, and T for trillions. The pipe also formats for currency.\n * Be sure you have a space after the two curly brackets opening the pipe and\n * a space before the two curly brackets closing the pipe or it will not work.\n */\n@Pipe({\n name: 'skyNumeric',\n pure: false,\n standalone: false,\n})\nexport class SkyNumericPipe implements PipeTransform, OnDestroy {\n #cacheKey: string | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n #formattedValue: string | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #numericSvc: SkyNumericService;\n\n #providerLocale: string | undefined;\n\n constructor(\n localeProvider: SkyAppLocaleProvider,\n numericSvc: SkyNumericService,\n changeDetector: ChangeDetectorRef,\n ) {\n this.#numericSvc = numericSvc;\n this.#changeDetector = changeDetector;\n\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#providerLocale = localeInfo.locale;\n numericSvc.currentLocale = this.#providerLocale;\n this.#changeDetector.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Formats a number based on the provided options.\n */\n public transform(\n value: number | undefined | null,\n config?: SkyNumericOptions,\n ): string {\n if (value === undefined || value === null || isNaN(value)) {\n return '';\n }\n\n const newCacheKey =\n (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +\n `${value}_${config?.locale || this.#providerLocale}`;\n\n /* If the value and locale are the same as the last transform then return the previous value\n instead of reformatting. */\n if (this.#formattedValue && this.#cacheKey === newCacheKey) {\n return this.#formattedValue;\n }\n\n const options = new NumericOptions();\n\n // The default number of digits is `1`. When truncate is disabled, set digits\n // to `0` to avoid the unnecessary addition of `.0` at the end of the formatted number.\n if (config && config.truncate === false && config.digits === undefined) {\n options.digits = 0;\n }\n\n // If the minimum digits is less than the set maximum digits then throw an error\n if (\n config &&\n config.minDigits &&\n config.digits &&\n config.minDigits > config.digits\n ) {\n throw new Error(\n 'The `digits` property must be greater than or equal to the `minDigits` property',\n );\n\n // If there is a minimum digits given but not a maximum then default the maximum to the minimum\n } else if (config && config.minDigits && !config.digits) {\n options.digits = config.minDigits;\n }\n\n Object.assign(options, config);\n\n // Assign properties for proper result caching.\n this.#cacheKey = newCacheKey;\n\n this.#formattedValue = this.#numericSvc.formatNumber(value, options);\n return this.#formattedValue;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';\n\nimport { SkyNumericPipe } from './numeric.pipe';\n\n@NgModule({\n declarations: [SkyNumericPipe],\n providers: [SkyNumericPipe],\n imports: [SkyCoreResourcesModule],\n exports: [SkyNumericPipe],\n})\nexport class SkyNumericModule {}\n","import { ComponentRef, StaticProvider, TemplateRef, Type } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayComponent } from './overlay.component';\n\n/**\n * Represents a new overlay instance. It is used to manage the \"closed\" state of the overlay,\n * and access any public members on the appended content component instance.\n */\nexport class SkyOverlayInstance {\n /**\n * Emits when the overlay is clicked (but not its content).\n */\n public get backdropClick(): Observable<void> {\n return this.#backdropClickObs;\n }\n\n /**\n * Emits after the overlay is closed.\n */\n public get closed(): Observable<void> {\n return this.#closedObs;\n }\n\n public id: string;\n\n #backdropClick: Subject<void>;\n\n #backdropClickObs: Observable<void>;\n\n #closed: Subject<void>;\n\n #closedObs: Observable<void>;\n\n constructor(\n /**\n * The configuration for the overlay.\n */\n public readonly config: SkyOverlayConfig,\n public readonly componentRef: ComponentRef<SkyOverlayComponent>,\n ) {\n this.id = this.componentRef.instance.id;\n\n this.componentRef.instance.closed.subscribe(() => {\n this.#closed.next();\n this.#closed.complete();\n this.#backdropClick.complete();\n });\n\n this.componentRef.instance.backdropClick.subscribe(() => {\n this.#backdropClick.next();\n });\n\n this.#backdropClick = new Subject<void>();\n this.#closed = new Subject<void>();\n\n this.#backdropClickObs = this.#backdropClick.asObservable();\n this.#closedObs = this.#closed.asObservable();\n }\n\n /**\n * Creates and attaches a component to the overlay.\n * @param component The component to attach.\n * @param providers Custom providers to apply to the component.\n */\n public attachComponent<C>(\n component: Type<C>,\n providers?: StaticProvider[],\n ): C {\n const componentRef = this.componentRef.instance.attachComponent(\n component,\n providers,\n );\n return componentRef.instance;\n }\n\n /**\n * Attaches a `TemplateRef` to the overlay.\n * @param templateRef The `TemplateRef` to attach.\n * @param context The context to provide to the template.\n */\n public attachTemplate<T>(templateRef: TemplateRef<T>, context?: T): void {\n this.componentRef.instance.attachTemplate(templateRef, context);\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyOverlayModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkyOverlayModule {}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyOverlayAdapterService {\n #renderer: Renderer2;\n\n #styleElement: HTMLStyleElement | undefined;\n\n constructor(rendererFactory: RendererFactory2) {\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n public restrictBodyScroll(): void {\n // Create a style element to avoid overwriting any existing inline body styles.\n const styleElement = this.#renderer.createElement('style');\n const textNode = this.#renderer.createText('body { overflow: hidden }');\n\n // Apply a `data-` attribute to make unit testing easier.\n this.#renderer.setAttribute(\n styleElement,\n 'data-test-selector',\n 'sky-overlay-restrict-scroll-styles',\n );\n\n this.#renderer.appendChild(styleElement, textNode);\n this.#renderer.appendChild(document.head, styleElement);\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#styleElement = styleElement;\n }\n\n public releaseBodyScroll(): void {\n this.#destroyStyleElement();\n }\n\n #destroyStyleElement(): void {\n /* istanbul ignore else */\n if (\n this.#styleElement &&\n this.#styleElement.parentElement === document.head\n ) {\n this.#renderer.removeChild(document.head, this.#styleElement);\n }\n }\n\n public addAriaHiddenToSiblings(\n overlayElementRef: ElementRef,\n ): Map<Element, string | null> {\n const overlayElement = overlayElementRef.nativeElement;\n const hostSiblings = overlayElement.parentElement.children;\n\n const siblingAriaHiddenCache = new Map<Element, string | null>();\n\n for (const element of hostSiblings) {\n if (\n element !== overlayElement &&\n !element.hasAttribute('aria-live') &&\n element.nodeName.toLowerCase() !== 'script' &&\n element.nodeName.toLowerCase() !== 'style'\n ) {\n // preserve previous aria-hidden status of elements outside of modal host\n siblingAriaHiddenCache.set(\n element,\n element.getAttribute('aria-hidden'),\n );\n element.setAttribute('aria-hidden', 'true');\n }\n }\n\n return siblingAriaHiddenCache;\n }\n\n public restoreAriaHiddenForSiblings(\n siblingAriaHiddenCache: Map<Element, string | null>,\n ): void {\n siblingAriaHiddenCache.forEach((previousValue, element) => {\n // if element had aria-hidden status prior, restore status\n if (element.parentElement) {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n siblingAriaHiddenCache.clear();\n }\n}\n","import { SkyOverlayConfig } from './overlay-config';\n\n/**\n * Contextual information for each overlay.\n * @internal\n */\nexport class SkyOverlayContext {\n constructor(public readonly config: SkyOverlayConfig) {}\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyStackingContext } from './stacking-context';\n\n/**\n * @internal\n */\nexport const SKY_STACKING_CONTEXT = new InjectionToken<SkyStackingContext>(\n 'SkyStackingContext',\n);\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n HostBinding,\n OnDestroy,\n OnInit,\n StaticProvider,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n createEnvironmentInjector,\n inject,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\n\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n Subject,\n Subscription,\n fromEvent,\n} from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyCoreAdapterService } from '../adapter-service/adapter.service';\nimport { SkyIdService } from '../id/id.service';\nimport { SKY_STACKING_CONTEXT } from '../stacking-context/stacking-context-token';\n\nimport { SkyOverlayAdapterService } from './overlay-adapter.service';\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayContext } from './overlay-context';\nimport { SkyOverlayPosition } from './overlay-position';\n\nconst POSITION_DEFAULT: SkyOverlayPosition = 'fixed';\n\n/**\n * Omnibar is 1000.\n * See: https://github.com/blackbaud/auth-client/blob/master/src/omnibar/omnibar.ts#L139\n * ---\n * Modals start their z-indexes at 1040. However, each modal's z-index is a multiple of 10, so it\n * will be difficult to reliably predict a z-index that will always appear above all other\n * layers. Starting the z-index for overlays at a number much greater than modals will accommodate\n * the most reasonable of scenarios.\n * See: https://github.com/blackbaud/skyux-modals/blob/master/src/app/public/modules/modal/modal-host.service.ts#L22\n * (NOTE: It should be noted that modals do not use the overlay service, which is something we\n * should do in the near future to make sure z-indexes are predictable across all component\n * libraries.)\n */\nlet uniqueZIndex = 5000;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class SkyOverlayComponent implements OnInit, OnDestroy {\n public wrapperClass = '';\n\n public get backdropClick(): Observable<void> {\n return this.#backdropClickObs;\n }\n\n public get closed(): Observable<void> {\n return this.#closedObs;\n }\n\n public enablePointerEvents = false;\n\n @HostBinding('id')\n public id: string;\n\n public showBackdrop = false;\n\n public zIndex = `${++uniqueZIndex}`;\n\n protected clipPath$ = new ReplaySubject<string | undefined>(1);\n\n protected position = POSITION_DEFAULT;\n\n @ViewChild('overlayContentRef', {\n read: ElementRef,\n static: true,\n })\n public overlayContentRef: ElementRef | undefined;\n\n @ViewChild('overlayRef', {\n read: ElementRef,\n static: true,\n })\n public overlayRef: ElementRef | undefined;\n\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n public targetRef: ViewContainerRef | undefined;\n\n #backdropClick: Subject<void>;\n\n #backdropClickObs: Observable<void>;\n\n #closed: Subject<void>;\n\n #closedObs: Observable<void>;\n\n #ngUnsubscribe = new Subject<void>();\n\n #routerSubscription: Subscription | undefined;\n\n #siblingAriaHiddenCache = new Map<Element, string | null>();\n\n readonly #adapter = inject(SkyOverlayAdapterService);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #context = inject(SkyOverlayContext);\n readonly #coreAdapter = inject(SkyCoreAdapterService);\n readonly #elementRef = inject(ElementRef);\n readonly #environmentInjector = inject(EnvironmentInjector);\n readonly #idSvc = inject(SkyIdService);\n readonly #router = inject(Router, { optional: true });\n\n constructor() {\n this.id = this.#idSvc.generateId();\n\n this.#backdropClick = new Subject<void>();\n this.#closed = new Subject<void>();\n\n this.#backdropClickObs = this.#backdropClick.asObservable();\n this.#closedObs = this.#closed.asObservable();\n }\n\n public ngOnInit(): void {\n this.#applyConfig(this.#context.config);\n\n setTimeout(() => {\n this.#addBackdropClickListener();\n });\n\n if (this.#context.config.closeOnNavigation) {\n this.#addRouteListener();\n }\n\n if (this.#context.config.hideOthersFromScreenReaders) {\n this.#siblingAriaHiddenCache = this.#adapter.addAriaHiddenToSiblings(\n this.#elementRef,\n );\n }\n }\n\n public ngOnDestroy(): void {\n this.#removeRouteListener();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#backdropClick.complete();\n\n this.#adapter.restoreAriaHiddenForSiblings(this.#siblingAriaHiddenCache);\n\n this.#closed.next();\n this.#closed.complete();\n }\n\n public attachComponent<C>(\n component: Type<C>,\n providers: StaticProvider[] = [],\n ): ComponentRef<C> {\n /*istanbul ignore if: untestable*/\n if (!this.targetRef) {\n throw new Error(\n '[SkyOverlayComponent] Could not attach the component because the target element could not be found.',\n );\n }\n\n this.targetRef.clear();\n\n const environmentInjector = createEnvironmentInjector(\n [\n {\n provide: SKY_STACKING_CONTEXT,\n useValue: {\n zIndex: new BehaviorSubject(parseInt(this.zIndex, 10))\n .asObservable()\n .pipe(takeUntil(this.#ngUnsubscribe)),\n },\n },\n ...providers,\n ],\n this.#environmentInjector,\n );\n\n const componentRef = this.targetRef.createComponent<C>(component, {\n environmentInjector,\n });\n\n // Run an initial change detection cycle after the component has been created.\n componentRef.changeDetectorRef.detectChanges();\n\n return componentRef;\n }\n\n public attachTemplate<T>(\n templateRef: TemplateRef<T>,\n context: T,\n ): EmbeddedViewRef<T> {\n /*istanbul ignore if: untestable*/\n if (!this.targetRef) {\n throw new Error(\n '[SkyOverlayComponent] Could not attach the template because the target element could not be found.',\n );\n }\n\n this.targetRef.clear();\n\n return this.targetRef.createEmbeddedView(templateRef, context, {\n injector: this.#environmentInjector,\n });\n }\n\n public updateClipPath(clipPath: string | undefined): void {\n this.clipPath$.next(clipPath);\n }\n\n #applyConfig(config: SkyOverlayConfig): void {\n this.wrapperClass = config.wrapperClass || '';\n this.showBackdrop = !!config.showBackdrop;\n this.enablePointerEvents = !!config.enablePointerEvents;\n this.position = config.position || POSITION_DEFAULT;\n this.#changeDetector.markForCheck();\n }\n\n #addBackdropClickListener(): void {\n fromEvent<MouseEvent>(window.document, 'click')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n if (event.target && this.overlayContentRef && this.overlayRef) {\n const isChild = this.overlayContentRef.nativeElement.contains(\n event.target,\n );\n\n const isAbove = this.#coreAdapter.isTargetAboveElement(\n event.target,\n this.overlayRef.nativeElement,\n );\n\n /* istanbul ignore else */\n if (!isChild && !isAbove) {\n this.#backdropClick.next();\n if (this.#context.config.enableClose) {\n this.#closed.next();\n }\n }\n }\n });\n }\n\n #addRouteListener(): void {\n /*istanbul ignore else*/\n if (this.#router) {\n this.#routerSubscription = this.#router.events.subscribe((event) => {\n /* istanbul ignore else */\n if (event instanceof NavigationStart) {\n this.#closed.next();\n }\n });\n }\n }\n\n #removeRouteListener(): void {\n if (this.#routerSubscription) {\n this.#routerSubscription.unsubscribe();\n this.#routerSubscription = undefined;\n }\n }\n}\n","<div\n #overlayRef\n [class]=\"'sky-overlay-position-' + position + ' ' + wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n>\n <div #overlayContentRef class=\"sky-overlay-content\">\n <ng-template #target />\n </div>\n @if (showBackdrop) {\n <div class=\"sky-overlay-backdrop\"></div>\n }\n</div>\n","import {\n ApplicationRef,\n ComponentRef,\n EnvironmentInjector,\n Injectable,\n inject,\n} from '@angular/core';\n\nimport {\n SkyDynamicComponentLegacyService,\n SkyDynamicComponentService,\n} from '../dynamic-component/dynamic-component.service';\n\nimport { SkyOverlayAdapterService } from './overlay-adapter.service';\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayContext } from './overlay-context';\nimport { SkyOverlayInstance } from './overlay-instance';\nimport { SkyOverlayComponent } from './overlay.component';\n\n/**\n * This service is used to create new overlays.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyOverlayService {\n private static overlays: SkyOverlayInstance[] = [];\n\n readonly #adapter = inject(SkyOverlayAdapterService);\n readonly #applicationRef = inject(ApplicationRef);\n readonly #dynamicComponentSvc: SkyDynamicComponentService;\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor(dynamicComponentSvc: SkyDynamicComponentService) {\n this.#dynamicComponentSvc = dynamicComponentSvc;\n }\n\n /**\n * Creates an empty overlay. Use the returned `SkyOverlayInstance` to append content.\n * @param config Configuration for the overlay.\n */\n public create(config?: SkyOverlayConfig): SkyOverlayInstance {\n const settings = this.#prepareConfig(config);\n\n if (settings.enableScroll === false) {\n this.#adapter.restrictBodyScroll();\n }\n\n const componentRef = this.#createOverlay(settings);\n const instance = new SkyOverlayInstance(settings, componentRef);\n\n instance.closed.subscribe(() => {\n // Only execute the service's close method if the instance still exists.\n // This is needed to address a race condition if the deprecated instance.close method is used instead.\n if (SkyOverlayService.overlays.indexOf(instance) > -1) {\n this.close(instance);\n }\n });\n\n SkyOverlayService.overlays.push(instance);\n\n return instance;\n }\n\n /**\n * Closes (and destroys) an overlay instance.\n * @param instance The instance to close.\n */\n public close(instance: SkyOverlayInstance): void {\n this.#destroyOverlay(instance);\n this.#applicationRef.detachView(instance.componentRef.hostView);\n instance.componentRef.destroy();\n\n // In some cases, Angular keeps dynamically-generated component's nodes in the DOM during\n // unit tests. This can make querying difficult because the older DOM nodes still exist and\n // produce inconsistent results.\n // Angular Material's overlay appears to do the same thing:\n // https://github.com/angular/components/blob/master/src/cdk/portal/dom-portal-outlet.ts#L143-L145\n // (Ignoring coverage since this branch will only be hit by consumer unit tests.)\n const componentElement = instance.componentRef.location.nativeElement;\n /* istanbul ignore if */\n if (componentElement.parentNode !== null) {\n componentElement.parentNode.removeChild(componentElement);\n }\n }\n\n /**\n * Closes all overlay instances.\n */\n public closeAll(): void {\n // The `close` event handler for each instance alters the array's length asynchronously,\n // so the only \"safe\" index to call is zero.\n while (SkyOverlayService.overlays.length > 0) {\n this.close(SkyOverlayService.overlays[0]);\n }\n }\n\n #createOverlay(config: SkyOverlayConfig): ComponentRef<SkyOverlayComponent> {\n return this.#dynamicComponentSvc.createComponent(SkyOverlayComponent, {\n environmentInjector: this.#environmentInjector,\n providers: [\n {\n provide: SkyOverlayContext,\n useValue: new SkyOverlayContext(config),\n },\n ],\n });\n }\n\n #prepareConfig(config: SkyOverlayConfig = {}): SkyOverlayConfig {\n const defaults: SkyOverlayConfig = {\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: false,\n enableScroll: true,\n showBackdrop: false,\n wrapperClass: '',\n };\n\n return { ...defaults, ...config };\n }\n\n #destroyOverlay(instance: SkyOverlayInstance): void {\n SkyOverlayService.overlays.splice(\n SkyOverlayService.overlays.indexOf(instance),\n 1,\n );\n\n if (instance.config.enableScroll === false) {\n // Only release the body scroll if no other overlay wishes it to be disabled.\n const anotherOverlayDisablesScroll = SkyOverlayService.overlays.some(\n (o) => !o.config.enableScroll,\n );\n if (!anotherOverlayDisablesScroll) {\n this.#adapter.releaseBodyScroll();\n }\n }\n }\n}\n\n/**\n * This service is used to create new overlays.\n * @internal\n * @deprecated Use `SkyOverlayService` to open a standalone component instead.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyOverlayLegacyService extends SkyOverlayService {\n /* istanbul ignore next */\n constructor(dynamicComponentSvc: SkyDynamicComponentLegacyService) {\n super(dynamicComponentSvc);\n }\n}\n","import { OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { SkyAppLocaleProvider, SkyIntlNumberFormatStyle } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';\n\n@Pipe({\n name: 'skyPercent',\n pure: false,\n standalone: false,\n})\nexport class SkyPercentPipe implements OnDestroy, PipeTransform {\n public get defaultLocale(): string {\n return this.#defaultLocale;\n }\n\n #defaultFormat = '1.0-2';\n\n #defaultLocale = 'en-US';\n\n #format: string | undefined;\n\n #formattedValue = '';\n\n #locale: string | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #value: string | undefined;\n\n constructor(localeProvider: SkyAppLocaleProvider) {\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#defaultLocale = localeInfo.locale;\n this.#updateFormattedValue();\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public transform(value: string, format?: string, locale?: string): string {\n this.#value = value;\n this.#format = format;\n this.#locale = locale;\n\n this.#updateFormattedValue();\n\n return this.#formattedValue;\n }\n\n #updateFormattedValue(): void {\n const locale = this.#locale || this.#defaultLocale;\n const format = this.#format || this.#defaultFormat;\n\n this.#formattedValue = this.#value\n ? (SkyNumberFormatUtility.formatNumber(\n locale,\n this.#value,\n SkyIntlNumberFormatStyle.Percent,\n format,\n ) as string)\n : '';\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';\n\nimport { SkyPercentPipe } from './percent.pipe';\n\n@NgModule({\n declarations: [SkyPercentPipe],\n providers: [SkyPercentPipe],\n imports: [SkyCoreResourcesModule],\n exports: [SkyPercentPipe],\n})\nexport class SkyPercentPipeModule {}\n","import { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Observable, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyBreakpoint } from '../breakpoint-observer/breakpoint';\nimport { toSkyBreakpoint } from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\nimport { SkyMediaQueryListener } from '../media-query/media-query-listener';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyResizeObserverService } from './resize-observer.service';\n\nconst DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;\n\n/**\n * Acts like `SkyMediaQueryService` for a container element, emitting the same responsive breakpoints.\n * @deprecated Use the `SkyResponsiveHostDirective` instead.\n */\n@Injectable()\nexport class SkyResizeObserverMediaQueryService\n extends SkyMediaQueryService\n implements OnDestroy\n{\n /**\n * Emits when the breakpoint changes.\n */\n public override get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n /**\n * Returns the current breakpoint.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public override get current(): SkyMediaBreakpoints {\n return this.#currentBreakpoint;\n }\n\n #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n #breakpoints: {\n check: (width: number) => boolean;\n name: SkyMediaBreakpoints;\n }[] = [\n {\n check: (width: number): boolean => width > 0 && width <= 767,\n name: SkyMediaBreakpoints.xs,\n },\n {\n check: (width: number): boolean => width > 767 && width <= 991,\n name: SkyMediaBreakpoints.sm,\n },\n {\n check: (width: number): boolean => width > 991 && width <= 1199,\n name: SkyMediaBreakpoints.md,\n },\n {\n check: (width: number): boolean => width > 1199,\n name: SkyMediaBreakpoints.lg,\n },\n ];\n\n #currentBreakpoint: SkyMediaBreakpoints = DEFAULT_BREAKPOINT;\n\n #currentBreakpointObs = new ReplaySubject<SkyMediaBreakpoints>(1);\n\n #ngUnsubscribe = new Subject<void>();\n\n #resizeObserverSvc = inject(SkyResizeObserverService);\n\n #target: ElementRef | undefined;\n\n public override ngOnDestroy(): void {\n this.unobserve();\n\n this.#target = undefined;\n this.#currentBreakpointObs.complete();\n this.#breakpointChange.complete();\n }\n\n /**\n * @internal\n */\n public override destroy(): void {\n this.ngOnDestroy();\n }\n\n /**\n * Sets the container element to watch. The `SkyResizeObserverMediaQueryService` will only observe one element at a\n * time. Any previous subscriptions will be unsubscribed when a new element is observed.\n */\n public observe(\n element: ElementRef,\n options?: {\n updateResponsiveClasses?: boolean;\n },\n ): SkyResizeObserverMediaQueryService {\n if (this.#target) {\n if (this.#target === element) {\n return this;\n }\n\n this.unobserve();\n }\n\n this.#target = element;\n\n this.#checkWidth(element, options?.updateResponsiveClasses);\n\n this.#resizeObserverSvc\n .observe(element)\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n const breakpoint = this.#checkBreakpoint(value.contentRect.width);\n if (breakpoint) {\n this.#updateBreakpoint(breakpoint, options?.updateResponsiveClasses);\n }\n });\n return this;\n }\n\n /**\n * Stop watching the container element and remove any added classes.\n */\n public unobserve(): void {\n this.#removeResponsiveClasses();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Subscribes to element size changes that cross breakpoints.\n */\n public override subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.#currentBreakpointObs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n listener(value);\n });\n }\n\n #updateBreakpoint(\n breakpoint: SkyMediaBreakpoints,\n updateResponsiveClasses?: boolean,\n ): void {\n if (updateResponsiveClasses) {\n this.#updateResponsiveClasses(this.current, breakpoint);\n }\n\n if (this.current !== breakpoint) {\n this.#currentBreakpointObs.next(breakpoint);\n const breakpointType = toSkyBreakpoint(breakpoint);\n this.#breakpointChange.next(breakpointType);\n }\n this.#currentBreakpoint = breakpoint;\n }\n\n #updateResponsiveClasses(\n oldBreakpoint: SkyMediaBreakpoints,\n newBreakpoint: SkyMediaBreakpoints,\n ): void {\n const oldClass = this.#getClassForBreakpoint(oldBreakpoint);\n const newClass = this.#getClassForBreakpoint(newBreakpoint);\n\n const targetClassList = this.#target?.nativeElement?.classList;\n\n targetClassList?.remove(oldClass);\n targetClassList?.add(newClass);\n }\n\n #removeResponsiveClasses(): void {\n for (const breakpoint of Object.values(SkyMediaBreakpoints)) {\n if (typeof breakpoint === 'number') {\n const className = this.#getClassForBreakpoint(breakpoint);\n\n this.#target?.nativeElement?.classList?.remove(className);\n }\n }\n }\n\n #getClassForBreakpoint(breakpoint: SkyMediaBreakpoints): string {\n return `sky-responsive-container-${SkyMediaBreakpoints[breakpoint]}`;\n }\n\n #checkBreakpoint(width: number): SkyMediaBreakpoints | undefined {\n const breakpoint = this.#breakpoints.find((breakpoint) =>\n breakpoint.check(width),\n );\n\n return breakpoint ? breakpoint.name : undefined;\n }\n\n #checkWidth(el: ElementRef, updateResponsiveClasses?: boolean): void {\n const width = (el.nativeElement as HTMLElement).offsetWidth || 0;\n const breakpoint = this.#checkBreakpoint(width);\n\n if (breakpoint) {\n this.#updateBreakpoint(breakpoint, updateResponsiveClasses);\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n inject,\n} from '@angular/core';\n\nconst SCREEN_READER_LABELS_CONTAINER_ID = 'sky-screen-reader-labels-container';\n\n/**\n * Adds the element to a screen reader only section of the body.\n * This prevents components' DOM from including text only intended for screen readers.\n *\n * @internal\n */\n@Directive({\n selector: '[skyScreenReaderLabel]',\n standalone: true,\n})\nexport class SkyScreenReaderLabelDirective implements OnDestroy {\n public ngOnDestroy(): void {\n this.#removeLabelEl();\n }\n\n /**\n * Indicates if the label should be created in the DOM.\n * @default false\n */\n @Input()\n public set createLabel(value: boolean | undefined) {\n this.#_createLabel = value ?? false;\n this.#updateLabelEl();\n }\n\n public get createLabel(): boolean {\n return this.#_createLabel;\n }\n\n readonly #elementRef = inject(ElementRef);\n readonly #renderer = inject(Renderer2);\n #_createLabel = false;\n\n #updateLabelEl(): void {\n if (this.createLabel) {\n const containerEl = this.#getContainerEl() || this.#createContainerEl();\n\n this.#renderer.appendChild(containerEl, this.#elementRef.nativeElement);\n } else {\n this.#removeLabelEl();\n }\n }\n\n #getContainerEl(): HTMLElement | null {\n return document.getElementById(SCREEN_READER_LABELS_CONTAINER_ID);\n }\n\n #createContainerEl(): HTMLElement {\n const el = document.createElement('div');\n el.id = SCREEN_READER_LABELS_CONTAINER_ID;\n el.style.display = 'none';\n\n this.#renderer.appendChild(document.body, el);\n\n return el;\n }\n\n #removeLabelEl(): void {\n const containerEl = this.#getContainerEl();\n\n this.#elementRef.nativeElement.remove();\n\n if (containerEl && containerEl.childNodes.length === 0) {\n containerEl.remove();\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n inject,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\nimport { SkyScrollShadowEventArgs } from './scroll-shadow-event-args';\n\ninterface BoxShadowInfo {\n colorParts: string;\n lengths: string;\n opacity: number;\n}\n\n/**\n * Raises an event when the box shadow for a component's header or footer should be adjusted\n * based on the scroll position of the host element.\n * @internal\n */\n@Directive({\n standalone: true,\n selector: '[skyScrollShadow]',\n})\nexport class SkyScrollShadowDirective implements OnDestroy {\n @Input()\n public set skyScrollShadowEnabled(value: boolean) {\n this.#_enabled = value;\n\n if (value) {\n this.#initMutationObserver();\n } else {\n this.#emitShadow({\n bottomShadow: 'none',\n topShadow: 'none',\n });\n\n this.#destroyMutationObserver();\n }\n }\n\n public get skyScrollShadowEnabled(): boolean {\n return this.#_enabled;\n }\n\n @Output()\n public skyScrollShadow = new EventEmitter<SkyScrollShadowEventArgs>();\n\n #currentShadow: SkyScrollShadowEventArgs | undefined;\n #boxShadows: BoxShadowInfo[] | 'none' | undefined;\n\n #mutationObserver: MutationObserver | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n readonly #elRef = inject(ElementRef);\n readonly #mutationObserverSvc = inject(SkyMutationObserverService);\n readonly #ngZone = inject(NgZone);\n\n #_enabled = false;\n\n @HostListener('window:resize')\n public windowResize(): void {\n this.#checkForShadow();\n }\n\n @HostListener('scroll')\n public scroll(): void {\n this.#checkForShadow();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#destroyMutationObserver();\n }\n\n #initMutationObserver(): void {\n if (!this.#mutationObserver) {\n const el = this.#elRef.nativeElement;\n\n // MutationObserver is patched by Zone.js and therefore becomes part of the\n // Angular change detection cycle, but this can lead to infinite loops in some\n // scenarios. This will keep MutationObserver from triggering change detection.\n this.#ngZone.runOutsideAngular(() => {\n this.#mutationObserver = this.#mutationObserverSvc.create(() => {\n this.#checkForShadow();\n });\n\n this.#mutationObserver.observe(el, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n });\n }\n }\n\n #destroyMutationObserver(): void {\n if (this.#mutationObserver) {\n this.#mutationObserver.disconnect();\n this.#mutationObserver = undefined;\n }\n }\n\n #checkForShadow(): void {\n if (this.skyScrollShadowEnabled) {\n const el: Element = this.#elRef.nativeElement;\n\n const topShadow = this.#buildShadowStyle(el.scrollTop);\n\n const bottomShadow = this.#buildShadowStyle(\n el.scrollHeight - el.scrollTop - el.clientHeight,\n );\n\n this.#emitShadow({\n bottomShadow,\n topShadow,\n });\n }\n }\n\n #splitBoxShadowDetails(boxShadow: string): BoxShadowInfo | undefined {\n const colorRegex =\n /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)/;\n const match = boxShadow.match(colorRegex);\n\n if (match) {\n const colorParts = `${match[1]}, ${match[2]}, ${match[3]}`; // Extract RGB values as a comma-separated string\n const opacity = match[4] ? parseFloat(match[4]) : 1; // Use the captured opacity or default to 1\n const lengths = boxShadow.replace(match[0], '').trim(); // Remove the color from the rest\n\n return { colorParts, opacity, lengths };\n }\n\n /* istanbul ignore next */\n return;\n }\n\n #formatBoxShadows(boxShadowString: string): BoxShadowInfo[] {\n const boxShadows: BoxShadowInfo[] = [];\n let currentShadow = '';\n let openParentheses = 0;\n\n for (const char of boxShadowString) {\n if (char === ',' && openParentheses === 0) {\n const details = this.#splitBoxShadowDetails(currentShadow.trim());\n if (details) {\n boxShadows.push(details);\n }\n\n currentShadow = '';\n } else {\n currentShadow += char;\n if (char === '(') {\n openParentheses++;\n } else if (char === ')') {\n openParentheses--;\n }\n }\n }\n\n if (currentShadow.trim()) {\n const details = this.#splitBoxShadowDetails(currentShadow.trim());\n if (details) {\n boxShadows.push(details);\n }\n }\n\n return boxShadows;\n }\n\n #getBoxShadowInfo(): BoxShadowInfo[] {\n const elStyles = window.getComputedStyle(this.#elRef.nativeElement);\n const boxShadowStyle = elStyles.getPropertyValue(\n '--sky-elevation-overflow',\n );\n\n // Creating a temporary element and setting box shadow converts the color in the box shadows to rgba or rgb\n const tempEl = document.createElement('div');\n tempEl.style.setProperty('box-shadow', boxShadowStyle);\n\n const convertedBoxShadows = tempEl.style.getPropertyValue('box-shadow');\n const boxShadows = this.#formatBoxShadows(convertedBoxShadows);\n\n return boxShadows;\n }\n\n #buildShadowStyle(pixelsFromEnd: number): string {\n if (!this.#boxShadows) {\n const boxShadowInfo = this.#getBoxShadowInfo();\n if (boxShadowInfo.length > 0) {\n this.#boxShadows = boxShadowInfo;\n } else {\n this.#boxShadows = 'none';\n }\n }\n\n const boxShadowStyles: string[] = [];\n\n if (this.#boxShadows === 'none' || pixelsFromEnd === 0) {\n return 'none';\n } else {\n for (const shadow of this.#boxShadows) {\n const { colorParts, lengths, opacity } = shadow;\n // Progressively darken the shadow until the user scrolls 30 pixels from the top or bottom\n // of the scrollable element, with a max opacity of 0.3.\n const adjustedOpacity = Math.min(pixelsFromEnd / 30, 1) * opacity;\n const adjustedShadow = `${lengths} rgba(${colorParts}, ${adjustedOpacity})`;\n boxShadowStyles.push(adjustedShadow);\n }\n return boxShadowStyles.join(', ');\n }\n }\n\n #emitShadow(shadow: SkyScrollShadowEventArgs): void {\n if (\n !this.#currentShadow ||\n this.#currentShadow.bottomShadow !== shadow.bottomShadow ||\n this.#currentShadow.topShadow !== shadow.topShadow\n ) {\n this.skyScrollShadow.emit(shadow);\n this.#currentShadow = shadow;\n }\n }\n}\n","import { ElementRef, Injectable, Optional } from '@angular/core';\n\nimport {\n Observable,\n Subject,\n Subscriber,\n Subscription,\n animationFrameScheduler,\n combineLatestWith,\n concat,\n fromEvent,\n of,\n} from 'rxjs';\nimport { debounceTime, map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\nimport { SkyResizeObserverService } from '../resize-observer/resize-observer.service';\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nfunction notifySubscribers(\n subscribers: Subscriber<unknown>[],\n item?: unknown,\n): void {\n for (const subscriber of subscribers) {\n subscriber.next(item);\n }\n}\n\ntype HostRect = Pick<DOMRect, 'top' | 'left' | 'right' | 'bottom'>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyScrollableHostService {\n #mutationObserverSvc: SkyMutationObserverService;\n\n #windowRef: SkyAppWindowRef;\n\n #resizeObserverSvc: SkyResizeObserverService | undefined;\n\n constructor(\n mutationObserverSvc: SkyMutationObserverService,\n windowRef: SkyAppWindowRef,\n @Optional() resizeObserverSvc?: SkyResizeObserverService,\n ) {\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#resizeObserverSvc = resizeObserverSvc;\n this.#windowRef = windowRef;\n }\n\n /**\n * Returns the given element's current scrollable host\n * @param elementRef The element whose scrollable host is being requested\n * @returns The current scrollable host\n */\n public getScrollableHost(elementRef: ElementRef): HTMLElement | Window {\n return this.#findScrollableHost(elementRef.nativeElement);\n }\n\n /**\n * Returns an observable which emits the given element's current scrollable host\n * @param elementRef The element whose scrollable host is being requested\n * @returns An observable which emits the current scrollable host element.\n * @internal\n */\n public watchScrollableHost(\n elementRef: ElementRef,\n ): Observable<HTMLElement | Window> {\n const subscribers: Subscriber<HTMLElement | Window>[] = [];\n\n let parentMutationObserver: MutationObserver;\n let documentHiddenElementMutationObserver: MutationObserver;\n\n return new Observable((subscriber) => {\n subscribers.push(subscriber);\n\n let scrollableHost: HTMLElement | Window | undefined =\n this.#findScrollableHost(elementRef.nativeElement);\n\n // Setup mutation observers only once, for all subscribers.\n if (subscribers.length === 1) {\n parentMutationObserver = this.#mutationObserverSvc.create(() => {\n const newScrollableHost = this.#findScrollableHost(\n elementRef.nativeElement,\n );\n\n // Reset observer if scrollable host changes.\n if (\n newScrollableHost !== scrollableHost &&\n this.#isElementVisible(elementRef)\n ) {\n scrollableHost = newScrollableHost;\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n notifySubscribers(subscribers, scrollableHost);\n }\n });\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n documentHiddenElementMutationObserver =\n this.#mutationObserverSvc.create(() => {\n if (scrollableHost && !this.#isElementVisible(elementRef)) {\n // If the scrollable host is not visible, set it to undefined and unsubscribe from its mutation changes.\n // Then, observe the document element so that a new scrollable host can be found.\n scrollableHost = undefined;\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n notifySubscribers(subscribers, scrollableHost);\n }\n });\n\n this.#observeDocumentHiddenElementChanges(\n documentHiddenElementMutationObserver,\n );\n }\n\n // Emit the scrollable host to the subscriber.\n subscriber.next(scrollableHost);\n\n // Teardown callback for the subscription.\n subscriber.add(() => {\n const subIndex = subscribers.indexOf(subscriber);\n\n /* istanbul ignore else */\n if (subIndex >= 0) {\n subscribers.splice(subIndex, 1);\n }\n\n if (subscribers.length === 0) {\n documentHiddenElementMutationObserver.disconnect();\n parentMutationObserver.disconnect();\n }\n });\n });\n }\n\n /**\n * Returns an observable which emits whenever the element's scrollable host emits a scroll event. The observable will always emit the scroll events from the elements current scrollable host and will update based on any scrollable host changes. The observable will also emit once whenever the scrollable host changes.\n * @param elementRef The element whose scrollable host scroll events are being requested\n * @returns An observable which emits when the elements scrollable host is scrolled or is changed\n */\n public watchScrollableHostScrollEvents(\n elementRef: ElementRef,\n ): Observable<void> {\n const subscribers: Subscriber<void>[] = [];\n\n let scrollableHost: HTMLElement | Window;\n\n let newScrollableHostObservable = new Subject<void>();\n let scrollableHostSubscription: Subscription;\n let scrollEventSubscription: Subscription;\n\n return new Observable((subscriber) => {\n subscribers.push(subscriber);\n\n // Setup mutation observers only once, for all subscribers.\n if (subscribers.length === 1) {\n scrollableHostSubscription = this.watchScrollableHost(\n elementRef,\n ).subscribe((newScrollableHost) => {\n newScrollableHostObservable.next();\n newScrollableHostObservable.complete();\n\n if (scrollableHost && scrollableHost !== newScrollableHost) {\n notifySubscribers(subscribers);\n }\n\n scrollableHost = newScrollableHost;\n newScrollableHostObservable = new Subject();\n\n // Only subscribe to scroll events if the host element is defined.\n /* istanbul ignore else */\n if (newScrollableHost) {\n scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')\n .pipe(takeUntil(newScrollableHostObservable))\n .subscribe(() => {\n notifySubscribers(subscribers);\n });\n }\n });\n }\n\n // Teardown callback for the subscription.\n subscriber.add(() => {\n const subIndex = subscribers.indexOf(subscriber);\n\n /* istanbul ignore else */\n if (subIndex >= 0) {\n subscribers.splice(subIndex, 1);\n }\n\n if (subscribers.length === 0) {\n scrollableHostSubscription.unsubscribe();\n scrollEventSubscription.unsubscribe();\n newScrollableHostObservable.complete();\n }\n });\n });\n }\n\n public watchScrollableHostClipPathChanges(\n elementRef: ElementRef,\n additionalContainers: Observable<ElementRef[]> = of([]),\n ): Observable<string> {\n if (!this.#resizeObserverSvc) {\n return of('none');\n }\n\n return this.watchScrollableHost(elementRef).pipe(\n combineLatestWith(additionalContainers),\n switchMap(([scrollableHost, additionalHosts]) => {\n const resizeObserverSvc = this.#resizeObserverSvc;\n if (\n !resizeObserverSvc ||\n ((!scrollableHost ||\n scrollableHost === this.#windowRef.nativeWindow) &&\n additionalHosts.length === 0)\n ) {\n return of('none');\n }\n\n const inputs = [\n of(undefined),\n ...additionalHosts.map((container) =>\n resizeObserverSvc.observe(container),\n ),\n ];\n let getHostRect: () => HostRect;\n if (scrollableHost && scrollableHost !== this.#windowRef.nativeWindow) {\n inputs.push(\n resizeObserverSvc.observe({ nativeElement: scrollableHost }),\n );\n getHostRect = (): HostRect =>\n (scrollableHost as HTMLElement).getBoundingClientRect();\n } else {\n getHostRect = (): HostRect => ({\n top: 0,\n left: 0,\n right: this.#windowRef.nativeWindow.innerWidth,\n bottom: this.#windowRef.nativeWindow.innerHeight,\n });\n }\n return concat(inputs).pipe(\n debounceTime(0, animationFrameScheduler),\n map(() => {\n const viewportSize = this.#getViewportSize();\n let { top, left, right, bottom } = getHostRect();\n for (const container of additionalHosts) {\n if (container.nativeElement?.offsetParent) {\n const containerRect =\n container.nativeElement.getBoundingClientRect();\n top = Math.max(top, containerRect.top);\n left = Math.max(left, containerRect.left);\n right = Math.min(right, containerRect.right);\n bottom = Math.min(bottom, containerRect.bottom);\n }\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n return `inset(${top}px ${viewportSize.width - right}px ${viewportSize.height - bottom}px ${left}px)`;\n }),\n );\n }),\n );\n }\n\n #findScrollableHost(element: HTMLElement | undefined): HTMLElement | Window {\n const regex = /(auto|scroll)/;\n const windowObj = this.#windowRef.nativeWindow;\n const bodyObj = windowObj.document.body;\n\n if (!element) {\n return windowObj;\n }\n\n let style = windowObj.getComputedStyle(element);\n let parent = element;\n\n do {\n parent = parent.parentNode as HTMLElement;\n\n // Return `window` if the parent element has been removed from the DOM.\n if (!(parent instanceof HTMLElement)) {\n return windowObj;\n }\n\n style = windowObj.getComputedStyle(parent);\n } while (\n !regex.test(style.overflow) &&\n !regex.test(style.overflowY) &&\n parent !== bodyObj\n );\n\n if (parent === bodyObj) {\n return windowObj;\n }\n\n return parent;\n }\n\n #observeDocumentHiddenElementChanges(\n mutationObserver: MutationObserver,\n ): void {\n mutationObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'style', 'hidden'],\n childList: true,\n subtree: true,\n });\n }\n\n #observeForScrollableHostChanges(\n element: HTMLElement | Window | undefined,\n mutationObserver: MutationObserver,\n ): void {\n mutationObserver.disconnect();\n\n const target =\n element instanceof HTMLElement ? element : document.documentElement;\n\n mutationObserver.observe(target, {\n attributes: true,\n attributeFilter: ['class', 'style'],\n childList: true,\n subtree: true,\n });\n }\n\n /**\n * Determines if an element is \"visible\" in the DOM.\n * @see https://stackoverflow.com/a/11639664/6178885\n */\n #isElementVisible(elementRef: ElementRef): boolean {\n return !!elementRef.nativeElement?.offsetParent;\n }\n\n #getViewportSize(): { width: number; height: number } {\n const win = this.#windowRef.nativeWindow;\n const docElem = win.document.documentElement;\n\n return {\n width: docElem.clientWidth,\n height: docElem.clientHeight,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport { SkyAppSetTitleArgs } from './set-title-args';\n\n/**\n * Provides a method for setting a formatted title on the current window.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppTitleService {\n #title: Title;\n\n constructor(title: Title) {\n this.#title = title;\n }\n\n /**\n * Sets the title on the current window.\n * @param args An array of title parts. The parts will be concatenated with a hyphen between\n * each part.\n */\n public setTitle(args: SkyAppSetTitleArgs | undefined): void {\n if (args?.titleParts) {\n this.#title.setTitle(args.titleParts.join(' - '));\n }\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\n/**\n * Trims whitespace in each text node that is a direct descendent of the current element.\n */\n@Directive({\n selector: '[skyTrim]',\n standalone: false,\n})\nexport class SkyTrimDirective implements OnInit, OnDestroy {\n #elRef: ElementRef;\n\n #obs: MutationObserver;\n\n constructor(elRef: ElementRef, mutationObs: SkyMutationObserverService) {\n this.#elRef = elRef;\n\n this.#obs = mutationObs.create((mutations: MutationRecord[]) => {\n const nodes: Node[] = [];\n\n // Only trim white space inside direct descendants of the current element.\n for (const mutation of mutations) {\n if (mutation.target.parentNode === elRef.nativeElement) {\n nodes.push(mutation.target);\n }\n }\n\n this.#trim(nodes);\n });\n\n this.#observe();\n }\n\n public ngOnInit(): void {\n const el = this.#elRef.nativeElement as Element;\n this.#trim(Array.from(el.childNodes));\n }\n\n public ngOnDestroy(): void {\n this.#disconnect();\n }\n\n #observe(): void {\n this.#obs.observe(this.#elRef.nativeElement, {\n characterData: true,\n subtree: true,\n });\n }\n\n #disconnect(): void {\n this.#obs.disconnect();\n }\n\n #trim(nodes: Node[]): void {\n // Suspend the MutationObserver so altering the text content of each node\n // doesn't retrigger the observe callback.\n this.#disconnect();\n\n for (const node of nodes) {\n if (node.nodeType === Node.TEXT_NODE && node.textContent) {\n const textContent = node.textContent;\n const textContentTrimmed = textContent.trim();\n\n if (textContent !== textContentTrimmed) {\n node.textContent = textContentTrimmed;\n }\n }\n }\n\n this.#observe();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyTrimDirective } from './trim.directive';\n\n@NgModule({\n declarations: [SkyTrimDirective],\n exports: [SkyTrimDirective],\n})\nexport class SkyTrimModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, of as observableOf } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyUIConfigService {\n public getConfig(key: string, defaultConfig?: any): Observable<any> {\n return observableOf(defaultConfig);\n }\n\n /* istanbul ignore next */\n public setConfig(key: string, value: any): Observable<any> {\n return observableOf({});\n }\n}\n","import { SkyViewkeeperBoundaryInfo } from './viewkeeper-boundary-info';\nimport { SkyViewkeeperFixedStyles } from './viewkeeper-fixed-styles';\nimport { SkyViewkeeperOffset } from './viewkeeper-offset';\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\nconst CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';\nconst CLS_VIEWKEEPER_FIXED_NOT_LAST = 'sky-viewkeeper-fixed-not-last';\nconst CLS_VIEWKEEPER_BOUNDARY = 'sky-viewkeeper-boundary';\nconst EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';\n\nlet nextIdIndex: number;\n\nfunction nextId(): string {\n nextIdIndex = (nextIdIndex || 0) + 1;\n\n return 'viewkeeper-' + nextIdIndex;\n}\n\nfunction getOffset(\n el: HTMLElement,\n scrollableHost?: HTMLElement,\n): SkyViewkeeperOffset {\n const rect = el.getBoundingClientRect();\n const parent = scrollableHost ? scrollableHost : document.documentElement;\n\n return {\n top: rect.top + parent.scrollTop,\n left: rect.left + parent.scrollLeft,\n };\n}\n\nfunction px(value: number | string): string {\n let pxValue = value ? value.toString() : '';\n\n if (typeof value === 'number') {\n pxValue = value + 'px';\n }\n\n return pxValue;\n}\n\nfunction setElPosition(\n el: HTMLElement,\n left: number | string,\n top: number | string,\n width: number | string,\n marginTop: number | string,\n marginTopProperty: string | undefined,\n clipTop: number | string,\n clipLeft: number | string,\n): void {\n el.style.top = px(top);\n el.style.left = px(left);\n el.style.marginTop = marginTopProperty\n ? `calc(${px(marginTop)} + var(${marginTopProperty}, 0))`\n : px(marginTop);\n el.style.clipPath =\n clipTop || clipLeft ? `inset(${px(clipTop)} 0 0 ${px(clipLeft)})` : 'none';\n\n /*istanbul ignore else*/\n /* sanity check */\n if (width !== null) {\n el.style.width = px(width);\n }\n}\n\nfunction getHeightWithMargin(el: HTMLElement): number {\n const computedStyle = getComputedStyle(el);\n\n return (\n el.offsetHeight +\n parseInt(computedStyle.marginTop, 10) +\n parseInt(computedStyle.marginBottom, 10)\n );\n}\n\nfunction createCustomEvent(name: any): CustomEvent<any> {\n const evt = document.createEvent('CustomEvent');\n\n evt.initCustomEvent(name, false, false, undefined);\n\n return evt;\n}\n\nexport class SkyViewkeeper {\n #boundaryEl: HTMLElement | undefined;\n\n #el: HTMLElement | undefined;\n\n #id: string;\n\n #setWidth: boolean;\n\n #verticalOffset: number;\n\n #verticalOffsetEl: HTMLElement | undefined;\n\n #viewportMarginTop = 0;\n\n #viewportMarginProperty: `--${string}` | undefined;\n\n #currentElFixedLeft: number | undefined;\n\n #currentElFixedTop: number | undefined;\n\n #currentElFixedWidth: number | undefined;\n\n #currentElClipLeft: number | undefined;\n\n #currentElClipTop: number | undefined;\n\n #isDestroyed = false;\n\n #scrollableHost: HTMLElement | undefined;\n\n #syncElPositionHandler: () => void;\n\n #intersectionObserver: IntersectionObserver | undefined;\n\n #spacerResizeObserver: ResizeObserver | undefined;\n\n constructor(options: SkyViewkeeperOptions) {\n options = options || /* istanbul ignore next */ {};\n\n this.#el = options.el;\n this.#boundaryEl = options.boundaryEl;\n\n if (!this.#el) {\n throw new Error('[SkyViewkeeper] The option `el` is required.');\n }\n\n if (!this.#boundaryEl) {\n throw new Error('[SkyViewkeeper] The option `boundaryEl` is required.');\n }\n\n const el = this.#el;\n const boundaryEl = this.#boundaryEl;\n\n this.#setWidth = !!options.setWidth;\n this.#id = nextId();\n this.#scrollableHost = options.scrollableHost;\n this.#verticalOffset = options.verticalOffset || 0;\n this.#verticalOffsetEl = options.verticalOffsetEl;\n\n // Only set viewport margin if the scrollable host is undefined.\n if (!this.#scrollableHost) {\n this.#viewportMarginTop = options.viewportMarginTop ?? 0;\n this.#viewportMarginProperty = options.viewportMarginProperty;\n }\n\n this.#syncElPositionHandler = (): void =>\n this.syncElPosition(el, boundaryEl);\n\n if (this.#verticalOffsetEl) {\n this.#verticalOffsetEl.addEventListener(\n EVT_AFTER_VIEWKEEPER_SYNC,\n this.#syncElPositionHandler,\n );\n }\n\n window.addEventListener('scroll', this.#syncElPositionHandler, true);\n window.addEventListener('resize', this.#syncElPositionHandler);\n window.addEventListener('orientationchange', this.#syncElPositionHandler);\n\n this.#boundaryEl.classList.add(CLS_VIEWKEEPER_BOUNDARY);\n\n this.syncElPosition(el, boundaryEl);\n }\n\n public syncElPosition(el: HTMLElement, boundaryEl: HTMLElement): void {\n const verticalOffset = this.#calculateVerticalOffset();\n\n // When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.\n if (el.offsetWidth === 0 && el.offsetHeight === 0) {\n return;\n }\n\n const boundaryInfo = this.#getBoundaryInfo(el, boundaryEl);\n const fixedStyles = this.#getFixedStyles(boundaryInfo, verticalOffset);\n\n const doFixEl = this.#shouldFixEl(el, boundaryInfo, verticalOffset);\n\n if (this.#needsUpdating(doFixEl, fixedStyles)) {\n if (doFixEl) {\n this.#fixEl(el, boundaryInfo, fixedStyles);\n this.#verticalOffsetEl?.classList.add(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n } else {\n this.#unfixEl(el);\n this.#verticalOffsetEl?.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n }\n }\n\n const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);\n\n el.dispatchEvent(evt);\n }\n\n public destroy(): void {\n if (!this.#isDestroyed) {\n this.#intersectionObserver?.disconnect();\n window.removeEventListener('scroll', this.#syncElPositionHandler, true);\n window.removeEventListener('resize', this.#syncElPositionHandler);\n window.removeEventListener(\n 'orientationchange',\n this.#syncElPositionHandler,\n );\n\n if (this.#el) {\n this.#unfixEl(this.#el);\n }\n\n if (this.#verticalOffsetEl) {\n this.#verticalOffsetEl.removeEventListener(\n EVT_AFTER_VIEWKEEPER_SYNC,\n this.#syncElPositionHandler,\n );\n this.#verticalOffsetEl.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n }\n\n this.#spacerResizeObserver?.disconnect();\n this.#boundaryEl?.classList.remove(CLS_VIEWKEEPER_BOUNDARY);\n\n this.#el =\n this.#boundaryEl =\n this.#verticalOffsetEl =\n this.#spacerResizeObserver =\n undefined;\n\n this.#isDestroyed = true;\n }\n }\n\n #getSpacerId(): string {\n return this.#id + '-spacer';\n }\n\n #unfixEl(el: HTMLElement): void {\n const spacerEl = document.getElementById(this.#getSpacerId());\n\n if (spacerEl) {\n this.#spacerResizeObserver?.unobserve(spacerEl);\n\n /*istanbul ignore else*/\n if (spacerEl.parentElement) {\n spacerEl.parentElement.removeChild(spacerEl);\n }\n }\n\n el.classList.remove(CLS_VIEWKEEPER_FIXED);\n\n this.#currentElFixedLeft =\n this.#currentElFixedTop =\n this.#currentElFixedWidth =\n undefined;\n\n let width = '';\n\n if (this.#setWidth) {\n width = 'auto';\n }\n\n setElPosition(el, '', '', width, '', '', 0, 0);\n }\n\n #calculateVerticalOffset(): number {\n let offset = this.#verticalOffset;\n\n if (this.#verticalOffsetEl) {\n const verticalOffsetElTopStyle = this.#verticalOffsetEl.style.top;\n const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;\n\n offset += this.#verticalOffsetEl.offsetHeight + verticalOffsetElTop;\n } else if (this.#scrollableHost) {\n offset += this.#scrollableHost.getBoundingClientRect().top;\n }\n\n return offset;\n }\n\n #shouldFixEl(\n el: HTMLElement,\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n verticalOffset: number,\n ): boolean {\n let anchorTop: number;\n\n if (boundaryInfo.spacerEl) {\n anchorTop = getOffset(boundaryInfo.spacerEl, this.#scrollableHost).top;\n } else {\n anchorTop = getOffset(el, this.#scrollableHost).top;\n }\n\n let viewportMarginTop = this.#viewportMarginTop;\n const viewportMarginProperty =\n this.#viewportMarginProperty &&\n getComputedStyle(document.body).getPropertyValue(\n this.#viewportMarginProperty,\n );\n if (viewportMarginProperty) {\n viewportMarginTop += parseInt(viewportMarginProperty, 10);\n }\n\n const doFixEl =\n boundaryInfo.scrollTop + verticalOffset + viewportMarginTop > anchorTop;\n\n return doFixEl;\n }\n\n #getFixedStyles(\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n verticalOffset: number,\n ): SkyViewkeeperFixedStyles {\n // If the element needs to be fixed, this will calculate its position. The position\n // will be 0 (fully visible) unless the user is scrolling the boundary out of view.\n // In that case, the element should begin to scroll out of view with the\n // rest of the boundary by setting its top position to a negative value.\n const elTop =\n boundaryInfo.boundaryBottom -\n boundaryInfo.elHeight -\n boundaryInfo.scrollTop;\n const elClipTop = elTop < verticalOffset ? verticalOffset - elTop : 0;\n const elFixedTop = Math.min(elTop, verticalOffset);\n\n const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;\n const elFixedLeft =\n boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;\n const elClipLeft = elFixedLeft < 0 ? 0 - elFixedLeft : 0;\n\n return {\n elFixedLeft,\n elFixedTop,\n elFixedWidth,\n elClipLeft,\n elClipTop,\n };\n }\n\n #needsUpdating(\n doFixEl: boolean,\n fixedStyles: SkyViewkeeperFixedStyles,\n ): boolean {\n if (\n (doFixEl &&\n this.#currentElFixedLeft === fixedStyles.elFixedLeft &&\n this.#currentElFixedTop === fixedStyles.elFixedTop &&\n this.#currentElClipLeft === fixedStyles.elClipLeft &&\n this.#currentElClipTop === fixedStyles.elClipTop &&\n this.#currentElFixedWidth === fixedStyles.elFixedWidth) ||\n (!doFixEl &&\n !(\n this.#currentElFixedLeft !== undefined &&\n this.#currentElFixedLeft !== null\n ))\n ) {\n // The element is either currently fixed and its position and width do not need\n // to change, or the element is not currently fixed and does not need to be fixed.\n // No changes are needed.\n return false;\n }\n\n return true;\n }\n\n #fixEl(\n el: HTMLElement,\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n fixedStyles: SkyViewkeeperFixedStyles,\n ): void {\n /* istanbul ignore else */\n /* sanity check */\n if (!boundaryInfo.spacerEl) {\n const spacerHeight = boundaryInfo.elHeight;\n\n const spacerEl = document.createElement('div');\n spacerEl.id = boundaryInfo.spacerId;\n spacerEl.style.height = px(spacerHeight);\n\n /*istanbul ignore else*/\n if (el.parentNode) {\n el.parentNode.insertBefore(spacerEl, el.nextSibling);\n }\n\n if (!this.#spacerResizeObserver) {\n this.#spacerResizeObserver = new ResizeObserver(() =>\n this.#syncElPositionHandler(),\n );\n }\n\n this.#spacerResizeObserver.observe(spacerEl);\n }\n\n el.classList.add(CLS_VIEWKEEPER_FIXED);\n\n this.#currentElFixedTop = fixedStyles.elFixedTop;\n this.#currentElFixedLeft = fixedStyles.elFixedLeft;\n this.#currentElClipTop = fixedStyles.elClipTop;\n this.#currentElClipLeft = fixedStyles.elClipLeft;\n this.#currentElFixedWidth = fixedStyles.elFixedWidth;\n\n let width = 0;\n\n if (this.#setWidth) {\n width = fixedStyles.elFixedWidth;\n }\n\n setElPosition(\n el,\n fixedStyles.elFixedLeft,\n fixedStyles.elFixedTop,\n width,\n this.#viewportMarginTop,\n this.#viewportMarginProperty,\n fixedStyles.elClipTop,\n fixedStyles.elClipLeft,\n );\n }\n\n #getBoundaryInfo(\n el: HTMLElement,\n boundaryEl: HTMLElement,\n ): SkyViewkeeperBoundaryInfo {\n const spacerId = this.#getSpacerId();\n\n const spacerEl = document.getElementById(spacerId);\n\n const boundaryOffset = getOffset(boundaryEl, this.#scrollableHost);\n const boundaryTop = boundaryOffset.top;\n const boundaryBottom =\n boundaryTop + boundaryEl.getBoundingClientRect().height;\n\n const scrollLeft = this.#scrollableHost\n ? this.#scrollableHost.scrollLeft\n : document.documentElement.scrollLeft;\n const scrollTop = this.#scrollableHost\n ? this.#scrollableHost.scrollTop\n : document.documentElement.scrollTop;\n\n const elHeight = getHeightWithMargin(el);\n\n return {\n boundaryBottom,\n boundaryOffset,\n boundaryEl,\n elHeight,\n scrollLeft,\n scrollTop,\n spacerId,\n spacerEl,\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\n@Injectable()\nexport class SkyViewkeeperHostOptions implements SkyViewkeeperOptions {\n public boundaryEl?: HTMLElement;\n\n public el?: HTMLElement;\n\n public scrollableHost?: HTMLElement;\n\n public setWidth?: boolean;\n\n public verticalOffset?: number;\n\n public verticalOffsetEl?: HTMLElement;\n\n public viewportMarginTop?: number;\n\n public viewportMarginProperty?: `--${string}`;\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport { SkyViewkeeper } from './viewkeeper';\nimport { SkyViewkeeperHostOptions } from './viewkeeper-host-options';\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\n/**\n * Provides methods for creating and destroying viewkeeper instances.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyViewkeeperService {\n #hostOptions: SkyViewkeeperHostOptions | undefined;\n\n constructor(@Optional() hostOptions?: SkyViewkeeperHostOptions) {\n this.#hostOptions = hostOptions;\n }\n\n /**\n *\n * @param options Creates a viewkeeper instance, applying host options where applicable.\n */\n public create(options: SkyViewkeeperOptions): SkyViewkeeper {\n options = Object.assign({}, this.#hostOptions || {}, options);\n\n return new SkyViewkeeper(options);\n }\n\n /**\n * Destroys a viewkeeper instance.\n * @param vk Viewkeeper instance to destroy.\n */\n public destroy(vk: SkyViewkeeper): void {\n vk.destroy();\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\nimport { SkyScrollableHostService } from '../scrollable-host/scrollable-host.service';\n\nimport { SkyViewkeeper } from './viewkeeper';\nimport { SkyViewkeeperService } from './viewkeeper.service';\n\n@Directive({\n selector: '[skyViewkeeper]',\n standalone: false,\n})\nexport class SkyViewkeeperDirective implements OnInit, OnDestroy {\n @Input()\n public set skyViewkeeper(value: string[] | undefined) {\n this.#_skyViewkeeper = value;\n\n this.#detectElements();\n }\n\n public get skyViewkeeper(): string[] | undefined {\n return this.#_skyViewkeeper;\n }\n\n #_skyViewkeeper: string[] | undefined;\n\n #currentViewkeeperEls: HTMLElement[] | undefined;\n\n #el: ElementRef;\n\n #mutationObserverSvc: SkyMutationObserverService;\n\n #observer: MutationObserver | undefined;\n\n #scrollableHostSvc: SkyScrollableHostService | undefined;\n\n #scrollableHostWatchUnsubscribe: Subject<void> | undefined;\n\n #viewkeepers: SkyViewkeeper[] = [];\n\n #viewkeeperSvc: SkyViewkeeperService;\n\n constructor(\n el: ElementRef,\n mutationObserverSvc: SkyMutationObserverService,\n viewkeeperSvc: SkyViewkeeperService,\n @Optional() scrollableHostSvc?: SkyScrollableHostService,\n ) {\n this.#el = el;\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#viewkeeperSvc = viewkeeperSvc;\n this.#scrollableHostSvc = scrollableHostSvc;\n }\n\n public ngOnInit(): void {\n this.#observer = this.#mutationObserverSvc.create(() =>\n this.#detectElements(),\n );\n\n this.#observer.observe(this.#el.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n\n public ngOnDestroy(): void {\n /*istanbul ignore else*/\n if (this.#observer) {\n this.#observer.disconnect();\n }\n\n /*istanbul ignore else*/\n if (this.#scrollableHostWatchUnsubscribe) {\n this.#scrollableHostWatchUnsubscribe.next();\n this.#scrollableHostWatchUnsubscribe.complete();\n }\n\n this.#destroyViewkeepers();\n }\n\n #destroyViewkeepers(): void {\n for (const viewkeeper of this.#viewkeepers) {\n this.#viewkeeperSvc.destroy(viewkeeper);\n }\n\n this.#viewkeepers = [];\n }\n\n #getViewkeeperEls(): HTMLElement[] {\n let viewkeeperEls: HTMLElement[] = [];\n\n if (this.skyViewkeeper) {\n viewkeeperEls = [];\n\n for (const item of this.skyViewkeeper) {\n const matchingEls = Array.from(\n (this.#el.nativeElement as HTMLElement).querySelectorAll(item),\n ) as HTMLElement[];\n\n viewkeeperEls = [...viewkeeperEls, ...matchingEls];\n }\n }\n\n return viewkeeperEls;\n }\n\n #viewkeeperElsChanged(viewkeeperEls: HTMLElement[]): boolean {\n if (!viewkeeperEls !== !this.#currentViewkeeperEls) {\n return true;\n }\n\n if (viewkeeperEls && this.#currentViewkeeperEls) {\n if (viewkeeperEls.length !== this.#currentViewkeeperEls.length) {\n return true;\n }\n\n for (let i = 0, n = viewkeeperEls.length; i < n; i++) {\n if (viewkeeperEls[i] !== this.#currentViewkeeperEls[i]) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n #detectElements(): void {\n const viewkeeperEls = this.#getViewkeeperEls();\n\n if (this.#viewkeeperElsChanged(viewkeeperEls)) {\n if (this.#scrollableHostWatchUnsubscribe) {\n this.#scrollableHostWatchUnsubscribe.next();\n this.#scrollableHostWatchUnsubscribe.complete();\n this.#scrollableHostWatchUnsubscribe = new Subject();\n } else {\n this.#scrollableHostWatchUnsubscribe = new Subject();\n }\n\n if (this.#scrollableHostSvc) {\n this.#scrollableHostSvc\n .watchScrollableHost(this.#el)\n .pipe(takeUntil(this.#scrollableHostWatchUnsubscribe))\n .subscribe((scrollableHost) => {\n this.#destroyViewkeepers();\n\n let previousViewkeeperEl: HTMLElement | undefined;\n\n for (const viewkeeperEl of viewkeeperEls) {\n this.#viewkeepers.push(\n this.#viewkeeperSvc.create({\n boundaryEl: this.#el.nativeElement,\n scrollableHost:\n scrollableHost instanceof HTMLElement\n ? scrollableHost\n : undefined,\n el: viewkeeperEl,\n setWidth: true,\n verticalOffsetEl: previousViewkeeperEl,\n }),\n );\n\n previousViewkeeperEl = viewkeeperEl;\n }\n });\n }\n\n this.#currentViewkeeperEls = viewkeeperEls;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyViewkeeperDirective } from './viewkeeper.directive';\n\n@NgModule({\n declarations: [SkyViewkeeperDirective],\n exports: [SkyViewkeeperDirective],\n})\nexport class SkyViewkeeperModule {}\n","// Taken from Angular's version.ts file.\n// See: https://github.com/angular/angular/blob/16.2.x/packages/core/src/version.ts\n\n/**\n * Represents the version of a package.\n * @internal\n */\nexport class Version {\n public readonly major: string;\n public readonly minor: string;\n public readonly patch: string;\n\n constructor(public readonly full: string) {\n this.major = full.split('.')[0];\n this.minor = full.split('.')[1];\n this.patch = full.split('.').slice(2).join('.');\n }\n}\n\n/**\n * Represents the version of @skyux/core.\n */\nexport const VERSION = new Version('0.0.0-PLACEHOLDER');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyAffixService","i1.SkyAppWindowRef","observableFromEvent","i1.SkyMutationObserverService","_a","i1.SkyIdService","takeUntil","QUERIES","DEFAULT_BREAKPOINT","i2.SkyNumericService","i1","i1.SkyDynamicComponentService","i1.SkyDynamicComponentLegacyService","map","i2.SkyAppWindowRef","i3.SkyResizeObserverService","observableOf","i1.SkyViewkeeperHostOptions","i2.SkyViewkeeperService","i3.SkyScrollableHostService"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"skyux-core.mjs","sources":["../../../../../libs/components/core/src/lib/modules/adapter-service/adapter.module.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-breakpoints.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint-utils.ts","../../../../../libs/components/core/src/lib/modules/adapter-service/adapter.service.ts","../../../../../libs/components/core/src/lib/modules/affix/affix-auto-fit-context.ts","../../../../../libs/components/core/src/lib/modules/affix/affix-utils.ts","../../../../../libs/components/core/src/lib/modules/affix/dom-utils.ts","../../../../../libs/components/core/src/lib/modules/affix/affixer.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.service.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.directive.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.module.ts","../../../../../libs/components/core/src/lib/modules/content-info-provider/content-info-provider.ts","../../../../../libs/components/core/src/lib/modules/default-input-provider/default-input-provider.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-item.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-location.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.module.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component-location.ts","../../../../../libs/components/core/src/lib/modules/window/window-ref.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component.service.ts","../../../../../libs/components/core/src/lib/modules/mutation/mutation-observer-service.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-dom-adapter.service.ts","../../../../../libs/components/core/src/lib/modules/dock/sort-by-stack-order.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.component.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.component.html","../../../../../libs/components/core/src/lib/modules/dock/dock.service.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component.module.ts","../../../../../libs/components/core/src/lib/modules/file-reader/file-reader.service.ts","../../../../../libs/components/core/src/lib/modules/format/app-format.ts","../../../../../libs/components/core/src/lib/modules/help/help-global-options-token.ts","../../../../../libs/components/core/src/lib/modules/help/help.service.ts","../../../../../libs/components/core/src/lib/modules/id/id.service.ts","../../../../../libs/components/core/src/lib/modules/id/id.directive.ts","../../../../../libs/components/core/src/lib/modules/id/id.module.ts","../../../../../libs/components/core/src/lib/modules/layout-host/layout-host.service.ts","../../../../../libs/components/core/src/lib/modules/layout-host/layout-host.directive.ts","../../../../../libs/components/core/src/lib/modules/live-announcer/live-announcer.service.ts","../../../../../libs/components/core/src/lib/modules/log/log.module.ts","../../../../../libs/components/core/src/lib/modules/log/types/log-level.ts","../../../../../libs/components/core/src/lib/modules/log/types/log-level-token.ts","../../../../../libs/components/core/src/lib/modules/log/log.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint-observer.token.ts","../../../../../libs/components/core/src/lib/modules/resize-observer/resize-observer.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/container-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/media-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-query.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/provide-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/responsive-host.directive.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-query.module.ts","../../../../../libs/components/core/src/lib/modules/shared/sky-core-resources.module.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.options.ts","../../../../../libs/components/core/src/lib/modules/shared/number-format/number-format-utility.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.service.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.pipe.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.module.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-instance.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.module.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-adapter.service.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-context.ts","../../../../../libs/components/core/src/lib/modules/stacking-context/stacking-context-token.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.component.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.component.html","../../../../../libs/components/core/src/lib/modules/overlay/overlay.service.ts","../../../../../libs/components/core/src/lib/modules/percent-pipe/percent.pipe.ts","../../../../../libs/components/core/src/lib/modules/percent-pipe/percent-pipe.module.ts","../../../../../libs/components/core/src/lib/modules/resize-observer/resize-observer-media-query.service.ts","../../../../../libs/components/core/src/lib/modules/screen-reader-label/screen-reader-label.directive.ts","../../../../../libs/components/core/src/lib/modules/scroll-shadow/scroll-shadow.directive.ts","../../../../../libs/components/core/src/lib/modules/scrollable-host/scrollable-host.service.ts","../../../../../libs/components/core/src/lib/modules/title/title.service.ts","../../../../../libs/components/core/src/lib/modules/trim/trim.directive.ts","../../../../../libs/components/core/src/lib/modules/trim/trim.module.ts","../../../../../libs/components/core/src/lib/modules/ui-config/ui-config.service.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper-host-options.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.service.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.directive.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.module.ts","../../../../../libs/components/core/src/version.ts","../../../../../libs/components/core/src/skyux-core.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyCoreAdapterService` no longer needs the `SkyCoreAdapterModule`.\n * The `SkyCoreAdapterModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyCoreAdapterModule {}\n","/**\n * A list of all breakpoints.\n * @internal\n */\nexport const SKY_BREAKPOINTS = ['xs', 'sm', 'md', 'lg'] as const;\n\n/**\n * The name of a viewport or container breakpoint.\n */\nexport type SkyBreakpoint = (typeof SKY_BREAKPOINTS)[number];\n","/**\n * Represents all available media breakpoints.\n * @deprecated Use `SkyBreakpoint` instead.\n */\nexport enum SkyMediaBreakpoints {\n /**\n * Screen widths of 767px or less.\n */\n xs = 1,\n\n /**\n * Screen widths of 768px to 991px.\n */\n sm,\n\n /**\n * Screen widths of 992px to 1199px.\n */\n md,\n\n /**\n * Screen widths of 1200px or greater.\n */\n lg,\n}\n","import { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\n\nimport { SKY_BREAKPOINTS, SkyBreakpoint } from './breakpoint';\n\nconst breakpointLookup = new Map<SkyMediaBreakpoints, SkyBreakpoint>([\n [SkyMediaBreakpoints.xs, 'xs'],\n [SkyMediaBreakpoints.sm, 'sm'],\n [SkyMediaBreakpoints.md, 'md'],\n [SkyMediaBreakpoints.lg, 'lg'],\n]);\n\nconst legacyLookup = new Map<SkyBreakpoint, SkyMediaBreakpoints>([\n ['xs', SkyMediaBreakpoints.xs],\n ['sm', SkyMediaBreakpoints.sm],\n ['md', SkyMediaBreakpoints.md],\n ['lg', SkyMediaBreakpoints.lg],\n]);\n\n/**\n * Whether the value is of type `SkyBreakpoint`.\n * @internal\n */\nexport function isSkyBreakpoint(\n value: SkyBreakpoint | SkyMediaBreakpoints | null | undefined,\n): value is SkyBreakpoint {\n return (\n value !== null &&\n value !== undefined &&\n SKY_BREAKPOINTS.includes(value as SkyBreakpoint)\n );\n}\n\n/**\n * Transforms a `SkyMediaBreakpoints` value to `SkyBreakpoint`.\n * @internal\n */\nexport function toSkyBreakpoint(\n breakpoint: SkyMediaBreakpoints,\n): SkyBreakpoint {\n return breakpointLookup.get(breakpoint) as SkyBreakpoint;\n}\n\n/**\n * Transforms a `SkyBreakpoint` value to `SkyMediaBreakpoints`.\n * @internal\n */\nexport function toSkyMediaBreakpoints(\n breakpoint: SkyBreakpoint,\n): SkyMediaBreakpoints {\n return legacyLookup.get(breakpoint) as SkyMediaBreakpoints;\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport {\n SKY_BREAKPOINTS,\n SkyBreakpoint,\n} from '../breakpoint-observer/breakpoint';\nimport {\n isSkyBreakpoint,\n toSkyBreakpoint,\n} from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\n\nimport { SkyFocusableChildrenOptions } from './focusable-children-options';\n\nconst SKY_TABBABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'button:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[contenteditable=true]:not([disabled])',\n '*[tabindex]:not([disabled])',\n].join(', ');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyCoreAdapterService {\n #renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2) {\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Set the responsive container CSS class for a given element.\n *\n * @param elementRef - The element that will receive the new CSS class.\n * @param breakpoint - The breakpoint to determine which class gets set.\n * For example a breakpoint of \"xs\" will set a CSS class of \"sky-responsive-container-xs\".\n * @deprecated Use the `SkyResponsiveHostDirective` instead.\n */\n public setResponsiveContainerClass(\n elementRef: ElementRef,\n breakpoint: SkyBreakpoint | SkyMediaBreakpoints,\n ): void {\n const nativeEl = elementRef.nativeElement;\n\n for (const breakpointType of SKY_BREAKPOINTS) {\n this.#renderer.removeClass(\n nativeEl,\n `sky-responsive-container-${breakpointType}`,\n );\n }\n\n if (!isSkyBreakpoint(breakpoint)) {\n breakpoint = toSkyBreakpoint(breakpoint);\n }\n\n this.#renderer.addClass(nativeEl, `sky-responsive-container-${breakpoint}`);\n }\n\n /**\n * This method temporarily enables/disables pointer events.\n * This is helpful to prevent iFrames from interfering with drag events.\n *\n * @param enable - Set to `true` to enable pointer events. Set to `false` to disable.\n */\n public toggleIframePointerEvents(enable: boolean): void {\n const iframes = Array.from<HTMLElement>(\n document.querySelectorAll('iframe'),\n );\n for (const iframe of iframes) {\n this.#renderer.setStyle(iframe, 'pointer-events', enable ? '' : 'none');\n }\n }\n\n /**\n * Focuses on the first element found with an `autofocus` attribute inside the supplied `elementRef`.\n *\n * @param elementRef - The element to search within.\n * @return Returns `true` if a child element with autofocus is found.\n */\n public applyAutoFocus(elementRef?: ElementRef): boolean {\n if (!elementRef) {\n return false;\n }\n\n const elementWithAutoFocus =\n elementRef.nativeElement.querySelector('[autofocus]');\n\n // Child was found with the autofocus property. Set focus and return true.\n if (elementWithAutoFocus) {\n elementWithAutoFocus.focus();\n return true;\n }\n\n // No children were found with autofocus property. Return false.\n return false;\n }\n\n /**\n * Sets focus on the first focusable child of the `elementRef` parameter.\n * If no focusable children are found, and `focusOnContainerIfNoChildrenFound` is `true`,\n * focus will be set on the container element.\n *\n * @param elementRef - The element to search within.\n * @param containerSelector - A CSS selector indicating the container that should\n * receive focus if no focusable children are found.\n * @param focusOnContainerIfNoChildrenFound - It set to `true`, the container will\n * receive focus if no focusable children are found.\n */\n public getFocusableChildrenAndApplyFocus(\n elementRef: ElementRef,\n containerSelector?: string,\n focusOnContainerIfNoChildrenFound = false,\n ): void {\n const containerElement =\n elementRef.nativeElement.querySelector(containerSelector);\n\n if (containerElement) {\n const focusableChildren = this.getFocusableChildren(containerElement);\n\n // Focus first focusable child if available. Otherwise, set focus on container.\n if (\n !this.#focusFirstElement(focusableChildren) &&\n focusOnContainerIfNoChildrenFound\n ) {\n containerElement.focus();\n }\n }\n }\n\n /**\n * Returns an array of all focusable children of provided `element`.\n *\n * @param element - The HTMLElement to search within.\n * @param options - Options for getting focusable children.\n */\n public getFocusableChildren(\n element?: HTMLElement,\n options?: SkyFocusableChildrenOptions,\n ): HTMLElement[] {\n if (!element) {\n return [];\n }\n\n let elements = Array.prototype.slice.call(\n element.querySelectorAll(SKY_TABBABLE_SELECTOR),\n );\n\n // Unless ignoreTabIndex = true, filter out elements with tabindex = -1.\n if (!options || !options.ignoreTabIndex) {\n elements = elements.filter((el: HTMLElement) => {\n return el.tabIndex !== -1;\n });\n }\n\n // Unless ignoreVisibility = true, filter out elements that are not visible.\n if (!options || !options.ignoreVisibility) {\n elements = elements.filter((el: HTMLElement) => {\n return this.#isVisible(el);\n });\n }\n\n return elements;\n }\n\n /**\n * Returns the clientWidth of the provided elementRef.\n * @param elementRef - The element to calculate width from.\n */\n public getWidth(elementRef: ElementRef): number {\n return elementRef.nativeElement.clientWidth;\n }\n\n /**\n * Checks if an event target has a higher z-index than a given element.\n * @param target The event target element.\n * @param element The element to test against. A z-index must be explicitly set for this element.\n */\n public isTargetAboveElement(\n target: EventTarget,\n element: HTMLElement,\n ): boolean {\n const zIndex = getComputedStyle(element).zIndex;\n\n let el = target as HTMLElement;\n\n while (el) {\n // Getting the computed style only works for elements that exist in the DOM.\n // In certain scenarios, an element is removed after a click event; by the time the event\n // bubbles up to other elements, however, the element has been removed and the computed style returns empty.\n // In this case, we'll need to check the z-index directly, via the style property.\n const targetZIndex = getComputedStyle(el).zIndex || el.style.zIndex;\n if (\n targetZIndex !== '' &&\n targetZIndex !== 'auto' &&\n +targetZIndex > +zIndex\n ) {\n return true;\n }\n\n el = el.parentElement as HTMLElement;\n }\n\n return false;\n }\n\n /**\n * Remove inline height styles from the provided elements.\n * @param elementRef - The element to search within.\n * @param selector - The CSS selector to use when finding elements for removing height.\n */\n public resetHeight(elementRef: ElementRef, selector: string): void {\n const children = Array.from<HTMLElement>(\n elementRef.nativeElement.querySelectorAll(selector),\n );\n for (const child of children) {\n this.#renderer.removeStyle(child, 'height');\n }\n }\n\n /**\n * Sets all element heights to match the height of the tallest element.\n * @param elementRef - The element to search within.\n * @param selector - The CSS selector to use when finding elements for syncing height.\n */\n public syncMaxHeight(elementRef: ElementRef, selector: string): void {\n const children = Array.from<HTMLElement>(\n elementRef.nativeElement.querySelectorAll(selector),\n );\n /* istanbul ignore else */\n if (children.length > 0) {\n let maxHeight = 0;\n for (const child of children) {\n maxHeight = Math.max(maxHeight, child.offsetHeight);\n }\n for (const child of children) {\n this.#renderer.setStyle(child, 'height', `${maxHeight}px`);\n }\n }\n }\n\n #focusFirstElement(list: HTMLElement[]): boolean {\n if (list.length > 0) {\n list[0].focus();\n return true;\n }\n return false;\n }\n\n #isVisible(element: HTMLElement): boolean {\n const style = window.getComputedStyle(element);\n const isHidden = style.display === 'none' || style.visibility === 'hidden';\n if (isHidden) {\n return false;\n }\n\n const hasBounds = !!(\n element.offsetWidth ||\n element.offsetHeight ||\n element.getClientRects().length\n );\n return hasBounds;\n }\n}\n","export enum SkyAffixAutoFitContext {\n /**\n * Auto-fit functionality will respect the nearest overflow parent element's dimensions.\n */\n OverflowParent = 0,\n\n /**\n * Auto-fit functionality will respect the browser viewport dimensions.\n */\n Viewport = 1,\n}\n","import { SkyAffixPlacement } from './affix-placement';\n\nexport function getNextPlacement(\n placement: SkyAffixPlacement,\n): SkyAffixPlacement {\n const placements: SkyAffixPlacement[] = ['above', 'right', 'below', 'left'];\n\n let index = placements.indexOf(placement) + 1;\n if (index >= placements.length) {\n index = 0;\n }\n\n return placements[index];\n}\n\nexport function getInversePlacement(\n placement: SkyAffixPlacement,\n): SkyAffixPlacement {\n const pairings: Record<string, SkyAffixPlacement> = {\n above: 'below',\n below: 'above',\n right: 'left',\n left: 'right',\n };\n\n return pairings[placement];\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\n\nimport { SkyAffixOffset } from './affix-offset';\nimport { AffixRect } from './affix-rect';\n\nfunction useViewportForBounds(element: HTMLElement): boolean {\n return 'BODY' === element.tagName;\n}\n\n/**\n * Returns the offset values of a given element.\n * @param element The HTML element.\n * @param bufferOffset An optional offset to add/subtract to the element's actual offset.\n */\nexport function getElementOffset(\n element: HTMLElement,\n bufferOffset?: SkyAffixOffset,\n): Required<SkyAffixOffset> {\n const bufferOffsetBottom = bufferOffset?.bottom || 0;\n const bufferOffsetLeft = bufferOffset?.left || 0;\n const bufferOffsetRight = bufferOffset?.right || 0;\n const bufferOffsetTop = bufferOffset?.top || 0;\n\n let top: number;\n let left: number;\n let right: number;\n let bottom: number;\n\n const clientRect = element.getBoundingClientRect();\n left = clientRect.left;\n top = clientRect.top;\n right = clientRect.right;\n bottom = clientRect.bottom;\n\n bottom -= bufferOffsetBottom;\n left += bufferOffsetLeft;\n right -= bufferOffsetRight;\n top += bufferOffsetTop;\n\n return {\n bottom,\n left,\n right,\n top,\n };\n}\n\n/**\n * Returns an AffixRect that represents the outer dimensions of a given element.\n */\nexport function getOuterRect(element: HTMLElement): Required<AffixRect> {\n const rect = element.getBoundingClientRect();\n const computedStyle = window.getComputedStyle(element, undefined);\n const marginTop = parseFloat(computedStyle.marginTop);\n const marginLeft = parseFloat(computedStyle.marginLeft);\n const marginRight = parseFloat(computedStyle.marginRight);\n const marginBottom = parseFloat(computedStyle.marginBottom);\n\n return {\n top: rect.top - marginTop,\n left: rect.left - marginLeft,\n bottom: rect.top + rect.height + marginBottom,\n right: rect.left + rect.width + marginLeft + marginRight,\n width: rect.width + marginLeft + marginRight,\n height: rect.height + marginTop + marginBottom,\n };\n}\n\n/**\n * Returns the visible rect for a given element.\n */\nexport function getVisibleRectForElement(\n viewportRuler: ViewportRuler,\n element: HTMLElement,\n): Required<AffixRect> {\n const elementRect = getOuterRect(element);\n const viewportRect = viewportRuler.getViewportRect();\n\n const visibleRect = {\n top: Math.max(elementRect.top, 0),\n left: Math.max(elementRect.left, 0),\n bottom: Math.min(elementRect.bottom, viewportRect.height),\n right: Math.min(elementRect.right, viewportRect.width),\n };\n\n return {\n ...visibleRect,\n width: visibleRect.right - visibleRect.left,\n height: visibleRect.bottom - visibleRect.top,\n };\n}\n\nexport function getOverflowParents(child: HTMLElement): HTMLElement[] {\n const bodyElement = window.document.body;\n const results = [];\n\n let parentElement = child?.parentNode;\n\n while (parentElement !== undefined && parentElement instanceof HTMLElement) {\n if (parentElement.matches('body')) {\n break;\n }\n\n const computedStyle = window.getComputedStyle(parentElement, undefined);\n const overflowY = computedStyle.overflowY.toLowerCase();\n\n const largerThanTheDocumentElement =\n window.document.documentElement.scrollWidth < parentElement.scrollWidth ||\n window.document.documentElement.scrollHeight < parentElement.scrollHeight;\n const hasOverflowRules =\n overflowY === 'auto' || overflowY === 'hidden' || overflowY === 'scroll';\n\n if (largerThanTheDocumentElement || hasOverflowRules) {\n results.push(parentElement);\n }\n if (computedStyle.position === 'fixed') {\n break;\n }\n\n parentElement = parentElement.parentNode;\n }\n\n results.push(bodyElement);\n\n return results;\n}\n\n/**\n * Confirms offset is fully visible within a parent element.\n */\nexport function isOffsetFullyVisibleWithinParent(\n viewportRuler: ViewportRuler,\n parent: HTMLElement,\n offset: Required<SkyAffixOffset>,\n bufferOffset?: SkyAffixOffset,\n): boolean {\n let parentOffset: Required<SkyAffixOffset>;\n\n if (useViewportForBounds(parent)) {\n const viewportRect = viewportRuler.getViewportRect();\n parentOffset = {\n top: 0,\n left: 0,\n right: viewportRect.width,\n bottom: viewportRect.height,\n };\n } else if (bufferOffset) {\n parentOffset = getElementOffset(parent, bufferOffset);\n } else {\n parentOffset = getVisibleRectForElement(viewportRuler, parent);\n }\n\n return (\n parentOffset.top <= offset.top &&\n parentOffset.right >= offset.right &&\n parentOffset.bottom >= offset.bottom &&\n parentOffset.left <= offset.left\n );\n}\n\nexport function isOffsetPartiallyVisibleWithinParent(\n viewportRuler: ViewportRuler,\n parent: HTMLElement,\n offset: Required<SkyAffixOffset>,\n bufferOffset?: SkyAffixOffset,\n): boolean {\n let parentOffset: Required<SkyAffixOffset>;\n if (useViewportForBounds(parent)) {\n const viewportRect = viewportRuler.getViewportRect();\n parentOffset = {\n top: 0,\n left: 0,\n right: viewportRect.width,\n bottom: viewportRect.height,\n };\n } else if (bufferOffset) {\n parentOffset = getElementOffset(parent, bufferOffset);\n } else {\n parentOffset = getVisibleRectForElement(viewportRuler, parent);\n }\n\n return !(\n parentOffset.top >= offset.bottom ||\n parentOffset.right <= offset.left ||\n parentOffset.bottom <= offset.top ||\n parentOffset.left >= offset.right\n );\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { NgZone, Renderer2 } from '@angular/core';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { SkyAffixAutoFitContext } from './affix-auto-fit-context';\nimport { SkyAffixConfig } from './affix-config';\nimport { SkyAffixOffset } from './affix-offset';\nimport { SkyAffixOffsetChange } from './affix-offset-change';\nimport { SkyAffixPlacement } from './affix-placement';\nimport { SkyAffixPlacementChange } from './affix-placement-change';\nimport { AffixRect } from './affix-rect';\nimport { getInversePlacement, getNextPlacement } from './affix-utils';\nimport {\n getElementOffset,\n getOuterRect,\n getOverflowParents,\n getVisibleRectForElement,\n isOffsetFullyVisibleWithinParent,\n isOffsetPartiallyVisibleWithinParent,\n} from './dom-utils';\n\n/**\n * Make specific properties required, so that we don't have to\n * do null checks throughout this file.\n */\ntype AffixConfigOrDefaults = SkyAffixConfig &\n Required<\n Pick<\n SkyAffixConfig,\n | 'autoFitContext'\n | 'enableAutoFit'\n | 'horizontalAlignment'\n | 'isSticky'\n | 'placement'\n >\n >;\n\nconst DEFAULT_AFFIX_CONFIG: AffixConfigOrDefaults = {\n autoFitContext: SkyAffixAutoFitContext.OverflowParent,\n enableAutoFit: false,\n horizontalAlignment: 'center',\n isSticky: false,\n placement: 'above',\n};\n\nexport class SkyAffixer {\n /**\n * Fires when the affixed element's offset changes.\n */\n public get offsetChange(): Observable<SkyAffixOffsetChange> {\n return this.#offsetChangeObs;\n }\n\n /**\n * Fires when the base element's nearest overflow parent is scrolling. This is useful if you need\n * to perform an additional action during the scroll event but don't want to generate another\n * event listener.\n */\n public get overflowScroll(): Observable<void> {\n return this.#overflowScrollObs;\n }\n\n /**\n * Fires when the placement value changes. A `null` value indicates that a suitable\n * placement could not be found.\n */\n public get placementChange(): Observable<SkyAffixPlacementChange> {\n return this.#placementChangeObs;\n }\n\n get #config(): AffixConfigOrDefaults {\n return this.#_config;\n }\n\n set #config(value: SkyAffixConfig | undefined) {\n const merged: AffixConfigOrDefaults = {\n ...DEFAULT_AFFIX_CONFIG,\n ...value,\n };\n\n // Make sure none of the values are undefined.\n let key: keyof typeof merged;\n for (key in merged) {\n if (merged[key] === undefined) {\n (merged as any)[key] = DEFAULT_AFFIX_CONFIG[key];\n }\n }\n\n this.#_config = merged;\n }\n\n #affixedElement: HTMLElement;\n\n #baseElement: HTMLElement | undefined;\n\n #currentOffset: SkyAffixOffset | undefined;\n\n #currentPlacement: SkyAffixPlacement | undefined;\n\n #layoutViewport: HTMLElement;\n\n #offsetChange: Subject<SkyAffixOffsetChange>;\n\n #offsetChangeObs: Observable<SkyAffixOffsetChange>;\n\n #overflowParents: HTMLElement[] = [];\n\n #overflowScroll: Subject<void>;\n\n #overflowScrollObs: Observable<void>;\n\n #placementChange: Subject<SkyAffixPlacementChange>;\n\n #placementChangeObs: Observable<SkyAffixPlacementChange>;\n\n #renderer: Renderer2;\n\n #scrollChange = new Subject<void>();\n\n #viewportListeners: Subscription | undefined;\n\n #viewportRuler: ViewportRuler;\n\n #zone: NgZone;\n\n #_config: AffixConfigOrDefaults = DEFAULT_AFFIX_CONFIG;\n\n #scrollChangeListener: () => void = () => this.#scrollChange.next();\n\n constructor(\n affixedElement: HTMLElement,\n renderer: Renderer2,\n viewportRuler: ViewportRuler,\n zone: NgZone,\n layoutViewport: HTMLElement,\n ) {\n this.#affixedElement = affixedElement;\n this.#renderer = renderer;\n this.#layoutViewport = layoutViewport;\n this.#viewportRuler = viewportRuler;\n this.#zone = zone;\n\n this.#offsetChange = new Subject<SkyAffixOffsetChange>();\n this.#overflowScroll = new Subject<void>();\n this.#placementChange = new Subject<SkyAffixPlacementChange>();\n\n this.#offsetChangeObs = this.#offsetChange.asObservable();\n this.#overflowScrollObs = this.#overflowScroll.asObservable();\n this.#placementChangeObs = this.#placementChange.asObservable();\n }\n\n /**\n * Affixes an element to a base element.\n * @param baseElement The base element.\n * @param config Configuration for the affix action.\n */\n public affixTo(baseElement: HTMLElement, config?: SkyAffixConfig): void {\n this.#reset();\n\n this.#config = config;\n this.#baseElement = baseElement;\n this.#overflowParents = getOverflowParents(baseElement);\n\n this.#affix();\n\n if (this.#config.isSticky) {\n this.#addViewportListeners();\n }\n }\n\n public getConfig(): SkyAffixConfig {\n return this.#config;\n }\n\n /**\n * Re-runs the affix calculation.\n */\n public reaffix(): void {\n // Reset current placement to preferred placement.\n this.#currentPlacement = this.#config.placement;\n this.#affix();\n }\n\n /**\n * Destroys the affixer.\n */\n public destroy(): void {\n this.#reset();\n this.#placementChange.complete();\n this.#offsetChange.complete();\n this.#overflowScroll.complete();\n this.#scrollChange.complete();\n }\n\n #affix(): void {\n const offset = this.#getOffset();\n\n const offsetParentRect = this.#getOffsetParentRect();\n offset.top = offset.top - offsetParentRect.top;\n offset.left = offset.left - offsetParentRect.left;\n offset.bottom = offset.bottom - offsetParentRect.top;\n offset.right = offset.right - offsetParentRect.left;\n\n if (this.#isNewOffset(offset)) {\n this.#renderer.setStyle(this.#affixedElement, 'top', `${offset.top}px`);\n this.#renderer.setStyle(this.#affixedElement, 'left', `${offset.left}px`);\n\n this.#offsetChange.next({ offset });\n }\n }\n\n #getOffsetParentRect(): AffixRect {\n // Firefox sets the offsetParent to document.body if the element uses fixed positioning.\n if (\n this.#config.position === 'absolute' &&\n this.#affixedElement.offsetParent\n ) {\n return getOuterRect(this.#affixedElement.offsetParent as HTMLElement);\n } else {\n const layoutRect = getOuterRect(this.#layoutViewport);\n return {\n top: layoutRect.top,\n left: layoutRect.left,\n height: layoutRect.height,\n width: layoutRect.width,\n bottom: layoutRect.top - layoutRect.height,\n right: layoutRect.left - layoutRect.width,\n };\n }\n }\n\n #getOffset(): Required<SkyAffixOffset> {\n const parent = this.#getAutoFitContextParent();\n\n const maxAttempts = 4;\n let attempts = 0;\n\n let isAffixedElementFullyVisible = false;\n let offset: Required<SkyAffixOffset>;\n let placement = this.#config.placement;\n\n do {\n offset = this.#getPreferredOffset(placement);\n isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(\n this.#viewportRuler,\n parent,\n offset,\n this.#config.autoFitOverflowOffset,\n );\n\n if (!this.#config.enableAutoFit) {\n break;\n }\n\n if (!isAffixedElementFullyVisible) {\n placement =\n attempts % 2 === 0\n ? getInversePlacement(placement)\n : getNextPlacement(placement);\n }\n\n attempts++;\n } while (!isAffixedElementFullyVisible && attempts < maxAttempts);\n\n if (isAffixedElementFullyVisible) {\n if (this.#isBaseElementVisible()) {\n this.#notifyPlacementChange(placement);\n } else {\n this.#notifyPlacementChange(null);\n }\n\n return offset;\n }\n\n if (this.#config.enableAutoFit) {\n this.#notifyPlacementChange(null);\n }\n\n // No suitable placement was found, so revert to preferred placement.\n return this.#getPreferredOffset(this.#config.placement);\n }\n\n #getPreferredOffset(placement: SkyAffixPlacement): Required<SkyAffixOffset> {\n if (!this.#baseElement) {\n return { top: 0, left: 0, bottom: 0, right: 0 };\n }\n\n const affixedRect = getOuterRect(this.#affixedElement);\n const baseRect = this.#baseElement.getBoundingClientRect();\n\n const horizontalAlignment = this.#config.horizontalAlignment;\n const verticalAlignment = this.#config.verticalAlignment;\n const enableAutoFit = this.#config.enableAutoFit;\n\n let top: number;\n let left: number;\n\n if (placement === 'above' || placement === 'below') {\n if (placement === 'above') {\n top = baseRect.top - affixedRect.height;\n\n switch (verticalAlignment) {\n case 'top':\n top = top + affixedRect.height;\n break;\n case 'middle':\n top = top + affixedRect.height / 2;\n break;\n case 'bottom':\n default:\n break;\n }\n } else {\n top = baseRect.bottom;\n\n switch (verticalAlignment) {\n case 'top':\n default:\n break;\n case 'middle':\n top = top - affixedRect.height / 2;\n break;\n case 'bottom':\n top = top - affixedRect.height;\n break;\n }\n }\n\n switch (horizontalAlignment) {\n case 'left':\n left = baseRect.left;\n break;\n\n case 'center':\n default:\n left = baseRect.left + baseRect.width / 2 - affixedRect.width / 2;\n break;\n\n case 'right':\n left = baseRect.right - affixedRect.width;\n break;\n }\n } else {\n if (placement === 'left') {\n left = baseRect.left - affixedRect.width;\n } else {\n left = baseRect.right;\n }\n\n switch (verticalAlignment) {\n case 'top':\n top = baseRect.top;\n break;\n\n case 'middle':\n default:\n top = baseRect.top + baseRect.height / 2 - affixedRect.height / 2;\n break;\n\n case 'bottom':\n top = baseRect.bottom - affixedRect.height;\n break;\n }\n }\n\n const offset: Required<SkyAffixOffset> = { top, left, bottom: 0, right: 0 };\n\n if (enableAutoFit) {\n const adjustments = this.#adjustOffsetToOverflowParent(\n { top, left },\n placement,\n this.#baseElement,\n );\n offset.top = adjustments.top;\n offset.left = adjustments.left;\n }\n\n offset.bottom = offset.top + affixedRect.height;\n offset.right = offset.left + affixedRect.width;\n\n return offset;\n }\n\n /**\n * Slightly adjust the offset to fit within the scroll parent's boundaries if\n * the affixed element would otherwise be clipped.\n */\n #adjustOffsetToOverflowParent(\n offset: { top: number; left: number },\n placement: SkyAffixPlacement,\n baseElement: HTMLElement,\n ): { top: number; left: number } {\n const affixedRect = getOuterRect(this.#affixedElement);\n const baseRect = baseElement.getBoundingClientRect();\n\n const parent = this.#getAutoFitContextParent();\n let parentOffset: Required<SkyAffixOffset>;\n if (this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent) {\n if (this.#config.autoFitOverflowOffset) {\n // When the config contains a specific offset.\n parentOffset = getElementOffset(\n parent,\n this.#config.autoFitOverflowOffset,\n );\n } else if (\n isOffsetFullyVisibleWithinParent(this.#viewportRuler, parent, baseRect)\n ) {\n // When the base element is fully visible within the parent, aim for the visible portion of the parent element.\n parentOffset = getVisibleRectForElement(this.#viewportRuler, parent);\n } else {\n // Anywhere in the parent element.\n parentOffset = getOuterRect(parent);\n }\n } else {\n const viewportRect = this.#viewportRuler.getViewportRect();\n parentOffset = {\n top: -viewportRect.top,\n left: -viewportRect.left,\n bottom: viewportRect.height + viewportRect.top,\n right: viewportRect.width + viewportRect.left,\n };\n }\n\n // A pixel value representing the leeway between the edge of the overflow parent and the edge\n // of the base element before it disappears from view.\n // If the visible portion of the base element is less than this pixel value, the auto-fit\n // functionality attempts to find another placement.\n const defaultPixelTolerance = 40;\n let pixelTolerance: number;\n\n const originalOffsetTop = offset.top;\n const originalOffsetLeft = offset.left;\n\n switch (placement) {\n case 'above':\n case 'below':\n // Keep the affixed element within the overflow parent.\n if (offset.left < parentOffset.left) {\n offset.left = parentOffset.left;\n } else if (offset.left + affixedRect.width > parentOffset.right) {\n offset.left = parentOffset.right - affixedRect.width;\n }\n\n // Use a smaller pixel tolerance if the base element width is less than the default.\n pixelTolerance = Math.min(defaultPixelTolerance, baseRect.width);\n\n // Make sure the affixed element never detaches from the base element.\n if (\n offset.left + pixelTolerance > baseRect.right ||\n offset.left + affixedRect.width - pixelTolerance < baseRect.left\n ) {\n offset.left = originalOffsetLeft;\n }\n\n break;\n\n case 'left':\n case 'right':\n // Keep the affixed element within the overflow parent.\n if (offset.top < parentOffset.top) {\n offset.top = parentOffset.top;\n } else if (offset.top + affixedRect.height > parentOffset.bottom) {\n offset.top = parentOffset.bottom - affixedRect.height;\n }\n\n // Use a smaller pixel tolerance if the base element height is less than the default.\n pixelTolerance = Math.min(defaultPixelTolerance, baseRect.height);\n\n // Make sure the affixed element never detaches from the base element.\n if (\n offset.top + pixelTolerance > baseRect.bottom ||\n offset.top + affixedRect.height - pixelTolerance < baseRect.top\n ) {\n offset.top = originalOffsetTop;\n }\n\n break;\n }\n\n return offset;\n }\n\n #getImmediateOverflowParent(): HTMLElement {\n return this.#overflowParents[0];\n }\n\n #getAutoFitContextParent(): HTMLElement {\n const bodyElement = this.#overflowParents[this.#overflowParents.length - 1];\n\n return this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent\n ? this.#getImmediateOverflowParent()\n : bodyElement;\n }\n\n #notifyPlacementChange(placement: SkyAffixPlacement | null): void {\n if (this.#currentPlacement !== placement) {\n this.#currentPlacement = placement ?? undefined;\n this.#placementChange.next({\n placement,\n });\n }\n }\n\n #reset(): void {\n this.#removeViewportListeners();\n\n this.#overflowParents = [];\n\n this.#config =\n this.#baseElement =\n this.#currentPlacement =\n this.#currentOffset =\n undefined;\n }\n\n #isNewOffset(offset: SkyAffixOffset): boolean {\n if (this.#currentOffset === undefined) {\n this.#currentOffset = offset;\n return true;\n }\n\n if (\n this.#currentOffset.top === offset.top &&\n this.#currentOffset.left === offset.left\n ) {\n return false;\n }\n\n this.#currentOffset = offset;\n\n return true;\n }\n\n #isBaseElementVisible(): boolean {\n // Can't get here if the base element is undefined.\n /* istanbul ignore if */\n if (!this.#baseElement) {\n return false;\n }\n\n const baseRect = this.#baseElement.getBoundingClientRect();\n\n return isOffsetPartiallyVisibleWithinParent(\n this.#viewportRuler,\n this.#getImmediateOverflowParent(),\n {\n top: baseRect.top,\n left: baseRect.left,\n right: baseRect.right,\n bottom: baseRect.bottom,\n },\n this.#config.autoFitOverflowOffset,\n );\n }\n\n #addViewportListeners(): void {\n this.#viewportListeners = new Subscription();\n\n // Resize and orientation changes.\n this.#viewportListeners.add(\n this.#viewportRuler.change().subscribe(() => {\n this.#affix();\n }),\n );\n\n this.#viewportListeners.add(\n this.#scrollChange.subscribe(() => {\n this.#affix();\n this.#overflowScroll.next();\n }),\n );\n\n // Listen for scroll events on the window, visual viewport, and any overflow parents.\n // https://developer.chrome.com/blog/visual-viewport-api/#events-only-fire-when-the-visual-viewport-changes\n this.#zone.runOutsideAngular(() => {\n [window, window.visualViewport, ...this.#overflowParents].forEach(\n (parentElement) => {\n parentElement?.addEventListener('scroll', this.#scrollChangeListener);\n },\n );\n });\n }\n\n #removeViewportListeners(): void {\n this.#viewportListeners?.unsubscribe();\n\n this.#zone.runOutsideAngular(() => {\n [window, window.visualViewport, ...this.#overflowParents].forEach(\n (parentElement) => {\n parentElement?.removeEventListener(\n 'scroll',\n this.#scrollChangeListener,\n );\n },\n );\n });\n }\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ElementRef,\n Injectable,\n NgZone,\n OnDestroy,\n RendererFactory2,\n inject,\n} from '@angular/core';\n\nimport { SkyAffixer } from './affixer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAffixService implements OnDestroy {\n readonly #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n\n readonly #viewportRuler = inject(ViewportRuler);\n\n readonly #zone = inject(NgZone);\n\n readonly #layoutViewport = this.#createLayoutViewportShim(inject(DOCUMENT));\n\n public ngOnDestroy(): void {\n this.#renderer.removeChild(\n this.#layoutViewport.parentNode,\n this.#layoutViewport,\n );\n }\n\n /**\n * Creates an instance of [[SkyAffixer]].\n * @param affixed The element to be affixed.\n */\n public createAffixer(affixed: ElementRef): SkyAffixer {\n return new SkyAffixer(\n affixed.nativeElement,\n this.#renderer,\n this.#viewportRuler,\n this.#zone,\n this.#layoutViewport,\n );\n }\n\n /**\n * Create a layout viewport element that can be used to determine the relative position\n * of the visual viewport. Inspired by\n * https://github.com/WICG/visual-viewport/blob/gh-pages/examples/fixed-to-viewport.html\n */\n #createLayoutViewportShim(doc: Document): HTMLElement {\n const layoutViewportElement = this.#renderer.createElement('div');\n this.#renderer.addClass(\n layoutViewportElement,\n 'sky-affix-layout-viewport-shim',\n );\n this.#renderer.setStyle(layoutViewportElement, 'width', '100%');\n this.#renderer.setStyle(layoutViewportElement, 'height', '100%');\n this.#renderer.setStyle(layoutViewportElement, 'position', 'fixed');\n this.#renderer.setStyle(layoutViewportElement, 'top', '0');\n this.#renderer.setStyle(layoutViewportElement, 'left', '0');\n this.#renderer.setStyle(layoutViewportElement, 'visibility', 'hidden');\n this.#renderer.setStyle(layoutViewportElement, 'pointerEvents', 'none');\n this.#renderer.appendChild(doc.body, layoutViewportElement);\n\n return layoutViewportElement;\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAffixAutoFitContext } from './affix-auto-fit-context';\nimport { SkyAffixHorizontalAlignment } from './affix-horizontal-alignment';\nimport { SkyAffixOffset } from './affix-offset';\nimport { SkyAffixOffsetChange } from './affix-offset-change';\nimport { SkyAffixPlacement } from './affix-placement';\nimport { SkyAffixPlacementChange } from './affix-placement-change';\nimport { SkyAffixPosition } from './affix-position';\nimport { SkyAffixVerticalAlignment } from './affix-vertical-alignment';\nimport { SkyAffixService } from './affix.service';\nimport { SkyAffixer } from './affixer';\n\n/**\n * Affixes the host element to a base element.\n */\n@Directive({\n selector: '[skyAffixTo]',\n standalone: false,\n})\nexport class SkyAffixDirective implements OnInit, OnChanges, OnDestroy {\n /**\n * The base element to affix the host element.\n */\n @Input()\n public skyAffixTo: HTMLElement | undefined;\n\n /**\n * Sets the `autoFitContext` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixAutoFitContext: SkyAffixAutoFitContext | undefined;\n\n /**\n * Sets the `autoFitOverflowOffset` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixAutoFitOverflowOffset: SkyAffixOffset | undefined;\n\n /**\n * Sets the `enableAutoFit` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixEnableAutoFit: boolean | undefined;\n\n /**\n * Sets the `horizontalAlignment` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixHorizontalAlignment: SkyAffixHorizontalAlignment | undefined;\n\n /**\n * Sets the `isSticky` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixIsSticky: boolean | undefined;\n\n /**\n * Sets the `placement` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixPlacement: SkyAffixPlacement | undefined;\n\n /**\n * Sets the `position` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixPosition: SkyAffixPosition | undefined;\n\n /**\n * Sets the `verticalAlignment` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixVerticalAlignment: SkyAffixVerticalAlignment | undefined;\n\n /**\n * Fires when the affixed element's offset changes.\n */\n @Output()\n public affixOffsetChange = new EventEmitter<SkyAffixOffsetChange>();\n\n /**\n * Fires when the affixed element's overflow container is scrolled.\n */\n @Output()\n public affixOverflowScroll = new EventEmitter<void>();\n\n /**\n * Fires when the placement value changes.\n */\n @Output()\n public affixPlacementChange = new EventEmitter<SkyAffixPlacementChange>();\n\n #affixer: SkyAffixer | undefined;\n\n #affixService: SkyAffixService;\n\n #elementRef: ElementRef;\n\n #ngUnsubscribe = new Subject<void>();\n\n constructor(elementRef: ElementRef, affixService: SkyAffixService) {\n this.#elementRef = elementRef;\n this.#affixService = affixService;\n }\n\n public ngOnInit(): void {\n this.#affixer = this.#affixService.createAffixer(this.#elementRef);\n\n this.#affixer.offsetChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixOffsetChange.emit(change));\n\n this.#affixer.overflowScroll\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixOverflowScroll.emit(change));\n\n this.#affixer.placementChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixPlacementChange.emit(change));\n\n this.#updateAlignment();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n /* istanbul ignore else */\n if (\n changes['affixAutoFitContext'] ||\n changes['affixAutoFitOverflowOffset'] ||\n changes['affixEnableAutoFit'] ||\n changes['affixHorizontalAlignment'] ||\n changes['affixIsSticky'] ||\n changes['affixPlacement'] ||\n changes['affixPosition'] ||\n changes['affixVerticalAlignment']\n ) {\n this.#updateAlignment();\n }\n }\n\n public ngOnDestroy(): void {\n this.affixOffsetChange.complete();\n this.affixOverflowScroll.complete();\n this.affixPlacementChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n /*istanbul ignore else*/\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n\n #updateAlignment(): void {\n if (this.skyAffixTo && this.#affixer) {\n this.#affixer.affixTo(this.skyAffixTo, {\n autoFitContext: this.affixAutoFitContext,\n autoFitOverflowOffset: this.affixAutoFitOverflowOffset,\n enableAutoFit: this.affixEnableAutoFit,\n horizontalAlignment: this.affixHorizontalAlignment,\n isSticky: this.affixIsSticky,\n placement: this.affixPlacement,\n position: this.affixPosition,\n verticalAlignment: this.affixVerticalAlignment,\n });\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SkyAffixDirective } from './affix.directive';\n\n@NgModule({\n imports: [CommonModule],\n exports: [SkyAffixDirective],\n declarations: [SkyAffixDirective],\n})\nexport class SkyAffixModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyContentInfo } from './content-info';\n\n/**\n * @internal\n * An API to provide information about a parent component's content to child components.\n * For example, toolbar can use this to provide its child components with a list\n * descriptor they can use to construct aria labels, or tree view can provide the node\n * name to its context menus.\n */\n@Injectable()\nexport class SkyContentInfoProvider {\n #contentInfo = new ReplaySubject<SkyContentInfo>(1);\n #currentValue: SkyContentInfo = {};\n\n public patchInfo(value: SkyContentInfo): void {\n const newValue = {\n ...this.#currentValue,\n ...value,\n };\n\n this.#currentValue = newValue;\n this.#contentInfo.next(newValue);\n }\n\n public getInfo(): Observable<SkyContentInfo> {\n return this.#contentInfo.asObservable();\n }\n}\n","import { Observable, ReplaySubject } from 'rxjs';\n\n/**\n * @internal\n * An API to provide default Angular component input values to child components.\n */\nexport class SkyDefaultInputProvider {\n #props: Record<string, Record<string, ReplaySubject<unknown>>> = {};\n\n public setValue<T>(componentName: string, inputName: string, value: T): void {\n const subject = this.#getSubject(componentName, inputName);\n subject.next(value);\n }\n\n public getValue<T>(\n componentName: string,\n inputName: string,\n ): Observable<T> | undefined {\n const inputDefault = this.#getSubject(componentName, inputName);\n return inputDefault.asObservable() as Observable<T>;\n }\n\n #getSubject(\n componentName: string,\n inputName: string,\n ): ReplaySubject<unknown> {\n const componentSubjects = this.#props[componentName] || {};\n const inputSubject = componentSubjects[inputName];\n\n if (!inputSubject) {\n componentSubjects[inputName] = new ReplaySubject(1);\n this.#props[componentName] = componentSubjects;\n }\n\n return componentSubjects[inputName];\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\n/**\n * Represents a single item added to the dock.\n */\nexport class SkyDockItem<T> {\n /**\n * An event that emits when the item is removed from the dock.\n */\n public get destroyed(): Observable<void> {\n return this.#destroyedObs;\n }\n\n #destroyed = new Subject<void>();\n\n #destroyedObs: Observable<void>;\n\n /**\n * @param componentInstance The item's component instance.\n * @param stackOrder The assigned stack order of the docked item.\n */\n constructor(\n public readonly componentInstance: T,\n public readonly stackOrder: number,\n ) {\n this.#destroyedObs = this.#destroyed.asObservable();\n }\n\n /**\n * Removes the item from the dock.\n */\n public destroy(): void {\n this.#destroyed.next();\n this.#destroyed.complete();\n }\n}\n","/**\n * The location on the page where the dock component should be rendered.\n */\nexport enum SkyDockLocation {\n /**\n * Renders the dock component before a given element.\n */\n BeforeElement,\n\n /**\n * Renders the dock component as the last element inside the BODY element.\n */\n BodyBottom,\n\n /**\n * Renders the dock component as the last element inside a given element.\n */\n ElementBottom,\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyDockModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkyDockModule {}\n","/**\n * The location on the page where the dynamic component should be rendered.\n */\nexport enum SkyDynamicComponentLocation {\n /**\n * Renders the dynamic component before a given element.\n */\n BeforeElement,\n\n /**\n * Renders the dynamic component as the last element inside the BODY element.\n */\n BodyBottom,\n\n /**\n * Renders the dynamic component as the first element inside the BODY element.\n */\n BodyTop,\n\n /**\n * Renders the dynamic component as the last element inside a given element.\n */\n ElementBottom,\n\n /**\n * Renders the dynamic component as the first element inside a given element.\n */\n ElementTop,\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\nexport function getWindow(): any {\n return window;\n}\n\n/**\n * The application window reference service references the global window variable.\n * After users inject SkyAppWindowRef into a component, they can use the service to interact with\n * window properties and event handlers by referencing its nativeWindow property.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppWindowRef {\n /**\n * The global `window` variable.\n */\n public get nativeWindow(): any {\n return getWindow();\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n Injectable,\n Renderer2,\n RendererFactory2,\n Type,\n createComponent,\n createEnvironmentInjector,\n inject,\n} from '@angular/core';\n\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nimport { SkyDynamicComponentLocation } from './dynamic-component-location';\nimport { SkyDynamicComponentOptions } from './dynamic-component-options';\n\n/**\n * Angular service for creating and rendering a dynamic component.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyDynamicComponentService {\n #applicationRef: ApplicationRef;\n\n #renderer: Renderer2;\n\n #windowRef: SkyAppWindowRef;\n\n #environmentInjector = inject(EnvironmentInjector);\n\n constructor(\n applicationRef: ApplicationRef,\n windowRef: SkyAppWindowRef,\n rendererFactory: RendererFactory2,\n ) {\n this.#applicationRef = applicationRef;\n this.#windowRef = windowRef;\n\n // Based on suggestions from https://github.com/angular/angular/issues/17824\n // for accessing an instance of Renderer2 in a service since Renderer2 can't\n // be injected into a service. Passing undefined for both parameters results\n // in the default renderer which is what we want here.\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Creates an instance of the specified component and adds it to the specified location\n * on the page.\n */\n public createComponent<T>(\n componentType: Type<T>,\n options: SkyDynamicComponentOptions = {\n location: SkyDynamicComponentLocation.BodyBottom,\n },\n ): ComponentRef<T> {\n const environmentInjector = createEnvironmentInjector(\n options.providers ?? [],\n options.environmentInjector ?? this.#environmentInjector,\n );\n\n let componentRef: ComponentRef<T>;\n\n if (options.viewContainerRef) {\n componentRef = options.viewContainerRef.createComponent(componentType, {\n environmentInjector,\n });\n } else {\n componentRef = createComponent<T>(componentType, {\n environmentInjector,\n });\n\n this.#applicationRef.attachView(componentRef.hostView);\n\n this.#insertComponentAtLocation(componentRef, options);\n }\n\n if (options.className) {\n const el = this.#getRootNode(componentRef);\n this.#renderer.addClass(el, options.className);\n }\n\n return componentRef;\n }\n\n #insertComponentAtLocation(\n componentRef: ComponentRef<unknown>,\n options: SkyDynamicComponentOptions,\n ): void {\n const el = this.#getRootNode(componentRef);\n\n const bodyEl = this.#windowRef.nativeWindow.document.body;\n\n switch (options.location) {\n case SkyDynamicComponentLocation.BeforeElement:\n if (!options.referenceEl) {\n throw new Error(\n '[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.BeforeElement` because a reference element was not provided.',\n );\n }\n\n this.#renderer.insertBefore(\n options.referenceEl.parentElement,\n el,\n options.referenceEl,\n );\n break;\n case SkyDynamicComponentLocation.ElementTop:\n if (!options.referenceEl) {\n throw new Error(\n '[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.ElementTop` because a reference element was not provided.',\n );\n }\n\n this.#renderer.insertBefore(\n options.referenceEl,\n el,\n options.referenceEl.firstChild,\n );\n break;\n case SkyDynamicComponentLocation.ElementBottom:\n this.#renderer.appendChild(options.referenceEl, el);\n break;\n case SkyDynamicComponentLocation.BodyTop:\n this.#renderer.insertBefore(bodyEl, el, bodyEl.firstChild);\n break;\n default:\n this.#renderer.appendChild(bodyEl, el);\n break;\n }\n }\n\n /**\n * Removes a component ref from the page\n * @param componentRef Component ref for the component being removed\n */\n public removeComponent<T>(componentRef: ComponentRef<T> | undefined): void {\n if (!componentRef) {\n return;\n }\n\n if (!this.#applicationRef.destroyed) {\n this.#applicationRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n }\n\n #getRootNode<T>(componentRef: ComponentRef<T>): any {\n // Technique for retrieving the component's root node taken from here:\n // https://malcoded.com/posts/angular-dynamic-components\n return (componentRef.hostView as EmbeddedViewRef<T>).rootNodes[0];\n }\n}\n\n/**\n * Angular service for creating and rendering a dynamic component.\n * @internal\n * @deprecated Use `SkyDynamicComponentService` to create a standalone component instead.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyDynamicComponentLegacyService extends SkyDynamicComponentService {}\n","import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMutationObserverService {\n public create(callback: MutationCallback): MutationObserver {\n return new MutationObserver(callback);\n }\n}\n","import {\n ElementRef,\n Injectable,\n OnDestroy,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyDockDomAdapterService implements OnDestroy {\n #currentDockHeight: number | undefined;\n\n #mutationSvc: SkyMutationObserverService;\n\n #ngUnsubscribe = new Subject<void>();\n\n #observer: MutationObserver | undefined;\n\n #renderer: Renderer2;\n\n #styleElement: HTMLStyleElement | undefined;\n\n constructor(\n mutationSvc: SkyMutationObserverService,\n rendererFactory: RendererFactory2,\n ) {\n this.#mutationSvc = mutationSvc;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n public ngOnDestroy(): void {\n if (this.#observer) {\n this.#observer.disconnect();\n }\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#currentDockHeight = this.#observer = this.#styleElement = undefined;\n }\n\n public setSticky(elementRef: ElementRef): void {\n this.#renderer.addClass(elementRef.nativeElement, 'sky-dock-sticky');\n }\n\n public setZIndex(zIndex: number, elementRef: ElementRef): void {\n this.#renderer.setStyle(elementRef.nativeElement, 'z-index', zIndex);\n }\n\n public unbindDock(elementRef: ElementRef): void {\n this.#renderer.addClass(elementRef.nativeElement, 'sky-dock-unbound');\n }\n\n public watchDomChanges(elementRef: ElementRef): void {\n this.#observer = this.#mutationSvc.create(() => {\n this.#adjustBodyStyles(elementRef);\n });\n\n this.#observer.observe(elementRef.nativeElement, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n\n observableFromEvent(window, 'resize')\n .pipe(debounceTime(250), takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#adjustBodyStyles(elementRef));\n }\n\n #adjustBodyStyles(elementRef: ElementRef): void {\n const dockHeight = elementRef.nativeElement.getBoundingClientRect().height;\n if (dockHeight === this.#currentDockHeight) {\n return;\n }\n\n // Create a style element to avoid overwriting any existing inline body styles.\n const styleElement = this.#renderer.createElement('style');\n const textNode = this.#renderer.createText(\n `body { margin-bottom: ${dockHeight}px; --sky-dock-height: ${dockHeight}px; }`,\n );\n\n // Apply a `data-` attribute to make unit testing easier.\n this.#renderer.setAttribute(\n styleElement,\n 'data-test-selector',\n 'sky-layout-dock-bottom-styles',\n );\n\n this.#renderer.appendChild(styleElement, textNode);\n this.#renderer.appendChild(document.head, styleElement);\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#currentDockHeight = dockHeight;\n this.#styleElement = styleElement;\n }\n\n #destroyStyleElement(): void {\n this.#renderer.removeChild(document.head, this.#styleElement);\n }\n}\n","/**\n * @internal\n */\nexport function sortByStackOrder(a: any, b: any): number {\n if (a.stackOrder > b.stackOrder) {\n return -1;\n }\n\n if (a.stackOrder < b.stackOrder) {\n return 1;\n }\n\n return 0;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentInjector,\n Type,\n ViewChild,\n ViewContainerRef,\n inject,\n} from '@angular/core';\n\nimport { SkyDynamicComponentService } from '../dynamic-component/dynamic-component.service';\n\nimport { SkyDockDomAdapterService } from './dock-dom-adapter.service';\nimport { SkyDockInsertComponentConfig } from './dock-insert-component-config';\nimport { SkyDockItemReference } from './dock-item-reference';\nimport { SkyDockLocation } from './dock-location';\nimport { SkyDockOptions } from './dock-options';\nimport { sortByStackOrder } from './sort-by-stack-order';\n\n/**\n * @internal\n */\n@Component({\n standalone: true,\n selector: 'sky-dock',\n templateUrl: './dock.component.html',\n styleUrls: ['./dock.component.scss'],\n providers: [SkyDockDomAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyDockComponent {\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n public target: ViewContainerRef | undefined;\n\n #itemRefs: SkyDockItemReference<unknown>[] = [];\n\n #options: SkyDockOptions | undefined;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #domAdapter = inject(SkyDockDomAdapterService);\n readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n readonly #elementRef = inject(ElementRef);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n public insertComponent<T>(\n component: Type<T>,\n config: SkyDockInsertComponentConfig = {},\n ): SkyDockItemReference<T> {\n /*istanbul ignore if: untestable*/\n if (!this.target) {\n throw Error(\n '[SkyDockComponent] Could not insert the component because the target element could not be found.',\n );\n }\n\n const componentRef = this.#dynamicComponentSvc.createComponent(component, {\n environmentInjector: this.#environmentInjector,\n providers: config.providers,\n viewContainerRef: this.target,\n });\n\n const stackOrder =\n config.stackOrder !== null && config.stackOrder !== undefined\n ? config.stackOrder\n : this.#getHighestStackOrder();\n\n this.#itemRefs.push({\n componentRef,\n stackOrder,\n });\n\n this.#sortItemsByStackOrder();\n\n this.#changeDetector.markForCheck();\n\n return {\n componentRef,\n stackOrder,\n };\n }\n\n public removeItem(item: SkyDockItemReference<any>): void {\n /*istanbul ignore if: untestable*/\n if (!this.target) {\n throw Error(\n '[SkyDockComponent] Could not remove the item because the target element could not be found.',\n );\n }\n\n const viewRef = item.componentRef.hostView;\n this.target.remove(this.target.indexOf(viewRef));\n\n const found = this.#itemRefs.find(\n (i) => i.componentRef.hostView === viewRef,\n );\n\n if (found) {\n this.#itemRefs.splice(this.#itemRefs.indexOf(found), 1);\n }\n }\n\n public setOptions(options: SkyDockOptions | undefined): void {\n this.#options = options;\n\n switch (this.#options?.location) {\n case SkyDockLocation.BeforeElement:\n this.#domAdapter.unbindDock(this.#elementRef);\n break;\n case SkyDockLocation.ElementBottom:\n this.#domAdapter.setSticky(this.#elementRef);\n break;\n case SkyDockLocation.BodyBottom:\n default:\n this.#domAdapter.watchDomChanges(this.#elementRef);\n break;\n }\n\n if (this.#options?.zIndex) {\n this.#domAdapter.setZIndex(this.#options.zIndex, this.#elementRef);\n }\n }\n\n #sortItemsByStackOrder(): void {\n if (this.target) {\n this.#itemRefs.sort(sortByStackOrder);\n\n // Reassign the correct index for each view.\n for (let i = 0, len = this.#itemRefs.length; i < len; i++) {\n const item = this.#itemRefs[i];\n this.target.move(item.componentRef.hostView, i);\n }\n }\n }\n\n #getHighestStackOrder(): number {\n if (this.#itemRefs.length === 0) {\n return 0;\n }\n\n return this.#itemRefs[0].stackOrder + 1;\n }\n}\n","<ng-container #target />\n","import { ComponentRef, Injectable, Type, inject } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { SkyDynamicComponentLocation } from '../dynamic-component/dynamic-component-location';\nimport { SkyDynamicComponentOptions } from '../dynamic-component/dynamic-component-options';\nimport { SkyDynamicComponentService } from '../dynamic-component/dynamic-component.service';\n\nimport { SkyDockInsertComponentConfig } from './dock-insert-component-config';\nimport { SkyDockItem } from './dock-item';\nimport { SkyDockLocation } from './dock-location';\nimport { SkyDockOptions } from './dock-options';\nimport { SkyDockComponent } from './dock.component';\nimport { sortByStackOrder } from './sort-by-stack-order';\n\n/**\n * This service docks components to specific areas on the page.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyDockService {\n private static dockRef: ComponentRef<SkyDockComponent> | undefined;\n private static _items: SkyDockItem<any>[] = [];\n\n /**\n * Returns all docked items.\n */\n public get items(): SkyDockItem<any>[] {\n return SkyDockService._items;\n }\n\n readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n #subscription: Subscription | undefined;\n\n #options: SkyDockOptions | undefined;\n\n /**\n * Docks a component to the bottom of the page.\n * @param component The component to dock.\n * @param config Options that affect the docking action.\n */\n public insertComponent<T>(\n component: Type<T>,\n config?: SkyDockInsertComponentConfig,\n ): SkyDockItem<T> {\n this.#subscription ??= new Subscription();\n const dockRef = (SkyDockService.dockRef =\n SkyDockService.dockRef || this.#createDock());\n\n const itemRef = dockRef.instance.insertComponent(component, config);\n const item = new SkyDockItem(\n itemRef.componentRef.instance,\n itemRef.stackOrder,\n );\n\n this.#subscription?.add(\n item.destroyed.subscribe(() => {\n dockRef.instance.removeItem(itemRef);\n SkyDockService._items.splice(SkyDockService._items.indexOf(item), 1);\n if (SkyDockService._items.length === 0) {\n this.#destroyDock();\n }\n }),\n );\n\n SkyDockService._items.push(item);\n SkyDockService._items.sort(sortByStackOrder);\n\n return item;\n }\n\n /**\n * Sets options for the positioning and styling of the dock component. Since the dock service is a\n * singleton instance, these options will be applied to all components inserted into the dock. In\n * order to create a separate dock with different options, consumers should provide a different\n * instance of the dock service.\n * @param options The options for positioning and styling\n */\n public setDockOptions(options: SkyDockOptions): void {\n this.#options = options;\n }\n\n #createDock(): ComponentRef<SkyDockComponent> {\n let dockOptions: SkyDynamicComponentOptions | undefined;\n\n if (this.#options) {\n let dynamicLocation: SkyDynamicComponentLocation;\n switch (this.#options.location) {\n case SkyDockLocation.BeforeElement:\n dynamicLocation = SkyDynamicComponentLocation.BeforeElement;\n break;\n case SkyDockLocation.ElementBottom:\n dynamicLocation = SkyDynamicComponentLocation.ElementBottom;\n break;\n default:\n dynamicLocation = SkyDynamicComponentLocation.BodyTop;\n break;\n }\n\n dockOptions = {\n location: dynamicLocation,\n referenceEl: this.#options.referenceEl,\n };\n }\n\n const dockRef = this.#dynamicComponentSvc.createComponent(\n SkyDockComponent,\n dockOptions,\n );\n\n dockRef.instance.setOptions(this.#options);\n\n return dockRef;\n }\n\n #destroyDock(): void {\n this.#subscription?.unsubscribe();\n this.#subscription = undefined;\n this.#dynamicComponentSvc.removeComponent(SkyDockService.dockRef);\n SkyDockService.dockRef = undefined;\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * Provides services required to create dynamic components on the page.\n * @deprecated The `SkyDynamicComponentService` no longer needs the `SkyDynamicComponentModule`.\n * The `SkyDynamicComponentModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyDynamicComponentModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Wraps the FileReader API so it can be mocked in tests.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyFileReaderService {\n public async readAsDataURL(file: File): Promise<string> {\n return await new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.addEventListener('load', (event) => {\n resolve(event.target?.result as string);\n });\n\n reader.addEventListener('error', () => {\n reject(file);\n });\n\n reader.addEventListener('abort', () => {\n reject(file);\n });\n\n reader.readAsDataURL(file);\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppFormat {\n public formatText(format: string, ...args: any[]): string {\n return String(format).replace(\n /\\{(\\d+)\\}/g,\n function (match, capture): string {\n return args[parseInt(capture, 10)];\n },\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyHelpGlobalOptions } from './help-global-options';\n\n/**\n * Injection token for specifying and retrieving global help options.\n */\nexport const SKY_HELP_GLOBAL_OPTIONS = new InjectionToken<SkyHelpGlobalOptions>(\n 'SkyHelpGlobalOptions',\n);\n","import { Injectable } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\n\nimport { SkyHelpOpenArgs } from './help-open-args';\nimport { SkyHelpUpdateArgs } from './help-update-args';\n\n/**\n * Provides methods for opening and updating a globally accessible help dialog.\n */\n@Injectable()\nexport abstract class SkyHelpService {\n /**\n * Emits when the help widget ready state changes.\n */\n public get widgetReadyStateChange(): Observable<boolean> {\n return of(false);\n }\n\n /**\n * Opens a globally accessible help dialog.\n * @param args The options for opening the help dialog.\n */\n public abstract openHelp(args?: SkyHelpOpenArgs): void;\n\n /**\n * Updates a globally accessible help dialog.\n * @param args The options for updating the help dialog.\n */\n public abstract updateHelp(args: SkyHelpUpdateArgs): void;\n}\n","import { Injectable } from '@angular/core';\n\nlet idIndex = 0;\n\n/**\n * Generates unique IDs to be used with HTML elements.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyIdService {\n public generateId(): string {\n idIndex++;\n\n // Include timestamp and an incrementing index to guarantee unique IDs both during the application\n // lifecycle as well as across sessions, since browsers will try to apply autocomplete options to\n // elements with the same ID across sessions.\n return `sky-id-gen__${new Date().getTime()}__${idIndex}`;\n }\n}\n","import { Directive, ElementRef, Renderer2 } from '@angular/core';\n\nimport { SkyIdService } from './id.service';\n\n/**\n * Sets the element's `id` attribute to a unique ID. To reference this unique ID on other elements,\n * such as in a `label` element's `for` attribute, assign this directive to a template reference\n * variable, then use its `id` property.\n */\n@Directive({\n selector: '[skyId]',\n exportAs: 'skyId',\n standalone: false,\n})\nexport class SkyIdDirective {\n public get id(): string {\n return this.#_id;\n }\n\n #_id: string;\n\n constructor(elRef: ElementRef, renderer: Renderer2, idSvc: SkyIdService) {\n // Generate and apply the ID before the template is rendered\n // to avoid a changed-after-checked error.\n const id = idSvc.generateId();\n\n renderer.setAttribute(elRef.nativeElement, 'id', id);\n\n this.#_id = id;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyIdDirective } from './id.directive';\n\n@NgModule({\n declarations: [SkyIdDirective],\n exports: [SkyIdDirective],\n})\nexport class SkyIdModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyLayoutHostForChildArgs } from './layout-host-for-child-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyLayoutHostService {\n public get hostLayoutForChild(): Observable<SkyLayoutHostForChildArgs> {\n return this.#hostLayoutForChildObs;\n }\n\n #hostLayoutForChild = new Subject<SkyLayoutHostForChildArgs>();\n #hostLayoutForChildObs = this.#hostLayoutForChild.asObservable();\n\n public setHostLayoutForChild(layout: SkyLayoutHostForChildArgs): void {\n this.#hostLayoutForChild.next(layout);\n }\n}\n","import {\n Directive,\n ElementRef,\n RendererFactory2,\n effect,\n inject,\n input,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { SkyLayoutHostService } from './layout-host.service';\n\nconst LAYOUT_FOR_CHILD_CLASS_PREFIX = 'sky-layout-host-for-child-';\nconst LAYOUT_CLASS_PREFIX = 'sky-layout-host-';\n\n/**\n * @internal\n */\n@Directive({\n selector: '[skyLayoutHost]',\n standalone: true,\n providers: [SkyLayoutHostService],\n})\nexport class SkyLayoutHostDirective<T = 'none' | 'fit'> {\n readonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #layoutForChild = toSignal(\n inject(SkyLayoutHostService).hostLayoutForChild,\n );\n readonly #renderer = inject(RendererFactory2).createRenderer(null, null);\n\n public readonly layout = input<T>();\n\n constructor() {\n effect(() => {\n const cssClass = [`${LAYOUT_CLASS_PREFIX}${this.layout() ?? 'none'}`];\n const layoutForChild = this.#layoutForChild()?.layout;\n if (layoutForChild) {\n cssClass.push(`${LAYOUT_FOR_CHILD_CLASS_PREFIX}${layoutForChild}`);\n }\n const classList = this.#elementRef.nativeElement.classList.values();\n for (const className of classList) {\n if (\n className.startsWith(LAYOUT_CLASS_PREFIX) &&\n !cssClass.includes(className)\n ) {\n this.#renderer.removeClass(this.#elementRef.nativeElement, className);\n }\n }\n for (const className of cssClass) {\n this.#renderer.addClass(this.#elementRef.nativeElement, className);\n }\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, OnDestroy, inject } from '@angular/core';\n\nimport { ReplaySubject } from 'rxjs';\n\nimport { SkyIdService } from '../id/id.service';\n\nimport { SkyLiveAnnouncerArgs } from './types/live-announcer-args';\n\n/**\n * Allows for announcing messages to screen reader users through the use of a common `aria-live` element.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyLiveAnnouncerService implements OnDestroy {\n public announcerElementChanged = new ReplaySubject<HTMLElement | undefined>(\n 1,\n );\n\n #announcerElement: HTMLElement | undefined;\n #document = inject(DOCUMENT);\n #idService = inject(SkyIdService);\n #durationTimeout: number | undefined;\n #ngZone = inject(NgZone);\n\n constructor() {\n this.#announcerElement = this.#createLiveElement();\n this.announcerElementChanged.next(this.#announcerElement);\n }\n\n /**\n * Announces a message to screen readers.\n * @param message Message to be announced to the screen reader.\n * @param args Options for the announcement of the message.\n */\n public announce(message: string, args?: SkyLiveAnnouncerArgs): void {\n /* safety-check */\n /* istanbul ignore if */\n if (!this.#announcerElement) {\n this.#announcerElement = this.#createLiveElement();\n this.announcerElementChanged.next(this.#announcerElement);\n }\n\n const politeness = args?.politeness ?? 'polite';\n this.#announcerElement.setAttribute('aria-live', politeness);\n\n this.clear();\n clearTimeout(this.#durationTimeout);\n\n this.#announcerElement.textContent = message;\n this.#ngZone.runOutsideAngular(() => {\n this.#durationTimeout = setTimeout(\n () => this.clear(),\n args?.duration ?? this.#calculateDefaultDurationFromString(message),\n ) as unknown as number;\n });\n }\n\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n public clear(): void {\n if (this.#announcerElement) {\n this.#announcerElement.textContent = '';\n }\n }\n\n /**\n * @internal\n */\n public ngOnDestroy(): void {\n this.#announcerElement?.remove();\n this.#announcerElement = undefined;\n this.announcerElementChanged.next(undefined);\n clearTimeout(this.#durationTimeout);\n }\n\n #calculateDefaultDurationFromString(message: string): number {\n // Research suggests normal WPM is 110 for english. Lowering here to be conservative.\n const baseWordsPerMinute = 80;\n const minuteInMilliseconds = 60000;\n const numberOfWords = message.split(' ').length;\n\n const baseTime =\n (numberOfWords / baseWordsPerMinute) * minuteInMilliseconds;\n\n // Add 50% to time to account for exceptionally slow screen reader settings and/or speech settings that leave long pauses between words.\n return baseTime * 1.5;\n }\n\n #createLiveElement(): HTMLElement {\n const elementClass = 'sky-live-announcer-element';\n const previousElements = Array.from<Element>(\n this.#document.getElementsByClassName(elementClass),\n );\n const liveEl = this.#document.createElement('div');\n\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (const previousElement of previousElements) {\n previousElement.remove();\n }\n\n liveEl.classList.add(elementClass);\n liveEl.classList.add('sky-screen-reader-only');\n\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n liveEl.id = this.#idService.generateId();\n\n this.#document.body.appendChild(liveEl);\n\n return liveEl;\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyLogService` no longer needs the `SkyLogModule`.\n * The `SkyLogModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyLogModule {}\n","/**\n * @internal\n */\nexport enum SkyLogLevel {\n Info = 1,\n Warn = 2,\n Error = 3,\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyLogLevel } from './log-level';\n\n/**\n * @internal\n */\nexport const SKY_LOG_LEVEL = new InjectionToken<SkyLogLevel>('SkyLogLevel');\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { SkyAppFormat } from '../format/app-format';\n\nimport { SkyLogDeprecatedArgs } from './types/log-deprecation-args';\nimport { SkyLogLevel } from './types/log-level';\nimport { SKY_LOG_LEVEL } from './types/log-level-token';\n\nconst previousWarnings = new Set<string>();\n\n/**\n * Logs information to the console based on the application's log level as\n * provided by the `SKY_LOG_LEVEL` injection token. If no token is provided,\n * only `error` logs will be shown.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyLogService {\n #applicationLogLevel: SkyLogLevel;\n\n #formatter: SkyAppFormat;\n\n constructor(\n formatter: SkyAppFormat,\n @Optional()\n @Inject(SKY_LOG_LEVEL)\n applicationLogLevel?: SkyLogLevel,\n ) {\n this.#formatter = formatter;\n this.#applicationLogLevel = applicationLogLevel ?? SkyLogLevel.Error;\n }\n\n /**\n * Clears previously-logged messages. Primarily used for unit\n * testing this service.\n */\n public static clearPreviousLogs(): void {\n previousWarnings.clear();\n }\n\n /**\n * Logs a deprecation warning for a class, property, function, etc. This will\n * be logged as a console warning unless a different log level is given in the\n * `args` parameter.\n * @param name The name of the deprecated class, property, function, etc.\n * @param args Information about the deprecation and replacement recommendations.\n */\n public deprecated(name: string, args?: SkyLogDeprecatedArgs): void {\n const logLevel = args?.logLevel ?? SkyLogLevel.Warn;\n\n name = this.#convertStringToCode(name);\n\n if (this.#canLog(logLevel)) {\n const messageParts = [];\n\n if (args?.deprecationMajorVersion) {\n messageParts.push(\n this.#formatter.formatText(\n '{0} is deprecated starting in SKY UX {1}.',\n name,\n args.deprecationMajorVersion.toLocaleString(),\n ),\n );\n } else {\n messageParts.push(\n this.#formatter.formatText('{0} is deprecated.', name),\n );\n }\n\n if (args?.removalMajorVersion) {\n messageParts.push(\n this.#formatter.formatText(\n 'We will remove it in version {0}.',\n args.removalMajorVersion.toLocaleString(),\n ),\n );\n } else {\n messageParts.push('We will remove it in a future major version.');\n }\n\n if (args?.replacementRecommendation) {\n messageParts.push(args.replacementRecommendation);\n }\n\n if (args?.moreInfoUrl) {\n messageParts.push(\n this.#formatter.formatText(\n 'For more information, see {0}.',\n args.moreInfoUrl,\n ),\n );\n }\n\n this.#logBasedOnLevel(logLevel, messageParts.join(' '));\n }\n }\n\n /**\n * Logs a console error if the application's log level is `SkyLogLevel.Error`.\n * @param message The error message\n * @param params Optional parameters for the error message.\n */\n public error(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Error)) {\n this.#logWithParams('error', message, params);\n }\n }\n\n /**\n * Logs console information if the application's log level is `SkyLogLevel.Info` or above.\n * @param message The informational message\n * @param params Optional parameters for the informational message.\n */\n public info(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Info)) {\n this.#logWithParams('log', message, params);\n }\n }\n\n /**\n * Logs a console warning if the application's log level is `SkyLogLevel.Warn` or above.\n * @param message The warning message\n * @param params Optional parameters for the warning message.\n */\n public warn(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Warn)) {\n const messageKey = this.#buildMessageKey(message, params);\n\n // Only log each warning once per application instance to avoid drowning out other\n // important messages in the console.\n if (!previousWarnings.has(message)) {\n this.#logWithParams('warn', message, params);\n previousWarnings.add(messageKey);\n }\n }\n }\n\n #convertStringToCode(typeString: string): string {\n if (typeString.charAt(0) !== '`' && typeString.charAt(-1) !== '`') {\n typeString = '`' + typeString + '`';\n }\n return typeString;\n }\n\n #canLog(intendedLogLevel: SkyLogLevel): boolean {\n return intendedLogLevel >= this.#applicationLogLevel;\n }\n\n #logBasedOnLevel(\n logLevel: SkyLogLevel,\n message: string,\n params?: unknown[],\n ): void {\n switch (logLevel) {\n case SkyLogLevel.Info:\n this.info(message, params);\n break;\n case SkyLogLevel.Warn:\n this.warn(message, params);\n break;\n case SkyLogLevel.Error:\n this.error(message, params);\n break;\n }\n }\n\n #logWithParams(\n logMethod: 'log' | 'warn' | 'error',\n message: string,\n params: unknown[] | undefined,\n ): void {\n if (params) {\n console[logMethod](message, ...params);\n } else {\n console[logMethod](message);\n }\n }\n\n #buildMessageKey(message: string, params?: unknown[]): string {\n let key = message;\n\n if (params?.length) {\n key = `${key} ${params.join(' ')}`;\n }\n\n return key;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\n/**\n * Used to override a breakpoint observer for specific execution contexts.\n * @internal\n */\nexport const SKY_BREAKPOINT_OBSERVER =\n new InjectionToken<SkyBreakpointObserver>('SKY_BREAKPOINT_OBSERVER');\n","import {\n ApplicationRef,\n ElementRef,\n Injectable,\n NgZone,\n OnDestroy,\n inject,\n} from '@angular/core';\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n distinctUntilChanged,\n filter,\n map,\n observeOn,\n shareReplay,\n takeUntil,\n} from 'rxjs';\n\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nconst errorTest =\n /ResizeObserver loop completed with undelivered notifications/i;\nlet errorLogRegistered = false;\nlet originalOnError:\n | ((event: string | Event) => boolean | undefined)\n | undefined = undefined;\n\nconst errorHandler = (event: ErrorEvent): boolean | undefined => {\n if (errorTest.test(event.message)) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n return undefined;\n};\n\nconst onError = (event: string | ErrorEvent): boolean | undefined => {\n const message = typeof event === 'string' ? event : event.message;\n // This is necessary to prevent the test runner from failing on errors, but challenging to reliably test.\n /* istanbul ignore next */\n if (errorTest.test(message)) {\n if (event instanceof ErrorEvent) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n }\n return false;\n }\n return originalOnError?.call(window, event);\n};\n\n/**\n * Service to create rxjs observables for changes to the content box dimensions of elements.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyResizeObserverService implements OnDestroy {\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #zone = inject(NgZone);\n readonly #resizeObserver = this.#zone.runOutsideAngular(\n () =>\n new ResizeObserver((entries) =>\n this.#zone.run(() => this.#resizeSubject.next(entries)),\n ),\n );\n readonly #resizeSubject = new Subject<ResizeObserverEntry[]>();\n readonly #tracking = new Map<Element, Observable<ResizeObserverEntry>>();\n readonly #window = inject(SkyAppWindowRef);\n\n constructor() {\n this.#expectWindowError();\n // Because the resize observer is a native browser API, it does not shut down\n // synchronously when the service is destroyed. Leave the error handling\n // accommodation in place until the application is destroyed. This also works\n // for the test runner.\n inject(ApplicationRef).onDestroy(() => this.#resetWindowError());\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#resizeObserver.disconnect();\n }\n\n /**\n * Create rxjs observable to get size changes for an element ref.\n */\n public observe(element: ElementRef): Observable<ResizeObserverEntry> {\n const checkTracking = this.#tracking.has(element.nativeElement);\n\n if (!checkTracking) {\n this.#tracking.set(\n element.nativeElement,\n new Observable<ResizeObserverEntry[]>((observer) => {\n const subscription = this.#resizeSubject.subscribe(observer);\n this.#resizeObserver?.observe(element.nativeElement);\n return (): void => {\n this.#resizeObserver?.unobserve(element.nativeElement);\n subscription.unsubscribe();\n this.#tracking.delete(element.nativeElement);\n };\n }).pipe(\n filter(Boolean),\n filter((entries) =>\n entries.some((entry) => entry.target === element.nativeElement),\n ),\n map(\n (entries) =>\n entries.find(\n (entry) => entry.target === element.nativeElement,\n ) as ResizeObserverEntry,\n ),\n // Ignore subpixel changes.\n distinctUntilChanged(\n (a, b) =>\n Math.round(a.contentRect.width) ===\n Math.round(b.contentRect.width) &&\n Math.round(a.contentRect.height) ===\n Math.round(b.contentRect.height),\n ),\n // Emit the last value for late subscribers. Track references so it\n // un-observes when all subscribers are gone.\n shareReplay({ bufferSize: 1, refCount: true }),\n // Only emit prior to an animation frame to prevent layout thrashing.\n observeOn(animationFrameScheduler),\n takeUntil(this.#ngUnsubscribe),\n ),\n );\n }\n\n return this.#tracking.get(\n element.nativeElement,\n ) as Observable<ResizeObserverEntry>;\n }\n\n #expectWindowError(): void {\n if (!errorLogRegistered) {\n errorLogRegistered = true;\n // ResizeObserver throws an error when it is disconnected while it is\n // still observing an element. When an element is no longer observed, this\n // is not a concern.\n this.#zone.runOutsideAngular(() =>\n this.#window.nativeWindow.addEventListener('error', errorHandler),\n );\n }\n if (this.#window.nativeWindow.onerror !== onError) {\n originalOnError = this.#window.nativeWindow.onerror;\n this.#window.nativeWindow.onerror = onError;\n }\n }\n\n #resetWindowError(): void {\n this.#window.nativeWindow.removeEventListener('error', errorHandler);\n if (originalOnError) {\n this.#window.nativeWindow.onerror = originalOnError;\n originalOnError = undefined;\n }\n errorLogRegistered = false;\n }\n}\n","import {\n ElementRef,\n Injectable,\n OnDestroy,\n afterNextRender,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyResizeObserverService } from '../resize-observer/resize-observer.service';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\nconst QUERIES: [SkyBreakpoint, (width: number) => boolean][] = [\n ['xs', (width): boolean => width > 0 && width <= 767],\n ['sm', (width): boolean => width > 767 && width <= 991],\n ['md', (width): boolean => width > 991 && width <= 1199],\n ['lg', (width): boolean => width > 1199],\n];\n\n/**\n * Emits when the width of the host container changes.\n * @internal\n */\n@Injectable()\nexport class SkyContainerBreakpointObserver\n implements OnDestroy, SkyBreakpointObserver\n{\n readonly #elementRef = inject(ElementRef);\n readonly #resizeObserver = inject(SkyResizeObserverService);\n\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n #breakpoint: SkyBreakpoint | undefined;\n readonly #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n readonly #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n constructor() {\n this.#resizeObserver\n .observe(this.#elementRef)\n .pipe(takeUntilDestroyed())\n .subscribe((entry) => {\n this.#checkBreakpoint(entry.contentRect.width);\n });\n\n afterNextRender(() => {\n this.#checkWidth();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n public destroy(): void {\n this.#breakpointChange.complete();\n }\n\n #checkBreakpoint(width: number): void {\n for (const [breakpoint, check] of QUERIES) {\n if (breakpoint !== this.#breakpoint && check(width)) {\n this.#breakpoint = breakpoint;\n this.#notifyBreakpointChange(breakpoint);\n break;\n }\n }\n }\n\n #checkWidth(): void {\n const width =\n (this.#elementRef.nativeElement as HTMLElement).offsetWidth ?? 0;\n\n this.#checkBreakpoint(width);\n }\n\n #notifyBreakpointChange(breakpoint: SkyBreakpoint): void {\n this.#breakpointChange.next(breakpoint);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\nconst QUERIES = new Map<SkyBreakpoint, string>([\n ['xs', '(max-width: 767px)'],\n ['sm', '(min-width: 768px) and (max-width: 991px)'],\n ['md', '(min-width: 992px) and (max-width: 1199px)'],\n ['lg', '(min-width: 1200px)'],\n]);\n\n/**\n * Emits when the viewport width changes.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMediaBreakpointObserver\n implements OnDestroy, SkyBreakpointObserver\n{\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n readonly #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n readonly #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n #listeners = new Map<MediaQueryList, (evt: MediaQueryListEvent) => void>();\n\n constructor() {\n for (const [breakpoint, query] of QUERIES.entries()) {\n const mq = matchMedia(query);\n\n const listener = (evt: MediaQueryListEvent): void => {\n if (evt.matches) {\n this.#notifyBreakpointChange(breakpoint);\n }\n };\n\n mq.addEventListener('change', listener);\n\n if (mq.matches) {\n this.#notifyBreakpointChange(breakpoint);\n }\n\n this.#listeners.set(mq, listener);\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n public destroy(): void {\n this.#breakpointChange.complete();\n\n for (const [query, listener] of this.#listeners.entries()) {\n query.removeEventListener('change', listener);\n }\n\n this.#listeners.clear();\n }\n\n #notifyBreakpointChange(breakpoint: SkyBreakpoint): void {\n this.#breakpointChange.next(breakpoint);\n }\n}\n","import { Injectable, NgZone, OnDestroy, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { Observable, Subscription, map } from 'rxjs';\n\nimport { SkyBreakpoint } from '../breakpoint-observer/breakpoint';\nimport { toSkyMediaBreakpoints } from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpointObserver } from '../breakpoint-observer/media-breakpoint-observer';\n\nimport { SkyMediaBreakpoints } from './media-breakpoints';\nimport { SkyMediaQueryListener } from './media-query-listener';\n\nconst DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;\n\n/**\n * Utility used to subscribe to viewport and container breakpoint changes.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMediaQueryService implements OnDestroy {\n readonly #breakpointObserver = inject(SkyMediaBreakpointObserver);\n\n /**\n * Emits when the breakpoint changes.\n */\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointObserver.breakpointChange;\n }\n\n /**\n * The size for the `xs` breakpoint.\n * @default \"(max-width: 767px)\"\n */\n public static xs = '(max-width: 767px)';\n\n /**\n * The size for the `sm` breakpoint.\n * @default \"(min-width: 768px) and (max-width: 991px)\"\n */\n public static sm = '(min-width: 768px) and (max-width: 991px)';\n\n /**\n * The size for the `md` breakpoint.\n * @default \"(min-width: 992px) and (max-width: 1199px)\"\n */\n public static md = '(min-width: 992px) and (max-width: 1199px)';\n\n /**\n * The size for the `lg` breakpoint.\n * @default \"(min-width: 1200px)\"\n */\n public static lg = '(min-width: 1200px)';\n\n /**\n * Returns the current breakpoint.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public get current(): SkyMediaBreakpoints {\n return this.#currentBreakpoint();\n }\n\n #currentBreakpoint = toSignal(\n this.#breakpointObserver.breakpointChange.pipe(\n map((breakpoint) => toSkyMediaBreakpoints(breakpoint)),\n ),\n {\n initialValue: DEFAULT_BREAKPOINT,\n },\n );\n\n // Keep NgZone as a constructor param so that consumer mocks don't encounter typing errors.\n constructor(_zone?: NgZone) {}\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n /**\n * @internal\n */\n public destroy(): void {\n this.#breakpointObserver.destroy();\n }\n\n /**\n * Subscribes to screen size changes.\n * @param listener Specifies a function that is called when breakpoints change.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.#breakpointObserver.breakpointChange.subscribe({\n next: (breakpoint: SkyBreakpoint) => {\n listener(toSkyMediaBreakpoints(breakpoint));\n },\n });\n }\n}\n","import { Provider, Type, inject } from '@angular/core';\n\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyBreakpointObserver } from './breakpoint-observer';\nimport { SKY_BREAKPOINT_OBSERVER } from './breakpoint-observer.token';\nimport { SkyMediaBreakpointObserver } from './media-breakpoint-observer';\n\n/**\n * Overrides the default media breakpoint observer with the given observer.\n * @internal\n */\nexport function provideSkyBreakpointObserver(\n observer: Type<SkyBreakpointObserver>,\n): Provider[] {\n return [\n SkyMediaQueryService,\n observer,\n {\n provide: SkyMediaBreakpointObserver,\n useFactory(): SkyBreakpointObserver {\n return (\n // Yield to the injection token, if it's defined.\n inject(SKY_BREAKPOINT_OBSERVER, { optional: true }) ??\n inject(observer)\n );\n },\n },\n ];\n}\n","import { Directive, ElementRef, Injector, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { SkyCoreAdapterService } from '../adapter-service/adapter.service';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyContainerBreakpointObserver } from './container-breakpoint-observer';\nimport { provideSkyBreakpointObserver } from './provide-breakpoint-observer';\n\n/**\n * Overrides the `SkyMediaQueryService` to emit breakpoint changes when the host\n * container is resized. This directive also adds SKY UX CSS classes to the\n * host element to allow for responsive styles.\n */\n@Directive({\n exportAs: 'skyResponsiveHost',\n providers: [provideSkyBreakpointObserver(SkyContainerBreakpointObserver)],\n selector: '[skyResponsiveHost]',\n standalone: true,\n})\nexport class SkyResponsiveHostDirective {\n readonly #injector = inject(Injector);\n readonly #mediaSvc = inject(SkyMediaQueryService);\n\n /**\n * Emits when the breakpoint changes.\n */\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#mediaSvc.breakpointChange;\n }\n\n /**\n * The injector of the responsive host. Useful when displaying child components\n * via `ngTemplateOutlet`.\n * @example```\n * <my-container #responsiveHost=\"skyResponsiveHost\">\n * <ng-container\n * [ngTemplateOutlet]=\"myTemplate\"\n * [ngTemplateOutletInjector]=\"responsiveHost.injector\"\n * />\n * </my-container>\n * ```\n */\n public get injector(): Injector {\n return this.#injector;\n }\n\n constructor() {\n const adapter = inject(SkyCoreAdapterService);\n const elementRef = inject(ElementRef);\n\n this.breakpointChange.subscribe((breakpoint) => {\n adapter.setResponsiveContainerClass(elementRef, breakpoint);\n });\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyMediaQueryService` no longer needs the `SkyMediaQueryModule`.\n * The `SkyMediaQueryModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyMediaQueryModule {}\n","/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-core' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_numeric_billions_symbol: { message: 'B' },\n skyux_numeric_millions_symbol: { message: 'M' },\n skyux_numeric_thousands_symbol: { message: 'K' },\n skyux_numeric_trillions_symbol: { message: 'T' },\n },\n 'FR-CA': {\n skyux_numeric_billions_symbol: { message: 'G' },\n skyux_numeric_millions_symbol: { message: 'M' },\n skyux_numeric_thousands_symbol: { message: 'K' },\n skyux_numeric_trillions_symbol: { message: 'T' },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyCoreResourcesModule {}\n","import { SkyAppFormat } from '../format/app-format';\nimport { SkyLogService } from '../log/log.service';\n\n/**\n * Provides arguments for the number to format.\n */\nexport interface SkyNumericOptions {\n /**\n * Specifies the maximum number of digits after the decimal separator.\n */\n digits?: number;\n\n /**\n * Specifies how to format the number. Options are `currency` or `number`.\n */\n format?: string;\n\n /**\n * Specifies the format of the currency.\n */\n currencySign?: 'accounting' | 'standard';\n\n /**\n * Specifies the display of the currency. Defaults to 'symbol'.\n */\n currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name';\n\n /**\n * Specifies the ISO4217 currency code to use for currency formatting.\n */\n iso?: string;\n\n /**\n * Specifies the locale code to use when formatting.\n */\n locale?: string;\n\n /**\n * Specifies the minimum number of digits after the decimal separator. This property only applies\n * when the `truncate` property is set to `false`. If `digits` specifies a maximum number of\n * digits, then `minDigits` must be less than that value.\n */\n minDigits?: number;\n\n /**\n * Indicates whether to shorten numbers to rounded numbers and abbreviation characters\n * such as K for thousands, M for millions, B for billions, and T for trillions.\n */\n truncate?: boolean;\n\n /**\n * Specifies the minimum value at which numbers are shortened to rounded numbers and abbreviation characters. Values less than `1000` are not truncated.\n */\n truncateAfter?: number;\n}\n\n/**\n * Provides arguments for the number to format.\n * @deprecated Use the `SkyNumericOptions` interface instead.\n * @internal\n */\nexport class NumericOptions implements SkyNumericOptions {\n public digits?: number = 1;\n\n public format?: string = 'number';\n\n public currencySign?: 'accounting' | 'standard' = 'standard';\n\n public currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name';\n\n public iso?: string = 'USD';\n\n public locale?: string;\n\n public minDigits?: number;\n\n public truncate?: boolean = true;\n\n public truncateAfter?: number = 1000;\n\n constructor() {\n const logService = new SkyLogService(new SkyAppFormat());\n\n logService.deprecated('NumericOptions', {\n deprecationMajorVersion: 7,\n moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/numeric',\n replacementRecommendation:\n 'Use the `SkyNumericOptions` interface instead.',\n });\n }\n}\n","/* eslint-disable eqeqeq */\n// This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old\n// behavior of using the `Intl` API for formatting numbers rather than having to register every\n// supported locale.\n// https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/number_pipe.ts\nimport { SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';\n\nfunction isNumeric(value: any): boolean {\n return !isNaN(value - parseFloat(value));\n}\n\nfunction parseIntAutoRadix(text: string): number {\n const result: number = parseInt(text, 10);\n\n /* istanbul ignore next */\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n\n return result;\n}\n\nexport class SkyNumberFormatUtility {\n private static _NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\n\n public static formatNumber(\n locale: string,\n value: number | string,\n style: SkyIntlNumberFormatStyle,\n digits?: string | null,\n currency: string | null = null,\n currencyDisplay: 'code' | 'symbol' | 'narrowSymbol' | 'name' = 'code',\n currencySign?: 'accounting' | 'standard',\n ): string | null {\n if (value == null) {\n return null;\n }\n\n // Convert strings to numbers\n value = typeof value === 'string' && isNumeric(value) ? +value : value;\n if (typeof value !== 'number') {\n throw Error(`SkyInvalidPipeArgument: '${value}'`);\n }\n\n let minInt: number | undefined = undefined;\n let minFraction: number | undefined = undefined;\n let maxFraction: number | undefined = undefined;\n if (style !== SkyIntlNumberFormatStyle.Currency) {\n // rely on Intl default for currency\n minInt = 1;\n minFraction = 0;\n maxFraction = 3;\n }\n\n if (digits) {\n const parts = digits.match(this._NUMBER_FORMAT_REGEXP);\n\n if (parts === null) {\n throw new Error(`${digits} is not a valid digit info for number pipes`);\n }\n\n /* istanbul ignore else */\n if (parts[1] != null) {\n // min integer digits\n minInt = parseIntAutoRadix(parts[1]);\n }\n\n /* istanbul ignore else */\n if (parts[3] != null) {\n // min fraction digits\n minFraction = parseIntAutoRadix(parts[3]);\n }\n\n /* istanbul ignore else */\n if (parts[5] != null) {\n // max fraction digits\n maxFraction = parseIntAutoRadix(parts[5]);\n }\n }\n\n return SkyIntlNumberFormatter.format(value as number, locale, style, {\n minimumIntegerDigits: minInt,\n minimumFractionDigits: minFraction,\n maximumFractionDigits: maxFraction,\n currency: currency,\n currencyDisplay: currencyDisplay,\n currencySign: currencySign,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SkyIntlNumberFormatStyle, SkyLibResourcesService } from '@skyux/i18n';\n\nimport { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';\n\nimport { SkyNumericSymbol } from './numeric-symbol';\nimport { SkyNumericOptions } from './numeric.options';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyNumericService {\n /**\n * The browser's current locale.\n * @internal\n */\n public currentLocale = 'en-US';\n\n /**\n * @internal\n */\n public shortSymbol = '';\n\n #resourcesSvc: SkyLibResourcesService;\n\n #symbolIndex: SkyNumericSymbol[];\n\n constructor(resourcesSvc: SkyLibResourcesService) {\n this.#resourcesSvc = resourcesSvc;\n\n this.#symbolIndex = [\n { value: 1e12, label: this.#getSymbol('skyux_numeric_trillions_symbol') },\n { value: 1e9, label: this.#getSymbol('skyux_numeric_billions_symbol') },\n { value: 1e6, label: this.#getSymbol('skyux_numeric_millions_symbol') },\n { value: 1e3, label: this.#getSymbol('skyux_numeric_thousands_symbol') },\n ];\n }\n\n /**\n * Formats a number based on the provided options.\n * @param value The number to format.\n * @param options Format options.\n */\n public formatNumber(\n value: number | undefined | null,\n options: SkyNumericOptions,\n ): string {\n if (value === undefined || value === null || isNaN(value)) {\n return '';\n }\n\n const numericOptions: SkyNumericOptions = {\n digits: 0,\n format: 'number',\n currencySign: 'standard',\n iso: 'USD',\n truncateAfter: 1000,\n ...options,\n };\n\n const decimalPlaceRegExp = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n const locale = numericOptions.locale || this.currentLocale;\n const digits = numericOptions.digits || 0;\n\n // Get the symbol for the number after rounding, since rounding could push the number\n // into a different symbol range.\n let roundedNumber = this.#roundNumber(value, digits);\n const roundedNumberAbs = Math.abs(roundedNumber);\n\n let suffix = '';\n\n for (let i = 0; i < this.#symbolIndex.length; i++) {\n let symbol = this.#symbolIndex[i];\n\n if (\n numericOptions.truncate &&\n numericOptions.truncateAfter !== undefined &&\n roundedNumberAbs >= numericOptions.truncateAfter &&\n roundedNumberAbs >= symbol.value\n ) {\n roundedNumber = this.#roundNumber(value / symbol.value, digits);\n\n if (Math.abs(roundedNumber) === 1000 && i > 0) {\n // Rounding caused the number to cross into the range of the next symbol.\n symbol = this.#symbolIndex[i - 1];\n roundedNumber /= 1000;\n }\n\n suffix = symbol.label;\n\n break;\n }\n }\n\n let output: string =\n roundedNumber.toString().replace(decimalPlaceRegExp, '$1') + suffix;\n\n this.#storeShortenSymbol(output);\n\n let digitsFormatted: string | undefined;\n let isDecimal = false;\n\n // Checks the string entered for format. Using toLowerCase to ignore case.\n switch (numericOptions.format?.toLowerCase()) {\n // In a case where a decimal value was not shortened and\n // the digit input is 2 or higher, it forces 2 digits.\n // For example, this prevents a value like $15.50 from displaying as $15.5.\n // Note: This will need to be reviewed if we support currencies with\n // three decimal digits.\n case 'currency':\n isDecimal = value % 1 !== 0;\n\n if (numericOptions.minDigits) {\n digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;\n } else if (isDecimal && digits >= 2) {\n digitsFormatted = `1.2-${digits}`;\n } else {\n digitsFormatted = `1.0-${digits}`;\n }\n\n output = SkyNumberFormatUtility.formatNumber(\n locale,\n parseFloat(output),\n SkyIntlNumberFormatStyle.Currency,\n digitsFormatted,\n numericOptions.iso,\n numericOptions.currencyDisplay ?? 'symbol',\n numericOptions.currencySign,\n ) as string;\n // ^^^^^^ Result can't be null since the sanitized input is always a number.\n break;\n\n // The following is a catch-all to ensure that if\n // anything but currency (or a future option) are entered,\n // it will be treated like a number.\n default:\n // Ensures localization of the number to ensure comma and\n // decimal separator\n if (numericOptions.minDigits) {\n digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;\n } else if (numericOptions.truncate) {\n digitsFormatted = `1.0-${digits}`;\n } else {\n digitsFormatted = `1.${digits}-${digits}`;\n }\n\n output = SkyNumberFormatUtility.formatNumber(\n locale,\n parseFloat(output),\n SkyIntlNumberFormatStyle.Decimal,\n digitsFormatted,\n ) as string;\n // ^^^^^^ Result can't be null since the sanitized input is always a number.\n break;\n }\n\n if (numericOptions.truncate) {\n output = this.#replaceShortenSymbol(output);\n }\n\n return output;\n }\n\n /**\n * Rounds a given number\n *\n * JS's limitation - numbers bigger than Number.MIN_SAFE_INTEGER or Number.MAX_SAFE_INTEGER\n * are not guaranteed to be represented or rounded correctly\n * @param value - value to round\n * @param precision - what precision to round with, defaults to 0 decimal places\n */\n #roundNumber(value: number, precision: number): number {\n if (precision < 0) {\n throw new Error('SkyInvalidArgument: precision must be >= 0');\n }\n\n /* Sanity check - ignoring coverage but should not ignore if we make this method public */\n /* istanbul ignore next */\n if (isNaN(value) || value === null) {\n return 0;\n }\n\n const scaledValue: number = this.#scaleNumberByPowerOfTen(\n value,\n precision,\n true,\n );\n const scaledRoundedValue: number = Math.round(scaledValue);\n const unscaledRoundedValue: number = this.#scaleNumberByPowerOfTen(\n scaledRoundedValue,\n precision,\n false,\n );\n\n return unscaledRoundedValue;\n }\n\n /**\n * Scales a given number by a power of 10\n * @param value - value to scale\n * @param scalar - 10^scalar\n * @param scaleUp - whether to increase or decrease the value\n */\n #scaleNumberByPowerOfTen(\n value: number,\n scalar: number,\n scaleUp: boolean,\n ): number {\n const valueStr: string = value.toString().toLowerCase();\n const isExponentFormat: boolean = valueStr.includes('e');\n\n if (isExponentFormat) {\n const [base, exp] = valueStr.split('e');\n const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;\n return Number(`${base}e${newExp}`);\n } else {\n const e = scaleUp ? 'e' : 'e-';\n return Number(`${value}${e}${scalar}`);\n }\n }\n\n /**\n * Stores the symbol added from shortening to reapply later.\n * @param value The string to derive the shorten symbol from.\n */\n #storeShortenSymbol(value: string): void {\n const symbols: string[] = this.#symbolIndex.map((s) => s.label);\n const regexp = new RegExp(symbols.join('|'), 'ig');\n const match = value.match(regexp);\n this.shortSymbol = match ? match.toString() : '';\n }\n\n /**\n * Must have previously called storeShortenSymbol to have something to replace.\n * Finds the last number in the formatted number, gets the index of the position\n * after that character and re-inserts the symbol.\n * Works regardless of currency symbol position.\n * @param value The string to modify.\n */\n #replaceShortenSymbol(value: string): string {\n const result = /(\\d)(?!.*\\d)/g.exec(value);\n /*istanbul ignore else*/\n if (result) {\n const pos = result.index + result.length;\n const output =\n value.substring(0, pos) + this.shortSymbol + value.substring(pos);\n\n return output;\n } else {\n return value;\n }\n }\n\n #getSymbol(key: string): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.#resourcesSvc.getStringForLocale({ locale: 'en_US' }, key);\n }\n}\n","import {\n ChangeDetectorRef,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { SkyAppLocaleProvider } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NumericOptions, SkyNumericOptions } from './numeric.options';\nimport { SkyNumericService } from './numeric.service';\n\n/**\n * Shortens numbers to rounded numbers and abbreviation characters such as K for thousands,\n * M for millions, B for billions, and T for trillions. The pipe also formats for currency.\n * Be sure you have a space after the two curly brackets opening the pipe and\n * a space before the two curly brackets closing the pipe or it will not work.\n */\n@Pipe({\n name: 'skyNumeric',\n pure: false,\n standalone: false,\n})\nexport class SkyNumericPipe implements PipeTransform, OnDestroy {\n #cacheKey: string | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n #formattedValue: string | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #numericSvc: SkyNumericService;\n\n #providerLocale: string | undefined;\n\n constructor(\n localeProvider: SkyAppLocaleProvider,\n numericSvc: SkyNumericService,\n changeDetector: ChangeDetectorRef,\n ) {\n this.#numericSvc = numericSvc;\n this.#changeDetector = changeDetector;\n\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#providerLocale = localeInfo.locale;\n numericSvc.currentLocale = this.#providerLocale;\n this.#changeDetector.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Formats a number based on the provided options.\n */\n public transform(\n value: number | undefined | null,\n config?: SkyNumericOptions,\n ): string {\n if (value === undefined || value === null || isNaN(value)) {\n return '';\n }\n\n const newCacheKey =\n (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +\n `${value}_${config?.locale || this.#providerLocale}`;\n\n /* If the value and locale are the same as the last transform then return the previous value\n instead of reformatting. */\n if (this.#formattedValue && this.#cacheKey === newCacheKey) {\n return this.#formattedValue;\n }\n\n const options = new NumericOptions();\n\n // The default number of digits is `1`. When truncate is disabled, set digits\n // to `0` to avoid the unnecessary addition of `.0` at the end of the formatted number.\n if (config && config.truncate === false && config.digits === undefined) {\n options.digits = 0;\n }\n\n // If the minimum digits is less than the set maximum digits then throw an error\n if (\n config &&\n config.minDigits &&\n config.digits &&\n config.minDigits > config.digits\n ) {\n throw new Error(\n 'The `digits` property must be greater than or equal to the `minDigits` property',\n );\n\n // If there is a minimum digits given but not a maximum then default the maximum to the minimum\n } else if (config && config.minDigits && !config.digits) {\n options.digits = config.minDigits;\n }\n\n Object.assign(options, config);\n\n // Assign properties for proper result caching.\n this.#cacheKey = newCacheKey;\n\n this.#formattedValue = this.#numericSvc.formatNumber(value, options);\n return this.#formattedValue;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';\n\nimport { SkyNumericPipe } from './numeric.pipe';\n\n@NgModule({\n declarations: [SkyNumericPipe],\n providers: [SkyNumericPipe],\n imports: [SkyCoreResourcesModule],\n exports: [SkyNumericPipe],\n})\nexport class SkyNumericModule {}\n","import { ComponentRef, StaticProvider, TemplateRef, Type } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayComponent } from './overlay.component';\n\n/**\n * Represents a new overlay instance. It is used to manage the \"closed\" state of the overlay,\n * and access any public members on the appended content component instance.\n */\nexport class SkyOverlayInstance {\n /**\n * Emits when the overlay is clicked (but not its content).\n */\n public get backdropClick(): Observable<void> {\n return this.#backdropClickObs;\n }\n\n /**\n * Emits after the overlay is closed.\n */\n public get closed(): Observable<void> {\n return this.#closedObs;\n }\n\n public id: string;\n\n #backdropClick: Subject<void>;\n\n #backdropClickObs: Observable<void>;\n\n #closed: Subject<void>;\n\n #closedObs: Observable<void>;\n\n constructor(\n /**\n * The configuration for the overlay.\n */\n public readonly config: SkyOverlayConfig,\n public readonly componentRef: ComponentRef<SkyOverlayComponent>,\n ) {\n this.id = this.componentRef.instance.id;\n\n this.componentRef.instance.closed.subscribe(() => {\n this.#closed.next();\n this.#closed.complete();\n this.#backdropClick.complete();\n });\n\n this.componentRef.instance.backdropClick.subscribe(() => {\n this.#backdropClick.next();\n });\n\n this.#backdropClick = new Subject<void>();\n this.#closed = new Subject<void>();\n\n this.#backdropClickObs = this.#backdropClick.asObservable();\n this.#closedObs = this.#closed.asObservable();\n }\n\n /**\n * Creates and attaches a component to the overlay.\n * @param component The component to attach.\n * @param providers Custom providers to apply to the component.\n */\n public attachComponent<C>(\n component: Type<C>,\n providers?: StaticProvider[],\n ): C {\n const componentRef = this.componentRef.instance.attachComponent(\n component,\n providers,\n );\n return componentRef.instance;\n }\n\n /**\n * Attaches a `TemplateRef` to the overlay.\n * @param templateRef The `TemplateRef` to attach.\n * @param context The context to provide to the template.\n */\n public attachTemplate<T>(templateRef: TemplateRef<T>, context?: T): void {\n this.componentRef.instance.attachTemplate(templateRef, context);\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyOverlayModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkyOverlayModule {}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyOverlayAdapterService {\n #renderer: Renderer2;\n\n #styleElement: HTMLStyleElement | undefined;\n\n constructor(rendererFactory: RendererFactory2) {\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n public restrictBodyScroll(): void {\n // Create a style element to avoid overwriting any existing inline body styles.\n const styleElement = this.#renderer.createElement('style');\n const textNode = this.#renderer.createText('body { overflow: hidden }');\n\n // Apply a `data-` attribute to make unit testing easier.\n this.#renderer.setAttribute(\n styleElement,\n 'data-test-selector',\n 'sky-overlay-restrict-scroll-styles',\n );\n\n this.#renderer.appendChild(styleElement, textNode);\n this.#renderer.appendChild(document.head, styleElement);\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#styleElement = styleElement;\n }\n\n public releaseBodyScroll(): void {\n this.#destroyStyleElement();\n }\n\n #destroyStyleElement(): void {\n /* istanbul ignore else */\n if (\n this.#styleElement &&\n this.#styleElement.parentElement === document.head\n ) {\n this.#renderer.removeChild(document.head, this.#styleElement);\n }\n }\n\n public addAriaHiddenToSiblings(\n overlayElementRef: ElementRef,\n ): Map<Element, string | null> {\n const overlayElement = overlayElementRef.nativeElement;\n const hostSiblings = overlayElement.parentElement.children;\n\n const siblingAriaHiddenCache = new Map<Element, string | null>();\n\n for (const element of hostSiblings) {\n if (\n element !== overlayElement &&\n !element.hasAttribute('aria-live') &&\n element.nodeName.toLowerCase() !== 'script' &&\n element.nodeName.toLowerCase() !== 'style'\n ) {\n // preserve previous aria-hidden status of elements outside of modal host\n siblingAriaHiddenCache.set(\n element,\n element.getAttribute('aria-hidden'),\n );\n element.setAttribute('aria-hidden', 'true');\n }\n }\n\n return siblingAriaHiddenCache;\n }\n\n public restoreAriaHiddenForSiblings(\n siblingAriaHiddenCache: Map<Element, string | null>,\n ): void {\n siblingAriaHiddenCache.forEach((previousValue, element) => {\n // if element had aria-hidden status prior, restore status\n if (element.parentElement) {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n siblingAriaHiddenCache.clear();\n }\n}\n","import { SkyOverlayConfig } from './overlay-config';\n\n/**\n * Contextual information for each overlay.\n * @internal\n */\nexport class SkyOverlayContext {\n constructor(public readonly config: SkyOverlayConfig) {}\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyStackingContext } from './stacking-context';\n\n/**\n * @internal\n */\nexport const SKY_STACKING_CONTEXT = new InjectionToken<SkyStackingContext>(\n 'SkyStackingContext',\n);\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n HostBinding,\n OnDestroy,\n OnInit,\n StaticProvider,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n createEnvironmentInjector,\n inject,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\n\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n Subject,\n Subscription,\n fromEvent,\n} from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyCoreAdapterService } from '../adapter-service/adapter.service';\nimport { SkyIdService } from '../id/id.service';\nimport { SKY_STACKING_CONTEXT } from '../stacking-context/stacking-context-token';\n\nimport { SkyOverlayAdapterService } from './overlay-adapter.service';\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayContext } from './overlay-context';\nimport { SkyOverlayPosition } from './overlay-position';\n\nconst POSITION_DEFAULT: SkyOverlayPosition = 'fixed';\n\n/**\n * Omnibar is 1000.\n * See: https://github.com/blackbaud/auth-client/blob/master/src/omnibar/omnibar.ts#L139\n * ---\n * Modals start their z-indexes at 1040. However, each modal's z-index is a multiple of 10, so it\n * will be difficult to reliably predict a z-index that will always appear above all other\n * layers. Starting the z-index for overlays at a number much greater than modals will accommodate\n * the most reasonable of scenarios.\n * See: https://github.com/blackbaud/skyux-modals/blob/master/src/app/public/modules/modal/modal-host.service.ts#L22\n * (NOTE: It should be noted that modals do not use the overlay service, which is something we\n * should do in the near future to make sure z-indexes are predictable across all component\n * libraries.)\n */\nlet uniqueZIndex = 5000;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class SkyOverlayComponent implements OnInit, OnDestroy {\n public wrapperClass = '';\n\n public get backdropClick(): Observable<void> {\n return this.#backdropClickObs;\n }\n\n public get closed(): Observable<void> {\n return this.#closedObs;\n }\n\n public enablePointerEvents = false;\n\n @HostBinding('id')\n public id: string;\n\n public showBackdrop = false;\n\n public zIndex = `${++uniqueZIndex}`;\n\n protected clipPath$ = new ReplaySubject<string | undefined>(1);\n\n protected position = POSITION_DEFAULT;\n\n @ViewChild('overlayContentRef', {\n read: ElementRef,\n static: true,\n })\n public overlayContentRef: ElementRef | undefined;\n\n @ViewChild('overlayRef', {\n read: ElementRef,\n static: true,\n })\n public overlayRef: ElementRef | undefined;\n\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n public targetRef: ViewContainerRef | undefined;\n\n #backdropClick: Subject<void>;\n\n #backdropClickObs: Observable<void>;\n\n #closed: Subject<void>;\n\n #closedObs: Observable<void>;\n\n #ngUnsubscribe = new Subject<void>();\n\n #routerSubscription: Subscription | undefined;\n\n #siblingAriaHiddenCache = new Map<Element, string | null>();\n\n readonly #adapter = inject(SkyOverlayAdapterService);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #context = inject(SkyOverlayContext);\n readonly #coreAdapter = inject(SkyCoreAdapterService);\n readonly #elementRef = inject(ElementRef);\n readonly #environmentInjector = inject(EnvironmentInjector);\n readonly #idSvc = inject(SkyIdService);\n readonly #router = inject(Router, { optional: true });\n\n constructor() {\n this.id = this.#idSvc.generateId();\n\n this.#backdropClick = new Subject<void>();\n this.#closed = new Subject<void>();\n\n this.#backdropClickObs = this.#backdropClick.asObservable();\n this.#closedObs = this.#closed.asObservable();\n }\n\n public ngOnInit(): void {\n this.#applyConfig(this.#context.config);\n\n setTimeout(() => {\n this.#addBackdropClickListener();\n });\n\n if (this.#context.config.closeOnNavigation) {\n this.#addRouteListener();\n }\n\n if (this.#context.config.hideOthersFromScreenReaders) {\n this.#siblingAriaHiddenCache = this.#adapter.addAriaHiddenToSiblings(\n this.#elementRef,\n );\n }\n }\n\n public ngOnDestroy(): void {\n this.#removeRouteListener();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#backdropClick.complete();\n\n this.#adapter.restoreAriaHiddenForSiblings(this.#siblingAriaHiddenCache);\n\n this.#closed.next();\n this.#closed.complete();\n }\n\n public attachComponent<C>(\n component: Type<C>,\n providers: StaticProvider[] = [],\n ): ComponentRef<C> {\n /*istanbul ignore if: untestable*/\n if (!this.targetRef) {\n throw new Error(\n '[SkyOverlayComponent] Could not attach the component because the target element could not be found.',\n );\n }\n\n this.targetRef.clear();\n\n const environmentInjector = createEnvironmentInjector(\n [\n {\n provide: SKY_STACKING_CONTEXT,\n useValue: {\n zIndex: new BehaviorSubject(parseInt(this.zIndex, 10))\n .asObservable()\n .pipe(takeUntil(this.#ngUnsubscribe)),\n },\n },\n ...providers,\n ],\n this.#environmentInjector,\n );\n\n const componentRef = this.targetRef.createComponent<C>(component, {\n environmentInjector,\n });\n\n // Run an initial change detection cycle after the component has been created.\n componentRef.changeDetectorRef.detectChanges();\n\n return componentRef;\n }\n\n public attachTemplate<T>(\n templateRef: TemplateRef<T>,\n context: T,\n ): EmbeddedViewRef<T> {\n /*istanbul ignore if: untestable*/\n if (!this.targetRef) {\n throw new Error(\n '[SkyOverlayComponent] Could not attach the template because the target element could not be found.',\n );\n }\n\n this.targetRef.clear();\n\n return this.targetRef.createEmbeddedView(templateRef, context, {\n injector: this.#environmentInjector,\n });\n }\n\n public updateClipPath(clipPath: string | undefined): void {\n this.clipPath$.next(clipPath);\n }\n\n #applyConfig(config: SkyOverlayConfig): void {\n this.wrapperClass = config.wrapperClass || '';\n this.showBackdrop = !!config.showBackdrop;\n this.enablePointerEvents = !!config.enablePointerEvents;\n this.position = config.position || POSITION_DEFAULT;\n this.#changeDetector.markForCheck();\n }\n\n #addBackdropClickListener(): void {\n fromEvent<MouseEvent>(window.document, 'click')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n if (event.target && this.overlayContentRef && this.overlayRef) {\n const isChild = this.overlayContentRef.nativeElement.contains(\n event.target,\n );\n\n const isAbove = this.#coreAdapter.isTargetAboveElement(\n event.target,\n this.overlayRef.nativeElement,\n );\n\n /* istanbul ignore else */\n if (!isChild && !isAbove) {\n this.#backdropClick.next();\n if (this.#context.config.enableClose) {\n this.#closed.next();\n }\n }\n }\n });\n }\n\n #addRouteListener(): void {\n /*istanbul ignore else*/\n if (this.#router) {\n this.#routerSubscription = this.#router.events.subscribe((event) => {\n /* istanbul ignore else */\n if (event instanceof NavigationStart) {\n this.#closed.next();\n }\n });\n }\n }\n\n #removeRouteListener(): void {\n if (this.#routerSubscription) {\n this.#routerSubscription.unsubscribe();\n this.#routerSubscription = undefined;\n }\n }\n}\n","<div\n #overlayRef\n [class]=\"'sky-overlay-position-' + position + ' ' + wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n>\n <div #overlayContentRef class=\"sky-overlay-content\">\n <ng-template #target />\n </div>\n @if (showBackdrop) {\n <div class=\"sky-overlay-backdrop\"></div>\n }\n</div>\n","import {\n ApplicationRef,\n ComponentRef,\n EnvironmentInjector,\n Injectable,\n inject,\n} from '@angular/core';\n\nimport {\n SkyDynamicComponentLegacyService,\n SkyDynamicComponentService,\n} from '../dynamic-component/dynamic-component.service';\n\nimport { SkyOverlayAdapterService } from './overlay-adapter.service';\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayContext } from './overlay-context';\nimport { SkyOverlayInstance } from './overlay-instance';\nimport { SkyOverlayComponent } from './overlay.component';\n\n/**\n * This service is used to create new overlays.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyOverlayService {\n private static overlays: SkyOverlayInstance[] = [];\n\n readonly #adapter = inject(SkyOverlayAdapterService);\n readonly #applicationRef = inject(ApplicationRef);\n readonly #dynamicComponentSvc: SkyDynamicComponentService;\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor(dynamicComponentSvc: SkyDynamicComponentService) {\n this.#dynamicComponentSvc = dynamicComponentSvc;\n }\n\n /**\n * Creates an empty overlay. Use the returned `SkyOverlayInstance` to append content.\n * @param config Configuration for the overlay.\n */\n public create(config?: SkyOverlayConfig): SkyOverlayInstance {\n const settings = this.#prepareConfig(config);\n\n if (settings.enableScroll === false) {\n this.#adapter.restrictBodyScroll();\n }\n\n const componentRef = this.#createOverlay(settings);\n const instance = new SkyOverlayInstance(settings, componentRef);\n\n instance.closed.subscribe(() => {\n // Only execute the service's close method if the instance still exists.\n // This is needed to address a race condition if the deprecated instance.close method is used instead.\n if (SkyOverlayService.overlays.indexOf(instance) > -1) {\n this.close(instance);\n }\n });\n\n SkyOverlayService.overlays.push(instance);\n\n return instance;\n }\n\n /**\n * Closes (and destroys) an overlay instance.\n * @param instance The instance to close.\n */\n public close(instance: SkyOverlayInstance): void {\n this.#destroyOverlay(instance);\n this.#applicationRef.detachView(instance.componentRef.hostView);\n instance.componentRef.destroy();\n\n // In some cases, Angular keeps dynamically-generated component's nodes in the DOM during\n // unit tests. This can make querying difficult because the older DOM nodes still exist and\n // produce inconsistent results.\n // Angular Material's overlay appears to do the same thing:\n // https://github.com/angular/components/blob/master/src/cdk/portal/dom-portal-outlet.ts#L143-L145\n // (Ignoring coverage since this branch will only be hit by consumer unit tests.)\n const componentElement = instance.componentRef.location.nativeElement;\n /* istanbul ignore if */\n if (componentElement.parentNode !== null) {\n componentElement.parentNode.removeChild(componentElement);\n }\n }\n\n /**\n * Closes all overlay instances.\n */\n public closeAll(): void {\n // The `close` event handler for each instance alters the array's length asynchronously,\n // so the only \"safe\" index to call is zero.\n while (SkyOverlayService.overlays.length > 0) {\n this.close(SkyOverlayService.overlays[0]);\n }\n }\n\n #createOverlay(config: SkyOverlayConfig): ComponentRef<SkyOverlayComponent> {\n return this.#dynamicComponentSvc.createComponent(SkyOverlayComponent, {\n environmentInjector: this.#environmentInjector,\n providers: [\n {\n provide: SkyOverlayContext,\n useValue: new SkyOverlayContext(config),\n },\n ],\n });\n }\n\n #prepareConfig(config: SkyOverlayConfig = {}): SkyOverlayConfig {\n const defaults: SkyOverlayConfig = {\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: false,\n enableScroll: true,\n showBackdrop: false,\n wrapperClass: '',\n };\n\n return { ...defaults, ...config };\n }\n\n #destroyOverlay(instance: SkyOverlayInstance): void {\n SkyOverlayService.overlays.splice(\n SkyOverlayService.overlays.indexOf(instance),\n 1,\n );\n\n if (instance.config.enableScroll === false) {\n // Only release the body scroll if no other overlay wishes it to be disabled.\n const anotherOverlayDisablesScroll = SkyOverlayService.overlays.some(\n (o) => !o.config.enableScroll,\n );\n if (!anotherOverlayDisablesScroll) {\n this.#adapter.releaseBodyScroll();\n }\n }\n }\n}\n\n/**\n * This service is used to create new overlays.\n * @internal\n * @deprecated Use `SkyOverlayService` to open a standalone component instead.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyOverlayLegacyService extends SkyOverlayService {\n /* istanbul ignore next */\n constructor(dynamicComponentSvc: SkyDynamicComponentLegacyService) {\n super(dynamicComponentSvc);\n }\n}\n","import { OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { SkyAppLocaleProvider, SkyIntlNumberFormatStyle } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';\n\n@Pipe({\n name: 'skyPercent',\n pure: false,\n standalone: false,\n})\nexport class SkyPercentPipe implements OnDestroy, PipeTransform {\n public get defaultLocale(): string {\n return this.#defaultLocale;\n }\n\n #defaultFormat = '1.0-2';\n\n #defaultLocale = 'en-US';\n\n #format: string | undefined;\n\n #formattedValue = '';\n\n #locale: string | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #value: string | undefined;\n\n constructor(localeProvider: SkyAppLocaleProvider) {\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#defaultLocale = localeInfo.locale;\n this.#updateFormattedValue();\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public transform(value: string, format?: string, locale?: string): string {\n this.#value = value;\n this.#format = format;\n this.#locale = locale;\n\n this.#updateFormattedValue();\n\n return this.#formattedValue;\n }\n\n #updateFormattedValue(): void {\n const locale = this.#locale || this.#defaultLocale;\n const format = this.#format || this.#defaultFormat;\n\n this.#formattedValue = this.#value\n ? (SkyNumberFormatUtility.formatNumber(\n locale,\n this.#value,\n SkyIntlNumberFormatStyle.Percent,\n format,\n ) as string)\n : '';\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';\n\nimport { SkyPercentPipe } from './percent.pipe';\n\n@NgModule({\n declarations: [SkyPercentPipe],\n providers: [SkyPercentPipe],\n imports: [SkyCoreResourcesModule],\n exports: [SkyPercentPipe],\n})\nexport class SkyPercentPipeModule {}\n","import { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Observable, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyBreakpoint } from '../breakpoint-observer/breakpoint';\nimport { toSkyBreakpoint } from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\nimport { SkyMediaQueryListener } from '../media-query/media-query-listener';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyResizeObserverService } from './resize-observer.service';\n\nconst DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;\n\n/**\n * Acts like `SkyMediaQueryService` for a container element, emitting the same responsive breakpoints.\n * @deprecated Use the `SkyResponsiveHostDirective` instead.\n */\n@Injectable()\nexport class SkyResizeObserverMediaQueryService\n extends SkyMediaQueryService\n implements OnDestroy\n{\n /**\n * Emits when the breakpoint changes.\n */\n public override get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n /**\n * Returns the current breakpoint.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public override get current(): SkyMediaBreakpoints {\n return this.#currentBreakpoint;\n }\n\n #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n #breakpoints: {\n check: (width: number) => boolean;\n name: SkyMediaBreakpoints;\n }[] = [\n {\n check: (width: number): boolean => width > 0 && width <= 767,\n name: SkyMediaBreakpoints.xs,\n },\n {\n check: (width: number): boolean => width > 767 && width <= 991,\n name: SkyMediaBreakpoints.sm,\n },\n {\n check: (width: number): boolean => width > 991 && width <= 1199,\n name: SkyMediaBreakpoints.md,\n },\n {\n check: (width: number): boolean => width > 1199,\n name: SkyMediaBreakpoints.lg,\n },\n ];\n\n #currentBreakpoint: SkyMediaBreakpoints = DEFAULT_BREAKPOINT;\n\n #currentBreakpointObs = new ReplaySubject<SkyMediaBreakpoints>(1);\n\n #ngUnsubscribe = new Subject<void>();\n\n #resizeObserverSvc = inject(SkyResizeObserverService);\n\n #target: ElementRef | undefined;\n\n public override ngOnDestroy(): void {\n this.unobserve();\n\n this.#target = undefined;\n this.#currentBreakpointObs.complete();\n this.#breakpointChange.complete();\n }\n\n /**\n * @internal\n */\n public override destroy(): void {\n this.ngOnDestroy();\n }\n\n /**\n * Sets the container element to watch. The `SkyResizeObserverMediaQueryService` will only observe one element at a\n * time. Any previous subscriptions will be unsubscribed when a new element is observed.\n */\n public observe(\n element: ElementRef,\n options?: {\n updateResponsiveClasses?: boolean;\n },\n ): SkyResizeObserverMediaQueryService {\n if (this.#target) {\n if (this.#target === element) {\n return this;\n }\n\n this.unobserve();\n }\n\n this.#target = element;\n\n this.#checkWidth(element, options?.updateResponsiveClasses);\n\n this.#resizeObserverSvc\n .observe(element)\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n const breakpoint = this.#checkBreakpoint(value.contentRect.width);\n if (breakpoint) {\n this.#updateBreakpoint(breakpoint, options?.updateResponsiveClasses);\n }\n });\n return this;\n }\n\n /**\n * Stop watching the container element and remove any added classes.\n */\n public unobserve(): void {\n this.#removeResponsiveClasses();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Subscribes to element size changes that cross breakpoints.\n */\n public override subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.#currentBreakpointObs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n listener(value);\n });\n }\n\n #updateBreakpoint(\n breakpoint: SkyMediaBreakpoints,\n updateResponsiveClasses?: boolean,\n ): void {\n if (updateResponsiveClasses) {\n this.#updateResponsiveClasses(this.current, breakpoint);\n }\n\n if (this.current !== breakpoint) {\n this.#currentBreakpointObs.next(breakpoint);\n const breakpointType = toSkyBreakpoint(breakpoint);\n this.#breakpointChange.next(breakpointType);\n }\n this.#currentBreakpoint = breakpoint;\n }\n\n #updateResponsiveClasses(\n oldBreakpoint: SkyMediaBreakpoints,\n newBreakpoint: SkyMediaBreakpoints,\n ): void {\n const oldClass = this.#getClassForBreakpoint(oldBreakpoint);\n const newClass = this.#getClassForBreakpoint(newBreakpoint);\n\n const targetClassList = this.#target?.nativeElement?.classList;\n\n targetClassList?.remove(oldClass);\n targetClassList?.add(newClass);\n }\n\n #removeResponsiveClasses(): void {\n for (const breakpoint of Object.values(SkyMediaBreakpoints)) {\n if (typeof breakpoint === 'number') {\n const className = this.#getClassForBreakpoint(breakpoint);\n\n this.#target?.nativeElement?.classList?.remove(className);\n }\n }\n }\n\n #getClassForBreakpoint(breakpoint: SkyMediaBreakpoints): string {\n return `sky-responsive-container-${SkyMediaBreakpoints[breakpoint]}`;\n }\n\n #checkBreakpoint(width: number): SkyMediaBreakpoints | undefined {\n const breakpoint = this.#breakpoints.find((breakpoint) =>\n breakpoint.check(width),\n );\n\n return breakpoint ? breakpoint.name : undefined;\n }\n\n #checkWidth(el: ElementRef, updateResponsiveClasses?: boolean): void {\n const width = (el.nativeElement as HTMLElement).offsetWidth || 0;\n const breakpoint = this.#checkBreakpoint(width);\n\n if (breakpoint) {\n this.#updateBreakpoint(breakpoint, updateResponsiveClasses);\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n inject,\n} from '@angular/core';\n\nconst SCREEN_READER_LABELS_CONTAINER_ID = 'sky-screen-reader-labels-container';\n\n/**\n * Adds the element to a screen reader only section of the body.\n * This prevents components' DOM from including text only intended for screen readers.\n *\n * @internal\n */\n@Directive({\n selector: '[skyScreenReaderLabel]',\n standalone: true,\n})\nexport class SkyScreenReaderLabelDirective implements OnDestroy {\n public ngOnDestroy(): void {\n this.#removeLabelEl();\n }\n\n /**\n * Indicates if the label should be created in the DOM.\n * @default false\n */\n @Input()\n public set createLabel(value: boolean | undefined) {\n this.#_createLabel = value ?? false;\n this.#updateLabelEl();\n }\n\n public get createLabel(): boolean {\n return this.#_createLabel;\n }\n\n readonly #elementRef = inject(ElementRef);\n readonly #renderer = inject(Renderer2);\n #_createLabel = false;\n\n #updateLabelEl(): void {\n if (this.createLabel) {\n const containerEl = this.#getContainerEl() || this.#createContainerEl();\n\n this.#renderer.appendChild(containerEl, this.#elementRef.nativeElement);\n } else {\n this.#removeLabelEl();\n }\n }\n\n #getContainerEl(): HTMLElement | null {\n return document.getElementById(SCREEN_READER_LABELS_CONTAINER_ID);\n }\n\n #createContainerEl(): HTMLElement {\n const el = document.createElement('div');\n el.id = SCREEN_READER_LABELS_CONTAINER_ID;\n el.style.display = 'none';\n\n this.#renderer.appendChild(document.body, el);\n\n return el;\n }\n\n #removeLabelEl(): void {\n const containerEl = this.#getContainerEl();\n\n this.#elementRef.nativeElement.remove();\n\n if (containerEl && containerEl.childNodes.length === 0) {\n containerEl.remove();\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n inject,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\nimport { SkyScrollShadowEventArgs } from './scroll-shadow-event-args';\n\ninterface BoxShadowInfo {\n colorParts: string;\n lengths: string;\n opacity: number;\n}\n\n/**\n * Raises an event when the box shadow for a component's header or footer should be adjusted\n * based on the scroll position of the host element.\n * @internal\n */\n@Directive({\n standalone: true,\n selector: '[skyScrollShadow]',\n})\nexport class SkyScrollShadowDirective implements OnDestroy {\n @Input()\n public set skyScrollShadowEnabled(value: boolean) {\n this.#_enabled = value;\n\n if (value) {\n this.#initMutationObserver();\n } else {\n this.#emitShadow({\n bottomShadow: 'none',\n topShadow: 'none',\n });\n\n this.#destroyMutationObserver();\n }\n }\n\n public get skyScrollShadowEnabled(): boolean {\n return this.#_enabled;\n }\n\n @Output()\n public skyScrollShadow = new EventEmitter<SkyScrollShadowEventArgs>();\n\n #currentShadow: SkyScrollShadowEventArgs | undefined;\n #boxShadows: BoxShadowInfo[] | 'none' | undefined;\n\n #mutationObserver: MutationObserver | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n readonly #elRef = inject(ElementRef);\n readonly #mutationObserverSvc = inject(SkyMutationObserverService);\n readonly #ngZone = inject(NgZone);\n\n #_enabled = false;\n\n @HostListener('window:resize')\n public windowResize(): void {\n this.#checkForShadow();\n }\n\n @HostListener('scroll')\n public scroll(): void {\n this.#checkForShadow();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#destroyMutationObserver();\n }\n\n #initMutationObserver(): void {\n if (!this.#mutationObserver) {\n const el = this.#elRef.nativeElement;\n\n // MutationObserver is patched by Zone.js and therefore becomes part of the\n // Angular change detection cycle, but this can lead to infinite loops in some\n // scenarios. This will keep MutationObserver from triggering change detection.\n this.#ngZone.runOutsideAngular(() => {\n this.#mutationObserver = this.#mutationObserverSvc.create(() => {\n this.#checkForShadow();\n });\n\n this.#mutationObserver.observe(el, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n });\n }\n }\n\n #destroyMutationObserver(): void {\n if (this.#mutationObserver) {\n this.#mutationObserver.disconnect();\n this.#mutationObserver = undefined;\n }\n }\n\n #checkForShadow(): void {\n if (this.skyScrollShadowEnabled) {\n const el: Element = this.#elRef.nativeElement;\n\n const topShadow = this.#buildShadowStyle(el.scrollTop);\n\n const bottomShadow = this.#buildShadowStyle(\n el.scrollHeight - el.scrollTop - el.clientHeight,\n );\n\n this.#emitShadow({\n bottomShadow,\n topShadow,\n });\n }\n }\n\n #splitBoxShadowDetails(boxShadow: string): BoxShadowInfo | undefined {\n const colorRegex =\n /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)/;\n const match = boxShadow.match(colorRegex);\n\n if (match) {\n const colorParts = `${match[1]}, ${match[2]}, ${match[3]}`; // Extract RGB values as a comma-separated string\n const opacity = match[4] ? parseFloat(match[4]) : 1; // Use the captured opacity or default to 1\n const lengths = boxShadow.replace(match[0], '').trim(); // Remove the color from the rest\n\n return { colorParts, opacity, lengths };\n }\n\n /* istanbul ignore next */\n return;\n }\n\n #formatBoxShadows(boxShadowString: string): BoxShadowInfo[] {\n const boxShadows: BoxShadowInfo[] = [];\n let currentShadow = '';\n let openParentheses = 0;\n\n for (const char of boxShadowString) {\n if (char === ',' && openParentheses === 0) {\n const details = this.#splitBoxShadowDetails(currentShadow.trim());\n if (details) {\n boxShadows.push(details);\n }\n\n currentShadow = '';\n } else {\n currentShadow += char;\n if (char === '(') {\n openParentheses++;\n } else if (char === ')') {\n openParentheses--;\n }\n }\n }\n\n if (currentShadow.trim()) {\n const details = this.#splitBoxShadowDetails(currentShadow.trim());\n if (details) {\n boxShadows.push(details);\n }\n }\n\n return boxShadows;\n }\n\n #getBoxShadowInfo(): BoxShadowInfo[] {\n const elStyles = window.getComputedStyle(this.#elRef.nativeElement);\n const boxShadowStyle = elStyles.getPropertyValue(\n '--sky-elevation-overflow',\n );\n\n // Creating a temporary element and setting box shadow converts the color in the box shadows to rgba or rgb\n const tempEl = document.createElement('div');\n tempEl.style.setProperty('box-shadow', boxShadowStyle);\n\n const convertedBoxShadows = tempEl.style.getPropertyValue('box-shadow');\n const boxShadows = this.#formatBoxShadows(convertedBoxShadows);\n\n return boxShadows;\n }\n\n #buildShadowStyle(pixelsFromEnd: number): string {\n if (!this.#boxShadows) {\n const boxShadowInfo = this.#getBoxShadowInfo();\n if (boxShadowInfo.length > 0) {\n this.#boxShadows = boxShadowInfo;\n } else {\n this.#boxShadows = 'none';\n }\n }\n\n const boxShadowStyles: string[] = [];\n\n if (this.#boxShadows === 'none' || pixelsFromEnd === 0) {\n return 'none';\n } else {\n for (const shadow of this.#boxShadows) {\n const { colorParts, lengths, opacity } = shadow;\n // Progressively darken the shadow until the user scrolls 30 pixels from the top or bottom\n // of the scrollable element, with a max opacity of 0.3.\n const adjustedOpacity = Math.min(pixelsFromEnd / 30, 1) * opacity;\n const adjustedShadow = `${lengths} rgba(${colorParts}, ${adjustedOpacity})`;\n boxShadowStyles.push(adjustedShadow);\n }\n return boxShadowStyles.join(', ');\n }\n }\n\n #emitShadow(shadow: SkyScrollShadowEventArgs): void {\n if (\n !this.#currentShadow ||\n this.#currentShadow.bottomShadow !== shadow.bottomShadow ||\n this.#currentShadow.topShadow !== shadow.topShadow\n ) {\n this.skyScrollShadow.emit(shadow);\n this.#currentShadow = shadow;\n }\n }\n}\n","import { ElementRef, Injectable, Optional } from '@angular/core';\n\nimport {\n Observable,\n Subject,\n Subscriber,\n Subscription,\n animationFrameScheduler,\n combineLatestWith,\n concat,\n fromEvent,\n of,\n} from 'rxjs';\nimport { debounceTime, map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\nimport { SkyResizeObserverService } from '../resize-observer/resize-observer.service';\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nfunction notifySubscribers(\n subscribers: Subscriber<unknown>[],\n item?: unknown,\n): void {\n for (const subscriber of subscribers) {\n subscriber.next(item);\n }\n}\n\ntype HostRect = Pick<DOMRect, 'top' | 'left' | 'right' | 'bottom'>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyScrollableHostService {\n #mutationObserverSvc: SkyMutationObserverService;\n\n #windowRef: SkyAppWindowRef;\n\n #resizeObserverSvc: SkyResizeObserverService | undefined;\n\n constructor(\n mutationObserverSvc: SkyMutationObserverService,\n windowRef: SkyAppWindowRef,\n @Optional() resizeObserverSvc?: SkyResizeObserverService,\n ) {\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#resizeObserverSvc = resizeObserverSvc;\n this.#windowRef = windowRef;\n }\n\n /**\n * Returns the given element's current scrollable host\n * @param elementRef The element whose scrollable host is being requested\n * @returns The current scrollable host\n */\n public getScrollableHost(elementRef: ElementRef): HTMLElement | Window {\n return this.#findScrollableHost(elementRef.nativeElement);\n }\n\n /**\n * Returns an observable which emits the given element's current scrollable host\n * @param elementRef The element whose scrollable host is being requested\n * @returns An observable which emits the current scrollable host element.\n * @internal\n */\n public watchScrollableHost(\n elementRef: ElementRef,\n ): Observable<HTMLElement | Window> {\n const subscribers: Subscriber<HTMLElement | Window>[] = [];\n\n let parentMutationObserver: MutationObserver;\n let documentHiddenElementMutationObserver: MutationObserver;\n\n return new Observable((subscriber) => {\n subscribers.push(subscriber);\n\n let scrollableHost: HTMLElement | Window | undefined =\n this.#findScrollableHost(elementRef.nativeElement);\n\n // Setup mutation observers only once, for all subscribers.\n if (subscribers.length === 1) {\n parentMutationObserver = this.#mutationObserverSvc.create(() => {\n const newScrollableHost = this.#findScrollableHost(\n elementRef.nativeElement,\n );\n\n // Reset observer if scrollable host changes.\n if (\n newScrollableHost !== scrollableHost &&\n this.#isElementVisible(elementRef)\n ) {\n scrollableHost = newScrollableHost;\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n notifySubscribers(subscribers, scrollableHost);\n }\n });\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n documentHiddenElementMutationObserver =\n this.#mutationObserverSvc.create(() => {\n if (scrollableHost && !this.#isElementVisible(elementRef)) {\n // If the scrollable host is not visible, set it to undefined and unsubscribe from its mutation changes.\n // Then, observe the document element so that a new scrollable host can be found.\n scrollableHost = undefined;\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n notifySubscribers(subscribers, scrollableHost);\n }\n });\n\n this.#observeDocumentHiddenElementChanges(\n documentHiddenElementMutationObserver,\n );\n }\n\n // Emit the scrollable host to the subscriber.\n subscriber.next(scrollableHost);\n\n // Teardown callback for the subscription.\n subscriber.add(() => {\n const subIndex = subscribers.indexOf(subscriber);\n\n /* istanbul ignore else */\n if (subIndex >= 0) {\n subscribers.splice(subIndex, 1);\n }\n\n if (subscribers.length === 0) {\n documentHiddenElementMutationObserver.disconnect();\n parentMutationObserver.disconnect();\n }\n });\n });\n }\n\n /**\n * Returns an observable which emits whenever the element's scrollable host emits a scroll event. The observable will always emit the scroll events from the elements current scrollable host and will update based on any scrollable host changes. The observable will also emit once whenever the scrollable host changes.\n * @param elementRef The element whose scrollable host scroll events are being requested\n * @returns An observable which emits when the elements scrollable host is scrolled or is changed\n */\n public watchScrollableHostScrollEvents(\n elementRef: ElementRef,\n ): Observable<void> {\n const subscribers: Subscriber<void>[] = [];\n\n let scrollableHost: HTMLElement | Window;\n\n let newScrollableHostObservable = new Subject<void>();\n let scrollableHostSubscription: Subscription;\n let scrollEventSubscription: Subscription;\n\n return new Observable((subscriber) => {\n subscribers.push(subscriber);\n\n // Setup mutation observers only once, for all subscribers.\n if (subscribers.length === 1) {\n scrollableHostSubscription = this.watchScrollableHost(\n elementRef,\n ).subscribe((newScrollableHost) => {\n newScrollableHostObservable.next();\n newScrollableHostObservable.complete();\n\n if (scrollableHost && scrollableHost !== newScrollableHost) {\n notifySubscribers(subscribers);\n }\n\n scrollableHost = newScrollableHost;\n newScrollableHostObservable = new Subject();\n\n // Only subscribe to scroll events if the host element is defined.\n /* istanbul ignore else */\n if (newScrollableHost) {\n scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')\n .pipe(takeUntil(newScrollableHostObservable))\n .subscribe(() => {\n notifySubscribers(subscribers);\n });\n }\n });\n }\n\n // Teardown callback for the subscription.\n subscriber.add(() => {\n const subIndex = subscribers.indexOf(subscriber);\n\n /* istanbul ignore else */\n if (subIndex >= 0) {\n subscribers.splice(subIndex, 1);\n }\n\n if (subscribers.length === 0) {\n scrollableHostSubscription.unsubscribe();\n scrollEventSubscription.unsubscribe();\n newScrollableHostObservable.complete();\n }\n });\n });\n }\n\n public watchScrollableHostClipPathChanges(\n elementRef: ElementRef,\n additionalContainers: Observable<ElementRef[]> = of([]),\n ): Observable<string> {\n if (!this.#resizeObserverSvc) {\n return of('none');\n }\n\n return this.watchScrollableHost(elementRef).pipe(\n combineLatestWith(additionalContainers),\n switchMap(([scrollableHost, additionalHosts]) => {\n const resizeObserverSvc = this.#resizeObserverSvc;\n if (\n !resizeObserverSvc ||\n ((!scrollableHost ||\n scrollableHost === this.#windowRef.nativeWindow) &&\n additionalHosts.length === 0)\n ) {\n return of('none');\n }\n\n const inputs = [\n of(undefined),\n ...additionalHosts.map((container) =>\n resizeObserverSvc.observe(container),\n ),\n ];\n let getHostRect: () => HostRect;\n if (scrollableHost && scrollableHost !== this.#windowRef.nativeWindow) {\n inputs.push(\n resizeObserverSvc.observe({ nativeElement: scrollableHost }),\n );\n getHostRect = (): HostRect =>\n (scrollableHost as HTMLElement).getBoundingClientRect();\n } else {\n getHostRect = (): HostRect => ({\n top: 0,\n left: 0,\n right: this.#windowRef.nativeWindow.innerWidth,\n bottom: this.#windowRef.nativeWindow.innerHeight,\n });\n }\n return concat(inputs).pipe(\n debounceTime(0, animationFrameScheduler),\n map(() => {\n const viewportSize = this.#getViewportSize();\n let { top, left, right, bottom } = getHostRect();\n for (const container of additionalHosts) {\n if (container.nativeElement?.offsetParent) {\n const containerRect =\n container.nativeElement.getBoundingClientRect();\n top = Math.max(top, containerRect.top);\n left = Math.max(left, containerRect.left);\n right = Math.min(right, containerRect.right);\n bottom = Math.min(bottom, containerRect.bottom);\n }\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n return `inset(${top}px ${viewportSize.width - right}px ${viewportSize.height - bottom}px ${left}px)`;\n }),\n );\n }),\n );\n }\n\n #findScrollableHost(element: HTMLElement | undefined): HTMLElement | Window {\n const regex = /(auto|scroll)/;\n const windowObj = this.#windowRef.nativeWindow;\n const bodyObj = windowObj.document.body;\n\n if (!element) {\n return windowObj;\n }\n\n let style = windowObj.getComputedStyle(element);\n let parent = element;\n\n do {\n parent = parent.parentNode as HTMLElement;\n\n // Return `window` if the parent element has been removed from the DOM.\n if (!(parent instanceof HTMLElement)) {\n return windowObj;\n }\n\n style = windowObj.getComputedStyle(parent);\n } while (\n !regex.test(style.overflow) &&\n !regex.test(style.overflowY) &&\n parent !== bodyObj\n );\n\n if (parent === bodyObj) {\n return windowObj;\n }\n\n return parent;\n }\n\n #observeDocumentHiddenElementChanges(\n mutationObserver: MutationObserver,\n ): void {\n mutationObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'style', 'hidden'],\n childList: true,\n subtree: true,\n });\n }\n\n #observeForScrollableHostChanges(\n element: HTMLElement | Window | undefined,\n mutationObserver: MutationObserver,\n ): void {\n mutationObserver.disconnect();\n\n const target =\n element instanceof HTMLElement ? element : document.documentElement;\n\n mutationObserver.observe(target, {\n attributes: true,\n attributeFilter: ['class', 'style'],\n childList: true,\n subtree: true,\n });\n }\n\n /**\n * Determines if an element is \"visible\" in the DOM.\n * @see https://stackoverflow.com/a/11639664/6178885\n */\n #isElementVisible(elementRef: ElementRef): boolean {\n return !!elementRef.nativeElement?.offsetParent;\n }\n\n #getViewportSize(): { width: number; height: number } {\n const win = this.#windowRef.nativeWindow;\n const docElem = win.document.documentElement;\n\n return {\n width: docElem.clientWidth,\n height: docElem.clientHeight,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport { SkyAppSetTitleArgs } from './set-title-args';\n\n/**\n * Provides a method for setting a formatted title on the current window.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppTitleService {\n #title: Title;\n\n constructor(title: Title) {\n this.#title = title;\n }\n\n /**\n * Sets the title on the current window.\n * @param args An array of title parts. The parts will be concatenated with a hyphen between\n * each part.\n */\n public setTitle(args: SkyAppSetTitleArgs | undefined): void {\n if (args?.titleParts) {\n this.#title.setTitle(args.titleParts.join(' - '));\n }\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\n/**\n * Trims whitespace in each text node that is a direct descendent of the current element.\n */\n@Directive({\n selector: '[skyTrim]',\n standalone: false,\n})\nexport class SkyTrimDirective implements OnInit, OnDestroy {\n #elRef: ElementRef;\n\n #obs: MutationObserver;\n\n constructor(elRef: ElementRef, mutationObs: SkyMutationObserverService) {\n this.#elRef = elRef;\n\n this.#obs = mutationObs.create((mutations: MutationRecord[]) => {\n const nodes: Node[] = [];\n\n // Only trim white space inside direct descendants of the current element.\n for (const mutation of mutations) {\n if (mutation.target.parentNode === elRef.nativeElement) {\n nodes.push(mutation.target);\n }\n }\n\n this.#trim(nodes);\n });\n\n this.#observe();\n }\n\n public ngOnInit(): void {\n const el = this.#elRef.nativeElement as Element;\n this.#trim(Array.from(el.childNodes));\n }\n\n public ngOnDestroy(): void {\n this.#disconnect();\n }\n\n #observe(): void {\n this.#obs.observe(this.#elRef.nativeElement, {\n characterData: true,\n subtree: true,\n });\n }\n\n #disconnect(): void {\n this.#obs.disconnect();\n }\n\n #trim(nodes: Node[]): void {\n // Suspend the MutationObserver so altering the text content of each node\n // doesn't retrigger the observe callback.\n this.#disconnect();\n\n for (const node of nodes) {\n if (node.nodeType === Node.TEXT_NODE && node.textContent) {\n const textContent = node.textContent;\n const textContentTrimmed = textContent.trim();\n\n if (textContent !== textContentTrimmed) {\n node.textContent = textContentTrimmed;\n }\n }\n }\n\n this.#observe();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyTrimDirective } from './trim.directive';\n\n@NgModule({\n declarations: [SkyTrimDirective],\n exports: [SkyTrimDirective],\n})\nexport class SkyTrimModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, of as observableOf } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyUIConfigService {\n public getConfig(key: string, defaultConfig?: any): Observable<any> {\n return observableOf(defaultConfig);\n }\n\n /* istanbul ignore next */\n public setConfig(key: string, value: any): Observable<any> {\n return observableOf({});\n }\n}\n","import { SkyViewkeeperBoundaryInfo } from './viewkeeper-boundary-info';\nimport { SkyViewkeeperFixedStyles } from './viewkeeper-fixed-styles';\nimport { SkyViewkeeperOffset } from './viewkeeper-offset';\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\nconst CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';\nconst CLS_VIEWKEEPER_FIXED_NOT_LAST = 'sky-viewkeeper-fixed-not-last';\nconst CLS_VIEWKEEPER_BOUNDARY = 'sky-viewkeeper-boundary';\nconst EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';\n\nlet nextIdIndex: number;\n\nfunction nextId(): string {\n nextIdIndex = (nextIdIndex || 0) + 1;\n\n return 'viewkeeper-' + nextIdIndex;\n}\n\nfunction getOffset(\n el: HTMLElement,\n scrollableHost?: HTMLElement,\n): SkyViewkeeperOffset {\n const rect = el.getBoundingClientRect();\n const parent = scrollableHost ? scrollableHost : document.documentElement;\n\n return {\n top: rect.top + parent.scrollTop,\n left: rect.left + parent.scrollLeft,\n };\n}\n\nfunction px(value: number | string): string {\n let pxValue = value ? value.toString() : '';\n\n if (typeof value === 'number') {\n pxValue = value + 'px';\n }\n\n return pxValue;\n}\n\nfunction setElPosition(\n el: HTMLElement,\n left: number | string,\n top: number | string,\n width: number | string,\n marginTop: number | string,\n marginTopProperty: string | undefined,\n clipTop: number | string,\n clipLeft: number | string,\n): void {\n el.style.top = px(top);\n el.style.left = px(left);\n el.style.marginTop = marginTopProperty\n ? `calc(${px(marginTop)} + var(${marginTopProperty}, 0))`\n : px(marginTop);\n el.style.clipPath =\n clipTop || clipLeft ? `inset(${px(clipTop)} 0 0 ${px(clipLeft)})` : 'none';\n\n /*istanbul ignore else*/\n /* sanity check */\n if (width !== null) {\n el.style.width = px(width);\n }\n}\n\nfunction getHeightWithMargin(el: HTMLElement): number {\n const computedStyle = getComputedStyle(el);\n\n return (\n el.offsetHeight +\n parseInt(computedStyle.marginTop, 10) +\n parseInt(computedStyle.marginBottom, 10)\n );\n}\n\nfunction createCustomEvent(name: any): CustomEvent<any> {\n const evt = document.createEvent('CustomEvent');\n\n evt.initCustomEvent(name, false, false, undefined);\n\n return evt;\n}\n\nexport class SkyViewkeeper {\n #boundaryEl: HTMLElement | undefined;\n\n #el: HTMLElement | undefined;\n\n #id: string;\n\n #setWidth: boolean;\n\n #verticalOffset: number;\n\n #verticalOffsetEl: HTMLElement | undefined;\n\n #viewportMarginTop = 0;\n\n #viewportMarginProperty: `--${string}` | undefined;\n\n #currentElFixedLeft: number | undefined;\n\n #currentElFixedTop: number | undefined;\n\n #currentElFixedWidth: number | undefined;\n\n #currentElClipLeft: number | undefined;\n\n #currentElClipTop: number | undefined;\n\n #isDestroyed = false;\n\n #scrollableHost: HTMLElement | undefined;\n\n #syncElPositionHandler: () => void;\n\n #intersectionObserver: IntersectionObserver | undefined;\n\n #spacerResizeObserver: ResizeObserver | undefined;\n\n constructor(options: SkyViewkeeperOptions) {\n options = options || /* istanbul ignore next */ {};\n\n this.#el = options.el;\n this.#boundaryEl = options.boundaryEl;\n\n if (!this.#el) {\n throw new Error('[SkyViewkeeper] The option `el` is required.');\n }\n\n if (!this.#boundaryEl) {\n throw new Error('[SkyViewkeeper] The option `boundaryEl` is required.');\n }\n\n const el = this.#el;\n const boundaryEl = this.#boundaryEl;\n\n this.#setWidth = !!options.setWidth;\n this.#id = nextId();\n this.#scrollableHost = options.scrollableHost;\n this.#verticalOffset = options.verticalOffset || 0;\n this.#verticalOffsetEl = options.verticalOffsetEl;\n\n // Only set viewport margin if the scrollable host is undefined.\n if (!this.#scrollableHost) {\n this.#viewportMarginTop = options.viewportMarginTop ?? 0;\n this.#viewportMarginProperty = options.viewportMarginProperty;\n }\n\n this.#syncElPositionHandler = (): void =>\n this.syncElPosition(el, boundaryEl);\n\n if (this.#verticalOffsetEl) {\n this.#verticalOffsetEl.addEventListener(\n EVT_AFTER_VIEWKEEPER_SYNC,\n this.#syncElPositionHandler,\n );\n }\n\n window.addEventListener('scroll', this.#syncElPositionHandler, true);\n window.addEventListener('resize', this.#syncElPositionHandler);\n window.addEventListener('orientationchange', this.#syncElPositionHandler);\n\n this.#boundaryEl.classList.add(CLS_VIEWKEEPER_BOUNDARY);\n\n this.syncElPosition(el, boundaryEl);\n }\n\n public syncElPosition(el: HTMLElement, boundaryEl: HTMLElement): void {\n const verticalOffset = this.#calculateVerticalOffset();\n\n // When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.\n if (el.offsetWidth === 0 && el.offsetHeight === 0) {\n return;\n }\n\n const boundaryInfo = this.#getBoundaryInfo(el, boundaryEl);\n const fixedStyles = this.#getFixedStyles(boundaryInfo, verticalOffset);\n\n const doFixEl = this.#shouldFixEl(el, boundaryInfo, verticalOffset);\n\n if (this.#needsUpdating(doFixEl, fixedStyles)) {\n if (doFixEl) {\n this.#fixEl(el, boundaryInfo, fixedStyles);\n this.#verticalOffsetEl?.classList.add(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n } else {\n this.#unfixEl(el);\n this.#verticalOffsetEl?.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n }\n }\n\n const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);\n\n el.dispatchEvent(evt);\n }\n\n public destroy(): void {\n if (!this.#isDestroyed) {\n this.#intersectionObserver?.disconnect();\n window.removeEventListener('scroll', this.#syncElPositionHandler, true);\n window.removeEventListener('resize', this.#syncElPositionHandler);\n window.removeEventListener(\n 'orientationchange',\n this.#syncElPositionHandler,\n );\n\n if (this.#el) {\n this.#unfixEl(this.#el);\n }\n\n if (this.#verticalOffsetEl) {\n this.#verticalOffsetEl.removeEventListener(\n EVT_AFTER_VIEWKEEPER_SYNC,\n this.#syncElPositionHandler,\n );\n this.#verticalOffsetEl.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n }\n\n this.#spacerResizeObserver?.disconnect();\n this.#boundaryEl?.classList.remove(CLS_VIEWKEEPER_BOUNDARY);\n\n this.#el =\n this.#boundaryEl =\n this.#verticalOffsetEl =\n this.#spacerResizeObserver =\n undefined;\n\n this.#isDestroyed = true;\n }\n }\n\n #getSpacerId(): string {\n return this.#id + '-spacer';\n }\n\n #unfixEl(el: HTMLElement): void {\n const spacerEl = document.getElementById(this.#getSpacerId());\n\n if (spacerEl) {\n this.#spacerResizeObserver?.unobserve(spacerEl);\n\n /*istanbul ignore else*/\n if (spacerEl.parentElement) {\n spacerEl.parentElement.removeChild(spacerEl);\n }\n }\n\n el.classList.remove(CLS_VIEWKEEPER_FIXED);\n\n this.#currentElFixedLeft =\n this.#currentElFixedTop =\n this.#currentElFixedWidth =\n undefined;\n\n let width = '';\n\n if (this.#setWidth) {\n width = 'auto';\n }\n\n setElPosition(el, '', '', width, '', '', 0, 0);\n }\n\n #calculateVerticalOffset(): number {\n let offset = this.#verticalOffset;\n\n if (this.#verticalOffsetEl) {\n const verticalOffsetElTopStyle = this.#verticalOffsetEl.style.top;\n const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;\n\n offset += this.#verticalOffsetEl.offsetHeight + verticalOffsetElTop;\n } else if (this.#scrollableHost) {\n offset += this.#scrollableHost.getBoundingClientRect().top;\n }\n\n return offset;\n }\n\n #shouldFixEl(\n el: HTMLElement,\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n verticalOffset: number,\n ): boolean {\n let anchorTop: number;\n\n if (boundaryInfo.spacerEl) {\n anchorTop = getOffset(boundaryInfo.spacerEl, this.#scrollableHost).top;\n } else {\n anchorTop = getOffset(el, this.#scrollableHost).top;\n }\n\n let viewportMarginTop = this.#viewportMarginTop;\n const viewportMarginProperty =\n this.#viewportMarginProperty &&\n getComputedStyle(document.body).getPropertyValue(\n this.#viewportMarginProperty,\n );\n if (viewportMarginProperty) {\n viewportMarginTop += parseInt(viewportMarginProperty, 10);\n }\n\n const doFixEl =\n boundaryInfo.scrollTop + verticalOffset + viewportMarginTop > anchorTop;\n\n return doFixEl;\n }\n\n #getFixedStyles(\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n verticalOffset: number,\n ): SkyViewkeeperFixedStyles {\n // If the element needs to be fixed, this will calculate its position. The position\n // will be 0 (fully visible) unless the user is scrolling the boundary out of view.\n // In that case, the element should begin to scroll out of view with the\n // rest of the boundary by setting its top position to a negative value.\n const elTop =\n boundaryInfo.boundaryBottom -\n boundaryInfo.elHeight -\n boundaryInfo.scrollTop;\n const elClipTop = elTop < verticalOffset ? verticalOffset - elTop : 0;\n const elFixedTop = Math.min(elTop, verticalOffset);\n\n const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;\n const elFixedLeft =\n boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;\n const elClipLeft = elFixedLeft < 0 ? 0 - elFixedLeft : 0;\n\n return {\n elFixedLeft,\n elFixedTop,\n elFixedWidth,\n elClipLeft,\n elClipTop,\n };\n }\n\n #needsUpdating(\n doFixEl: boolean,\n fixedStyles: SkyViewkeeperFixedStyles,\n ): boolean {\n if (\n (doFixEl &&\n this.#currentElFixedLeft === fixedStyles.elFixedLeft &&\n this.#currentElFixedTop === fixedStyles.elFixedTop &&\n this.#currentElClipLeft === fixedStyles.elClipLeft &&\n this.#currentElClipTop === fixedStyles.elClipTop &&\n this.#currentElFixedWidth === fixedStyles.elFixedWidth) ||\n (!doFixEl &&\n !(\n this.#currentElFixedLeft !== undefined &&\n this.#currentElFixedLeft !== null\n ))\n ) {\n // The element is either currently fixed and its position and width do not need\n // to change, or the element is not currently fixed and does not need to be fixed.\n // No changes are needed.\n return false;\n }\n\n return true;\n }\n\n #fixEl(\n el: HTMLElement,\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n fixedStyles: SkyViewkeeperFixedStyles,\n ): void {\n /* istanbul ignore else */\n /* sanity check */\n if (!boundaryInfo.spacerEl) {\n const spacerHeight = boundaryInfo.elHeight;\n\n const spacerEl = document.createElement('div');\n spacerEl.id = boundaryInfo.spacerId;\n spacerEl.style.height = px(spacerHeight);\n\n /*istanbul ignore else*/\n if (el.parentNode) {\n el.parentNode.insertBefore(spacerEl, el.nextSibling);\n }\n\n if (!this.#spacerResizeObserver) {\n this.#spacerResizeObserver = new ResizeObserver(() =>\n this.#syncElPositionHandler(),\n );\n }\n\n this.#spacerResizeObserver.observe(spacerEl);\n }\n\n el.classList.add(CLS_VIEWKEEPER_FIXED);\n\n this.#currentElFixedTop = fixedStyles.elFixedTop;\n this.#currentElFixedLeft = fixedStyles.elFixedLeft;\n this.#currentElClipTop = fixedStyles.elClipTop;\n this.#currentElClipLeft = fixedStyles.elClipLeft;\n this.#currentElFixedWidth = fixedStyles.elFixedWidth;\n\n let width = 0;\n\n if (this.#setWidth) {\n width = fixedStyles.elFixedWidth;\n }\n\n setElPosition(\n el,\n fixedStyles.elFixedLeft,\n fixedStyles.elFixedTop,\n width,\n this.#viewportMarginTop,\n this.#viewportMarginProperty,\n fixedStyles.elClipTop,\n fixedStyles.elClipLeft,\n );\n }\n\n #getBoundaryInfo(\n el: HTMLElement,\n boundaryEl: HTMLElement,\n ): SkyViewkeeperBoundaryInfo {\n const spacerId = this.#getSpacerId();\n\n const spacerEl = document.getElementById(spacerId);\n\n const boundaryOffset = getOffset(boundaryEl, this.#scrollableHost);\n const boundaryTop = boundaryOffset.top;\n const boundaryBottom =\n boundaryTop + boundaryEl.getBoundingClientRect().height;\n\n const scrollLeft = this.#scrollableHost\n ? this.#scrollableHost.scrollLeft\n : document.documentElement.scrollLeft;\n const scrollTop = this.#scrollableHost\n ? this.#scrollableHost.scrollTop\n : document.documentElement.scrollTop;\n\n const elHeight = getHeightWithMargin(el);\n\n return {\n boundaryBottom,\n boundaryOffset,\n boundaryEl,\n elHeight,\n scrollLeft,\n scrollTop,\n spacerId,\n spacerEl,\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\n@Injectable()\nexport class SkyViewkeeperHostOptions implements SkyViewkeeperOptions {\n public boundaryEl?: HTMLElement;\n\n public el?: HTMLElement;\n\n public scrollableHost?: HTMLElement;\n\n public setWidth?: boolean;\n\n public verticalOffset?: number;\n\n public verticalOffsetEl?: HTMLElement;\n\n public viewportMarginTop?: number;\n\n public viewportMarginProperty?: `--${string}`;\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport { SkyViewkeeper } from './viewkeeper';\nimport { SkyViewkeeperHostOptions } from './viewkeeper-host-options';\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\n/**\n * Provides methods for creating and destroying viewkeeper instances.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyViewkeeperService {\n #hostOptions: SkyViewkeeperHostOptions | undefined;\n\n constructor(@Optional() hostOptions?: SkyViewkeeperHostOptions) {\n this.#hostOptions = hostOptions;\n }\n\n /**\n *\n * @param options Creates a viewkeeper instance, applying host options where applicable.\n */\n public create(options: SkyViewkeeperOptions): SkyViewkeeper {\n options = Object.assign({}, this.#hostOptions || {}, options);\n\n return new SkyViewkeeper(options);\n }\n\n /**\n * Destroys a viewkeeper instance.\n * @param vk Viewkeeper instance to destroy.\n */\n public destroy(vk: SkyViewkeeper): void {\n vk.destroy();\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\nimport { SkyScrollableHostService } from '../scrollable-host/scrollable-host.service';\n\nimport { SkyViewkeeper } from './viewkeeper';\nimport { SkyViewkeeperService } from './viewkeeper.service';\n\n@Directive({\n selector: '[skyViewkeeper]',\n standalone: false,\n})\nexport class SkyViewkeeperDirective implements OnInit, OnDestroy {\n @Input()\n public set skyViewkeeper(value: string[] | undefined) {\n this.#_skyViewkeeper = value;\n\n this.#detectElements();\n }\n\n public get skyViewkeeper(): string[] | undefined {\n return this.#_skyViewkeeper;\n }\n\n #_skyViewkeeper: string[] | undefined;\n\n #currentViewkeeperEls: HTMLElement[] | undefined;\n\n #el: ElementRef;\n\n #mutationObserverSvc: SkyMutationObserverService;\n\n #observer: MutationObserver | undefined;\n\n #scrollableHostSvc: SkyScrollableHostService | undefined;\n\n #scrollableHostWatchUnsubscribe: Subject<void> | undefined;\n\n #viewkeepers: SkyViewkeeper[] = [];\n\n #viewkeeperSvc: SkyViewkeeperService;\n\n constructor(\n el: ElementRef,\n mutationObserverSvc: SkyMutationObserverService,\n viewkeeperSvc: SkyViewkeeperService,\n @Optional() scrollableHostSvc?: SkyScrollableHostService,\n ) {\n this.#el = el;\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#viewkeeperSvc = viewkeeperSvc;\n this.#scrollableHostSvc = scrollableHostSvc;\n }\n\n public ngOnInit(): void {\n this.#observer = this.#mutationObserverSvc.create(() =>\n this.#detectElements(),\n );\n\n this.#observer.observe(this.#el.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n\n public ngOnDestroy(): void {\n /*istanbul ignore else*/\n if (this.#observer) {\n this.#observer.disconnect();\n }\n\n /*istanbul ignore else*/\n if (this.#scrollableHostWatchUnsubscribe) {\n this.#scrollableHostWatchUnsubscribe.next();\n this.#scrollableHostWatchUnsubscribe.complete();\n }\n\n this.#destroyViewkeepers();\n }\n\n #destroyViewkeepers(): void {\n for (const viewkeeper of this.#viewkeepers) {\n this.#viewkeeperSvc.destroy(viewkeeper);\n }\n\n this.#viewkeepers = [];\n }\n\n #getViewkeeperEls(): HTMLElement[] {\n let viewkeeperEls: HTMLElement[] = [];\n\n if (this.skyViewkeeper) {\n viewkeeperEls = [];\n\n for (const item of this.skyViewkeeper) {\n const matchingEls = Array.from(\n (this.#el.nativeElement as HTMLElement).querySelectorAll(item),\n ) as HTMLElement[];\n\n viewkeeperEls = [...viewkeeperEls, ...matchingEls];\n }\n }\n\n return viewkeeperEls;\n }\n\n #viewkeeperElsChanged(viewkeeperEls: HTMLElement[]): boolean {\n if (!viewkeeperEls !== !this.#currentViewkeeperEls) {\n return true;\n }\n\n if (viewkeeperEls && this.#currentViewkeeperEls) {\n if (viewkeeperEls.length !== this.#currentViewkeeperEls.length) {\n return true;\n }\n\n for (let i = 0, n = viewkeeperEls.length; i < n; i++) {\n if (viewkeeperEls[i] !== this.#currentViewkeeperEls[i]) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n #detectElements(): void {\n const viewkeeperEls = this.#getViewkeeperEls();\n\n if (this.#viewkeeperElsChanged(viewkeeperEls)) {\n if (this.#scrollableHostWatchUnsubscribe) {\n this.#scrollableHostWatchUnsubscribe.next();\n this.#scrollableHostWatchUnsubscribe.complete();\n this.#scrollableHostWatchUnsubscribe = new Subject();\n } else {\n this.#scrollableHostWatchUnsubscribe = new Subject();\n }\n\n if (this.#scrollableHostSvc) {\n this.#scrollableHostSvc\n .watchScrollableHost(this.#el)\n .pipe(takeUntil(this.#scrollableHostWatchUnsubscribe))\n .subscribe((scrollableHost) => {\n this.#destroyViewkeepers();\n\n let previousViewkeeperEl: HTMLElement | undefined;\n\n for (const viewkeeperEl of viewkeeperEls) {\n this.#viewkeepers.push(\n this.#viewkeeperSvc.create({\n boundaryEl: this.#el.nativeElement,\n scrollableHost:\n scrollableHost instanceof HTMLElement\n ? scrollableHost\n : undefined,\n el: viewkeeperEl,\n setWidth: true,\n verticalOffsetEl: previousViewkeeperEl,\n }),\n );\n\n previousViewkeeperEl = viewkeeperEl;\n }\n });\n }\n\n this.#currentViewkeeperEls = viewkeeperEls;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyViewkeeperDirective } from './viewkeeper.directive';\n\n@NgModule({\n declarations: [SkyViewkeeperDirective],\n exports: [SkyViewkeeperDirective],\n})\nexport class SkyViewkeeperModule {}\n","// Taken from Angular's version.ts file.\n// See: https://github.com/angular/angular/blob/16.2.x/packages/core/src/version.ts\n\n/**\n * Represents the version of a package.\n * @internal\n */\nexport class Version {\n public readonly major: string;\n public readonly minor: string;\n public readonly patch: string;\n\n constructor(public readonly full: string) {\n this.major = full.split('.')[0];\n this.minor = full.split('.')[1];\n this.patch = full.split('.').slice(2).join('.');\n }\n}\n\n/**\n * Represents the version of @skyux/core.\n */\nexport const VERSION = new Version('0.0.0-PLACEHOLDER');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyAffixService","i1.SkyAppWindowRef","observableFromEvent","i1.SkyMutationObserverService","_a","i1.SkyIdService","takeUntil","QUERIES","DEFAULT_BREAKPOINT","i2.SkyNumericService","i1","i1.SkyDynamicComponentService","i1.SkyDynamicComponentLegacyService","map","i2.SkyAppWindowRef","i3.SkyResizeObserverService","observableOf","i1.SkyViewkeeperHostOptions","i2.SkyViewkeeperService","i3.SkyScrollableHostService"],"mappings":"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"}
|