{"version":3,"file":"ng-sidebar-accordion.mjs","sources":["../../../projects/ng-sidebar-accordion/src/lib/sidebar-settings.component.ts","../../../projects/ng-sidebar-accordion/src/lib/sidebar-accordion/sidebar-accordion.component.ts","../../../projects/ng-sidebar-accordion/src/lib/sidebar.component.ts","../../../projects/ng-sidebar-accordion/src/lib/sidebar-header.component.ts","../../../projects/ng-sidebar-accordion/src/lib/sidebar-content.component.ts","../../../projects/ng-sidebar-accordion/src/lib/sidebar-accordion-content.component.ts","../../../projects/ng-sidebar-accordion/src/lib/sidebar-accordion.module.ts","../../../projects/ng-sidebar-accordion/src/lib/sidebar-mouse-touch.event-args.ts","../../../projects/ng-sidebar-accordion/src/public-api.ts","../../../projects/ng-sidebar-accordion/src/ng-sidebar-accordion.ts"],"sourcesContent":["import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n} from '@angular/core';\r\n\r\ntype Position = 'left' | 'top' | 'right' | 'bottom';\r\ntype Mode = 'push' | 'over';\r\n\r\n@Component({\r\n  selector: 'ng-sidebar-settings',\r\n  template: '',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SidebarSettingsComponent {\r\n  @Output() modeChange = new EventEmitter<SidebarSettingsComponent>();\r\n  @Output() positionChange = new EventEmitter<SidebarSettingsComponent>();\r\n\r\n  private _position: Position;\r\n\r\n  @Input() get position(): Position {\r\n    return this._position;\r\n  }\r\n\r\n  set position(value: Position) {\r\n    this._position = value;\r\n    this.positionChange.emit(this);\r\n  }\r\n\r\n  private _mode: Mode;\r\n\r\n  @Input() get mode(): Mode {\r\n    return this._mode;\r\n  }\r\n\r\n  set mode(value: Mode) {\r\n    this._mode = value;\r\n    this.modeChange.emit(this);\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  QueryList,\r\n} from '@angular/core';\r\nimport { SidebarComponent } from '../sidebar.component';\r\nimport { SidebarSettingsComponent } from '../sidebar-settings.component';\r\nimport { SidebarOpenedEventArgs } from '../sidebar-opened.event-args';\r\nimport { SidebarMouseTouchEventArgs } from '../sidebar-mouse-touch.event-args';\r\n\r\nexport type Position = 'all' | 'left' | 'top' | 'right' | 'bottom';\r\n\r\n@Component({\r\n  selector: 'ng-sidebar-accordion',\r\n  template: `\r\n    <div [ngClass]=\"_getClassName('left')\" [ngStyle]=\"_getStyle('left')\">\r\n      <div\r\n        *ngIf=\"_isResizableGutter('left')\"\r\n        class=\"ng-sidebar-accordion__gutter-vertical\"\r\n        (mousedown)=\"_onSidebarResizeBegin('left', $event)\"\r\n      ></div>\r\n      <ng-content select=\"ng-sidebar[position=left]\"></ng-content>\r\n    </div>\r\n    <div [ngClass]=\"_getClassName('top')\" [ngStyle]=\"_getStyle('top')\">\r\n      <div\r\n        *ngIf=\"_isResizableGutter('top')\"\r\n        class=\"ng-sidebar-accordion__gutter-horizontal\"\r\n        (mousedown)=\"_onSidebarResizeBegin('top', $event)\"\r\n      ></div>\r\n      <ng-content select=\"ng-sidebar[position=top]\"></ng-content>\r\n    </div>\r\n    <div [ngClass]=\"_getClassName('right')\" [ngStyle]=\"_getStyle('right')\">\r\n      <div\r\n        *ngIf=\"_isResizableGutter('right')\"\r\n        class=\"ng-sidebar-accordion__gutter-vertical\"\r\n        (mousedown)=\"_onSidebarResizeBegin('right', $event)\"\r\n      ></div>\r\n      <ng-content select=\"ng-sidebar[position=right]\"></ng-content>\r\n    </div>\r\n    <div class=\"ng-sidebar-accordion__content-pane\" [ngStyle]=\"_getStyle()\">\r\n      <ng-content select=\"ng-sidebar-accordion-content\"></ng-content>\r\n    </div>\r\n    <div [ngClass]=\"_getClassName('bottom')\" [ngStyle]=\"_getStyle('bottom')\">\r\n      <div\r\n        *ngIf=\"_isResizableGutter('bottom')\"\r\n        class=\"ng-sidebar-accordion__gutter-horizontal\"\r\n        (mousedown)=\"_onSidebarResizeBegin('bottom', $event)\"\r\n      ></div>\r\n      <ng-content select=\"ng-sidebar[position=bottom]\"></ng-content>\r\n    </div>\r\n  `,\r\n  styleUrls: ['./sidebar-accordion.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SidebarAccordionComponent\r\n  implements AfterViewInit, OnInit, OnDestroy\r\n{\r\n  @HostBinding('class.ng-sidebar-accordion') classNameSidebarAccordion = true;\r\n\r\n  @Input() @HostBinding('style.width') width: string;\r\n  @Input() @HostBinding('style.height') height: string;\r\n  @Input() @HostBinding('class') className: string;\r\n  @Input() sidebarResizable = false;\r\n\r\n  @Output() sidebarResizableBegin = new EventEmitter<Position>();\r\n  @Output() sidebarResizableEnd = new EventEmitter<Position>();\r\n  @Output() sidebarOpenedChange = new EventEmitter<SidebarComponent>();\r\n\r\n  @ContentChildren(SidebarSettingsComponent)\r\n  sideBarSettingsList: QueryList<SidebarSettingsComponent>;\r\n\r\n  private _sidebars: Array<SidebarComponent> = [];\r\n  private _resizeSidebar: {\r\n    position: Position;\r\n    mouseClientX: number;\r\n    mouseClientY: number;\r\n    spaceContent: number;\r\n  };\r\n\r\n  constructor(private element: ElementRef, private cdRef: ChangeDetectorRef) {}\r\n\r\n  ngAfterViewInit(): void {\r\n    const groupSettings = this.groupBy(\r\n      this.sideBarSettingsList.toArray(),\r\n      'position'\r\n    );\r\n\r\n    Object.keys(groupSettings).forEach((key) => {\r\n      if (groupSettings[key].length > 1) {\r\n        throw new Error(\r\n          \"<ng-sidebar-settings> ng-sidebar-settings can't be more than one with the same position.\"\r\n        );\r\n      }\r\n    });\r\n\r\n    this.sidebarSettingsSubscribe();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    window.addEventListener('mousemove', this.onMouseMove);\r\n    window.addEventListener('mouseup', this.onMouseUp);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    window.removeEventListener('mousemove', this.onMouseMove);\r\n    window.removeEventListener('mouseup', this.onMouseUp);\r\n    this.sidebarUnsubscribe();\r\n    this.sidebarSettingsUnsubscribe();\r\n  }\r\n\r\n  _addSidebar(sidebar: SidebarComponent): void {\r\n    this._sidebars.push(sidebar);\r\n    this.sidebarSubscribe(sidebar);\r\n  }\r\n\r\n  _removeSidebar(sidebar: SidebarComponent): void {\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  _isResizableGutter(position: Position): boolean {\r\n    if (!position || !this.sidebarResizable) {\r\n      return false;\r\n    }\r\n\r\n    const groupByPosition = this.groupBy(this._sidebars, 'position');\r\n\r\n    if (groupByPosition.hasOwnProperty(position)) {\r\n      return !!groupByPosition[position].find((s) => s.opened);\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  _getClassName(position: Position): string {\r\n    const sideBarSettings = this.sideBarSettingsList.filter(\r\n      (s) => s.position === position\r\n    );\r\n\r\n    return `ng-sidebar-accordion__${position}-pane${\r\n      this._resizeSidebar && this._resizeSidebar.position === position\r\n        ? ` ng-sidebar-accordion__${position}-pane_resizable`\r\n        : ''\r\n    }${\r\n      sideBarSettings.length > 0 && sideBarSettings[0].mode === 'over'\r\n        ? ` ng-sidebar-accordion__${position}-pane_over`\r\n        : ''\r\n    }`;\r\n  }\r\n\r\n  _getStyle(position?: Position) {\r\n    const root = document.documentElement;\r\n    const spaceSidebarHeader = +getComputedStyle(root)\r\n      .getPropertyValue(`--ng-sidebar-accordion-space__sidebar-header`)\r\n      .replace('px', '');\r\n\r\n    const spaceSidebarHeaderBorder = +getComputedStyle(root)\r\n      .getPropertyValue(`--ng-sidebar-accordion-space__sidebar-header-border`)\r\n      .replace('px', '');\r\n\r\n    const leftPaneIsOver =\r\n      this.sideBarSettingsList.filter(\r\n        (s) => s.position === 'left' && s.mode === 'over'\r\n      ).length > 0;\r\n    const topPaneIsOver =\r\n      this.sideBarSettingsList.filter(\r\n        (s) => s.position === 'top' && s.mode === 'over'\r\n      ).length > 0;\r\n    const rightPaneIsOver =\r\n      this.sideBarSettingsList.filter(\r\n        (s) => s.position === 'right' && s.mode === 'over'\r\n      ).length > 0;\r\n    const bottomPaneIsOver =\r\n      this.sideBarSettingsList.filter(\r\n        (s) => s.position === 'bottom' && s.mode === 'over'\r\n      ).length > 0;\r\n\r\n    const leftSidebarCount = this._sidebars.filter(\r\n      (s) => s.position === 'left' && s._headersLength > 0\r\n    ).length;\r\n    const topSidebarCount = this._sidebars.filter(\r\n      (s) => s.position === 'top' && s._headersLength > 0\r\n    ).length;\r\n    const rightSidebarCount = this._sidebars.filter(\r\n      (s) => s.position === 'right' && s._headersLength > 0\r\n    ).length;\r\n    const bottomSidebarCount = this._sidebars.filter(\r\n      (s) => s.position === 'bottom' && s._headersLength > 0\r\n    ).length;\r\n\r\n    const style: any = {};\r\n\r\n    switch (position) {\r\n      case 'top':\r\n      case 'bottom':\r\n        const currentPaneIsOver =\r\n          this.sideBarSettingsList.filter(\r\n            (s) => s.position === position && s.mode === 'over'\r\n          ).length > 0;\r\n\r\n        if (currentPaneIsOver) {\r\n          if (leftPaneIsOver) {\r\n            style.left =\r\n              leftSidebarCount * spaceSidebarHeader +\r\n              spaceSidebarHeaderBorder +\r\n              'px';\r\n          } else {\r\n            style.left = '0';\r\n          }\r\n          if (rightPaneIsOver) {\r\n            style.right =\r\n              rightSidebarCount * spaceSidebarHeader +\r\n              spaceSidebarHeaderBorder +\r\n              'px';\r\n          } else {\r\n            style.right = '0';\r\n          }\r\n          return style;\r\n        } else {\r\n          if (leftPaneIsOver) {\r\n            style.paddingLeft =\r\n              leftSidebarCount * spaceSidebarHeader +\r\n              spaceSidebarHeaderBorder +\r\n              'px';\r\n          }\r\n\r\n          if (rightPaneIsOver) {\r\n            style.paddingRight =\r\n              rightSidebarCount * spaceSidebarHeader +\r\n              spaceSidebarHeaderBorder +\r\n              'px';\r\n          }\r\n          return style;\r\n        }\r\n      case undefined:\r\n      case null:\r\n        if (leftPaneIsOver) {\r\n          style.paddingLeft =\r\n            leftSidebarCount * spaceSidebarHeader +\r\n            spaceSidebarHeaderBorder +\r\n            'px';\r\n        }\r\n        if (topPaneIsOver) {\r\n          style.paddingTop =\r\n            topSidebarCount * spaceSidebarHeader +\r\n            spaceSidebarHeaderBorder +\r\n            'px';\r\n        }\r\n        if (rightPaneIsOver) {\r\n          style.paddingRight =\r\n            rightSidebarCount * spaceSidebarHeader +\r\n            spaceSidebarHeaderBorder +\r\n            'px';\r\n        }\r\n        if (bottomPaneIsOver) {\r\n          style.paddingBottom =\r\n            bottomSidebarCount * spaceSidebarHeader +\r\n            spaceSidebarHeaderBorder +\r\n            'px';\r\n        }\r\n\r\n        return style;\r\n      default:\r\n        return null;\r\n    }\r\n  }\r\n\r\n  _onSidebarResizeBegin(position: Position, e: MouseEvent): void {\r\n    const root = document.documentElement;\r\n\r\n    this._resizeSidebar = {\r\n      position,\r\n      mouseClientX: e.clientX,\r\n      mouseClientY: e.clientY,\r\n      spaceContent: +getComputedStyle(root)\r\n        .getPropertyValue(\r\n          `--ng-sidebar-accordion-space__sidebar-content-${position}`\r\n        )\r\n        .replace('px', ''),\r\n    };\r\n\r\n    this.sidebarResizableBegin.emit(position);\r\n  }\r\n\r\n  open(value: Position, index: number = 0): void {\r\n    this.sidebarToggle(value, index, true);\r\n  }\r\n\r\n  close(value: Position): void {\r\n    this.sidebarToggle(value, null, false);\r\n  }\r\n\r\n  onMouseMove = (e: MouseEvent): void => {\r\n    if (!this._resizeSidebar) {\r\n      return;\r\n    }\r\n\r\n    const root = document.documentElement;\r\n\r\n    const getDiffPositionValue = () => {\r\n      switch (this._resizeSidebar.position) {\r\n        case 'left':\r\n          return e.clientX - this._resizeSidebar.mouseClientX;\r\n        case 'right':\r\n          return (e.clientX - this._resizeSidebar.mouseClientX) * -1;\r\n        case 'top':\r\n          return e.clientY - this._resizeSidebar.mouseClientY;\r\n        case 'bottom':\r\n          return (e.clientY - this._resizeSidebar.mouseClientY) * -1;\r\n        default:\r\n          return 0;\r\n      }\r\n    };\r\n\r\n    let positionValue =\r\n      getDiffPositionValue() + this._resizeSidebar.spaceContent;\r\n\r\n    if (positionValue < 0) {\r\n      positionValue = 0;\r\n    }\r\n\r\n    root.style.setProperty(\r\n      `--ng-sidebar-accordion-space__sidebar-content-${this._resizeSidebar.position}`,\r\n      positionValue + 'px'\r\n    );\r\n\r\n    this.correctMaxSizeSidebars();\r\n  };\r\n\r\n  onMouseUp = (): void => {\r\n    if (this._resizeSidebar) {\r\n      const position = this._resizeSidebar.position;\r\n      delete this._resizeSidebar;\r\n\r\n      this.sidebarResizableEnd.emit(position);\r\n    }\r\n  };\r\n\r\n  getSidebarIndex(sidebar: SidebarComponent): number {\r\n    if (!sidebar) {\r\n      return -1;\r\n    }\r\n\r\n    const groupByPosition = this.groupBy(this._sidebars, 'position');\r\n\r\n    if (groupByPosition.hasOwnProperty('left')) {\r\n      groupByPosition['left'].reverse();\r\n    }\r\n\r\n    if (groupByPosition.hasOwnProperty('top')) {\r\n      groupByPosition['top'].reverse();\r\n    }\r\n\r\n    if (groupByPosition.hasOwnProperty(sidebar.position)) {\r\n      return groupByPosition[sidebar.position].findIndex((s) => s === sidebar);\r\n    }\r\n\r\n    return -1;\r\n  }\r\n\r\n  private sidebarToggle(\r\n    position: Position,\r\n    index: number,\r\n    opened: boolean\r\n  ): void {\r\n    const groupByPosition = this.groupBy(this._sidebars, 'position');\r\n\r\n    if (groupByPosition.hasOwnProperty('left')) {\r\n      groupByPosition['left'].reverse();\r\n    }\r\n\r\n    if (groupByPosition.hasOwnProperty('top')) {\r\n      groupByPosition['top'].reverse();\r\n    }\r\n\r\n    switch (position) {\r\n      case 'all':\r\n        Object.keys(groupByPosition).forEach((key) => {\r\n          if (index) {\r\n            opened\r\n              ? groupByPosition[key][index].open()\r\n              : groupByPosition[key][index].close();\r\n          } else {\r\n            groupByPosition[key].forEach((s) =>\r\n              opened ? s.open() : s.close()\r\n            );\r\n          }\r\n        });\r\n        break;\r\n      default:\r\n        if (index) {\r\n          opened\r\n            ? groupByPosition[position][index].open()\r\n            : groupByPosition[position][index].close();\r\n        } else {\r\n          groupByPosition[position].forEach((s) =>\r\n            opened ? s.open : s.close()\r\n          );\r\n        }\r\n\r\n        break;\r\n    }\r\n  }\r\n\r\n  private correctMaxSizeSidebars() {\r\n    const setSpaceSidebar = (openedSidebars, outOfScreenSize) => {\r\n      openedSidebars.forEach((s) => {\r\n        let spaceSidebar = +getComputedStyle(root)\r\n          .getPropertyValue(\r\n            `--ng-sidebar-accordion-space__sidebar-content-${s.position}`\r\n          )\r\n          .replace('px', '');\r\n\r\n        if (spaceSidebar < 0) {\r\n          spaceSidebar *= -1;\r\n        }\r\n\r\n        let spaceValue = spaceSidebar - outOfScreenSize;\r\n\r\n        if (spaceValue < 0) {\r\n          spaceValue = 0;\r\n        }\r\n\r\n        root.style.setProperty(\r\n          `--ng-sidebar-accordion-space__sidebar-content-${s.position}`,\r\n          spaceValue + 'px'\r\n        );\r\n      });\r\n    };\r\n\r\n    const root = document.documentElement;\r\n\r\n    const spaceSidebarHeaderBorder = +getComputedStyle(root)\r\n      .getPropertyValue(`--ng-sidebar-accordion-space__sidebar-header-border`)\r\n      .replace('px', '');\r\n\r\n    const outOfScreenWidth =\r\n      this.element.nativeElement.scrollWidth -\r\n      (this.element.nativeElement.clientWidth + spaceSidebarHeaderBorder);\r\n    const outOfScreenHeight =\r\n      this.element.nativeElement.scrollHeight -\r\n      (this.element.nativeElement.clientHeight + spaceSidebarHeaderBorder);\r\n\r\n    if (outOfScreenWidth > 0) {\r\n      const openedSidebarsW = this._sidebars.filter(\r\n        (s) =>\r\n          (s.position === 'left' || s.position === 'right') &&\r\n          s.opened &&\r\n          !this.sideBarSettingsList.find(\r\n            (ss) => ss.position === s.position && ss.mode === 'over'\r\n          )\r\n      );\r\n      setSpaceSidebar(openedSidebarsW, outOfScreenWidth);\r\n    }\r\n    if (outOfScreenHeight > 0) {\r\n      const openedSidebarsH = this._sidebars.filter(\r\n        (s) =>\r\n          (s.position === 'top' || s.position === 'bottom') &&\r\n          s.opened &&\r\n          !this.sideBarSettingsList.find(\r\n            (ss) => ss.position === s.position && ss.mode === 'over'\r\n          )\r\n      );\r\n\r\n      setSpaceSidebar(openedSidebarsH, outOfScreenHeight);\r\n    }\r\n  }\r\n\r\n  private groupBy = (xs, key) => {\r\n    return xs.reduce((rv, x) => {\r\n      (rv[x[key]] = rv[x[key]] || []).push(x);\r\n      return rv;\r\n    }, {});\r\n  };\r\n\r\n  private sidebarSubscribe(sidebar: SidebarComponent): void {\r\n    sidebar.headerClicked.subscribe((e: SidebarComponent) => {\r\n      e.opened ? e.close() : e.open();\r\n    });\r\n\r\n    sidebar.headerTouchMoved.subscribe((e: SidebarMouseTouchEventArgs) => {\r\n      const isAllowResizable =\r\n        this._sidebars.filter(\r\n          (s) => s.position === e.sender.position && s.opened\r\n        ).length > 0;\r\n\r\n      if (this.sidebarResizable && isAllowResizable) {\r\n        const groupByPosition = this.groupBy(this._sidebars, 'position');\r\n\r\n        if (groupByPosition.hasOwnProperty('left')) {\r\n          groupByPosition['left'].reverse();\r\n        }\r\n\r\n        if (groupByPosition.hasOwnProperty('top')) {\r\n          groupByPosition['top'].reverse();\r\n        }\r\n\r\n        // move only first sidebar\r\n        if (e.sender === groupByPosition[e.sender.position][0]) {\r\n          if (!this._resizeSidebar) {\r\n            this._onSidebarResizeBegin(e.sender.position, {\r\n              clientX: e.originalEvent.touches[0].clientX,\r\n              clientY: e.originalEvent.touches[0].clientY,\r\n            } as MouseEvent);\r\n          } else {\r\n            this.onMouseMove({\r\n              clientX: e.originalEvent.touches[0].clientX,\r\n              clientY: e.originalEvent.touches[0].clientY,\r\n            } as MouseEvent);\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    sidebar.headerTouchEnded.subscribe((e: SidebarMouseTouchEventArgs) => {\r\n      if (this._resizeSidebar) {\r\n        this.onMouseUp();\r\n      } else {\r\n        e.sender.opened ? e.sender.close() : e.sender.open();\r\n      }\r\n    });\r\n\r\n    sidebar.openedChange.subscribe((e: SidebarOpenedEventArgs) => {\r\n      if (e.opened) {\r\n        this._sidebars\r\n          .filter(\r\n            (s) =>\r\n              s.opened && s !== e.sender && s.position === e.sender.position\r\n          )\r\n          .forEach((s) => s.close());\r\n      }\r\n      this.cdRef.markForCheck();\r\n\r\n      const root = document.documentElement;\r\n      const animationDuration = +getComputedStyle(root)\r\n        .getPropertyValue(`--ng-sidebar-accordion-animation-duration`)\r\n        .replace('s', '');\r\n\r\n      setTimeout(() => this.correctMaxSizeSidebars(), 1000 * animationDuration);\r\n\r\n      this.sidebarOpenedChange.emit(e.sender);\r\n    });\r\n  }\r\n\r\n  private sidebarUnsubscribe(): void {\r\n    this._sidebars.forEach((sidebar) => {\r\n      sidebar.headerClicked.unsubscribe();\r\n      sidebar.openedChange.unsubscribe();\r\n      sidebar.headerTouchMoved.unsubscribe();\r\n      sidebar.headerTouchEnded.unsubscribe();\r\n    });\r\n  }\r\n\r\n  private sidebarSettingsSubscribe() {\r\n    this.sideBarSettingsList.forEach((s) => {\r\n      s.modeChange.subscribe(() => {\r\n        this.cdRef.markForCheck();\r\n      });\r\n\r\n      s.positionChange.subscribe(() => {\r\n        this.cdRef.markForCheck();\r\n      });\r\n    });\r\n  }\r\n\r\n  private sidebarSettingsUnsubscribe() {\r\n    this.sideBarSettingsList.forEach((s) => {\r\n      s.modeChange.unsubscribe();\r\n      s.positionChange.unsubscribe();\r\n    });\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n} from '@angular/core';\r\nimport { SidebarAccordionComponent } from './sidebar-accordion/sidebar-accordion.component';\r\nimport { SidebarHeaderComponent } from './sidebar-header.component';\r\nimport { SidebarContentComponent } from './sidebar-content.component';\r\nimport { SidebarOpenedEventArgs } from './sidebar-opened.event-args';\r\nimport { SidebarMouseTouchEventArgs } from './sidebar-mouse-touch.event-args';\r\n\r\n@Component({\r\n  selector: 'ng-sidebar',\r\n  template: `\r\n    <ng-content select=\"ng-sidebar-header, [ng-sidebar-header]\"></ng-content>\r\n    <ng-content select=\"ng-sidebar-content, [ng-sidebar-content]\"></ng-content>\r\n  `,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SidebarComponent implements OnInit, OnDestroy {\r\n  @Input() @HostBinding('attr.position') position:\r\n    | 'left'\r\n    | 'right'\r\n    | 'top'\r\n    | 'bottom';\r\n  @Input() @HostBinding('class.ng-sidebar') classNameSidebar = true;\r\n  @Input() @HostBinding('class') className: string;\r\n  @Input() @HostBinding('style') style: CSSStyleDeclaration;\r\n\r\n  @Output() headerClicked = new EventEmitter<SidebarComponent>();\r\n  @Output() headerTouchMoved = new EventEmitter<SidebarMouseTouchEventArgs>();\r\n  @Output() headerTouchEnded = new EventEmitter<SidebarMouseTouchEventArgs>();\r\n  @Output() openedChange = new EventEmitter<SidebarOpenedEventArgs>();\r\n\r\n  @HostBinding('class.ng-sidebar_opened') classNameSidebarOpened = false;\r\n\r\n  private _headers: Array<SidebarHeaderComponent> = [];\r\n  private _contents: Array<SidebarContentComponent> = [];\r\n\r\n  constructor(@Optional() private _container: SidebarAccordionComponent) {\r\n    if (!this._container) {\r\n      throw new Error(\r\n        '<ng-sidebar-accordion> must be inside a <ng-sidebar-accordion></ng-sidebar-accordion>.'\r\n      );\r\n    }\r\n  }\r\n\r\n  @Input() pinned = false;\r\n\r\n  private _opened = false;\r\n\r\n  @Input() get opened(): boolean {\r\n    return this._opened;\r\n  }\r\n\r\n  set opened(value: boolean) {\r\n    if (this._opened !== value) {\r\n      this._opened = value;\r\n      this.classNameSidebarOpened = value;\r\n      this.openedChange.emit({ sender: this, opened: value });\r\n    }\r\n  }\r\n\r\n  get _headersLength() {\r\n    return this._headers.length;\r\n  }\r\n\r\n  get _contentsLength() {\r\n    return this._contents.length;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._container._addSidebar(this);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._container._removeSidebar(this);\r\n    this.unsubscribe();\r\n  }\r\n\r\n  _addHeader(header: SidebarHeaderComponent): void {\r\n    if (this._headersLength > 0) {\r\n      throw new Error('<ng-sidebar-header> must be only one.');\r\n    }\r\n\r\n    this._headers.push(header);\r\n    this.subscribe(header);\r\n  }\r\n\r\n  _removeHeader(header: SidebarHeaderComponent): void {\r\n    const index = this._headers.indexOf(header);\r\n    if (index !== -1) {\r\n      this._headers.splice(index, 1);\r\n    }\r\n  }\r\n\r\n  _addContent(content: SidebarContentComponent): void {\r\n    if (this._contentsLength > 0) {\r\n      throw new Error('<ng-sidebar-content> must be only one.');\r\n    }\r\n\r\n    this._contents.push(content);\r\n  }\r\n\r\n  _removeContent(content: SidebarContentComponent): void {\r\n    const index = this._contents.indexOf(content);\r\n    if (index !== -1) {\r\n      this._contents.splice(index, 1);\r\n    }\r\n  }\r\n\r\n  open(): void {\r\n    if (!this.pinned) {\r\n      this.opened = true;\r\n    }\r\n  }\r\n\r\n  close(): void {\r\n    if (!this.pinned) {\r\n      this.opened = false;\r\n    }\r\n  }\r\n\r\n  private subscribe(header: SidebarHeaderComponent): void {\r\n    header.clicked.subscribe(() => {\r\n      this.headerClicked.emit(this);\r\n    });\r\n\r\n    header.touchMoved.subscribe((e) => {\r\n      this.headerTouchMoved.emit({ sender: this, originalEvent: e });\r\n    });\r\n\r\n    header.touchEnded.subscribe((e) => {\r\n      this.headerTouchEnded.emit({ sender: this, originalEvent: e });\r\n    });\r\n  }\r\n\r\n  private unsubscribe(): void {\r\n    this._headers.forEach((header) => {\r\n      header.clicked.unsubscribe();\r\n      header.touchMoved.unsubscribe();\r\n      header.touchEnded.unsubscribe();\r\n    });\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  HostBinding,\r\n  HostListener,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n} from '@angular/core';\r\nimport { SidebarComponent } from './sidebar.component';\r\n\r\n@Component({\r\n  selector: 'ng-sidebar-header',\r\n  template: ` <div class=\"ng-sidebar-header__content\">\r\n    <div class=\"ng-sidebar-header__wrapper\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div>`,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SidebarHeaderComponent implements OnInit, OnDestroy {\r\n  @HostBinding('class.ng-sidebar-header') classNameSidebarHeader = true;\r\n  @Input() @HostBinding('class') className: string;\r\n\r\n  @Output() clicked = new EventEmitter<MouseEvent>();\r\n  @Output() touchMoved = new EventEmitter<TouchEvent>();\r\n  @Output() touchEnded = new EventEmitter<TouchEvent>();\r\n\r\n  constructor(@Optional() private _container: SidebarComponent) {\r\n    if (!this._container) {\r\n      throw new Error(\r\n        '<ng-sidebar-header> must be inside a <ng-sidebar></ng-sidebar>.'\r\n      );\r\n    }\r\n  }\r\n\r\n  @HostListener('click', ['$event']) onHeaderClick(e) {\r\n    this.clicked.emit(e);\r\n  }\r\n\r\n  @HostListener('touchmove', ['$event']) onHeaderTouchMove(e: TouchEvent) {\r\n    e.preventDefault();\r\n    this.touchMoved.emit(e);\r\n  }\r\n\r\n  @HostListener('touchend', ['$event']) onHeaderTouchEnd(e: TouchEvent) {\r\n    e.preventDefault();\r\n    this.touchEnded.emit(e);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._container._addHeader(this);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._container._removeHeader(this);\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n} from '@angular/core';\r\nimport { SidebarComponent } from './sidebar.component';\r\n\r\n@Component({\r\n  selector: 'ng-sidebar-content',\r\n  template: ` <ng-content></ng-content>`,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SidebarContentComponent implements OnInit, OnDestroy {\r\n  @HostBinding('class.ng-sidebar-content') classNameSidebarContent = true;\r\n  @Input() @HostBinding('class') className: string;\r\n\r\n  constructor(\r\n    @Optional() private _container: SidebarComponent,\r\n    public element: ElementRef\r\n  ) {\r\n    if (!this._container) {\r\n      throw new Error(\r\n        '<ng-sidebar-content> must be inside a <ng-sidebar></ng-sidebar>.'\r\n      );\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._container._addContent(this);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._container._removeContent(this);\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  HostBinding,\r\n  Input,\r\n  Optional,\r\n} from '@angular/core';\r\nimport { SidebarAccordionComponent } from './sidebar-accordion/sidebar-accordion.component';\r\n\r\n@Component({\r\n  selector: 'ng-sidebar-accordion-content',\r\n  template: ` <ng-content></ng-content>`,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SidebarAccordionContentComponent {\r\n  @HostBinding('class.ng-sidebar-accordion-content')\r\n  classNameSidebarAccordionContent = true;\r\n  @Input() @HostBinding('class') className: string;\r\n\r\n  constructor(@Optional() private _container: SidebarAccordionComponent) {\r\n    if (!this._container) {\r\n      throw new Error(\r\n        '<ng-sidebar-accordion-content> must be inside a <ng-sidebar-accordion></ng-sidebar-accordion>.'\r\n      );\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SidebarComponent } from './sidebar.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SidebarHeaderComponent } from './sidebar-header.component';\r\nimport { SidebarAccordionComponent } from './sidebar-accordion/sidebar-accordion.component';\r\nimport { SidebarContentComponent } from './sidebar-content.component';\r\nimport { SidebarAccordionContentComponent } from './sidebar-accordion-content.component';\r\nimport { SidebarSettingsComponent } from './sidebar-settings.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [\r\n    SidebarHeaderComponent,\r\n    SidebarContentComponent,\r\n    SidebarComponent,\r\n    SidebarAccordionContentComponent,\r\n    SidebarAccordionComponent,\r\n    SidebarSettingsComponent,\r\n  ],\r\n  exports: [\r\n    SidebarHeaderComponent,\r\n    SidebarContentComponent,\r\n    SidebarComponent,\r\n    SidebarAccordionContentComponent,\r\n    SidebarAccordionComponent,\r\n    SidebarSettingsComponent,\r\n  ],\r\n})\r\nexport class SidebarAccordionModule {}\r\n","import { SidebarComponent } from './sidebar.component';\r\n\r\nexport class SidebarMouseTouchEventArgs {\r\n  sender: SidebarComponent;\r\n  originalEvent: TouchEvent;\r\n}\r\n","/*\r\n * Public API Surface of ng-sidebar-accordion\r\n */\r\nexport * from './lib/sidebar-accordion.module';\r\nexport * from './lib/sidebar-accordion/sidebar-accordion.component';\r\nexport * from './lib/sidebar-accordion-content.component';\r\nexport * from './lib/sidebar-header.component';\r\nexport * from './lib/sidebar-content.component';\r\nexport * from './lib/sidebar.component';\r\nexport * from './lib/sidebar-settings.component';\r\nexport * from './lib/sidebar-mouse-touch.event-args';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}