{"version":3,"file":"ng-util-directive.mjs","sources":["../../../projects/ng-util-directive/src/lib/skeleton/ng-skeleton.service.ts","../../../projects/ng-util-directive/src/lib/skeleton/ng-skeleton.interface.ts","../../../projects/ng-util-directive/src/lib/skeleton/loaders/shiny-loader.component.ts","../../../projects/ng-util-directive/src/lib/skeleton/ng-skeleton.component.ts","../../../projects/ng-util-directive/src/lib/skeleton/ng-skeleton.directive.ts","../../../projects/ng-util-directive/src/lib/skeleton/ng-skeleton.module.ts","../../../projects/ng-util-directive/src/lib/resize/ng-container-resize.directive.ts","../../../projects/ng-util-directive/src/lib/resize/ng-container-resize.module.ts","../../../projects/ng-util-directive/src/lib/intersection/ng-container-intersection.directive.ts","../../../projects/ng-util-directive/src/lib/intersection/ng-container-intersection.module.ts","../../../projects/ng-util-directive/src/lib/draggable/ng-draggable.directive.ts","../../../projects/ng-util-directive/src/lib/draggable/ng-draggable.module.ts","../../../projects/ng-util-directive/src/lib/click-outside/ng-click-outside.directive.ts","../../../projects/ng-util-directive/src/lib/click-outside/ng-click-outside.module.ts","../../../projects/ng-util-directive/src/public-api.ts","../../../projects/ng-util-directive/src/ng-util-directive.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class SkeletonService {\n  dataObservable$ = new BehaviorSubject<unknown>({\n    shape: 'fullSize',\n  });\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\n\nimport { SkeletonService } from './ng-skeleton.service';\nimport { Subscription } from 'rxjs';\n\n@Directive()\nexport abstract class NgSkeletonLoader implements OnDestroy, OnInit {\n  abstract handleDataChange(data: unknown): void;\n\n  constructor(private skeletonService: SkeletonService) {}\n\n  ngOnInit(): void {\n    this.subscribeToDataChange();\n  }\n\n  serviceSubscription?: Subscription;\n  subscribeToDataChange(): void {\n    this.serviceSubscription = this.skeletonService.dataObservable$.subscribe(\n      (data) => {\n        this.handleDataChange(data);\n      }\n    );\n  }\n\n  ngOnDestroy(): void {\n    if (this.serviceSubscription) {\n      this.serviceSubscription.unsubscribe();\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  OnInit,\n} from '@angular/core';\nimport { NgSkeletonLoader } from '../ng-skeleton.interface';\nimport { SkeletonService } from '../ng-skeleton.service';\nimport { ShinyLoaderData } from './shiny-loader.model';\n\n@Component({\n  selector: 'shiny-loader',\n  template: `\n    <div\n      class=\"shiny-skeleton\"\n      [ngStyle]=\"loaderStyle\"\n      [style]=\"'--shiny-bg-side: ' + color1 + ';--shiny-bg-center: ' + color2\"\n    ></div>\n  `,\n  styles: [\n    `\n      :host {\n        display: block;\n        height: 100%;\n        width: 100%;\n      }\n\n      .shiny-skeleton {\n        --shiny-bg-side: #ececea;\n        --shiny-bg-center: lightgrey;\n        width: 100%;\n        height: 100%;\n        animation-duration: 1000ms;\n        animation-fill-mode: forwards;\n        animation-iteration-count: infinite;\n        animation-name: loadingAnimation;\n        animation-timing-function: cubic-bezier(0.35, 0, 0.5, 1);\n        background-image: linear-gradient(\n          to right,\n          var(--shiny-bg-side) 8%,\n          var(--shiny-bg-center) 18%,\n          var(--shiny-bg-side) 33%\n        );\n        background-size: 200%;\n      }\n\n      @keyframes loadingAnimation {\n        0% {\n          background-position: 100% 0;\n        }\n        100% {\n          background-position: -100% 0;\n        }\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgSkeletonShinyLoaderComponent\n  extends NgSkeletonLoader\n  implements OnInit\n{\n  constructor(\n    skeletonService: SkeletonService,\n    private cdr: ChangeDetectorRef\n  ) {\n    super(skeletonService);\n  }\n\n  loaderStyle: Record<string, string> = {};\n  color1: string = '#ececea';\n  color2: string = 'lightgrey';\n  override handleDataChange(data: ShinyLoaderData): void {\n    const shape = data?.shape;\n\n    switch (shape) {\n      case 'circle': {\n        const size = data?.size || '1rem';\n        this.loaderStyle = {\n          borderRadius: '50%',\n          width: size,\n          height: size,\n        };\n        break;\n      }\n      case 'square': {\n        const size = data?.size || '1rem';\n        this.loaderStyle = {\n          borderRadius: data?.borderRadius || '0.25rem',\n          width: size,\n          height: size,\n        };\n        break;\n      }\n\n      case 'rectangle': {\n        const width = data?.width || '1rem';\n        const height = data?.height || '1rem';\n        this.loaderStyle = {\n          borderRadius: data?.borderRadius || '0.25rem',\n          width,\n          height,\n        };\n        break;\n      }\n\n      default: {\n        this.loaderStyle = {\n          borderRadius: data?.borderRadius || '0.25rem',\n        };\n        break;\n      }\n    }\n\n    if (data && data.loaderColor1 && data.loaderColor2) {\n      this.color1 = data.loaderColor1;\n      this.color2 = data.loaderColor2;\n    }\n\n    this.cdr.detectChanges();\n  }\n}\nexport * from './shiny-loader.model';\n","import { Component, Input, SimpleChanges, Type } from '@angular/core';\n\nimport { NgSkeletonShinyLoaderComponent } from './loaders/shiny-loader.component';\nimport { SkeletonService } from './ng-skeleton.service';\n\n@Component({\n  selector: 'ng-skeleton',\n  providers: [SkeletonService],\n  template: `\n    <ng-content></ng-content>\n    <div class=\"ng-skeleton-loader\" *ngIf=\"loading\">\n      <ng-container *ngComponentOutlet=\"loaderComponent\"></ng-container>\n    </div>\n  `,\n  styles: [\n    `\n      :host {\n        display: block;\n        position: relative;\n        width: max-content;\n      }\n      .ng-skeleton-loader {\n        position: absolute;\n        top: 0;\n        left: 0;\n        overflow: hidden;\n        width: 100%;\n        height: 100%;\n        z-index: 1;\n      }\n      .ng-skeleton-content {\n        display: contents;\n      }\n    `,\n  ],\n})\nexport class NgSkeletonComponent {\n  /**\n   * If `true` the ng content will be hidden\n   */\n  @Input() loading = false;\n\n  /**\n   * This can be used to show a custom component as a loader, by default the inbuilt `NgSkeletonDefaultLoaderComponent` component is rendered\n   */\n  @Input() loaderComponent: Type<unknown> = NgSkeletonShinyLoaderComponent;\n\n  /**\n   * This prop will get the data from `ngSkeletonData` attribute\n   */\n  @Input() data?: unknown;\n\n  constructor(private skeletonService: SkeletonService) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['data']) {\n      this.skeletonService.dataObservable$.next(this.data);\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  ComponentRef,\n  Directive,\n  DoCheck,\n  EmbeddedViewRef,\n  Inject,\n  InjectionToken,\n  Input,\n  OnChanges,\n  Optional,\n  SimpleChanges,\n  TemplateRef,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\n\nimport { NgSkeletonComponent } from './ng-skeleton.component';\nimport {\n  NgSkeletonShinyLoaderComponent,\n  ShinyLoaderData,\n} from './loaders/shiny-loader.component';\n\nexport const GLOBAL_SKELETON_LOADER_COMPONENT = new InjectionToken<\n  Type<unknown>\n>('SKELETON_LOADER_COMPONENT');\n\n@Directive({\n  selector: '[skeletonLoader]',\n})\nexport class NgSkeletonDirective implements AfterViewInit, OnChanges, DoCheck {\n  /**\n   * If `true` this shows skeleton loader in place of dom element.\n   * It will take the height and width of the dom element\n   */\n  @Input() skeletonLoader = false;\n\n  /**\n   * This can be used to show a custom component as a loader, by default the inbuilt `NgSkeletonDefaultLoaderComponent` component is rendered\n   */\n  @Input() skeletonLoaderComponent: Type<unknown> = NgSkeletonShinyLoaderComponent;\n\n  /**\n   * This can be used to pass any object data to the skeleton component\n   * `ShinyLoaderData` - default type\n   */\n  @Input() skeletonLoaderData: ShinyLoaderData | unknown;\n\n  /**\n   * If `true` the dom element will be hidden with visibility: hidden\n   */\n  @Input() skeletonLoaderHideOnLoading = true;\n\n  constructor(\n    private tpl: TemplateRef<unknown>,\n    private vcr: ViewContainerRef,\n    @Optional()\n    @Inject(GLOBAL_SKELETON_LOADER_COMPONENT)\n    globalLoaderComponent: Type<unknown>\n  ) {\n    if (globalLoaderComponent) {\n      this.skeletonLoaderComponent = globalLoaderComponent;\n    }\n  }\n\n  ngContentNodes?: any[];\n  componentRef!: ComponentRef<NgSkeletonComponent>;\n  templateEmbeddedView?: EmbeddedViewRef<any>;\n  ngAfterViewInit(): void {\n    this.templateEmbeddedView = this.tpl.createEmbeddedView({});\n    this.ngContentNodes = this.templateEmbeddedView.rootNodes;\n    this.componentRef = this.vcr.createComponent(NgSkeletonComponent, {\n      projectableNodes: [this.ngContentNodes],\n    });\n\n    this.updateInputs();\n    this.handleNodeVisibility();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.updateInputs();\n    if (changes['skeletonLoader']) {\n      this.handleNodeVisibility();\n    }\n  }\n\n  ngDoCheck(): void {\n    this.templateEmbeddedView?.detectChanges?.();\n  }\n\n  handleNodeVisibility(): void {\n    if (this.skeletonLoaderHideOnLoading && this.ngContentNodes) {\n      this.ngContentNodes.forEach((node: HTMLElement) => {\n        node.style.visibility = this.skeletonLoader ? 'hidden' : 'visible';\n      });\n    }\n  }\n\n  updateInputs(): void {\n    if (this.componentRef) {\n      this.componentRef.setInput('loading', this.skeletonLoader);\n      this.componentRef.setInput('loaderComponent', this.skeletonLoaderComponent);\n      this.componentRef.setInput('data', this.skeletonLoaderData);\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgSkeletonComponent } from './ng-skeleton.component';\nimport { NgSkeletonDirective } from './ng-skeleton.directive';\nimport { NgSkeletonShinyLoaderComponent } from './loaders/shiny-loader.component';\n\n@NgModule({\n  declarations: [\n    NgSkeletonDirective,\n    NgSkeletonShinyLoaderComponent,\n    NgSkeletonComponent,\n  ],\n  imports: [CommonModule],\n  exports: [\n    NgSkeletonDirective,\n    NgSkeletonShinyLoaderComponent,\n    NgSkeletonComponent,\n  ],\n})\nexport class NgSkeletonModule {}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  OnDestroy,\n  Output,\n} from '@angular/core';\n\n@Directive({\n  selector: '[containerResize]',\n})\nexport class NgContainerResizeDirective implements AfterViewInit, OnDestroy {\n  /**\n   * An output event which emits `ResizeObserverEntry` for the the dom element on which this directive is used.\n   * This directive uses `ResizeObserver` internally and disconnects the observer when view is destroyed\n   */\n  @Output() containerResize = new EventEmitter<ResizeObserverEntry>();\n\n  constructor(private el: ElementRef) {}\n\n  private resObsRef?: ResizeObserver;\n  ngAfterViewInit(): void {\n    if ('ResizeObserver' in window) {\n      this.resObsRef = new ResizeObserver(([entry]) => {\n        this.containerResize.emit(entry);\n      });\n      this.resObsRef.observe(this.el.nativeElement);\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.resObsRef) {\n      this.resObsRef.disconnect();\n    }\n  }\n}\n","import { NgContainerResizeDirective } from './ng-container-resize.directive';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n  declarations: [NgContainerResizeDirective],\n  imports: [],\n  exports: [NgContainerResizeDirective],\n})\nexport class NgContainerResizeModule {}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n} from '@angular/core';\n\n@Directive({\n  selector: '[containerIntersection]',\n})\nexport class NgContainerIntersectionDirective\n  implements AfterViewInit, OnDestroy, OnChanges\n{\n  /**\n   * Options for IntersectionObserver\n   * `{ root?: Element | Document | null; rootMargin?: string; threshold?: number | number[]; }`\n   */\n  @Input() containerIntersectionOptions?: IntersectionObserverInit;\n  /**\n   * An output event which emits `IntersectionObserverEntry` for the the dom element on which this directive is used.\n   * This directive uses `IntersectionObserver` internally and disconnects the observer when view is destroyed\n   */\n  @Output() containerIntersection =\n    new EventEmitter<IntersectionObserverEntry>();\n\n  constructor(private el: ElementRef) {}\n\n  private intersecObsRef?: IntersectionObserver;\n  ngAfterViewInit(): void {\n    this.handleIntersectionObserver();\n  }\n\n  ngOnChanges(): void {\n    this.handleIntersectionObserver();\n  }\n\n  handleIntersectionObserver(): void {\n    this.disconnectIntersectionObserver();\n\n    if ('IntersectionObserver' in window) {\n      this.intersecObsRef = new IntersectionObserver(([entry]) => {\n        this.containerIntersection.emit(entry);\n      }, this.containerIntersectionOptions);\n      this.intersecObsRef.observe(this.el.nativeElement);\n    }\n  }\n\n  disconnectIntersectionObserver(): void {\n    if (this.intersecObsRef) {\n      this.intersecObsRef.disconnect();\n      this.intersecObsRef = undefined;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.disconnectIntersectionObserver();\n  }\n}\n","import { NgContainerIntersectionDirective } from './ng-container-intersection.directive';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n  declarations: [NgContainerIntersectionDirective],\n  imports: [],\n  exports: [NgContainerIntersectionDirective],\n})\nexport class NgContainerIntersectionModule {}\n","import {\n  Directive,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  Renderer2,\n} from '@angular/core';\n\n@Directive({\n  selector: '[draggable]',\n})\nexport class NgDraggableDirective implements OnDestroy {\n  /**\n   * When `true` the draggable element will move to either right or left of the screen after mouseleave event\n   */\n  @Input() draggableSticky = true;\n\n  /**\n   * A css id selector to which the host element will be appended when dragging starts\n   */\n  @Input() draggableTeleportTo?: string;\n\n  /**\n   * Can be used to change the sticky transition, default `left 0.3s ease`\n   */\n  @Input() draggableStickyTransition = 'left 0.3s ease';\n\n  /**\n   * You can add a margin to the sticky positions when the host sticks to left or right of screen, default - `0px`\n   */\n  @Input() draggableStickyMargins = '0px';\n\n  @HostBinding('style.cursor') pointer = 'move';\n  @HostBinding('style.--webkit-user-drag') userDrag = 'none';\n\n  @HostBinding('style.transition') transition?: string;\n\n  @HostBinding('style.touch-action')\n  touchAction?: string;\n  @HostBinding('style.user-select') userSelect?: string;\n  @HostBinding('style.position') position?: string;\n  @HostBinding('style.top') top?: string;\n  @HostBinding('style.left') left?: string;\n\n  private dragging = false;\n  private initialOffsetX = 0;\n  private initialOffsetY = 0;\n  @HostListener('pointerdown', ['$event']) handlePointDown(\n    event: PointerEvent\n  ): void {\n    this.dragging = true;\n    this.initialOffsetX = event.offsetX;\n    this.initialOffsetY = event.offsetY;\n    this.transition = undefined;\n    event.stopPropagation();\n    event.preventDefault();\n    this.registerMouseMove();\n  }\n\n  @HostListener('pointerup', ['$event']) handlePointUp(\n    event: PointerEvent\n  ): void {\n    this.dragging = false;\n    this.touchAction = undefined;\n    this.userSelect = undefined;\n    this.transition = this.draggableStickyTransition || 'left 0.3s ease';\n    this.unregisterMouseMove();\n\n    if (!this.draggableSticky) {\n      return;\n    }\n\n    const item = event.target as HTMLElement;\n    const clientRect = item?.getBoundingClientRect?.();\n\n    if (clientRect) {\n      const itemMidPoint = clientRect.left + clientRect.width / 2;\n\n      const windowMidpoint = window.innerWidth / 2;\n\n      const direction = windowMidpoint < itemMidPoint ? 'right' : 'left';\n\n      if (direction === 'right') {\n        this.left = `calc(${window.innerWidth - clientRect.width}px - ${\n          this.draggableStickyMargins || '0px'\n        })`;\n      } else {\n        this.left = this.draggableStickyMargins || '0px';\n      }\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n\n  constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n  private draggingStarted = false;\n  private teleportElement?: HTMLElement | null;\n  private dispose?: () => void;\n  handleTeleport(): void {\n    if (\n      !this.draggingStarted &&\n      this.draggableTeleportTo &&\n      this.el.nativeElement\n    ) {\n      this.teleportElement = document.querySelector(\n        `#${this.draggableTeleportTo}`\n      );\n\n      if (!this.teleportElement) {\n        this.teleportElement = document.createElement('div');\n\n        this.teleportElement.setAttribute('id', this.draggableTeleportTo);\n\n        document.body.appendChild(this.teleportElement);\n      }\n\n      this.teleportElement.appendChild(this.el.nativeElement);\n\n      this.draggingStarted = true;\n    }\n  }\n\n  registerMouseMove(): void {\n    this.unregisterMouseMove();\n    this.dispose = this.renderer.listen(\n      document,\n      'pointermove',\n      (event: PointerEvent) => {\n        if (this.dragging) {\n          this.handleTeleport();\n\n          this.touchAction = 'none';\n          this.userSelect = 'none';\n          this.position = 'fixed';\n\n          const left = event.clientX - this.initialOffsetX;\n          const top = event.clientY - this.initialOffsetY;\n\n          this.top = `${top}px`;\n          this.left = `${left}px`;\n          event.stopPropagation();\n          event.preventDefault();\n        }\n      }\n    );\n  }\n\n  unregisterMouseMove(): void {\n    if (this.dispose) {\n      this.dispose();\n      this.dispose = undefined;\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.teleportElement && this.el.nativeElement) {\n      this.el.nativeElement.remove();\n    }\n    this.unregisterMouseMove();\n  }\n}\n","import { NgDraggableDirective } from './ng-draggable.directive';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n  declarations: [NgDraggableDirective],\n  imports: [],\n  exports: [NgDraggableDirective],\n})\nexport class NgDraggableModule {}\n","import {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Output,\n} from '@angular/core';\n\n@Directive({\n  selector: '[clickOutside]',\n})\nexport class NgClickOutsideDirective {\n  /**\n   * An output event which emits click event when clicked outside of the host element\n   */\n  @Output() clickOutside = new EventEmitter<PointerEvent>();\n\n  constructor(private el: ElementRef) {}\n\n  @HostListener('document:click', ['$event']) handleClick(\n    event: PointerEvent\n  ): void {\n    if (\n      this.el.nativeElement &&\n      !(this.el.nativeElement as HTMLElement).contains(\n        event.target as HTMLElement\n      )\n    ) {\n      this.clickOutside.emit(event);\n    }\n  }\n}\n","import { NgClickOutsideDirective } from './ng-click-outside.directive';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n  declarations: [NgClickOutsideDirective],\n  imports: [],\n  exports: [NgClickOutsideDirective],\n})\nexport class NgClickOutsideModule {}\n","/*\n * Public API Surface of ng-util-directive\n */\n\n// Skeleton Directive\nexport * from './lib/skeleton/ng-skeleton.module';\nexport * from './lib/skeleton/ng-skeleton.directive';\nexport * from './lib/skeleton/loaders/shiny-loader.component';\nexport * from './lib/skeleton/ng-skeleton.component';\nexport * from './lib/skeleton/ng-skeleton.interface';\n\n// ResizeObserver directive\nexport * from './lib/resize/ng-container-resize.module';\nexport * from './lib/resize/ng-container-resize.directive';\n\n// IntersectionObserver directive\nexport * from './lib/intersection/ng-container-intersection.module';\nexport * from './lib/intersection/ng-container-intersection.directive';\n\n// Draggable directive\nexport * from './lib/draggable/ng-draggable.module';\nexport * from './lib/draggable/ng-draggable.directive';\n\n// ClickOutside directive\nexport * from './lib/click-outside/ng-click-outside.module';\nexport * from './lib/click-outside/ng-click-outside.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SkeletonService"],"mappings":"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"}