{"version":3,"file":"ng-alt-sidebar.mjs","sources":["../../../projects/ng-alt-sidebar/src/lib/utils.ts","../../../projects/ng-alt-sidebar/src/lib/alt-sidebar-container.component.ts","../../../projects/ng-alt-sidebar/src/lib/alt-sidebar.component.ts","../../../projects/ng-alt-sidebar/src/lib/close-alt-sidebar.directive.ts","../../../projects/ng-alt-sidebar/src/lib/alt-sidebar.module.ts","../../../projects/ng-alt-sidebar/src/public-api.ts","../../../projects/ng-alt-sidebar/src/ng-alt-sidebar.ts"],"sourcesContent":["/**\r\n * Returns whether the page is in LTR mode. Defaults to `true` if it can't be computed.\r\n *\r\n * @return {boolean} Page's language direction is left-to-right.\r\n */\r\nexport function isLTR(): boolean {\r\n  let dir: string = 'ltr';\r\n\r\n  if (typeof window !== 'undefined') {\r\n    if (window.getComputedStyle) {\r\n      dir = window.getComputedStyle(document.body, null).getPropertyValue('direction');\r\n    } else {\r\n      dir = (document.body as any).currentStyle.direction;\r\n    }\r\n  }\r\n\r\n  return dir === 'ltr';\r\n}\r\n\r\n/**\r\n * Returns whether or not the current device is an iOS device.\r\n *\r\n * @return {boolean} Device is an iOS device (i.e. iPod touch/iPhone/iPad).\r\n */\r\nexport function isIOS(): boolean {\r\n  if (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\r\n    return /iPad|iPhone|iPod/.test(navigator.userAgent) && !(window as any).MSStream;\r\n  }\r\n\r\n  return false;\r\n}\r\n","import {\r\n  AfterContentInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  PLATFORM_ID,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { AltSidebarComponent } from './alt-sidebar.component';\r\n\r\n@Component({\r\n  selector: 'ng-alt-sidebar-container',\r\n  template: `\r\n    <div\r\n      *ngIf=\"showBackdrop\"\r\n      aria-hidden=\"true\"\r\n      class=\"ng-alt-sidebar__backdrop\"\r\n      [ngClass]=\"backdropClass\"\r\n      (click)=\"_onBackdropClicked()\"\r\n    ></div>\r\n\r\n    <ng-content select=\"ng-alt-sidebar,[ng-alt-sidebar]\"></ng-content>\r\n\r\n    <div\r\n      class=\"ng-alt-sidebar__content\"\r\n      [class.ng-alt-sidebar__content--animate]=\"animate\"\r\n      [ngClass]=\"contentClass\"\r\n      [ngStyle]=\"_getContentStyle()\"\r\n    >\r\n      <ng-content select=\"[ng-alt-sidebar-content]\"></ng-content>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    `\r\n      :host {\r\n        box-sizing: border-box;\r\n        display: block;\r\n        position: relative;\r\n        height: 100%;\r\n        width: 100%;\r\n        overflow: hidden;\r\n      }\r\n\r\n      .ng-alt-sidebar__backdrop {\r\n        position: absolute;\r\n        top: 0;\r\n        bottom: 0;\r\n        left: 0;\r\n        right: 0;\r\n        background: #000;\r\n        opacity: 0.75;\r\n        pointer-events: auto;\r\n        z-index: 1;\r\n      }\r\n\r\n      .ng-alt-sidebar__content {\r\n        -webkit-overflow-scrolling: touch;\r\n        overflow: auto;\r\n        position: absolute;\r\n        top: 0;\r\n        bottom: 0;\r\n        left: 0;\r\n        right: 0;\r\n      }\r\n\r\n      .ng-alt-sidebar__content--animate {\r\n        -webkit-transition:\r\n          -webkit-transform 0.3s cubic-bezier(0, 0, 0.3, 1),\r\n          padding 0.3s cubic-bezier(0, 0, 0.3, 1);\r\n        transition:\r\n          transform 0.3s cubic-bezier(0, 0, 0.3, 1),\r\n          padding 0.3s cubic-bezier(0, 0, 0.3, 1);\r\n      }\r\n    `\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AltSidebarContainerComponent implements AfterContentInit, OnChanges, OnDestroy {\r\n  @Input() animate: boolean = true;\r\n\r\n  @Input() allowSidebarBackdropControl: boolean = true;\r\n  @Input() showBackdrop: boolean = false;\r\n  @Output() showBackdropChange = new EventEmitter<boolean>();\r\n  @Output() onBackdropClicked = new EventEmitter<null>();\r\n\r\n  @Input() contentClass?: string;\r\n  @Input() backdropClass?: string;\r\n\r\n  private _sidebars: Array<AltSidebarComponent> = [];\r\n\r\n  private _isBrowser: boolean;\r\n\r\n  constructor(\r\n    private _ref: ChangeDetectorRef,\r\n    @Inject(PLATFORM_ID) platformId: Object\r\n  ) {\r\n    this._isBrowser = isPlatformBrowser(platformId);\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    this._onToggle();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    if (changes['showBackdrop']) {\r\n      this.showBackdropChange.emit(changes['showBackdrop'].currentValue);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    this._unsubscribe();\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Adds a sidebar to the container's list of sidebars.\r\n   *\r\n   * @param sidebar {Sidebar} A sidebar within the container to register.\r\n   */\r\n  _addSidebar(sidebar: AltSidebarComponent) {\r\n    this._sidebars.push(sidebar);\r\n    this._subscribe(sidebar);\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Removes a sidebar from the container's list of sidebars.\r\n   *\r\n   * @param sidebar {Sidebar} The sidebar to remove.\r\n   */\r\n  _removeSidebar(sidebar: AltSidebarComponent) {\r\n    const index = this._sidebars.indexOf(sidebar);\r\n    if (index !== -1) {\r\n      this._sidebars.splice(index, 1);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Computes `margin` value to push page contents to accommodate open sidebars as needed.\r\n   *\r\n   * @return {CSSStyleDeclaration} margin styles for the page content.\r\n   */\r\n  _getContentStyle(): CSSStyleDeclaration {\r\n    let left = 0,\r\n      right = 0,\r\n      top = 0,\r\n      bottom = 0;\r\n\r\n    let transformStyle: string = '';\r\n    let heightStyle: string = '';\r\n    let widthStyle: string = '';\r\n\r\n    for (const sidebar of this._sidebars) {\r\n      // Slide mode: we need to translate the entire container\r\n      if (sidebar._isModeSlide) {\r\n        if (sidebar.opened) {\r\n          const transformDir: string = sidebar._isLeftOrRight ? 'X' : 'Y';\r\n          const transformAmt: string = `${sidebar._isLeftOrTop ? '' : '-'}${\r\n            sidebar._isLeftOrRight ? sidebar._width : sidebar._height\r\n          }`;\r\n\r\n          transformStyle = `translate${transformDir}(${transformAmt}px)`;\r\n        }\r\n      }\r\n\r\n      // Create a space for the sidebar\r\n      if ((sidebar._isModePush && sidebar.opened) || sidebar.dock) {\r\n        let paddingAmt: number = 0;\r\n\r\n        if (sidebar._isModeSlide && sidebar.opened) {\r\n          if (sidebar._isLeftOrRight) {\r\n            widthStyle = '100%';\r\n          } else {\r\n            heightStyle = '100%';\r\n          }\r\n        } else {\r\n          if (sidebar._isDocked || (sidebar._isModeOver && sidebar.dock)) {\r\n            paddingAmt = sidebar._dockedSize;\r\n          } else {\r\n            paddingAmt = sidebar._isLeftOrRight ? sidebar._width : sidebar._height;\r\n          }\r\n        }\r\n\r\n        switch (sidebar.position) {\r\n          case 'left':\r\n            left = Math.max(left, paddingAmt);\r\n            break;\r\n\r\n          case 'right':\r\n            right = Math.max(right, paddingAmt);\r\n            break;\r\n\r\n          case 'top':\r\n            top = Math.max(top, paddingAmt);\r\n            break;\r\n\r\n          case 'bottom':\r\n            bottom = Math.max(bottom, paddingAmt);\r\n            break;\r\n        }\r\n      }\r\n    }\r\n\r\n    return {\r\n      padding: `${top}px ${right}px ${bottom}px ${left}px`,\r\n      webkitTransform: transformStyle,\r\n      transform: transformStyle,\r\n      height: heightStyle,\r\n      width: widthStyle\r\n    } as CSSStyleDeclaration;\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Closes sidebars when the backdrop is clicked, if they have the\r\n   * `closeOnClickBackdrop` option set.\r\n   */\r\n  _onBackdropClicked(): void {\r\n    let backdropClicked = false;\r\n    for (const sidebar of this._sidebars) {\r\n      if (sidebar.opened && sidebar.showBackdrop && sidebar.closeOnClickBackdrop) {\r\n        sidebar.close();\r\n        backdropClicked = true;\r\n      }\r\n    }\r\n\r\n    if (backdropClicked) {\r\n      this.onBackdropClicked.emit();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Subscribes from a sidebar events to react properly.\r\n   */\r\n  private _subscribe(sidebar: AltSidebarComponent): void {\r\n    sidebar.onOpenStart.subscribe(() => this._onToggle());\r\n    sidebar.onOpened.subscribe(() => this._markForCheck());\r\n\r\n    sidebar.onCloseStart.subscribe(() => this._onToggle());\r\n    sidebar.onClosed.subscribe(() => this._markForCheck());\r\n\r\n    sidebar.onModeChange.subscribe(() => this._markForCheck());\r\n    sidebar.onPositionChange.subscribe(() => this._markForCheck());\r\n\r\n    sidebar._onRerender.subscribe(() => this._markForCheck());\r\n  }\r\n\r\n  /**\r\n   * Unsubscribes from all sidebars.\r\n   */\r\n  private _unsubscribe(): void {\r\n    for (const sidebar of this._sidebars) {\r\n      sidebar.onOpenStart.unsubscribe();\r\n      sidebar.onOpened.unsubscribe();\r\n\r\n      sidebar.onCloseStart.unsubscribe();\r\n      sidebar.onClosed.unsubscribe();\r\n\r\n      sidebar.onModeChange.unsubscribe();\r\n      sidebar.onPositionChange.unsubscribe();\r\n\r\n      sidebar._onRerender.unsubscribe();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Check if we should show the backdrop when a sidebar is toggled.\r\n   */\r\n  private _onToggle(): void {\r\n    if (this._sidebars.length > 0 && this.allowSidebarBackdropControl) {\r\n      // Show backdrop if a single open sidebar has it set\r\n      const hasOpen = this._sidebars.some(sidebar => sidebar.opened && sidebar.showBackdrop);\r\n\r\n      this.showBackdrop = hasOpen;\r\n      this.showBackdropChange.emit(hasOpen);\r\n    }\r\n\r\n    setTimeout(() => {\r\n      this._markForCheck();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Triggers change detection to recompute styles.\r\n   */\r\n  private _markForCheck(): void {\r\n    this._ref.markForCheck();\r\n  }\r\n}\r\n","import {\r\n  AfterContentInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  PLATFORM_ID,\r\n  SimpleChanges,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { isIOS, isLTR } from './utils';\r\nimport { AltSidebarContainerComponent } from './alt-sidebar-container.component';\r\n\r\n@Component({\r\n  selector: 'ng-alt-sidebar',\r\n  template: `\r\n    <aside\r\n      #sidebar\r\n      role=\"complementary\"\r\n      [attr.aria-hidden]=\"!opened\"\r\n      [attr.aria-label]=\"ariaLabel\"\r\n      class=\"ng-alt-sidebar ng-alt-sidebar--{{ opened ? 'opened' : 'closed' }} ng-alt-sidebar--{{\r\n        position\r\n      }} ng-alt-sidebar--{{ mode }}\"\r\n      [class.ng-alt-sidebar--docked]=\"_isDocked\"\r\n      [class.ng-alt-sidebar--inert]=\"_isInert\"\r\n      [class.ng-alt-sidebar--animate]=\"animate\"\r\n      [ngClass]=\"sidebarClass\"\r\n      [ngStyle]=\"_getStyle()\"\r\n    >\r\n      <ng-content></ng-content>\r\n    </aside>\r\n  `,\r\n  styles: [\r\n    `\r\n      .ng-alt-sidebar {\r\n        -webkit-overflow-scrolling: touch;\r\n        overflow: auto;\r\n        pointer-events: auto;\r\n        position: absolute;\r\n        touch-action: auto;\r\n        will-change: initial;\r\n        z-index: 2;\r\n      }\r\n\r\n      .ng-alt-sidebar--left {\r\n        bottom: 0;\r\n        left: 0;\r\n        top: 0;\r\n      }\r\n\r\n      .ng-alt-sidebar--right {\r\n        bottom: 0;\r\n        right: 0;\r\n        top: 0;\r\n      }\r\n\r\n      .ng-alt-sidebar--top {\r\n        left: 0;\r\n        right: 0;\r\n        top: 0;\r\n      }\r\n\r\n      .ng-alt-sidebar--bottom {\r\n        bottom: 0;\r\n        left: 0;\r\n        right: 0;\r\n      }\r\n\r\n      .ng-alt-sidebar--inert {\r\n        pointer-events: none;\r\n        touch-action: none;\r\n        will-change: transform;\r\n      }\r\n\r\n      .ng-alt-sidebar--animate {\r\n        -webkit-transition: -webkit-transform 0.3s cubic-bezier(0, 0, 0.3, 1);\r\n        transition: transform 0.3s cubic-bezier(0, 0, 0.3, 1);\r\n      }\r\n    `\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AltSidebarComponent implements AfterContentInit, OnInit, OnChanges, OnDestroy {\r\n  // `openedChange` allows for \"2-way\" data binding\r\n  @Input() opened: boolean = false;\r\n  @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  @Input() mode: 'over' | 'push' | 'slide' = 'over';\r\n  @Input() dock: boolean = false;\r\n  @Input() dockedSize: string = '0px';\r\n  @Input() position: 'start' | 'end' | 'left' | 'right' | 'top' | 'bottom' = 'start';\r\n  @Input() animate: boolean = true;\r\n\r\n  @Input() autoCollapseHeight?: number;\r\n  @Input() autoCollapseWidth?: number;\r\n  @Input() autoCollapseOnInit: boolean = true;\r\n\r\n  @Input() sidebarClass?: string;\r\n\r\n  @Input() ariaLabel?: string;\r\n  @Input() trapFocus: boolean = false;\r\n  @Input() autoFocus: boolean = true;\r\n\r\n  @Input() showBackdrop: boolean = false;\r\n  @Input() closeOnClickBackdrop: boolean = false;\r\n  @Input() closeOnClickOutside: boolean = false;\r\n\r\n  @Input() keyClose: boolean = false;\r\n  @Input() keyCode: number = 27; // Default to ESC key\r\n\r\n  @Output() onContentInit: EventEmitter<null> = new EventEmitter<null>();\r\n  @Output() onOpenStart: EventEmitter<null> = new EventEmitter<null>();\r\n  @Output() onOpened: EventEmitter<null> = new EventEmitter<null>();\r\n  @Output() onCloseStart: EventEmitter<null> = new EventEmitter<null>();\r\n  @Output() onClosed: EventEmitter<null> = new EventEmitter<null>();\r\n  @Output() onTransitionEnd: EventEmitter<null> = new EventEmitter<null>();\r\n  @Output() onModeChange: EventEmitter<string> = new EventEmitter<string>();\r\n  @Output() onPositionChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n  /** @internal */\r\n  @Output() _onRerender: EventEmitter<null> = new EventEmitter<null>();\r\n\r\n  /** @internal */\r\n  @ViewChild('sidebar', { static: false }) _elSidebar?: ElementRef;\r\n\r\n  private _focusableElementsString: string =\r\n    'a[href], area[href], input:not([disabled]), select:not([disabled]),' +\r\n    'textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], [contenteditable]';\r\n  private _focusableElements?: Array<HTMLElement>;\r\n  private _focusedBeforeOpen: HTMLElement | null = null;\r\n\r\n  private _tabIndexAttr: string = '__tabindex__';\r\n  private _tabIndexIndicatorAttr: string = '__ngsidebar-tabindex__';\r\n\r\n  private _wasCollapsed?: boolean;\r\n\r\n  // Delay initial animation (issues #59, #112)\r\n  private _shouldAnimate?: boolean;\r\n\r\n  private _clickEvent: string = 'click';\r\n  private _onClickOutsideAttached: boolean = false;\r\n  private _onKeyDownAttached: boolean = false;\r\n  private _onResizeAttached: boolean = false;\r\n\r\n  private _isBrowser: boolean;\r\n\r\n  constructor(\r\n    @Optional() private _container: AltSidebarContainerComponent,\r\n    private _ref: ChangeDetectorRef,\r\n    @Inject(PLATFORM_ID) platformId: Object\r\n  ) {\r\n    if (!this._container) {\r\n      throw new Error(\r\n        '<ng-alt-sidebar> must be inside a <ng-alt-sidebar-container>. ' +\r\n          'See https://github.com/megamanhxh/ng-alt-sidebar#usage for more info.'\r\n      );\r\n    }\r\n\r\n    this._isBrowser = isPlatformBrowser(platformId);\r\n\r\n    // Handle taps in iOS\r\n    if (this._isBrowser && isIOS() && !('onclick' in window)) {\r\n      this._clickEvent = 'touchstart';\r\n    }\r\n\r\n    this._normalizePosition();\r\n\r\n    this.open = this.open.bind(this);\r\n    this.close = this.close.bind(this);\r\n    this._onTransitionEnd = this._onTransitionEnd.bind(this);\r\n    this._onFocusTrap = this._onFocusTrap.bind(this);\r\n    this._onClickOutside = this._onClickOutside.bind(this);\r\n    this._onKeyDown = this._onKeyDown.bind(this);\r\n    this._collapse = this._collapse.bind(this);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    if (this.animate) {\r\n      this._shouldAnimate = true;\r\n      this.animate = false;\r\n    }\r\n\r\n    this._container._addSidebar(this);\r\n\r\n    if (this.autoCollapseOnInit) {\r\n      this._collapse();\r\n    }\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    this.onContentInit.emit();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    if (changes['animate'] && this._shouldAnimate) {\r\n      this._shouldAnimate = changes['animate'].currentValue;\r\n    }\r\n\r\n    if (changes['closeOnClickOutside']) {\r\n      if (changes['closeOnClickOutside'].currentValue) {\r\n        this._initCloseClickListener();\r\n      } else {\r\n        this._destroyCloseClickListener();\r\n      }\r\n    }\r\n    if (changes['keyClose']) {\r\n      if (changes['keyClose'].currentValue) {\r\n        this._initCloseKeyDownListener();\r\n      } else {\r\n        this._destroyCloseKeyDownListener();\r\n      }\r\n    }\r\n\r\n    if (changes['position']) {\r\n      // Handle \"start\" and \"end\" aliases\r\n      this._normalizePosition();\r\n\r\n      // Emit change in timeout to allow for position change to be rendered first\r\n      setTimeout(() => {\r\n        this.onPositionChange.emit(changes['position'].currentValue);\r\n      });\r\n    }\r\n\r\n    if (changes['mode']) {\r\n      setTimeout(() => {\r\n        this.onModeChange.emit(changes['mode'].currentValue);\r\n      });\r\n    }\r\n\r\n    if (changes['dock']) {\r\n      this.triggerRerender();\r\n    }\r\n\r\n    if (changes['opened']) {\r\n      if (this._shouldAnimate) {\r\n        this.animate = true;\r\n        this._shouldAnimate = false;\r\n      }\r\n\r\n      if (changes['opened'].currentValue) {\r\n        this.open();\r\n      } else {\r\n        this.close();\r\n      }\r\n    }\r\n\r\n    if (changes['autoCollapseHeight'] || changes['autoCollapseWidth']) {\r\n      this._initCollapseListeners();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    this._destroyCloseListeners();\r\n    this._destroyCollapseListeners();\r\n\r\n    this._container._removeSidebar(this);\r\n  }\r\n\r\n  // Sidebar toggling\r\n  // ==============================================================================================\r\n\r\n  /**\r\n   * Opens the sidebar and emits the appropriate events.\r\n   */\r\n  open(): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    this.opened = true;\r\n    this.openedChange.emit(true);\r\n\r\n    this.onOpenStart.emit();\r\n\r\n    this._ref.detectChanges();\r\n\r\n    setTimeout(() => {\r\n      if (this.animate && !this._isModeSlide) {\r\n        this._elSidebar?.nativeElement.addEventListener('transitionend', this._onTransitionEnd);\r\n      } else {\r\n        this._setFocused();\r\n        this._initCloseListeners();\r\n\r\n        if (this.opened) {\r\n          this.onOpened.emit();\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Closes the sidebar and emits the appropriate events.\r\n   */\r\n  close(): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    this.opened = false;\r\n    this.openedChange.emit(false);\r\n\r\n    this.onCloseStart.emit();\r\n\r\n    this._ref.detectChanges();\r\n\r\n    setTimeout(() => {\r\n      if (this.animate && !this._isModeSlide) {\r\n        this._elSidebar?.nativeElement.addEventListener('transitionend', this._onTransitionEnd);\r\n      } else {\r\n        this._setFocused();\r\n        this._destroyCloseListeners();\r\n\r\n        if (!this.opened) {\r\n          this.onClosed.emit();\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Manually trigger a re-render of the container. Useful if the sidebar contents might change.\r\n   */\r\n  triggerRerender(): void {\r\n    if (!this._isBrowser) {\r\n      return;\r\n    }\r\n\r\n    setTimeout(() => {\r\n      this._onRerender.emit();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Computes the transform styles for the sidebar template.\r\n   *\r\n   * @return {CSSStyleDeclaration} The transform styles, with the WebKit-prefixed version as well.\r\n   */\r\n  _getStyle(): CSSStyleDeclaration {\r\n    let transformStyle: string = '';\r\n\r\n    // Hides sidebar off screen when closed\r\n    if (!this.opened) {\r\n      const transformDir: string = 'translate' + (this._isLeftOrRight ? 'X' : 'Y');\r\n      let translateAmt: string = `${this._isLeftOrTop ? '-' : ''}100%`;\r\n\r\n      transformStyle = `${transformDir}(${translateAmt})`;\r\n\r\n      // Docked mode: partially remains open\r\n      // Note that using `calc(...)` within `transform(...)` doesn't work in IE\r\n      if (this.dock && this._dockedSize > 0 && !(this._isModeSlide && this.opened)) {\r\n        transformStyle += ` ${transformDir}(${this._isLeftOrTop ? '+' : '-'}${this.dockedSize})`;\r\n      }\r\n    }\r\n\r\n    return {\r\n      webkitTransform: transformStyle,\r\n      transform: transformStyle\r\n    } as CSSStyleDeclaration;\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Handles the `transitionend` event on the sidebar to emit the onOpened/onClosed events after the transform\r\n   * transition is completed.\r\n   */\r\n  _onTransitionEnd(e: TransitionEvent): void {\r\n    if (e.target === this._elSidebar?.nativeElement && e.propertyName.endsWith('transform')) {\r\n      this._setFocused();\r\n\r\n      if (this.opened) {\r\n        this._initCloseListeners();\r\n        this.onOpened.emit();\r\n      } else {\r\n        this._destroyCloseListeners();\r\n        this.onClosed.emit();\r\n      }\r\n\r\n      this.onTransitionEnd.emit();\r\n\r\n      this._elSidebar.nativeElement.removeEventListener('transitionend', this._onTransitionEnd);\r\n    }\r\n  }\r\n\r\n  // Focus on open/close\r\n  // ==============================================================================================\r\n\r\n  /**\r\n   * Returns whether focus should be trapped within the sidebar.\r\n   *\r\n   * @return {boolean} Trap focus inside sidebar.\r\n   */\r\n  private get _shouldTrapFocus(): boolean {\r\n    return this.opened && this.trapFocus;\r\n  }\r\n\r\n  /**\r\n   * Sets focus to the first focusable element inside the sidebar.\r\n   */\r\n  private _focusFirstItem(): void {\r\n    if (this._focusableElements && this._focusableElements.length > 0) {\r\n      this._focusableElements[0].focus();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Loops focus back to the start of the sidebar if set to do so.\r\n   */\r\n  private _onFocusTrap(e: FocusEvent): void {\r\n    if (this._shouldTrapFocus && !this._elSidebar?.nativeElement.contains(e.target)) {\r\n      this._focusFirstItem();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Handles the ability to focus sidebar elements when it's open/closed to ensure that the sidebar is inert when\r\n   * appropriate.\r\n   */\r\n  private _setFocused(): void {\r\n    this._focusableElements = Array.from(\r\n      this._elSidebar?.nativeElement.querySelectorAll(this._focusableElementsString)\r\n    ) as Array<HTMLElement>;\r\n\r\n    if (this.opened) {\r\n      this._focusedBeforeOpen = document.activeElement as HTMLElement;\r\n\r\n      // Restore focusability, with previous tabindex attributes\r\n      for (const el of this._focusableElements) {\r\n        const prevTabIndex = el.getAttribute(this._tabIndexAttr);\r\n        const wasTabIndexSet = el.getAttribute(this._tabIndexIndicatorAttr) !== null;\r\n        if (prevTabIndex !== null) {\r\n          el.setAttribute('tabindex', prevTabIndex);\r\n          el.removeAttribute(this._tabIndexAttr);\r\n        } else if (wasTabIndexSet) {\r\n          el.removeAttribute('tabindex');\r\n          el.removeAttribute(this._tabIndexIndicatorAttr);\r\n        }\r\n      }\r\n\r\n      if (this.autoFocus) {\r\n        this._focusFirstItem();\r\n      }\r\n\r\n      document.addEventListener('focus', this._onFocusTrap, true);\r\n    } else {\r\n      // Manually make all focusable elements unfocusable, saving existing tabindex attributes\r\n      for (const el of this._focusableElements) {\r\n        const existingTabIndex = el.getAttribute('tabindex');\r\n        el.setAttribute('tabindex', '-1');\r\n        el.setAttribute(this._tabIndexIndicatorAttr, '');\r\n\r\n        if (existingTabIndex !== null) {\r\n          el.setAttribute(this._tabIndexAttr, existingTabIndex);\r\n        }\r\n      }\r\n\r\n      document.removeEventListener('focus', this._onFocusTrap, true);\r\n\r\n      // Set focus back to element before the sidebar was opened\r\n      if (this._focusedBeforeOpen && this.autoFocus && this._isModeOver) {\r\n        this._focusedBeforeOpen.focus();\r\n        this._focusedBeforeOpen = null;\r\n      }\r\n    }\r\n  }\r\n\r\n  // Close event handlers\r\n  // ==============================================================================================\r\n\r\n  /**\r\n   * Initializes event handlers for the closeOnClickOutside and keyClose options.\r\n   */\r\n  private _initCloseListeners(): void {\r\n    this._initCloseClickListener();\r\n    this._initCloseKeyDownListener();\r\n  }\r\n\r\n  private _initCloseClickListener(): void {\r\n    // In a timeout so that things render first\r\n    setTimeout(() => {\r\n      if (this.opened && this.closeOnClickOutside && !this._onClickOutsideAttached) {\r\n        // @ts-ignore\r\n        document.addEventListener(this._clickEvent, this._onClickOutside);\r\n        this._onClickOutsideAttached = true;\r\n      }\r\n    });\r\n  }\r\n\r\n  private _initCloseKeyDownListener(): void {\r\n    // In a timeout so that things render first\r\n    setTimeout(() => {\r\n      if (this.opened && this.keyClose && !this._onKeyDownAttached) {\r\n        document.addEventListener('keydown', this._onKeyDown);\r\n        this._onKeyDownAttached = true;\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Destroys all event handlers from _initCloseListeners.\r\n   */\r\n  private _destroyCloseListeners(): void {\r\n    this._destroyCloseClickListener();\r\n    this._destroyCloseKeyDownListener();\r\n  }\r\n\r\n  private _destroyCloseClickListener(): void {\r\n    if (this._onClickOutsideAttached) {\r\n      // @ts-ignore\r\n      document.removeEventListener(this._clickEvent, this._onClickOutside);\r\n      this._onClickOutsideAttached = false;\r\n    }\r\n  }\r\n\r\n  private _destroyCloseKeyDownListener(): void {\r\n    if (this._onKeyDownAttached) {\r\n      document.removeEventListener('keydown', this._onKeyDown);\r\n      this._onKeyDownAttached = false;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Handles `click` events on anything while the sidebar is open for the closeOnClickOutside option.\r\n   * Programatically closes the sidebar if a click occurs outside the sidebar.\r\n   *\r\n   * @param e {MouseEvent} Mouse click event.\r\n   */\r\n  private _onClickOutside(e: MouseEvent): void {\r\n    if (this._onClickOutsideAttached && this._elSidebar && !this._elSidebar.nativeElement.contains(e.target)) {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Handles the `keydown` event for the keyClose option.\r\n   *\r\n   * @param e {KeyboardEvent} Normalized keydown event.\r\n   */\r\n  private _onKeyDown(e: KeyboardEvent | Event): void {\r\n    e = e || window.event;\r\n\r\n    if ((e as KeyboardEvent).keyCode === this.keyCode) {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  // Auto collapse handlers\r\n  // ==============================================================================================\r\n\r\n  private _initCollapseListeners(): void {\r\n    if (this.autoCollapseHeight || this.autoCollapseWidth) {\r\n      // In a timeout so that things render first\r\n      setTimeout(() => {\r\n        if (!this._onResizeAttached) {\r\n          window.addEventListener('resize', this._collapse);\r\n          this._onResizeAttached = true;\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  private _destroyCollapseListeners(): void {\r\n    if (this._onResizeAttached) {\r\n      window.removeEventListener('resize', this._collapse);\r\n      this._onResizeAttached = false;\r\n    }\r\n  }\r\n\r\n  private _collapse(): void {\r\n    const winHeight: number = window.innerHeight;\r\n    const winWidth: number = window.innerWidth;\r\n\r\n    if (this.autoCollapseHeight) {\r\n      if (winHeight <= this.autoCollapseHeight && this.opened) {\r\n        this._wasCollapsed = true;\r\n        this.close();\r\n      } else if (winHeight > this.autoCollapseHeight && this._wasCollapsed) {\r\n        this.open();\r\n        this._wasCollapsed = false;\r\n      }\r\n    }\r\n\r\n    if (this.autoCollapseWidth) {\r\n      if (winWidth <= this.autoCollapseWidth && this.opened) {\r\n        this._wasCollapsed = true;\r\n        this.close();\r\n      } else if (winWidth > this.autoCollapseWidth && this._wasCollapsed) {\r\n        this.open();\r\n        this._wasCollapsed = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  // Helpers\r\n  // ==============================================================================================\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns the rendered height of the sidebar (or the docked size).\r\n   * This is used in the sidebar container.\r\n   *\r\n   * @return {number} Height of sidebar.\r\n   */\r\n  get _height(): number {\r\n    if (this._elSidebar?.nativeElement) {\r\n      return this._isDocked ? this._dockedSize : this._elSidebar.nativeElement.offsetHeight;\r\n    }\r\n\r\n    return 0;\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns the rendered width of the sidebar (or the docked size).\r\n   * This is used in the sidebar container.\r\n   *\r\n   * @return {number} Width of sidebar.\r\n   */\r\n  get _width(): number {\r\n    if (this._elSidebar?.nativeElement) {\r\n      return this._isDocked ? this._dockedSize : this._elSidebar.nativeElement.offsetWidth;\r\n    }\r\n\r\n    return 0;\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns the docked size as a number.\r\n   *\r\n   * @return {number} Docked size.\r\n   */\r\n  get _dockedSize(): number {\r\n    return parseFloat(this.dockedSize);\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns whether the sidebar is over mode.\r\n   *\r\n   * @return {boolean} Sidebar's mode is \"over\".\r\n   */\r\n  get _isModeOver(): boolean {\r\n    return this.mode === 'over';\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns whether the sidebar is push mode.\r\n   *\r\n   * @return {boolean} Sidebar's mode is \"push\".\r\n   */\r\n  get _isModePush(): boolean {\r\n    return this.mode === 'push';\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns whether the sidebar is slide mode.\r\n   *\r\n   * @return {boolean} Sidebar's mode is \"slide\".\r\n   */\r\n  get _isModeSlide(): boolean {\r\n    return this.mode === 'slide';\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns whether the sidebar is \"docked\" -- i.e. it is closed but in dock mode.\r\n   *\r\n   * @return {boolean} Sidebar is docked.\r\n   */\r\n  get _isDocked(): boolean {\r\n    return this.dock && this.dockedSize !== '0px' && !this.opened;\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns whether the sidebar is positioned at the left or top.\r\n   *\r\n   * @return {boolean} Sidebar is positioned at the left or top.\r\n   */\r\n  get _isLeftOrTop(): boolean {\r\n    return this.position === 'left' || this.position === 'top';\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns whether the sidebar is positioned at the left or right.\r\n   *\r\n   * @return {boolean} Sidebar is positioned at the left or right.\r\n   */\r\n  get _isLeftOrRight(): boolean {\r\n    return this.position === 'left' || this.position === 'right';\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * Returns whether the sidebar is inert -- i.e. the contents cannot be focused.\r\n   *\r\n   * @return {boolean} Sidebar is inert.\r\n   */\r\n  get _isInert(): boolean {\r\n    return !this.opened && !this.dock;\r\n  }\r\n\r\n  /**\r\n   * \"Normalizes\" position. For example, \"start\" would be \"left\" if the page is LTR.\r\n   */\r\n  private _normalizePosition(): void {\r\n    const ltr: boolean = isLTR();\r\n\r\n    if (this.position === 'start') {\r\n      this.position = ltr ? 'left' : 'right';\r\n    } else if (this.position === 'end') {\r\n      this.position = ltr ? 'right' : 'left';\r\n    }\r\n  }\r\n}\r\n","import { Directive, HostBinding } from '@angular/core';\r\nimport { AltSidebarComponent } from './alt-sidebar.component';\r\n\r\n@Directive({\r\n  selector: '[closeSidebar]'\r\n})\r\nexport class CloseAltSidebarDirective {\r\n  constructor(private _sidebar?: AltSidebarComponent) {}\r\n\r\n  /** @internal */\r\n  @HostBinding('click')\r\n  _onClick(): void {\r\n    if (this._sidebar) {\r\n      this._sidebar.close();\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AltSidebarComponent } from './alt-sidebar.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AltSidebarContainerComponent } from './alt-sidebar-container.component';\r\nimport { CloseAltSidebarDirective } from './close-alt-sidebar.directive';\r\n\r\n@NgModule({\r\n  declarations: [AltSidebarComponent, AltSidebarContainerComponent, CloseAltSidebarDirective],\r\n  imports: [CommonModule],\r\n  exports: [AltSidebarComponent, AltSidebarContainerComponent, CloseAltSidebarDirective]\r\n})\r\nexport class AltSidebarModule {}\r\n","/*\r\n * Public API Surface of ng-alt-sidebar\r\n */\r\n\r\nexport * from './lib/alt-sidebar.component';\r\nexport * from './lib/alt-sidebar-container.component';\r\nexport * from './lib/alt-sidebar.module';\r\nexport * from './lib/close-alt-sidebar.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1.AltSidebarComponent"],"mappings":"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"}