{"version":3,"file":"cisstech-nge-directives.mjs","sources":["../../../projects/nge/directives/src/dynamic-component.directive.ts","../../../projects/nge/directives/src/long-press-detector.directive.ts","../../../projects/nge/directives/src/touch-detector.directive.ts","../../../projects/nge/directives/src/viewport-intersection.directive.ts","../../../projects/nge/directives/cisstech-nge-directives.ts"],"sourcesContent":["import { Directive, NgModule, Type, ViewContainerRef, effect, inject, input } from '@angular/core'\nimport { CompilerService } from '@cisstech/nge/services'\n\n@Directive({\n  selector: '[dynamic-component]',\n  standalone: true,\n})\nexport class DynamicComponentDirective {\n  private readonly compilerService = inject(CompilerService)\n  private readonly viewContainerRef = inject(ViewContainerRef)\n\n  readonly type = input.required<() => Type<any> | Promise<Type<any>>>({ alias: 'dynamic-component' })\n\n  readonly inputs = input<any>(undefined, { alias: 'dynamic-componentInputs' })\n\n  constructor() {\n    effect(() => {\n      const type = this.type()\n      const inputs = this.inputs()\n      this.render(type, inputs)\n    })\n  }\n\n  private async render(type: () => Type<any> | Promise<Type<any>>, inputs: any): Promise<void> {\n    this.viewContainerRef.clear()\n    await this.compilerService.render({\n      container: this.viewContainerRef,\n      type: await type(),\n      inputs,\n    })\n  }\n}\n\n/**\n * @deprecated in favor of standalone api, so please use direclty the directive as a standalone. Will be removed in/after v18\n */\n@NgModule({\n  imports: [DynamicComponentDirective],\n  exports: [DynamicComponentDirective],\n})\nexport class DynamicComponentDirectiveModule {}\n","import { Directive, HostListener, NgModule, output, input } from '@angular/core'\n\n@Directive({ selector: '[long-press-detector]', standalone: true })\nexport class LongPressDetectorDirective {\n  readonly longPressDuration = input(400)\n  readonly longPress = output<MouseEvent | TouchEvent>()\n  readonly longPressEnd = output<boolean>()\n\n  private timeout?: ReturnType<typeof setTimeout>\n  private pressing = false\n\n  @HostListener('mousedown', ['$event'])\n  @HostListener('touchstart', ['$event'])\n  onMouseDown(event: MouseEvent | TouchEvent) {\n    event.preventDefault()\n    this.pressing = false\n    this.timeout = setTimeout(() => {\n      this.longPress.emit(event)\n      this.pressing = true\n      event.preventDefault()\n      event.stopPropagation()\n    }, this.longPressDuration())\n  }\n\n  @HostListener('mouseup')\n  @HostListener('touchend')\n  onMouseUp() {\n    if (this.timeout) {\n      clearTimeout(this.timeout)\n    }\n\n    setTimeout(() => {\n      this.longPressEnd.emit(this.pressing)\n      this.pressing = false\n    })\n  }\n}\n\n/**\n * @deprecated in favor of standalone api, so please use direclty the directive as a standalone. Will be removed in/after v18\n */\n@NgModule({\n  imports: [LongPressDetectorDirective],\n  exports: [LongPressDetectorDirective],\n})\nexport class LongPressDetectorDirectiveModule {}\n","import { Directive, ElementRef, HostListener, NgModule, inject, output } from '@angular/core'\n\n@Directive({\n  selector: '[touch-detector]',\n  exportAs: 'touch-detector',\n  standalone: true,\n})\nexport class TouchDetectorDirective {\n  private readonly el = inject<ElementRef<HTMLElement>>(ElementRef)\n\n  private _hover = false\n\n  get hover(): boolean {\n    return this._hover\n  }\n\n  readonly onUpWhileHovering = output<void>()\n\n  @HostListener('document:mousemove', ['$event'])\n  @HostListener('document:touchmove', ['$event'])\n  protected touchmove(event: any) {\n    const mouseX = event.clientX || event.touches[0].clientX\n    const mouseY = event.clientY || event.touches[0].clientY\n    const rect = this.el.nativeElement.getBoundingClientRect()\n    const { x, y, width, height } = rect\n    const h = mouseX >= x && mouseX <= x + width\n    const v = mouseY >= y && mouseY <= y + height\n    this._hover = h && v\n  }\n\n  @HostListener('document:mouseup', [])\n  @HostListener('document:touchend', [])\n  protected touchup() {\n    if (this.hover) {\n      this.onUpWhileHovering.emit()\n    }\n  }\n}\n\n/**\n * @deprecated in favor of standalone api, so please use direclty the directive as a standalone. Will be removed in/after v18\n */\n@NgModule({\n  imports: [TouchDetectorDirective],\n  exports: [TouchDetectorDirective],\n})\nexport class TouchDetectorDirectiveModule {}\n","import { AfterViewInit, Directive, ElementRef, OnDestroy, booleanAttribute, inject, output, input } from '@angular/core'\n\n@Directive({\n  selector: '[viewportIntersection]',\n  standalone: true,\n})\nexport class ViewportIntersectionDirective implements AfterViewInit, OnDestroy {\n  private readonly element = inject<ElementRef<HTMLElement>>(ElementRef)\n\n  /**\n   * An optional reference to a container element with its own scrollable area. If not provided, the viewport is used as the default container.\n   */\n  readonly scrollContainer = input<HTMLElement | null>()\n\n  /**\n   * A single number or an array of numbers indicating at what percentage of the target's\n   * visibility the observer's callback should be executed.\n   * For example, a threshold of 1.0 means the callback will trigger when 100% of the target is visible within the observed area.\n   *\n   * Please refers to the official documentation of Intersection API for more informations.\n   */\n  readonly threshold = input<number | number[]>()\n\n  /**\n   * A margin around the root element.\n   * This margin works like the CSS margin property, setting how much of the root should be seen before the intersection is observed.\n   * It's specified in pixels or percentages.\n   *\n   * Please refers to the official documentation of Intersection API for more informations.\n   */\n  readonly rootMargin = input<string>()\n  readonly debug = input(false, { transform: booleanAttribute })\n\n  /**\n   * This event is emitted whenever the observed element intersects with the viewport or the specified scrollContainer\n   * according to the given threshold and rootMargin.\n   */\n  readonly intersected = output<void>()\n\n  private intersectionObserver?: IntersectionObserver\n\n  ngAfterViewInit(): void {\n    const scrollContainer = this.scrollContainer()\n    this.intersectionObserver = new IntersectionObserver(\n      (entries) => {\n        const entry = entries[0]\n        if (entry.isIntersecting) {\n          this.intersected.emit()\n          if (this.debug()) {\n            this.element.nativeElement.style.border = '2px solid red'\n          }\n        } else {\n          if (this.debug()) {\n            this.element.nativeElement.style.border = '2px solid transparent'\n          }\n        }\n      },\n      {\n        root: scrollContainer ? scrollContainer : null,\n        rootMargin: this.rootMargin(),\n        threshold: this.threshold(),\n      }\n    )\n\n    this.intersectionObserver.observe(this.element.nativeElement)\n  }\n\n  ngOnDestroy(): void {\n    if (this.intersectionObserver) {\n      this.intersectionObserver.disconnect()\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}