{"version":3,"file":"daffodil-design.mjs","sources":["../../../libs/design/src/atoms/form/form-label/form-label.directive.ts","../../../libs/design/src/atoms/form/form-label/form-label.module.ts","../../../libs/design/src/core/prefix-suffix/prefix.directive.ts","../../../libs/design/src/core/prefix-suffix/suffix.directive.ts","../../../libs/design/src/core/prefix-suffix/prefix-suffix.module.ts","../../../libs/design/src/core/prefix-suffix/prefix-suffix.ts","../../../libs/design/src/core/colorable/colorable.ts","../../../libs/design/src/core/colorable/colorable.directive.ts","../../../libs/design/src/core/breakpoints/breakpoints.ts","../../../libs/design/src/core/breakpoints/noop.service.ts","../../../libs/design/src/core/breakpoints/provider.ts","../../../libs/design/src/core/constructor/constructor.ts","../../../libs/design/src/core/statusable/statusable.ts","../../../libs/design/src/core/statusable/statusable.directive.ts","../../../libs/design/src/core/skeletonable/skeletonable.directive.ts","../../../libs/design/src/core/text-alignable/text-alignable.ts","../../../libs/design/src/core/text-alignable/text-alignable.directive.ts","../../../libs/design/src/core/compactable/compactable.directive.ts","../../../libs/design/src/core/manage-container-layout/manage-container-layout.directive.ts","../../../libs/design/src/core/article-encapsulated/article-encapsulated.directive.ts","../../../libs/design/src/core/theming/types/theme.ts","../../../libs/design/src/core/theming/services/os-theme/ostheme.service.ts","../../../libs/design/src/core/theming/services/storage/theme-storage.service.ts","../../../libs/design/src/core/theming/functions/computer.ts","../../../libs/design/src/core/theming/services/theming.service.ts","../../../libs/design/src/core/theming/services/class-setter/theme-class-setter.service.ts","../../../libs/design/src/core/theming/initializer.ts","../../../libs/design/src/core/focus/focusable-elements.ts","../../../libs/design/src/core/focus/stack.service.ts","../../../libs/design/src/core/sizable/sizable.ts","../../../libs/design/src/core/sizable/sizable.directive.ts","../../../libs/design/src/core/openable/utils/state-error.ts","../../../libs/design/src/core/openable/openable.directive.ts","../../../libs/design/src/core/orientable/orientable.ts","../../../libs/design/src/core/orientable/orientable.directive.ts","../../../libs/design/src/core/selectable/selectable.directive.ts","../../../libs/design/src/core/sticky/sticky-tracker.directive.ts","../../../libs/design/src/core/disableable/disableable.directive.ts","../../../libs/design/src/core/loadable/loadable.directive.ts","../../../libs/design/src/core/roving-tab-index/roving-tab-index-group.service.ts","../../../libs/design/src/core/roving-tab-index/roving-tab-index-boundary.directive.ts","../../../libs/design/src/core/roving-tab-index/roving-tab-index.directive.ts","../../../libs/design/src/core/public_api.ts","../../../libs/design/src/public_api.ts","../../../libs/design/src/index.ts","../../../libs/design/src/daffodil-design.ts"],"sourcesContent":["import {\n  Directive,\n  HostBinding,\n} from '@angular/core';\n\n/**\n * @deprecated in favor of the {@link DaffFormFieldLabelDirective}. Deprecated in version 0.86.0. Will be removed in version 1.0.0.\n */\n@Directive({\n  selector: '[daffFormLabel]',\n})\nexport class DaffFormLabelDirective {\n  /**\n   * @docs-private\n   */\n  @HostBinding('class.daff-form-label') class = true;\n}\n","import { NgModule } from '@angular/core';\n\nimport { DaffFormLabelDirective } from './form-label.directive';\n\n/**\n * @deprecated in favor of standalone components. Deprecated in version 0.84.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n  exports: [\n    DaffFormLabelDirective,\n  ],\n  imports: [\n    DaffFormLabelDirective,\n  ],\n})\n\nexport class DaffFormLabelModule {}\n","import { Directive } from '@angular/core';\n\n/**\n * DaffPrefixDirective can be used to place content before another piece of content\n * in components like `DaffFormFieldComponent` or `DaffListComponent`.\n */\n@Directive({\n  selector: '[daffPrefix]',\n  host: {\n    class: 'daff-prefix',\n  },\n})\nexport class DaffPrefixDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * DaffSuffixDirective can be used to place content after another piece of content\n * in components like `DaffFormFieldComponent` or `DaffListComponent`.\n */\n@Directive({\n  selector: '[daffSuffix]',\n  host: {\n    class: 'daff-suffix',\n  },\n})\nexport class DaffSuffixDirective { }\n","import { NgModule } from '@angular/core';\n\nimport { DaffPrefixDirective } from './prefix.directive';\nimport { DaffSuffixDirective } from './suffix.directive';\n\n/**\n * @deprecated in favor of standalone components. Deprecated in version 0.91.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n  imports: [\n    DaffPrefixDirective,\n    DaffSuffixDirective,\n  ],\n  exports: [\n    DaffPrefixDirective,\n    DaffSuffixDirective,\n  ],\n})\nexport class DaffPrefixSuffixModule {}\n","import { DaffPrefixDirective } from './prefix.directive';\nimport { DaffSuffixDirective } from './suffix.directive';\n\nexport const DAFF_PREFIX_SUFFIX_DIRECTIVES = <const> [\n  DaffPrefixDirective,\n  DaffSuffixDirective,\n];\n","/**\n * @deprecated Deprecated in version 0.92.0. Will be removed in version 1.0.0.\n */\nexport interface DaffColorable {\n  color: DaffColor;\n}\n\n/**\n * The available color options.\n */\nexport type DaffColor = 'primary' | 'secondary' | 'tertiary' | 'light' | 'dark' | 'theme' | 'theme-contrast' | 'black' | 'white' | undefined;\n\n/**\n * @deprecated Deprecated in version 0.92.0. Will be removed in version 1.0.0.\n */\nexport type DaffPalette = DaffColor;\n\n/**\n * The available color options.\n */\nexport enum DaffColorEnum {\n  /**\n   * The primary color.\n   */\n  Primary = 'primary',\n\n  /**\n   * The secondary color.\n   */\n  Secondary = 'secondary',\n\n  /**\n   * The tertiary color.\n   */\n  Tertiary = 'tertiary',\n\n  /**\n   * A light color that does not change based on the theme.\n   */\n  Light = 'light',\n\n  /**\n   * A dark color that does not change based on the theme.\n   */\n  Dark = 'dark',\n\n  /**\n   * A color that matches the theme.\n   */\n  Theme = 'theme',\n\n  /**\n   * A color that contrasts against the theme.\n   */\n  ThemeContrast = 'theme-contrast',\n\n  /**\n   * @deprecated Deprecated in version 0.82.0. Will be removed in version 1.0.0.\n   */\n  Black = 'black',\n\n  /**\n   * @deprecated Deprecated in version 0.82.0. Will be removed in version 1.0.0.\n   */\n  White = 'white',\n}\n","import {\n  Directive,\n  Input,\n  isDevMode,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\n\nimport {\n  DaffColor,\n  DaffColorEnum,\n} from './colorable';\n\nconst isDaffColor = (color: string) => (<any>Object).values(DaffColorEnum).includes(color);\n\nconst validateColor = (color: string) => {\n  if(isDevMode()) {\n    if(color !== undefined && !isDaffColor(color)) {\n      console.warn(color + ' is not a valid color in DaffColor');\n    }\n  }\n};\n\n/**\n * Enforces consistent use of {@link DaffColor} on a component by applying\n * color-specific CSS classes and validating the color in dev mode.\n */\n@Directive({\n  selector: '[daffColorable]',\n  host: {\n    '[class.daff-primary]': 'color === \"primary\"',\n    '[class.daff-secondary]': 'color === \"secondary\"',\n    '[class.daff-tertiary]': 'color === \"tertiary\"',\n    '[class.daff-light]': 'color === \"light\"',\n    '[class.daff-dark]': 'color === \"dark\"',\n    '[class.daff-theme]': 'color === \"theme\"',\n    '[class.daff-theme-contrast]': 'color === \"theme-contrast\"',\n    '[class.daff-black]': 'color === \"black\"',\n    '[class.daff-white]': 'color === \"white\"',\n  },\n})\nexport class DaffColorableDirective implements OnChanges, OnInit {\n  /**\n   * The color of the component.\n   */\n  @Input() color: DaffColor;\n\n  /**\n   * The default color used when no color is set.\n   */\n  defaultColor: DaffColor;\n\n  /**\n   * @docs-private\n   */\n  ngOnChanges(changes: SimpleChanges) {\n    if (!changes.color.currentValue) {\n      this.color = this.defaultColor;\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnInit() {\n    validateColor(this.color);\n    if (!this.color) {\n      this.color = this.defaultColor;\n    }\n  }\n}\n\n","/**\n * Sensible breakpoints for layouts and interfaces used across `@daffodil/design` components.\n */\nexport enum DaffBreakpoints {\n  /** `min-width: 1920px` */\n  DESKTOP = '(min-width: 1920px)',\n  /** `min-width: 1440px` */\n  LAPTOP = '(min-width: 1440px)',\n  /** `min-width: 1200px` */\n  SMALL_LAPTOP = '(min-width: 1200px)',\n  /** `min-width: 1024px` */\n  BIG_TABLET = '(min-width: 1024px)',\n  /** `min-width: 768px` */\n  TABLET = '(min-width: 768px)',\n  /** `min-width: 480px` */\n  MOBILE = '(min-width: 480px)',\n}\n","import {\n  BreakpointObserver,\n  BreakpointState,\n} from '@angular/cdk/layout';\nimport { Injectable } from '@angular/core';\nimport {\n  Observable,\n  of,\n} from 'rxjs';\n\n/**\n * A no-op implementation of Angular CDK's `BreakpointObserver` that always reports\n * no breakpoints as matched. Useful for server-side rendering or testing contexts\n * where browser layout APIs are unavailable.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class NoopBreakpointObserver implements Omit<BreakpointObserver, never> {\n  /**\n   * @docs-private\n   */\n  // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method, @angular-eslint/use-lifecycle-interface\n  ngOnDestroy(): void {}\n\n  /**\n   * Always returns `false`, indicating that none of the given media queries are active.\n   */\n  isMatched(value: string | readonly string[]): boolean {\n    return false;\n  }\n\n  /**\n   * Returns an observable that never emits a `BreakpointState`, making breakpoint-dependent logic inert.\n   */\n  observe(value: string | readonly string[]): Observable<BreakpointState> {\n    return of();\n  }\n\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n  inject,\n  InjectionToken,\n  PLATFORM_ID,\n} from '@angular/core';\n\nimport { NoopBreakpointObserver } from './noop.service';\n\n/**\n * Provides a {@link NoopBreakpointObserver} if the platform is not browser.\n */\nexport const SERVER_SAFE_BREAKPOINT_OBSERVER = new InjectionToken<Omit<BreakpointObserver, never>>('SERVER_SAFE_BREAKPOINT_OBSERVER', {\n  factory: () =>\n    isPlatformBrowser(inject(PLATFORM_ID))\n      ? inject(BreakpointObserver)\n      : inject(NoopBreakpointObserver),\n});\n","/**\n * A basic constructor type useful for mixins\n * See https://blog.mariusschulz.com/2017/05/26/typescript-2-2-mixin-classes\n * for a really good explanation of why mixins are useful.\n */\n\nexport type Constructor<T = Record<string, any>> = new (...args: any[]) => T;\n","/**\n * The `DaffStatusable` interface defines a component that can have a status.\n * This status determines the styling or behavior of the component.\n */\nexport interface DaffStatusable {\n  /**\n   * The status of the component.\n   */\n  status: DaffStatus;\n}\n\n/**\n * The `DaffStatus` type defines the possible status values that a component can have.\n * - 'info': Indicates an informational status.\n * - 'warn': Indicates a warning status.\n * - 'critical': Indicates a critical or error status.\n * - 'success': Indicates a success status.\n */\nexport type DaffStatus = 'info' | 'warn' | 'critical' | 'success';\n\n/**\n * The `DaffStatusEnum` enumerates the possible status values for a component.\n */\nexport enum DaffStatusEnum {\n  Info = 'info',\n  Warn = 'warn',\n  Critical = 'critical',\n  Success = 'success'\n}\n","import {\n  Directive,\n  Input,\n  isDevMode,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\n\nimport {\n  DaffStatus,\n  DaffStatusEnum,\n  DaffStatusable,\n} from './statusable';\n\nconst statusValues = (status: string) => (<any>Object).values(DaffStatusEnum).includes(status);\n\nconst validateStatus = (status: string) => {\n  if(isDevMode()) {\n    if (status !== undefined && !statusValues(status)) {\n      console.warn(\n        `'${status}' is not a valid value of the status property.\\n\\n` +\n      `The available values are: info, warn, critical, or success.`,\n      );\n    }\n  }\n};\n\n/**\n * `DaffStatusableDirective` allows a component to conditionally apply status-specific\n * styles by setting CSS classes based on the specified status. This directive is useful\n * for indicating different statuses such as info, warning, critical, or success states.\n *\n * @example Implementing it as an attribute directive\n *\n * ```html\n * <div daffStatusable [status]=\"componentStatus\">Status content</div>\n * ```\n *\n * @example Implementing it as an Angular host directive\n *\n * ```ts\n * @Component({\n *  selector: 'custom-component',\n *  template: 'custom-component.html',\n *  hostDirectives: [\n *    {\n *      directive: DaffStatusableDirective,\n *      inputs: ['status'],\n *    },\n *  ],\n * })\n * export class CustomComponent { }\n *\n * ```scss\n * :host {\n *  &.daff-critical {\n *    background: daff-color($red, 10);\n *    color: daff-color($red, 90);\n *  }\n * }\n * ```\n *\n * The directive applies the following CSS classes to the component based on the status:\n *\n * - `daff-info`: Applied when the status is `info`.\n * - `daff-warn`: Applied when the status is `warn`.\n * - `daff-critical`: Applied when the status is `critical`.\n * - `daff-success`: Applied when the status is `success`.\n */\n@Directive({\n  selector: '[daffStatusable]',\n  host: {\n    '[class.daff-info]': 'status === \"info\"',\n    '[class.daff-warn]': 'status === \"warn\"',\n    '[class.daff-critical]': 'status === \"critical\"',\n    '[class.daff-success]': 'status === \"success\"',\n  },\n})\nexport class DaffStatusableDirective implements DaffStatusable, OnChanges, OnInit {\n  /**\n   * Sets the status on a component.\n   */\n  @Input() status: DaffStatus;\n\n  /**\n   * Sets a default status.\n   *\n   * @example\n   * ```ts\n   * constructor(private statusDirective: DaffStatusableDirective) {\n   *  this.statusDirective.defaultStatus = 'info';\n   * }\n   * ```\n   */\n  defaultStatus: DaffStatus;\n\n  /**\n   * @docs-private\n   */\n  ngOnChanges(changes: SimpleChanges) {\n    if (!changes.status.currentValue) {\n      this.status = this.defaultStatus;\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnInit() {\n    validateStatus(this.status);\n\n    if (this.defaultStatus && !this.status) {\n      this.status = this.defaultStatus;\n    }\n  }\n}\n\n","import {\n  Directive,\n  Input,\n} from '@angular/core';\n\n/**\n * `DaffSkeletonableDirective` allows a component to display a skeleton loading\n * state by conditionally applying a CSS class. This is useful for indicating to\n * users that content is loading or being processed. This directive can be used to\n * apply a skeleton loading state to any component by toggling the `skeleton`\n * input property. When `skeleton` is `true`, the `daff-skeleton` CSS class\n * is applied, which should style the component to look like a loading placeholder.\n *\n * @example Implementing it as an attribute directive\n *\n * ```html\n * <div daffSkeletonable [skeleton]=\"isLoading\">Content</div>\n * ```\n *\n * @example Implementing it as an Angular host directive\n *\n * ```ts\n * @Component({\n *  selector: 'custom-component',\n *  template: 'custom-component.html',\n *  hostDirectives: [\n *    {\n *      directive: DaffSkeletonableDirective,\n *      inputs: ['skeleton'],\n *    },\n *  ],\n * })\n * export class CustomComponent { }\n * ```\n *\n * ```scss\n * :host {\n *  .daff-skeleton {\n *    @include state.skeleton-screen(48px, 24px);\n *  }\n * }\n * ```\n *\n * The directive applies the `daff-skeleton` class to the component should be defined in your styles to display the loading\n * state as desired. It can be used in conjuction with the `skeleton-screen` mixin, which provides predefined loading styles.\n */\n@Directive({\n  selector: '[daffSkeletonable]',\n  host: {\n    '[class.daff-skeleton]': 'skeleton',\n  },\n})\nexport class DaffSkeletonableDirective {\n  /**\n   * Controls whether the component displays a skeleton loading state.\n   */\n  @Input() skeleton = false;\n}\n","/**\n * @deprecated Deprecated in version 0.92.1. Will be removed in version 1.0.0.\n */\nexport interface DaffTextAlignable {\n  textAlignment: DaffTextAlignment;\n}\n\n/**\n *  * The available text alignment options.\n */\nexport type DaffTextAlignment = 'left' | 'center' | 'right';\n\n/**\n * @deprecated Deprecated in version 0.93.0. Will be removed in version 0.96.0.\n *\n * This enum will be removed from the public api in v1.0.0.\n */\nexport enum DaffTextAlignmentEnum {\n  Left = 'left',\n  Center = 'center',\n  Right = 'right'\n}\n","import {\n  Directive,\n  Input,\n  isDevMode,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\n\nimport {\n  DaffTextAlignable,\n  DaffTextAlignment,\n  DaffTextAlignmentEnum,\n} from './text-alignable';\n\nconst textAlignmentValues = (textAlignment: string) => (<any>Object).values(DaffTextAlignmentEnum).includes(textAlignment);\n\nconst validateTextAlignment = (textAlignment: string) => {\n  if(isDevMode()) {\n    if(textAlignment !== undefined && !textAlignmentValues(textAlignment)) {\n      console.warn(`'${textAlignment}' is not a valid value of the textAlignment property. The available values are: left, center, or right.`);\n    }\n  }\n};\n\n/**\n * `DaffTextAlignableDirective` enforces consistent use of text alignment across components.\n */\n@Directive({\n  selector: '[daffTextAlignable]',\n  host: {\n    '[class.daff-left]': 'textAlignment === \"left\"',\n    '[class.daff-center]': 'textAlignment === \"center\"',\n    '[class.daff-right]': 'textAlignment === \"right\"',\n  },\n})\nexport class DaffTextAlignableDirective implements DaffTextAlignable, OnChanges, OnInit {\n\n  /**\n   * The text alignment of the component.\n   */\n  @Input() textAlignment: DaffTextAlignment;\n\n  /**\n   * The default used when no text alignment is set.\n   */\n  public defaultAlignment: DaffTextAlignment;\n\n  /**\n   * @docs-private\n   */\n  ngOnChanges(changes: SimpleChanges) {\n    if (!changes.textAlignment?.currentValue) {\n      this.textAlignment = this.defaultAlignment;\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnInit() {\n    validateTextAlignment(this.textAlignment);\n\n    if (!this.textAlignment) {\n      this.textAlignment = this.defaultAlignment;\n    }\n  }\n}\n\n","import {\n  Directive,\n  Input,\n} from '@angular/core';\n\n/**\n * Enforces consistent use of the compact property.\n */\n@Directive({\n  selector: '[daffCompactable]',\n  host: {\n    '[class.daff-compact]': 'compact',\n  },\n})\nexport class DaffCompactableDirective {\n  /**\n   * Whether the component is compact.\n   */\n  @Input() compact = false;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * `DaffManageContainerLayoutDirective` gives a component the ability to manage a `DaffContainerComponent`'s layout.\n * By including this directive, predetermined layout styles are passed down to the container.\n *\n * To understand the motivation for this directive, consider:\n *\n * ```html\n * <daff-container>\n *  <daff-hero></daff-hero>\n * </daff-container>\n * ```\n * vs.\n *\n * ```html\n * <daff-hero>\n *   <daff-container></daff-container>\n * </daff-hero>\n * ```\n *\n * The former may inappropriately constrain the width of its child elements,\n * while the latter (without `DaffManageContainerLayoutDirective`) may unexpectedly\n * interfere in the layout features of its parent element (i.e. display: grid, display: flex).\n *\n * @example Implementing it as an attribute directive\n *\n * ```html\n * <my-custom-component daffManageContainerLayout>\n *  <daff-container size=\"lg\"></daff-container>\n * </my-custom-component>\n * ```\n *\n * ```scss\n * :host {\n *  display: grid;\n *  grid-template-columns: 1fr 1fr;\n * }\n * ```\n *\n * @example Implementing it as an Angular host directive\n *\n * ```ts\n * @Component({\n *  selector: 'my-custom-component',\n *  template: 'my-custom-component.html',\n *  hostDirectives: [{ directive: DaffManageContainerLayoutDirective }],\n * })\n * export class MyCustomComponent { }\n *\n * ```scss\n * :host {\n *  display: grid;\n *  grid-template-columns: 1fr 1fr;\n * }\n * ```\n *\n * This directive will apply the `daff-manage-container-layout` class to your component, ensuring that the styles set on `:host` are passed down to the container.\n */\n\n@Directive({\n  selector: '[daffManageContainerLayout]',\n  host: {\n    class: 'daff-manage-container-layout',\n  },\n})\nexport class DaffManageContainerLayoutDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * The `DaffArticleEncapsulatedDirective` prevents {@link DaffArticleComponent } styles from bleeding into custom components nested within an article.\n */\n@Directive({\n  selector: '[daffArticleEncapsulated]',\n  host: {\n    class: 'daff-ae',\n  },\n})\nexport class DaffArticleEncapsulatedDirective {}\n","/**\n * The possible states of a theme.\n */\nexport enum DaffTheme {\n  Light = 'light',\n  Dark = 'dark',\n  System = 'system'\n}\n","\nimport {\n  Injectable,\n  Inject,\n  DOCUMENT,\n} from '@angular/core';\nimport {\n  Observable,\n  of,\n  fromEventPattern,\n} from 'rxjs';\nimport {\n  map,\n  startWith,\n} from 'rxjs/operators';\n\nimport { DaffTheme } from '../../types/theme';\n\nexport const mediaQueryDarkPreference = '(prefers-color-scheme: dark)';\n\nexport const addHandlerFactory = (window: Window) => (handler: any) => {\n  const query = window.matchMedia(mediaQueryDarkPreference);\n  return 'addEventListener' in query\n    ? query.addEventListener('change', handler)\n    : (<MediaQueryList>query).addListener(handler);\n};\n\nexport const removeHandlerFactory = (window: Window) => (handler: any) => {\n  const query = window.matchMedia(mediaQueryDarkPreference);\n  return 'removeEventListener' in query\n    ? query.removeEventListener('change', handler)\n    : (<MediaQueryList>query).removeListener(handler);\n};\n\n/**\n * A service for retrieving the operating system's theme preference.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class DaffOsThemeService {\n\n  preference$: Observable<DaffTheme>;\n\n  private doc?: Document;\n\n  constructor(@Inject(DOCUMENT) _doc: any) {\n    this.doc = <Document>_doc;\n\n    this.preference$ = this.doc.defaultView?.matchMedia\n      ? fromEventPattern<MediaQueryListEvent>(\n        addHandlerFactory(this.doc.defaultView),\n        removeHandlerFactory(this.doc.defaultView),\n      )\n        .pipe(\n          startWith(this.doc.defaultView?.matchMedia(mediaQueryDarkPreference)),\n          map((e: MediaQueryListEvent) => e.matches),\n          map((prefersDark) => prefersDark ? DaffTheme.Dark : DaffTheme.Light),\n        )\n      : of(DaffTheme.System);\n  }\n\n  /**\n   * Get the operating system's theme preference.\n   */\n  public getThemePreference(): Observable<DaffTheme> {\n    return this.preference$;\n  }\n}\n","\nimport {\n  Injectable,\n  Inject,\n  DOCUMENT,\n} from '@angular/core';\nimport {\n  Observable,\n  fromEvent,\n  Subject,\n  merge,\n  EMPTY,\n  of,\n} from 'rxjs';\nimport {\n  map,\n  filter,\n  startWith,\n  shareReplay,\n  catchError,\n} from 'rxjs/operators';\n\nimport {\n  DaffPersistenceService,\n  DaffServerSafePersistenceServiceToken,\n} from '@daffodil/core';\n\nimport { DaffTheme } from '../../types/theme';\n\nexport type ThemeStorageEvent = Pick<StorageEvent, 'newValue' | 'key'>;\n\nexport const THEME_STORAGE_KEY = 'DAFF_THEME';\n\nexport const coerceValue = (val?: string): DaffTheme =>\n  val === DaffTheme.Dark || val === DaffTheme.Light\n    ? val\n    : DaffTheme.System;\n\n/**\n * Generate a StorageEvent\n */\nconst storageEventBuilder = (\n  value: DaffTheme,\n): ThemeStorageEvent => ({\n  key: THEME_STORAGE_KEY,\n  newValue: coerceValue(value) !== DaffTheme.System ? value : null,\n});\n\n/**\n * A service for retrieving and managing the application's stored theme.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class DaffThemeStorageService {\n  private theme$: Observable<DaffTheme>;\n  private storage$: Subject<ThemeStorageEvent> = new Subject();\n  private doc?: Document;\n\n  constructor(\n    @Inject(DaffServerSafePersistenceServiceToken)\n    private storage: DaffPersistenceService,\n    @Inject(DOCUMENT) _doc: any,\n  ) {\n    this.doc = <Document>_doc;\n    this.theme$ = merge(\n      this.storage$,\n      this.doc.defaultView\n        ? fromEvent<ThemeStorageEvent>(\n          <Window & typeof globalThis>this.doc.defaultView,\n          'storage',\n        ).pipe(\n          startWith(\n            storageEventBuilder(\n              this.storage.getItem(THEME_STORAGE_KEY),\n            ),\n          ),\n          catchError((e) => EMPTY),\n        )\n        : of(storageEventBuilder(\n          this.storage.getItem(THEME_STORAGE_KEY),\n        )),\n    ).pipe(\n      filter(\n        (e: ThemeStorageEvent) => e.key === THEME_STORAGE_KEY,\n      ),\n      map((e) => coerceValue(e.newValue)),\n      shareReplay(1),\n    );\n  }\n\n  /**\n   * Given that Safari doesn't respect in-tab storage events, we have to manually\n   * fire storage events in the open tab on Webkit based browsers.\n   */\n  private progressStorageEvent(theme: DaffTheme) {\n    this.storage$.next(storageEventBuilder(theme));\n  }\n\n  getThemeAsObservable(): Observable<DaffTheme> {\n    return this.theme$;\n  }\n\n  getTheme(): DaffTheme {\n    return coerceValue(this.storage.getItem(THEME_STORAGE_KEY));\n  }\n\n  setTheme(theme: DaffTheme): void {\n    this.progressStorageEvent(theme);\n    this.storage.setItem(THEME_STORAGE_KEY, theme);\n  }\n\n  removeThemeSetting(): void {\n    this.progressStorageEvent(DaffTheme.System);\n    this.storage.removeItem(THEME_STORAGE_KEY);\n  }\n}\n","import { DaffTheme } from '../types/theme';\n\n/**\n * Computes the appropriate application theme from the specified values.\n * It cascades from `storedPreference` to `osPreference` to `defaultTheme`.\n */\nexport const daffComputeThemeSetting = (\n  osPreference?: DaffTheme,\n  storedPreference?: DaffTheme,\n  defaultTheme: DaffTheme = DaffTheme.Dark,\n): DaffTheme => {\n  if (storedPreference && storedPreference !== DaffTheme.System) {\n    return storedPreference;\n  }\n\n  if (osPreference === 'dark') {\n    return DaffTheme.Dark;\n  }\n\n  if (osPreference === 'light') {\n    return DaffTheme.Light;\n  }\n\n  return defaultTheme;\n};\n","import { Injectable } from '@angular/core';\nimport {\n  Observable,\n  combineLatest,\n} from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { DaffOsThemeService } from './os-theme/ostheme.service';\nimport { DaffThemeStorageService } from './storage/theme-storage.service';\nimport { daffComputeThemeSetting } from '../functions/computer';\nimport { DaffTheme } from '../types/theme';\n\n/**\n * A service for controlling the application's theme.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class DaffThemingService {\n  private theme$: Observable<DaffTheme>;\n  private theme: DaffTheme;\n\n  constructor(\n    private osTheme: DaffOsThemeService,\n    private themeStorage: DaffThemeStorageService,\n  ) {\n\n    this.theme$ = combineLatest([\n      this.osTheme.getThemePreference(),\n      this.themeStorage.getThemeAsObservable(),\n    ]).pipe(\n      map(([osPreference, storedPreference]) => daffComputeThemeSetting(osPreference, storedPreference)),\n    );\n\n    this.theme$.subscribe((theme) => {\n      this.theme = theme;\n    });\n  }\n\n  /**\n   * Get the current theme.\n   */\n  getTheme(): Observable<DaffTheme> {\n    return this.theme$;\n  }\n\n  /**\n   * Get the user's stored theme preference. Emits `DaffTheme.System` when no\n   * preference is stored and the theme follows the operating system.\n   */\n  getThemePreference(): Observable<DaffTheme> {\n    return this.themeStorage.getThemeAsObservable();\n  }\n\n  /**\n   * Set the theme to dark mode.\n   */\n  darkMode() {\n    this.themeStorage.setTheme(DaffTheme.Dark);\n  }\n\n  /**\n   * Set the theme to light mode.\n   */\n  lightMode() {\n    this.themeStorage.setTheme(DaffTheme.Light);\n  }\n\n  /**\n   * Follow the operating system's theme preference by clearing any stored theme.\n   */\n  systemMode() {\n    this.themeStorage.removeThemeSetting();\n  }\n}\n","\nimport {\n  Injectable,\n  Inject,\n  Renderer2,\n  RendererFactory2,\n  DOCUMENT,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DaffTheme } from '../../types/theme';\nimport { DaffThemingService } from '../theming.service';\n\nexport const DAFF_THEME_DARK_CSS_CLASS = 'daff-theme-dark';\nexport const DAFF_THEME_LIGHT_CSS_CLASS = 'daff-theme-light';\n\n/**\n * This class updates the body of the application with the theme's appropriate class.\n * Note that this service is not provided tree-shakably by intention.\n * It is intended to be provided manually during setup.\n */\n@Injectable()\nexport class DaffThemeClassSetterService {\n  private renderer: Renderer2;\n  private subscription: Subscription;\n  private doc?: Document;\n\n  constructor(\n    @Inject(DOCUMENT) _doc: any,\n    private rendererFactory: RendererFactory2,\n    private themingService: DaffThemingService,\n  ) {\n    this.doc = <Document>_doc;\n    this.renderer = this.rendererFactory.createRenderer(null, null);\n  }\n\n  /**\n   * This function is intended to only be called once when the service\n   * is initialized for the very first time. This will mutate the class\n   * on the body of the document for the appropriate theme as controlled\n   * by the state of the application's theme.\n   */\n  beginThemeSync(): void {\n    this.subscription = this.themingService.getTheme().subscribe((theme) => {\n      // For simplicty, remove all previously applied themes.\n      this.renderer.removeClass(this.doc.body, DAFF_THEME_LIGHT_CSS_CLASS);\n      this.renderer.removeClass(this.doc.body, DAFF_THEME_DARK_CSS_CLASS);\n      this.renderer.addClass(this.doc.body, theme === DaffTheme.Dark ? DAFF_THEME_DARK_CSS_CLASS : DAFF_THEME_LIGHT_CSS_CLASS);\n    });\n  }\n\n  /**\n   * This unsubscribes from the bodyClass subscription that exists.\n   */\n  destroy(): void {\n    this.subscription?.unsubscribe();\n    this.renderer.removeClass(this.doc.body, DAFF_THEME_LIGHT_CSS_CLASS);\n    this.renderer.removeClass(this.doc.body, DAFF_THEME_DARK_CSS_CLASS);\n  }\n}\n","import {\n  inject,\n  makeEnvironmentProviders,\n  provideAppInitializer,\n} from '@angular/core';\n\nimport { DaffThemeClassSetterService } from './services/class-setter/theme-class-setter.service';\n\nexport const DAFF_THEME_INIT = (classSetter: DaffThemeClassSetterService) => () => classSetter.beginThemeSync();\n\n/**\n * The theme provider for the app.\n * This configures updating the body with the theme class.\n */\nexport const DAFF_THEME_INITIALIZER = makeEnvironmentProviders([\n  DaffThemeClassSetterService,\n  provideAppInitializer(() => {\n    const initializerFn = (DAFF_THEME_INIT)(inject(DaffThemeClassSetterService));\n    return initializerFn();\n  }),\n]);\n","export const daffFocusableElementsSelector = 'a[href],a[routerlink], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\n","\nimport {\n  Inject,\n  Injectable,\n  DOCUMENT,\n} from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class DaffFocusStackService {\n  private _stack: HTMLElement[] = [];\n\n  constructor(@Inject(DOCUMENT) private document: any) {\n\n  }\n\n  /**\n   * Return the current length of the stack.\n   */\n  length(): number {\n    return this._stack.length;\n  }\n\n  /**\n   * Adds a HTML element to a focus stack and returns the new length of the stack.\n   *\n   * Generally, you will probably want to call this before you transition focus\n   * onto a new element.\n   *\n   * @example Using the push function\n   * ```ts\n   * this._focusStack.push(this._doc.activeElement);\n   * ```\n   */\n  push(el: HTMLElement | undefined = undefined): number {\n    this._stack.push(el ?? this.document.activeElement);\n    return this._stack.length;\n  }\n\n  /**\n   * Focuses on the HTML element at the top of a stack.\n   *\n   * @example Using the focus function\n   * ```ts\n   * this._focusStack.focus(this._doc.activeElement);\n   * ```\n   */\n  focus() {\n    if(this._stack.length >= 1) {\n      this._stack.slice(-1)[0].focus();\n    } else {\n      (<HTMLElement>this.document.activeElement).blur();\n    }\n  }\n\n  /**\n   * Removes the HMTL element at the top of a stack and focuses on it.\n   */\n  pop(focus: boolean = true): HTMLElement {\n    let el = this._stack.pop();\n    while(el === undefined && this._stack.length > 0) {\n      el = this._stack.pop();\n    }\n\n    if(el) {\n      if(focus) {\n        el.focus();\n      }\n      return el;\n    }\n\n    (<HTMLElement>this.document.activeElement).blur();\n    return this.document.activeElement;\n  }\n}\n","/**\n * @deprecated Deprecated in version 0.92.1. Will be removed in version 1.0.0.\n */\n\nexport interface DaffSizable<T extends DaffSizeAllType> {\n  size: T;\n}\n\nexport type DaffSizeXSmallType = 'xs';\nexport type DaffSizeSmallType = 'sm';\nexport type DaffSizeMediumType = 'md';\nexport type DaffSizeLargeType = 'lg';\nexport type DaffSizeXLargeType = 'xl';\n\n/**\n * All available sizes.\n */\nexport type DaffSizeAllType = DaffSizeXSmallType | DaffSizeSmallType | DaffSizeMediumType | DaffSizeLargeType | DaffSizeXLargeType;\n\n/**\n * @deprecated Deprecated in version 0.93.0. Will be removed in version 0.96.0.\n *\n * This enum will be removed from the public api in v1.0.0.\n */\nexport enum DaffSizableEnum {\n  XSmall = 'xs',\n  Small = 'sm',\n  Medium = 'md',\n  Large = 'lg',\n  XLarge = 'xl'\n}\n","import {\n  Directive,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\n\nimport { DaffSizeAllType } from './sizable';\n\n/**\n * `DaffSizableDirective` enforces consistent use of sizes across components.\n */\n@Directive({\n  selector: '[daffSizable]',\n  host: {\n    '[class.daff-xs]': 'size === \"xs\"',\n    '[class.daff-sm]': 'size === \"sm\"',\n    '[class.daff-md]': 'size === \"md\"',\n    '[class.daff-lg]': 'size === \"lg\"',\n    '[class.daff-xl]': 'size === \"xl\"',\n  },\n})\nexport class DaffSizableDirective<T extends DaffSizeAllType> implements OnChanges, OnInit {\n  /**\n   * The size of the component.\n   */\n  @Input() size: T;\n\n  /**\n   * Sets a default size.\n   */\n  public defaultSize: T;\n\n  /**\n   * @docs-private\n   */\n  ngOnChanges(changes: SimpleChanges) {\n    if(!changes.size?.currentValue) {\n      this.size = this.defaultSize;\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnInit() {\n    if(!this.size) {\n      this.size = this.defaultSize;\n    }\n  }\n}\n\n","export const DaffOpenableStateError = '`open` cannot be set as an input property on the DaffOpenableDirective if it is not stateless. Did you mean to call `reveal`, `hide`, or `toggle`?';\n","import {\n  Directive,\n  EventEmitter,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  isDevMode,\n  model,\n} from '@angular/core';\n\nimport { DaffOpenable } from './openable';\nimport { DaffOpenableStateError } from './utils/state-error';\n\n/**\n * A directive that opens or closes a component. It should only be used as an [Angular Host Directive](https://angular.dev/guide/directives/directive-composition-api).\n * This directive is stateless by default, but it supports both a state and stateless implementation. Only one version should be used within a component.\n *\n * @example Using the DaffOpenableDirective\n * ```ts\n * import {\n *  Component,\n *  ChangeDetectionStrategy,\n * } from '@angular/core';\n *\n * import { DaffOpenableDirective } from '@daffodil/design';\n *\n * @Component({\n *   selector: 'custom-component',\n *   template: `\n *     <button (click)=\"toggle()\">Click me!</button>\n *     <div class=\"hidden-block\">This is a hidden block that can be shown by clicking the button.</div>\n *   `,\n *   styles: [`\n *   :host {\n *     .hidden-block {\n *       display: none;\n *     }\n *\n *     &.daff-open {\n *       .hidden-block {\n *         display: block;\n *       }\n *     }\n *   }`],\n *   changeDetection: ChangeDetectionStrategy.OnPush,\n *   hostDirectives: [{\n *     directive: DaffOpenableDirective,\n *   }],\n * })\n * export class CustomComponent {\n *   constructor(private openDirective: DaffOpenableDirective) {}\n *\n *   toggle() {\n *     this.openDirective.toggle();\n *   }\n * }\n * ```\n */\n@Directive({\n  selector: '[daffOpenable]',\n  host: {\n    '[class.daff-open]': 'open()',\n  },\n})\n\nexport class DaffOpenableDirective implements DaffOpenable, OnChanges {\n  /** Controls whether the component is open. */\n  open = model(false);\n\n  private _setOpen(v: boolean) {\n    if(!this.stateless) {\n      this.open.set(v);\n    }\n  }\n\n  /** Whether or not a component should handle state\n   *\n   * @example Setting the `stateless` property on a component\n   * ```ts\n   * constructor(private openDirective: DaffOpenableDirective) {\n   *  this.openDirective.stateless = false;\n   * }\n   * ```\n   */\n  stateless = true;\n\n  /**\n   * Event fired when a component is opened (true) or closed (false)\n   */\n  @Output() toggled: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  /**\n   * Open the component\n   */\n  reveal() {\n    this._setOpen(true);\n\n    this.toggled.emit(true);\n  }\n\n  /**\n   * Close the component\n   */\n  hide() {\n    this._setOpen(false);\n\n    this.toggled.emit(false);\n  }\n\n  /**\n   * Open or close the component, depending on if it's currently open or not\n   */\n  toggle() {\n    const state = !this.open();\n\n    this._setOpen(state);\n\n    this.toggled.emit(state);\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnChanges(changes: SimpleChanges) {\n    /**\n     * Throw an error if open is set in a component that is not stateless\n     */\n    if(changes.open.currentValue && !this.stateless) {\n      this.open.set(changes.open.previousValue);\n\n      if(isDevMode()) {\n        throw new Error(DaffOpenableStateError);\n      }\n    }\n  }\n}\n","/**\n * @deprecated Deprecated in version 0.92.1. Will be removed in version 1.0.0.\n *\n * Interface for giving a component the ability to customize text alignment for component-specific UI.\n */\nexport interface DaffOrientable {\n  orientation: DaffOrientation;\n}\n\n/**\n * The possible types that can be passed to a DaffOrientable component\n */\nexport type DaffOrientation = 'horizontal' | 'vertical';\n\n/**\n * @deprecated Deprecated in version 0.93.0. Will be removed in version 0.96.0.\n *\n * This enum will be removed from the public api in v1.0.0.\n */\nexport enum DaffOrientationEnum {\n  Horizontal = 'horizontal',\n  Vertical = 'vertical',\n}\n","import {\n  Directive,\n  Input,\n  isDevMode,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\n\nimport {\n  DaffOrientable,\n  DaffOrientation,\n  DaffOrientationEnum,\n} from './orientable';\n\nconst orientationValues = (orientation: string) => (<any>Object).values(DaffOrientationEnum).includes(orientation);\n\nconst validateOrientation = (orientation: string) => {\n  if(isDevMode()) {\n    if(orientation !== undefined && !orientationValues(orientation)) {\n      console.warn(`'${orientation}' is not a valid value of the orientation property. The available values are: left, center, or right.`);\n    }\n  }\n};\n\n/**\n * `DaffOrientableDirective`enforces consistent use of orientation across components.\n */\n@Directive({\n  selector: '[daffOrientable]',\n  host: {\n    '[class.daff-horizontal]': 'orientation === \"horizontal\"',\n    '[class.daff-vertical]': 'orientation === \"vertical\"',\n  },\n})\nexport class DaffOrientableDirective implements DaffOrientable, OnChanges, OnInit {\n  /**\n   * The orientation of the component.\n   */\n  @Input() orientation: DaffOrientation;\n\n  /**\n   * The default used when no orientation is set.\n   */\n  public defaultOrientation: DaffOrientation;\n\n  /**\n   * @docs-private\n   */\n  ngOnInit() {\n    if (this.defaultOrientation && !this.orientation) {\n      this.orientation = this.defaultOrientation;\n    }\n\n    validateOrientation(this.orientation);\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnChanges(changes: SimpleChanges) {\n    if (!changes.orientation?.currentValue) {\n      this.orientation = this.defaultOrientation;\n    }\n  }\n}\n\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  Input,\n  Output,\n} from '@angular/core';\n\nimport { DaffSelectable } from '../selectable/selectable';\n\n@Directive({\n  selector: '[daffSelected]',\n  host: {\n    '[class.daff-selected]': 'selected',\n  },\n})\n\nexport class DaffSelectableDirective implements DaffSelectable {\n  /**\n   * Controls whether the component is selected.\n   */\n  @Input() selected = false;\n\n  /**\n   * An event that fires after the component becomes selected.\n   */\n  @Output() becameSelected: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(private cd: ChangeDetectorRef) {}\n\n  /**\n   * Selects the component and emits the `becameSelected` event.\n   */\n  select() {\n    this.selected = true;\n    this.becameSelected.emit();\n    this.cd.markForCheck();\n    return this;\n  }\n\n  /**\n   * Deselects the component.\n   */\n  deselect() {\n    this.selected = false;\n    this.cd.markForCheck();\n    return this;\n  }\n}\n","\nimport {\n  Directive,\n  ElementRef,\n  OnDestroy,\n  Renderer2,\n  Inject,\n  Input,\n  afterNextRender,\n  DOCUMENT,\n} from '@angular/core';\n\n@Directive({\n  selector: '[daffStickyTracker]',\n})\nexport class DaffStickyTrackerDirective implements OnDestroy {\n  @Input() sticky: 'top' | 'bottom' | undefined = undefined;\n\n  private sentinelObserver?: IntersectionObserver;\n  private readonly className = 'is-pinned';\n  private lastPinnedState: boolean | null = null;\n  private debounceTimeout?: number;\n  private sentinelElement?: HTMLElement;\n  private idleCallbackId?: number;\n\n  constructor(\n    private readonly elementRef: ElementRef<HTMLElement>,\n    private readonly renderer: Renderer2,\n    @Inject(DOCUMENT) private readonly document: Document,\n  ) {\n    afterNextRender({\n      write: () => {\n        this.createSentinel();\n      },\n    });\n\n    afterNextRender({\n      read: () => {\n        this.scheduleObserverCreation();\n      },\n    });\n  }\n\n  private get isBottomSticky(): boolean {\n    return this.sticky === 'bottom';\n  }\n\n  private scheduleObserverCreation(): void {\n    const defaultView = this.document.defaultView;\n\n    if (defaultView?.requestIdleCallback) {\n      this.idleCallbackId = defaultView.requestIdleCallback(() => {\n        this.createSentinelObserver();\n      });\n    } else {\n      this.idleCallbackId = defaultView?.setTimeout(() => {\n        this.createSentinelObserver();\n      }, 0);\n    }\n  }\n\n  private findScrollableParent(): HTMLElement | null {\n    let parent = this.elementRef.nativeElement.parentElement;\n\n    while (parent && parent !== this.document.body) {\n      const computedStyle = this.document.defaultView?.getComputedStyle(parent);\n      const overflowY = computedStyle?.overflowY;\n\n      if (overflowY === 'auto' || overflowY === 'scroll') {\n        return parent;\n      }\n      parent = parent.parentElement;\n    }\n\n    return null;\n  }\n\n  private createSentinel(): void {\n    const stickyElement = this.elementRef.nativeElement;\n    const parentElement = stickyElement.parentElement;\n\n    if (!parentElement) {\n      throw new Error('DaffStickyTracker: Sticky element must have a parent element');\n    }\n\n    this.sentinelElement = this.renderer.createElement('div');\n\n    this.renderer.setStyle(this.sentinelElement, 'width', '1px');\n    this.renderer.setStyle(this.sentinelElement, 'height', '1px');\n    this.renderer.setStyle(this.sentinelElement, 'opacity', '0');\n    this.renderer.setStyle(this.sentinelElement, 'pointer-events', 'none');\n    this.renderer.setStyle(this.sentinelElement, 'margin', '0');\n    this.renderer.setStyle(this.sentinelElement, 'padding', '0');\n    this.renderer.setStyle(this.sentinelElement, 'border', 'none');\n    this.renderer.setStyle(this.sentinelElement, 'overflow', 'hidden');\n    this.renderer.setStyle(this.sentinelElement, 'font-size', '0');\n    this.renderer.setStyle(this.sentinelElement, 'line-height', '0');\n\n    if (this.isBottomSticky) {\n      this.renderer.insertBefore(\n        parentElement,\n        this.sentinelElement,\n        stickyElement.nextSibling,\n      );\n    } else {\n      this.renderer.insertBefore(\n        parentElement,\n        this.sentinelElement,\n        stickyElement,\n      );\n    }\n  }\n\n  private createSentinelObserver(): void {\n    const scrollableParent = this.findScrollableParent();\n    const stickyElement = this.elementRef.nativeElement;\n\n    this.sentinelObserver = new IntersectionObserver(\n      ([entry]) => {\n        const shouldBePinned = !entry.isIntersecting;\n\n        if (this.lastPinnedState !== shouldBePinned) {\n          if (this.debounceTimeout) {\n            clearTimeout(this.debounceTimeout);\n          }\n\n          this.debounceTimeout = this.document.defaultView?.setTimeout(() => {\n            if (shouldBePinned) {\n              this.renderer.addClass(stickyElement, this.className);\n            } else {\n              this.renderer.removeClass(stickyElement, this.className);\n            }\n            this.lastPinnedState = shouldBePinned;\n          }, 5);\n        }\n      },\n      {\n        root: scrollableParent,\n        threshold: 0,\n        rootMargin: '1px',\n      },\n    );\n\n    if (this.sentinelElement) {\n      this.sentinelObserver.observe(this.sentinelElement);\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.idleCallbackId !== undefined) {\n      const defaultView = this.document.defaultView;\n      if (defaultView?.cancelIdleCallback) {\n        defaultView.cancelIdleCallback(this.idleCallbackId);\n      } else {\n        defaultView?.clearTimeout(this.idleCallbackId);\n      }\n    }\n\n    if (this.debounceTimeout) {\n      clearTimeout(this.debounceTimeout);\n    }\n\n    if (this.sentinelObserver && this.sentinelElement) {\n      this.sentinelObserver.unobserve(this.sentinelElement);\n    }\n    this.sentinelObserver?.disconnect();\n\n    if (this.sentinelElement && this.sentinelElement.parentElement) {\n      this.renderer.removeChild(this.sentinelElement.parentElement, this.sentinelElement);\n    }\n  }\n}\n","import {\n  Directive,\n  Input,\n} from '@angular/core';\n\n/**\n * Enforces consistent use of the disabled property.\n */\n@Directive({\n  selector: '[daffDisableable]',\n  host: {\n    '[class.daff-disabled]': 'disabled',\n  },\n})\nexport class DaffDisableableDirective {\n  /**\n   * Whether the component is disabled.\n   */\n  @Input() disabled = false;\n}\n","import {\n  Directive,\n  Input,\n} from '@angular/core';\n\n/**\n * `DaffLoadableDirective` allows a component to display a loading UI\n * by conditionally applying a CSS class. This is useful for indicating to\n * users that a user action is being processed. This directive can be used to\n * apply a loading UI to any component by toggling the `loading`\n * input property. When `loading` is `true`, the `daff-loading` CSS class\n * is applied, which should style the component to look like it's not interactable.\n *\n * @example Implementing it as an attribute directive\n *\n * ```html\n * <div daffLoadable [loading]=\"isLoading\">Content</div>\n * ```\n *\n * @example Implementing it as an Angular host directive\n *\n * ```ts\n * @Component({\n *  selector: 'custom-component',\n *  template: 'custom-component.html',\n *  hostDirectives: [\n *    {\n *      directive: DaffLoadableDirective,\n *      inputs: ['loading'],\n *    },\n *  ],\n * })\n * export class CustomComponent { }\n * ```\n *\n * ```scss\n * :host {\n *  .spinner {\n *    opacity: 0;\n *  }\n *  .daff-loading {\n *    .spinner {\n *      opacity: 1;\n *    }\n *  }\n * }\n * ```\n *\n * The directive applies the `daff-loading` class to the component. The class should be\n * defined in your styles to display the loading state as desired.\n */\n@Directive({\n  selector: '[daffLoadable]',\n  host: {\n    '[class.daff-loading]': 'loading',\n  },\n})\nexport class DaffLoadableDirective {\n  @Input() loading = false;\n}\n","import {\n  DOCUMENT,\n  Inject,\n  Injectable,\n  signal,\n} from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DaffRovingTabIndexService {\n  private readonly _hierarchy: Array<string> = [];\n  private readonly _group = signal('');\n\n  readonly group = this._group.asReadonly();\n\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n  ) {}\n\n  enter(group: string) {\n    if (this._group() !== group) {\n      this._hierarchy.push(group);\n      this._group.set(group);\n      const el = this.document.querySelector<HTMLElement>(`[data-rti=\"${group}\"]`);\n      if (el) {\n        (<HTMLElement>this.document.activeElement).blur();\n        el.focus();\n      }\n    }\n  }\n\n  leave() {\n    const prev = this._hierarchy.pop();\n    if (prev) {\n      const group = this._hierarchy[this._hierarchy.length - 1] || '';\n      this._group.set(group);\n      (<HTMLElement>this.document.activeElement).blur();\n      const boundary = this.document.querySelector<HTMLElement>(`[data-rti-boundary=\"${prev}\"][data-rti=\"${group}\"]`);\n      if (boundary) {\n        boundary.focus();\n      } else {\n        console.warn(`The boundary for RTI group ${prev} does not have a reference to the parent group ${group}`);\n      }\n    }\n  }\n\n  next() {\n    this._changeFocus();\n  }\n\n  previous() {\n    this._changeFocus(true);\n  }\n\n  private _changeFocus(up = false) {\n    if (this._group()) {\n      const ary = Array.from(this.document.querySelectorAll<HTMLElement>(`[data-rti=\"${this._group()}\"]`));\n      const index = ary.findIndex((el) => el === this.document.activeElement);\n      (<HTMLElement>this.document.activeElement).blur();\n      (up\n        ? ary[index === 0 ? ary.length - 1 : index - 1]\n        : ary[index === ary.length - 1 ? 0 : index + 1]).focus();\n    }\n  }\n\n  onKeydown(evt: Event) {\n    if ('key' in evt) {\n      switch ((<KeyboardEvent>evt).key) {\n        case 'ArrowUp':\n        case 'ArrowDown':\n          if (this._group()) {\n            evt.preventDefault();\n            const ary = Array.from(this.document.querySelectorAll<HTMLElement>(`[data-rti=\"${this._group()}\"]`));\n            const index = ary.findIndex((el) => el === this.document.activeElement);\n            (<HTMLElement>this.document.activeElement).blur();\n            ((<KeyboardEvent>evt).key === 'ArrowUp'\n              ? ary[index === 0 ? ary.length - 1 : index - 1]\n              : ary[index === ary.length - 1 ? 0 : index + 1]).focus();\n          }\n          break;\n\n        default:\n          break;\n      }\n    }\n  }\n}\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n  computed,\n  Directive,\n  effect,\n  forwardRef,\n  input,\n} from '@angular/core';\n\nimport { DaffRovingTabIndexService } from './roving-tab-index-group.service';\nimport { DaffRovingTabIndexDirective } from './roving-tab-index.directive';\n\n/**\n * Defines the boundary of an RTI group.\n */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[rtiBoundary]',\n  host: {\n    '[attr.data-rti-boundary]': 'effectiveBoundary()',\n    '(keydown.space)': 'enterGroup($event)',\n  },\n  hostDirectives: [\n    CdkTrapFocus,\n    forwardRef(() => DaffRovingTabIndexDirective),\n  ],\n})\nexport class DaffRovingTabIndexBoundaryDirective {\n  /**\n   * Don't touch this directly. Use `_uniqueId`.\n   */\n  private static _uniqueIdCounter = 0;\n\n  /**\n   * Don't touch this directly. Use `_uniqueId`.\n   */\n  private _cachedUniqueId: string | undefined;\n  private get _uniqueId(): string {\n    if (!this._cachedUniqueId) {\n      this._cachedUniqueId = `ε-rtiBoundary-${DaffRovingTabIndexBoundaryDirective._uniqueIdCounter++}`;\n    }\n    return this._cachedUniqueId;\n  }\n\n  /**\n   * The name of the group for which that this element will act as boundary.\n   * Optional, will be autogenerated to a unique name if omitted.\n   */\n  readonly rtiBoundary = input<string | null>(null);\n  /**\n   * The name of the group defined by this boundary.\n   */\n  readonly effectiveBoundary = computed(() => this.rtiBoundary() || this._uniqueId);\n\n  constructor(\n    private groupService: DaffRovingTabIndexService,\n    private focusTrap: CdkTrapFocus,\n  ) {\n    effect(() => {\n      this.focusTrap.enabled = this.effectiveBoundary() === this.groupService.group();\n    });\n  }\n\n  /**\n   * @docs-private\n   */\n  enterGroup(evt: Event) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.groupService.enter(this.effectiveBoundary());\n  }\n}\n","import {\n  computed,\n  Directive,\n  input,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\n\nimport { DaffRovingTabIndexBoundaryDirective } from './roving-tab-index-boundary.directive';\nimport { DaffRovingTabIndexService } from './roving-tab-index-group.service';\n\n/**\n * Declares that an element is an RTI target.\n * Automatically applied to `<a>` and `<button>` elements.\n */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[rti],a,button',\n  host: {\n    '[attr.tabindex]': 'tabindex()',\n    '[attr.data-rti]': 'group()',\n    '(keydown.escape)': 'leaveGroup($event)',\n    '(keydown.arrowup)': 'previous($event)',\n    '(keydown.arrowdown)': 'next($event)',\n  },\n})\nexport class DaffRovingTabIndexDirective {\n  /**\n   * Allows the RTI group to be overriden.\n   * By default it will be the nearest ancestor or the default root group if no boundary ancestor exists.\n   * @see {@link DaffRovingTabIndexBoundaryDirective}.\n   */\n  readonly rti = input<string>('');\n  /**\n   * The group in which this RTI target resides.\n   * See {@link DaffRovingTabIndexBoundaryDirective} to make an element act as the boundary of an RTI group.\n   */\n  readonly group = computed(() => this.rti() || this.parent?.effectiveBoundary() || '');\n  /**\n   * @docs-private\n   */\n  readonly tabindex = computed(() =>\n    this.service.group() === this.group()\n      ? 0\n      : -1,\n  );\n\n  constructor(\n    private service: DaffRovingTabIndexService,\n    @Optional() @SkipSelf() private parent: DaffRovingTabIndexBoundaryDirective,\n  ) {}\n\n  /**\n   * @docs-private\n   */\n  leaveGroup(evt: Event) {\n    evt.stopPropagation();\n    this.service.leave();\n  }\n\n  /**\n   * @docs-private\n   */\n  next(evt: Event) {\n    evt.stopPropagation();\n    this.service.next();\n  }\n\n  /**\n   * @docs-private\n   */\n  previous(evt: Event) {\n    evt.stopPropagation();\n    this.service.previous();\n  }\n}\n","// Core\nexport * from './animation/animation-state-with-params';\nexport * from './prefix-suffix/public_api';\nexport * from './colorable/public_api';\nexport * from './breakpoints/public_api';\nexport * from './constructor/constructor';\nexport * from './statusable/public_api';\nexport * from './skeletonable/public_api';\nexport * from './text-alignable/public_api';\nexport * from './compactable/public_api';\nexport * from './manage-container-layout/public_api';\nexport * from './article-encapsulated/public_api';\nexport * from './theming/public_api';\nexport * from './lazy/public_api';\nexport * from './focus/public_api';\nexport * from './sizable/public_api';\nexport * from './openable/public_api';\nexport * from './orientable/public_api';\nexport * from './selectable/public_api';\nexport * from './sticky/public_api';\nexport * from './disableable/public_api';\nexport * from './loadable/public_api';\nexport * from './roving-tab-index/public_api';\n","/*\n * Public API Surface of @daffodil/design\n */\n\n// Atoms\nexport * from './atoms/form/form-label/public_api';\n\n// Core\nexport * from './core/public_api';\n","/**\n * This is a filler file for making the\n * demo work in dev mode.\n */\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffOsThemeService","i2.DaffThemeStorageService","i1.DaffThemingService","i1.DaffRovingTabIndexService","i3.DaffRovingTabIndexDirective","i2.DaffRovingTabIndexBoundaryDirective"],"mappings":"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"}