{"version":3,"file":"ascentgl-peak-utils.mjs","sources":["../../../../libs/peak-utils/src/lib/directives/gesture/gesture-direction.enum.ts","../../../../libs/peak-utils/src/lib/directives/gesture/gesture-config.ts","../../../../libs/peak-utils/src/lib/directives/gesture/gesture.directive.ts","../../../../libs/peak-utils/src/lib/directives/gesture/gesture.module.ts","../../../../libs/peak-utils/src/ascentgl-peak-utils.ts"],"sourcesContent":["export enum PeakGestureDirection {\r\n  DIRECTION_NONE = 1,\r\n  DIRECTION_LEFT,\r\n  DIRECTION_RIGHT,\r\n  DIRECTION_UP,\r\n  DIRECTION_DOWN,\r\n  DIRECTION_ALL,\r\n  DIRECTION_VERTICAL,\r\n  DIRECTION_HORIZONTAL,\r\n}\r\n","import { PeakGestureDirection } from './gesture-direction.enum';\r\n\r\nexport class PeakGestureConfig {\r\n  public direction: PeakGestureDirection = PeakGestureDirection.DIRECTION_ALL;\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Inject, InjectionToken, Output } from '@angular/core';\r\nimport { PeakGestureDirection } from './gesture-direction.enum';\r\nimport { PeakGestureCoordinates } from './gesture-coordinates.type';\r\nimport { PeakGestureConfig } from './gesture-config';\r\n\r\n/** @ignore */\r\nexport const PEAK_GESTURE_DEFAULT_OPTIONS = new InjectionToken<PeakGestureConfig>('peak-gesture-default-options', {\r\n  providedIn: 'root',\r\n  factory: PEAK_GESTURE_DEFAULT_OPTIONS_FACTORY,\r\n});\r\n\r\n/** @ignore */\r\nexport function PEAK_GESTURE_DEFAULT_OPTIONS_FACTORY(): PeakGestureConfig {\r\n  return new PeakGestureConfig();\r\n}\r\n\r\n@Directive({\r\n  selector: '[peakGesture]',\r\n})\r\nexport class PeakGestureDirective {\r\n  constructor(private el: ElementRef, @Inject(PEAK_GESTURE_DEFAULT_OPTIONS) private config: PeakGestureConfig) {}\r\n\r\n  private startingTouchCoordinates!: PeakGestureCoordinates;\r\n\r\n  /** Event emitted when the user swipes down */\r\n  @Output() gesturedown: EventEmitter<void> = new EventEmitter();\r\n\r\n  /** Event emitted when the user swipes left */\r\n  @Output() gestureleft: EventEmitter<void> = new EventEmitter();\r\n\r\n  /** Event emitted when the user swipes right */\r\n  @Output() gestureright: EventEmitter<void> = new EventEmitter();\r\n\r\n  /** Event emitted when the user swipes up */\r\n  @Output() gestureup: EventEmitter<void> = new EventEmitter();\r\n\r\n  /** @ignore */\r\n  @HostListener('pointerdown', ['$event'])\r\n  handlePointerDown(event: PointerEvent): boolean {\r\n    if ('ontouchstart' in window) {\r\n      return false;\r\n    }\r\n\r\n    if (window.PointerEvent) {\r\n      this.el.nativeElement.setPointerCapture?.(event.pointerId);\r\n    }\r\n\r\n    this.startingTouchCoordinates = { x: event.clientX, y: event.clientY };\r\n    return false;\r\n  }\r\n\r\n  /** @ignore */\r\n  @HostListener('pointerup', ['$event'])\r\n  handlePointerUp(event: PointerEvent): boolean {\r\n    if ('ontouchstart' in window) {\r\n      return false;\r\n    }\r\n\r\n    if (window.PointerEvent) {\r\n      this.el.nativeElement.releasePointerCapture(event.pointerId);\r\n    }\r\n\r\n    const endingTouchCoordinates = { x: event.clientX, y: event.clientY };\r\n    const direction = this.getGestureDirection(\r\n      endingTouchCoordinates.x - this.startingTouchCoordinates.x,\r\n      endingTouchCoordinates.y - this.startingTouchCoordinates.y\r\n    );\r\n    this.emitGestureEvent(direction);\r\n    return false;\r\n  }\r\n\r\n  @HostListener('touchstart', ['$event'])\r\n  handleTouchStart(event: TouchEvent): boolean {\r\n    this.startingTouchCoordinates = { x: event.touches[0].clientX, y: event.touches[0].clientY };\r\n    return false;\r\n  }\r\n\r\n  @HostListener('touchend', ['$event'])\r\n  handleTouchEnd(event: TouchEvent): boolean {\r\n    const endingTouchCoordinates = { x: event.changedTouches[0].clientX, y: event.changedTouches[0].clientY };\r\n    const direction = this.getGestureDirection(\r\n      endingTouchCoordinates.x - this.startingTouchCoordinates.x,\r\n      endingTouchCoordinates.y - this.startingTouchCoordinates.y\r\n    );\r\n\r\n    this.emitGestureEvent(direction);\r\n    return false;\r\n  }\r\n\r\n  /** @ignore */\r\n  private emitGestureEvent(direction: PeakGestureDirection): void {\r\n    switch (direction) {\r\n      case PeakGestureDirection.DIRECTION_LEFT:\r\n        if (\r\n          this.config.direction === PeakGestureDirection.DIRECTION_ALL ||\r\n          this.config.direction === PeakGestureDirection.DIRECTION_HORIZONTAL\r\n        ) {\r\n          return this.gestureleft.emit();\r\n        }\r\n        break;\r\n      case PeakGestureDirection.DIRECTION_RIGHT:\r\n        if (\r\n          this.config.direction === PeakGestureDirection.DIRECTION_ALL ||\r\n          this.config.direction === PeakGestureDirection.DIRECTION_HORIZONTAL\r\n        ) {\r\n          return this.gestureright.emit();\r\n        }\r\n        break;\r\n      case PeakGestureDirection.DIRECTION_UP:\r\n        if (\r\n          this.config.direction === PeakGestureDirection.DIRECTION_ALL ||\r\n          this.config.direction === PeakGestureDirection.DIRECTION_VERTICAL\r\n        ) {\r\n          return this.gestureup.emit();\r\n        }\r\n        break;\r\n      case PeakGestureDirection.DIRECTION_DOWN:\r\n        if (\r\n          this.config.direction === PeakGestureDirection.DIRECTION_ALL ||\r\n          this.config.direction === PeakGestureDirection.DIRECTION_VERTICAL\r\n        ) {\r\n          return this.gesturedown.emit();\r\n        }\r\n        break;\r\n      default:\r\n        return;\r\n    }\r\n  }\r\n\r\n  /** @ignore */\r\n  private getGestureDirection(x: number, y: number): PeakGestureDirection {\r\n    if (x === y) {\r\n      return PeakGestureDirection.DIRECTION_NONE;\r\n    }\r\n\r\n    if (Math.abs(x) >= Math.abs(y)) {\r\n      return x < 0 ? PeakGestureDirection.DIRECTION_LEFT : PeakGestureDirection.DIRECTION_RIGHT;\r\n    }\r\n\r\n    return y < 0 ? PeakGestureDirection.DIRECTION_UP : PeakGestureDirection.DIRECTION_DOWN;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { PeakGestureDirective } from './gesture.directive';\r\n\r\n@NgModule({\r\n  exports: [PeakGestureDirective],\r\n  declarations: [PeakGestureDirective],\r\n})\r\nexport class PeakGestureModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}