{"version":3,"file":"lightbox.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/lightbox/lightbox-animations.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/lightbox/lightbox-container.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/lightbox/lightbox-container.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/lightbox/lightbox-ref.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/lightbox/lightbox.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/lightbox/lightbox-content-directives.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/lightbox/lightbox.module.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/lightbox/lightbox-config.ts"],"sourcesContent":["import {\n  animate,\n  AnimationTriggerMetadata,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\n\n/**\n * Default parameters for the animation for backwards compatibility.\n * @docs-private\n */\nexport const sbbLightboxAnimationsDefaultParams = {\n  params: { enterAnimationDuration: '150ms', exitAnimationDuration: '75ms' },\n};\n\n/**\n * Animations used by SbbLightbox.\n * @docs-private\n */\nexport const sbbLightboxAnimations: {\n  readonly lightboxContainer: AnimationTriggerMetadata;\n} = {\n  /** Animation that is applied on the dialog container by default. */\n  lightboxContainer: trigger('lightboxContainer', [\n    // Note: The `enter` animation transitions to `transform: none`, because for some reason\n    // specifying the transform explicitly, causes IE both to blur the dialog content and\n    // decimate the animation performance. Leaving it as `none` solves both issues.\n    state('void, exit', style({ opacity: 0, transform: 'scale(0.7)' })),\n    state('enter', style({ transform: 'none' })),\n    transition(\n      '* => enter',\n      animate(\n        '{{enterAnimationDuration}} cubic-bezier(0, 0, 0.2, 1)',\n        style({ transform: 'none', opacity: 1 }),\n      ),\n      sbbLightboxAnimationsDefaultParams,\n    ),\n    transition(\n      '* => void, * => exit',\n      animate('{{exitAnimationDuration}} cubic-bezier(0.4, 0.0, 0.2, 1)', style({ opacity: 0 })),\n      sbbLightboxAnimationsDefaultParams,\n    ),\n  ]),\n};\n","import { AnimationEvent } from '@angular/animations';\nimport { OverlayRef, ViewportRuler } from '@angular/cdk/overlay';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  HostListener,\n  inject,\n  OnDestroy,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { SbbDialogContainer } from '@sbb-esta/angular/dialog';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { sbbLightboxAnimations } from './lightbox-animations';\n\n/**\n * Internal component that wraps user-provided lightbox content.\n * @docs-private\n */\n@Component({\n  selector: 'sbb-lightbox-container',\n  templateUrl: 'lightbox-container.html',\n  styleUrls: ['lightbox.css'],\n  encapsulation: ViewEncapsulation.None,\n  // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  animations: [sbbLightboxAnimations.lightboxContainer],\n  host: {\n    class: 'sbb-lightbox-container',\n    tabindex: '-1',\n    '[id]': '_config.id',\n    '[attr.role]': '_config.role',\n    '[attr.aria-modal]': '_config.ariaModal',\n    '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledByQueue[0]',\n    '[attr.aria-label]': '_config.ariaLabel',\n    '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n    '[@lightboxContainer]': `_getAnimationState()`,\n  },\n  imports: [CdkPortalOutlet],\n})\nexport class SbbLightboxContainer extends SbbDialogContainer implements OnDestroy {\n  private _viewportRuler = inject(ViewportRuler);\n\n  /** Callback, invoked whenever an animation on the host completes. */\n  @HostListener('@lightboxContainer.done', ['$event'])\n  override _onAnimationDone({ toState, totalTime }: AnimationEvent) {\n    if (toState === 'enter') {\n      this._trapFocus();\n      this._animationStateChanged.next({ state: 'opened', totalTime });\n    } else if (toState === 'exit') {\n      this._animationStateChanged.next({ state: 'closed', totalTime });\n    }\n  }\n\n  /** Callback, invoked when an animation on the host starts. */\n  @HostListener('@lightboxContainer.start', ['$event'])\n  override _onAnimationStart({ toState, totalTime }: AnimationEvent) {\n    if (toState === 'enter') {\n      this._animationStateChanged.next({ state: 'opening', totalTime });\n    } else if (toState === 'exit' || toState === 'void') {\n      this._animationStateChanged.next({ state: 'closing', totalTime });\n    }\n  }\n\n  /** Starts the dialog exit animation. */\n  override _startExitAnimation(): void {\n    this._state = 'exit';\n\n    // Mark the container for check so it can react if the\n    // view container is using OnPush change detection.\n    this._changeDetectorRef.markForCheck();\n  }\n\n  private _destroyed = new Subject<void>();\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const overlayRef = inject(OverlayRef);\n\n    super();\n\n    // Manually calculate the height of the Lightbox. This is necessary because on mobile Chrome and\n    // Safari, 100vh includes the address bar and is therefore taller than the actual viewport.\n    // See https://bugs.webkit.org/show_bug.cgi?id=141832#c5\n    this._viewportRuler\n      ?.change()\n      .pipe(takeUntil(this._destroyed), startWith(null))\n      .subscribe(() =>\n        overlayRef.updateSize({\n          height: this._viewportRuler!.getViewportSize().height,\n        }),\n      );\n  }\n\n  override ngOnDestroy(): void {\n    super.ngOnDestroy();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n}\n","<ng-template cdkPortalOutlet></ng-template>\n","import { DialogRef } from '@angular/cdk/dialog';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { SbbDialogContainer, SbbDialogRef } from '@sbb-esta/angular/dialog';\nimport { Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { SbbLightboxConfig } from './lightbox-config';\n\n/**\n * Reference to a dialog opened via the SbbLightbox service.\n */\nexport class SbbLightboxRef<T, R = any> extends SbbDialogRef<T, R> {\n  /**\n   * Observable that emits when closing the lightbox is requested when close is disabled.\n   */\n  readonly closeRequest: Subject<void> = new Subject<void>();\n\n  constructor(\n    ref: DialogRef<R, T>,\n    config: SbbLightboxConfig,\n    containerInstance: SbbDialogContainer,\n  ) {\n    super(ref, config, containerInstance);\n\n    ref.overlayRef\n      .keydownEvents()\n      .pipe(\n        filter(\n          (event) => event.keyCode === ESCAPE && !!this.disableClose && !hasModifierKey(event),\n        ),\n      )\n      .subscribe(() => this.closeRequest.next(null!));\n\n    ref.overlayRef.detachments().subscribe(() => {\n      this.closeRequest.complete();\n    });\n  }\n\n  /**\n   * Not supported for lightbox.\n   * @docs-private\n   */\n  override updatePosition(): this {\n    return this;\n  }\n\n  /**\n   * Not supported for lightbox.\n   * @docs-private\n   */\n  override updateSize(): this {\n    return this;\n  }\n}\n","import { createBlockScrollStrategy, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { inject, Injectable, InjectionToken, Injector, TemplateRef } from '@angular/core';\nimport { SbbDialogConfig, _SbbDialogBase } from '@sbb-esta/angular/dialog';\n\nimport { SbbLightboxConfig } from './lightbox-config';\nimport { SbbLightboxContainer } from './lightbox-container';\nimport { SbbLightboxRef } from './lightbox-ref';\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const SBB_LIGHTBOX_DATA = new InjectionToken<any>('SbbLightboxData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const SBB_LIGHTBOX_DEFAULT_OPTIONS = new InjectionToken<SbbLightboxConfig>(\n  'sbb-lightbox-default-options',\n);\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const SBB_LIGHTBOX_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'sbb-lightbox-scroll-strategy',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const injector = inject(Injector);\n      return () => createBlockScrollStrategy(injector);\n    },\n  },\n);\n\n/**\n * Service to open modal lightboxes.\n */\n@Injectable({ providedIn: 'root' })\nexport class SbbLightbox extends _SbbDialogBase<SbbLightboxContainer, SbbLightboxRef<any>> {\n  protected override _idPrefix: string = 'sbb-lightbox-';\n\n  /** Keeps track of the currently-open lightboxes. */\n  get openLightboxes(): SbbLightboxRef<any>[] {\n    return this.openDialogs;\n  }\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const overlay = inject(Overlay);\n    const injector = inject(Injector);\n    const defaultOptions = inject<SbbLightboxConfig>(SBB_LIGHTBOX_DEFAULT_OPTIONS, {\n      optional: true,\n    });\n    const scrollStrategy = inject(SBB_LIGHTBOX_SCROLL_STRATEGY);\n    const parentDialog = inject(SbbLightbox, { optional: true, skipSelf: true });\n\n    super(\n      overlay,\n      injector,\n      defaultOptions,\n      parentDialog,\n      scrollStrategy,\n      SbbLightboxRef,\n      SbbLightboxContainer,\n      SBB_LIGHTBOX_DATA,\n    );\n  }\n\n  /**\n   * Opens a modal lightbox containing the given template.\n   * @param componentOrTemplateRef Component type or TemplateRef to instantiate as the lightbox content.\n   * @param config Extra configuration options.\n   * @returns Reference to the newly-opened lightbox.\n   */\n  override open<T, D = any, R = any>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    config?: SbbLightboxConfig<D>,\n  ): SbbLightboxRef<T, R> {\n    const dialogConfig: SbbDialogConfig<D> = {\n      ...config,\n      width: '100vw',\n      minWidth: '100vw',\n      maxWidth: '100vw',\n      height: '100vh',\n      minHeight: 'auto',\n      maxHeight: 'none',\n    };\n    dialogConfig.id = dialogConfig.id || this._idGenerator.getId(this._idPrefix);\n    return super.open(componentOrTemplateRef, dialogConfig) as any;\n  }\n\n  /**\n   * Finds an open lightbox by its id.\n   * @param id ID to use when looking up the lightbox.\n   * @alias getLightboxById\n   */\n  override getDialogById(id: string): SbbLightboxRef<any> | undefined {\n    return this.openDialogs.find((dialog) => dialog.id === id);\n  }\n\n  /**\n   * Finds an open lightbox by its id.\n   * @param id ID to use when looking up the lightbox.\n   */\n  getLightboxById(id: string): SbbLightboxRef<any> | undefined {\n    return this.getDialogById(id);\n  }\n}\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"@angular/localize/init\" />\n\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Directive,\n  inject,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { SbbDialog, SbbDialogClose, _SbbDialogTitleBase } from '@sbb-esta/angular/dialog';\nimport { SbbIcon } from '@sbb-esta/angular/icon';\n\nimport { SbbLightbox } from './lightbox';\nimport { SbbLightboxRef } from './lightbox-ref';\n\n/**\n * Button that will close the current lightbox.\n */\n@Directive({\n  selector: '[sbb-lightbox-close], [sbbLightboxClose]',\n  exportAs: 'sbbLightboxClose',\n  host: {\n    '[attr.aria-label]': 'ariaLabel || null',\n    '[attr.type]': 'type',\n  },\n})\nexport class SbbLightboxClose extends SbbDialogClose implements OnInit, OnChanges {\n  protected override _dialogRef: SbbLightboxRef<any> = inject<SbbLightboxRef<any>>(SbbLightboxRef, {\n    optional: true,\n  })!;\n  protected override _dialog: SbbDialog = inject(SbbLightbox) as unknown as SbbDialog;\n\n  /** Aria label for the close button. */\n  @Input('aria-label')\n  override ariaLabel: string =\n    $localize`:Aria label to close a dialog@@sbbLightboxCloseLightbox:Close lightbox`;\n\n  /** Lightbox close input. */\n  @Input('sbb-lightbox-close')\n  get lightboxResult(): any {\n    return this.dialogResult;\n  }\n  set lightboxResult(value: any) {\n    this.dialogResult = value;\n  }\n\n  @Input('sbbLightboxClose') _sbbLightboxClose: any;\n\n  override ngOnChanges(changes: SimpleChanges) {\n    const proxiedChange = changes['_sbbLightboxClose'] || changes['_sbbLightboxCloseResult'];\n\n    if (proxiedChange) {\n      this.dialogResult = proxiedChange.currentValue;\n    }\n  }\n}\n\n/**\n * Title of a lightbox element. Stays fixed to the top of the lightbox when scrolling.\n */\n@Component({\n  selector: 'sbb-lightbox-title, [sbb-lightbox-title], [sbbLightboxTitle]',\n  exportAs: 'sbbLightboxTitle',\n  template: `\n    <ng-content></ng-content>\n    <button\n      sbb-lightbox-close\n      class=\"sbb-lightbox-title-close-button sbb-button-reset-frameless\"\n      [aria-label]=\"closeAriaLabel\"\n    >\n      <sbb-icon svgIcon=\"circle-cross-small\" class=\"sbb-icon-scaled\"></sbb-icon>\n    </button>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'sbb-lightbox-title',\n    '[id]': 'id',\n  },\n  imports: [SbbLightboxClose, SbbIcon],\n})\nexport class SbbLightboxTitle extends _SbbDialogTitleBase implements OnInit {\n  protected override _dialogRef: SbbLightboxRef<any> = inject<SbbLightboxRef<any>>(SbbLightboxRef, {\n    optional: true,\n  })!;\n  protected override _dialog: SbbDialog = inject(SbbLightbox) as unknown as SbbDialog;\n\n  /** Unique id for the lightbox title. If none is supplied, it will be auto-generated. */\n  @Input() override id: string = inject(_IdGenerator).getId('sbb-lightbox-title-');\n\n  @ViewChild(SbbLightboxClose, { static: true }) _lightBoxClose!: SbbLightboxClose;\n\n  /** Arial label for the close button. */\n  @Input()\n  override closeAriaLabel: string =\n    $localize`:Aria label to close a dialog@@sbbLightboxCloseLightbox:Close lightbox`;\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this._lightBoxClose._canCloseInterceptor = () => {\n      if (!this._closeEnabled) {\n        (this._dialogRef as SbbLightboxRef<any>)?.closeRequest.next();\n        return false;\n      }\n      return true;\n    };\n  }\n}\n\n/**\n * Scrollable content container of a lightbox.\n */\n@Directive({\n  selector: `[sbb-lightbox-content], sbb-lightbox-content, [sbbLightboxContent]`,\n  host: { class: 'sbb-lightbox-content sbb-scrollbar' },\n})\nexport class SbbLightboxContent {}\n\n/**\n * Container for the bottom action buttons in a lightbox.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n  selector: `[sbb-lightbox-actions], sbb-lightbox-actions, [sbbLightboxActions]`,\n  host: { class: 'sbb-lightbox-actions' },\n})\nexport class SbbLightboxActions {}\n","import { DialogModule } from '@angular/cdk/dialog';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\nimport { SbbDialogModule } from '@sbb-esta/angular/dialog';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\n\nimport { SbbLightbox } from './lightbox';\nimport { SbbLightboxContainer } from './lightbox-container';\nimport {\n  SbbLightboxActions,\n  SbbLightboxClose,\n  SbbLightboxContent,\n  SbbLightboxTitle,\n} from './lightbox-content-directives';\n\n@NgModule({\n  imports: [\n    DialogModule,\n    // To avoid injector problems of CDK Dialog. TODO: Check if it is still necessary (has to be done in a consumer project).\n    SbbDialogModule,\n    OverlayModule,\n    PortalModule,\n    SbbCommonModule,\n    SbbIconModule,\n    SbbLightboxContainer,\n    SbbLightboxClose,\n    SbbLightboxTitle,\n    SbbLightboxActions,\n    SbbLightboxContent,\n  ],\n  exports: [\n    SbbLightboxContainer,\n    SbbLightboxClose,\n    SbbLightboxTitle,\n    SbbLightboxContent,\n    SbbLightboxActions,\n  ],\n  providers: [SbbLightbox],\n})\nexport class SbbLightboxModule {}\n","import { ScrollStrategy } from '@angular/cdk/overlay';\nimport { Injector, ViewContainerRef } from '@angular/core';\nimport { SbbDialogRole } from '@sbb-esta/angular/dialog';\n\nimport { sbbLightboxAnimationsDefaultParams } from './lightbox-animations';\n\n/**\n * Configuration for opening a modal dialog with the SbbLightbox service.\n */\nexport class SbbLightboxConfig<D = any> {\n  /**\n   * Where the attached component should live in Angular's *logical* component tree.\n   * This affects what is available for injection and the change detection order for the\n   * component instantiated inside of the lightbox. This does not affect where the lightbox\n   * content will be rendered.\n   */\n  viewContainerRef?: ViewContainerRef;\n\n  /**\n   * Injector used for the instantiation of the component to be attached. If provided,\n   * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n   */\n  injector?: Injector;\n\n  /** ID for the lightbox. If omitted, a unique one will be generated. */\n  id?: string;\n\n  /** The ARIA role of the dialog element. */\n  role?: SbbDialogRole = 'dialog';\n\n  /** Custom class for the overlay pane. */\n  panelClass?: string | string[] = '';\n\n  /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n  disableClose?: boolean = false;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** ID of the element that describes the dialog. */\n  ariaDescribedBy?: string | null = null;\n\n  /** ID of the element that labels the dialog. */\n  ariaLabelledBy?: string | null = null;\n\n  /** Aria label to assign to the dialog element. */\n  ariaLabel?: string | null = null;\n\n  /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */\n  ariaModal?: boolean = true;\n\n  /** Whether the dialog should focus the first focusable element on open. */\n  autoFocus?: boolean = true;\n\n  /**\n   * Whether the dialog should restore focus to the\n   * previously-focused element, after it's closed.\n   */\n  restoreFocus?: boolean = true;\n\n  /** Scroll strategy to be used for the dialog. */\n  scrollStrategy?: ScrollStrategy;\n\n  /**\n   * Whether the dialog should close when the user goes backwards/forwards in history.\n   * Note that this usually doesn't include clicking on links (unless the user is using\n   * the `HashLocationStrategy`).\n   */\n  closeOnNavigation?: boolean = true;\n\n  /** Duration of the enter animation. Has to be a valid CSS value (e.g. 100ms). */\n  enterAnimationDuration?: string =\n    sbbLightboxAnimationsDefaultParams.params.enterAnimationDuration;\n\n  /** Duration of the exit animation. Has to be a valid CSS value (e.g. 50ms). */\n  exitAnimationDuration?: string = sbbLightboxAnimationsDefaultParams.params.exitAnimationDuration;\n\n  // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n}\n"],"names":[],"mappings":"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"}