{"version":3,"file":"notiz-toolbelt-gesture.mjs","sources":["../../../../libs/toolbelt/gesture/src/gesture.ts","../../../../libs/toolbelt/gesture/src/gesture.directive.ts","../../../../libs/toolbelt/gesture/src/drag.directive.ts","../../../../libs/toolbelt/gesture/src/notiz-toolbelt-gesture.ts"],"sourcesContent":["import { ElementRef } from '@angular/core';\nimport { onAnimationFrame } from '@notiz/toolbelt/utils';\nimport {\n  BehaviorSubject,\n  MonoTypeOperatorFunction,\n  Observable,\n  buffer,\n  debounceTime,\n  delay,\n  distinctUntilChanged,\n  filter,\n  first,\n  fromEvent,\n  last,\n  map,\n  mergeWith,\n  of,\n  pairwise,\n  race,\n  repeat,\n  share,\n  switchMap,\n  take,\n  takeUntil,\n  tap,\n  withLatestFrom,\n} from 'rxjs';\n\nexport interface DragGesture {\n  event?: MouseEvent | Touch;\n  x: number;\n  y: number;\n}\n\nexport type DragDirectionVertical = 'up' | 'down';\nexport type DragDirectionHorizontal = 'left' | 'right';\n\nexport function preventWhen<T extends MouseEvent | TouchEvent>(\n  condition: () => boolean,\n): MonoTypeOperatorFunction<T> {\n  return tap((ev: T) => {\n    if (condition() && ev.cancelable) {\n      ev?.preventDefault();\n    }\n  });\n}\n\nexport class Gestures {\n  window =\n    typeof window === 'undefined'\n      ? {\n          // noop for SSR\n          addEventListener: () => {},\n          removeEventListener: () => {},\n        }\n      : window;\n\n  constructor(private element: ElementRef<HTMLElement>) {}\n\n  // state\n  position$ = new BehaviorSubject<DragGesture>({ x: 0, y: 0 });\n  dragging$ = new BehaviorSubject<boolean>(false);\n  dragEnabled$ = new BehaviorSubject<boolean>(false);\n  preventDefault$ = new BehaviorSubject<boolean>(false);\n  pressed$ = new BehaviorSubject<boolean>(false);\n\n  // mouse events\n  private mouseDown$ = fromEvent<MouseEvent>(\n    this.element.nativeElement,\n    'mousedown',\n  );\n  private mouseMove$ = fromEvent<MouseEvent>(this.window, 'mousemove');\n  private mouseMove$$ = fromEvent<MouseEvent>(\n    this.element.nativeElement,\n    'mousemove',\n  );\n  private mouseUp$ = fromEvent<MouseEvent>(this.window, 'mouseup');\n\n  // touchevents\n  private touchDown$ = fromEvent<TouchEvent>(\n    this.element.nativeElement,\n    'touchstart',\n    { passive: false },\n  ).pipe(\n    preventWhen(() => this.preventDefault$.getValue()),\n    map((ev) => ev.touches[0]),\n  );\n  private touchMove$ = fromEvent<TouchEvent>(this.window, 'touchmove', {\n    passive: false,\n  }).pipe(\n    preventWhen(() => this.preventDefault$.getValue()),\n    map((ev) => ev.touches[0]),\n  );\n  private touchMove$$ = fromEvent<TouchEvent>(\n    this.element.nativeElement,\n    'touchmove',\n    { passive: false },\n  ).pipe(\n    preventWhen(() => this.preventDefault$.getValue()),\n    map((ev) => ev.touches[0]),\n  );\n  private touchUp$ = fromEvent<TouchEvent>(this.window, 'touchend', {\n    passive: false,\n  }).pipe(\n    preventWhen(() => this.preventDefault$.getValue()),\n    map((ev) => ev.changedTouches[0]),\n  );\n\n  // combined mouse and touchevents\n  start$ = this.mouseDown$.pipe(mergeWith(this.touchDown$), share());\n  move$ = this.mouseMove$.pipe(mergeWith(this.touchMove$), share());\n  move$$ = this.mouseMove$$.pipe(mergeWith(this.touchMove$$), share());\n  end$ = this.mouseUp$.pipe(mergeWith(this.touchUp$)).pipe(\n    share(),\n    tap(() => this.pressed$.next(false)),\n  );\n\n  down$ = this.start$.pipe(\n    map(() => true),\n    mergeWith(this.end$.pipe(map((e) => false))),\n    share(),\n  );\n\n  dragStart$ = this.move$$.pipe(\n    withLatestFrom(this.down$),\n    filter(([move, down]) => this.dragEnabled$.getValue() && down),\n    map(([move]) => move),\n    first(),\n    repeat({ delay: () => this.end$ }),\n    share(),\n  );\n\n  drag$ = this.dragStart$.pipe(\n    switchMap((start) =>\n      this.move$.pipe(\n        filter(() => this.dragEnabled$.getValue()),\n        onAnimationFrame(),\n        map((move) => mapMove(move, start, this.position$.getValue())),\n        tap(() => this.dragging$.next(true)),\n        takeUntil(this.end$),\n      ),\n    ),\n    share(),\n  );\n\n  dragEnd$ = this.dragStart$.pipe(\n    switchMap((start) =>\n      this.move$.pipe(\n        filter(() => this.dragEnabled$.getValue()),\n        onAnimationFrame(),\n        map((move) => mapMove(move, start, this.position$.getValue())),\n        takeUntil(this.end$),\n        last(null, null),\n      ),\n    ),\n    share(),\n    filter((gesture) => !!gesture),\n    map((gesture) => gesture as DragGesture),\n    tap(() => this.dragging$.next(false)),\n  );\n\n  dragDirectionVertical$: Observable<DragDirectionVertical> = this.drag$.pipe(\n    pairwise(),\n    map(([y1, y2]) => (y2.y < y1.y ? 'up' : 'down')),\n    distinctUntilChanged(),\n    share(),\n  );\n\n  dragDirectionHorizontal$: Observable<DragDirectionHorizontal> =\n    this.drag$.pipe(\n      pairwise(),\n      map(([x1, x2]) => (x2.x < x1.x ? 'left' : 'right')),\n      distinctUntilChanged(),\n      share(),\n    );\n\n  private _click$ = this.start$.pipe(\n    switchMap((down) =>\n      this.end$.pipe(filter((end) => down.target === end.target)),\n    ),\n  );\n\n  private buff$ = this._click$.pipe(debounceTime(250));\n  private clicks$ = this._click$.pipe(\n    buffer(this.buff$),\n    map((list) => {\n      return list;\n    }),\n  );\n\n  private _single$ = this.clicks$.pipe(\n    filter((n) => n.length === 1),\n    map((n) => ({ event: n[0], type: 'single' })),\n  );\n\n  private _double$ = this.clicks$.pipe(\n    filter((n) => n.length === 2),\n    map((n) => ({ event: n[1], type: 'double' })),\n  );\n\n  private _press$ = this.start$.pipe(\n    switchMap((e) => {\n      return of(e).pipe(\n        delay(800),\n        takeUntil(this.move$),\n        takeUntil(this.end$),\n      );\n    }),\n    map((ev) => ({ event: ev, type: 'press' })),\n    share(),\n  );\n\n  private race$ = race(\n    this._single$,\n    this._press$,\n    this._double$,\n    this.dragEnd$.pipe(\n      map((end) => ({\n        event: end,\n        type: 'dragend',\n      })),\n    ),\n  ).pipe(\n    take(1),\n    repeat(),\n    share(),\n    filter(() => !this.dragging$.getValue()),\n  );\n\n  tap$ = this.race$.pipe(\n    filter((ev) => ev.type === 'single'),\n    map((ev) => ev.event as MouseEvent | Touch),\n  );\n\n  doubletap$ = this.race$.pipe(\n    filter((ev) => ev.type === 'double'),\n    map((ev) => ev.event as MouseEvent | Touch),\n  );\n  press$ = this.race$.pipe(\n    filter((ev) => ev.type === 'press'),\n    tap(() => this.pressed$.next(true)),\n    map((ev) => ev.event as MouseEvent | Touch),\n  );\n}\n\nconst mapMove = <T extends MouseEvent | Touch>(\n  move: T,\n  start: T,\n  prev: DragGesture | null = null,\n) => {\n  return {\n    event: move,\n    x: move.pageX - start.pageX + (prev?.x || 0),\n    y: move.pageY - start.pageY + (prev?.y || 0),\n  } as DragGesture;\n};\n","import { Directive, ElementRef, OnDestroy, Output } from '@angular/core';\nimport { Subject, merge, takeUntil } from 'rxjs';\nimport { Gestures } from './gesture';\n\n@Directive({\n  selector: '[gesture]',\n  exportAs: 'gesture',\n  standalone: true,\n})\nexport class GestureDirective implements OnDestroy {\n  gestures = new Gestures(this.el);\n  destroy = new Subject<void>();\n\n  @Output('tap') tap$ = this.gestures.tap$;\n  @Output('doubletap') doubletap$ = this.gestures.doubletap$;\n  @Output('press') press$ = this.gestures.press$;\n  @Output('pressed') pressed$ = this.gestures.pressed$;\n\n  constructor(private el: ElementRef<HTMLElement>) {\n    merge(this.pressed$, this.press$).pipe(takeUntil(this.destroy)).subscribe();\n  }\n  ngOnDestroy(): void {\n    this.destroy.next();\n    this.destroy.complete();\n  }\n}\n","import { Directive, ElementRef, Input, Output } from '@angular/core';\nimport { style$ } from '@notiz/toolbelt/box';\nimport { presets, spring$ } from '@notiz/toolbelt/spring';\nimport { easing, easings, fromTo, tween$ } from '@notiz/toolbelt/tween';\nimport {\n  Subject,\n  combineLatest,\n  distinctUntilChanged,\n  first,\n  last,\n  map,\n  merge,\n  share,\n  shareReplay,\n  takeUntil,\n  tap,\n  withLatestFrom,\n} from 'rxjs';\nimport { DragGesture } from './gesture';\nimport { GestureDirective } from './gesture.directive';\n\nexport type DragAxis = 'x' | 'y' | 'all';\n\n@Directive({\n  selector: '[drag]',\n  exportAs: 'drag',\n  standalone: true,\n})\nexport class DragDirective {\n  @Input('drag') set dragEnabled(enabled: boolean) {\n    this.gestures.dragEnabled$.next(enabled);\n  }\n\n  get dragEnabled() {\n    return this.gestures.dragEnabled$.getValue();\n  }\n\n  @Input('drag.preventDefault') set dragPrevent(enabled: boolean) {\n    this.gestures.preventDefault$.next(enabled);\n  }\n\n  get dragPrevent() {\n    return this.gestures.preventDefault$.getValue();\n  }\n\n  @Input('drag.axis') dragAxis: DragAxis = 'all';\n  @Input('drag.restrict') dragRestrict!: DOMRect | null;\n  @Input('drag.scrollContainer') scrollContainer: HTMLElement =\n    typeof document === 'undefined'\n      ? ({ scrollTop: 0 } as HTMLElement)\n      : (document.scrollingElement as HTMLElement) || document.documentElement;\n\n  @Output() drag = this.gestures.drag$.pipe(\n    map((gesture) => this.restrict(gesture)),\n  );\n  @Output() dragend = this.gestures.dragEnd$.pipe(\n    map((gesture) => this.restrict(gesture)),\n    tap((gesture) => this.gestures.position$.next(gesture)),\n  );\n  @Output() dragstart = this.gestures.dragStart$;\n  @Output() dragging$ = this.gestures.dragging$.pipe(distinctUntilChanged());\n\n  private style$ = style$(this.el.nativeElement);\n\n  private transition$ = this.style$.pipe(\n    first(),\n    map((s) => s.transition),\n    shareReplay(),\n  );\n  private _transitionend$ = new Subject<void>();\n  @Output() transitionend$ = this._transitionend$.asObservable();\n\n  constructor(\n    private gesture: GestureDirective,\n    private el: ElementRef<HTMLElement>,\n  ) {\n    merge(this.dragging$, this.transition$)\n      .pipe(takeUntil(this.gesture.destroy))\n      .subscribe();\n\n    this.dragend\n      .pipe(withLatestFrom(this.transition$), takeUntil(this.gesture.destroy))\n      .subscribe(([end, transition]) => {\n        this.el.nativeElement.style.transition = transition;\n      });\n  }\n\n  private get gestures() {\n    return this.gesture.gestures;\n  }\n\n  ease(\n    to: DragGesture | null,\n    duration = 0,\n    easing: easing = 'easeOutCubic',\n    el = this.el,\n  ) {\n    const move = this.gestures.position$.getValue();\n    if (!move) {\n      return;\n    }\n    const x = tween$(easings(easing), duration).pipe(\n      fromTo(move.x, to?.x || 0),\n    );\n    const y = tween$(easings(easing), duration).pipe(\n      fromTo(move.y, to?.y || 0),\n    );\n\n    const animation = combineLatest([x, y]).pipe(\n      map(([x, y]) => [Math.round(x), Math.round(y)]),\n    );\n    animation\n      .pipe(\n        last(),\n        withLatestFrom(this.transition$),\n        tap(() => this._transitionend$.next()),\n        takeUntil(this.gesture.destroy),\n      )\n      .subscribe(([end, transition]) => {\n        el.nativeElement.style.transition = transition;\n      });\n\n    animation\n      .pipe(\n        tap(([x, y]) =>\n          this.gestures.position$.next({\n            ...move,\n            x,\n            y,\n          }),\n        ),\n        tap(([x, y]) => this.move({ ...move, x, y }, 0, el)),\n        takeUntil(this.dragstart),\n        takeUntil(this.gesture.destroy),\n      )\n      .subscribe();\n  }\n\n  spring(\n    to: DragGesture | null,\n    stiffness = presets.noWobble[0],\n    damping = presets.noWobble[1],\n    el = this.el,\n  ) {\n    const move = this.gestures.position$.getValue();\n    if (!move) {\n      return;\n    }\n    const x = spring$([move.x, to?.x || 0], stiffness, damping);\n    const y = spring$([move.y, to?.y || 0], stiffness, damping);\n\n    const animation = combineLatest([x, y])\n      .pipe(share())\n      .pipe(map(([x, y]) => [Math.round(x), Math.round(y)]));\n\n    animation\n      .pipe(\n        last(),\n        withLatestFrom(this.transition$),\n        tap(() => this._transitionend$.next()),\n        takeUntil(this.gesture.destroy),\n      )\n      .subscribe(\n        ([end, transition]) => (el.nativeElement.style.transition = transition),\n      );\n\n    animation\n      .pipe(\n        tap(([x, y]) =>\n          this.gestures.position$.next({\n            ...move,\n            x,\n            y,\n          }),\n        ),\n        tap(([x, y]) => this.move({ ...move, x, y }, 0, el)),\n        takeUntil(this.dragstart),\n        takeUntil(this.gesture.destroy),\n      )\n      .subscribe();\n  }\n\n  move(move: DragGesture, duration = 0, el = this.el) {\n    el.nativeElement.style.transform =\n      this.dragAxis === 'x'\n        ? `translateX(${move.x}px)`\n        : this.dragAxis === 'y'\n          ? `translateY(${move.y}px)`\n          : `translate(${move.x}px,${move.y}px)`;\n    el.nativeElement.style.transition = 'transform 0ms ease 0s';\n\n    if (duration > 0) {\n      this.ease(move, duration);\n    } else {\n    }\n  }\n\n  private restrict(gesture: DragGesture): DragGesture {\n    if (this.dragRestrict) {\n      const left =\n        this.dragRestrict.left -\n        (this.el.nativeElement.clientLeft + this.el.nativeElement.offsetLeft);\n      const right =\n        left + this.dragRestrict.width - this.el.nativeElement.clientWidth;\n      const top =\n        this.dragRestrict.top -\n        (this.el.nativeElement.clientTop + this.el.nativeElement.offsetTop) +\n        this.scrollContainer.scrollTop;\n      const bottom =\n        top + this.dragRestrict.height - this.el.nativeElement.clientHeight;\n\n      return {\n        ...gesture,\n        x: Math.max(left, Math.min(right, gesture.x)),\n        y: Math.max(top, Math.min(bottom, gesture.y)),\n      };\n    }\n    return gesture;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GestureDirective"],"mappings":"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"}