{"version":3,"file":"ngx-aside-ease.mjs","sources":["../../../projects/ngx-aside-ease/src/lib/internal-aside.service.ts","../../../projects/ngx-aside-ease/src/lib/aside.service.ts","../../../projects/ngx-aside-ease/src/lib/aside/item.directive.ts","../../../projects/ngx-aside-ease/src/lib/aside/aside.component.ts","../../../projects/ngx-aside-ease/src/lib/aside/aside.component.html","../../../projects/ngx-aside-ease/src/lib/aside-container/aside-container.component.ts","../../../projects/ngx-aside-ease/src/lib/aside/ngx-title.directive.ts","../../../projects/ngx-aside-ease/src/lib/aside.module.ts","../../../projects/ngx-aside-ease/src/public-api.ts","../../../projects/ngx-aside-ease/src/ngx-aside-ease.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { AsideContainerComponent } from '../public-api';\r\nimport { Subject } from 'rxjs';\r\nimport { Item } from './aside/interface';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class InternalAsideService {\r\n  asideContainer!: AsideContainerComponent;\r\n  internalOnSelectionChange = new Subject<Item>();\r\n\r\n  constructor() {}\r\n\r\n  addInstance(instance: AsideContainerComponent) {\r\n    this.asideContainer = instance;\r\n  }\r\n\r\n  toggleVisibility() {\r\n    const aside = this.asideContainer.aside;\r\n\r\n    if (aside.isResponsiveMode) {\r\n      aside.setAsideFullWidth();\r\n    } else {\r\n      aside.onCollapseBtnClick();\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { InternalAsideService } from './internal-aside.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class AsideService {\r\n  onSelectionChange = new Subject<HTMLElement>();\r\n\r\n  constructor(private internalAsideService: InternalAsideService) {}\r\n\r\n  /**\r\n   * Toggle the panel visibility.\r\n   * The panel will either open partially or totally, depending on the responsive breakpoint set.\r\n   */\r\n  toggleVisibility() {\r\n    this.internalAsideService.toggleVisibility();\r\n  }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\nimport { InternalAsideService } from '../internal-aside.service';\r\nimport { AsideService } from '../aside.service';\r\n\r\n@Directive({\r\n  selector: '[ngxItem]',\r\n  standalone: true,\r\n  host: { class: 'ngx-item' },\r\n})\r\nexport class AsideItemDirective {\r\n  @Input() defaultActive = false;\r\n  @Input() disable = false;\r\n\r\n  constructor(\r\n    private element: ElementRef<HTMLElement>,\r\n    private internalAsideService: InternalAsideService,\r\n    private asideService: AsideService\r\n  ) {}\r\n\r\n  get native() {\r\n    return this.element.nativeElement;\r\n  }\r\n\r\n  @HostListener('click')\r\n  onItemClick() {\r\n    if (this.disable) return;\r\n\r\n    this.internalAsideService.internalOnSelectionChange.next({\r\n      element: this.native,\r\n      animate: true,\r\n    });\r\n    this.asideService.onSelectionChange.next(this.native);\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  QueryList,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { InternalAsideService } from '../internal-aside.service';\r\nimport { Subject, debounceTime, fromEvent, takeUntil } from 'rxjs';\r\nimport { AsideItemDirective } from './item.directive';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AsideService } from '../aside.service';\r\n\r\n@Component({\r\n  selector: 'ngx-aside',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: 'aside.component.html',\r\n  styleUrls: ['aside.component.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AsideComponent implements OnInit, AfterViewInit, OnDestroy {\r\n  @Input() minVisible = 30;\r\n  @Input() minWidth = 250;\r\n  @Input() width = 300;\r\n  @Input() maxWidth = '50';\r\n  @Input() responsiveBreakpoint = 800;\r\n  @Input() displayCollapsableIcon = true;\r\n  @Input() asideAnimationTiming = '0.3s ease-out';\r\n  @Input() markerAnimationTiming = '0.3s ease-out';\r\n  @Input() enableResize = true;\r\n  @Input() resizerColor = '#0095be';\r\n  @Input() enableMarker = true;\r\n  @Input() storePreference = true;\r\n  @Input() updateUrl = true;\r\n  @Input() paramUrlName = 'name';\r\n\r\n  userWidth = 0;\r\n  showCollapsableIcon = false;\r\n  asideIsOpen = true;\r\n  responsiveMode = false;\r\n  asideContentTop = 0;\r\n  destroy$ = new Subject<void>();\r\n  asideFullWidthResponsive = false;\r\n  keepUserNavigationChoice = false;\r\n  reverse = false;\r\n  timeoutID!: number;\r\n\r\n  @ViewChild('asideWrapper') asideWrapper!: ElementRef<HTMLDivElement>;\r\n  @ViewChild('asideContent') asideContent!: ElementRef<HTMLDivElement>;\r\n  @ViewChild('resizer') resizer!: ElementRef<HTMLSpanElement>;\r\n  @ViewChild('asideMarker') asideMarker!: ElementRef<HTMLSpanElement>;\r\n  @ContentChildren(AsideItemDirective)\r\n  items!: QueryList<AsideItemDirective>;\r\n\r\n  constructor(\r\n    private element: ElementRef<HTMLDivElement>,\r\n    private internalAsideService: InternalAsideService,\r\n    private asideService: AsideService,\r\n    private router: Router,\r\n    private route: ActivatedRoute,\r\n    private cd: ChangeDetectorRef\r\n  ) {}\r\n\r\n  get native() {\r\n    return this.element.nativeElement;\r\n  }\r\n\r\n  get asideNative() {\r\n    return this.asideWrapper.nativeElement;\r\n  }\r\n\r\n  get resizerNative() {\r\n    return this.resizer.nativeElement;\r\n  }\r\n\r\n  get isResponsiveMode() {\r\n    return this.responsiveMode;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.internalAsideService.internalOnSelectionChange\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((item) => {\r\n        const { element, animate } = item;\r\n        this.positionMarker(element, animate);\r\n        this.updateUrlTabs(element.innerText.toLowerCase());\r\n        this.addClassActiveToElement(element);\r\n      });\r\n\r\n    fromEvent(window, 'resize')\r\n      .pipe(takeUntil(this.destroy$), debounceTime(300))\r\n      .subscribe(() => {\r\n        this.applyResponsive();\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Retrieve the previous stored preference or take the defined width.\r\n   * Initialise CSS variables.\r\n   */\r\n  ngAfterViewInit() {\r\n    this.userWidth = this.width;\r\n    if (this.storePreference) {\r\n      this.userWidth =\r\n        parseFloat(localStorage.getItem('user-width') || '') || this.width;\r\n    }\r\n\r\n    this.updateMinWidthPercentDiff();\r\n\r\n    this.native.style.setProperty('--min-width', `${this.minWidth}px`);\r\n    this.native.style.setProperty(\r\n      '--min-width-visible',\r\n      `${this.minVisible}px`\r\n    );\r\n    this.native.style.setProperty('--width', `${this.userWidth}px`);\r\n    this.native.style.setProperty('--max-width', `${this.maxWidth}vw`);\r\n\r\n    this.applyResponsive(false);\r\n    this.activateParamsUrl();\r\n    this.selectDefaultItem();\r\n\r\n    if (this.enableResize) this.resize();\r\n  }\r\n\r\n  /**\r\n   * Navigation by URL.\r\n   * Not through the Angular API for synchronous reason. Give priority to the user choice over the default active item.\r\n   * Apply 100 ms delay, a custom font can be not fully loaded.\r\n   */\r\n  activateParamsUrl() {\r\n    if (!this.updateUrl) return;\r\n\r\n    const currentUrl = window.location.href;\r\n    const url = new URL(currentUrl);\r\n    const params = new URLSearchParams(url.search);\r\n    const name = params.get(this.paramUrlName)?.toLowerCase().trim() || '';\r\n    const active = this.findTabToActivate(name);\r\n\r\n    if (active instanceof HTMLElement) {\r\n      this.timeoutID = window.setTimeout(() => {\r\n        this.internalAsideService.internalOnSelectionChange.next({\r\n          element: active,\r\n          animate: false,\r\n        });\r\n      }, 100);\r\n\r\n      this.asideService.onSelectionChange.next(active);\r\n      this.keepUserNavigationChoice = true;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Navigation by URL.\r\n   * Find the corresponding item and activate it.\r\n   */\r\n  findTabToActivate(name: string) {\r\n    if (!name) return;\r\n    const cleanedName = name.toLowerCase().trim();\r\n\r\n    for (const item of this.items) {\r\n      if (item.disable) return null;\r\n\r\n      const text = item.native.innerText.toLowerCase();\r\n      if (cleanedName === text) {\r\n        return item.native;\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  updateUrlTabs(text: string) {\r\n    if (!this.updateUrl) return;\r\n\r\n    const newUrl = {\r\n      ...this.route.snapshot.queryParams,\r\n      [this.paramUrlName]: text,\r\n    };\r\n    this.router.navigate([], { relativeTo: this.route, queryParams: newUrl });\r\n  }\r\n\r\n  /**\r\n   * Set the default selected item.\r\n   * Apply an delay of 100 ms in case of loading a custom font.\r\n   * Give priority to user choice (URL) over the default item.\r\n   */\r\n  selectDefaultItem() {\r\n    if (this.keepUserNavigationChoice) return;\r\n\r\n    for (const item of this.items) {\r\n      if (item.defaultActive && !item.disable) {\r\n        this.timeoutID = window.setTimeout(() => {\r\n          this.internalAsideService.internalOnSelectionChange.next({\r\n            element: item.native,\r\n            animate: false,\r\n          });\r\n        }, 100);\r\n        this.asideService.onSelectionChange.next(item.native);\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Compute the min width in percent based in the provided value for the panel visibility reduction (non responsive mode).\r\n   */\r\n  updateMinWidthPercentDiff() {\r\n    const minWidthPercentDiff = (this.minVisible / this.userWidth - 1) * 100;\r\n\r\n    this.native.style.setProperty(\r\n      '--min-width-percent-diff',\r\n      `${minWidthPercentDiff}%`\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Responsive mode triggered on basis on the breakpoint set.\r\n   */\r\n  applyResponsive(animate = true) {\r\n    this.responsiveMode = window.innerWidth < this.responsiveBreakpoint;\r\n    this.applyAnimations(animate);\r\n\r\n    if (this.responsiveMode) {\r\n      this.native.style.setProperty('--width', '0');\r\n      this.native.style.setProperty('--min-width-visible', '0');\r\n    } else {\r\n      this.native.style.setProperty('--width', `${this.userWidth}px`);\r\n      this.native.style.setProperty(\r\n        '--min-width-visible',\r\n        `${this.minVisible}px`\r\n      );\r\n      this.asideFullWidthResponsive = false;\r\n    }\r\n\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  applyAnimations(animate = true) {\r\n    this.native.style.transition = animate\r\n      ? `width ${this.asideAnimationTiming}`\r\n      : 'none';\r\n    this.asideNative.style.transition = animate\r\n      ? this.asideAnimationTiming\r\n      : 'none';\r\n  }\r\n\r\n  /**\r\n   * Position the left marker correctly.\r\n   * Inverse it in reverse mode.\r\n   */\r\n  positionMarker(element: HTMLElement, animated = true) {\r\n    if (!this.enableMarker) return;\r\n\r\n    this.asideContentTop =\r\n      this.asideContent.nativeElement.getBoundingClientRect().top;\r\n\r\n    const { top } = element.getBoundingClientRect();\r\n    const topMarker = top - this.asideContentTop;\r\n    const leftMarker = this.reverse ? '100' : '0';\r\n\r\n    this.asideMarker.nativeElement.style.height = element.clientHeight + 'px';\r\n    this.asideMarker.nativeElement.style.transition = animated\r\n      ? `top ${this.markerAnimationTiming}`\r\n      : 'none';\r\n    this.asideMarker.nativeElement.style.top = `${topMarker}px`;\r\n    this.asideMarker.nativeElement.style.left = `${leftMarker}%`;\r\n  }\r\n\r\n  resize() {\r\n    this.resizerNative.style.setProperty('--resizer-color', this.resizerColor);\r\n    this.resizerNative.addEventListener(\r\n      'pointerdown',\r\n      this.onPointerDown.bind(this)\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Triggered on Mouse and Touch event.\r\n   * Prevent text selection, set the CSS variable for width adaptation, add other event listeners.\r\n   */\r\n  onPointerDown(e: PointerEvent) {\r\n    e.preventDefault();\r\n    this.asideNative.style.transition = 'none';\r\n    this.native.style.transition = 'none';\r\n\r\n    const onPointerMove = (e: PointerEvent) => {\r\n      const pageX = this.reverse ? window.innerWidth - e.pageX : e.pageX;\r\n      if (pageX < this.minWidth) return;\r\n      this.native.style.setProperty('--width', `${pageX}px`);\r\n    };\r\n\r\n    const onPointerUp = () => {\r\n      this.userWidth = parseFloat(\r\n        this.native.style.getPropertyValue('--width')\r\n      );\r\n      this.updateMinWidthPercentDiff();\r\n\r\n      if (this.storePreference) {\r\n        localStorage.setItem('user-width', `${this.userWidth}px`);\r\n      }\r\n      document.removeEventListener('pointermove', onPointerMove);\r\n    };\r\n\r\n    document.addEventListener('pointermove', onPointerMove);\r\n    document.addEventListener('pointerup', onPointerUp, {\r\n      once: true,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * In responsive mode, display/hide panel totally.\r\n   */\r\n  setAsideFullWidth() {\r\n    this.asideFullWidthResponsive = !this.asideFullWidthResponsive;\r\n    this.applyAnimations();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  onCollapseBtnClick() {\r\n    this.asideIsOpen = !this.asideIsOpen;\r\n    this.applyAnimations();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  /**\r\n   * Reverse the panel position.\r\n   * An overflow hidden has to be applied in reversed mode.\r\n   */\r\n  reverseDisplay() {\r\n    this.reverse = true;\r\n    document.body.style.overflow = 'hidden';\r\n  }\r\n\r\n  onMouseEnter() {\r\n    this.showCollapsableIcon = true;\r\n  }\r\n\r\n  onMouseLeave() {\r\n    this.showCollapsableIcon = false;\r\n  }\r\n\r\n  /**\r\n   * Add active class to the element so the user can overload it with custom styles.\r\n   */\r\n  addClassActiveToElement(element: HTMLElement) {\r\n    const prev = this.asideContent.nativeElement.querySelector('.active');\r\n    prev?.classList.remove('active');\r\n    element.classList.add('active');\r\n  }\r\n\r\n  @HostBinding('class.not-open')\r\n  get notOpened() {\r\n    return !this.asideIsOpen;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroy$.next();\r\n    clearTimeout(this.timeoutID);\r\n  }\r\n}\r\n","<aside>\r\n  <div\r\n    class=\"ngx-aside-wrapper\"\r\n    [ngClass]=\"{\r\n      'not-open': !asideIsOpen,\r\n      'responsive-mode': responsiveMode,\r\n      'full-width': asideFullWidthResponsive,\r\n      'reversed': reverse,\r\n    }\"\r\n    (mouseenter)=\"onMouseEnter()\"\r\n    (mouseleave)=\"onMouseLeave()\"\r\n    #asideWrapper\r\n  >\r\n    <div class=\"ngx-aside\">\r\n      <ng-content select=\"[ngxTitle]\"></ng-content>\r\n\r\n      <div class=\"ngx-aside-content\" #asideContent>\r\n        <ng-content select=\"[ngxItem]\"></ng-content>\r\n        @if (enableMarker) {\r\n        <span class=\"ngx-aside-marker\" #asideMarker></span>\r\n        }\r\n      </div>\r\n      <ng-content></ng-content>\r\n    </div>\r\n\r\n    @if (displayCollapsableIcon) {\r\n    <span\r\n      class=\"ngx-collapsable-icon\"\r\n      [ngClass]=\"{\r\n        show: showCollapsableIcon || !asideIsOpen,\r\n        'not-open': !asideIsOpen,\r\n        'responsive-mode': responsiveMode,\r\n        'reversed': reverse,\r\n      }\"\r\n      (click)=\"onCollapseBtnClick()\"\r\n    >\r\n      <svg\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n        viewBox=\"0 0 320 512\"\r\n        aria-label=\"arrow icon\"\r\n      >\r\n        <path\r\n          d=\"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\r\n        />\r\n      </svg>\r\n    </span>\r\n    } @if (enableResize) {\r\n    <div class=\"ngx-resizer-container\">\r\n      <span\r\n        class=\"ngx-resizer\"\r\n        [ngClass]=\"{\r\n          'full-width': asideFullWidthResponsive,\r\n          'responsive-mode': responsiveMode,\r\n          'reversed': reverse,\r\n        }\"\r\n        #resizer\r\n      ></span>\r\n    </div>\r\n    }\r\n  </div>\r\n</aside>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChild,\r\n  Input,\r\n} from '@angular/core';\r\nimport { AsideComponent } from '../aside/aside.component';\r\nimport { InternalAsideService } from '../internal-aside.service';\r\n\r\n@Component({\r\n  selector: 'ngx-aside-container',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [],\r\n  template: `<section\r\n    class=\"ngx-aside-content-container\"\r\n    [class.reversed]=\"reverse\"\r\n  >\r\n    <ng-content></ng-content>\r\n  </section>`,\r\n  styles: [\r\n    `\r\n      .ngx-aside-content-container {\r\n        display: flex;\r\n      }\r\n      .ngx-aside-content-container.reversed {\r\n        flex-direction: row-reverse;\r\n        overflow-x: hidden;\r\n      }\r\n    `,\r\n  ],\r\n})\r\nexport class AsideContainerComponent implements AfterViewInit {\r\n  @Input() reverse = false;\r\n  @ContentChild(AsideComponent) aside!: AsideComponent;\r\n\r\n  constructor(private asideService: InternalAsideService) {}\r\n\r\n  ngAfterViewInit() {\r\n    this.asideService.addInstance(this);\r\n    if (this.reverse) this.aside.reverseDisplay();\r\n  }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[ngxTitle]',\r\n  standalone: true,\r\n  host: { class: 'ngx-title' },\r\n})\r\nexport class AsideTitleDirective {\r\n  constructor() {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  AsideContainerComponent,\r\n  AsideComponent,\r\n  AsideItemDirective,\r\n} from '../public-api';\r\nimport { AsideTitleDirective } from './aside/ngx-title.directive';\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [\r\n    CommonModule,\r\n    AsideContainerComponent,\r\n    AsideComponent,\r\n    AsideItemDirective,\r\n    AsideTitleDirective,\r\n  ],\r\n  exports: [\r\n    AsideContainerComponent,\r\n    AsideComponent,\r\n    AsideItemDirective,\r\n    AsideTitleDirective,\r\n  ],\r\n})\r\nexport class AsideModule {}\r\n","/*\r\n * Public API Surface of ngx-aside-ease\r\n */\r\n\r\nexport * from './lib/aside.service';\r\nexport * from './lib/aside/aside.component';\r\nexport * from './lib/aside-container/aside-container.component';\r\nexport * from './lib/aside/item.directive';\r\nexport * from './lib/aside/ngx-title.directive';\r\nexport * from './lib/aside.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InternalAsideService","i2.AsideService"],"mappings":"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"}