{"version":3,"file":"danske-sapphire-angular-lab.mjs","sources":["../../src/lib/common/coerce-boolean.decorator.ts","../../src/lib/common/auto-id.decorator.ts","../../src/lib/accordion/src/accordion-item.component.ts","../../src/lib/accordion/src/accordion-item.component.html","../../src/lib/accordion/src/accordion.component.ts","../../src/lib/accordion/src/accordion.component.html","../../src/lib/accordion/src/accordion-item-content.directive.ts","../../src/lib/accordion/src/accordion-item-heading.directive.ts","../../src/lib/accordion/src/accordion.module.ts","../../src/lib/alert/src/alert-content.directive.ts","../../src/lib/alert/src/alert.component.ts","../../src/lib/alert/src/alert.component.html","../../src/lib/alert/src/alert-title.directive.ts","../../src/lib/alert/src/alert.module.ts","../../src/lib/amount/src/amount.component.ts","../../src/lib/amount/src/amount.component.html","../../src/lib/amount/src/amount.module.ts","../../src/lib/amount/public_api.ts","../../src/lib/autocomplete/src/autocomplete.component.ts","../../src/lib/autocomplete/src/autocomplete.component.html","../../src/lib/autocomplete/src/autocomplete-trigger.directive.ts","../../src/lib/autocomplete/src/autocomplete.module.ts","../../src/lib/breadcrumbs/src/breadcrumb-item.component.ts","../../src/lib/breadcrumbs/src/breadcrumbs.component.ts","../../src/lib/breadcrumbs/src/breadcrumbs.component.html","../../src/lib/breadcrumbs/src/breadcrumbs.module.ts","../../src/lib/calendar/src/shared/date-utils.ts","../../src/lib/calendar/src/week-number.pipe.ts","../../src/lib/calendar/src/shared/utils.ts","../../src/lib/calendar/src/shared/calendar-view.ts","../../src/lib/calendar/src/shared/calendar-base.ts","../../src/lib/calendar/src/shared/calendar-grid.directive.ts","../../src/lib/calendar/src/day.pipe.ts","../../src/lib/calendar/src/month-name.pipe.ts","../../src/lib/calendar/src/year.pipe.ts","../../src/lib/calendar/src/shared/calendar-cell.directive.ts","../../src/lib/calendar/src/calendar-cell-button.component.ts","../../src/lib/calendar/src/calendar-cell-button.component.html","../../src/lib/calendar/i18n/index.ts","../../src/lib/common/translate.service.ts","../../src/lib/calendar/src/shared/calendar-next-button.directive.ts","../../src/lib/calendar/src/shared/calendar-previous-button.directive.ts","../../src/lib/common/translate.pipe.ts","../../src/lib/calendar/src/calendar-header.component.ts","../../src/lib/calendar/src/calendar-header.component.html","../../src/lib/calendar/src/shared/single-selection-calendar.directive.ts","../../src/lib/common/focusWithoutScrolling.ts","../../src/lib/calendar/src/shared/calendar-cell-button.ts","../../src/lib/calendar/src/shared/single-selection-calendar-cell-button.directive.ts","../../src/lib/calendar/src/sapphire-date-locale.ts","../../src/lib/calendar/src/calendar.component.ts","../../src/lib/calendar/src/calendar.component.html","../../src/lib/calendar/src/shared/range-calendar.directive.ts","../../src/lib/calendar/src/shared/range-calendar-cell-button.directive.ts","../../src/lib/calendar/src/range-calendar.component.ts","../../src/lib/calendar/src/range-calendar.component.html","../../src/lib/calendar/src/calendar.module.ts","../../src/lib/date-field/src/validators.ts","../../src/lib/date-field/src/utils/isScrollable.ts","../../src/lib/date-field/src/utils/getScrollParent.ts","../../src/lib/date-field/src/utils/getScrollParents.ts","../../src/lib/date-field/src/utils/scrollIntoView.ts","../../src/lib/date-field/src/date-field.token.ts","../../src/lib/date-field/i18n/index.ts","../../src/lib/date-field/src/date-field-segment.component.ts","../../src/lib/date-field/src/utils/Segment.ts","../../src/lib/date-field/src/utils/placeholders.ts","../../src/lib/date-field/src/utils/getSegmentLimits.ts","../../src/lib/date-field/src/utils/getFormatterOptions.ts","../../src/lib/date-field/src/date-field-segment-literal.component.ts","../../src/lib/date-field/src/date-field-input.component.ts","../../src/lib/date-field/src/date-field-input.component.html","../../src/lib/date-field/src/date-field.component.ts","../../src/lib/date-field/src/date-field.component.html","../../src/lib/date-field/src/date-range-field.component.ts","../../src/lib/date-field/src/date-range-field.component.html","../../src/lib/date-field/src/date-field.module.ts","../../src/lib/date-field/public_api.ts","../../src/lib/filtering/src/filter-dropdown.component.ts","../../src/lib/filtering/src/filter-dropdown.component.html","../../src/lib/filtering/src/filtering.module.ts","../../src/lib/filtering/public_api.ts","../../src/lib/flag/src/flag.component.ts","../../src/lib/flag/src/flag.module.ts","../../src/lib/labeled-value/src/labeled-value.component.ts","../../src/lib/labeled-value/src/labeled-value.module.ts","../../src/lib/labeled-value/public_api.ts","../../src/lib/danske-progress-bar/src/danske-progress-bar.component.ts","../../src/lib/danske-progress-bar/src/danske-progress-bar.component.html","../../src/lib/danske-progress-bar/src/danske-progress-bar.module.ts","../../src/lib/progress-indicator/src/progress-indicator.component.ts","../../src/lib/progress-indicator/src/progress-indicator.component.html","../../src/lib/progress-indicator/src/progress-indicator.module.ts","../../src/lib/slider/src/slider.provider.ts","../../src/lib/slider/src/slider-thumb.component.ts","../../src/lib/slider/src/slider-track.component.ts","../../src/lib/slider/src/slider.component.ts","../../src/lib/slider/src/slider.component.html","../../src/lib/slider/src/slider.module.ts","../../src/lib/search-field/src/search-field-input.directive.ts","../../src/lib/search-field/src/search-field.component.ts","../../src/lib/search-field/src/search-field.component.html","../../src/lib/search-field/src/search-field.module.ts","../../src/lib/search-field/public_api.ts","../../src/lib/tag-group/i18n/index.ts","../../src/lib/tag-group/src/tag.component.ts","../../src/lib/tag-group/src/tag.component.html","../../src/lib/tag-group/src/tag-group.component.ts","../../src/lib/tag-group/src/tag-group.module.ts","../../src/lib/tag-group/public_api.ts","../../src/lib/toast/src/ToastQueue.ts","../../src/lib/toast/i18n/index.ts","../../src/lib/toast/src/toast.component.ts","../../src/lib/toast/src/toast.component.html","../../src/lib/toast/src/toast-region.component.ts","../../src/lib/toast/src/toast-region.component.html","../../src/lib/toast/src/toast.service.ts","../../src/lib/toast/src/toast.module.ts","../../src/lib/lab.module.ts","../../src/public-api.ts","../../src/danske-sapphire-angular-lab.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * To be used on input props of type boolean, to allow value-less shorthand\n * usage. A caveat is that the type will need to be BooleanInput, since TS\n * doesn't support type mutations through decorators, at the moment:\n * https://github.com/Microsoft/TypeScript/issues/4881\n */\nexport function CoerceBoolean(clazz: any, propName: string, descriptor?: any) {\n  if (arguments.length === 0) {\n    // support usage of the form @CoerceBoolean()\n    return CoerceBoolean;\n  }\n  if (descriptor) {\n    const originalSetter = descriptor.set;\n    return Object.assign({}, descriptor, {\n      set: function (value: any) {\n        originalSetter.call(this, coerceBooleanProperty(value));\n      },\n    });\n  } else {\n    return Object.assign(\n      {},\n      {\n        set: function (this: any, value: BooleanInput): void {\n          this[`__${propName}`] = coerceBooleanProperty(value);\n        },\n        get: function (this: any): boolean {\n          return this[`__${propName}`] || false;\n        },\n      }\n    );\n  }\n}\n","let nextUniqueId = 0;\n\n/**\n * To be used on id props that require an auto-generated value, if none provided\n * by the user.\n */\nexport const AutoId = ({ prefix = 'generated' }: { prefix?: string } = {}) => {\n  return function AutoId(clazz: any, propName: string, descriptor?: any): any {\n    const getter = function (this: any) {\n      let id = descriptor?.get() || this[`__${propName}`];\n      if (!id) {\n        id = this[\n          `__${propName}`\n        ] = `${prefix}-id-${nextUniqueId++}-${Math.floor(\n          Math.random() * 10000000\n        )}`;\n      }\n      return id;\n    };\n    return Object.assign(\n      {},\n      {\n        set:\n          descriptor?.set ||\n          function (this: any, value: any) {\n            this[`__${propName}`] = value;\n          },\n        get: getter,\n      }\n    );\n  };\n};\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport {\n  SapphireIconModule,\n  SapphireTypographyModule,\n  UseComponentStyles,\n} from '@danske/sapphire-angular';\nimport { AccordionComponent } from './accordion.component';\nimport { A11yModule, FocusableOption } from '@angular/cdk/a11y';\nimport { NgIf } from '@angular/common';\n\n@Component({\n  templateUrl: './accordion-item.component.html',\n  selector: 'sp-accordion-item',\n  hostDirectives: [UseComponentStyles],\n  standalone: true,\n  imports: [\n    UseComponentStyles,\n    NgIf,\n    SapphireIconModule,\n    SapphireTypographyModule,\n    A11yModule,\n  ],\n})\nexport class AccordionItemComponent implements FocusableOption {\n  constructor(private accordion: AccordionComponent) {}\n\n  get headerLevel() {\n    return this.accordion.headerLevel;\n  }\n\n  /**\n   * Accordion item heading, useful when the heading is a simple string.\n   * {@link sp-accordion-item-heading} can be used instead in other cases.\n   **/\n  @Input()\n  heading?: string;\n\n  @AutoId()\n  _buttonId: string = '';\n\n  @AutoId()\n  _regionId: string = '';\n\n  @ViewChild('button')\n  _buttonElement!: ElementRef<HTMLButtonElement>;\n\n  @Input()\n  @CoerceBoolean\n  disabled?: boolean;\n\n  /**\n   * The ARIA role for the accordion item content wrapper.\n   * Defaults to 'region'.\n   */\n  @Input()\n  contentRole: 'region' | 'group' = 'group';\n\n  /** Whether the AccordionItem is expanded. */\n  @Input()\n  get expanded(): boolean {\n    return this._expanded;\n  }\n  set expanded(expanded: BooleanInput) {\n    expanded = coerceBooleanProperty(expanded);\n\n    // Only emit events and update the internal value if the value changes.\n    if (this._expanded !== expanded) {\n      this._expanded = expanded;\n\n      if (expanded) {\n        this.opened.emit();\n      } else {\n        this.closed.emit();\n      }\n    }\n  }\n  private _expanded = false;\n\n  /** Event emitted every time the AccordionItem is closed. */\n  @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();\n  /** Event emitted every time the AccordionItem is opened. */\n  @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Sets the expanded state of the accordion item to false. */\n  close(): void {\n    if (!this.disabled) {\n      this.expanded = false;\n    }\n  }\n\n  /** Sets the expanded state of the accordion item to true. */\n  open(): void {\n    if (!this.disabled) {\n      this.expanded = true;\n    }\n  }\n\n  _onClick() {\n    if (!this.disabled) {\n      this.accordion?.toggle(this);\n    }\n  }\n\n  focus() {\n    this._buttonElement.nativeElement.focus();\n  }\n}\n","<div\n  class=\"sapphire-accordion__item\"\n  [class.sapphire-accordion__item--open]=\"expanded\"\n  [class.is-disabled]=\"disabled\"\n  _spUseComponentStyles\n>\n  <div role=\"heading\" [attr.aria-level]=\"headerLevel\" _spUseComponentStyles>\n    <button\n      #button\n      class=\"sapphire-accordion__item-header\"\n      _spUseComponentStyles\n      [disabled]=\"!!disabled\"\n      [attr.aria-expanded]=\"!!expanded\"\n      [attr.id]=\"_buttonId\"\n      [attr.aria-controls]=\"expanded ? _regionId : undefined\"\n      (click)=\"_onClick()\"\n      type=\"button\"\n    >\n      <div class=\"sapphire-accordion__item-heading\" _spUseComponentStyles>\n        <div *ngIf=\"heading\" sp-heading=\"6\">\n          {{ heading }}\n        </div>\n        <ng-content select=\"sp-accordion-item-heading\"></ng-content>\n      </div>\n      <div class=\"sapphire-accordion__item-arrow\" _spUseComponentStyles>\n        <sp-icon size=\"lg\" name=\"chevronDown\"></sp-icon>\n      </div>\n    </button>\n  </div>\n  <div\n    class=\"sapphire-accordion__item-content-wrapper sapphire-accordion__item-content-wrapper--with-transition\"\n    _spUseComponentStyles\n    [attr.role]=\"contentRole\"\n    [attr.aria-hidden]=\"!expanded\"\n    [attr.id]=\"_regionId\"\n    [attr.aria-labelledby]=\"_buttonId\"\n  >\n    <div class=\"sapphire-accordion__item-content\" _spUseComponentStyles>\n      <div class=\"sapphire-accordion__item-content-inner\" _spUseComponentStyles>\n        <ng-content select=\"sp-accordion-item-content\"></ng-content>\n        <ng-content></ng-content>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  AfterContentInit,\n  Component,\n  ContentChildren,\n  HostListener,\n  Inject,\n  Input,\n  QueryList,\n} from '@angular/core';\nimport {\n  IconRegistry,\n  ViewEncapsulationProvider,\n} from '@danske/sapphire-angular';\n\nimport { AccordionItemComponent } from './accordion-item.component';\nimport { A11yModule, FocusKeyManager, FocusOrigin } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { iconChevronDown } from '@danske/sapphire-icons/js';\n\n/**\n * Accordion is a vertically stacked set of items, that consist of an interactive header and\n * expandable content section. An accordion item's content display can be toggled on and off\n * by clicking the component's header above.\n */\n@Component({\n  selector: 'sp-accordion',\n  templateUrl: './accordion.component.html',\n  styleUrls: ['./accordion.component.scss'],\n  providers: [ViewEncapsulationProvider],\n  host: {\n    '[attr.aria-label]': 'null',\n    '[attr.aria-labelledby]': 'null',\n  },\n  standalone: true,\n  imports: [A11yModule],\n})\nexport class AccordionComponent implements AfterContentInit {\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n    iconRegistry: IconRegistry\n  ) {\n    iconRegistry.registerIcon(iconChevronDown);\n  }\n\n  /** Allow one or many expanded items\n   * @default 'multiple'\n   */\n  @Input()\n  expansionMode?: 'single' | 'multiple' = 'multiple';\n\n  /** Set aria-level attribute for item's header. Accessibility requirement.\n   * Defines the hierarchical level of an element within a page structure.\n   * @default 5\n   */\n  @Input()\n  headerLevel?: 1 | 2 | 3 | 4 | 5 | 6 = 5;\n\n  /**\n   * Defines a string value that labels the current element.\n   */\n  @Input('aria-label')\n  ariaLabel?: string;\n  /**\n   * Identifies the element (or elements) that labels the current element.\n   */\n  @Input('aria-labelledby')\n  ariaLabelledBy?: string;\n\n  /**\n   * A unique id for the host DOM element.\n   */\n  @Input('id')\n  id?: string;\n\n  @ContentChildren(AccordionItemComponent)\n  items: QueryList<AccordionItemComponent> = new QueryList();\n\n  private keyManager?: FocusKeyManager<AccordionItemComponent | undefined>;\n\n  ngAfterContentInit(): void {\n    this.keyManager = new FocusKeyManager<AccordionItemComponent>(this.items);\n  }\n\n  toggle(item: AccordionItemComponent) {\n    if (item.expanded) {\n      item.close();\n      return;\n    }\n\n    item.open();\n    if (this.expansionMode === 'single') {\n      this.items?.forEach((nItem) => {\n        if (nItem !== item) {\n          nItem.close();\n        }\n      });\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  private handleKeyDown(event: KeyboardEvent) {\n    if (this.keyManager?.activeItem) {\n      switch (event.key) {\n        case 'ArrowUp': {\n          event.stopPropagation();\n          event.preventDefault();\n\n          this.keyManager.setPreviousItemActive();\n          break;\n        }\n        case 'ArrowDown': {\n          event.stopPropagation();\n          event.preventDefault();\n\n          this.keyManager.setNextItemActive();\n\n          break;\n        }\n        case 'Home': {\n          event.stopPropagation();\n          event.preventDefault();\n\n          this.keyManager.setFirstItemActive();\n\n          break;\n        }\n        case 'End': {\n          event.stopPropagation();\n          event.preventDefault();\n          this.keyManager.setLastItemActive();\n\n          break;\n        }\n        default:\n          return;\n      }\n    }\n  }\n\n  _handleFocus(origin: FocusOrigin) {\n    if (origin) {\n      const activeItem = this.items.find(\n        ({ _buttonElement }) =>\n          _buttonElement.nativeElement === this.document.activeElement\n      );\n      this.keyManager?.setActiveItem(activeItem);\n    } else {\n      this.keyManager?.setActiveItem(undefined);\n    }\n  }\n}\n","<div\n  cdkMonitorSubtreeFocus\n  class=\"sapphire-accordion\"\n  (cdkFocusChange)=\"_handleFocus($event)\"\n  [attr.aria-label]=\"ariaLabel\"\n  [attr.aria-labelledby]=\"ariaLabelledBy\"\n  [attr.id]=\"id\"\n>\n  <ng-content></ng-content>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sp-accordion-item-content',\n  standalone: true,\n})\nexport class AccordionItemContentDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sp-accordion-item-heading',\n  standalone: true,\n})\nexport class AccordionItemHeadingDirective {}\n","import { NgModule } from '@angular/core';\n\nimport { AccordionComponent } from './accordion.component';\nimport { AccordionItemComponent } from './accordion-item.component';\nimport { AccordionItemContentDirective } from './accordion-item-content.directive';\nimport { AccordionItemHeadingDirective } from './accordion-item-heading.directive';\n\n@NgModule({\n  imports: [\n    AccordionComponent,\n    AccordionItemComponent,\n    AccordionItemContentDirective,\n    AccordionItemHeadingDirective,\n  ],\n  exports: [\n    AccordionComponent,\n    AccordionItemComponent,\n    AccordionItemContentDirective,\n    AccordionItemHeadingDirective,\n  ],\n})\nexport class SapphireAccordionModule {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sp-alert-content',\n})\nexport class AlertContentDirective {}\n","import { Component, ContentChild, Input } from '@angular/core';\nimport { IconRegistry } from '@danske/sapphire-angular';\nimport {\n  iconCheckmarkOutline,\n  iconError,\n  iconInformation,\n  iconWarning,\n} from '@danske/sapphire-icons/js';\nimport { AlertContentDirective } from './alert-content.directive';\n\n/**\n * The `sp-alert` component is used to display important information, tips, or warnings within your application.\n * It provides a visually distinct container to highlight content for users.\n */\n@Component({\n  selector: 'sp-alert',\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.scss'],\n  standalone: false,\n})\nexport class AlertComponent {\n  constructor(iconRegistry: IconRegistry) {\n    iconRegistry.registerIcons([\n      iconCheckmarkOutline,\n      iconError,\n      iconWarning,\n      iconInformation,\n    ]);\n  }\n\n  @ContentChild(AlertContentDirective)\n  _content?: AlertContentDirective;\n\n  get hasContent(): boolean {\n    return this._content !== undefined;\n  }\n  /**\n   * @default 'info'\n   */\n  @Input()\n  variant?: 'info' | 'warning' | 'negative' | 'positive' = 'info';\n\n  public get icon(): string {\n    switch (this.variant) {\n      case 'positive':\n        return 'checkmarkOutline';\n      case 'negative':\n        return 'error';\n      case 'warning':\n        return 'warning';\n      case 'info':\n      default:\n        return 'information';\n    }\n  }\n}\n","<div\n  class=\"sapphire-alert\"\n  role=\"alert\"\n  [ngClass]=\"variant !== 'info' ? 'sapphire-alert--' + variant : null\"\n>\n  <span class=\"sapphire-alert__icon\">\n    <sp-icon size=\"sm\" [name]=\"icon\"></sp-icon>\n  </span>\n  <div\n    sp-body\n    size=\"sm\"\n    semibold=\"true\"\n    [color]=\"variant === 'info' ? 'informative' : variant\"\n    class=\"sapphire-alert__title\"\n  >\n    <ng-content select=\"sp-alert-title\"></ng-content>\n  </div>\n  <section *ngIf=\"hasContent\" sp-body size=\"sm\" class=\"sapphire-alert__content\">\n    <ng-content select=\"sp-alert-content\"></ng-content>\n  </section>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sp-alert-title',\n})\nexport class AlertTitleDirective {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertComponent } from './alert.component';\nimport { AlertTitleDirective } from './alert-title.directive';\nimport { AlertContentDirective } from './alert-content.directive';\nimport { SapphireIconModule } from '@danske/sapphire-angular';\nimport { SapphireTypographyModule } from '@danske/sapphire-angular';\n\n@NgModule({\n  declarations: [AlertComponent, AlertTitleDirective, AlertContentDirective],\n  imports: [CommonModule, SapphireIconModule, SapphireTypographyModule],\n  exports: [AlertComponent, AlertTitleDirective, AlertContentDirective],\n})\nexport class SapphireAlertModule {}\n","import {\n  Component,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  ThemeCheckDirective,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\n\n/**\n * Format options for currency amounts.\n * The style is always 'currency', so only currency-related options are exposed.\n */\nexport type CurrencyFormatOptions = Pick<\n  Intl.NumberFormatOptions,\n  | 'currency'\n  | 'currencyDisplay'\n  | 'currencySign'\n  | 'signDisplay'\n  | 'minimumFractionDigits'\n  | 'maximumFractionDigits'\n  | 'minimumSignificantDigits'\n  | 'maximumSignificantDigits'\n  | 'useGrouping'\n  | 'notation'\n>;\n\nexport interface GroupedPart {\n  type: 'sign' | 'number' | 'currency';\n  value: string;\n}\n/**\n * Component used for displaying financial values.\n */\n@Component({\n  selector: 'sp-amount',\n  templateUrl: './amount.component.html',\n  styleUrls: ['./amount.component.scss'],\n  standalone: false,\n  host: {\n    '[attr.aria-label]': 'formattedValue',\n    class: 'sapphire-amount',\n  },\n  hostDirectives: [ThemeCheckDirective, UseComponentStylesOnHost],\n})\nexport class AmountComponent implements OnInit, OnChanges {\n  /**\n   * When displaying amounts, readability and visual hierarchy are key. Use medium weight for primary emphasis to highlight amounts or regular weight for secondary emphasis.\n   *\n   * @default 'regular'\n   */\n  @Input()\n  emphasis: 'primary' | 'regular' = 'regular';\n\n  /**\n   * The variant of the Amount component. `positive` shows a green color, and should be used for amounts greater than zero.\n   *\n   * @default 'neutral'\n   */\n  @Input()\n  variant: 'neutral' | 'positive' = 'neutral';\n\n  /**\n   * The amount value to be formatted and displayed.\n   *\n   * If displaying the sign is a requirement, ensure the value is a string that starts with '+' or '-'.\n   * Alternatively, you can use the `signDisplay` option in `formatOptions` to control the display of the sign for numeric values.\n   */\n  @Input()\n  value: string | number = '';\n\n  /** Currency formatting options */\n  @Input()\n  formatOptions?: CurrencyFormatOptions;\n\n  /**\n   * The size of the amount text.\n   * @default 'md'\n   */\n  @Input()\n  size: 'lg' | 'md' | 'sm' | 'xs' = 'md';\n\n  formattedValue = '';\n  groupedParts: GroupedPart[] = [];\n\n  constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n  ngOnInit(): void {\n    this.formatAmount();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['value'] || changes['formatOptions'] || changes['locale']) {\n      this.formatAmount();\n    }\n  }\n\n  private formatAmount(): void {\n    const numberValue = this.parseValue(this.value);\n    const formatter = this.createFormatter();\n\n    this.groupedParts = this.groupAmountParts(numberValue, formatter);\n    this.formattedValue = this.groupedParts.map((part) => part.value).join('');\n  }\n\n  private parseValue(value: string | number): number {\n    const parsed = Number(value);\n    return isNaN(parsed) ? 0 : parsed;\n  }\n\n  private createFormatter(): Intl.NumberFormat {\n    return new Intl.NumberFormat(this.locale, {\n      style: this.formatOptions?.currency ? 'currency' : undefined,\n      signDisplay:\n        this.formatOptions?.signDisplay ||\n        String(this.value).startsWith('+') ||\n        String(this.value).startsWith('-')\n          ? 'always'\n          : 'auto',\n      minimumFractionDigits: 2,\n      ...this.formatOptions,\n    });\n  }\n\n  private groupAmountParts(\n    numberValue: number,\n    formatter: Intl.NumberFormat\n  ): GroupedPart[] {\n    const parts = formatter.formatToParts(numberValue);\n    const result: GroupedPart[] = [];\n    let currentNumber = '';\n\n    parts.forEach((part) => {\n      if (part.type === 'plusSign' || part.type === 'minusSign') {\n        result.push({ type: 'sign', value: part.value });\n      } else if (part.type === 'currency') {\n        if (currentNumber) {\n          result.push({ type: 'number', value: currentNumber });\n          currentNumber = '';\n        }\n        result.push({ type: 'currency', value: part.value });\n      } else if (part.type !== 'literal') {\n        currentNumber += part.value;\n      }\n    });\n\n    if (currentNumber) {\n      result.push({ type: 'number', value: currentNumber });\n    }\n\n    return result;\n  }\n\n  get textColor(): 'primary' | 'positive' {\n    return this.variant === 'positive' ? 'positive' : 'primary';\n  }\n\n  get isSemibold(): boolean {\n    return this.emphasis === 'primary';\n  }\n}\n","<span\n  *ngFor=\"let part of groupedParts\"\n  sp-body\n  [size]=\"size\"\n  [color]=\"textColor\"\n  [semibold]=\"isSemibold\"\n  >{{ part.value }}</span\n>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  SapphireTypographyModule,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\n\nimport { AmountComponent } from './amount.component';\n\n@NgModule({\n  declarations: [AmountComponent],\n  imports: [CommonModule, SapphireTypographyModule, UseComponentStylesOnHost],\n  exports: [AmountComponent],\n})\nexport class SapphireAmountModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/amount.component';\nexport * from './src/amount.module';\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  DoCheck,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport {\n  IconSizeProvider,\n  ListboxChild,\n  ListboxComponent,\n  OptionComponent,\n  SapphireListboxModule,\n  SapphirePopoverModule,\n  SectionDirective,\n} from '@danske/sapphire-angular';\nimport { AutocompleteTriggerDirective } from './autocomplete-trigger.directive';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';\n\n/**\n * Used in connection with an input field, to provide autocompletion suggestions.\n */\n@Component({\n  standalone: true,\n  selector: 'sp-autocomplete',\n  imports: [NgIf, AsyncPipe, SapphireListboxModule, SapphirePopoverModule],\n  host: {\n    '[id]': 'null',\n  },\n  templateUrl: 'autocomplete.component.html',\n})\nexport class AutocompleteComponent\n  implements IconSizeProvider, OnInit, AfterContentInit, AfterViewInit, DoCheck\n{\n  size = 'md' as const;\n\n  /**\n   * Whether to apply a default case-insensitive `includes` filter on the\n   * options based on the connected input value.\n   */\n  @Input()\n  @CoerceBoolean\n  filterOptions?: BooleanInput;\n\n  @Input()\n  @AutoId()\n  id = '';\n\n  /**\n   * Emitted when the autocompletion popover is opened\n   */\n  @Output()\n  opened = new EventEmitter<void>();\n\n  /**\n   * Emitted when the autocompletion popover is closed\n   */\n\n  @Output()\n  closed = new EventEmitter<void>();\n\n  /**\n   * Emitted when an autocompletion option is selected\n   */\n  @Output()\n  optionSelected = new EventEmitter<OptionComponent>();\n\n  @ViewChild(TemplateRef)\n  _templateRef?: TemplateRef<unknown>;\n\n  @ViewChildren(ListboxComponent)\n  private listboxQuery?: QueryList<ListboxComponent>;\n\n  @ViewChild(ListboxComponent)\n  listboxComponent?: ListboxComponent;\n\n  @ContentChildren(ListboxChild)\n  private listboxChildrenQuery?: QueryList<ListboxChild>;\n\n  @ContentChildren(OptionComponent, { descendants: true })\n  private options?: QueryList<OptionComponent>;\n\n  private trigger?: AutocompleteTriggerDirective;\n\n  _minWidth?: number;\n  _filteredItems: ListboxChild[] = [];\n  query$ = new BehaviorSubject('');\n\n  ngOnInit(): void {\n    // Setting width once on init, to avoid width jumps when close button of the search field\n    // causes the input to resize.\n    this._minWidth = this.trigger?.elementRef.nativeElement.offsetWidth;\n  }\n\n  ngDoCheck() {\n    const value = this.trigger?.elementRef.nativeElement.value ?? '';\n    if (this.query$.value !== value) {\n      this.query$.next(value);\n    }\n  }\n\n  ngAfterContentInit() {\n    /**\n     * In this use case of options, we are only interested in the text value of options.\n     * So we set values (similar to how `key` is set in our React impl, when collection components\n     * use jsx children), since listbox change events works based on values\n     */\n    const ensureValues = () => {\n      this.options?.forEach((child, index) => {\n        if (child instanceof OptionComponent && !child.value) {\n          child.value = `$.${index}`;\n        }\n      });\n    };\n    ensureValues();\n    this.options?.changes.subscribe(ensureValues);\n    combineLatest([\n      this.query$.pipe(\n        filter(() => Boolean(this.filterOptions)),\n        startWith(''),\n        distinctUntilChanged()\n      ),\n      this.listboxChildrenQuery?.changes.pipe(\n        startWith(this.listboxChildrenQuery?.toArray() ?? [])\n      ) ?? [],\n    ])\n      .pipe(\n        map(([query]) => {\n          const items = this.listboxChildrenQuery?.toArray() ?? [];\n          return query ? filterListboxChildren(items, query) : items;\n        })\n      )\n      .subscribe((filteredItems) => {\n        /**\n         * Couldn't find any better solution than delaying the change here, to avoid NG0100 error.\n         * The error happens because we have a binding in the template based on a content query\n         * (listbox children), which changes after this component is change-detected. Manually\n         * calling ChangeDetectorRef#detectChanges() didn't work and neither did using async pipe\n         * directly on the observable\n         */\n        Promise.resolve().then(() => {\n          this._filteredItems = filteredItems;\n        });\n      });\n  }\n\n  ngAfterViewInit(): void {\n    /**\n     * With the current API of `ListboxComponent` and `ListboxInputDirective`, the connection\n     * of listbox and input is by passing listbox instance to listbox input instance, via an @Input\n     * which is not that useful in this use case. So we manually set the input whenever the listbox\n     * is instantiated.\n     */\n    this.listboxQuery?.changes.subscribe(() => {\n      if (this.trigger) {\n        this.trigger.listboxInput.listbox = this.listboxQuery?.get(0);\n      }\n    });\n  }\n\n  /**\n   * Internally used in spAutocomplete directive to set the connected trigger.\n   * @internal\n   */\n  _setTrigger(trigger: AutocompleteTriggerDirective): void {\n    this.trigger = trigger;\n  }\n\n  _onOptionSelected(value: string) {\n    const option = this.options\n      ?.toArray()\n      .find((option) => option.value === value);\n    const textValue = option?.label ?? '';\n    this.trigger?.setValue(textValue);\n    this.optionSelected.emit(option);\n  }\n\n  _selected() {\n    this.trigger?.close();\n  }\n}\n\n/**\n * Filters listbox children\n * Can be moved listbox code, as a helper, and be reused in searchable select too (with some\n * tweaks), when autocomplete is moved to core\n */\nconst filterListboxChildren = (\n  children: ListboxChild[],\n  query: string\n): ListboxChild[] => {\n  return children\n    .map((child) => {\n      if (!query) {\n        return child;\n      }\n      if (child instanceof SectionDirective) {\n        const filteredChildren = filterListboxChildren(\n          [...child.children],\n          query\n        );\n        return filteredChildren.length > 0\n          ? section(\n              // nested sections are not allowed currently, so filtering to adhere\n              // SectionDirective's children type\n              filteredChildren.filter(\n                (item): item is OptionComponent =>\n                  item instanceof OptionComponent\n              ),\n              child.ariaLabel\n            )\n          : null;\n      }\n      if (\n        child instanceof OptionComponent &&\n        (!query ||\n          (child.label.toLowerCase().includes(query.toLowerCase()) &&\n            child.label !== query)) // filtering out exact matches as it doesn't make sense to suggest the same thing\n      ) {\n        return child;\n      }\n      return null;\n    })\n    .filter((i): i is ListboxChild => i != null);\n\n  function section(options: Iterable<OptionComponent>, ariaLabel?: string) {\n    const section = new SectionDirective();\n    section.children = options;\n    section.ariaLabel = ariaLabel;\n    return section;\n  }\n};\n","<ng-template>\n  <sp-popover\n    [style.display]=\"_filteredItems?.length === 0 ? 'none' : undefined\"\n    noPadding\n    noMaxWidth\n    noAutoFocus\n    [style.min-width.px]=\"_minWidth\"\n  >\n    <sp-listbox\n      [id]=\"id\"\n      [spListboxItems]=\"_filteredItems || []\"\n      (selected)=\"_selected()\"\n      (selectedValuesChange)=\"_onOptionSelected($event[0])\"\n    ></sp-listbox>\n  </sp-popover>\n</ng-template>\n","import {\n  BooleanInput,\n  coerceNumberProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport {\n  OverlayConfig,\n  OverlayRef,\n  STANDARD_DROPDOWN_BELOW_POSITIONS,\n} from '@angular/cdk/overlay';\nimport { Portal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Directive,\n  ElementRef,\n  HostListener,\n  Injector,\n  Input,\n  OnDestroy,\n  Optional,\n  Self,\n  ViewContainerRef,\n} from '@angular/core';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { ListboxInputDirective, SapphireOverlay } from '@danske/sapphire-angular';\nimport { NgControl } from '@angular/forms';\nimport { takeUntil } from 'rxjs/operators';\nimport { merge, Subject } from 'rxjs';\n\n@Directive({\n  selector: 'input[spAutocomplete]',\n  standalone: true,\n  hostDirectives: [ListboxInputDirective],\n  host: {\n    '[attr.autocomplete]': '\"off\"', // does it need to be an input?\n    '[attr.role]': 'disabled ? null : \"combobox\"',\n    '[attr.aria-autocomplete]': 'disabled ? null : \"list\"',\n    '[attr.aria-expanded]': 'disabled ? null : isOpen().toString()',\n    '[attr.aria-controls]': '(disabled || !isOpen()) ? null : autocomplete?.id',\n    '[attr.aria-haspopup]': 'disabled ? null : \"listbox\"',\n  },\n  exportAs: 'spAutocompleteTrigger',\n})\nexport class AutocompleteTriggerDirective implements OnDestroy {\n  /**\n   * A reference to the sp-autocomplete that should be attached to the input.\n   */\n  @Input('spAutocomplete')\n  set autocomplete(value: AutocompleteComponent | undefined) {\n    this._autocomplete = value;\n    if (this._autocomplete) {\n      this._autocomplete._setTrigger(this);\n    }\n  }\n  get autocomplete(): AutocompleteComponent | undefined {\n    return this._autocomplete;\n  }\n  /** Whether the autocompletion is disabled */\n  @Input('spAutocompleteDisabled')\n  @CoerceBoolean\n  disabled: BooleanInput = false;\n\n  /**\n   * Minimum input length for which the autocompletion popover should be opened.\n   * By default, autocompletion popover is not opened on focus/click for empty\n   * input for a less intrusive UX, considering autocompletion pattern is\n   * typically used for use cases where it only facilitates the input filling,\n   * and selecting a predefined option is not necessary.\n   * @default 1\n   */\n  @Input('spAutocompleteMinLength')\n  get minLength(): number {\n    return this._minLength;\n  }\n  set minLength(value: NumberInput) {\n    this._minLength = coerceNumberProperty(value);\n  }\n  private _minLength = 1;\n\n  private _autocomplete?: AutocompleteComponent;\n\n  private overlayRef: OverlayRef | null = null;\n  private contentPortal: Portal<unknown> | null = null;\n  protected readonly destroyed: Subject<void> = new Subject();\n\n  constructor(\n    private injector: Injector,\n    private cdkOverlay: SapphireOverlay,\n    private viewContainerRef: ViewContainerRef,\n    public readonly elementRef: ElementRef<HTMLInputElement>,\n    public readonly listboxInput: ListboxInputDirective,\n    @Optional() @Self() private formControl: NgControl | null\n  ) {}\n\n  ngOnDestroy() {\n    this.destroyed.next(undefined);\n    this.destroyed.complete();\n    this.overlayRef?.dispose();\n    this.overlayRef = null;\n  }\n\n  /** Open the autocomplete popover. */\n  open() {\n    if (\n      !this.isOpen() &&\n      this._autocomplete &&\n      !this.disabled &&\n      !this.elementRef.nativeElement.disabled\n    ) {\n      if (!this.overlayRef) {\n        this.overlayRef = this.cdkOverlay.create(\n          new OverlayConfig({\n            scrollStrategy: this.cdkOverlay.scrollStrategies.close(),\n          })\n        );\n        this.overlayRef.updatePositionStrategy(\n          this.cdkOverlay\n            .position()\n            .flexibleConnectedTo(this.elementRef)\n            .withLockedPosition()\n            .withGrowAfterOpen()\n            /**\n             * Disabling pushing, to fix an issue in FlexibleConnectedPositionStrategy where the\n             * overlay's bottom grows past the top of the trigger element (aka origin).\n             * This is more of an issue in cases like autocomplete,\n             * where the trigger element remains interactive after the overlay is opened.\n             **/\n            .withPush(false)\n            .withViewportMargin(6)\n            .withPositions(\n              STANDARD_DROPDOWN_BELOW_POSITIONS.map((i) => ({\n                ...i,\n                offsetY: i.overlayY === 'top' ? 6 : -6,\n              }))\n            )\n        );\n        this.overlayRef.detachments().subscribe(() => {\n          this.autocomplete?.closed.next();\n        });\n        this.overlayRef.attachments().subscribe(() => {\n          this.autocomplete?.opened.next();\n        });\n        this.overlayRef\n          .outsidePointerEvents()\n          .pipe(takeUntil(merge(this.overlayRef.detachments(), this.destroyed)))\n          .subscribe((event: MouseEvent) => {\n            if (\n              !this.elementRef.nativeElement.contains(event.target as Element)\n            ) {\n              this.close();\n            }\n          });\n      }\n      this.overlayRef.attach(this.getContentPortal());\n    }\n  }\n\n  close() {\n    if (this.isOpen() && this.overlayRef) {\n      this.overlayRef.detach();\n    }\n  }\n\n  /** Whether the autocomplete popover is open. */\n  isOpen() {\n    return !!this.overlayRef?.hasAttached();\n  }\n\n  /**\n   * Toggle the autocomplete popover\n   */\n  toggle() {\n    return this.isOpen() ? this.close() : this.open();\n  }\n\n  /**\n   * Used to set the value of the input, when an autocompletion option is selected.\n   */\n  setValue(value: string) {\n    if (this.formControl) {\n      this.formControl?.control?.markAsDirty();\n      this.formControl?.control?.setValue(value);\n    } else {\n      this.elementRef.nativeElement.value = value;\n    }\n  }\n\n  @HostListener('input')\n  private onInput() {\n    if (this.mayOpen()) {\n      this.open();\n    } else {\n      this.close();\n    }\n  }\n\n  @HostListener('focus')\n  @HostListener('click')\n  private onFocusOrClick() {\n    if (this.mayOpen()) {\n      this.open();\n    } else {\n      this.close();\n    }\n  }\n\n  /** Close the opened popover. */\n  @HostListener('blur', ['$event'])\n  private onBlur() {\n    this.close();\n  }\n\n  @HostListener('keydown', ['$event'])\n  private onKeydown(event: KeyboardEvent) {\n    switch (event.key) {\n      // selection by pressing Enter on the connected input doesn't trigger `selected` event\n      // currently in listbox. case 'Enter' should be removed when/if that's changed.\n      // a caveat now is that pressing Enter without any option being active will just close\n      // the suggestion menu without selecting anything. We could check on the existence of\n      // active option here to avoid that, if needed.\n      case 'Enter':\n      case 'Escape':\n        this.close();\n        break;\n      case 'ArrowDown':\n        this.open();\n        break;\n    }\n  }\n\n  private getContentPortal(): Portal<unknown> | null {\n    if (this._autocomplete?._templateRef && !this.contentPortal) {\n      this.contentPortal = new TemplatePortal(\n        this._autocomplete._templateRef,\n        this.viewContainerRef,\n        { autocomplete: this },\n        Injector.create({\n          providers: [],\n          parent: this.injector,\n        })\n      );\n    }\n    return this.contentPortal;\n  }\n\n  private mayOpen() {\n    return this.elementRef.nativeElement.value.length >= this.minLength;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { AutocompleteTriggerDirective } from './autocomplete-trigger.directive';\n\n@NgModule({\n  imports: [AutocompleteComponent, AutocompleteTriggerDirective],\n  exports: [AutocompleteComponent, AutocompleteTriggerDirective],\n})\nexport class SapphireAutocompleteModule {}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n  Component,\n  ContentChildren,\n  Input,\n  Optional,\n  QueryList,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  IconComponent,\n  IconRegistry,\n  SapphireButtonModule,\n  SapphireIconModule,\n  SapphireTypographyModule,\n  TruncatedWithTooltipContentElementDirective,\n  TruncatedWithTooltipDirective,\n  UseComponentStyles,\n} from '@danske/sapphire-angular';\nimport { iconChevronRight } from '@danske/sapphire-icons/js';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { BreadcrumbsComponent } from './breadcrumbs.component';\n\n@Component({\n  selector: 'li[sp-breadcrumb-item]',\n  template: `\n    <!-- Render button as link if \"href\" is provided -->\n    <a\n      *ngIf=\"!isLast && href\"\n      sp-button\n      [href]=\"href\"\n      [target]=\"target\"\n      variant=\"tertiary\"\n      [disabled]=\"disabled\"\n      iconAlign=\"left\"\n      [size]=\"size\"\n    >\n      <sp-icon *ngIf=\"icon\" spButtonIcon [name]=\"icon\"></sp-icon>\n      <ng-container *ngTemplateOutlet=\"projected\" />\n    </a>\n\n    <!-- Render static item if \"href\" is not provided -->\n    <span\n      *ngIf=\"!isLast && !href\"\n      class=\"sapphire-breadcrumbs__item--static\"\n      [class.sapphire-breadcrumbs__item--static--sm]=\"size === 'sm'\"\n      [class.sapphire-breadcrumbs__item--static--lg]=\"size === 'lg'\"\n      _spUseComponentStyles\n      spTruncatedWithTooltip\n    >\n      <sp-icon *ngIf=\"icon\" [size]=\"size\" [name]=\"icon\"></sp-icon>\n      <ng-container *ngTemplateOutlet=\"projected\" />\n    </span>\n\n    <span *ngIf=\"isLast\" sp-body [size]=\"fontSize\" semibold=\"true\">\n      <ng-container *ngTemplateOutlet=\"projected\" />\n    </span>\n\n    <ng-template #projected>\n      <ng-content></ng-content>\n    </ng-template>\n\n    <span\n      *ngIf=\"!isLast\"\n      class=\"sapphire-breadcrumbs__separator\"\n      aria-hidden=\"true\"\n      _spUseComponentStyles\n    >\n      <sp-icon [size]=\"separatorSize\" name=\"chevronRight\"></sp-icon>\n    </span>\n  `,\n  styleUrls: ['./breadcrumbs.component.scss'],\n  host: {\n    role: 'listitem',\n    class: 'sapphire-breadcrumbs__item',\n    '[attr.data-disabled]': 'isDisabled',\n  },\n  hostDirectives: [UseComponentStyles],\n  standalone: true,\n  imports: [\n    CommonModule,\n    SapphireButtonModule,\n    SapphireIconModule,\n    SapphireTypographyModule,\n    TruncatedWithTooltipDirective,\n    TruncatedWithTooltipContentElementDirective,\n  ],\n})\nexport class BreadcrumbItemComponent {\n  @ContentChildren(IconComponent, { descendants: true })\n  icons!: QueryList<IconComponent>;\n\n  @Input() icon: string | null = null;\n\n  @Input() href?: string;\n  @Input() target?: string;\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  constructor(\n    iconRegistry: IconRegistry,\n    @Optional() private breadcrumbsParent?: BreadcrumbsComponent\n  ) {\n    iconRegistry.registerIcon(iconChevronRight);\n  }\n\n  get isLast() {\n    return this === this.breadcrumbsParent?.items?.last;\n  }\n\n  get size() {\n    return this.breadcrumbsParent?.size ?? 'md';\n  }\n\n  get fontSize() {\n    return this.size === 'lg' ? 'md' : this.size === 'md' ? 'sm' : 'xs';\n  }\n\n  get separatorSize() {\n    return this.size === 'lg' ? 'md' : 'sm';\n  }\n\n  get isDisabled() {\n    return this.breadcrumbsParent?.disabled ?? false;\n  }\n}\n","import {\n  Component,\n  Input,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  SapphireButtonModule,\n  SapphireIconModule,\n  SapphireTypographyModule,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n/**\n * Show the path to the current page through a hierarchical trail of links.\n */\n@Component({\n  selector: 'sp-breadcrumbs',\n  templateUrl: './breadcrumbs.component.html',\n  styleUrls: ['./breadcrumbs.component.scss'],\n  host: {\n    '[attr.aria-label]': 'null',\n    '[attr.aria-labelledby]': 'null',\n  },\n  standalone: true,\n  hostDirectives: [UseComponentStylesOnHost],\n  imports: [\n    CommonModule,\n    SapphireButtonModule,\n    SapphireIconModule,\n    SapphireTypographyModule,\n  ],\n})\nexport class BreadcrumbsComponent implements AfterContentInit {\n  @ContentChildren(BreadcrumbItemComponent)\n  items!: QueryList<BreadcrumbItemComponent>;\n\n  /**\n   * Defines a string value that labels the current element.\n   */\n  @Input('aria-label')\n  ariaLabel?: string;\n\n  /**\n   * Identifies the element (or elements) that labels the current element.\n   */\n  @Input('aria-labelledby')\n  ariaLabelledby?: string;\n\n  /**\n   * The size of the breadcrumbs.\n   * @default 'md'\n   */\n  @Input('size')\n  sizeInput: 'sm' | 'md' | 'lg' = 'md';\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  ngAfterContentInit() {\n    if (this.items) {\n      this.items.forEach((item) => {\n        if (!item.disabled && this.disabled) {\n          item.disabled = this.disabled;\n        }\n      });\n    }\n  }\n\n  get size() {\n    return this.sizeInput;\n  }\n}\n","<ol\n  class=\"sapphire-breadcrumbs\"\n  [attr.aria-labelledby]=\"ariaLabelledby\"\n  [attr.aria-label]=\"ariaLabel\"\n  [class.sapphire-breadcrumbs--sm]=\"sizeInput === 'sm'\"\n  [class.sapphire-breadcrumbs--lg]=\"sizeInput === 'lg'\"\n>\n  <ng-content></ng-content>\n</ol>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreadcrumbsComponent } from './breadcrumbs.component';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport {\n  SapphireButtonModule,\n  SapphireIconModule,\n  SapphireTypographyModule,\n} from '@danske/sapphire-angular';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    SapphireButtonModule,\n    SapphireIconModule,\n    SapphireTypographyModule,\n    BreadcrumbsComponent,\n    BreadcrumbItemComponent,\n  ],\n  exports: [BreadcrumbsComponent, BreadcrumbItemComponent],\n})\nexport class SapphireBreadcrumbsModule {}\n","import {\n  CalendarDate,\n  DateDuration,\n  DateValue,\n  getDayOfWeek,\n  getLocalTimeZone,\n  isSameDay,\n  maxDate,\n  minDate,\n  startOfMonth,\n  startOfWeek,\n  startOfYear,\n  toCalendarDate,\n} from '@internationalized/date';\n\nexport function multipleDuration(duration: DateDuration, times: number) {\n  const result = { ...duration };\n  for (const key in duration) {\n    result[key as keyof DateDuration] =\n      duration[key as keyof DateDuration]! * times;\n  }\n  return result;\n}\n\nexport function alignStart(\n  date: CalendarDate,\n  duration: DateDuration,\n  minValue?: DateValue | null,\n  maxValue?: DateValue | null\n) {\n  // align to the start of the largest unit\n  let aligned = date;\n  if (duration.years) {\n    aligned = startOfYear(date);\n  } else if (duration.months) {\n    aligned = startOfMonth(date);\n  }\n\n  return constrainStart(date, aligned, duration, minValue, maxValue);\n}\n\nexport function constrainStart(\n  date: CalendarDate,\n  aligned: CalendarDate,\n  duration: DateDuration,\n  minValue?: DateValue | null,\n  maxValue?: DateValue | null\n): CalendarDate {\n  if (minValue && date.compare(minValue) >= 0) {\n    aligned = maxDate(\n      aligned,\n      alignStart(toCalendarDate(minValue), duration)\n    ) as CalendarDate; // maxDate accepts null|undefined arguments and just returns one of the values, but constrainStart doesn't\n  }\n\n  if (maxValue && date.compare(maxValue) <= 0) {\n    aligned = minDate(\n      aligned,\n      alignEnd(toCalendarDate(maxValue), duration)\n    ) as CalendarDate;\n  }\n\n  return aligned;\n}\n\nexport function constrainValue(\n  date: CalendarDate,\n  minValue?: DateValue | null,\n  maxValue?: DateValue | null\n) {\n  if (minValue) {\n    date = maxDate(date, toCalendarDate(minValue)) as CalendarDate;\n  }\n\n  if (maxValue) {\n    date = minDate(date, toCalendarDate(maxValue)) as CalendarDate;\n  }\n\n  return date;\n}\n\nexport function previousAvailableDate(\n  date: CalendarDate,\n  minValue: DateValue,\n  isDateUnavailable: ((date: CalendarDate) => boolean) | undefined\n): CalendarDate | undefined {\n  if (!isDateUnavailable) {\n    return date;\n  }\n\n  while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n    date = date.subtract({ days: 1 });\n  }\n\n  if (date.compare(minValue) >= 0) {\n    return date;\n  }\n  return undefined;\n}\n\nexport function alignEnd(\n  date: CalendarDate,\n  duration: DateDuration,\n  minValue?: DateValue | null,\n  maxValue?: DateValue | null\n) {\n  const d = { ...duration };\n  // subtract 1 from the smallest unit\n  if (d.days) {\n    d.days--;\n  } else if (d.months) {\n    d.months--;\n  } else if (d.years) {\n    d.years--;\n  }\n\n  const aligned = alignStart(date, duration).subtract(d);\n  return constrainStart(date, aligned, duration, minValue, maxValue);\n}\n\n/**\n * Almost copied from https://weeknumber.com/how-to/javascript\n * No corresponding API found in @internationalized/date package, at the time\n * of writing this.\n * Caveat: this code is based on built-in Date object, and may not be\n * calendar-agnostic. We don't really care about supporting different types\n * of calendar, so it should be fine for now. But we can look into improving\n * this if needed.\n */\nexport const getWeekNumber = function (dateValue: DateValue) {\n  const date = new Date(dateValue.toDate(getLocalTimeZone()));\n  date.setHours(0, 0, 0, 0);\n  // Thursday in current week decides the year.\n  date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n  // January 4 is always in week 1.\n  const week1 = new Date(date.getFullYear(), 0, 4);\n  // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n  return (\n    1 +\n    Math.round(\n      ((date.getTime() - week1.getTime()) / 86400000 -\n        3 +\n        ((week1.getDay() + 6) % 7)) /\n        7\n    )\n  );\n};\n\n/**\n * Returns an array of dates in the week index counted from the provided start date, or the first\n * visible date if not given. The returned array always has 7 elements, but may include null if\n * the date does not exist according to the calendar system.\n */\nexport function getDatesInWeek(\n  weekIndex: number,\n  from: CalendarDate,\n  locale: string\n): Array<CalendarDate | null> {\n  // let date = startOfWeek(from, locale);\n  let date = from.add({ weeks: weekIndex });\n  const dates = [];\n\n  date = startOfWeek(date, locale);\n\n  // startOfWeek will clamp dates within the calendar system's valid range, which may\n  // start in the middle of a week. In this case, add null placeholders.\n  const dayOfWeek = getDayOfWeek(date, locale);\n  for (let i = 0; i < dayOfWeek; i++) {\n    dates.push(null);\n  }\n\n  while (dates.length < 7) {\n    dates.push(date);\n    const nextDate = date.add({ days: 1 });\n    if (isSameDay(date, nextDate)) {\n      // If the next day is the same, we have hit the end of the calendar system.\n      break;\n    }\n    date = nextDate;\n  }\n\n  // Add null placeholders if at the end of the calendar system.\n  while (dates.length < 7) {\n    dates.push(null);\n  }\n\n  return dates;\n}\n\nexport function isInvalid(\n  date: DateValue,\n  minValue: DateValue | undefined | null,\n  maxValue: DateValue | undefined | null\n) {\n  return (\n    (minValue != null && date.compare(minValue) < 0) ||\n    (maxValue != null && date.compare(maxValue) > 0)\n  );\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarDate } from '@internationalized/date';\nimport { getWeekNumber } from './shared/date-utils';\n\n/**\n * Transforms a date into week number in year.\n */\n@Pipe({\n  standalone: true,\n  name: 'weekNumber',\n})\nexport class WeekNumberPipe implements PipeTransform {\n  transform(date: CalendarDate): number {\n    return getWeekNumber(date);\n  }\n}\n","import {\n  CalendarDate,\n  endOfMonth,\n  startOfMonth,\n} from '@internationalized/date';\n\n/**\n * Creates an array filled with numbers from {@param start} to {@param end}\n */\nexport function range(start: number, end: number): number[] {\n  return Array(end - start + 1)\n    .fill(null)\n    .map((_, index) => start + index);\n}\n\n/**\n * Converts an array into chunks\n * @returns iterator of the chunks\n */\nexport function* chunks<T>(\n  array: T[],\n  chunkSize: number\n): Generator<T[], void> {\n  for (let i = 0; i < array.length; i += chunkSize) {\n    yield array.slice(i, i + chunkSize);\n  }\n}\n\n/**\n * Checks if all days in a month are unavailable.\n * @param month The month date to check\n * @param isDateUnavailable Callback to check if a date is unavailable\n * @returns true if all days in the month are unavailable\n */\nexport function isMonthAllDaysUnavailable(\n  month: CalendarDate,\n  isDateUnavailable?: (date: CalendarDate) => boolean\n): boolean {\n  if (!isDateUnavailable) return false;\n\n  const monthStart = startOfMonth(month);\n  const monthEnd = endOfMonth(month);\n  let current = monthStart;\n\n  while (current.compare(monthEnd) <= 0) {\n    if (!isDateUnavailable(current)) {\n      return false;\n    }\n    current = current.add({ days: 1 });\n  }\n\n  return true;\n}\n","import {\n  CalendarDate,\n  DateDuration,\n  DateValue,\n  endOfMonth,\n  getWeeksInMonth,\n  isSameDay,\n  isSameMonth,\n  isSameYear,\n  startOfMonth,\n} from '@internationalized/date';\nimport { getDatesInWeek } from './date-utils';\nimport { chunks, range } from './utils';\n\nexport type CalendarView = 'days' | 'months' | 'years';\n\nexport interface CalendarViewImpl {\n  broaderView?: CalendarView;\n  narrowerView?: CalendarView;\n  cellDuration: DateDuration;\n  visibleDuration: DateDuration;\n  getGridCells(args: {\n    startDate: CalendarDate;\n    focusedDate: CalendarDate;\n    withFixedWeeks?: boolean;\n    locale: string;\n  }): Array<CalendarDate | null>[];\n\n  areSameCell(date1: DateValue, date2: DateValue): boolean;\n  areSamePage?(date1: DateValue, date2: DateValue): boolean;\n  /**\n   * Given a date, returns the date corresponding to the start of the date duration this view\n   * represents, if it's not the first cell in the grid of cells.\n   * @param date\n   */\n  getStartOfPage?(date: CalendarDate): CalendarDate;\n  /**\n   * Given a date, returns the date corresponding to the end of the date duration this view\n   * represents, if it's not the last cell in the grid of cells.\n   * @param date\n   */\n  getEndOfPage?(date: CalendarDate): CalendarDate;\n}\n\nconst daysView: CalendarViewImpl = {\n  getStartOfPage: startOfMonth,\n  getEndOfPage: endOfMonth,\n  broaderView: 'months',\n  cellDuration: { days: 1 },\n  visibleDuration: { months: 1 },\n  areSamePage: isSameMonth,\n  areSameCell: isSameDay,\n  getGridCells({\n    startDate,\n    withFixedWeeks,\n    locale,\n  }): Array<CalendarDate | null>[] {\n    return [\n      ...new Array(\n        withFixedWeeks ? 6 : getWeeksInMonth(startDate, locale)\n      ).keys(),\n    ].map((weekIndex) => getDatesInWeek(weekIndex, startDate, locale));\n  },\n};\n\nconst monthsView: CalendarViewImpl = {\n  broaderView: 'years',\n  narrowerView: 'days',\n  cellDuration: { months: 1 },\n  visibleDuration: { years: 1 },\n  areSamePage: isSameYear,\n  areSameCell: isSameMonth,\n  getGridCells({ focusedDate }): Array<CalendarDate | null>[] {\n    const numMonths = focusedDate.calendar.getMonthsInYear(focusedDate);\n    const months = range(1, numMonths).map((month) =>\n      focusedDate.set({ month })\n    );\n    return [...chunks(months, 3)];\n  },\n};\n\nconst yearsView: CalendarViewImpl = {\n  narrowerView: 'months',\n  cellDuration: { years: 1 },\n  visibleDuration: { years: 12 },\n  getGridCells({ focusedDate, startDate }): Array<CalendarDate | null>[] {\n    const yearNumbers = range(startDate.year, startDate.year + 11);\n    const years = yearNumbers.map((year) => focusedDate.set({ year }));\n    return [...chunks(years, 3)];\n  },\n  areSameCell: isSameYear,\n};\n\nexport const calendarViews: Record<CalendarView, CalendarViewImpl> = {\n  days: daysView,\n  months: monthsView,\n  years: yearsView,\n};\n","import {\n  Calendar,\n  CalendarDate,\n  CalendarIdentifier,\n  createCalendar,\n  DateDuration,\n  DateFormatter,\n  DateValue,\n  startOfWeek,\n  toCalendar,\n  toCalendarDate,\n  today,\n} from '@internationalized/date';\nimport { CalendarView, CalendarViewImpl, calendarViews } from './calendar-view';\nimport {\n  alignEnd,\n  alignStart,\n  constrainStart,\n  constrainValue,\n  isInvalid,\n} from './date-utils';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { CoerceBoolean } from '../../../common/coerce-boolean.decorator';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n@Directive({\n  selector: '[spCalendar]',\n  standalone: true,\n  exportAs: 'spCalendar',\n})\nexport abstract class CalendarBase\n  implements OnInit, OnDestroy, ControlValueAccessor\n{\n  @Output()\n  pageChange = new EventEmitter<'next' | 'previous'>();\n\n  @Output()\n  blurred = new EventEmitter();\n\n  /**\n   * The date that's currently focused in the calendar.\n   * - It determines the currently visible month/year/etc.\n   * - When calendar gets focused, the button corresponding to that date gets focused.\n   */\n  @Input()\n  get focusedDate(): CalendarDate {\n    return this._focusedDate || today(this.getTimezone());\n  }\n\n  set focusedDate(value: DateValue | undefined) {\n    this._focusedDate = value\n      ? toCalendar(toCalendarDate(value), this.calendar)\n      : value;\n    this.adjustStartDate();\n  }\n\n  protected _focusedDate?: CalendarDate | undefined;\n\n  @Input()\n  size: 'sm' | 'md' | 'lg' = 'lg';\n\n  @Input()\n  @CoerceBoolean\n  readonly: BooleanInput;\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  /**\n   * If the calendar should always show a fixed number of rows regardless of\n   * the current month's number of weeks. This helps preserve the calendar\n   * height as the user scrolls through months.\n   * @default false\n   */\n  @Input()\n  @CoerceBoolean\n  showFixedWeeks: BooleanInput;\n\n  @Input()\n  locale!: /* required input */ string;\n\n  abstract minValue?: DateValue | null;\n  abstract maxValue?: DateValue | null;\n  abstract autoFocus?: BooleanInput;\n\n  /**\n   * Callback that is called for each date of the calendar. If it returns true, then the date is\n   * unavailable.\n   */\n  @Input()\n  isDateUnavailable?: (date: DateValue) => boolean;\n\n  /**\n   * Calendar's view (day, month, year).\n   */\n  @Input()\n  view: CalendarView = 'days';\n\n  @Input() canBroadenView = (): boolean =>\n    !this.readonly && Boolean(this.viewImpl.broaderView);\n\n  get viewImpl(): CalendarViewImpl {\n    return calendarViews[this.view] ?? calendarViews.days;\n  }\n\n  startDate: CalendarDate;\n\n  get endDate() {\n    const duration = { ...this.visibleDuration };\n    if (duration.days) {\n      duration.days--;\n    } else {\n      duration.days = -1;\n    }\n    return this.startDate.add(duration);\n  }\n\n  @Input()\n  set visibleDuration(value: DateDuration) {\n    this._visibleDuration = value;\n  }\n  get visibleDuration() {\n    return this._visibleDuration ?? this.viewImpl.visibleDuration;\n  }\n  private _visibleDuration?: DateDuration;\n\n  dateFormatterByLocale: Record<string, DateFormatter> = {};\n  weekDayFormatterByLocale: Record<string, DateFormatter> = {};\n  calendarsByName: Record<string, Calendar> = {};\n\n  private get dateFormatter(): DateFormatter {\n    if (!this.dateFormatterByLocale[this.locale]) {\n      this.dateFormatterByLocale[this.locale] = new DateFormatter(this.locale);\n    }\n    return this.dateFormatterByLocale[this.locale];\n  }\n\n  private get weekDayFormatter(): DateFormatter {\n    if (!this.weekDayFormatterByLocale[this.locale]) {\n      this.weekDayFormatterByLocale[this.locale] = new DateFormatter(\n        this.locale,\n        {\n          weekday: 'short',\n          timeZone: this.getTimezone(),\n        }\n      );\n    }\n    return this.weekDayFormatterByLocale[this.locale];\n  }\n\n  get calendar(): Calendar {\n    const calendarName = this.dateFormatter.resolvedOptions().calendar;\n    if (!this.calendarsByName[calendarName]) {\n      this.calendarsByName[calendarName] = createCalendar(\n        this.dateFormatter.resolvedOptions().calendar as CalendarIdentifier\n      );\n    }\n    return this.calendarsByName[calendarName];\n  }\n\n  private focusMonitor = inject(FocusMonitor);\n  private elementRef = inject(ElementRef);\n\n  shouldFocusGrid = false;\n\n  constructor() {\n    this.startDate = alignStart(this.focusedDate, this.visibleDuration);\n  }\n\n  abstract isSelected(date: CalendarDate): boolean;\n\n  /**\n   * Called to select a date via UI.\n   */\n  abstract selectDate(date: CalendarDate): void;\n\n  ngOnInit() {\n    this.adjustStartDate();\n    let focused = false;\n    this.focusMonitor\n      .monitor(this.elementRef.nativeElement, true)\n      .subscribe((origin) => {\n        focused = Boolean(origin);\n        // Focus can get lost and immediately grabbed when paging\n        setTimeout(() => {\n          if (!focused) {\n            this._valueAccessorOnTouched?.();\n            this.blurred.emit();\n          }\n        });\n      });\n  }\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n  }\n\n  getTimezone(): string {\n    return this.dateFormatter.resolvedOptions().timeZone;\n  }\n\n  /** Sets the focused date.\n   * @param date the date to set as focused date\n   * @param focus whether the calendar should also get focused\n   **/\n  setFocusedDate(date: DateValue, focus = true) {\n    this.focusedDate = constrainValue(\n      toCalendar(toCalendarDate(date), this.calendar),\n      this.minValue,\n      this.maxValue\n    );\n    if (focus) {\n      this.setGridFocused();\n    }\n  }\n\n  /** Moves focus to the previous page of dates, e.g. the previous month if one month is visible. */\n  previousPage() {\n    this.pageChange.emit('previous');\n    const pageDuration = this.visibleDuration;\n    const start = this.startDate.subtract(pageDuration);\n    this.startDate = alignStart(\n      constrainStart(\n        this.focusedDate,\n        start,\n        pageDuration,\n        this.minValue,\n        this.maxValue\n      ),\n      pageDuration\n    );\n    this.setFocusedDate(this.focusedDate.subtract(pageDuration), false);\n  }\n\n  /** Moves focus to the next page of dates, e.g. the next month if one month is visible. */\n  nextPage() {\n    this.pageChange.emit('next');\n    const pageDuration = this.visibleDuration;\n    const start = this.startDate.add(pageDuration);\n    this.startDate = alignStart(\n      constrainStart(\n        this.focusedDate,\n        start,\n        pageDuration,\n        this.minValue,\n        this.maxValue\n      ),\n      pageDuration\n    );\n    this.setFocusedDate(this.focusedDate.add(pageDuration), false);\n  }\n\n  /** Returns whether the given date is disabled according to the `minValue, `maxValue`, and `isDisabled` props. */\n  isDateDisabled(date: CalendarDate) {\n    return (\n      date.compare(this.startDate) < 0 ||\n      date.compare(this.endDate) > 0 ||\n      isInvalid(date, this.minValue, this.maxValue)\n    );\n  }\n\n  canNarrowView(): boolean {\n    return !this.readonly && Boolean(this.viewImpl.narrowerView);\n  }\n\n  broadenView(): void {\n    if (this.viewImpl.broaderView) {\n      this.setView(this.viewImpl.broaderView);\n    }\n  }\n\n  narrowView(): void {\n    if (this.viewImpl.narrowerView) {\n      this.setView(this.viewImpl.narrowerView);\n    }\n  }\n\n  setView(view: CalendarView): void {\n    this.view = view;\n    this.adjustStartDate();\n  }\n\n  /** Selects the currently focused date. */\n  selectCell(cellDate: CalendarDate) {\n    this.setGridFocused();\n    if (this.canNarrowView()) {\n      this.narrowView();\n    } else {\n      this.selectDate(cellDate);\n    }\n  }\n\n  getWeekDays(): string[] {\n    const timeZone = this.getTimezone();\n    const weekStart = startOfWeek(today(timeZone), this.locale);\n    return [...new Array(7).keys()].map((index) => {\n      const date = weekStart.add({ days: index });\n      const dateDay = date.toDate(timeZone);\n      return this.weekDayFormatter.format(dateDay);\n    });\n  }\n\n  protected adjustStartDate() {\n    // then check if start date doesn't match what it should be based on the current view\n    const startOfCurrentPage =\n      (this.viewImpl.getStartOfPage?.(this.focusedDate) ||\n        this.viewImpl\n          .getGridCells({\n            startDate: this.startDate,\n            focusedDate: this.startDate,\n            withFixedWeeks: coerceBooleanProperty(this.showFixedWeeks),\n            locale: this.locale,\n          })\n          .reduce((soFar, row) =>\n            soFar.concat(row.filter((date) => date))\n          )[0]) ??\n      this.startDate;\n\n    // First see if focused date is moved to another page that would require updating start date\n    if (this.view === 'years') {\n      // The utilities copied form react-stately don't take a view of years into account.\n      // We need to handle it separately.\n      if (this.focusedDate.compare(this.startDate) < 0) {\n        this.startDate = this.startDate.subtract(this.visibleDuration);\n      } else if (this.focusedDate.compare(this.endDate) > 0) {\n        this.startDate = this.startDate.add(this.visibleDuration);\n      }\n      this.startDate = constrainValue(\n        this.startDate,\n        this.minValue,\n        this.maxValue\n      );\n    } else if (\n      this.focusedDate.compare(this.startDate) < 0 ||\n      startOfCurrentPage.compare(this.startDate) < 0\n    ) {\n      this.startDate = alignStart(\n        this.focusedDate,\n        this.visibleDuration,\n        this.minValue,\n        this.maxValue\n      );\n    } else if (this.focusedDate.compare(this.endDate) > 0) {\n      this.startDate = alignEnd(\n        this.focusedDate,\n        this.visibleDuration,\n        this.minValue,\n        this.maxValue\n      );\n    }\n  }\n\n  setGridFocused() {\n    this.shouldFocusGrid = true;\n    setTimeout(() => {\n      this.shouldFocusGrid = false;\n    });\n  }\n\n  //// ControlValueAccessor implementation ////\n  private _valueAccessorOnTouched?: () => void;\n  protected valueAccessorOnChange?: (value: any) => void;\n\n  abstract writeValue(obj: any): void;\n  registerOnChange(fn: any): void {\n    this.valueAccessorOnChange = fn;\n  }\n  registerOnTouched(fn: any): void {\n    this._valueAccessorOnTouched = fn;\n  }\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n  ////////////////////////////////////////////\n}\n","import { Directive, HostListener, Input, TrackByFunction } from '@angular/core';\nimport { multipleDuration } from './date-utils';\nimport {\n  CalendarDate,\n  endOfWeek,\n  getLocalTimeZone,\n  startOfWeek,\n} from '@internationalized/date';\nimport { CalendarView, calendarViews } from './calendar-view';\nimport { CalendarBase } from './calendar-base';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * Implements the accessibility and behavior of a calendar grid.\n * Similar to something like cdkCalendarGrid if it existed, which would in turn be similar to\n * useCalendarGrid from @react-aria/calendar\n * @internal\n */\n@Directive({\n  selector: '[spCalendarGrid]',\n  standalone: true,\n  host: {\n    role: 'grid',\n    '[attr.aria-readonly]': 'calendar.readonly',\n    '[attr.aria-disabled]': 'calendar.disabled',\n  },\n  exportAs: 'spCalendarGrid',\n})\nexport class CalendarGridDirective {\n  get cells(): Array<CalendarDate | null>[] {\n    const { locale, focusedDate, showFixedWeeks } = this.calendar;\n    return this.viewImpl.getGridCells({\n      startDate: this.startDate,\n      focusedDate,\n      locale,\n      withFixedWeeks: coerceBooleanProperty(showFixedWeeks),\n    });\n  }\n\n  get viewImpl() {\n    return calendarViews[this.view] || calendarViews.days;\n  }\n\n  @Input('spCalendarGridView')\n  view: CalendarView = 'days';\n\n  @Input('spCalendarGridStartDate')\n  startDate!: /* required input*/ CalendarDate;\n\n  shouldShowWeekNumber(date: CalendarDate | null): date is CalendarDate {\n    if (date) {\n      return (\n        this.startDate.month ===\n          startOfWeek(date, this.calendar.locale).month ||\n        this.startDate.month === endOfWeek(date, this.calendar.locale).month\n      );\n    } else {\n      return false;\n    }\n  }\n\n  readonly rowTrackBy: TrackByFunction<CalendarDate[]> = (_index, dates) => {\n    return this.cellTrackBy(_index, dates[0]);\n  };\n  readonly cellTrackBy: TrackByFunction<CalendarDate> = (_index, date) => {\n    return date.toDate(getLocalTimeZone()).getTime();\n  };\n  constructor(public calendar: CalendarBase) {}\n\n  /** Moves focus to the previous row of dates, e.g. the previous work. */\n  @HostListener('keydown.ArrowUp', ['$event'])\n  focusPreviousRow(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(\n      this.calendar.focusedDate.subtract(\n        multipleDuration(this.viewImpl.cellDuration, this.cells[0].length)\n      )\n    );\n  }\n\n  /** Moves focus to the next row of dates, e.g. the next week. */\n  @HostListener('keydown.ArrowDown', ['$event'])\n  focusNextRow(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(\n      this.calendar.focusedDate.add(\n        multipleDuration(this.viewImpl.cellDuration, this.cells[0].length)\n      )\n    );\n  }\n\n  /** Moves focus to the previous calendar date. */\n  @HostListener('keydown.ArrowLeft', ['$event'])\n  focusPreviousCell(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(this.calendar.focusedDate.subtract(this.viewImpl.cellDuration));\n  }\n\n  /** Moves focus to the next calendar date. */\n  @HostListener('keydown.ArrowRight', ['$event'])\n  focusNextCell(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(this.calendar.focusedDate.add(this.viewImpl.cellDuration));\n  }\n\n  /**\n   * Moves focus to the previous section of dates based on what is currently displayed.\n   * For example, if days (of a month) are displayed, then focus moves to the previous month.\n   */\n  @HostListener('keydown.PageUp', ['$event'])\n  focusPreviousSection(event: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(\n      this.calendar.focusedDate.subtract(this.viewImpl.visibleDuration)\n    );\n  }\n\n  /**\n   * Moves focus to the next section of dates based on what is currently displayed.\n   * For example, if days (of a month) are displayed, then focus moves to the next month.\n   */\n  @HostListener('keydown.PageDown', ['$event'])\n  focusNextSection(event: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(this.calendar.focusedDate.add(this.viewImpl.visibleDuration));\n  }\n\n  /**\n   * Moves focus to the previous larger unit than the one displayed.\n   * For example, if days are displayed, then focus moves to the previous year, not previous month.\n   */\n  @HostListener('keydown.shift.PageUp', ['$event'])\n  focusPreviousLargerSection(event: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    if (this.viewImpl.broaderView) {\n      this.change(\n        this.calendar.focusedDate.subtract(\n          calendarViews[this.viewImpl.broaderView].visibleDuration\n        )\n      );\n    }\n  }\n\n  /**\n   * Moves focus to the next larger unit than the one displayed.\n   * For example, if days are displayed, then focus moves to the next year, not next month.\n   */\n  @HostListener('keydown.shift.PageDown', ['$event'])\n  focusNextLargerSection(event: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    if (this.viewImpl.broaderView) {\n      this.change(\n        this.calendar.focusedDate.add(\n          calendarViews[this.viewImpl.broaderView].visibleDuration\n        )\n      );\n    }\n  }\n\n  @HostListener('keydown.Home', ['$event'])\n  focusSectionStart(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    const newFocusedDate =\n      this.viewImpl.getStartOfPage?.(this.calendar.focusedDate) ??\n      this.getAllCells()[0];\n    if (newFocusedDate) {\n      this.change(newFocusedDate);\n    }\n  }\n\n  @HostListener('keydown.End', ['$event'])\n  focusSectionEnd(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    const newFocusedDate =\n      this.viewImpl.getEndOfPage?.(this.calendar.focusedDate) ??\n      this.getAllCells().slice(-1)[0];\n    if (newFocusedDate) {\n      this.change(newFocusedDate);\n    }\n  }\n\n  @HostListener('keydown.Space', ['$event'])\n  @HostListener('keydown.Enter', ['$event'])\n  selectByKeyboard(event?: KeyboardEvent) {\n    this.calendar.selectCell(this.calendar.focusedDate);\n    event?.preventDefault();\n  }\n\n  private change(newFocusedDate: CalendarDate) {\n    this.calendar.setFocusedDate(newFocusedDate, true);\n  }\n\n  private getAllCells() {\n    return this.cells.reduce((soFar, row) => soFar.concat(row));\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarDate, DateFormatter } from '@internationalized/date';\n\n/**\n * Transforms a date into day number in month, based on the current locale.\n */\n@Pipe({\n  standalone: true,\n  name: 'day',\n})\nexport class DayPipe implements PipeTransform {\n  transform(date: CalendarDate, timeZone: string, locale: string): string {\n    // DateFormatter itself keeps an internal cache based on options deep equality, and Pipes are\n    // pure by default, meaning they won't be called twice with the same value, so no need to\n    // maintain a local cache of date formatters.\n    return (\n      new DateFormatter(locale, {\n        day: 'numeric',\n        timeZone: timeZone,\n        calendar: date.calendar.identifier,\n      })\n        .formatToParts(date.toDate(timeZone))\n        .find((part) => part.type === 'day')?.value || ''\n    );\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarDate, DateFormatter } from '@internationalized/date';\n\n/**\n * Transforms a date into month name, based on the current locale.\n */\n@Pipe({\n  standalone: true,\n  name: 'monthName',\n})\nexport class MonthNamePipe implements PipeTransform {\n  transform(\n    date: CalendarDate,\n    timeZone: string,\n    locale: string,\n    withYear = false,\n    monthFormat: 'long' | 'short' = 'long'\n  ): string {\n    // DateFormatter itself keeps an internal cache based on options deep equality, and Pipes are\n    // pure by default, meaning they won't be called twice with the same value, so no need to\n    // maintain a local cache of date formatters.\n    return new DateFormatter(locale, {\n      month: monthFormat,\n      year: withYear ? 'numeric' : undefined,\n      calendar: date.calendar.identifier,\n      timeZone: timeZone,\n    }).format(date.toDate(timeZone));\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarDate, DateFormatter } from '@internationalized/date';\n\n/**\n * Transforms a date into year number, based on the current locale.\n */\n@Pipe({\n  standalone: true,\n  name: 'year',\n})\nexport class YearPipe implements PipeTransform {\n  transform(date: CalendarDate, timeZone: string, locale: string): string {\n    // DateFormatter itself keeps an internal cache based on options deep equality, and Pipes are\n    // pure by default, meaning they won't be called twice with the same value, so no need to\n    // maintain a local cache of date formatters.\n    return new DateFormatter(locale, {\n      year: 'numeric',\n      calendar: date.calendar.identifier,\n      timeZone: timeZone,\n    }).format(date.toDate(timeZone));\n  }\n}\n","import { Directive, Input } from '@angular/core';\nimport { CalendarDate, today } from '@internationalized/date';\n\nimport { CalendarBase } from './calendar-base';\nimport { CalendarGridDirective } from './calendar-grid.directive';\nimport { isMonthAllDaysUnavailable } from './utils';\n\n/**\n * Behavior of calendar grid cell.\n * Similar to something like cdkCalendarCell if it existed, which would in turn be similar to\n * useCalendarCell from @react-aria/calendar.\n * @internal\n *  TODO(a11y): improve aria-label, matching the react impl\n *  TODO(a11y): add aria-describedBy\n */\n@Directive({\n  selector: '[spCalendarCell]',\n  standalone: true,\n  host: {\n    '[attr.aria-disabled]': '!isSelectable()',\n    '[attr.aria-selected]': 'isSelected()',\n    '[attr.aria-invalid]': 'isInvalid()',\n    role: 'gridcell',\n  },\n  exportAs: 'spCalendarCell',\n})\nexport class CalendarCellDirective {\n  @Input('spCalendarCell')\n  date: CalendarDate | null = null;\n\n  constructor(\n    private calendar: CalendarBase,\n    private grid: CalendarGridDirective\n  ) {}\n\n  isSelectable(): boolean {\n    if (!this.date) {\n      return false;\n    }\n\n    const isDateDisabled =\n      this.calendar.disabled || this.calendar.isDateDisabled(this.date);\n\n    const isDateUnavailable =\n      this.calendar.view === 'days'\n        ? this.calendar.isDateUnavailable?.(this.date)\n        : false;\n\n    const isAllDaysUnavailableInMonth =\n      this.calendar.view === 'months' && this.calendar.isDateUnavailable\n        ? isMonthAllDaysUnavailable(this.date, this.calendar.isDateUnavailable)\n        : false;\n\n    return (\n      !isDateDisabled && !isDateUnavailable && !isAllDaysUnavailableInMonth\n    );\n  }\n\n  /**\n   * Whether the date representing a calendar cell is in selected state, considering the\n   * current view.\n   */\n  isSelected() {\n    return !!this.date && this.calendar.isSelected(this.date);\n  }\n  /**\n   * Whether the date representing a calendar cell is in selected state, considering the\n   * current view.\n   */\n  isCurrent(): boolean {\n    return (\n      !!this.date &&\n      this.grid.viewImpl.areSameCell(\n        this.date,\n        today(this.calendar.getTimezone())\n      )\n    );\n  }\n  isInvalid(): boolean {\n    return Boolean(\n      this.date &&\n        this.calendar.isSelected(this.date) &&\n        (this.calendar.isDateDisabled(this.date) ||\n          this.calendar.isDateUnavailable?.(this.date))\n    );\n  }\n  isOutside(): boolean {\n    return Boolean(\n      this.date &&\n        this.grid.viewImpl.areSamePage?.(this.date, this.grid.startDate) ===\n          false\n    );\n  }\n}\n","import { Component } from '@angular/core';\nimport { UseComponentStyles } from '@danske/sapphire-angular';\nimport { NgSwitch, NgSwitchCase, TitleCasePipe } from '@angular/common';\n\nimport { CalendarCellDirective } from './shared/calendar-cell.directive';\nimport { DayPipe } from './day.pipe';\nimport { MonthNamePipe } from './month-name.pipe';\nimport { YearPipe } from './year.pipe';\nimport { CalendarBase } from './shared/calendar-base';\n\n/**\n * Sapphire implementation of calendar cell button.\n */\n@Component({\n  selector: 'sp-calendar-cell-button',\n  templateUrl: 'calendar-cell-button.component.html',\n  standalone: true,\n  host: {\n    class: 'sapphire-calendar__button',\n    '[class.is-disabled]': '!cell.isSelectable()',\n    '[class.sapphire-calendar__button--day]': \"calendar.view === 'days'\",\n    '[class.sapphire-calendar__button--outside-month]': 'cell.isOutside()',\n    '[class.sapphire-calendar__button--current]': 'cell.isCurrent()',\n    '[class.sapphire-calendar__button--selected]': 'cell.isSelected()',\n  },\n  hostDirectives: [UseComponentStyles],\n  imports: [\n    NgSwitch,\n    NgSwitchCase,\n    DayPipe,\n    MonthNamePipe,\n    YearPipe,\n    TitleCasePipe,\n    UseComponentStyles,\n  ],\n})\nexport class CalendarCellButtonComponent {\n  constructor(\n    public readonly calendar: CalendarBase,\n    public readonly cell: CalendarCellDirective\n  ) {}\n}\n","<span\n  class=\"sapphire-calendar__button-text\"\n  _spUseComponentStyles\n  [ngSwitch]=\"calendar.view\"\n>\n  <ng-container *ngSwitchCase=\"'days'\">{{\n    cell.date && (cell.date | day : calendar.getTimezone() : calendar.locale)\n  }}</ng-container>\n  <ng-container *ngSwitchCase=\"'months'\">{{\n    cell.date &&\n      (cell.date\n        | monthName\n          : calendar.getTimezone()\n          : calendar.locale\n          : false\n          : (calendar.size === 'sm' ? 'short' : 'long')\n        | titlecase)\n  }}</ng-container>\n  <ng-container *ngSwitchCase=\"'years'\">{{\n    cell.date && (cell.date | year : calendar.getTimezone() : calendar.locale)\n  }}</ng-container>\n</span>\n","import { MessageDictionary } from '@internationalized/message';\nimport da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nconst translations = new MessageDictionary({\n  'da-DK': da,\n  'en-US': en,\n  'de-DE': de,\n  'fi-FI': fi,\n  'no-NO': no,\n  'pl-PL': pl,\n  'sv-SE': se,\n});\n\nexport default translations;\n","import { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\nimport {\n  MessageDictionary,\n  MessageFormatter,\n} from '@internationalized/message';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TranslateService {\n  constructor(@Inject(LOCALE_ID) @Optional() private locale: string) {\n    this.locale = this.locale || 'en-DK';\n  }\n\n  translate(value: string, translations: MessageDictionary): string {\n    return translations.getStringForLocale(value, this.locale);\n  }\n\n  stringFormatter(translations: MessageDictionary): MessageFormatter {\n    return new MessageFormatter(this.locale, translations);\n  }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { isSameDay } from '@internationalized/date';\nimport { isInvalid } from './date-utils';\nimport { CalendarBase } from './calendar-base';\nimport translations from '../../i18n';\nimport { TranslateService } from '../../../common/translate.service';\n\n/**\n * Behavior of calendar grid cell button which is rendered inside a calendar cell.\n * Similar to something like cdkCalendarCellButton if it existed.\n * @internal\n */\n@Directive({\n  selector: 'button[spCalendarNextButton]',\n  standalone: true,\n  host: {\n    '[attr.aria-label]': 'ariaLabel',\n    '[disabled]': 'isDisabled()',\n  },\n})\nexport class CalendarNextButtonDirective {\n  constructor(t: TranslateService, public calendar: CalendarBase) {\n    this.ariaLabel = t.translate('next', translations);\n  }\n\n  ariaLabel: string;\n\n  @HostListener('click')\n  private handleClick() {\n    this.calendar.nextPage();\n    if (this.isDisabled()) {\n      this.calendar.setGridFocused();\n    }\n  }\n\n  isDisabled() {\n    // Adding may return the same date if we reached the end of time\n    // according to the calendar system (e.g. 9999-12-31).\n    const next = this.calendar.endDate.add({ days: 1 });\n    return (\n      this.calendar.disabled ||\n      isSameDay(next, this.calendar.endDate) ||\n      isInvalid(next, this.calendar.minValue, this.calendar.maxValue)\n    );\n  }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { isSameDay } from '@internationalized/date';\nimport { isInvalid } from './date-utils';\nimport { CalendarBase } from './calendar-base';\nimport translations from '../../i18n';\nimport { TranslateService } from '../../../common/translate.service';\n\n/**\n * Behavior of calendar grid cell button which is rendered inside a calendar cell.\n * Similar to something like cdkCalendarCellButton if it existed.\n * @internal\n */\n@Directive({\n  selector: 'button[spCalendarPreviousButton]',\n  standalone: true,\n  host: {\n    '[attr.aria-label]': 'ariaLabel',\n    '[disabled]': 'isDisabled()',\n  },\n})\nexport class CalendarPreviousButtonDirective {\n  constructor(t: TranslateService, public calendar: CalendarBase) {\n    this.ariaLabel = t.translate('previous', translations);\n  }\n\n  ariaLabel: string;\n\n  @HostListener('click')\n  private handleClick() {\n    this.calendar.previousPage();\n    if (this.isDisabled()) {\n      this.calendar.setGridFocused();\n    }\n  }\n\n  isDisabled() {\n    const prev = this.calendar.startDate.subtract({ days: 1 });\n    return (\n      this.calendar.disabled ||\n      isSameDay(prev, this.calendar.startDate) ||\n      isInvalid(prev, this.calendar.minValue, this.calendar.maxValue)\n    );\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n  MessageDictionary,\n  MessageFormatter,\n} from '@internationalized/message';\nimport { TranslateService } from './translate.service';\n\n@Pipe({\n  name: 't',\n  standalone: true,\n})\nexport class TranslatePipe implements PipeTransform {\n  constructor(translate: TranslateService, translations: MessageDictionary) {\n    this.formatter = translate.stringFormatter(translations);\n  }\n\n  formatter: MessageFormatter;\n\n  transform(value: string, vars?: Record<string, any>): string {\n    return this.formatter.format(value, vars);\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n  NgIf,\n  NgSwitch,\n  NgSwitchCase,\n  NgTemplateOutlet,\n  TitleCasePipe,\n} from '@angular/common';\nimport { MonthNamePipe } from './month-name.pipe';\nimport { YearPipe } from './year.pipe';\nimport {\n  IconRegistry,\n  SapphireButtonModule,\n  SapphireIconModule,\n  UseComponentStyles,\n} from '@danske/sapphire-angular';\nimport { CalendarNextButtonDirective } from './shared/calendar-next-button.directive';\nimport { CalendarPreviousButtonDirective } from './shared/calendar-previous-button.directive';\nimport { CalendarBase } from './shared/calendar-base';\nimport { CalendarDate } from '@internationalized/date';\nimport { MessageDictionary } from '@internationalized/message';\nimport translations from '../i18n';\nimport { TranslatePipe } from '../../common/translate.pipe';\nimport { iconChevronLeft, iconChevronRight } from '@danske/sapphire-icons/js';\n\n/**\n * Calendar header, with previous/next buttons\n\n * @internal\n */\n@Component({\n  selector: 'sp-calendar-header',\n  templateUrl: 'calendar-header.component.html',\n  standalone: true,\n  host: {\n    class: 'sapphire-calendar__header',\n    '[class.sapphire-calendar__header--left]': 'isLeft',\n    '[class.sapphire-calendar__header--right]': 'isRight',\n  },\n  hostDirectives: [UseComponentStyles],\n  imports: [\n    NgIf,\n    NgSwitch,\n    NgSwitchCase,\n    NgTemplateOutlet,\n    TranslatePipe,\n    TitleCasePipe,\n    MonthNamePipe,\n    YearPipe,\n    UseComponentStyles,\n    CalendarNextButtonDirective,\n    CalendarPreviousButtonDirective,\n    SapphireButtonModule,\n    SapphireIconModule,\n  ],\n  providers: [{ provide: MessageDictionary, useValue: translations }],\n})\nexport class CalendarHeaderComponent {\n  @Input()\n  date?: CalendarDate;\n\n  @Input() isLeft = false;\n  @Input() isRight = false;\n\n  constructor(\n    public readonly calendar: CalendarBase,\n    iconRegistry: IconRegistry\n  ) {\n    iconRegistry.registerIcons([iconChevronLeft, iconChevronRight]);\n  }\n}\n","<div\n  class=\"sapphire-calendar__header-prev-month\"\n  _spUseComponentStyles\n  tabindex=\"-1\"\n>\n  <button\n    sp-icon-button\n    variant=\"tertiary\"\n    [size]=\"calendar.size\"\n    spCalendarPreviousButton\n  >\n    <sp-icon name=\"chevronLeft\"></sp-icon>\n  </button>\n</div>\n<div class=\"sapphire-calendar__header-title\" _spUseComponentStyles>\n  <!-- the \"style\" attr is a hack to get around angular style isolation around a style overwrite in button -->\n  <button\n    *ngIf=\"calendar.canBroadenView(); else headerTitle\"\n    sp-button\n    variant=\"tertiary\"\n    tabindex=\"0\"\n    [size]=\"calendar.size\"\n    [disabled]=\"calendar.disabled\"\n    (click)=\"calendar.broadenView()\"\n    style=\"font-weight: var(--sapphire-semantic-font-weight-default-medium)\"\n  >\n    <ng-container *ngTemplateOutlet=\"headerTitle\"></ng-container>\n  </button>\n  <ng-template #headerTitle [ngSwitch]=\"calendar.view\">\n    <ng-container *ngSwitchCase=\"'days'\">\n      {{\n        date || calendar.focusedDate\n          | monthName : calendar.getTimezone() : calendar.locale : true\n          | titlecase\n      }}\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'months'\">\n      {{\n        date || calendar.focusedDate\n          | year : calendar.getTimezone() : calendar.locale\n          | titlecase\n      }}\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'years'\"\n      >{{ calendar.startDate.year }} — {{ calendar.endDate.year }}</ng-container\n    >\n  </ng-template>\n</div>\n<div\n  class=\"sapphire-calendar__header-next-month\"\n  _spUseComponentStyles\n  tabindex=\"-1\"\n>\n  <button\n    sp-icon-button\n    variant=\"tertiary\"\n    [size]=\"calendar.size\"\n    spCalendarNextButton\n  >\n    <sp-icon name=\"chevronRight\"></sp-icon>\n  </button>\n</div>\n","import {\n  CalendarDate,\n  DateValue,\n  GregorianCalendar,\n  toCalendar,\n  today,\n} from '@internationalized/date';\nimport {\n  Directive,\n  EventEmitter,\n  forwardRef,\n  Input,\n  Output,\n} from '@angular/core';\n\nimport { CoerceBoolean } from '../../../common/coerce-boolean.decorator';\nimport { constrainValue, previousAvailableDate } from './date-utils';\nimport { CalendarBase } from './calendar-base';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Directive({\n  selector: '[spCalendar]',\n  standalone: true,\n  providers: [\n    {\n      provide: CalendarBase,\n      useExisting: forwardRef(() => SingleSelectionCalendarDirective),\n    },\n  ],\n  exportAs: 'spCalendar',\n})\nexport class SingleSelectionCalendarDirective extends CalendarBase {\n  /**\n   * The currently selected date.\n   */\n  @Input()\n  value?: DateValue;\n\n  /**\n   * Emits when the currently selected date changes by user interactions.\n   * Emits DateValue, to allow for two-way binding (`[(value)]=\"...\"`).\n   */\n  @Output()\n  valueChange = new EventEmitter<DateValue>();\n\n  /**\n   * The minimum allowed date that a user may select.\n   */\n  @Input()\n  minValue?: DateValue;\n\n  /**\n   * The maximum allowed date that a user may select.\n   */\n  @Input()\n  maxValue?: DateValue;\n\n  /**\n   * If the calendar's focused date should be auto\n   * focused when rendered.\n   */\n  @Input()\n  @CoerceBoolean\n  autoFocus?: BooleanInput;\n\n  ngOnInit() {\n    super.ngOnInit();\n    if (!this._focusedDate) {\n      this.setFocusedDate(this.value ?? today(this.getTimezone()), false);\n    }\n  }\n\n  isSelected(date: CalendarDate): boolean {\n    // in react-aria there are checks for being disabled and unavailable too\n    return this.value != null && this.viewImpl.areSameCell(date, this.value);\n  }\n\n  /**\n   * Select a date via UI.\n   */\n  override selectDate(date: CalendarDate) {\n    let newValue: CalendarDate | undefined = date;\n    // logic below copied from @react-stately/calendar\n    if (!this.disabled && !this.readonly) {\n      newValue = constrainValue(newValue, this.minValue, this.maxValue);\n      newValue = previousAvailableDate(\n        newValue,\n        this.startDate,\n        this.isDateUnavailable\n      );\n      if (!newValue) {\n        return;\n      }\n\n      // The display calendar should not have any effect on the emitted value.\n      // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n      newValue = toCalendar(\n        newValue,\n        this.value?.calendar || new GregorianCalendar()\n      );\n\n      // Preserve time if the input value had one.\n      if (this.value && 'hour' in this.value) {\n        this.value = this.value.set(newValue);\n      } else {\n        this.value = newValue;\n      }\n      this.valueChange.emit(this.value);\n      this.valueAccessorOnChange?.(this.value);\n    }\n  }\n\n  writeValue(obj: DateValue): void {\n    this.value = obj;\n    if (this.value) {\n      this.setFocusedDate(this.value, false);\n    }\n  }\n\n  getTimezone(): string {\n    return this.value && 'timeZone' in this.value\n      ? this.value.timeZone\n      : super.getTimezone();\n  }\n}\n","/* eslint-disable */\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// The entire file is copied from @react-aria/utils\n\nimport { FocusableElement } from '@react-types/shared';\n\n// This is a polyfill for element.focus({preventScroll: true});\n// Currently necessary for Safari and old Edge:\n// https://caniuse.com/#feat=mdn-api_htmlelement_focus_preventscroll_option\n// See https://bugs.webkit.org/show_bug.cgi?id=178583\n//\n\n// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n\ninterface ScrollableElement {\n  element: HTMLElement;\n  scrollTop: number;\n  scrollLeft: number;\n}\n\nexport function focusWithoutScrolling(element: FocusableElement) {\n  if (supportsPreventScroll()) {\n    element.focus({ preventScroll: true });\n  } else {\n    let scrollableElements = getScrollableElements(element);\n    element.focus();\n    restoreScrollPosition(scrollableElements);\n  }\n}\n\nlet supportsPreventScrollCached: boolean | null = null;\nfunction supportsPreventScroll() {\n  if (supportsPreventScrollCached == null) {\n    supportsPreventScrollCached = false;\n    try {\n      var focusElem = document.createElement('div');\n      focusElem.focus({\n        get preventScroll() {\n          supportsPreventScrollCached = true;\n          return true;\n        },\n      });\n    } catch (e) {\n      // Ignore\n    }\n  }\n\n  return supportsPreventScrollCached;\n}\n\nfunction getScrollableElements(element: FocusableElement): ScrollableElement[] {\n  var parent = element.parentNode;\n  var scrollableElements: ScrollableElement[] = [];\n  var rootScrollingElement =\n    document.scrollingElement || document.documentElement;\n\n  while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n    if (\n      parent.offsetHeight < parent.scrollHeight ||\n      parent.offsetWidth < parent.scrollWidth\n    ) {\n      scrollableElements.push({\n        element: parent,\n        scrollTop: parent.scrollTop,\n        scrollLeft: parent.scrollLeft,\n      });\n    }\n    parent = parent.parentNode;\n  }\n\n  if (rootScrollingElement instanceof HTMLElement) {\n    scrollableElements.push({\n      element: rootScrollingElement,\n      scrollTop: rootScrollingElement.scrollTop,\n      scrollLeft: rootScrollingElement.scrollLeft,\n    });\n  }\n\n  return scrollableElements;\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n  for (let { element, scrollTop, scrollLeft } of scrollableElements) {\n    element.scrollTop = scrollTop;\n    element.scrollLeft = scrollLeft;\n  }\n}\n","import {\n  AfterViewChecked,\n  Directive,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  inject,\n} from '@angular/core';\nimport { DateFormatter, isSameDay } from '@internationalized/date';\nimport { CalendarCellDirective } from './calendar-cell.directive';\nimport { focusWithoutScrolling } from '../../../common/focusWithoutScrolling';\nimport { CalendarBase } from './calendar-base';\n\n/**\n * Base class for behavior and accessibility of calendar grid cell buttons rendered inside\n * calendar cells.\n * See:\n * - {@link SingleSelectionCalendarCellButtonDirective}\n * - {@link RangeCalendarCellButtonDirective}\n * @internal\n */\n@Directive()\nexport class CalendarCellButton implements AfterViewChecked {\n  protected elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n  constructor(\n    public cell: CalendarCellDirective,\n    public calendar: CalendarBase\n  ) {}\n\n  ngAfterViewChecked() {\n    if (\n      this.isFocusedDate() &&\n      !this.disabled &&\n      (this.calendar.shouldFocusGrid || this.calendar.autoFocus)\n    ) {\n      this.focus();\n      this.calendar.autoFocus = false;\n    }\n  }\n\n  @HostBinding('attr.role')\n  get role(): string | null {\n    return this.elementRef.nativeElement instanceof HTMLButtonElement\n      ? null\n      : 'button';\n  }\n\n  @HostBinding('attr.aria-disabled')\n  get disabled() {\n    return !this.cell.isSelectable();\n  }\n\n  @HostBinding('attr.aria-invalid')\n  get invalid() {\n    return this.cell.isInvalid();\n  }\n\n  @HostBinding('tabindex')\n  get tabIndex() {\n    if (this.calendar.disabled) {\n      return null;\n    }\n    return this.isFocusedDate() ? 0 : -1;\n  }\n\n  @HostBinding('attr.aria-label')\n  get ariaLabel() {\n    if (this.calendar.view === 'days' && this.cell.date) {\n      const timezone = this.calendar.getTimezone();\n      return new DateFormatter(this.calendar.locale, {\n        weekday: 'long',\n        day: 'numeric',\n        month: 'long',\n        year: 'numeric',\n        timeZone: timezone,\n      }).format(this.cell.date.toDate(timezone));\n    }\n    return null;\n  }\n\n  @HostListener('focus')\n  protected handleFocus() {\n    if (!this.calendar.disabled && this.cell.date) {\n      this.calendar.setFocusedDate(this.cell.date);\n    }\n  }\n\n  handleCellSelected() {\n    if (!this.cell.date) {\n      return;\n    }\n    if (this.cell.isSelectable()) {\n      if (!this.calendar.readonly) {\n        this.calendar.selectCell(this.cell.date);\n      }\n      this.calendar.setFocusedDate(this.cell.date);\n    }\n  }\n\n  focus() {\n    focusWithoutScrolling(this.elementRef.nativeElement);\n  }\n\n  isFocusedDate(): boolean {\n    return Boolean(\n      this.cell.date && isSameDay(this.cell.date, this.calendar.focusedDate)\n    );\n  }\n}\n","import { Directive, HostListener, forwardRef } from '@angular/core';\nimport { CalendarCellButton } from './calendar-cell-button';\n\n/**\n * Behavior and accessibility of cell buttons in calendar.\n * Similar to something like cdkCalendarCellButton if it existed.\n * @internal\n */\n@Directive({\n  selector: '[spCalendarCellButton]',\n  providers: [\n    {\n      provide: CalendarCellButton,\n      useExisting: forwardRef(() => SingleSelectionCalendarCellButtonDirective),\n    },\n  ],\n  exportAs: 'spCalendarCellButton',\n  standalone: true,\n})\nexport class SingleSelectionCalendarCellButtonDirective extends CalendarCellButton {\n  @HostListener('click')\n  onClick() {\n    this.handleCellSelected();\n  }\n}\n","import { InjectionToken, LOCALE_ID, inject } from '@angular/core';\n\nexport const SAPPHIRE_DATE_LOCALE = new InjectionToken(\n  'Locale used for dates in Sapphire components. LOCALE_ID from @angular/core will be used by default',\n  {\n    providedIn: 'root',\n    factory: () => inject(LOCALE_ID),\n  }\n);\n\nexport const SAPPHIRE_DATE_FORMAT_LOCALE = new InjectionToken(\n  'Locale used to format dates in Sapphire components.'\n);\n","import {\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  TrackByFunction,\n  Output,\n} from '@angular/core';\nimport { NgFor, NgIf, TitleCasePipe } from '@angular/common';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n  CalendarDate,\n  DateValue,\n  toCalendarDate,\n} from '@internationalized/date';\nimport { MessageDictionary } from '@internationalized/message';\n\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { WeekNumberPipe } from './week-number.pipe';\nimport { CalendarGridDirective } from './shared/calendar-grid.directive';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CalendarView } from './shared/calendar-view';\nimport { CalendarCellButtonComponent } from './calendar-cell-button.component';\nimport { CalendarHeaderComponent } from './calendar-header.component';\nimport {\n  ViewEncapsulationProvider,\n  SapphireButtonModule,\n} from '@danske/sapphire-angular';\nimport { CalendarCellDirective } from './shared/calendar-cell.directive';\nimport { SingleSelectionCalendarDirective } from './shared/single-selection-calendar.directive';\nimport { SingleSelectionCalendarCellButtonDirective } from './shared/single-selection-calendar-cell-button.directive';\nimport { SAPPHIRE_DATE_LOCALE } from './sapphire-date-locale';\nimport { TranslatePipe } from '../../common/translate.pipe';\nimport translations from '../i18n';\n\nexport { SingleSelectionCalendarDirective };\n\nexport interface PredefinedDate {\n  label: string;\n  date: DateValue;\n}\n\n/**\n * Calendar is accessible as a grid. Supports single date selection with min/max constraints,\n * unavailable dates, week numbers, multiple view months, and locale configuration.\n */\n@Component({\n  selector: 'sp-calendar',\n  standalone: true,\n  templateUrl: './calendar.component.html',\n  styleUrls: ['./calendar.component.scss'],\n  providers: [\n    ViewEncapsulationProvider,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: SingleSelectionCalendarDirective,\n      multi: true,\n    },\n    { provide: MessageDictionary, useValue: translations },\n  ],\n  hostDirectives: [\n    {\n      directive: SingleSelectionCalendarDirective,\n      inputs: [\n        'autoFocus',\n        'showFixedWeeks',\n        'isDateUnavailable',\n        'focusedDate',\n        'locale',\n        'minValue',\n        'maxValue',\n        'value',\n        'readonly',\n        'disabled',\n        'size',\n        'view',\n      ],\n      outputs: ['blurred', 'valueChange'],\n    },\n  ],\n  imports: [\n    NgFor,\n    NgIf,\n    TitleCasePipe,\n    TranslatePipe,\n    WeekNumberPipe,\n    CalendarGridDirective,\n    CalendarCellButtonComponent,\n    CalendarHeaderComponent,\n    CalendarCellDirective,\n    SingleSelectionCalendarCellButtonDirective,\n    SingleSelectionCalendarDirective,\n    SapphireButtonModule,\n  ],\n})\nexport class CalendarComponent<P extends string = string> implements OnInit {\n  /**\n   * Whether to show the week numbers in days view.\n   */\n  @Input()\n  @CoerceBoolean\n  showWeekNumbers?: BooleanInput;\n\n  /**\n   * A set of predefined dates that the user can more conveniently select.\n   */\n  @Input()\n  predefinedDates?: Record<P, PredefinedDate>;\n\n  /**\n   * Emits when the currently selected date changes by user interactions.\n   * If the \"predefinedDateKey\" is not necessary, you can use `valueChange`\n   * output which allows for two-way binding (`[(value)]=\"...\"`)\n   */\n  @Output()\n  change = new EventEmitter<{\n    value: DateValue;\n    predefinedDateKey?: P;\n  }>();\n\n  /**\n   * Emits when the view changes by user interactions.\n   * Emits CalenderView, to allow for two-way binding (`[(view)]=\"...\"`).\n   */\n  @Output()\n  viewChange = new EventEmitter<CalendarView>();\n\n  private selectedPredefinedDateKey?: P;\n\n  constructor(\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    public readonly _calendar: SingleSelectionCalendarDirective\n  ) {\n    if (!this._calendar.locale) {\n      this._calendar.locale = localeFromContext;\n    }\n  }\n\n  ngOnInit() {\n    this._calendar.valueChange.subscribe((value) => {\n      this.change.emit({\n        value,\n        predefinedDateKey: this.selectedPredefinedDateKey,\n      });\n      this.selectedPredefinedDateKey = undefined;\n    });\n  }\n  readonly _trackByIndex: TrackByFunction<CalendarDate> = (index) => index;\n\n  selectPredefinedDate(p: P) {\n    const predefinedDate = this.predefinedDates?.[p as P];\n    if (predefinedDate) {\n      this.selectedPredefinedDateKey = p as P;\n      this._calendar.selectDate(toCalendarDate(predefinedDate.date));\n      this._calendar.setFocusedDate(predefinedDate.date, true);\n    }\n  }\n\n  _getPredefinedDates() {\n    return Object.entries(this.predefinedDates || {}).map(\n      ([key, value]) => ({ key, value } as { key: P; value: PredefinedDate })\n    );\n  }\n\n  setView(view: CalendarView) {\n    this._calendar.setView(view);\n  }\n\n  setFocusedDate(date: DateValue) {\n    this._calendar.setFocusedDate(date);\n  }\n\n  getTimezone() {\n    return this._calendar.getTimezone();\n  }\n  selectDate(date: CalendarDate) {\n    return this._calendar.selectDate(date);\n  }\n}\n","<div class=\"sapphire-calendar\">\n  <div\n    class=\"sapphire-calendar__table-container\"\n    [class.sapphire-calendar__table-container--md]=\"_calendar.size === 'md'\"\n    [class.sapphire-calendar__table-container--sm]=\"_calendar.size === 'sm'\"\n  >\n    <sp-calendar-header></sp-calendar-header>\n    <table\n      spCalendarGrid\n      [spCalendarGridView]=\"_calendar.view\"\n      [spCalendarGridStartDate]=\"_calendar.startDate\"\n      #grid=\"spCalendarGrid\"\n      class=\"sapphire-calendar__table\"\n      [class.sapphire-calendar__table--with-week-numbers]=\"showWeekNumbers\"\n      *ngIf=\"_calendar.view === 'days'\"\n    >\n      <thead role=\"presentation\">\n        <tr>\n          <th\n            *ngIf=\"showWeekNumbers\"\n            class=\"sapphire-calendar__table-head-cell\"\n            aria-hidden=\"true\"\n          ></th>\n          <th\n            role=\"columnheader\"\n            scope=\"col\"\n            class=\"sapphire-calendar__table-head-cell\"\n            *ngFor=\"let weekDay of _calendar.getWeekDays()\"\n          >\n            <abbr class=\"sapphire-calendar__day-of-week\">{{\n              weekDay | titlecase\n            }}</abbr>\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr\n          *ngFor=\"let dates of grid.cells; trackBy: grid.rowTrackBy\"\n          class=\"sapphire-calendar__table-body-row\"\n        >\n          <th\n            *ngIf=\"showWeekNumbers\"\n            class=\"sapphire-calendar__table-body-cell\"\n            role=\"rowheader\"\n            [attr.aria-label]=\"\n              'week'\n                | t : { weekNumber: dates[0] ? (dates[0] | weekNumber) : null }\n            \"\n            [attr.aria-hidden]=\"!grid.shouldShowWeekNumber(dates[0])\"\n          >\n            <span class=\"sapphire-calendar__week-number\">\n              {{\n                grid.shouldShowWeekNumber(dates[0])\n                  ? (dates[0] | weekNumber)\n                  : null\n              }}\n            </span>\n          </th>\n          <td\n            *ngFor=\"let date of dates; trackBy: grid.cellTrackBy\"\n            [spCalendarCell]=\"date\"\n            class=\"sapphire-calendar__table-body-cell\"\n          >\n            <sp-calendar-cell-button\n              spCalendarCellButton\n            ></sp-calendar-cell-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n    <table\n      *ngIf=\"_calendar.view === 'months' || _calendar.view === 'years'\"\n      spCalendarGrid\n      [spCalendarGridView]=\"_calendar.view\"\n      [spCalendarGridStartDate]=\"_calendar.startDate\"\n      #grid=\"spCalendarGrid\"\n      class=\"sapphire-calendar__table sapphire-calendar__table--month-year\"\n    >\n      <tbody>\n        <tr\n          *ngFor=\"let rows of grid.cells; trackBy: grid.rowTrackBy\"\n          class=\"sapphire-calendar__table-body-row\"\n        >\n          <td\n            *ngFor=\"let cellFocusedDate of rows; trackBy: grid.cellTrackBy\"\n            [spCalendarCell]=\"cellFocusedDate\"\n            class=\"sapphire-calendar__table-body-cell\"\n          >\n            <sp-calendar-cell-button\n              spCalendarCellButton\n            ></sp-calendar-cell-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class=\"sapphire-calendar__custom-ranges\" *ngIf=\"predefinedDates\">\n    <div *ngFor=\"let range of _getPredefinedDates(); trackBy: _trackByIndex\">\n      <button\n        sp-button\n        variant=\"text\"\n        (click)=\"selectPredefinedDate(range.key)\"\n      >\n        {{ range.value.label }}\n      </button>\n    </div>\n  </div>\n</div>\n","import {\n  CalendarDate,\n  DateValue,\n  GregorianCalendar,\n  maxDate,\n  minDate,\n  toCalendar,\n  toCalendarDate,\n  today,\n} from '@internationalized/date';\nimport { RangeValue } from '../range-calendar.component';\nimport { constrainValue, previousAvailableDate } from './date-utils';\nimport { CalendarBase } from './calendar-base';\nimport {\n  Directive,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n  forwardRef,\n} from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CoerceBoolean } from '../../../common/coerce-boolean.decorator';\n\n@Directive({\n  selector: '[spRangeCalendar]',\n  standalone: true,\n  providers: [\n    {\n      provide: CalendarBase,\n      useExisting: forwardRef(() => RangeCalendarDirective),\n    },\n  ],\n  exportAs: 'spRangeCalendar',\n})\nexport class RangeCalendarDirective extends CalendarBase {\n  /**\n   * The currently selected date.\n   */\n  @Input()\n  value?: RangeValue<DateValue>;\n\n  /**\n   * Emits when the currently selected date changes by user interactions.\n   * Emits DateRange, to allow for two-way binding (`[(value)]=\"...\"`).\n   */\n  @Output()\n  valueChange = new EventEmitter<RangeValue<DateValue>>();\n\n  @Input()\n  @CoerceBoolean\n  autoFocus?: BooleanInput;\n\n  /**\n   * The minimum allowed date that a user may select.\n   */\n  @Input()\n  get minValue(): DateValue | undefined | null {\n    if (\n      !this.isDateUnavailable ||\n      this.allowUnavailableDatesWithinRange ||\n      !this.anchorDate\n    ) {\n      return this._minValue;\n    }\n    const firstDateBeforeUnavailable = this.firstDateBeforeUnavailable(\n      this.anchorDate,\n      this.startDate,\n      -1\n    );\n    if (firstDateBeforeUnavailable) {\n      return this._minValue\n        ? maxDate(firstDateBeforeUnavailable, this._minValue!)\n        : firstDateBeforeUnavailable;\n    }\n    return this._minValue;\n  }\n\n  set minValue(value: DateValue | undefined | null) {\n    this._minValue = value;\n  }\n  private _minValue?: DateValue | null;\n\n  /**\n   * The maximum allowed date that a user may select.\n   */\n  @Input()\n  get maxValue(): DateValue | undefined | null {\n    if (\n      !this.isDateUnavailable ||\n      this.allowUnavailableDatesWithinRange ||\n      !this.anchorDate\n    ) {\n      return this._maxValue;\n    }\n    const firstDateBeforeUnavailable = this.firstDateBeforeUnavailable(\n      this.anchorDate,\n      this.endDate,\n      +1\n    );\n    if (firstDateBeforeUnavailable) {\n      return this._maxValue\n        ? minDate(firstDateBeforeUnavailable, this._maxValue)\n        : firstDateBeforeUnavailable;\n    }\n    return this._maxValue;\n  }\n  set maxValue(value: DateValue | undefined | null) {\n    this._maxValue = value;\n  }\n  private _maxValue?: DateValue | null;\n\n  /**\n   * Whether range is allowed to span unavailable dates.\n   */\n  @Input() allowUnavailableDatesWithinRange?: BooleanInput;\n\n  get anchorDate(): CalendarDate | null {\n    return this._anchorDate;\n  }\n\n  private _anchorDate: CalendarDate | null = null;\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.blurred.subscribe(() => {\n      if (this.anchorDate) {\n        this.selectCell(this.focusedDate);\n      }\n    });\n    if (!this._focusedDate) {\n      this.setFocusedDate(\n        this.value?.start ? this.value?.start : today(this.getTimezone()),\n        false\n      );\n    }\n  }\n  writeValue(obj: RangeValue<DateValue>): void {\n    if (obj && obj.start && obj.end) {\n      this.setValue(obj);\n    }\n  }\n\n  /**\n   * Select a date via UI. depending on the state of selection, it may start\n   * a new selection or finish the ongoing one.\n   */\n  selectDate(date: CalendarDate) {\n    if (!this.disabled && !this.readonly) {\n      const min = this.minValue,\n        max = this.maxValue;\n\n      let constrainedDate: CalendarDate | undefined = constrainValue(\n        date,\n        min,\n        max\n      );\n      constrainedDate = previousAvailableDate(\n        constrainedDate,\n        this.startDate,\n        this.isDateUnavailable\n      );\n      if (!constrainedDate) {\n        return;\n      }\n      if (!this._anchorDate) {\n        this._anchorDate = constrainedDate;\n      } else {\n        const newValue = makeRange(this._anchorDate, constrainedDate);\n        this._updateValue(newValue);\n      }\n    }\n  }\n\n  /**\n   * Sets the value of the range programmatically.\n   */\n  setValue(value: RangeValue<DateValue>) {\n    const currentValue = this.value;\n    const newValue = {\n      start: convertValue(toCalendarDate(value.start), currentValue?.start),\n      end: convertValue(toCalendarDate(value.end), currentValue?.end),\n    };\n    this.value = newValue;\n    this._anchorDate = null;\n    if (\n      this.focusedDate.compare(newValue.start) < 0 ||\n      this.focusedDate.compare(newValue.end) > 0\n    ) {\n      this.setFocusedDate(newValue.start, false);\n    }\n  }\n\n  /**\n   * Cancels ongoing selection, if any\n   */\n  cancelSelection() {\n    this._anchorDate = null;\n  }\n\n  getTimezone(): string {\n    return this.value && 'timeZone' in this.value.start\n      ? this.value.start.timeZone\n      : super.getTimezone();\n  }\n\n  isSelected(date: CalendarDate): boolean {\n    // in react-aria there are checks for being disabled and unavailable too, but not sure if it\n    // makes sense.\n\n    const highlightedRange = this.getHighlightedRange();\n    return (\n      highlightedRange != null &&\n      date.compare(highlightedRange.start) >= 0 &&\n      date.compare(highlightedRange.end) <= 0\n    );\n  }\n\n  @HostListener('touchmove', ['$event'])\n  private handleTouchMove(event: TouchEvent) {\n    if (this.anchorDate) {\n      // Prevent the default behavior of scroll by touch, during a selection. Otherwise, the page\n      // would scroll under the user's finger, while dragging to select a range.\n      // we could have kept a boolean `dragging`, to only prevent touch move when date selection\n      // is happening via dragging. The negligible difference now is that scrolling is disabled\n      // even when a selection is started by pressing start date.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * updates the selected range via a UI interaction.\n   * @param newValue\n   */\n  _updateValue(newValue: RangeValue<DateValue>) {\n    this.setValue(newValue);\n    this.valueAccessorOnChange?.(newValue);\n    this.valueChange.emit(this.value);\n  }\n\n  getHighlightedRange() {\n    const { anchorDate, value } = this;\n    const { focusedDate } = this;\n    if (anchorDate) {\n      const start = minDate(focusedDate, anchorDate);\n      const end = maxDate(focusedDate, anchorDate);\n      return start && end\n        ? {\n            start,\n            end,\n          }\n        : null;\n    }\n\n    return value ?? null;\n  }\n\n  setAnchorDate(date: DateValue) {\n    this._anchorDate = toCalendarDate(date);\n  }\n\n  @memoize()\n  private firstDateBeforeUnavailable(\n    from: CalendarDate,\n    to: DateValue,\n    dir: number\n  ) {\n    let date = from;\n    while (dir < 0 ? date.compare(to) > 0 : date.compare(to) < 0) {\n      const nextDate = date.add({ days: dir });\n      if (this.isDateUnavailable?.(nextDate)) {\n        return date;\n      }\n      date = nextDate;\n    }\n    return null;\n  }\n}\n\n/**\n * A very simple, non-flexible memoization decorator covering the simple memoization needs\n * we have here in calendar component. We can use a library or have this evolved, if other\n * use cases come up that would need more advanced options.\n */\nfunction memoize(): MethodDecorator {\n  return function (\n    target: object,\n    propertyKey: string | symbol,\n    descriptor: PropertyDescriptor\n  ): void {\n    const originalMethod = descriptor.value;\n    const cacheSymbol = Symbol(`__cache_${propertyKey.toString()}`);\n    descriptor.value = function (this: any, ...args: any[]) {\n      if (!this[cacheSymbol]) {\n        this[cacheSymbol] = {};\n      }\n      const cache: Record<string, any> = this[cacheSymbol];\n      const key = args.map((arg) => `${arg}`).join('_');\n      if (!cache[key]) {\n        cache[key] = originalMethod.apply(this, args);\n      }\n      return cache[key];\n    };\n  };\n}\n\nfunction makeRange(start: DateValue, end: DateValue): RangeValue<CalendarDate>;\nfunction makeRange(\n  start: DateValue | null | undefined,\n  end: DateValue | null | undefined\n): RangeValue<CalendarDate> | null {\n  if (!start || !end) {\n    return null;\n  }\n\n  if (end.compare(start) < 0) {\n    [start, end] = [end, start];\n  }\n\n  return { start: toCalendarDate(start), end: toCalendarDate(end) };\n}\n\nfunction convertValue(newValue: CalendarDate, oldValue: DateValue | undefined) {\n  // The display calendar should not have any effect on the emitted value.\n  // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n  newValue = toCalendar(\n    newValue,\n    oldValue?.calendar || new GregorianCalendar()\n  );\n\n  // Preserve time if the input value had one.\n  if (oldValue && 'hour' in oldValue) {\n    return oldValue.set(newValue);\n  }\n\n  return newValue;\n}\n","import { Directive, HostListener, forwardRef } from '@angular/core';\nimport {\n  endOfMonth,\n  getDayOfWeek,\n  isSameDay,\n  startOfMonth,\n} from '@internationalized/date';\nimport { CalendarCellDirective } from './calendar-cell.directive';\nimport { CalendarCellButton } from './calendar-cell-button';\nimport { RangeCalendarDirective } from './range-calendar.directive';\n\n// TODO(UC-2728): use press directive instead of the corresponding mouse and keyboard listeners here\n/**\n * Behavior and accessibility of cell buttons in range calendar.\n * Similar to something like cdkRangeCalendarCellButton if it existed.\n * @internal\n */\n@Directive({\n  selector: '[spRangeCalendarCellButton]',\n  standalone: true,\n  providers: [\n    {\n      provide: CalendarCellButton,\n      useExisting: forwardRef(() => RangeCalendarCellButtonDirective),\n    },\n  ],\n  exportAs: 'spRangeCalendarCellButton',\n})\nexport class RangeCalendarCellButtonDirective extends CalendarCellButton {\n  private isAnchorPressed = false;\n  private isRangeBoundaryPressed = false;\n  private debouncedDragStart: { cancel: () => void; flush: () => void } | null =\n    null;\n\n  constructor(\n    public readonly cell: CalendarCellDirective,\n    public readonly calendar: RangeCalendarDirective\n  ) {\n    super(cell, calendar);\n  }\n\n  isHighlighted(): boolean {\n    const highlightRange = this.calendar.getHighlightedRange();\n    return Boolean(\n      this.cell.date &&\n        highlightRange &&\n        this.cell.date.compare(highlightRange.start) >= 0 &&\n        this.cell.date.compare(highlightRange.end) <= 0\n    );\n  }\n\n  isHighlightStart(): boolean {\n    const startDate = this.calendar.getHighlightedRange()?.start;\n    return Boolean(\n      this.cell.date &&\n        startDate &&\n        (isSameDay(startDate, this.cell.date) ||\n          getDayOfWeek(this.cell.date, this.calendar.locale) === 0 ||\n          isSameDay(this.cell.date, startOfMonth(this.cell.date)))\n    );\n  }\n\n  isHighlightEnd(): boolean {\n    const endDate = this.calendar.getHighlightedRange()?.end;\n    return Boolean(\n      this.cell.date &&\n        endDate &&\n        (isSameDay(endDate, this.cell.date) ||\n          getDayOfWeek(this.cell.date, this.calendar.locale) === 6 ||\n          isSameDay(this.cell.date, endOfMonth(this.cell.date)))\n    );\n  }\n\n  isSelectionStart(): boolean {\n    const startDate = this.calendar.getHighlightedRange()?.start;\n    return Boolean(\n      this.cell.date && startDate && isSameDay(startDate, this.cell.date)\n    );\n  }\n\n  isSelectionEnd(): boolean {\n    const endDate = this.calendar.getHighlightedRange()?.end;\n    return Boolean(\n      this.cell.date && endDate && isSameDay(endDate, this.cell.date)\n    );\n  }\n\n  isSelecting(): boolean {\n    return Boolean(this.calendar.anchorDate);\n  }\n\n  @HostListener('contextmenu', ['$event'])\n  private handleContextMenu(event: MouseEvent) {\n    event.preventDefault();\n  }\n\n  @HostListener('pointerenter')\n  private onPointerEnter() {\n    if (this.isSelecting() && this.cell.isSelectable() && this.cell.date) {\n      this.calendar.setFocusedDate(this.cell.date);\n    }\n  }\n\n  @HostListener('pointerleave')\n  private onPressEnd() {\n    this.isAnchorPressed = false;\n    this.isRangeBoundaryPressed = false;\n    this.debouncedDragStart?.cancel();\n  }\n\n  @HostListener('pointerup', ['$event'])\n  private onPressUp() {\n    if (this.debouncedDragStart) {\n      this.debouncedDragStart.flush();\n    }\n    if (this.isRangeBoundaryPressed && this.cell.date) {\n      // When clicking on the start or end date of an already selected range,\n      // start a new selection on press up to also allow dragging the date to\n      // change the existing range.\n      this.calendar.setAnchorDate(this.cell.date);\n    } else if (this.isSelecting() && !this.isAnchorPressed) {\n      // When releasing a drag or pressing the end date of a range, select it.\n      this.handleCellSelected();\n    }\n    this.onPressEnd();\n  }\n\n  @HostListener('pointerdown', ['$event'])\n  private onPointerDown(event: PointerEvent) {\n    if (!this.cell.date) {\n      return;\n    }\n    // to prevent text selection. Disabling text selection will be a part of\n    // the generic press directive in UC-2728 and should be removed from here.\n    event.preventDefault();\n\n    // From react-aria: This is necessary on touch devices to allow dragging\n    // outside the original pressed element.\n    if (event.target && 'releasePointerCapture' in event.target) {\n      (event.target.releasePointerCapture as (pointerId: number) => void)(\n        event.pointerId\n      );\n    }\n    const highlightedRange = this.calendar.getHighlightedRange();\n    // Allow dragging the start or end date of a range to modify it rather than starting a new\n    // selection.\n    if (!this.isSelecting()) {\n      if (\n        highlightedRange &&\n        isSameDay(highlightedRange.start, this.cell.date)\n      ) {\n        this.calendar.setAnchorDate(highlightedRange.end);\n        this.calendar.setFocusedDate(this.cell.date);\n        this.isRangeBoundaryPressed = true;\n        return;\n      } else if (\n        highlightedRange &&\n        isSameDay(highlightedRange.end, this.cell.date)\n      ) {\n        this.calendar.setAnchorDate(highlightedRange.start);\n        this.calendar.setFocusedDate(this.cell.date);\n        this.isRangeBoundaryPressed = true;\n        return;\n      }\n      const startDragging = () => {\n        this.isAnchorPressed = true;\n        this.handleCellSelected();\n      };\n      if (event.pointerType === 'touch') {\n        const timeoutId = setTimeout(startDragging, 200);\n        const cancel = () => clearTimeout(timeoutId);\n        this.debouncedDragStart = {\n          flush: () => {\n            cancel();\n            startDragging();\n          },\n          cancel,\n        };\n      } else {\n        startDragging();\n      }\n    }\n  }\n\n  // should be replaced by pressUp event, checking if pointerType is \"keyboard\",\n  // when press directive is added.\n  @HostListener('keyup.Space', ['$event'])\n  @HostListener('keyup.Enter', ['$event'])\n  selectByKeyboard() {\n    const nextDay = this.calendar.focusedDate.add({ days: 1 });\n    if (this.isSelecting() && !this.calendar.isDateUnavailable?.(nextDay)) {\n      this.calendar.setFocusedDate(nextDay);\n    }\n  }\n\n  @HostListener('keydown.Escape', ['$event'])\n  private onEscape(event: KeyboardEvent) {\n    this.calendar.cancelSelection();\n    event.preventDefault();\n  }\n}\n","import {\n  Component,\n  DoCheck,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  Output,\n  TrackByFunction,\n} from '@angular/core';\nimport {\n  NgFor,\n  NgIf,\n  NgSwitch,\n  NgSwitchCase,\n  TitleCasePipe,\n} from '@angular/common';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CalendarDate, DateValue } from '@internationalized/date';\n\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { WeekNumberPipe } from './week-number.pipe';\nimport { CalendarGridDirective } from './shared/calendar-grid.directive';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CalendarCellButtonComponent } from './calendar-cell-button.component';\nimport { CalendarHeaderComponent } from './calendar-header.component';\nimport { multipleDuration } from './shared/date-utils';\nimport { CalendarCellDirective } from './shared/calendar-cell.directive';\nimport { RangeCalendarCellButtonDirective } from './shared/range-calendar-cell-button.directive';\nimport {\n  SapphireButtonModule,\n  ViewEncapsulationProvider,\n} from '@danske/sapphire-angular';\nimport { RangeCalendarDirective } from './shared/range-calendar.directive';\nimport { SAPPHIRE_DATE_LOCALE } from './sapphire-date-locale';\n\nexport interface RangeValue<T> {\n  start: T;\n  end: T;\n}\nexport interface PredefinedDateRange {\n  label: string;\n  dateRange: { start: DateValue; end: DateValue };\n}\n\nexport { RangeCalendarDirective };\n\n/**\n * Range Calendar is accessible as a multiselectable grid. Supports date range selection\n * with min/max constraints, unavailable dates, week numbers, and locale configuration.\n */\n@Component({\n  selector: 'sp-range-calendar',\n  standalone: true,\n  templateUrl: './range-calendar.component.html',\n  styleUrls: ['./calendar.component.scss'],\n  providers: [\n    ViewEncapsulationProvider,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: RangeCalendarDirective,\n      multi: true,\n    },\n  ],\n  hostDirectives: [\n    {\n      directive: RangeCalendarDirective,\n      inputs: [\n        'autoFocus',\n        'showFixedWeeks',\n        'isDateUnavailable',\n        'allowUnavailableDatesWithinRange',\n        'minValue',\n        'maxValue',\n        'value',\n        'focusedDate',\n        'locale',\n        'disabled',\n        'size',\n        'readonly',\n      ],\n      outputs: ['blurred', 'valueChange'],\n    },\n  ],\n  imports: [\n    NgFor,\n    NgIf,\n    NgSwitch,\n    NgSwitchCase,\n    TitleCasePipe,\n\n    WeekNumberPipe,\n    CalendarGridDirective,\n    CalendarCellButtonComponent,\n    CalendarHeaderComponent,\n    CalendarCellDirective,\n    RangeCalendarCellButtonDirective,\n    SapphireButtonModule,\n    RangeCalendarDirective,\n  ],\n})\nexport class RangeCalendarComponent<P extends string = string>\n  implements OnInit, DoCheck\n{\n  /**\n   * Whether to show the week numbers in days view.\n   */\n  @Input()\n  @CoerceBoolean\n  showWeekNumbers?: BooleanInput;\n\n  /**\n   * Whether to show two months instead of one.\n   */\n  @Input()\n  @CoerceBoolean\n  showTwoMonths?: BooleanInput;\n\n  /**\n   * A set of predefined date ranges the user can more conveniently select.\n   */\n  @Input()\n  predefinedRanges?: Record<P, PredefinedDateRange>;\n\n  /**\n   * Emits when the currently selected date changes by user interactions.\n   * If the \"predefinedDateKey\" is not necessary, you can use `valueChange`\n   * output which allows for two-way binding (`[(value)]=\"...\"`)\n   */\n  @Output()\n  change = new EventEmitter<{\n    value: RangeValue<DateValue>;\n    predefinedRangeKey?: P;\n  }>();\n\n  private selectedPredefinedRangeKey?: P;\n\n  get visibleDuration() {\n    return this.showTwoMonths\n      ? multipleDuration(this._calendar.viewImpl.visibleDuration, 2)\n      : this._calendar.viewImpl.visibleDuration;\n  }\n\n  constructor(\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    public readonly _calendar: RangeCalendarDirective\n  ) {\n    if (!this._calendar.locale) {\n      this._calendar.locale = localeFromContext;\n    }\n    this._calendar.canBroadenView = () => false;\n  }\n\n  ngDoCheck() {\n    this._calendar.visibleDuration = this.visibleDuration;\n  }\n\n  ngOnInit() {\n    this._calendar.valueChange.subscribe((value) => {\n      this.change.emit({\n        value,\n        predefinedRangeKey: this.selectedPredefinedRangeKey,\n      });\n      this.selectedPredefinedRangeKey = undefined;\n    });\n  }\n  readonly _trackByIndex: TrackByFunction<CalendarDate> = (index) => index;\n\n  selectPredefinedRange(p: P) {\n    const predefinedRange = this.predefinedRanges?.[p as P];\n    if (predefinedRange) {\n      this.selectedPredefinedRangeKey = p as P;\n      this._calendar._updateValue(predefinedRange.dateRange);\n      this._calendar.setFocusedDate(predefinedRange.dateRange.end, true);\n    }\n  }\n\n  getTimezone() {\n    return this._calendar.getTimezone();\n  }\n\n  _getPredefinedRanges() {\n    return Object.entries(this.predefinedRanges || {}).map(\n      ([key, value]) =>\n        ({ key, value } as { key: P; value: PredefinedDateRange })\n    );\n  }\n}\n","<div class=\"sapphire-calendar\">\n  <div class=\"sapphire-calendar__tables-row\">\n    <div\n      *ngFor=\"\n        let startDate of showTwoMonths\n          ? [_calendar.startDate, _calendar.startDate.add({ months: 1 })]\n          : [_calendar.startDate];\n        trackBy: _trackByIndex;\n        let index = index\n      \"\n      class=\"sapphire-calendar__table-container\"\n      [class.sapphire-calendar__table-container--md]=\"_calendar.size === 'md'\"\n      [class.sapphire-calendar__table-container--sm]=\"_calendar.size === 'sm'\"\n    >\n      <sp-calendar-header\n        [date]=\"startDate\"\n        [isLeft]=\"!!showTwoMonths && index === 0\"\n        [isRight]=\"!!showTwoMonths && index === 1\"\n      ></sp-calendar-header>\n      <table\n        spCalendarGrid\n        [spCalendarGridStartDate]=\"startDate\"\n        #grid=\"spCalendarGrid\"\n        class=\"sapphire-calendar__table\"\n        [class.sapphire-calendar__table--with-week-numbers]=\"showWeekNumbers\"\n      >\n        <thead role=\"presentation\">\n          <tr>\n            <th\n              *ngIf=\"showWeekNumbers\"\n              class=\"sapphire-calendar__table-head-cell\"\n              aria-hidden=\"true\"\n            ></th>\n            <th\n              role=\"columnheader\"\n              scope=\"col\"\n              class=\"sapphire-calendar__table-head-cell\"\n              *ngFor=\"let weekDay of _calendar.getWeekDays()\"\n            >\n              <abbr class=\"sapphire-calendar__day-of-week\">{{\n                weekDay | titlecase\n              }}</abbr>\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr\n            *ngFor=\"let dates of grid.cells; trackBy: grid.rowTrackBy\"\n            class=\"sapphire-calendar__table-body-row\"\n          >\n            <th\n              *ngIf=\"showWeekNumbers\"\n              class=\"sapphire-calendar__table-body-cell\"\n              role=\"rowheader\"\n              attr.aria-label=\"Week {{\n                dates[0] ? (dates[0] | weekNumber) : null\n              }}\"\n              [attr.aria-hidden]=\"!grid.shouldShowWeekNumber(dates[0])\"\n            >\n              <span class=\"sapphire-calendar__week-number\">\n                {{\n                  grid.shouldShowWeekNumber(dates[0])\n                    ? (dates[0] | weekNumber)\n                    : null\n                }}\n              </span>\n            </th>\n            <td\n              *ngFor=\"let date of dates; trackBy: grid.cellTrackBy\"\n              [spCalendarCell]=\"date\"\n              class=\"sapphire-calendar__table-body-cell\"\n            >\n              <sp-calendar-cell-button\n                spRangeCalendarCellButton\n                #range=\"spRangeCalendarCellButton\"\n                [class.sapphire-calendar__button--range-selection]=\"\n                  range.isHighlighted()\n                \"\n                [class.sapphire-calendar__button--selected]=\"\n                  range.isHighlighted()\n                \"\n                [class.sapphire-calendar__button--selection-start]=\"\n                  range.isSelectionStart()\n                \"\n                [class.sapphire-calendar__button--range-start]=\"\n                  range.isHighlightStart()\n                \"\n                [class.sapphire-calendar__button--range-end]=\"\n                  range.isHighlightEnd()\n                \"\n                [class.sapphire-calendar__button--selection-end]=\"\n                  range.isSelectionEnd()\n                \"\n              ></sp-calendar-cell-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n  <div class=\"sapphire-calendar__custom-ranges\" *ngIf=\"predefinedRanges\">\n    <div *ngFor=\"let range of _getPredefinedRanges(); trackBy: _trackByIndex\">\n      <button\n        sp-button\n        variant=\"text\"\n        (click)=\"selectPredefinedRange(range.key)\"\n      >\n        {{ range.value.label }}\n      </button>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CalendarComponent } from './calendar.component';\nimport { RangeCalendarComponent } from './range-calendar.component';\n\n@NgModule({\n  declarations: [],\n  imports: [CalendarComponent, RangeCalendarComponent],\n  exports: [CalendarComponent, RangeCalendarComponent],\n})\nexport class SapphireCalendarModule {}\n","import { ValidatorFn } from '@angular/forms';\nimport { DateValue } from '@internationalized/date';\n\nconst getRangeErrors = ({\n  value,\n  minValue,\n  maxValue,\n}: {\n  value: DateValue;\n  minValue?: DateValue;\n  maxValue?: DateValue;\n}) => {\n  const isBeforeMin = minValue ? value.compare(minValue) < 0 : false;\n  const isAfterMax = maxValue ? value.compare(maxValue) > 0 : false;\n\n  return {\n    ...(isBeforeMin ? { minValue: isBeforeMin } : {}),\n    ...(isAfterMax ? { maxValue: isAfterMax } : {}),\n  };\n};\n\n/**\n * Validator for a DateValue to be within a range (closed or open).\n * Can also be used to validate a RangeValue<DateValue> against a range.\n */\nexport function createDateRangeValidator({\n  minValue,\n  maxValue,\n}: {\n  minValue?: DateValue;\n  maxValue?: DateValue;\n}): ValidatorFn {\n  return function validateDate(control) {\n    if (control.value?.start && control.value?.end) {\n      return {\n        ...getRangeErrors({ value: control.value.start, minValue }),\n        ...getRangeErrors({ value: control.value.end, maxValue }),\n      };\n    } else if (control.value) {\n      return getRangeErrors({ value: control.value, minValue, maxValue });\n    } else {\n      return {};\n    }\n  };\n}\n\nconst getCustomError = ({\n  value,\n  isDateUnavailable,\n}: {\n  value: DateValue;\n  isDateUnavailable?: (value: DateValue) => boolean;\n}) => {\n  const isUnavailable = isDateUnavailable ? isDateUnavailable(value) : false;\n\n  return {\n    ...(isUnavailable ? { isDateUnavailable: true } : {}),\n  };\n};\n\n/**\n * Custom validator to determine if a value is valid or not.\n * Can also be used to validate a RangeValue<DateValue>. In\n * such case both the start and end dates must pass validation.\n */\nexport function createCustomDateValidator({\n  isDateUnavailable,\n}: {\n  isDateUnavailable?: (value: DateValue) => boolean;\n}): ValidatorFn {\n  return function validateDate(control) {\n    if (control.value?.start && control.value?.end) {\n      return {\n        ...getCustomError({ value: control.value.end, isDateUnavailable }),\n        ...getCustomError({ value: control.value.start, isDateUnavailable }),\n      };\n    } else if (control.value) {\n      return getCustomError({ value: control.value, isDateUnavailable });\n    } else {\n      return {};\n    }\n  };\n}\n\n/**\n * Validator for controls that work with a value of type RangeValue<DateValue>.\n * This validates that the date range is not absurd (eg. start date is after\n * end date).\n */\nexport function createDateRangeSanityValidator(): ValidatorFn {\n  return function validateDate(control) {\n    if (control.value?.start && control.value?.end) {\n      return control.value.start.compare(control.value.end) > 0\n        ? { invalidDateRange: true }\n        : {};\n    } else {\n      return {};\n    }\n  };\n}\n","/* eslint-disable */\n\n/*\n * This file was copied from @react-aria/utils\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/isScrollable.ts\n */\n\nexport function isScrollable(\n  node: Element,\n  checkForOverflow?: boolean\n): boolean {\n  let style = window.getComputedStyle(node);\n  let isScrollable = /(auto|scroll)/.test(\n    style.overflow + style.overflowX + style.overflowY\n  );\n\n  if (isScrollable && checkForOverflow) {\n    isScrollable =\n      node.scrollHeight !== node.clientHeight ||\n      node.scrollWidth !== node.clientWidth;\n  }\n\n  return isScrollable;\n}\n","/*\n * This file was copied from @react-aria/utils\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/getScrollParent.ts\n */\n\nimport { isScrollable } from './isScrollable';\n\nexport function getScrollParent(\n  node: Element,\n  checkForOverflow?: boolean\n): Element {\n  let scrollableNode: Element | null = node;\n  if (isScrollable(scrollableNode, checkForOverflow)) {\n    scrollableNode = scrollableNode.parentElement;\n  }\n\n  while (scrollableNode && !isScrollable(scrollableNode, checkForOverflow)) {\n    scrollableNode = scrollableNode.parentElement;\n  }\n\n  return (\n    scrollableNode || document.scrollingElement || document.documentElement\n  );\n}\n","/*\n * This file was copied from @react-aria/utils\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/getScrollParents.ts\n */\n\nimport { isScrollable } from './isScrollable';\n\nexport function getScrollParents(\n  node: Element,\n  checkForOverflow?: boolean\n): Element[] {\n  const scrollParents: Element[] = [];\n\n  while (node && node !== document.documentElement) {\n    if (isScrollable(node, checkForOverflow)) {\n      scrollParents.push(node);\n    }\n    node = node.parentElement as Element;\n  }\n\n  return scrollParents;\n}\n","/* eslint-disable */\n/*\n * This file was copied from @react-aria/utils\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/scrollIntoView.ts\n */\n\nimport { getScrollParents } from './getScrollParents';\n\ninterface ScrollIntoViewportOpts {\n  /** The optional containing element of the target to be centered in the viewport. */\n  containingElement?: Element;\n}\n\n/**\n * Scrolls `scrollView` so that `element` is visible.\n * Similar to `element.scrollIntoView({block: 'nearest'})` (not supported in Edge),\n * but doesn't affect parents above `scrollView`.\n */\nexport function scrollIntoView(scrollView: HTMLElement, element: HTMLElement) {\n  let offsetX = relativeOffset(scrollView, element, 'left');\n  let offsetY = relativeOffset(scrollView, element, 'top');\n  let width = element.offsetWidth;\n  let height = element.offsetHeight;\n  let x = scrollView.scrollLeft;\n  let y = scrollView.scrollTop;\n\n  // Account for top/left border offsetting the scroll top/Left\n  let { borderTopWidth, borderLeftWidth } = getComputedStyle(scrollView);\n  let borderAdjustedX = scrollView.scrollLeft + parseInt(borderLeftWidth, 10);\n  let borderAdjustedY = scrollView.scrollTop + parseInt(borderTopWidth, 10);\n  // Ignore end/bottom border via clientHeight/Width instead of offsetHeight/Width\n  let maxX = borderAdjustedX + scrollView.clientWidth;\n  let maxY = borderAdjustedY + scrollView.clientHeight;\n\n  if (offsetX <= x) {\n    x = offsetX - parseInt(borderLeftWidth, 10);\n  } else if (offsetX + width > maxX) {\n    x += offsetX + width - maxX;\n  }\n  if (offsetY <= borderAdjustedY) {\n    y = offsetY - parseInt(borderTopWidth, 10);\n  } else if (offsetY + height > maxY) {\n    y += offsetY + height - maxY;\n  }\n  scrollView.scrollLeft = x;\n  scrollView.scrollTop = y;\n}\n\n/**\n * Computes the offset left or top from child to ancestor by accumulating\n * offsetLeft or offsetTop through intervening offsetParents.\n */\nfunction relativeOffset(\n  ancestor: HTMLElement,\n  child: HTMLElement,\n  axis: 'left' | 'top'\n) {\n  const prop = axis === 'left' ? 'offsetLeft' : 'offsetTop';\n  let sum = 0;\n  while (child.offsetParent) {\n    sum += child[prop];\n    if (child.offsetParent === ancestor) {\n      // Stop once we have found the ancestor we are interested in.\n      break;\n    } else if (child.offsetParent.contains(ancestor)) {\n      // If the ancestor is not `position:relative`, then we stop at\n      // _its_ offset parent, and we subtract off _its_ offset, so that\n      // we end up with the proper offset from child to ancestor.\n      sum -= ancestor[prop];\n      break;\n    }\n    child = child.offsetParent as HTMLElement;\n  }\n  return sum;\n}\n\n/**\n * Scrolls the `targetElement` so it is visible in the viewport. Accepts an optional `opts.containingElement`\n * that will be centered in the viewport prior to scrolling the targetElement into view. If scrolling is prevented on\n * the body (e.g. targetElement is in a popover), this will only scroll the scroll parents of the targetElement up to but not including the body itself.\n */\nexport function scrollIntoViewport(\n  targetElement: Element,\n  opts?: ScrollIntoViewportOpts\n) {\n  if (document.contains(targetElement)) {\n    let root = document.scrollingElement || document.documentElement;\n    let isScrollPrevented = window.getComputedStyle(root).overflow === 'hidden';\n    // If scrolling is not currently prevented then we aren’t in a overlay nor is a overlay open, just use element.scrollIntoView to bring the element into view\n    if (!isScrollPrevented) {\n      let { left: originalLeft, top: originalTop } =\n        targetElement.getBoundingClientRect();\n\n      // use scrollIntoView({block: 'nearest'}) instead of .focus to check if the element is fully in view or not since .focus()\n      // won't cause a scroll if the element is already focused and doesn't behave consistently when an element is partially out of view horizontally vs vertically\n      targetElement?.scrollIntoView?.({ block: 'nearest' });\n      let { left: newLeft, top: newTop } =\n        targetElement.getBoundingClientRect();\n      // Account for sub pixel differences from rounding\n      if (\n        Math.abs(originalLeft - newLeft) > 1 ||\n        Math.abs(originalTop - newTop) > 1\n      ) {\n        opts?.containingElement?.scrollIntoView?.({\n          block: 'center',\n          inline: 'center',\n        });\n        targetElement.scrollIntoView?.({ block: 'nearest' });\n      }\n    } else {\n      let scrollParents = getScrollParents(targetElement);\n      // If scrolling is prevented, we don't want to scroll the body since it might move the overlay partially offscreen and the user can't scroll it back into view.\n      for (let scrollParent of scrollParents) {\n        scrollIntoView(\n          scrollParent as HTMLElement,\n          targetElement as HTMLElement\n        );\n      }\n    }\n  }\n}\n","/**\n * The only reason we need this is because of this error NG3003.\n * More about the error: https://angular.dev/errors/NG3003\n * Suggested workaround: https://stackoverflow.com/questions/68321910/angular-ng3003-error-when-child-component-references-parent-component\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const DATE_FIELD = new InjectionToken('DateFieldInputComponent');\n","import { MessageDictionary } from '@internationalized/message';\nimport da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nconst translations = new MessageDictionary(\n  {\n    'da-DK': da,\n    'en-US': en,\n    'de-DE': de,\n    'fi-FI': fi,\n    'nb-NO': no,\n    'pl-PL': pl,\n    'sv-SE': se,\n  },\n  'en-US'\n);\n\nexport default translations;\n","import {\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  inject,\n  Input,\n  Optional,\n} from '@angular/core';\nimport { FieldComponent, UseComponentStyles } from '@danske/sapphire-angular';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { NumberParser } from '@internationalized/number';\nimport { DateSegment } from './utils/Segment';\nimport { getScrollParent } from './utils/getScrollParent';\nimport { scrollIntoViewport } from './utils/scrollIntoView';\nimport { DATE_FIELD } from './date-field.token';\nimport type { DateFieldInputComponent } from './date-field-input.component';\nimport { Platform } from '@angular/cdk/platform';\nimport { TranslateService } from '../../common/translate.service';\nimport translations from '../i18n';\n\n@Component({\n  selector: 'sp-date-field-segment',\n  template: '{{ segment.text }}',\n  host: {\n    class: 'sapphire-date-field__segment',\n    '[class.sapphire-date-field__segment--filled]': '!segment.isPlaceholder',\n    '[class.is-disabled]': 'dateField.disabled',\n    // spinbuttons cannot be focused with VoiceOver on iOS.\n    // so we change the role and remove the spinbutton aria attrs.\n    '[attr.role]': 'platform.IOS ? \"textbox\" : \"spinbutton\"',\n    '[attr.aria-valuenow]':\n      'platform.IOS ? null : segment.value !== null ? segment.value : null',\n    '[attr.aria-valuetext]': 'platform.IOS ? null : ariaTextValue',\n    '[attr.aria-valuemin]': 'platform.IOS ? null : segment.minValue',\n    '[attr.aria-valuemax]': 'platform.IOS ? null : segment.maxValue',\n    '[attr.tabindex]': 'dateField.disabled ? null : \"0\"',\n    '[attr.inputmode]': 'isEditable ? \"numeric\" : null',\n    '[attr.enterkeyhint]': 'isEditable ? \"next\" : null',\n    '[attr.autocorrect]': 'isEditable ? \"off\" : null',\n    '[attr.spellcheck]': 'isEditable ? \"false\" : null',\n    '[attr.contenteditable]': 'isEditable ? true : null',\n    '[attr.data-placeholder]': 'segment.isPlaceholder ? \"true\" : null',\n    '[attr.aria-readonly]': '!isEditable ? \"true\" : null',\n    '[attr.aria-invalid]': 'field?.hasError(dateField) ? \"true\" : null',\n    '[attr.aria-required]': 'dateField.required ? \"true\" : null',\n    '[attr.aria-disabled]': 'dateField.disabled ? \"true\" : null',\n    '[attr.aria-label]': 'ariaLabel()',\n    '[attr.aria-labelledby]': 'id + \" \" + field?.label?.id',\n    '[attr.aria-describedby]': 'field?.error?.id || field?.note?.id',\n  },\n  hostDirectives: [UseComponentStyles],\n})\nexport class DateFieldSegmentComponent {\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private translateService: TranslateService,\n    public platform: Platform,\n    @Optional() public field?: FieldComponent\n  ) {\n    this.numberParser = new NumberParser(this.dateField.locale, {\n      maximumFractionDigits: 0,\n    });\n\n    document.addEventListener('selectionchange', this.onSelectionChange);\n  }\n\n  @HostBinding('id')\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  segment!: DateSegment;\n\n  @Input()\n  additionalAriaLabel?: string;\n\n  // see the token definition for an explanation of this\n  dateField: DateFieldInputComponent = inject(\n    DATE_FIELD\n  ) as DateFieldInputComponent;\n\n  focus() {\n    this.elementRef?.nativeElement.focus();\n  }\n\n  /**\n   * Element is labelled by two items. The first is this element itself\n   * with the below label. And the second is the field's label.\n   * In the end screenreaders will read something like\n   * \"day, Appointment date\" given a field with label \"Appointment date\".\n   * Or, if an additionalAriaLabel is provided (ie, \"start date\"), it will read\n   * \"day, start date, Appointment date\".\n   */\n\n  ariaLabel(): string | null {\n    switch (this.segment.type) {\n      case 'day':\n        return this.joinLabel(\n          this.translateService.translate('day', translations),\n          this.additionalAriaLabel\n        );\n      case 'month':\n        return this.joinLabel(\n          this.translateService.translate('month', translations),\n          this.additionalAriaLabel\n        );\n      case 'year':\n        return this.joinLabel(\n          this.translateService.translate('year', translations),\n          this.additionalAriaLabel\n        );\n      default:\n        return null;\n    }\n  }\n\n  get isEditable(): boolean {\n    return !this.dateField.disabled && !this.dateField.readonly;\n  }\n\n  get ariaTextValue(): string {\n    if (this.segment.isPlaceholder) {\n      return this.translateService.translate('empty', translations);\n    } else {\n      return this.segment.type === 'month'\n        ? `${this.segment.text}` // TODO(a11y) should concatenate \"- ${localizedMonthName}\"\n        : this.segment.text;\n    }\n  }\n\n  private joinLabel(...parts: Array<string | undefined>): string {\n    return [...parts].filter(Boolean).join(', ') + ', ';\n  }\n\n  private numberParser: NumberParser;\n\n  private enteredKeys: string = '';\n\n  private onSelectionChange(): void {\n    // Enforce that the selection is collapsed when inside a date segment.\n    // Otherwise, when tapping on a segment in Android Chrome and then entering text,\n    // composition events will be fired that break the DOM structure and crash the page.\n    const selection = window.getSelection();\n    if (\n      this.elementRef?.nativeElement.contains(selection?.anchorNode || null)\n    ) {\n      selection?.collapse(this.elementRef.nativeElement);\n    }\n  }\n\n  private backspace(): void {\n    if (this.segment.text === this.segment.placeholder) {\n      this.dateField.focusPreviousSegment();\n    }\n    if (\n      this.numberParser.isValidPartialNumber(this.segment.text) &&\n      !this.dateField.readonly &&\n      !this.segment.isPlaceholder\n    ) {\n      let newValue = this.segment.text.slice(0, -1);\n      const parsed = this.numberParser.parse(newValue);\n      newValue = parsed === 0 ? '' : newValue;\n      if (newValue.length === 0 || parsed === 0) {\n        this.dateField.clearSegment(this.segment.type);\n      } else {\n        this.dateField.setSegment(this.segment.type, parsed);\n      }\n      this.enteredKeys = newValue;\n    }\n  }\n\n  @HostListener('focus')\n  private onFocus() {\n    this.enteredKeys = '';\n\n    // scroll into viewport.\n    // Especially useful for mobile to mimic the focus on input behaviour.\n    scrollIntoViewport(this.elementRef.nativeElement, {\n      containingElement: getScrollParent(this.elementRef.nativeElement),\n    });\n\n    // Collapse selection to start or Chrome won't fire input events.\n    const selection = window.getSelection();\n    selection?.collapse(this.elementRef.nativeElement);\n  }\n\n  @HostListener('keydown', ['$event'])\n  private onKeyDown(e: KeyboardEvent) {\n    if (\n      !e.ctrlKey &&\n      !e.metaKey &&\n      !e.shiftKey &&\n      !e.altKey &&\n      !this.dateField.readonly\n    ) {\n      switch (e.key) {\n        case 'PageUp':\n          e.preventDefault();\n          this.dateField.incrementPage(this.segment.type);\n          break;\n        case 'ArrowUp':\n        case 'Up':\n          e.preventDefault();\n          this.dateField.increment(this.segment.type);\n          break;\n        case 'PageDown':\n          e.preventDefault();\n          this.dateField.decrementPage(this.segment.type);\n          break;\n        case 'ArrowDown':\n        case 'Down':\n          e.preventDefault();\n          this.dateField.decrement(this.segment.type);\n          break;\n        case 'Home':\n          e.preventDefault();\n          this.dateField.setSegment(this.segment.type, this.segment.minValue);\n          break;\n        case 'End':\n          e.preventDefault();\n          this.dateField.setSegment(this.segment.type, this.segment.maxValue);\n          break;\n        case 'ArrowLeft':\n        case 'Left':\n          e.preventDefault();\n          this.dateField.focusPreviousSegment();\n          break;\n        case 'ArrowRight':\n        case 'Right':\n          e.preventDefault();\n          this.dateField.focusNextSegment();\n          break;\n      }\n    }\n  }\n\n  private compositionTextContent: string | null = null;\n\n  @HostListener('beforeinput', ['$event'])\n  private onBeforeInput(e: InputEvent) {\n    e.preventDefault();\n\n    switch (e.inputType) {\n      case 'deleteContentBackward':\n      case 'deleteContentForward':\n        if (\n          this.numberParser.isValidPartialNumber(this.segment.text) &&\n          !this.dateField.readonly\n        ) {\n          this.backspace();\n        }\n        break;\n      case 'insertCompositionText':\n        // insertCompositionText cannot be canceled.\n        // Record the current state of the element so we can restore it in the `input` event below.\n        this.compositionTextContent = this.elementRef.nativeElement.textContent;\n        break;\n      default:\n        if (\n          e.data != null &&\n          !this.dateField.disabled &&\n          !this.dateField.readonly\n        ) {\n          const key = e.data;\n          const newValue = this.enteredKeys + key;\n\n          if (this.numberParser.isValidPartialNumber(newValue)) {\n            const numberValue = this.numberParser.parse(newValue);\n\n            if (!isNaN(numberValue)) {\n              const segmentValue =\n                numberValue > this.segment.maxValue\n                  ? this.numberParser.parse(key)\n                  : numberValue;\n\n              const shouldSetValue =\n                segmentValue !== 0 || this.segment.minValue === 0;\n\n              if (shouldSetValue) {\n                this.dateField.setSegment(this.segment.type, segmentValue);\n              }\n\n              if (\n                Number(numberValue + '0') > this.segment.maxValue ||\n                newValue.length >= String(this.segment.maxValue).length\n              ) {\n                this.enteredKeys = '';\n                if (shouldSetValue) {\n                  this.dateField.focusNextSegment();\n                }\n              } else {\n                this.enteredKeys = newValue;\n              }\n            }\n          }\n        }\n    }\n  }\n\n  @HostListener('input', ['$event'])\n  private onInput(e: InputEvent) {\n    if (e.inputType === 'insertCompositionText') {\n      this.elementRef.nativeElement.textContent = this.compositionTextContent;\n    }\n  }\n\n  ngOnDestroy() {\n    document.removeEventListener('selectionchange', this.onSelectionChange);\n  }\n}\n","export const EDITABLE_SEGMENT_TYPES = ['year', 'month', 'day'] as const;\n\nexport type EditableSegmentType = (typeof EDITABLE_SEGMENT_TYPES)[number];\n\nexport interface DateSegment {\n  type: EditableSegmentType;\n  isPlaceholder: boolean;\n  placeholder: string;\n  text: string;\n  value: number | null;\n  minValue: number;\n  maxValue: number;\n}\n\nexport interface LiteralSegment {\n  type: 'literal';\n  text: string;\n}\n\nexport type Segment = DateSegment | LiteralSegment;\n\nexport const isEditableSegment = (\n  segmentType: Intl.DateTimeFormatPartTypes\n): segmentType is EditableSegmentType =>\n  (EDITABLE_SEGMENT_TYPES as readonly string[]).includes(segmentType);\n","/**\n * This file was copied from @react-stately/datepicker\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/datepicker/src/placeholders.ts\n */\n\nimport { LocalizedStringDictionary } from '@internationalized/string';\n\n// These placeholders are based on the strings used by the <input type=\"date\">\n// implementations in Chrome and Firefox. Additional languages are supported\n// here than React Spectrum's typical translations.\nconst placeholders = new LocalizedStringDictionary(\n  {\n    ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n    af: { year: 'jjjj', month: 'mm', day: 'dd' },\n    am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n    an: { year: 'aaaa', month: 'mm', day: 'dd' },\n    ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n    ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n    az: { year: 'iiii', month: 'aa', day: 'gg' },\n    be: { year: 'гггг', month: 'мм', day: 'дд' },\n    bg: { year: 'гггг', month: 'мм', day: 'дд' },\n    bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n    br: { year: 'bbbb', month: 'mm', day: 'dd' },\n    bs: { year: 'gggg', month: 'mm', day: 'dd' },\n    ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n    cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n    ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n    cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n    cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n    da: { year: 'åååå', month: 'mm', day: 'dd' },\n    de: { year: 'jjjj', month: 'mm', day: 'tt' },\n    dsb: { year: 'llll', month: 'mm', day: 'źź' },\n    el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n    en: { year: 'yyyy', month: 'mm', day: 'dd' },\n    eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n    es: { year: 'aaaa', month: 'mm', day: 'dd' },\n    et: { year: 'aaaa', month: 'kk', day: 'pp' },\n    eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n    fa: { year: 'سال', month: 'ماه', day: 'روز' },\n    ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n    fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n    fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n    fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n    ga: { year: 'bbbb', month: 'mm', day: 'll' },\n    gd: { year: 'bbbb', month: 'mm', day: 'll' },\n    gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n    he: { year: 'שנה', month: 'חודש', day: 'יום' },\n    hr: { year: 'gggg', month: 'mm', day: 'dd' },\n    hsb: { year: 'llll', month: 'mm', day: 'dd' },\n    hu: { year: 'éééé', month: 'hh', day: 'nn' },\n    ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n    id: { year: 'tttt', month: 'bb', day: 'hh' },\n    it: { year: 'aaaa', month: 'mm', day: 'gg' },\n    ja: { year: ' 年 ', month: '月', day: '日' },\n    ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n    kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n    kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n    ko: { year: '연도', month: '월', day: '일' },\n    lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n    lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n    lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n    lv: { year: 'gggg', month: 'mm', day: 'dd' },\n    meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n    ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n    ms: { year: 'tttt', month: 'mm', day: 'hh' },\n    nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n    nn: { year: 'åååå', month: 'mm', day: 'dd' },\n    no: { year: 'åååå', month: 'mm', day: 'dd' },\n    oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n    pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n    pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n    rm: { year: 'oooo', month: 'mm', day: 'dd' },\n    ro: { year: 'aaaa', month: 'll', day: 'zz' },\n    ru: { year: 'гггг', month: 'мм', day: 'дд' },\n    sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n    scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n    sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n    sl: { year: 'llll', month: 'mm', day: 'dd' },\n    sr: { year: 'гггг', month: 'мм', day: 'дд' },\n    sv: { year: 'åååå', month: 'mm', day: 'dd' },\n    szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n    tg: { year: 'сссс', month: 'мм', day: 'рр' },\n    th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n    tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n    uk: { year: 'рррр', month: 'мм', day: 'дд' },\n    'zh-CN': { year: '年', month: '月', day: '日' },\n    'zh-TW': { year: '年', month: '月', day: '日' },\n  },\n  'en'\n);\n\nexport function getPlaceholder(field: string, value: string, locale: string) {\n  // Use the actual placeholder value for the era and day period fields.\n  if (field === 'era' || field === 'dayPeriod') {\n    return value;\n  }\n\n  if (field === 'year' || field === 'month' || field === 'day') {\n    return placeholders.getStringForLocale(field, locale);\n  }\n\n  // For time fields (e.g. hour, minute, etc.), use two dashes as the placeholder.\n  return '––';\n}\n","import {\n  DateValue,\n  getMinimumDayInMonth,\n  getMinimumMonthInYear,\n} from '@internationalized/date';\nimport { EditableSegmentType } from './Segment';\n\nexport function getSegmentLimits(date: DateValue, type: EditableSegmentType) {\n  switch (type) {\n    case 'year':\n      return {\n        value: date.year,\n        minValue: 1,\n        maxValue: date.calendar.getYearsInEra(date),\n      };\n    case 'month':\n      return {\n        value: date.month,\n        minValue: getMinimumMonthInYear(date),\n        maxValue: date.calendar.getMonthsInYear(date),\n      };\n    case 'day':\n      return {\n        value: date.day,\n        minValue: getMinimumDayInMonth(date),\n        maxValue: date.calendar.getDaysInMonth(date),\n      };\n    default:\n      // should not happen\n      return {};\n  }\n}\n","/**\n * Copied from the @react-stately/datepicker utils\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/datepicker/src/utils.ts\n */\n\nexport type FieldOptions = Pick<\n  Intl.DateTimeFormatOptions,\n  'year' | 'month' | 'day' | 'hour' | 'minute' | 'second'\n>;\n\nconst DEFAULT_FIELD_OPTIONS: FieldOptions = {\n  year: 'numeric',\n  month: 'numeric',\n  day: 'numeric',\n};\n\nconst TWO_DIGIT_FIELD_OPTIONS: FieldOptions = {\n  year: 'numeric',\n  month: '2-digit',\n  day: '2-digit',\n};\n\nexport interface FormatterOptions {\n  shouldForceLeadingZeros?: boolean;\n}\n\nexport function getFormatOptions(\n  options: FormatterOptions\n): Intl.DateTimeFormatOptions {\n  const defaultFieldOptions = options.shouldForceLeadingZeros\n    ? TWO_DIGIT_FIELD_OPTIONS\n    : DEFAULT_FIELD_OPTIONS;\n  return defaultFieldOptions;\n}\n","import { Component, Input } from '@angular/core';\nimport { UseComponentStyles } from '@danske/sapphire-angular';\nimport { LiteralSegment } from './utils/Segment';\n\n@Component({\n  selector: 'sp-date-field-segment-literal',\n  template: '{{ segment.text }}',\n  host: {\n    class:\n      'sapphire-date-field__segment sapphire-date-field__segment--separator',\n    'aria-hidden': 'true',\n  },\n  hostDirectives: [UseComponentStyles],\n})\nexport class DateFieldSegmentLiteralComponent {\n  constructor() {}\n\n  @Input()\n  segment!: LiteralSegment;\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n} from '@angular/core';\nimport { FieldComponent, UseComponentStyles } from '@danske/sapphire-angular';\nimport { DateFormatter, DateValue, today } from '@internationalized/date';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { DateFieldSegmentComponent } from './date-field-segment.component';\nimport {\n  Segment,\n  EditableSegmentType,\n  isEditableSegment,\n} from './utils/Segment';\nimport {\n  SAPPHIRE_DATE_FORMAT_LOCALE,\n  SAPPHIRE_DATE_LOCALE,\n} from '../../calendar/src/sapphire-date-locale';\nimport {\n  ControlValueAccessor,\n  NG_VALUE_ACCESSOR,\n  ValidatorFn,\n} from '@angular/forms';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { getPlaceholder } from './utils/placeholders';\nimport { getSegmentLimits } from './utils/getSegmentLimits';\nimport { getFormatOptions } from './utils/getFormatterOptions';\nimport { DATE_FIELD } from './date-field.token';\n\nconst PAGE_STEP = {\n  year: 5,\n  month: 2,\n  day: 7,\n};\n\n/**\n * Sapphire date input field.\n */\n@Component({\n  selector: 'sp-date-field-input',\n  templateUrl: './date-field-input.component.html',\n  host: {\n    class: 'sapphire-date-field__input',\n  },\n  providers: [\n    {\n      provide: DATE_FIELD,\n      useExisting: forwardRef(() => DateFieldInputComponent),\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DateFieldInputComponent),\n      multi: true,\n    },\n  ],\n  hostDirectives: [UseComponentStyles],\n  standalone: false,\n})\nexport class DateFieldInputComponent\n  implements ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy\n{\n  constructor(\n    private elementRef: ElementRef,\n    private focusMonitor: FocusMonitor,\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    @Optional()\n    @Inject(SAPPHIRE_DATE_FORMAT_LOCALE)\n    readonly dateFormatLocaleFromContext: string | null,\n    @Optional() public field?: FieldComponent\n  ) {\n    this.locale = localeFromContext;\n    this.dateFormatLocale = dateFormatLocaleFromContext || localeFromContext;\n\n    const formatOptions = getFormatOptions({\n      shouldForceLeadingZeros: !!this.shouldForceLeadingZeros,\n    });\n    this.dateFormatterByLocale[this.dateFormatLocale] = new DateFormatter(\n      this.dateFormatLocale,\n      formatOptions\n    );\n\n    this.placeholderValue =\n      this.value ?? today(this.dateFormatter.resolvedOptions().timeZone);\n\n    this.displayValue = this.placeholderValue;\n\n    this.validSegments = this.value\n      ? { day: true, month: true, year: true }\n      : { day: false, month: false, year: false };\n\n    this.segments = this.generateSegments();\n  }\n\n  /**\n   * A unique id for the host DOM element.\n   * If none is supplied, it will be auto-generated.\n   */\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  readonly: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  required: BooleanInput = false;\n\n  @HostListener('click')\n  private onClick() {\n    if (!this.focusedSegment) {\n      this.focus();\n    }\n  }\n\n  @Output()\n  focusBefore: EventEmitter<void> = new EventEmitter();\n\n  @Output()\n  focusAfter: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * The placeholder date. This is used as the starting\n   * point when modifying the field by keyboard.\n   *\n   * Defaults to the date value, if provided, otherwise to today's date.\n   */\n  @Input()\n  placeholderValue: DateValue;\n\n  @Input()\n  value: DateValue | null = null;\n\n  @Input()\n  locale!: string;\n\n  /**\n   * Whether to always show leading zeros in the month, and day fields.\n   * By default, this is determined by the user's locale.\n   */\n  @Input()\n  @CoerceBoolean\n  shouldForceLeadingZeros?: BooleanInput = false;\n\n  @Input()\n  segmentAriaLabel?: (segmentType: EditableSegmentType) => string;\n\n  /**\n   * This can be the placeholderValue or the actual value\n   * or neither.\n   * When the date is partially filled, we still\n   * want an actual date to work with, but we don't want to\n   * modify the actual value nor the placeholderValue until\n   * we have a full date from the user.\n   */\n  private displayValue: DateValue;\n\n  private dateFormatLocale: string;\n\n  private dateFormatterByLocale: Record<string, DateFormatter> = {};\n\n  private get dateFormatter(): DateFormatter {\n    if (!this.dateFormatterByLocale[this.dateFormatLocale]) {\n      const formatOptions = getFormatOptions({\n        shouldForceLeadingZeros: !!this.shouldForceLeadingZeros,\n      });\n      this.dateFormatterByLocale[this.dateFormatLocale] = new DateFormatter(\n        this.dateFormatLocale,\n        formatOptions\n      );\n    }\n    return this.dateFormatterByLocale[this.dateFormatLocale];\n  }\n\n  private onChange: ((date: DateValue | null) => void) | undefined;\n\n  private onTouched: (() => void) | undefined;\n\n  @ViewChildren(DateFieldSegmentComponent)\n  private segmentComponents: QueryList<DateFieldSegmentComponent> =\n    new QueryList();\n\n  private validSegments: Record<EditableSegmentType, boolean>;\n\n  private adjustSegment(segmentType: EditableSegmentType, step: number): void {\n    this.validSegments[segmentType] = true;\n\n    this.setDisplayValue(\n      this.displayValue.cycle(segmentType, step, {\n        round: segmentType === 'year',\n      })\n    );\n  }\n\n  private generateSegments(): Segment[] {\n    const date = this.displayValue.toDate(\n      this.dateFormatter.resolvedOptions().timeZone\n    );\n\n    return this.dateFormatter.formatToParts(date).flatMap((segment) => {\n      if (segment.type === 'literal') {\n        return { type: segment.type, text: segment.value };\n      } else if (isEditableSegment(segment.type)) {\n        const isPlaceholder = !this.validSegments[segment.type];\n        const placeholder = getPlaceholder(\n          segment.type,\n          segment.value,\n          this.locale\n        );\n\n        return {\n          type: segment.type,\n          text: isPlaceholder ? placeholder : segment.value,\n          ...getSegmentLimits(this.displayValue, segment.type),\n          isPlaceholder,\n          placeholder,\n        } as Segment;\n      } else {\n        return [];\n      }\n    });\n  }\n\n  setValue({\n    value,\n    updateSegments,\n    emitChange,\n  }: {\n    value: DateValue | null;\n    updateSegments: boolean;\n    emitChange: boolean;\n  }) {\n    this.value = value;\n\n    if (updateSegments) {\n      if (this.value === null) {\n        this.validSegments = { day: false, month: false, year: false };\n        // The display value becomes the last placeholder\n        this.setDisplayValue(this.placeholderValue);\n      } else {\n        this.validSegments = { day: true, month: true, year: true };\n        this.setDisplayValue(this.value);\n      }\n    }\n\n    if (emitChange) {\n      this.onChange?.(this.value);\n    }\n  }\n\n  private setDisplayValue(date: DateValue) {\n    this.displayValue = date;\n\n    /**\n     * If all segments are valid after adjustment,\n     * we set the value of the date field to that.\n     */\n    if (\n      this.value?.compare(this.displayValue) !== 0 &&\n      Object.values(this.validSegments).every(Boolean)\n    ) {\n      this.setValue({\n        value: this.displayValue,\n        updateSegments: true,\n        emitChange: true,\n      });\n    }\n\n    /**\n     * This ugly mutation needs to happen otherwise angular's\n     * change detection won't pick it up.\n     */\n    this.generateSegments().forEach((segment, index) => {\n      Object.assign(this.segments[index], segment);\n    });\n  }\n\n  isPartiallyFilled(): boolean {\n    return Object.values(this.validSegments).some(Boolean);\n  }\n\n  /**\n   * Implements validation to provide in NG_VALIDATORS\n   */\n  validate: ValidatorFn = () => null;\n\n  segments: Segment[];\n\n  focusedSegment?: Segment;\n\n  increment(segmentType: EditableSegmentType): void {\n    this.adjustSegment(segmentType, 1);\n  }\n\n  decrement(segmentType: EditableSegmentType): void {\n    this.adjustSegment(segmentType, -1);\n  }\n\n  incrementPage(segmentType: EditableSegmentType): void {\n    this.adjustSegment(segmentType, PAGE_STEP[segmentType] || 1);\n  }\n\n  decrementPage(segmentType: EditableSegmentType): void {\n    this.adjustSegment(segmentType, -(PAGE_STEP[segmentType] || 1));\n  }\n\n  setSegment(segmentType: EditableSegmentType, value: number): void {\n    this.validSegments[segmentType] = true;\n    this.setDisplayValue(this.displayValue.set({ [segmentType]: value }));\n  }\n\n  clearSegment(segmentType: EditableSegmentType): void {\n    this.validSegments[segmentType] = false;\n\n    this.setDisplayValue(\n      this.displayValue.set({\n        [segmentType]: this.placeholderValue[segmentType],\n      })\n    );\n\n    this.setValue({ value: null, updateSegments: false, emitChange: true });\n  }\n\n  clear() {\n    this.setValue({ value: null, updateSegments: true, emitChange: true });\n  }\n\n  /**\n   * Implementing ControlValueAccessor interface below\n   */\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.setValue({ value, updateSegments: true, emitChange: false });\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onTouched = fn;\n  }\n\n  focus(end?: boolean) {\n    if (end) {\n      this.segmentComponents.last.focus();\n    } else {\n      this.segmentComponents.first.focus();\n    }\n  }\n\n  onSegmentFocus(segment: Segment) {\n    this.focusedSegment = segment;\n  }\n\n  /**\n   * Find the current focused segment and focus the next or previous segment.\n   */\n  focusSegment(offset: 1 | -1) {\n    if (!this.focusedSegment) {\n      return;\n    }\n\n    const currentFocusedIndex = this.segmentComponents\n      .toArray()\n      .findIndex(\n        (segmentComponent) => segmentComponent.segment === this.focusedSegment\n      );\n\n    const nextFocusIndex = currentFocusedIndex + offset;\n\n    if (nextFocusIndex < 0) {\n      this.focusBefore.emit();\n      return;\n    }\n\n    if (nextFocusIndex >= this.segmentComponents.length) {\n      this.focusAfter.emit();\n      return;\n    }\n\n    this.segmentComponents.toArray()[nextFocusIndex].focus();\n  }\n\n  focusNextSegment() {\n    this.focusSegment(1);\n  }\n\n  focusPreviousSegment() {\n    this.focusSegment(-1);\n  }\n\n  ngAfterViewInit() {\n    // Monitor the field input to know when segments blurred.\n    this.focusMonitor\n      .monitor(this.elementRef?.nativeElement, true)\n      .subscribe((origin) => {\n        if (origin === null) {\n          this.focusedSegment = undefined;\n        }\n      });\n\n    if (this.value) {\n      this.setValue({\n        value: this.value,\n        updateSegments: true,\n        emitChange: false,\n      });\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.locale || changes.shouldForceLeadingZeros) {\n      /**\n       * This ugly mutation needs to happen otherwise angular's\n       * change detection won't pick it up.\n       */\n      if (!this.dateFormatLocaleFromContext) {\n        this.dateFormatLocale = changes.locale?.currentValue || this.locale;\n      }\n\n      // Clear the cached formatter when shouldForceLeadingZeros changes\n      if (changes.shouldForceLeadingZeros) {\n        delete this.dateFormatterByLocale[this.dateFormatLocale];\n      }\n\n      this.generateSegments().forEach((segment, index) => {\n        Object.assign(this.segments[index], segment);\n      });\n    }\n  }\n\n  /**\n   * Implementing OnDestroy interface below\n   */\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef?.nativeElement);\n  }\n}\n","<ng-container *ngFor=\"let segment of segments\">\n  <sp-date-field-segment\n    *ngIf=\"segment.type !== 'literal'\"\n    [segment]=\"segment\"\n    (focus)=\"onSegmentFocus(segment)\"\n    [additionalAriaLabel]=\"segmentAriaLabel?.(segment.type)\"\n  ></sp-date-field-segment>\n  <sp-date-field-segment-literal\n    *ngIf=\"segment.type === 'literal'\"\n    [segment]=\"segment\"\n  ></sp-date-field-segment-literal>\n</ng-container>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {\n  UseComponentStylesOnHost,\n  FieldControl,\n  FieldComponent,\n  PopoverTriggerDirective,\n  IconRegistry,\n} from '@danske/sapphire-angular';\nimport { DateValue } from '@internationalized/date';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport {\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { MessageDictionary } from '@internationalized/message';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport {\n  createDateRangeValidator,\n  createCustomDateValidator,\n} from './validators';\nimport { DateFieldInputComponent } from './date-field-input.component';\nimport translations from '../i18n';\nimport {\n  SAPPHIRE_DATE_LOCALE,\n  PredefinedDate,\n} from '../../calendar/public_api';\nimport { iconCalendar, iconCloseOutline } from '@danske/sapphire-icons/js';\n\n/**\n * Sapphire date input field.\n */\n@Component({\n  selector: 'sp-date-field',\n  templateUrl: './date-field.component.html',\n  styleUrls: ['./date-field.component.scss'],\n  host: {\n    class: 'sapphire-date-field',\n    '[class.is-disabled]': 'isDisabled()',\n    '[class.sapphire-date-field--error]': 'field?.hasError(this)',\n    '[class.sapphire-date-field--md]': 'field?.size === \"md\"',\n    '[class.sapphire-date-field--sm]': 'field?.size === \"sm\"',\n    '[attr.aria-labelledby]': 'ariaLabelledBy',\n    '[class.sapphire-date-field--no-calendar]': 'noCalendarButton',\n    '[class.sapphire-date-field--no-clear-button]': 'noClearButton',\n    role: 'group',\n  },\n  providers: [\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => DateFieldComponent),\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DateFieldComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DateFieldComponent),\n      multi: true,\n    },\n    { provide: MessageDictionary, useValue: translations },\n  ],\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: false,\n})\nexport class DateFieldComponent<P extends string = string>\n  implements\n    FieldControl,\n    ControlValueAccessor,\n    AfterViewInit,\n    OnChanges,\n    OnDestroy\n{\n  constructor(\n    private elementRef: ElementRef,\n    private focusMonitor: FocusMonitor,\n    iconRegistry: IconRegistry,\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    @Optional() public field?: FieldComponent\n  ) {\n    this.locale = localeFromContext;\n    iconRegistry.registerIcons([iconCalendar, iconCloseOutline]);\n  }\n\n  /**\n   * A unique id for the host DOM element.\n   * If none is supplied, it will be auto-generated.\n   */\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  readonly: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  required: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  showWeekNumbersInCalendar: BooleanInput = false;\n\n  @Input()\n  value: DateValue | null = null;\n\n  /**\n   * A set of predefined dates that the user can more conveniently select.\n   */\n  @Input()\n  predefinedDates?: Record<P, PredefinedDate>;\n\n  /**\n   * The placeholder date. This is used as the starting\n   * point when modifying the field by keyboard.\n   *\n   * Defaults to the date value, if provided, otherwise to today's date.\n   */\n  @Input()\n  placeholderValue?: DateValue;\n\n  /**\n   * The minimum allowed date that a user may select.\n   */\n  @Input()\n  minValue?: DateValue;\n\n  /**\n   * The maximum allowed date that a user may select.\n   */\n  @Input()\n  maxValue?: DateValue;\n\n  /**\n   * Callback that is called for each date of the calendar. If it\n   * returns true, then the date is unavailable.\n   */\n  @Input()\n  isDateUnavailable?: (date: DateValue) => boolean;\n\n  @Input()\n  @CoerceBoolean\n  noClearButton: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  noCalendarButton: BooleanInput = false;\n\n  @Input()\n  locale: string;\n\n  /**\n   * Whether to always show leading zeros in the month, and dayfields.\n   * By default, this is determined by the user's locale.\n   */\n  @Input()\n  @CoerceBoolean\n  shouldForceLeadingZeros?: BooleanInput = false;\n\n  @AutoId()\n  calendarButtonId!: string;\n\n  onChange: ((date: DateValue | null) => void) | undefined;\n\n  private onTouched: (() => void) | undefined;\n\n  @ViewChild(PopoverTriggerDirective)\n  private popoverTrigger?: PopoverTriggerDirective;\n\n  @ViewChild(DateFieldInputComponent)\n  private dateFieldInput?: DateFieldInputComponent;\n\n  onCalendarSelectDate() {\n    this.popoverTrigger?.close();\n    this.onChange?.(this.value);\n  }\n\n  isPartiallyFilled(): boolean {\n    return !!this.dateFieldInput?.isPartiallyFilled();\n  }\n\n  /**\n   * Implements validation to provide in NG_VALIDATORS\n   */\n  validate: ValidatorFn = () => null;\n\n  clear() {\n    this.dateFieldInput?.clear();\n  }\n\n  /**\n   * Implementing ControlValueAccessor interface below\n   */\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.value = value;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onTouched = fn;\n  }\n\n  /**\n   * Implementing FieldControl interface below\n   */\n\n  focus() {\n    this.dateFieldInput?.focus();\n  }\n\n  getId(): string | undefined {\n    return this.id;\n  }\n\n  isDisabled(): boolean {\n    return coerceBooleanProperty(this.disabled);\n  }\n\n  ariaLabelledBy: string | undefined;\n\n  readonly hasDefaultWidth = true;\n\n  ngAfterViewInit() {\n    // Monitor focus in all children to know when the whole field blurred.\n    this.focusMonitor\n      .monitor(this.elementRef?.nativeElement, true)\n      .subscribe((origin) => {\n        if (origin === null) {\n          this.onTouched?.();\n        }\n      });\n  }\n\n  ngDoCheck(): void {\n    /**\n     * Workaround for ExpressionChangedAfterItHasBeenCheckedError.\n     */\n    this.ariaLabelledBy = this.field?.label?.id;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.minValue || changes.maxValue || changes.isDateUnavailable) {\n      this.validate =\n        Validators.compose([\n          createDateRangeValidator({\n            minValue: this.minValue,\n            maxValue: this.maxValue,\n          }),\n          createCustomDateValidator({\n            isDateUnavailable: this.isDateUnavailable,\n          }),\n        ]) ?? (() => null);\n    }\n  }\n\n  /**\n   * Implementing OnDestroy interface below\n   */\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef?.nativeElement);\n  }\n}\n","<button\n  type=\"button\"\n  *ngIf=\"!noCalendarButton\"\n  class=\"sapphire-date-field__button\"\n  spPopoverPlacement=\"top start\"\n  [spPopoverTriggerFor]=\"calendar\"\n  [disabled]=\"disabled\"\n  [id]=\"calendarButtonId\"\n  [attr.aria-label]=\"'calendar' | t\"\n  [attr.aria-labelledby]=\"calendarButtonId + ' ' + field?.label?.id\"\n>\n  <sp-icon name=\"calendar\" class=\"sapphire-date-field__icon\"></sp-icon>\n</button>\n<sp-date-field-input\n  [(ngModel)]=\"value\"\n  [ngModelOptions]=\"{ standalone: true }\"\n  (ngModelChange)=\"onChange?.($event)\"\n  [locale]=\"locale\"\n  [readonly]=\"readonly\"\n  [disabled]=\"!!disabled\"\n  [shouldForceLeadingZeros]=\"shouldForceLeadingZeros\"\n></sp-date-field-input>\n<button\n  type=\"button\"\n  class=\"sapphire-date-field__button sapphire-date-field__button--clear\"\n  *ngIf=\"!noClearButton && !disabled && !readonly && isPartiallyFilled()\"\n  (click)=\"clear()\"\n  [attr.aria-label]=\"'clear' | t\"\n>\n  <sp-icon name=\"closeOutline\" class=\"sapphire-date-field__icon\"></sp-icon>\n</button>\n<ng-template #calendar>\n  <sp-popover trapFocus noMaxWidth>\n    <sp-calendar\n      autoFocus\n      name=\"calendar\"\n      [size]=\"field?.size || 'lg'\"\n      showFixedWeeks\n      [locale]=\"locale\"\n      [readonly]=\"readonly\"\n      [disabled]=\"!!disabled\"\n      [(ngModel)]=\"value\"\n      [ngModelOptions]=\"{ standalone: true }\"\n      [showWeekNumbers]=\"showWeekNumbersInCalendar\"\n      [focusedDate]=\"placeholderValue\"\n      (ngModelChange)=\"onCalendarSelectDate()\"\n      [minValue]=\"minValue\"\n      [maxValue]=\"maxValue\"\n      [isDateUnavailable]=\"isDateUnavailable\"\n      [predefinedDates]=\"predefinedDates\"\n    ></sp-calendar>\n  </sp-popover>\n</ng-template>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport {\n  UseComponentStylesOnHost,\n  FieldControl,\n  FieldComponent,\n  PopoverTriggerDirective,\n  IconRegistry,\n} from '@danske/sapphire-angular';\nimport { DateValue } from '@internationalized/date';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport {\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { MessageDictionary } from '@internationalized/message';\nimport {\n  createDateRangeValidator,\n  createCustomDateValidator,\n  createDateRangeSanityValidator,\n} from './validators';\nimport { DateFieldInputComponent } from './date-field-input.component';\nimport {\n  PredefinedDateRange,\n  RangeValue,\n  SAPPHIRE_DATE_LOCALE,\n} from '../../calendar/public_api';\nimport { TranslateService } from '../../common/translate.service';\nimport translations from '../i18n';\nimport {\n  iconCalendar,\n  iconCloseOutline,\n  iconSubtract,\n} from '@danske/sapphire-icons/js';\n\n/**\n * Sapphire date input field.\n */\n@Component({\n  selector: 'sp-date-range-field',\n  templateUrl: './date-range-field.component.html',\n  styleUrls: ['./date-field.component.scss'],\n  host: {\n    class: 'sapphire-date-field sapphire-date-field--range',\n    '[class.is-disabled]': 'isDisabled()',\n    '[class.sapphire-date-field--error]': 'field?.hasError()',\n    '[class.sapphire-date-field--no-calendar]': 'noCalendarButton',\n    '[class.sapphire-date-field--no-clear-button]': 'noClearButton',\n    '[class.sapphire-date-field--md]': 'field?.size === \"md\"',\n    '[class.sapphire-date-field--sm]': 'field?.size === \"sm\"',\n    '[attr.aria-labelledby]': 'field?.label?.id',\n    role: 'group',\n  },\n  providers: [\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => DateRangeFieldComponent),\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DateRangeFieldComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DateRangeFieldComponent),\n      multi: true,\n    },\n    { provide: MessageDictionary, useValue: translations },\n  ],\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: false,\n})\nexport class DateRangeFieldComponent<P extends string = string>\n  implements\n    FieldControl,\n    ControlValueAccessor,\n    AfterViewInit,\n    OnChanges,\n    OnDestroy\n{\n  constructor(\n    private elementRef: ElementRef,\n    private focusMonitor: FocusMonitor,\n    private translateService: TranslateService,\n    iconRegistry: IconRegistry,\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    @Optional() public field?: FieldComponent\n  ) {\n    this.locale = localeFromContext;\n    iconRegistry.registerIcons([iconCalendar, iconSubtract, iconCloseOutline]);\n  }\n\n  /**\n   * A unique id for the host DOM element.\n   * If none is supplied, it will be auto-generated.\n   */\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  readonly: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  required: BooleanInput = false;\n\n  /**\n   * Whether to show the week numbers in the calendar.\n   */\n  @Input()\n  @CoerceBoolean\n  showWeekNumbersInCalendar: BooleanInput = false;\n\n  /**\n   * Whether to show two months in the calendar.\n   */\n  @Input()\n  @CoerceBoolean\n  showTwoMonthsInCalendar: BooleanInput = false;\n\n  /**\n   * Whether range is allowed to span unavailable dates.\n   */\n  @Input()\n  @CoerceBoolean\n  allowUnavailableDatesWithinRange: BooleanInput = false;\n\n  @Input()\n  value: RangeValue<DateValue> | null = null;\n\n  /**\n   * A set of predefined date ranges the user can more conveniently select.\n   */\n  @Input()\n  predefinedRanges?: Record<P, PredefinedDateRange>;\n\n  /**\n   * The minimum allowed date that a user may select.\n   */\n  @Input()\n  minValue?: DateValue;\n\n  /**\n   * The maximum allowed date that a user may select.\n   */\n  @Input()\n  maxValue?: DateValue;\n\n  /**\n   * Callback that is called for each date of the calendar. If it\n   * returns true, then the date is unavailable.\n   */\n  @Input()\n  isDateUnavailable?: (date: DateValue) => boolean;\n\n  @Input()\n  @CoerceBoolean\n  noClearButton: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  noCalendarButton: BooleanInput = false;\n\n  @Input()\n  locale: string;\n\n  /**\n   * Whether to always show leading zeros in the month, and day fields.\n   * By default, this is determined by the user's locale.\n   */\n  @Input()\n  @CoerceBoolean\n  shouldForceLeadingZeros?: BooleanInput = false;\n\n  @AutoId()\n  calendarButtonId!: string;\n\n  onChange: ((date: RangeValue<DateValue> | null) => void) | undefined;\n\n  private onTouched: (() => void) | undefined;\n\n  @ViewChild(PopoverTriggerDirective)\n  private popoverTrigger?: PopoverTriggerDirective;\n\n  @ViewChildren(DateFieldInputComponent)\n  _dateFieldInputs: QueryList<DateFieldInputComponent> = new QueryList();\n\n  startDateAriaLabel = () => {\n    return this.translateService.translate('start-date', translations);\n  };\n\n  endDateAriaLabel = () => {\n    return this.translateService.translate('end-date', translations);\n  };\n\n  onCalendarSelectDate() {\n    this.popoverTrigger?.close();\n    this.setValue({\n      value: this.value,\n      emitChange: true,\n    });\n  }\n\n  isPartiallyFilled(): boolean {\n    return (\n      this._dateFieldInputs.first?.isPartiallyFilled() ||\n      this._dateFieldInputs.last?.isPartiallyFilled()\n    );\n  }\n\n  displayValue: RangeValue<DateValue> | null = null;\n\n  setValue({\n    value,\n    emitChange,\n  }: {\n    value: Partial<RangeValue<DateValue>> | null;\n    emitChange: boolean;\n  }) {\n    this.displayValue =\n      value === null\n        ? null\n        : ({ ...this.displayValue, ...value } as RangeValue<DateValue>);\n\n    if (this.displayValue?.start && this.displayValue?.end) {\n      this.value = this.displayValue;\n      if (emitChange) {\n        this.onChange?.(this.value);\n      }\n    } else if (this.value !== null) {\n      this.value = null;\n      if (emitChange) {\n        this.onChange?.(this.value);\n      }\n    }\n  }\n\n  /**\n   * Implements validation to provide in NG_VALIDATORS\n   */\n  validate: ValidatorFn = () => null;\n\n  clear() {\n    this._dateFieldInputs.first?.clear();\n    this._dateFieldInputs.last?.clear();\n  }\n\n  /**\n   * Implementing ControlValueAccessor interface below\n   */\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.setValue({\n        value: value || null,\n        emitChange: false,\n      });\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onTouched = fn;\n  }\n\n  /**\n   * Implementing FieldControl interface below\n   */\n\n  focus() {\n    this._dateFieldInputs.first?.focus();\n  }\n\n  getId(): string | undefined {\n    return this.id;\n  }\n\n  isDisabled(): boolean {\n    return coerceBooleanProperty(this.disabled);\n  }\n\n  ngAfterViewInit() {\n    // Monitor focus in all children to know when the whole field blurred.\n    this.focusMonitor\n      .monitor(this.elementRef?.nativeElement, true)\n      .subscribe((origin) => {\n        if (origin === null) {\n          this.onTouched?.();\n        }\n      });\n\n    if (this.value) {\n      this.setValue({\n        value: this.value,\n        emitChange: false,\n      });\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.minValue || changes.maxValue || changes.isDateUnavailable) {\n      this.validate =\n        Validators.compose([\n          createDateRangeValidator({\n            minValue: this.minValue,\n            maxValue: this.maxValue,\n          }),\n          createCustomDateValidator({\n            isDateUnavailable: this.isDateUnavailable,\n          }),\n          createDateRangeSanityValidator(),\n        ]) ?? createDateRangeSanityValidator();\n    }\n  }\n\n  /**\n   * Implementing OnDestroy interface below\n   */\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef?.nativeElement);\n  }\n}\n","<button\n  type=\"button\"\n  class=\"sapphire-date-field__button\"\n  *ngIf=\"!noCalendarButton\"\n  spPopoverPlacement=\"top start\"\n  [spPopoverTriggerFor]=\"calendar\"\n  [disabled]=\"disabled\"\n  [id]=\"calendarButtonId\"\n  [attr.aria-label]=\"'calendar' | t\"\n  [attr.aria-labelledby]=\"calendarButtonId + ' ' + field?.label?.id\"\n>\n  <sp-icon name=\"calendar\" class=\"sapphire-date-field__icon\"></sp-icon>\n</button>\n<div class=\"sapphire-date-field__input-group\">\n  <sp-date-field-input\n    [ngModel]=\"displayValue?.start\"\n    (ngModelChange)=\"\n      setValue({\n        value: { start: $event },\n        emitChange: true\n      })\n    \"\n    [ngModelOptions]=\"{ standalone: true }\"\n    [readonly]=\"readonly\"\n    [disabled]=\"!!disabled\"\n    [locale]=\"locale\"\n    [segmentAriaLabel]=\"startDateAriaLabel\"\n    [shouldForceLeadingZeros]=\"shouldForceLeadingZeros\"\n    (focusAfter)=\"_dateFieldInputs?.last?.focus()\"\n  ></sp-date-field-input>\n  <span class=\"sapphire-date-field__range-separator\"></span>\n  <sp-date-field-input\n    [ngModel]=\"displayValue?.end\"\n    (ngModelChange)=\"\n      setValue({\n        value: { end: $event },\n        emitChange: true\n      })\n    \"\n    [ngModelOptions]=\"{ standalone: true }\"\n    [readonly]=\"readonly\"\n    [disabled]=\"!!disabled\"\n    [locale]=\"locale\"\n    [shouldForceLeadingZeros]=\"shouldForceLeadingZeros\"\n    [segmentAriaLabel]=\"endDateAriaLabel\"\n    (focusBefore)=\"_dateFieldInputs?.first?.focus(true)\"\n  ></sp-date-field-input>\n</div>\n<button\n  type=\"button\"\n  class=\"sapphire-date-field__button sapphire-date-field__button--clear\"\n  *ngIf=\"!noClearButton && !disabled && !readonly && isPartiallyFilled()\"\n  (click)=\"clear()\"\n  [attr.aria-label]=\"'clear' | t\"\n>\n  <sp-icon name=\"closeOutline\" class=\"sapphire-date-field__icon\"></sp-icon>\n</button>\n<ng-template #calendar>\n  <sp-popover trapFocus noMaxWidth>\n    <sp-range-calendar\n      [attr.aria-label]=\"'calendar' | t\"\n      autoFocus\n      name=\"calendar\"\n      [size]=\"field?.size || 'lg'\"\n      showFixedWeeks\n      [locale]=\"locale\"\n      [readonly]=\"readonly\"\n      [disabled]=\"!!disabled\"\n      [(ngModel)]=\"value\"\n      [ngModelOptions]=\"{ standalone: true }\"\n      [showWeekNumbers]=\"showWeekNumbersInCalendar\"\n      [showTwoMonths]=\"showTwoMonthsInCalendar\"\n      (ngModelChange)=\"onCalendarSelectDate()\"\n      [minValue]=\"minValue\"\n      [maxValue]=\"maxValue\"\n      [isDateUnavailable]=\"isDateUnavailable\"\n      [allowUnavailableDatesWithinRange]=\"allowUnavailableDatesWithinRange\"\n      [predefinedRanges]=\"predefinedRanges\"\n    ></sp-range-calendar>\n  </sp-popover>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n  SapphireIconModule,\n  SapphireFieldModule,\n  LabelComponent,\n  SapphirePopoverModule,\n} from '@danske/sapphire-angular';\nimport { DateFieldComponent } from './date-field.component';\nimport { DateFieldSegmentComponent } from './date-field-segment.component';\nimport { DateFieldSegmentLiteralComponent } from './date-field-segment-literal.component';\nimport { SapphireCalendarModule } from '../../calendar/public_api';\nimport { DateFieldInputComponent } from './date-field-input.component';\nimport { DateRangeFieldComponent } from './date-range-field.component';\nimport { TranslatePipe } from '../../common/translate.pipe';\n\n@NgModule({\n  declarations: [\n    DateFieldComponent,\n    DateRangeFieldComponent,\n    DateFieldInputComponent,\n    DateFieldSegmentComponent,\n    DateFieldSegmentLiteralComponent,\n  ],\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    SapphireIconModule,\n    FormsModule,\n    LabelComponent,\n    SapphireCalendarModule,\n    SapphireFieldModule,\n    SapphirePopoverModule,\n  ],\n  exports: [DateFieldComponent, DateRangeFieldComponent],\n})\nexport class SapphireDateFieldModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/date-field.component';\nexport * from './src/date-range-field.component';\nexport * from './src/date-field.module';\nexport * from './src/validators';\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { IconRegistry, PopoverTriggerDirective } from '@danske/sapphire-angular';\nimport { iconChevronDown, iconChevronUp } from '@danske/sapphire-icons/js';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\n/**\n * A button with a dropdown, used for filtering UI.\n */\n/**\n * Combines a ToggleButton and Popover to provide a dropdown for filtering UI.\n */\n@Component({\n  selector: 'sp-filter-dropdown',\n  templateUrl: './filter-dropdown.component.html',\n  styleUrls: ['./filter-dropdown.component.scss'],\n  standalone: false,\n})\nexport class FilterDropdownComponent {\n  /**\n   * \"Filter by\" label, shown inside the trigger button.\n   */\n  @Input()\n  label: string = '';\n\n  /**\n   * Filter value, shown inside the trigger button. `null`,\n   * `undefined` and empty string are considered as unset value.\n   */\n  @Input()\n  value: string = '';\n\n  @Input()\n  @CoerceBoolean\n  noMaxWidth: BooleanInput;\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  /**\n   * Whether to show the 'Apply' button.\n   */\n  @Input()\n  get applyButton(): boolean {\n    return this._applyButton;\n  }\n  set applyButton(value: BooleanInput) {\n    this._applyButton = coerceBooleanProperty(value);\n  }\n  private _applyButton = false;\n\n  /**\n   * Whether the 'Apply' button is disabled.\n   */\n  @Input()\n  @CoerceBoolean\n  applyDisabled: BooleanInput;\n\n  /**\n   * Whether the 'Clear' button is disabled.\n   */\n  @Input()\n  get clearDisabled(): boolean | undefined {\n    return this._clearDisabled;\n  }\n  set clearDisabled(value: BooleanInput) {\n    this._clearDisabled =\n      value != null ? coerceBooleanProperty(value) : undefined;\n  }\n  private _clearDisabled: boolean | undefined = undefined;\n\n  /**\n   * Whether the 'Clear' button is hidden.\n   */\n  @Input()\n  @CoerceBoolean\n  hideClearButton?: BooleanInput;\n\n  /**\n   * The label of the 'Apply' button.\n   */\n  @Input()\n  applyButtonLabel = 'Apply';\n\n  /**\n   * The label of the 'Clear' button.\n   */\n  @Input()\n  clearButtonLabel = 'Clear';\n\n  /**\n   * Emitted when:\n   * - `Enter` is pressed on form fields rendered inside the popover.\n   * - 'Apply' button is pressed (if `hasApplyButton` is true)\n   */\n  @Output()\n  applied: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * Emitted when the popover is closed.\n   */\n  @Output()\n  closed: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * Emitted when 'Clear' button is pressed.\n   */\n  @Output()\n  cleared: EventEmitter<void> = new EventEmitter();\n\n  @ViewChild(PopoverTriggerDirective)\n  trigger: PopoverTriggerDirective | null = null;\n\n  constructor(iconRegistry: IconRegistry) {\n    iconRegistry.registerIcons([iconChevronUp, iconChevronDown]);\n  }\n\n  apply(event?: SubmitEvent) {\n    event?.preventDefault();\n    this.applied.emit();\n    this.trigger?.close();\n  }\n\n  clear() {\n    this.trigger?.close();\n    this.cleared.emit();\n  }\n}\n","<button\n  sp-toggle-button\n  [selected]=\"!!value\"\n  [disabled]=\"disabled\"\n  [spPopoverTriggerFor]=\"popover\"\n  (spPopoverTriggerClosed)=\"closed.emit($event)\"\n  iconAlign=\"right\"\n  spPopoverPlacement=\"bottom start\"\n>\n  {{ label }}<ng-container *ngIf=\"value\">: {{ value }}</ng-container>\n  <sp-icon\n    spButtonIcon\n    [name]=\"trigger?.isOpen() ? 'chevronUp' : 'chevronDown'\"\n  ></sp-icon>\n</button>\n<ng-template #popover>\n  <sp-popover [noMaxWidth]=\"noMaxWidth\" noPadding trapFocus>\n    <form (submit)=\"apply($event)\" class=\"sapphire-filter-dropdown\">\n      <div class=\"sapphire-filter-dropdown__body\">\n        <ng-content></ng-content>\n      </div>\n      <div class=\"sapphire-filter-dropdown__footer\">\n        <sp-button-group align=\"right\">\n          <button\n            *ngIf=\"!hideClearButton\"\n            sp-button\n            variant=\"text\"\n            [disabled]=\"clearDisabled ?? !value\"\n            (click)=\"clear()\"\n          >\n            {{ clearButtonLabel }}\n          </button>\n          <button\n            sp-button\n            type=\"submit\"\n            [disabled]=\"applyDisabled\"\n            [tabindex]=\"!applyButton ? -1 : null\"\n            [class.cdk-visually-hidden]=\"!applyButton\"\n          >\n            {{ applyButtonLabel }}\n          </button>\n        </sp-button-group>\n      </div>\n    </form>\n  </sp-popover>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  SapphireButtonModule,\n  SapphireIconModule,\n  SapphirePopoverModule,\n} from '@danske/sapphire-angular';\n\nimport { FilterDropdownComponent } from './filter-dropdown.component';\n\n@NgModule({\n  declarations: [FilterDropdownComponent],\n  imports: [\n    CommonModule,\n    SapphireButtonModule,\n    SapphirePopoverModule,\n    SapphireIconModule,\n    SapphireButtonModule,\n  ],\n  exports: [FilterDropdownComponent],\n})\nexport class SapphireFilteringModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/filter-dropdown.component';\nexport * from './src/filtering.module';\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  Component,\n  DoCheck,\n  ElementRef,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { IconRegistry } from '@danske/sapphire-angular';\n\ntype FlagSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * To render a flag icon you must register it with the `IconRegistry` service.\n */\n@Component({\n  selector: 'sp-flag',\n  template: '',\n  styleUrls: ['./flag.component.scss'],\n  // eslint-disable-next-line no-view-encapsulation-none/no-view-encapsulation-none -- special case\n  encapsulation: ViewEncapsulation.None,\n})\nexport class FlagComponent implements DoCheck {\n  private flagClass?: FlagSize;\n  @Input()\n  set name(value: string | undefined) {\n    this.elementRef.nativeElement.innerHTML = value\n      ? this.iconRegistry.getSvg('flag' + toTitleCase(value)) || ''\n      : '';\n    this.setClasses();\n  }\n\n  @Input()\n  size?: FlagSize = 'md';\n\n  private _rounded?: boolean;\n\n  @Input()\n  set rounded(rounded: BooleanInput) {\n    this._rounded = coerceBooleanProperty(rounded);\n    this.setClasses();\n  }\n\n  get rounded() {\n    return this._rounded;\n  }\n\n  constructor(\n    private elementRef: ElementRef,\n    private iconRegistry: IconRegistry\n  ) {}\n\n  ngDoCheck() {\n    if (this.size !== this.flagClass) {\n      this.setClasses();\n    }\n  }\n\n  private setClasses() {\n    this.flagClass = this.size;\n    const svgElem: SVGSVGElement =\n      this.elementRef.nativeElement.querySelector('svg');\n\n    if (!svgElem) {\n      return;\n    }\n\n    svgElem.setAttribute(\n      'class',\n      `sapphire-flag sapphire-flag--${this.flagClass} ${\n        this.rounded && `sapphire-flag--rounded`\n      }`\n    );\n  }\n}\n\nfunction toTitleCase(str: string | undefined) {\n  return typeof str === 'string'\n    ? str.charAt(0).toUpperCase() + str.slice(1)\n    : '';\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlagComponent } from './flag.component';\n\n@NgModule({\n  declarations: [FlagComponent],\n  imports: [CommonModule],\n  exports: [FlagComponent],\n})\nexport class SapphireFlagModule {}\n","import { Component, forwardRef, Optional } from '@angular/core';\nimport { FieldComponent, FieldControl } from '@danske/sapphire-angular';\n\n/**\n * A LabeledValue displays a non-editable value with a label which uses the field component\n * for building the UI, useful for building readonly fields.\n */\n@Component({\n  selector: 'sp-labeled-value',\n  template: ` <ng-content></ng-content> `,\n  providers: [\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => LabeledValueComponent),\n    },\n  ],\n  host: {\n    '[attr.aria-labelledby]': 'ariaLabelledBy',\n  },\n  standalone: false,\n})\nexport class LabeledValueComponent implements FieldControl {\n  ariaLabelledBy: string | undefined;\n  constructor(@Optional() private field?: FieldComponent) {}\n\n  ngAfterViewInit(): void {\n    /**\n     * Workaround for ExpressionChangedAfterItHasBeenCheckedError.\n     * `ngDoCheck` solution didn't work here, so we have to do it the dirty way.\n     */\n    new Promise((resolve) => setTimeout(resolve, 0)).then(() => {\n      this.ariaLabelledBy = this.field?.label?.id;\n    });\n  }\n\n  isDisabled(): boolean {\n    return false;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SapphireFieldModule } from '@danske/sapphire-angular';\nimport { LabeledValueComponent } from './labeled-value.component';\n\n@NgModule({\n  declarations: [LabeledValueComponent],\n  imports: [CommonModule, SapphireFieldModule],\n  exports: [LabeledValueComponent],\n})\nexport class SapphireLabeledValueModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/labeled-value.component';\nexport * from './src/labeled-value.module';\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n} from '@angular/core';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { UseComponentStylesOnHost } from '@danske/sapphire-angular';\n\n/**\n * An implementation of the CVI Progress Bar.\n */\n@Component({\n  selector: 'sp-danske-progress-bar',\n  templateUrl: './danske-progress-bar.component.html',\n  styleUrls: ['./danske-progress-bar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [UseComponentStylesOnHost],\n  host: {\n    role: 'progressbar',\n    '[class.sapphire-danske-progress-bar]': 'true',\n  },\n  standalone: false,\n})\nexport class DanskeProgressBarComponent {\n  /**\n   * Height of the progress bar in pixels.\n   * The width is derived automatically to preserve the golden-ratio aspect.\n   * Takes precedence over `width` if both are set.\n   */\n  @Input() height?: number;\n\n  /**\n   * Width of the progress bar in pixels.\n   * The height is derived automatically to preserve the golden-ratio aspect.\n   * Ignored if `height` is also set.\n   */\n  @Input() width?: number;\n\n  /**\n   * Disables the outline that surrounds the box by default.\n   */\n  @Input()\n  @CoerceBoolean\n  noOutline?: boolean;\n\n  /** Passes height directly to CSS; all geometry is calc()-derived in the stylesheet. */\n  @HostBinding('style.--sapphire-danske-progress-bar-height')\n  private get cssHeightVar(): string | undefined {\n    return this.height !== undefined ? `${this.height}px` : undefined;\n  }\n\n  /** Passes width directly to CSS; used to derive height when height is not set. */\n  @HostBinding('style.--sapphire-danske-progress-bar-width')\n  private get cssWidthVar(): string | undefined {\n    return this.width !== undefined ? `${this.width}px` : undefined;\n  }\n\n  /** Adds the no-outline modifier class when outline is suppressed. */\n  @HostBinding('class.sapphire-danske-progress-bar--no-outline')\n  private get noOutlineClass(): boolean {\n    return !!this.noOutline;\n  }\n}\n","<div class=\"sapphire-danske-progress-bar__box\">\n  <div class=\"sapphire-danske-progress-bar__box-inner\"></div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DanskeProgressBarComponent } from './danske-progress-bar.component';\n\n@NgModule({\n  declarations: [DanskeProgressBarComponent],\n  imports: [CommonModule],\n  exports: [DanskeProgressBarComponent],\n})\nexport class SapphireDanskeProgressBarModule {}\n","import { Component, Input } from '@angular/core';\n\n/**\n * A component that visually communicates the completion of a task or operation.\n * It shows the task's progress and remainder.\n */\n@Component({\n  selector: 'sp-progress-indicator',\n  templateUrl: './progress-indicator.component.html',\n  styleUrls: ['./progress-indicator.component.scss'],\n  host: {\n    '[attr.aria-label]': 'null',\n    '[attr.aria-labelledby]': 'null',\n  },\n  standalone: false,\n})\nexport class ProgressIndicatorComponent {\n  /**\n   * The maximum value for the progress bar. Will be used as:\n   * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuemax\n   *\n   * @default 100\n   */\n  @Input() maxValue: number = 100;\n\n  /**\n   * The current value of the progress bar. Will be used as:\n   * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuenow\n   */\n  @Input() /* required input */ value!: number;\n\n  /**\n   * Defines how many segments the progress bar will have.\n   *\n   * @default 1\n   */\n  @Input() segments: number = 1;\n\n  minValue: number = 0;\n\n  /**\n   * Defines a string value that labels the current element.\n   */\n  @Input('aria-label')\n  ariaLabel?: string;\n\n  /**\n   * Identifies the element (or elements) that labels the current element.\n   */\n  @Input('aria-labelledby')\n  ariaLabelledby?: string;\n\n  /**\n   * Human-readable text alternative for the current value of the progress bar. Will be used as:\n   * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuetext\n   */\n  @Input('aria-valuetext')\n  ariaValueText?: string;\n\n  /**\n   * Calculated width percentage based on current value and max value.\n   */\n  get widthPercentage(): number {\n    return Math.min(100, Math.max(0, (this.value / this.maxValue) * 100));\n  }\n\n  get segmentArray(): number[] {\n    return Array.from({ length: this.segments }, (_, index) => index);\n  }\n}\n","<div class=\"sapphire-progress\">\n  <div\n    class=\"sapphire-progress--indicator\"\n    [style]=\"{ width: widthPercentage + '%' }\"\n    role=\"progressbar\"\n    [attr.aria-valuemin]=\"minValue\"\n    [attr.aria-valuemax]=\"maxValue\"\n    [attr.aria-valuenow]=\"value\"\n    [attr.aria-valuetext]=\"ariaValueText\"\n    [attr.aria-label]=\"ariaLabel\"\n    [attr.aria-labelledby]=\"ariaLabelledby\"\n  ></div>\n  <div *ngIf=\"segments > 1\" class=\"sapphire-progress--segments\">\n    <span *ngFor=\"let item of segmentArray\"></span>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProgressIndicatorComponent } from './progress-indicator.component';\n\n@NgModule({\n  declarations: [ProgressIndicatorComponent],\n  imports: [CommonModule],\n  exports: [ProgressIndicatorComponent],\n})\nexport class SapphireProgressModule {}\n","import { InjectionToken, ElementRef } from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\nexport interface SliderProvider {\n  // state\n  disabled: BooleanInput;\n  value: number;\n  minValue: number;\n  maxValue: number;\n  step: number;\n\n  // derived\n  percentage: number;\n\n  // host element\n  elementRef: ElementRef<HTMLElement>;\n\n  // imperative API\n  setValue(value: number): void;\n}\n\nexport const SLIDER_PROVIDER_TOKEN = new InjectionToken<SliderProvider>(\n  'SLIDER_PROVIDER_TOKEN'\n);\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Output,\n} from '@angular/core';\nimport {\n  FocusedDirective,\n  UseComponentStyles,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\nimport { SLIDER_PROVIDER_TOKEN } from './slider.provider';\n\n@Component({\n  selector: 'sp-slider-thumb',\n  template: `<ng-content></ng-content>`,\n  styleUrls: ['./slider.component.scss'],\n  host: {\n    class: 'sapphire-slider__thumb',\n    '[style.left]': 'thumbOffset',\n    '[attr.tabindex]': '_slider.disabled ? -1 : 0',\n    '[attr.data-disabled]': '_slider.disabled ? true : undefined',\n  },\n  hostDirectives: [\n    UseComponentStyles,\n    UseComponentStylesOnHost,\n    {\n      directive: FocusedDirective,\n    },\n  ],\n  standalone: true,\n})\nexport class SliderThumbComponent {\n  protected _slider = inject(SLIDER_PROVIDER_TOKEN);\n  public readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  @Output() thumbDrag = new EventEmitter<MouseEvent>();\n\n  constructor() {\n    const thumb = this.elementRef.nativeElement;\n    const doc = document;\n\n    let onMouseMove: ((event: MouseEvent) => void) | null = null;\n    let onMouseUp: ((event: MouseEvent) => void) | null = null;\n\n    thumb.addEventListener('pointerdown', () => {\n      onMouseMove = (moveEvent: MouseEvent) => {\n        this.dragThumb(moveEvent);\n      };\n      onMouseUp = () => {\n        if (onMouseMove) doc.removeEventListener('pointermove', onMouseMove);\n        if (onMouseUp) doc.removeEventListener('pointerup', onMouseUp);\n        onMouseMove = null;\n        onMouseUp = null;\n      };\n\n      doc.addEventListener('pointermove', onMouseMove);\n      doc.addEventListener('pointerup', onMouseUp);\n    });\n  }\n\n  private dragThumb(event: MouseEvent): void {\n    if (this._slider.disabled) {\n      return;\n    }\n\n    this.thumbDrag.emit(event);\n  }\n\n  @HostListener('keydown', ['$event'])\n  protected handleKeydown(event: KeyboardEvent): void {\n    const multiplier = event.shiftKey ? 10 : 1;\n    const value = Number(this._slider.value);\n\n    switch (event.key) {\n      case 'ArrowLeft':\n      case 'ArrowDown':\n        this._slider.setValue(\n          Math.max(\n            value - this._slider.step * multiplier,\n            this._slider.minValue\n          )\n        );\n        event.preventDefault();\n        break;\n      case 'ArrowRight':\n      case 'ArrowUp':\n        this._slider.setValue(\n          Math.min(\n            value + this._slider.step * multiplier,\n            this._slider.maxValue\n          )\n        );\n        event.preventDefault();\n        break;\n      case 'Home':\n        this._slider.setValue(this._slider.minValue);\n        event.preventDefault();\n        break;\n      case 'End':\n        this._slider.setValue(this._slider.maxValue);\n        event.preventDefault();\n        break;\n    }\n  }\n\n  get thumbOffset() {\n    const pct = this._slider.percentage / 100;\n    return `calc(var(--sapphire-semantic-size-height-control-2xs) / 2 + ${pct} * (100% - var(--sapphire-semantic-size-height-control-2xs)))`;\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Output,\n} from '@angular/core';\nimport { SLIDER_PROVIDER_TOKEN } from './slider.provider';\nimport { SliderThumbComponent } from './slider-thumb.component';\nimport { UseComponentStylesOnHost } from '@danske/sapphire-angular';\n\n@Component({\n  selector: 'sp-slider-track',\n  template: ` <div class=\"sapphire-slider__track-remaining\"></div>\n    <div\n      class=\"sapphire-slider__track-fill\"\n      [style.width.%]=\"_slider.percentage\"\n    ></div>\n\n    <sp-slider-thumb (thumbDrag)=\"thumbMove.emit($event)\" />`,\n  styleUrls: ['./slider.component.scss'],\n  host: {\n    class: 'sapphire-slider__track',\n    '[class.is-disabled]': '_slider.disabled',\n  },\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: true,\n  imports: [SliderThumbComponent],\n})\nexport class SliderTrackComponent {\n  protected _slider = inject(SLIDER_PROVIDER_TOKEN);\n  public readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  @Output() thumbMove = new EventEmitter<MouseEvent>();\n\n  @HostListener('mousedown', ['$event'])\n  protected moveThumbToPoint(event: MouseEvent): void {\n    if (this._slider.disabled) {\n      return;\n    }\n\n    this.thumbMove.emit(event);\n  }\n}\n","import {\n  Component,\n  Input,\n  ChangeDetectorRef,\n  OnInit,\n  forwardRef,\n  ElementRef,\n  HostBinding,\n  EventEmitter,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { FieldControl } from '@danske/sapphire-angular';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SliderProvider, SLIDER_PROVIDER_TOKEN } from './slider.provider';\nimport { SliderTrackComponent } from './slider-track.component';\nimport {\n  UseComponentStyles,\n  ViewEncapsulationProvider,\n} from '@danske/sapphire-angular';\n\n/**\n * A slider allows a user to select one value within a range.\n */\n@Component({\n  selector: 'sp-slider',\n  templateUrl: './slider.component.html',\n  styleUrls: ['./slider.component.scss'],\n  host: {\n    class: 'sapphire-slider',\n    'aria-orientation': 'horizontal',\n    '(focusout)': '_onTouched?.()',\n  },\n  standalone: true,\n  imports: [SliderTrackComponent],\n  hostDirectives: [UseComponentStyles],\n  providers: [\n    ViewEncapsulationProvider,\n    {\n      provide: SLIDER_PROVIDER_TOKEN,\n      useExisting: forwardRef(() => SliderComponent),\n    },\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => SliderComponent),\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SliderComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SliderComponent\n  implements SliderProvider, ControlValueAccessor, OnInit, FieldControl\n{\n  @ViewChild(SliderTrackComponent)\n  private _trackComponent!: SliderTrackComponent;\n\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  /** Returns the unique id for the visual hidden input. */\n  get _inputId(): string {\n    return `${this.id}-input`;\n  }\n\n  /**\n   * The minimum value for the slider.\n   *\n   * @default 100\n   */\n  @Input() minValue: number = 0;\n\n  /**\n   * The maximum value for the slider.\n   *\n   * @default 100\n   */\n  @Input() maxValue: number = 100;\n\n  /**\n   * The step value for the slider.\n   *\n   * @default 1\n   */\n  @Input() step: number = 1;\n\n  /**\n   * The current value of the slider. Will be used as:\n   * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuenow\n   */\n  @Input('value') valueInput: number = 0;\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  @Output() valueChange = new EventEmitter<number>();\n\n  readonly hasDefaultWidth = true;\n\n  private _onTouched?: () => void;\n  private _onChange?: (value: number) => void;\n\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    public elementRef: ElementRef<HTMLButtonElement>\n  ) {}\n\n  ngOnInit(): void {\n    // ensure the value is within the min and max range\n    if (this.value < this.minValue) {\n      this.value = this.minValue;\n    }\n    if (this.value > this.maxValue) {\n      this.value = this.maxValue;\n    }\n  }\n\n  registerOnChange(fn: (value: number) => void): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  writeValue(value: number): void {\n    const clampedValue = clamp(value, [this.minValue, this.maxValue]);\n    this.value = clampedValue;\n\n    if (value !== clampedValue) {\n      this._onChange?.(clampedValue);\n    }\n\n    this._changeDetectorRef.detectChanges();\n  }\n\n  setValue(value: number): void {\n    const decimalCount = (String(this.step).split('.')[1] || '').length;\n    const snapToStep = roundValue(\n      Math.round((value - this.minValue) / this.step) * this.step +\n        this.minValue,\n      decimalCount\n    );\n\n    value = clamp(snapToStep, [this.minValue, this.maxValue]);\n\n    this.value = value;\n    this._onChange?.(value);\n  }\n\n  onThumbMove(event: MouseEvent): void {\n    const rect =\n      this._trackComponent.elementRef.nativeElement.getBoundingClientRect();\n    const thumbWidth =\n      this._trackComponent.elementRef.nativeElement.offsetHeight;\n    const usableWidth = rect.width - thumbWidth;\n\n    if (usableWidth <= 0) {\n      return;\n    }\n\n    const rawX = event.clientX - rect.left - thumbWidth / 2;\n    const percentage = clamp(rawX / usableWidth, [0, 1]);\n\n    this.setValue(this.minValue + (this.maxValue - this.minValue) * percentage);\n  }\n\n  set value(value: number) {\n    this.valueInput = value;\n    this.valueChange.emit(value);\n  }\n\n  get value() {\n    return this.valueInput;\n  }\n\n  get percentage() {\n    return (\n      ((this.value - this.minValue) / (this.maxValue - this.minValue)) * 100\n    );\n  }\n\n  isDisabled(): boolean {\n    return !!this.disabled;\n  }\n}\n\nconst roundValue = (value: number, decimalCount: number): number => {\n  const rounder = Math.pow(10, decimalCount);\n  return Math.round(value * rounder) / rounder;\n};\n\nconst clamp = (value: number, [min, max]: [number, number]): number => {\n  return Math.min(max, Math.max(min, value));\n};\n","<sp-slider-track (thumbMove)=\"onThumbMove($event)\"></sp-slider-track>\n<input\n  id=\"{{ _inputId }}\"\n  hidden\n  type=\"range\"\n  [min]=\"minValue\"\n  [max]=\"maxValue\"\n  [step]=\"step\"\n  [value]=\"value\"\n/>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SliderComponent } from './slider.component';\nimport { SapphireFieldModule } from '@danske/sapphire-angular';\n\n@NgModule({\n  imports: [CommonModule, SapphireFieldModule, SliderComponent],\n  exports: [SliderComponent],\n})\nexport class SapphireSliderModule {}\n","import {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Optional,\n  Output,\n  Self,\n} from '@angular/core';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { NgControl } from '@angular/forms';\nimport { UseComponentStyles } from '@danske/sapphire-angular';\n\n/**\n * Sapphire search input field.\n */\n@Directive({\n  selector: 'input[spSearchFieldInput]',\n  host: {\n    class: 'sapphire-search-field__input',\n    type: 'search',\n    '[placeholder]': 'placeholder || \" \"',\n  },\n  hostDirectives: [UseComponentStyles],\n  exportAs: 'spSearchFieldInput',\n})\nexport class SearchFieldInputDirective {\n  constructor(\n    private elementRef: ElementRef<HTMLInputElement>,\n    @Optional() @Self() private formControl: NgControl | null\n  ) {}\n  /**\n   * Whether the input is disabled\n   */\n  @HostBinding('class.is-disabled')\n  @Input()\n  @CoerceBoolean\n  disabled?: BooleanInput;\n\n  /**\n   * Emitted when `Enter` is pressed to submit the search\n   */\n  @Output('spSearchFieldSubmitted')\n  submitted = new EventEmitter<string>();\n\n  /**\n   * Emitted when input is cleared by `Esc` or pressing the \"clear\" icon.\n   */\n  @Output('spSearchFieldCleared')\n  cleared = new EventEmitter<string>();\n\n  /**\n   * Input's placeholder\n   */\n  @Input()\n  placeholder?: string;\n\n  @HostListener('keydown', ['$event'])\n  _onKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Escape') {\n      this.clear();\n    } else if (event.key === 'Enter') {\n      this.submitted.emit(this.elementRef.nativeElement.value);\n    }\n  }\n\n  clear() {\n    const element: HTMLInputElement | undefined = this.elementRef.nativeElement;\n\n    if (this.formControl) {\n      this.formControl.reset('');\n    } else if (element) {\n      element.value = '';\n    }\n\n    this.cleared.emit();\n  }\n\n  focus() {\n    this.elementRef?.nativeElement.focus();\n  }\n}\n","import { Component, ContentChild, Input } from '@angular/core';\nimport { SearchFieldInputDirective } from './search-field-input.directive';\nimport { IconRegistry, UseComponentStylesOnHost } from '@danske/sapphire-angular';\nimport { iconCloseOutline, iconSearch } from '@danske/sapphire-icons/js';\n\n/**\n * Sapphire search input field.\n */\n@Component({\n  selector: 'sp-search-field',\n  templateUrl: './search-field.component.html',\n  styleUrls: ['./search-field.component.scss'],\n  host: {\n    class: 'sapphire-search-field',\n    '[class.is-disabled]': 'searchInput?.disabled',\n    '[class.sapphire-search-field--md]': 'size === \"md\"',\n    '[class.sapphire-search-field--sm]': 'size === \"sm\"',\n  },\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: false,\n})\nexport class SearchFieldComponent {\n  constructor(iconRegistry: IconRegistry) {\n    iconRegistry.registerIcons([iconSearch, iconCloseOutline]);\n  }\n  /**\n   * The size of the search field.\n   * @default \"lg\"\n   */\n  @Input()\n  size: 'lg' | 'md' | 'sm' = 'lg';\n\n  @ContentChild(SearchFieldInputDirective)\n  searchInput?: SearchFieldInputDirective;\n}\n","<span class=\"sapphire-search-field__icon\">\n  <sp-icon name=\"search\" [size]=\"size === 'lg' ? 'md' : 'sm'\"></sp-icon>\n</span>\n<ng-content select=\"[spSearchFieldInput]\"></ng-content>\n<div\n  role=\"button\"\n  aria-label=\"Clear search\"\n  class=\"sapphire-search-field__button\"\n  (click)=\"searchInput?.clear()\"\n  (mousedown)=\"$event.preventDefault(); searchInput?.focus()\"\n>\n  <!-- TODO(UC-2728): (mousedown) ^ -->\n  <sp-icon name=\"closeOutline\" [size]=\"size === 'lg' ? 'md' : 'sm'\"></sp-icon>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SapphireIconModule } from '@danske/sapphire-angular';\n\nimport { SearchFieldComponent } from './search-field.component';\nimport { SearchFieldInputDirective } from './search-field-input.directive';\n\n@NgModule({\n  declarations: [SearchFieldComponent, SearchFieldInputDirective],\n  imports: [CommonModule, SapphireIconModule],\n  exports: [SearchFieldComponent, SearchFieldInputDirective],\n})\nexport class SapphireSearchFieldModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/search-field.component';\nexport * from './src/search-field-input.directive';\nexport * from './src/search-field.module';\n","import { MessageDictionary } from '@internationalized/message';\nimport da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nconst translations = new MessageDictionary(\n  {\n    'da-DK': da,\n    'en-US': en,\n    'de-DE': de,\n    'fi-FI': fi,\n    'nb-NO': no,\n    'pl-PL': pl,\n    'sv-SE': se,\n  },\n  'en-US'\n);\n\nexport default translations;\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n  AfterViewChecked,\n  Component,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Optional,\n  Output,\n  Self,\n} from '@angular/core';\nimport { MessageDictionary } from '@internationalized/message';\nimport {\n  IconRegistry,\n  TooltipDirective,\n  TruncatedWithTooltipDirective,\n  UseComponentStyles,\n} from '@danske/sapphire-angular';\nimport { iconClose, iconError } from '@danske/sapphire-icons/js';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport translations from '../i18n';\nimport { TagGroupComponent } from './tag-group.component';\n\n/**\n * Event emitted from a TagGroupComponent.\n * Contains the tag on which the event occured.\n */\nexport interface TagEvent {\n  tag: TagComponent;\n}\n\n/**\n * Sapphire search input field.\n */\n@Component({\n  selector: 'sp-tag, [spTag]',\n  templateUrl: './tag.component.html',\n  styleUrls: ['./tag-group.component.scss'],\n  host: {\n    class: 'sapphire-tag',\n    '[class.sapphire-tag--actionable]': 'hasAction()',\n    '[class.is-disabled]': 'disabled',\n    role: 'row',\n    '[attr.tabindex]': '_tabIndex',\n    '[attr.aria-label]': 'getLabel()',\n    '[attr.aria-invalid]': 'error ? true : null',\n  },\n  hostDirectives: [UseComponentStyles, TruncatedWithTooltipDirective],\n  providers: [{ provide: MessageDictionary, useValue: translations }],\n  standalone: false,\n})\nexport class TagComponent\n  implements FocusableOption, DoCheck, AfterViewChecked\n{\n  constructor(\n    public elementRef: ElementRef<HTMLElement>,\n    public tagGroup: TagGroupComponent,\n    iconRegistry: IconRegistry,\n    @Optional() @Self() private userTooltipDirective: TooltipDirective,\n    private truncatedWithTooltipDirective: TruncatedWithTooltipDirective\n  ) {\n    iconRegistry.registerIcons([iconClose, iconError]);\n  }\n\n  /**\n   * A unique id for the host DOM element.\n   * If none is supplied, it will be auto-generated.\n   */\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  @CoerceBoolean\n  error: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  removable: boolean = false;\n\n  /* Implementing FocusableOption below */\n\n  @Input()\n  @CoerceBoolean\n  disabled?: boolean;\n\n  getLabel(): string {\n    return this.elementRef.nativeElement.textContent?.trim() || '';\n  }\n\n  focus() {\n    this.elementRef.nativeElement.focus();\n  }\n\n  /**\n   * Emitted when a tag is removed.\n   */\n  @Output()\n  readonly removed: EventEmitter<TagEvent> = new EventEmitter<TagEvent>();\n\n  @Output()\n  readonly click: EventEmitter<MouseEvent | KeyboardEvent> = new EventEmitter<\n    MouseEvent | KeyboardEvent\n  >();\n\n  /**\n   * The id of the button for removing the tag\n   */\n  @AutoId()\n  removeButtonId!: string;\n\n  private hasHref: boolean = false;\n\n  _tabIndex: string = '0';\n\n  remove() {\n    if (this.canRemove()) {\n      this.tagGroup.setNextTagActive();\n      this.removed.emit({ tag: this });\n    }\n  }\n\n  /**\n   * Allow removal of a tag if it's not disabled and has a click handler provided.\n   */\n  canRemove(): boolean {\n    return this.removable && !this.disabled;\n  }\n\n  hasAction(): boolean {\n    return this.click.observers.length > 0 || this.hasHref;\n  }\n\n  @HostListener('keydown', ['$event'])\n  private onKeyDown(e: KeyboardEvent) {\n    if (e.key === 'Backspace' || e.key === 'Delete') {\n      this.remove();\n    } else if (e.key === 'Enter') {\n      this.click.emit(e);\n    }\n  }\n\n  ngDoCheck(): void {\n    this.hasHref = this.elementRef.nativeElement.hasAttribute('href');\n    this._tabIndex =\n      this.tagGroup.isTagFocusable(this) && !this.disabled ? '0' : '-1';\n  }\n\n  ngAfterViewChecked(): void {\n    if (this.userTooltipDirective) {\n      this.truncatedWithTooltipDirective.enabled = false;\n    }\n  }\n}\n","<div class=\"sapphire-tag__content\" role=\"gridcell\" aria-colindex=\"1\">\n  <span *ngIf=\"error && !disabled\" class=\"sapphire-tag__error-icon\">\n    <sp-icon name=\"error\" size=\"sm\"></sp-icon>\n  </span>\n  <span class=\"sapphire-tag__label\" spTruncatedWithTooltipContent>\n    <ng-content></ng-content>\n  </span>\n  <button\n    class=\"sapphire-tag__button\"\n    *ngIf=\"canRemove()\"\n    type=\"button\"\n    (click)=\"remove()\"\n    [id]=\"removeButtonId\"\n    [attr.aria-label]=\"'remove' | t\"\n    tabindex=\"-1\"\n  >\n    <sp-icon name=\"close\" size=\"sm\"></sp-icon>\n  </button>\n</div>\n","import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterContentInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  forwardRef,\n  HostListener,\n  Inject,\n  OnDestroy,\n  OnInit,\n  Optional,\n  QueryList,\n} from '@angular/core';\nimport {\n  FieldComponent,\n  FieldControl,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\nimport { MessageDictionary } from '@internationalized/message';\nimport translations from '../i18n';\nimport { TagComponent } from './tag.component';\n\n/**\n * Sapphire search input field.\n */\n@Component({\n  selector: 'sp-tag-group',\n  styleUrls: ['./tag-group.component.scss'],\n  template: /* HTML */ `<ng-content></ng-content>`,\n  host: {\n    class: 'sapphire-tag-group',\n    'aria-atomic': 'false',\n    'aria-relevant': 'additions',\n    '[attr.aria-live]': 'isFocusWithin ? \"polite\" : \"off\"',\n    '[attr.role]': 'tags?.length > 0 ? \"grid\" : null',\n    '[attr.aria-labelledby]': 'field?.label?.id',\n    '[attr.aria-describedby]': 'field?.error?.id || field.note?.id',\n    tabindex: '-1',\n  },\n  providers: [\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => TagGroupComponent),\n    },\n    { provide: MessageDictionary, useValue: translations },\n  ],\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: false,\n})\nexport class TagGroupComponent\n  implements FieldControl, OnInit, AfterContentInit, OnDestroy\n{\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n    private elementRef: ElementRef<HTMLElement>,\n    private focusMonitor: FocusMonitor,\n    @Optional() public field?: FieldComponent\n  ) {}\n\n  @ContentChildren(TagComponent)\n  tags?: QueryList<TagComponent> = new QueryList();\n\n  @HostListener('keydown', ['$event'])\n  private onKeyDown(e: KeyboardEvent) {\n    this?.focusKeyManager?.onKeydown(e);\n  }\n\n  isFocusWithin: boolean = false;\n\n  private focusKeyManager?: FocusKeyManager<TagComponent | undefined>;\n\n  private onFocusWithin() {\n    this.isFocusWithin = true;\n\n    const activeTag = this.tags?.find(\n      (tag) => tag.elementRef.nativeElement === this.document.activeElement\n    );\n\n    this.focusKeyManager?.setActiveItem(activeTag);\n  }\n\n  private onBlurWithin() {\n    this.isFocusWithin = false;\n    this.focusKeyManager?.setActiveItem(undefined);\n  }\n\n  private activeTagIndex: number | null = null;\n\n  setNextTagActive(): void {\n    this.focusKeyManager?.setNextItemActive();\n  }\n\n  isDisabled(): boolean {\n    /**\n     * Initially was considering this logic: if all tags are disabled, the field\n     * is considered disabled.\n     *\n     * But it does not make much sense because a tag group is not something you\n     * \"select\" or offer any \"input\". So it seemed odd for example that removing\n     * a bunch of tags leaving the disabled tags present will automatically\n     * disable the whole field:\n     * `return !this.tags?.some((tag) => !tag.disabled) || false`\n     *\n     * Seems like our \"field\" label should be non-disabled even if all tags are\n     * disabled, so we allow only disabling individual tags, not the whole field.\n     */\n    return false;\n  }\n\n  isTagFocusable(tag: TagComponent): boolean {\n    // if there is no active index, then all tags are focusable.\n    return this.activeTagIndex !== null && this.tags\n      ? tag === this.tags.get(this.activeTagIndex)\n      : true;\n  }\n\n  ngOnInit(): void {\n    this.focusMonitor\n      .monitor(this.elementRef?.nativeElement, true)\n      .subscribe((origin) => {\n        if (origin) {\n          this.onFocusWithin();\n        } else {\n          this.onBlurWithin();\n        }\n      });\n  }\n\n  ngAfterContentInit(): void {\n    if (this.tags) {\n      this.focusKeyManager = new FocusKeyManager(this.tags)\n        .withWrap()\n        .withHomeAndEnd()\n        .withHorizontalOrientation('ltr');\n\n      this.focusKeyManager.change.subscribe((activeIndex) => {\n        // -1 stands for no active item (ie. blur)\n        // In that case we leave the tags as they are so the next\n        // focus will happen on the last active tag\n        if (activeIndex >= 0) {\n          this.activeTagIndex = activeIndex;\n        }\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef?.nativeElement);\n    this.focusKeyManager?.destroy();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  SapphireIconModule,\n  TooltipDirective,\n  TruncatedWithTooltipContentElementDirective,\n  TruncatedWithTooltipDirective,\n} from '@danske/sapphire-angular';\n\nimport { TagGroupComponent } from './tag-group.component';\nimport { TagComponent } from './tag.component';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { TranslatePipe } from '../../common/translate.pipe';\n\n@NgModule({\n  declarations: [TagGroupComponent, TagComponent],\n  imports: [\n    TranslatePipe,\n    CommonModule,\n    A11yModule,\n    SapphireIconModule,\n    TooltipDirective,\n    TruncatedWithTooltipContentElementDirective,\n    TruncatedWithTooltipDirective,\n  ],\n  exports: [TagGroupComponent, TagComponent],\n})\nexport class SapphireTagGroupModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/tag-group.component';\nexport * from './src/tag.component';\nexport * from './src/tag-group.module';\n","/* eslint-disable */\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n\n */\n\n/**\n * The following code is borrowed from @react-stately/toast@3.1.2\n * Only some type errors (due to less strictness level in the original code) are fixed.\n * permalink:\nhttps://github.com/adobe/react-spectrum/blob/d9292a9ed6c8b7bebdd56bd094f9d1dbe089f83a/packages/%40react-stately/toast/src/useToastState.ts#L86 */\n\ntype ToastAction = 'add' | 'remove' | 'clear';\nexport interface ToastStateProps {\n  /** The maximum number of toasts to display at a time. */\n  maxVisibleToasts?: number;\n  /** Function to wrap updates in (i.e. document.startViewTransition()). */\n  wrapUpdate?: (fn: () => void, action: ToastAction) => void;\n}\n\nexport interface ToastOptions {\n  /** Handler that is called when the toast is closed, either by the user or after a timeout. */\n  onClose?: () => void;\n  /** A timeout to automatically close the toast after, in milliseconds. */\n  timeout?: number;\n}\n\nexport interface QueuedToast<T> extends ToastOptions {\n  /** The content of the toast. */\n  content: T;\n  /** A unique key for the toast. */\n  key: string;\n  /** A timer for the toast, if a timeout was set. */\n  timer?: Timer;\n}\n\nexport class ToastQueue<T> {\n  private queue: QueuedToast<T>[] = [];\n  private subscriptions: Set<() => void> = new Set();\n  private maxVisibleToasts: number;\n  private wrapUpdate?: (fn: () => void, action: ToastAction) => void;\n  /** The currently visible toasts. */\n  visibleToasts: QueuedToast<T>[] = [];\n\n  constructor(options?: ToastStateProps) {\n    this.maxVisibleToasts = options?.maxVisibleToasts ?? Infinity;\n    this.wrapUpdate = options?.wrapUpdate;\n  }\n\n  private runWithWrapUpdate(fn: () => void, action: ToastAction): void {\n    if (this.wrapUpdate) {\n      this.wrapUpdate(fn, action);\n    } else {\n      fn();\n    }\n  }\n\n  /** Subscribes to updates to the visible toasts. */\n  subscribe(fn: () => void): () => void {\n    this.subscriptions.add(fn);\n    return () => this.subscriptions.delete(fn);\n  }\n\n  /** Adds a new toast to the queue. */\n  add(content: T, options: ToastOptions = {}): string {\n    let toastKey = '_' + Math.random().toString(36).slice(2);\n    let toast: QueuedToast<T> = {\n      ...options,\n      content,\n      key: toastKey,\n      timer: options.timeout\n        ? new Timer(() => this.close(toastKey), options.timeout)\n        : undefined,\n    };\n\n    // Pause the other toasts' timers when a new toast is added\n    this.pauseAll();\n\n    this.queue.unshift(toast);\n\n    this.updateVisibleToasts('add');\n    return toastKey;\n  }\n\n  /**\n   * Closes a toast.\n   */\n  close(key: string): void {\n    let index = this.queue.findIndex((t) => t.key === key);\n    if (index >= 0) {\n      this.queue[index].onClose?.();\n      this.queue.splice(index, 1);\n    }\n\n    this.updateVisibleToasts('remove');\n\n    // Resume the timer for the next toast in the queue\n    this.visibleToasts[0]?.timer?.resume();\n  }\n\n  private updateVisibleToasts(action: ToastAction) {\n    this.visibleToasts = this.queue.slice(0, this.maxVisibleToasts);\n\n    this.runWithWrapUpdate(() => {\n      for (let fn of this.subscriptions) {\n        fn();\n      }\n    }, action);\n  }\n\n  /** Pauses the timers for all visible toasts. */\n  pauseAll(): void {\n    for (let toast of this.visibleToasts) {\n      if (toast.timer) {\n        toast.timer.pause();\n      }\n    }\n  }\n\n  /** Resumes the timers for all visible toasts. */\n  resumeAll(): void {\n    /**\n     * Commented out to only resume the first toast's timer\n     * on blur or mouse leave\n     */\n    // for (let toast of this.visibleToasts) {\n    //   if (toast.timer) {\n    //     toast.timer.resume();\n    //   }\n    // }\n\n    this.visibleToasts[0]?.timer?.resume();\n  }\n\n  clear(): void {\n    this.queue = [];\n    this.updateVisibleToasts('clear');\n  }\n}\n\nclass Timer {\n  private timerId: ReturnType<typeof setTimeout> | null = null;\n  private startTime: number | null = null;\n  private remaining: number;\n  private callback: () => void;\n\n  constructor(callback: () => void, delay: number) {\n    this.remaining = delay;\n    this.callback = callback;\n  }\n\n  reset(delay: number): void {\n    this.remaining = delay;\n    this.resume();\n  }\n\n  pause(): void {\n    if (this.timerId == null) {\n      return;\n    }\n\n    clearTimeout(this.timerId);\n    this.timerId = null;\n    this.remaining -= Date.now() - this.startTime!;\n  }\n\n  resume(): void {\n    if (this.remaining <= 0) {\n      return;\n    }\n\n    // Clean up any existing timer\n    clearTimeout(this.timerId!);\n\n    this.startTime = Date.now();\n    this.timerId = setTimeout(() => {\n      this.timerId = null;\n      this.remaining = 0;\n      this.callback();\n    }, this.remaining);\n  }\n}\n","import { MessageDictionary } from '@internationalized/message';\nimport da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nconst translations = new MessageDictionary(\n  {\n    'da-DK': da,\n    'en-US': en,\n    'de-DE': de,\n    'fi-FI': fi,\n    'nb-NO': no,\n    'pl-PL': pl,\n    'sv-SE': se,\n  },\n  'en-US'\n);\n\nexport default translations;\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  HostListener,\n  ViewEncapsulation,\n  ElementRef,\n} from '@angular/core';\nimport {\n  IconRegistry,\n  SapphireButtonModule,\n  SapphireIconModule,\n  ThemeRootComponent,\n} from '@danske/sapphire-angular';\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { MessageDictionary } from '@internationalized/message';\n\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { QueuedToast } from './ToastQueue';\nimport translations from '../i18n';\nimport { iconCloseLarge } from '@danske/sapphire-icons/js';\n\nexport interface ShowToastOptions {\n  /**\n   * A timeout to automatically close the toast after, in milliseconds.\n   * Note that if the toast is hovered or interacted with, the timeout is\n   * paused.\n   *\n   * @default 3000\n   */\n  timeout?: number;\n  /**\n   * Optional title for the toast.\n   */\n  title?: string;\n  variant?: 'neutral' | 'success' | 'error';\n}\n\nexport type ToastContent = { title?: string } & (\n  | {\n      type: 'text';\n      value: string;\n    }\n  | {\n      type: 'template';\n      value: TemplateRef<unknown>;\n    }\n);\n\n/**\n * A toast displays brief, temporary notifications of events in the application.\n */\n@Component({\n  standalone: true,\n  selector: 'sp-toast',\n  templateUrl: './toast.component.html',\n  imports: [\n    SapphireIconModule,\n    SapphireButtonModule,\n    NgClass,\n    NgIf,\n    NgTemplateOutlet,\n    ThemeRootComponent,\n  ],\n  host: {\n    '[class.sapphire-toast--stacked]': 'isPreview',\n    role: 'alertdialog',\n    'aria-modal': 'false',\n    '[attr.aria-describedby]': 'titleId',\n    '[attr.tabindex]': '0',\n    '[style.view-transition-name]': 'toast?.key',\n    '[style.view-transition-class]': 'viewTransitionClass',\n    '[style.--sapphire-toast-index]': 'index',\n    class: 'sapphire-toast',\n  },\n  styleUrls: ['./toast.component.scss'],\n  // eslint-disable-next-line no-view-encapsulation-none/no-view-encapsulation-none -- so view-transition-class can be used\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: MessageDictionary, useValue: translations }],\n})\nexport class ToastComponent implements OnChanges {\n  constructor(\n    iconRegistry: IconRegistry,\n    private elementRef: ElementRef<HTMLElement>\n  ) {\n    iconRegistry.registerIcon(iconCloseLarge);\n  }\n\n  @Input()\n  toast?: QueuedToast<ToastContent>;\n\n  @Input()\n  placement: 'top' | 'bottom' = 'bottom';\n\n  /**\n   * Emits when the close button is pressed\n   */\n  @Output()\n  closed = new EventEmitter<void>();\n\n  @Output()\n  toggleExpanded = new EventEmitter<void>();\n\n  @AutoId()\n  titleId: string = '';\n\n  @Input()\n  isPreview = false;\n\n  @Input()\n  index: number = 0;\n\n  get viewTransitionClass(): string {\n    const classes = ['sapphire-toast-view-transition'];\n    if (this.placement === 'top') {\n      classes.push('sapphire-toast-view-transition--reverse');\n    }\n    return classes.join(' ');\n  }\n\n  get variant(): 'neutral' | 'success' | 'error' {\n    return (this.toast as any)?.variant ?? 'neutral';\n  }\n\n  get isDarkTheme(): boolean {\n    const element = this.elementRef.nativeElement;\n    /*\n    Get theme to render Toast content with correct styles.\n    Dark theme applies color-scheme: dark  property\n    */\n    const colorScheme = getComputedStyle(element).colorScheme;\n    return colorScheme.includes('dark');\n  }\n\n  get shouldApplyContrastTheme(): boolean {\n    return this.variant === 'neutral' || !this.isDarkTheme;\n  }\n\n  @HostListener('click', ['$event'])\n  onClick(event: Event): void {\n    // Don't toggle if clicking on the close button\n    const target = event.target as Element;\n    if (target.closest('button')) {\n      return;\n    }\n    this.toggleExpanded.emit();\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent): void {\n    // Don't handle if the event is from a button\n    const target = event.target as Element;\n    if (target.closest('button')) {\n      return;\n    }\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      this.toggleExpanded.emit();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['toast']) {\n      // Pause the previous toast's timer\n      (\n        changes['toast'].previousValue as QueuedToast<unknown> | undefined\n      )?.timer?.pause();\n      // Start the new toast's timer\n      this.toast?.timer?.reset(this.toast.timeout ?? 0);\n    }\n  }\n}\n","<ng-container *ngIf=\"shouldApplyContrastTheme; else noContrastTheme\">\n  <sp-theme-root variant=\"contrast\" noSurface>\n    <ng-container *ngTemplateOutlet=\"toastContent\"></ng-container>\n  </sp-theme-root>\n</ng-container>\n<ng-template #noContrastTheme>\n  <ng-container *ngTemplateOutlet=\"toastContent\"></ng-container>\n</ng-template>\n\n<ng-template #toastContent>\n  <div\n    class=\"sapphire-toast__content\"\n    [ngClass]=\"{\n      'sapphire-toast__content--success': variant === 'success',\n      'sapphire-toast__content--error': variant === 'error'\n    }\"\n  >\n    <div [id]=\"titleId\" class=\"sapphire-toast__text-content\">\n      <div *ngIf=\"toast?.content?.title\">\n        <div>{{ toast?.content?.title }}</div>\n      </div>\n      <div>\n        <ng-container *ngIf=\"toast?.content?.type === 'text'\">\n          {{ toast?.content?.value }}\n        </ng-container>\n        <ng-container *ngIf=\"toast?.content?.type === 'template'\">\n          <ng-container\n            *ngTemplateOutlet=\"$any(toast?.content?.value)\"\n          ></ng-container>\n        </ng-container>\n      </div>\n    </div>\n    <button\n      sp-icon-button\n      aria-label=\"Close\"\n      size=\"sm\"\n      variant=\"tertiary\"\n      (click)=\"closed.emit()\"\n    >\n      <sp-icon name=\"closeLarge\"></sp-icon>\n    </button>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectorRef,\n  Component,\n  HostListener,\n  Inject,\n  Input,\n  NgZone,\n  OnInit,\n  TrackByFunction,\n} from '@angular/core';\nimport { DOCUMENT, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ThemeRootComponent } from '@danske/sapphire-angular';\n\nimport { QueuedToast, ToastQueue } from './ToastQueue';\nimport { ToastComponent, ToastContent } from './toast.component';\nimport { MessageDictionary } from '@internationalized/message';\nimport { TranslatePipe } from '../../common/translate.pipe';\nimport translations from '../i18n';\n\ntype VerticalPlacement = 'top' | 'bottom';\ntype HorizontalPlacement = 'left' | 'right';\n\n@Component({\n  standalone: true,\n  selector: 'sp-toast-region',\n  templateUrl: './toast-region.component.html',\n  styleUrls: ['./toast-region.component.scss'],\n  imports: [\n    ToastComponent,\n    TranslatePipe,\n    NgForOf,\n    ThemeRootComponent,\n    A11yModule,\n    NgIf,\n    NgClass,\n  ],\n  providers: [{ provide: MessageDictionary, useValue: translations }],\n})\nexport class ToastRegionComponent implements OnInit {\n  _trackBy: TrackByFunction<QueuedToast<unknown>> = (_, item) => item.key;\n\n  @Input()\n  placement: VerticalPlacement | `${VerticalPlacement}-${HorizontalPlacement}` =\n    'bottom';\n\n  visibleToasts: QueuedToast<ToastContent>[] = [];\n\n  private _expanded = false;\n  get expanded(): boolean {\n    return this._expanded;\n  }\n  set expanded(expanded: boolean) {\n    this.withTransition(() => {\n      this._expanded = expanded;\n    });\n  }\n\n  get toastPlacement(): 'top' | 'bottom' {\n    return this.placement.includes('top') ? 'top' : 'bottom';\n  }\n\n  constructor(\n    public _toastQueue: ToastQueue<ToastContent>,\n    @Inject(DOCUMENT) private document: Document,\n    private changeDetectorRef: ChangeDetectorRef,\n    private ngZone: NgZone\n  ) {}\n\n  @HostListener('document:keydown', ['$event'])\n  onDocumentKeyDown(event: KeyboardEvent): void {\n    if (this.expanded && event.key === 'Escape') {\n      this.expanded = false;\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onDocumentClick(event: MouseEvent): void {\n    if (!this.expanded) {\n      return;\n    }\n\n    const target = event.target as Element;\n    const toastRegion = target.closest('.sapphire-toast-container');\n\n    // If click is outside the toast region, close the overlay\n    if (!toastRegion) {\n      this.expanded = false;\n    }\n  }\n\n  ngOnInit() {\n    this.updateVisibleToasts();\n    this._toastQueue.subscribe(() => {\n      this.updateVisibleToasts();\n    });\n  }\n\n  private updateVisibleToasts() {\n    this.withTransition(() => {\n      this.ngZone.run(() => {\n        this.visibleToasts = this._toastQueue.visibleToasts;\n        if (this.visibleToasts.length <= 1) {\n          this._expanded = false;\n        }\n      });\n    });\n  }\n\n  withTransition(fn: () => void) {\n    if ('startViewTransition' in this.document) {\n      (this.document as any) /* FIXME: fix types*/\n        .startViewTransition({\n          update: () => {\n            fn();\n            this.changeDetectorRef.detectChanges();\n          },\n        });\n    } else {\n      fn();\n    }\n  }\n\n  protected toggleExpanded() {\n    if (this.expanded) {\n      this.expanded = false;\n      return;\n    }\n\n    if (this.visibleToasts.length > 1) {\n      this.expanded = true;\n    }\n  }\n\n  protected close(key: string) {\n    this._toastQueue.close(key);\n  }\n}\n","<sp-theme-root\n  noSurface\n  *ngIf=\"visibleToasts.length > 0\"\n  class=\"sapphire-toast-container\"\n  [ngClass]=\"'sapphire-toast-container--' + placement\"\n  role=\"region\"\n  [attr.aria-label]=\"'notifications' | t\"\n  (mouseenter)=\"_toastQueue.pauseAll()\"\n  (mouseleave)=\"_toastQueue.resumeAll()\"\n  (focusin)=\"_toastQueue.pauseAll()\"\n  (focusout)=\"_toastQueue.resumeAll()\"\n  cdkMonitorSubtreeFocus\n  (cdkFocusChange)=\"$event ? _toastQueue.pauseAll() : _toastQueue.resumeAll()\"\n  [style.z-index]=\"300\"\n  tabindex=\"-1\"\n>\n  <div\n    class=\"sapphire-toast-list\"\n    [class.sapphire-toast-list--collapsed]=\"!expanded\"\n    [class.sapphire-toast-list--expanded]=\"expanded\"\n  >\n    <ng-container\n      *ngFor=\"let toast of visibleToasts; trackBy: _trackBy; let index = index\"\n    >\n      <sp-toast\n        [toast]=\"$any(toast)\"\n        [placement]=\"toastPlacement\"\n        [index]=\"index\"\n        [isPreview]=\"!expanded && index > 0\"\n        [style.z-index]=\"300 + visibleToasts.length - index - 1\"\n        (toggleExpanded)=\"toggleExpanded()\"\n        (closed)=\"close(toast.key)\"\n      ></sp-toast>\n    </ng-container>\n  </div>\n</sp-theme-root>\n","import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Inject,\n  inject,\n  Injectable,\n  InjectionToken,\n  Injector,\n  TemplateRef,\n  VERSION,\n} from '@angular/core';\nimport { ShowToastOptions, ToastContent } from './toast.component';\nimport { ToastQueue } from './ToastQueue';\nimport { ToastRegionComponent } from './toast-region.component';\nimport { DOCUMENT } from '@angular/common';\n\ntype ToastOptions = ShowToastOptions & {\n  placement: ToastRegionComponent['placement'];\n};\nconst DEFAULT_TOAST_OPTIONS: ToastOptions = {\n  timeout: 3000,\n  placement: 'bottom',\n};\n\nexport const TOAST_OPTIONS = new InjectionToken<Partial<ShowToastOptions>>(\n  'Default options for showing Toast',\n  {\n    providedIn: 'root',\n    factory: () => DEFAULT_TOAST_OPTIONS,\n  }\n);\n\n/**\n * Can be used to show Toast notifications.\n * A toast displays brief, temporary notifications of events in the application.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class Toast {\n  private toastQueue = new ToastQueue<ToastContent>({\n    maxVisibleToasts: Infinity,\n  });\n  private toastRegionOutlet?: DomPortalOutlet;\n\n  private document = inject(DOCUMENT);\n  private toastRegionRef?: ComponentRef<ToastRegionComponent>;\n\n  constructor(\n    private injector: Injector,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    @Inject(TOAST_OPTIONS) private options: ToastOptions,\n    private appRef: ApplicationRef\n  ) {\n    this.options = { ...DEFAULT_TOAST_OPTIONS, ...this.options };\n  }\n\n  /**\n   * Shows a toast notification with content set from a string or a template.\n   */\n  show(\n    content: string | TemplateRef<unknown>,\n    {\n      timeout = this.options.timeout,\n      onClose,\n      title,\n      variant = 'neutral',\n    }: ShowToastOptions & { onClose?: () => void } = {}\n  ) {\n    const renderedTitle = title || this.options.title;\n    this.ensureToastRegion();\n    this.toastQueue.add(\n      typeof content === 'string'\n        ? { type: 'text', value: content, title: renderedTitle }\n        : { type: 'template', value: content, title: renderedTitle },\n      { timeout, onClose, variant } as ShowToastOptions\n    );\n  }\n\n  /**\n   * Creates the toast region element the first time it's called.\n   * @private\n   */\n  private ensureToastRegion(): ToastRegionComponent {\n    if (!this.toastRegionRef) {\n      const childInjector = Injector.create({\n        parent: this.injector,\n        providers: [\n          {\n            provide: ToastQueue,\n            useValue: this.toastQueue,\n          },\n        ],\n      });\n\n      this.toastRegionOutlet =\n        parseInt(VERSION.major) < 20\n          ? new DomPortalOutlet(\n              this.document.body,\n              this.componentFactoryResolver,\n              this.appRef,\n              this.injector\n            )\n          : new DomPortalOutlet(\n              this.document.body,\n              // @ts-expect-error DomPortalOutlet constructor signature breaking change for Angular 20\n              this.appRef,\n              this.injector\n            );\n\n      this.toastRegionRef = this.toastRegionOutlet.attachComponentPortal(\n        new ComponentPortal(ToastRegionComponent, null, childInjector)\n      );\n      this.toastRegionRef.instance.placement = this.options.placement;\n    }\n    return this.toastRegionRef.instance;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { Toast } from './toast.service';\n\n@NgModule({\n  imports: [],\n  providers: [Toast],\n  exports: [],\n})\nexport class SapphireToastModule {}\n","import { NgModule } from '@angular/core';\nimport { SapphireFilteringModule } from './filtering/src/filtering.module';\nimport { SapphireSearchFieldModule } from './search-field/src/search-field.module';\nimport { SapphireCalendarModule } from './calendar/src/calendar.module';\nimport { SapphireDateFieldModule } from './date-field/src/date-field.module';\nimport { SapphireAccordionModule } from './accordion/src/accordion.module';\nimport { SapphireAutocompleteModule } from './autocomplete/public_api';\nimport { SapphireTagGroupModule } from './tag-group/public_api';\nimport { SapphireLabeledValueModule } from './labeled-value/src/labeled-value.module';\nimport { SapphireToastModule } from './toast/src/toast.module';\nimport { SapphireFlagModule } from './flag/src/flag.module';\nimport { SapphireAlertModule } from './alert/src/alert.module';\nimport { SapphireProgressModule } from './progress-indicator/src/progress-indicator.module';\nimport { SapphireDanskeProgressBarModule } from './danske-progress-bar/src/danske-progress-bar.module';\nimport { SapphireSliderModule } from './slider/src/slider.module';\nimport { SapphireBreadcrumbsModule } from './breadcrumbs/src/breadcrumbs.module';\nimport { SapphireAmountModule } from './amount/src/amount.module';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    SapphireAmountModule,\n    SapphireBreadcrumbsModule,\n    SapphireFilteringModule,\n    SapphireSearchFieldModule,\n    SapphireCalendarModule,\n    SapphireDateFieldModule,\n    SapphireFlagModule,\n    SapphireAccordionModule,\n    SapphireAutocompleteModule,\n    SapphireTagGroupModule,\n    SapphireLabeledValueModule,\n    SapphireToastModule,\n    SapphireAlertModule,\n    SapphireProgressModule,\n    SapphireDanskeProgressBarModule,\n    SapphireSliderModule,\n  ],\n  exports: [\n    SapphireAmountModule,\n    SapphireBreadcrumbsModule,\n    SapphireFilteringModule,\n    SapphireSearchFieldModule,\n    SapphireCalendarModule,\n    SapphireFlagModule,\n    SapphireDateFieldModule,\n    SapphireAccordionModule,\n    SapphireAutocompleteModule,\n    SapphireTagGroupModule,\n    SapphireLabeledValueModule,\n    SapphireToastModule,\n    SapphireAlertModule,\n    SapphireProgressModule,\n    SapphireDanskeProgressBarModule,\n    SapphireSliderModule,\n  ],\n})\nexport class SapphireLabModule {}\n","/*\n * Public API Surface of lab\n */\n\nexport * from './lib/accordion/public_api';\nexport * from './lib/alert/public_api';\nexport * from './lib/amount/public_api';\nexport * from './lib/autocomplete/public_api';\nexport * from './lib/breadcrumbs/public_api';\nexport * from './lib/calendar/public_api';\nexport * from './lib/date-field/public_api';\nexport * from './lib/filtering/public_api';\nexport * from './lib/flag/public_api';\nexport * from './lib/labeled-value/public_api';\nexport * from './lib/danske-progress-bar/public_api';\nexport * from './lib/progress-indicator/public_api';\nexport * from './lib/slider/public_api';\nexport * from './lib/search-field/public_api';\nexport * from './lib/tag-group/public_api';\nexport * from './lib/toast/public_api';\nexport * from './lib/lab.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AccordionComponent","i2","i2.BreadcrumbsComponent","i1.CalendarBase","i2.CalendarGridDirective","i2.CalendarCellDirective","i3","translations","da","en","de","fi","no","pl","se","i1.TranslateService","i2.CalendarBase","i1.CalendarCellDirective","i1.SingleSelectionCalendarDirective","i2.RangeCalendarDirective","i1.RangeCalendarDirective","i1","i4.DateFieldSegmentComponent","i5.DateFieldSegmentLiteralComponent","i4","i5.CalendarComponent","i6.DateFieldInputComponent","i7.TranslatePipe","i5","i6.RangeCalendarComponent","i7.DateFieldInputComponent","i8.TranslatePipe","i1.TagGroupComponent","i4.TranslatePipe"],"mappings":"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EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AAC/C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,M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I,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE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"}