@ngutil/aria 0.0.101 → 0.0.102

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -796,7 +796,7 @@ class GestureService {
796
796
  const state = { events: [], gestures, includeScrollDistance };
797
797
  return merge(src.pipe(tap(event => state.events.push(event))), ...Array.from(gestures.keys())
798
798
  .sort(sortByPripority)
799
- .map(gesture => gesture.capture(src.pipe(filter(gesture.shouldCapture.bind(gesture)))).pipe(takeWhile(result => result !== GestureCaptureState.Skip, true), tap(result => gestures.set(gesture, result))))).pipe(map(() => state));
799
+ .map(gesture => gesture.capture(src.pipe(filter(gesture.shouldCapture.bind(gesture)), share())).pipe(takeWhile(result => result !== GestureCaptureState.Skip, true), tap(result => gestures.set(gesture, result))))).pipe(map(() => state));
800
800
  })
801
801
  // finalize(() => console.log("FINALIZE CAPTURE"))
802
802
  );
@@ -835,7 +835,7 @@ class GestureService {
835
835
  // finalize(() => console.log("FINALIZE SELECT"))
836
836
  );
837
837
  return selectGesture.pipe(switchMap(({ events, gesture }) => gesture
838
- .handle(eventStream.pipe(startWith(...events), tap(({ origin }) => preventDefault(origin)), filter(gesture.isRelevantEvent.bind(gesture))))
838
+ .handle(eventStream.pipe(startWith(...events), tap(({ origin }) => preventDefault(origin)), filter(gesture.isRelevantEvent.bind(gesture)), share()))
839
839
  .pipe(takeWhile(v => v.phase !== GesturePhase.End, true), tap(detail => dispatchEvent(new CustomEvent(gesture.type, { detail, bubbles: true, cancelable: true })))
840
840
  // finalize(() => console.log("GESTURE FINALIZE"))
841
841
  )),
@@ -990,6 +990,9 @@ function preventDefault(event) {
990
990
  event.preventDefault();
991
991
  }
992
992
  }
993
+ function reduceCaptureStates(states) {
994
+ return Math.min(...states);
995
+ }
993
996
 
994
997
  const COMPILE_CACHE = {};
995
998
  function compile(selector) {
@@ -1667,5 +1670,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
1667
1670
  * Generated bundle index. Do not edit.
1668
1671
  */
1669
1672
 
1670
- export { AbstractUiState, ActivityService, BusyDirective, DirtyDirective, DisabledDirective, FocusService, FocusState, FocusTrap, Focusable, Gesture, GestureCaptureState, GestureDrag, GestureDragHorizontal, GestureDragImpl, GestureDragVertical, GestureLongTap, GestureLongTapImpl, GesturePhase, GesturePointerType, GestureService, GestureTap, GestureTapImpl, KeystrokeService, Listeners, NOTSET, ProgressSegmentRef, ProgressState, ReadonlyDirective, UiState, UiStateModule, gestureDrag, gestureLongTap, gestureTap };
1673
+ export { AbstractUiState, ActivityService, BusyDirective, DirtyDirective, DisabledDirective, FocusService, FocusState, FocusTrap, Focusable, Gesture, GestureCaptureState, GestureDrag, GestureDragHorizontal, GestureDragImpl, GestureDragVertical, GestureLongTap, GestureLongTapImpl, GesturePhase, GesturePointerType, GestureService, GestureTap, GestureTapImpl, KeystrokeService, Listeners, NOTSET, ProgressSegmentRef, ProgressState, ReadonlyDirective, UiState, UiStateModule, gestureDrag, gestureLongTap, gestureTap, reduceCaptureStates };
1671
1674
  //# sourceMappingURL=ngutil-aria.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngutil-aria.mjs","sources":["../../../../packages/aria/src/activity/activity.service.ts","../../../../packages/aria/src/focus/focus.service.ts","../../../../packages/aria/src/focus/focus-trap.directive.ts","../../../../packages/aria/src/focus/focus-state.directive.ts","../../../../packages/aria/src/focus/focusable.directive.ts","../../../../packages/aria/src/keystroke/keystroke.service.ts","../../../../packages/aria/src/gestures/gesture-event.ts","../../../../packages/aria/src/gestures/gesture.ts","../../../../packages/aria/src/gestures/gesture-drag.ts","../../../../packages/aria/src/gestures/gesture-longtap.ts","../../../../packages/aria/src/gestures/gesture-tap.ts","../../../../packages/aria/src/gestures/gesture.service.ts","../../../../packages/aria/src/ui-state/selector.ts","../../../../packages/aria/src/ui-state/ui-state.ts","../../../../packages/aria/src/ui-state/abstract.ts","../../../../packages/aria/src/ui-state/busy.directive.ts","../../../../packages/aria/src/ui-state/dirty.directive.ts","../../../../packages/aria/src/ui-state/disabled.directive.ts","../../../../packages/aria/src/ui-state/readonly.directive.ts","../../../../packages/aria/src/ui-state/progress-state.ts","../../../../packages/aria/src/ui-state/index.ts","../../../../packages/aria/src/ngutil-aria.ts"],"sourcesContent":["import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n share,\n shareReplay,\n startWith,\n switchMap,\n take,\n throttleTime,\n timer\n} from \"rxjs\"\n\n// TODO: detect program activity\nexport type ActivityOrigin = \"mouse\" | \"keyboard\" | \"touch\" | \"program\"\n\nexport interface ActivityEvent {\n origin: ActivityOrigin\n type: keyof typeof EVENT_ORIGIN\n node?: Node\n}\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\nconst EVENT_ORIGIN = {\n keydown: \"keyboard\",\n mousedown: \"mouse\",\n mousemove: \"mouse\",\n touchstart: \"touch\"\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class ActivityService {\n readonly #zone = inject(NgZone)\n readonly #doc = inject(DOCUMENT)\n\n readonly events$: Observable<ActivityEvent> = this.#zone.runOutsideAngular(() =>\n merge(\n fromEvent(this.#doc, \"keydown\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"mousedown\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"mousemove\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"touchstart\", EVENT_OPTIONS)\n ).pipe(\n map(event => {\n const type = event.type as ActivityEvent[\"type\"]\n return {\n origin: EVENT_ORIGIN[type] as ActivityOrigin,\n type: type,\n node: event.target as any\n }\n }),\n share()\n )\n )\n\n watchActivity(node?: HTMLElement) {\n if (node) {\n return this.events$.pipe(\n filter(\n event =>\n event.node != null &&\n (event.node === node || (event.node instanceof HTMLElement && event.node.contains(node)))\n ),\n shareReplay(1)\n )\n } else {\n return this.events$\n }\n }\n\n watchInactvity(timeout: number) {\n return this.events$.pipe(\n startWith(null),\n throttleTime(timeout / 2),\n switchMap(() => timer(0, timeout).pipe(take(2))),\n map(v => v !== 0),\n distinctUntilChanged(),\n shareReplay(1)\n )\n }\n}\n","import { FocusTrapFactory } from \"@angular/cdk/a11y\"\nimport { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n BehaviorSubject,\n combineLatest,\n connect,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n Observable,\n of,\n scan,\n shareReplay,\n Subject,\n Subscriber,\n switchMap,\n tap,\n timer\n} from \"rxjs\"\n\nimport { focusable, type FocusableElement, isFocusable } from \"tabbable\"\n\nimport { coerceElement, ElementInput, isEqual, isEqualStrict } from \"@ngutil/common\"\n\nimport { ActivityEvent, ActivityOrigin, ActivityService } from \"../activity\"\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\nexport type FocusOrigin = ActivityOrigin | null\n\nexport interface FocusOriginEvent {\n element: Node\n origin: FocusOrigin\n}\n\ninterface EventState {\n activity?: ActivityEvent\n focus?: Node\n blur?: Node\n nextOrigin?: FocusOrigin\n event?: FocusOriginEvent\n deferred?: FocusOriginEvent\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class FocusService {\n readonly #activity = inject(ActivityService)\n readonly #focusTrap = inject(FocusTrapFactory)\n readonly #zone = inject(NgZone)\n readonly #document = inject(DOCUMENT)\n\n readonly #originOverrides = new BehaviorSubject<Map<Node, ActivityOrigin>>(new Map())\n\n readonly #focus: Observable<Node> = listener(this.#document, this.#zone, \"focus\", EVENT_OPTIONS).pipe(\n connect(focus =>\n this.#zone.runOutsideAngular(() => {\n let lastFocused: Node | null = null\n const sideEffect = new Subject<Node>()\n\n // if element removed form document, emit blur & focus\n const mutation = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.removedNodes.length > 0) {\n for (const removed of Array.from(mutation.removedNodes)) {\n if (removed === lastFocused || removed.contains(lastFocused)) {\n this.#blurSide.next(lastFocused!)\n sideEffect.next(this.#document.activeElement!)\n return\n }\n }\n }\n }\n })\n\n mutation.observe(this.#document, { subtree: true, childList: true })\n return merge(\n focus.pipe(\n tap(node => (lastFocused = node)),\n finalize(() => mutation.disconnect())\n ),\n sideEffect\n )\n })\n ),\n\n distinctUntilChanged(isEqualStrict)\n )\n\n readonly #blurEvent = listener(this.#document, this.#zone, \"blur\", EVENT_OPTIONS)\n readonly #blurSide = new Subject<Node>()\n readonly #blur: Observable<Node> = merge(this.#blurEvent, this.#blurSide).pipe(distinctUntilChanged(isEqualStrict))\n\n readonly events: Observable<FocusOriginEvent> = this.#zone.runOutsideAngular(() => {\n const activity = this.#activity.events$.pipe(\n filter(activity => activity.type !== \"mousemove\"),\n map(activity => ({ activity }) satisfies Partial<EventState>)\n )\n const focus = this.#focus.pipe(map(focus => ({ focus }) satisfies Partial<EventState>))\n const blur = this.#blur.pipe(map(blur => ({ blur }) satisfies Partial<EventState>))\n\n const event = merge(activity, focus, blur).pipe(\n scan<EventState, EventState>((state, curr) => {\n const result: EventState = { ...state, event: undefined, deferred: undefined }\n\n if (curr.blur != null) {\n if (curr.blur === state.focus) {\n result.deferred = { element: curr.blur, origin: null }\n } else if (state.deferred && state.deferred.origin == null) {\n result.deferred = state.deferred\n }\n } else if (curr.focus != null) {\n if (\n curr.focus === document &&\n state.blur === curr.focus &&\n (!state.deferred || !state.deferred.origin)\n ) {\n result.deferred = { element: curr.focus, origin: null }\n result.nextOrigin = \"program\"\n return result\n }\n\n if (state.nextOrigin) {\n result.event = { element: curr.focus, origin: state.nextOrigin }\n result.nextOrigin = undefined\n } else if (state.activity) {\n result.event = { element: curr.focus, origin: state.activity.origin }\n }\n } else if (curr.activity) {\n delete result.nextOrigin\n if (\n state.event &&\n curr.activity.origin !== \"keyboard\" &&\n state.event.origin !== curr.activity.origin\n ) {\n result.deferred = { ...state.event, origin: curr.activity.origin }\n }\n }\n return { ...result, ...curr }\n }, {} as EventState),\n switchMap(state => {\n if (state.deferred) {\n return timer(20).pipe(\n map(() => {\n state.event = state.deferred\n delete state.deferred\n return state\n })\n )\n } else {\n return of(state)\n }\n }),\n map(state => state.event),\n filter(event => !!event)\n )\n\n return combineLatest({ event, overrides: this.#originOverrides }).pipe(\n map(({ event, overrides }) => {\n const override = overrides.get(event.element)\n\n if (override != null) {\n overrides.delete(event.element)\n event.origin = override || event.origin\n }\n\n return event\n }),\n distinctUntilChanged(isEqual),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n })\n\n watch(element: ElementInput) {\n const el = coerceElement(element)\n return this.events.pipe(\n map(event => {\n if (event.element && (event.element === el || el.contains(event.element))) {\n return event\n }\n return { element: el, origin: null } as FocusOriginEvent\n })\n )\n }\n\n focus(node: ElementInput, origin?: ActivityOrigin) {\n if (origin != null) {\n this.#setOrigin(node, origin)\n }\n coerceElement(node).focus()\n }\n\n queryFocusable(inside: ElementInput): FocusableElement[] {\n return focusable(coerceElement(inside), { includeContainer: false })\n }\n\n getFirstFocusable(inside: ElementInput): FocusableElement | undefined {\n return this.queryFocusable(inside)[0]\n }\n\n isFocusable(node: ElementInput): boolean {\n return isFocusable(coerceElement(node))\n }\n\n focusTrap(inside: ElementInput, deferCaptureElements: boolean = false) {\n return this.#focusTrap.create(coerceElement(inside), deferCaptureElements)\n }\n\n #setOrigin(el: ElementInput, origin: ActivityOrigin) {\n const target = coerceElement(el)\n const map = this.#originOverrides.value\n const old = map.get(target)\n if (old !== origin) {\n map.set(target, origin)\n this.#originOverrides.next(map)\n }\n }\n\n #delOrigin(el: ElementInput) {\n const target = coerceElement(el)\n const map = this.#originOverrides.value\n if (map.has(target)) {\n map.delete(target)\n this.#originOverrides.next(map)\n }\n }\n}\n\nfunction listener(doc: Document, zone: NgZone, type: Event[\"type\"], options: AddEventListenerOptions) {\n return new Observable((dst: Subscriber<Node>) =>\n zone.runOutsideAngular(() => {\n const handler = (e: Event) => {\n dst.next(e.target! as Node)\n }\n document.addEventListener(type, handler, options)\n return () => document.removeEventListener(type, handler, options)\n })\n )\n}\n","import { ElementRef, inject } from \"@angular/core\"\n\nimport { BehaviorSubject } from \"rxjs\"\n\nimport { Destructible } from \"@ngutil/common\"\n\nimport { FocusService } from \"./focus.service\"\n\n// TODO: implement\nexport class FocusTrap extends Destructible {\n #manager = inject(FocusService)\n #el = inject(ElementRef<HTMLElement>)\n\n get enabled() {\n return this.#enabled.value\n }\n set enabled(val: boolean) {\n if (this.#enabled.value !== val) {\n this.#enabled.next(val)\n }\n }\n #enabled = new BehaviorSubject<boolean>(true)\n\n enable() {\n this.enabled = true\n }\n\n disable() {\n this.enabled = false\n }\n}\n","import { computed, Directive, ElementRef, inject } from \"@angular/core\"\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { BehaviorSubject, combineLatest, distinctUntilChanged, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport { ConnectProtocol, ElementInput, isElementInput, isEqual } from \"@ngutil/common\"\n\nimport { FocusOrigin, FocusOriginEvent, FocusService } from \"./focus.service\"\n\n@Directive({\n host: {\n \"[attr.focus]\": \"self()\",\n \"[attr.focus-within]\": \"within()\",\n \"[attr.focus-present]\": \"has()\"\n }\n})\nexport class FocusState implements ConnectProtocol {\n readonly #focus = inject(FocusService)\n readonly #el = inject<ElementRef<HTMLElement>>(ElementRef)\n readonly #parent = inject(FocusState, { optional: true, skipSelf: true })\n readonly #default: FocusOriginEvent = { element: this.#el.nativeElement, origin: null }\n\n readonly #self = this.#focus.watch(this.#el).pipe(takeUntilDestroyed(), shareReplay(1))\n\n readonly #connected = new BehaviorSubject<Observable<FocusOriginEvent>[]>([])\n readonly #connEvent = this.#connected.pipe(\n switchMap(values => (values.length === 0 ? of([]) : combineLatest(values))),\n takeUntilDestroyed(),\n map(values => values.filter(v => v.origin != null)),\n map(values => values[0] || this.#default),\n shareReplay(1)\n )\n\n readonly event$: Observable<FocusOriginEvent> = combineLatest([this.#self, this.#connEvent]).pipe(\n // debounceTime(100), // TODO: miért volt ez itt?\n map(([self, conn]) => (self.origin !== null ? self : conn.origin !== null ? conn : this.#default)),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n )\n\n readonly event = toSignal(this.event$, { rejectErrors: true, manualCleanup: true, equal: isEqual })\n\n readonly self = computed<FocusOrigin>(() => {\n const event = this.event()\n if (event == null) {\n return null\n }\n return event.element === this.#el.nativeElement ? event.origin : null\n })\n\n readonly within = computed<FocusOrigin>(() => {\n const event = this.event()\n if (event == null) {\n return null\n }\n return event.element !== this.#el.nativeElement ? event.origin : null\n })\n\n readonly has = computed<FocusOrigin>(() => this.self() || this.within())\n\n constructor() {\n this.#parent?.connect(this).pipe(takeUntilDestroyed()).subscribe()\n // effect(() => {\n // console.log(this.#el.nativeElement, this.has())\n // })\n }\n\n connect(value: FocusState | ElementInput) {\n return new Observable(() => {\n const src = (isElementInput(value) ? this.#focus.watch(value) : value.event$).pipe(shareReplay(1))\n this.#connected.next([...this.#connected.value, src])\n\n return () => {\n let current = this.#connected.value\n const idx = current.indexOf(src)\n if (idx >= 0) {\n current = [...current]\n current.splice(idx, 1)\n this.#connected.next(current)\n }\n }\n })\n }\n}\n","import { computed, Directive, inject, input } from \"@angular/core\"\n\nimport { ConnectProtocol, ElementInput, isElementInput } from \"@ngutil/common\"\n\nimport { FocusState } from \"./focus-state.directive\"\n\n// TODO: what happens when disabled is changed\n\n@Directive({\n selector: \"[nuFocusable]\",\n exportAs: \"nuFocusable\",\n host: {\n \"[attr.tabindex]\": \"_tabindex()\"\n },\n hostDirectives: [FocusState]\n})\nexport class Focusable implements ConnectProtocol {\n readonly state = inject(FocusState)\n\n readonly focusable = input<boolean | number>(true, { alias: \"nuFocusable\" })\n readonly tabindex = input(0, { transform: Number })\n\n readonly _tabindex = computed(() => {\n const focusable = this.focusable()\n const tabindex = this.tabindex()\n\n if (focusable === false) {\n return -1\n }\n\n if (typeof focusable === \"number\") {\n return focusable\n }\n\n if (focusable === true && tabindex != null && !isNaN(tabindex)) {\n return tabindex\n }\n\n return 0\n })\n\n connect(value: Focusable | FocusState | ElementInput) {\n if (value instanceof FocusState || isElementInput(value)) {\n return this.state.connect(value)\n } else {\n return this.state.connect(value.state)\n }\n }\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n distinctUntilChanged,\n EMPTY,\n filter,\n from,\n fromEvent,\n map,\n merge,\n Observable,\n of,\n share,\n shareReplay,\n startWith,\n Subscriber,\n switchMap\n} from \"rxjs\"\n\nimport { coerceElement, ElementInput, isElementInput } from \"@ngutil/common\"\n\nimport { FocusState } from \"../focus\"\n\nexport interface Keystroke {\n // https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n key: KeyboardEvent[\"key\"]\n shift?: boolean\n ctrl?: boolean\n alt?: boolean\n state: \"down\" | \"up\"\n}\n\nexport interface KeystrokeEvent {\n original: KeyboardEvent\n keystroke: Keystroke\n}\n\nexport type KeystrokeActivation = ElementInput | FocusState | Observable<ElementInput | FocusState | boolean>\n\n@Injectable({ providedIn: \"root\" })\nexport class KeystrokeService {\n readonly #document = inject(DOCUMENT)\n readonly #zone = inject(NgZone)\n\n readonly #keyEvent = this.#zone.runOutsideAngular(() =>\n merge(\n fromEvent<KeyboardEvent>(this.#document, \"keydown\", { capture: true, passive: false }),\n fromEvent<KeyboardEvent>(this.#document, \"keyup\", { capture: true, passive: false })\n ).pipe(\n filter(event => event.defaultPrevented === false),\n share()\n )\n )\n\n readonly #focusEvent = this.#zone.runOutsideAngular(() =>\n fromEvent(this.#document, \"focus\", { capture: true, passive: true }).pipe(\n startWith(null),\n map(() => this.#document.activeElement),\n shareReplay(1)\n )\n )\n\n watch(activation: KeystrokeActivation, ...keystrokes: Keystroke[]): Observable<KeystrokeEvent> {\n return new Observable((dst: Subscriber<KeystrokeEvent>) =>\n this.#trigger(activation)\n .pipe(\n distinctUntilChanged(),\n switchMap(enabled => {\n if (enabled) {\n return this.#keyEvent\n } else {\n return EMPTY\n }\n }),\n map(event => {\n if (event.defaultPrevented) {\n return []\n }\n\n const idFromEvent = keystrokeId(eventToKeystroke(event))\n const matches = keystrokes\n .filter(ks => keystrokeId(ks) === idFromEvent)\n .map(ks => {\n return {\n original: event,\n keystroke: ks\n }\n })\n\n if (matches.length > 0) {\n event.preventDefault()\n }\n\n return matches\n }),\n filter(matches => matches.length > 0),\n switchMap(matches => of(...matches))\n )\n .subscribe(dst)\n )\n }\n\n #trigger(activation: KeystrokeActivation): Observable<boolean | HTMLElement> {\n if (isElementInput(activation)) {\n return this.#focusActivation(coerceElement(activation))\n } else if (activation instanceof FocusState) {\n return activation.event$.pipe(map(({ origin }) => origin != null))\n } else {\n return from(activation).pipe(\n switchMap(value => {\n if (isElementInput(value) || value instanceof FocusState) {\n return this.#trigger(value)\n } else {\n return of(value)\n }\n })\n )\n }\n }\n\n #focusActivation(element: HTMLElement): Observable<boolean> {\n return this.#focusEvent.pipe(map(focused => focused === element || element.contains(focused)))\n }\n}\n\nfunction keystrokeId(ks: Keystroke): string {\n let res = ks.key\n if (ks.shift) {\n res += \"+shift\"\n }\n if (ks.ctrl) {\n res += \"+ctrl\"\n }\n if (ks.alt) {\n res += \"+alt\"\n }\n res += `${ks.state}`\n return res\n}\n\nfunction eventToKeystroke(event: KeyboardEvent): Keystroke {\n return {\n key: event.key,\n shift: event.shiftKey,\n ctrl: event.ctrlKey,\n alt: event.altKey,\n state: event.type === \"keyup\" ? \"up\" : \"down\"\n }\n}\n","import { Position } from \"@ngutil/style\"\n\nexport interface GestureDetail {\n readonly origin: GestureOrigin\n readonly target: HTMLElement\n readonly pointerType: GesturePointerType\n readonly phase: GesturePhase\n readonly pointers: ReadonlyArray<GesturePointer>\n readonly timeStamp: number\n readonly elapsed: number\n readonly scrollDistance?: Position\n}\n\nexport type PointersPosition = ReadonlyArray<Readonly<Position>>\n\nexport interface GesturePointer {\n readonly start: Position\n readonly current: Position\n readonly end?: Position\n readonly distance: Position\n readonly direction: { x: -1 | 0 | 1; y: -1 | 0 | 1 }\n}\n\nexport type GestureOrigin = MouseEvent | TouchEvent\n\nexport enum GesturePointerType {\n Mouse = \"mouse\",\n Touch = \"touch\"\n}\n\nexport enum GesturePhase {\n Start = \"start\",\n Moving = \"moving\",\n End = \"end\"\n}\n\nexport interface GestureListenerConfig {\n options?: AddEventListenerOptions\n pointerType: GesturePointerType\n phase: GesturePhase\n}\n\nexport const Listeners: { [key: string]: GestureListenerConfig } = {\n mousedown: {\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n mousemove: {\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n mouseup: {\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n },\n touchstart: {\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n touchmove: {\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n touchend: {\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n },\n touchcancel: {\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n }\n // ,\n // contextmenu: {\n // pointerType: GesturePointerType.Mouse,\n // phase: GesturePhase.Start,\n // options: { capture: true, passive: false }\n // }\n} as const\n","import { Observable } from \"rxjs\"\n\nimport { FunctionKeys, Mutable } from \"utility-types\"\n\nimport { GestureDetail, GesturePointerType, Listeners } from \"./gesture-event\"\n\nexport enum GestureCaptureState {\n // Unchecked\n Unchecked = 0,\n // Pending state\n Pending = 1,\n // Skip capture\n Skip = 2,\n // Determine by priority\n Maybe = 3,\n // Instanlty terminate capture, and fire event\n Instant = 4\n}\n\ntype _GestureOptions = Partial<Omit<Gesture<any>, \"originTypes\" | \"type\" | FunctionKeys<Gesture<any>>>>\nexport type GestureOptions<T extends object> = Partial<Omit<T, keyof Gesture<any> | FunctionKeys<T>>> & _GestureOptions\n\nexport type GestureEvent<G extends Gesture> = G extends Gesture<infer E> & { type: infer T }\n ? CustomEvent<E> & { type: T }\n : never\n\nexport abstract class Gesture<T extends GestureDetail = GestureDetail> {\n /**\n * The name of the gesture\n */\n abstract readonly type: string\n\n /**\n * Gestures that depends on move distance, like drag, use this option\n */\n readonly distanceInclusion: number = 10\n\n /**\n * Gestures thet dependnso on time frame, like longtap, use this option\n */\n readonly timeWithin: number = 300\n\n /**\n * The priority of the gesture\n */\n readonly priority: number = 0\n\n /**\n * Should the gesture include the scroll distance\n */\n readonly includeScrollDistance: boolean = false\n\n /**\n * The pointer types of the gesture\n */\n readonly pointerTypes: Array<GesturePointerType> = [GesturePointerType.Mouse, GesturePointerType.Touch]\n\n /**\n * The number of pointers of the gesture can handle\n */\n readonly pointerCount: number = 1\n\n /**\n * The mouse buttons of the gesture (1 = left, 2 = middle, 3 = right)\n */\n readonly mouseButtons: Array<number> = [0]\n\n /**\n * The event types of the gesture can handle\n */\n readonly originTypes: Array<string>\n\n constructor(options?: _GestureOptions) {\n Object.assign(this, options)\n this.originTypes = Object.keys(Listeners).filter(v => this.pointerTypes.includes(Listeners[v].pointerType))\n }\n\n /**\n * Test if the gesture should be captured.\n * The given events is filterde by {@see Gesture#shouldCapture}\n * ! important, dont rely on this object state, because not always create a new object\n * @param events events to check\n */\n abstract capture(events: Observable<GestureDetail>): Observable<GestureCaptureState>\n\n /**\n * Transform input event, to gesture event.\n * The given events is filterde by {@see Gesture#isRelevantEvent}\n * ! important, dont rely on this object state, because not always create a new object\n * @param events events to transform or filter or leave as is\n */\n handle(events: Observable<GestureDetail>): Observable<Mutable<T>> {\n return events as Observable<Mutable<T>>\n }\n\n /**\n * Should this gesture capture the event?\n * @param event event to check\n * @returns true if the gesture should capture the event, false otherwise\n */\n shouldCapture(event: GestureDetail): boolean {\n return this.isRelevantEvent(event)\n }\n\n /**\n * Test if the event is relevant to the gesture.\n * The event is relevant if\n * @param event event to check\n * @returns true if the event is relevant, false otherwise\n */\n isRelevantEvent(event: GestureDetail): boolean {\n return (\n this.pointerTypes.includes(event.pointerType) &&\n this.pointerCount === event.pointers.length &&\n this.originTypes.includes(event.origin.type as any) &&\n (event.pointerType !== GesturePointerType.Mouse ||\n (event.origin instanceof MouseEvent && this.mouseButtons.includes(event.origin.button)))\n )\n }\n}\n","import { map, Observable, tap } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { Position } from \"@ngutil/style\"\n\nimport { Gesture, GestureCaptureState, GestureOptions } from \"./gesture\"\nimport { GestureDetail } from \"./gesture-event\"\n\nexport interface GestureDragDetail extends GestureDetail {\n moveBy: Position\n}\n\nexport type GestureDragOptions = GestureOptions<GestureDragImpl>\n\nexport class GestureDragImpl<T extends GestureDragDetail = GestureDragDetail> extends Gesture<T> {\n readonly type = \"gesture-drag\"\n readonly horizontal?: boolean\n readonly vertical?: boolean\n\n constructor(options?: GestureDragOptions) {\n super({ includeScrollDistance: true, ...options })\n\n if (this.horizontal == null && this.vertical == null) {\n this.horizontal = true\n this.vertical = true\n }\n }\n\n override capture(events: Observable<GestureDetail>): Observable<GestureCaptureState> {\n return events.pipe(\n map(state => {\n if (Math.abs(state.pointers[0].distance.x) > this.distanceInclusion) {\n return this.horizontal ? GestureCaptureState.Maybe : GestureCaptureState.Skip\n }\n\n if (Math.abs(state.pointers[0].distance.y) > this.distanceInclusion) {\n return this.vertical ? GestureCaptureState.Maybe : GestureCaptureState.Skip\n }\n return GestureCaptureState.Pending\n })\n )\n }\n\n override handle(events: Observable<GestureDetail>) {\n const updater =\n this.horizontal && this.vertical\n ? updateAnyDirection\n : this.horizontal\n ? updateHorizontalOnly\n : updateVerticalOnly\n\n return super.handle(events).pipe(tap(updater<T>))\n }\n}\n\ntype UpdaterFn = (event: Mutable<GestureDragDetail>) => void\n\nfunction updateVerticalOnly<T extends GestureDragDetail>(event: Mutable<T>) {\n const pointer = event.pointers[0]\n pointer.distance.x = 0\n pointer.direction.x = 0\n pointer.current.x = pointer.start.x\n updateEvent(event, updateByScrollDistanceVertical)\n}\n\nfunction updateHorizontalOnly<T extends GestureDragDetail>(event: Mutable<T>) {\n const pointer = event.pointers[0]\n pointer.distance.y = 0\n pointer.direction.y = 0\n pointer.current.y = pointer.start.y\n updateEvent(event, updateByScrollDistanceHorizontal)\n}\n\nfunction updateAnyDirection<T extends GestureDragDetail>(event: Mutable<T>) {\n updateEvent(event, updateByScrollDistanceBoth)\n}\n\nfunction updateEvent<T extends GestureDragDetail>(event: Mutable<T>, scrollUpdate: UpdaterFn) {\n event.moveBy = { ...event.pointers[0].distance }\n scrollUpdate(event)\n}\n\nfunction updateByScrollDistanceVertical<T extends GestureDragDetail>(event: Mutable<T>) {\n const sd = event.scrollDistance\n if (sd == null) {\n return\n }\n event.moveBy.y += sd.y\n}\n\nfunction updateByScrollDistanceHorizontal<T extends GestureDragDetail>(event: Mutable<T>) {\n const sd = event.scrollDistance\n if (sd == null) {\n return\n }\n event.moveBy.x += sd.x\n}\n\nfunction updateByScrollDistanceBoth<T extends GestureDragDetail>(event: Mutable<T>) {\n const sd = event.scrollDistance\n if (sd == null) {\n return\n }\n event.moveBy.x += sd.x\n event.moveBy.y += sd.y\n}\n\nexport function gestureDrag(options?: GestureDragOptions) {\n return new GestureDragImpl(options)\n}\n\nexport const GestureDrag = gestureDrag()\nexport const GestureDragHorizontal = gestureDrag({ horizontal: true, vertical: false })\nexport const GestureDragVertical = gestureDrag({ horizontal: false, vertical: true })\n","import { combineLatest, filter, map, Observable, startWith, timer } from \"rxjs\"\n\nimport { Gesture, GestureCaptureState, GestureOptions } from \"./gesture\"\nimport { GestureDetail, GesturePhase, GesturePointerType } from \"./gesture-event\"\n\nexport type GestureLongTapDetail = GestureDetail\nexport type GestureLongTapOptions = GestureOptions<GestureLongTapImpl>\n\nexport class GestureLongTapImpl<T extends GestureLongTapDetail = GestureLongTapDetail> extends Gesture<T> {\n readonly type = \"gesture-longtap\"\n constructor(options?: GestureLongTapOptions) {\n super({ pointerTypes: [GesturePointerType.Touch], ...options })\n }\n\n override capture(events: Observable<GestureDetail>): Observable<GestureCaptureState> {\n return combineLatest({ timeWithin: timer(this.timeWithin).pipe(startWith(null)), event: events }).pipe(\n map(({ timeWithin, event }) => {\n if (event.elapsed > this.timeWithin) {\n return GestureCaptureState.Skip\n }\n\n if (event.phase === GesturePhase.End && event.elapsed > this.timeWithin) {\n return GestureCaptureState.Skip\n }\n\n const distance = event.pointers[0].distance\n\n if (Math.abs(distance.x) < this.distanceInclusion && Math.abs(distance.y) < this.distanceInclusion) {\n // maybe is ok event.phase === GesturePhase.End\n return timeWithin !== null ? GestureCaptureState.Instant : GestureCaptureState.Pending\n } else {\n return GestureCaptureState.Skip\n }\n })\n )\n }\n\n override handle(events: Observable<GestureDetail>) {\n return super.handle(\n events.pipe(filter(event => event.phase === GesturePhase.Start || event.phase === GesturePhase.End))\n )\n }\n}\n\nexport function gestureLongTap(options?: GestureLongTapOptions) {\n return new GestureLongTapImpl(options)\n}\n\nexport const GestureLongTap = gestureLongTap()\n","import { filter, map, Observable } from \"rxjs\"\n\nimport { Gesture, GestureCaptureState, GestureOptions } from \"./gesture\"\nimport { GestureDetail, GesturePhase } from \"./gesture-event\"\n\nexport type GestureTapDetail = GestureDetail\nexport type GestureTapOptions = GestureOptions<GestureTapImpl>\n\nexport class GestureTapImpl<T extends GestureTapDetail = GestureTapDetail> extends Gesture<T> {\n readonly type = \"gesture-tap\"\n\n override capture(events: Observable<GestureDetail>): Observable<GestureCaptureState> {\n return events.pipe(\n map(event => {\n const distance = event.pointers[0].distance\n if (Math.abs(distance.x) < this.distanceInclusion && Math.abs(distance.y) < this.distanceInclusion) {\n // TODO\n // if (event.phase === GesturePhase.End) {\n // if (event.target === event.origin.target || event.target.contains(event.origin.target)) {\n // return GestureCaptureState.Instant\n // } else {\n // return GestureCaptureState.Skip\n // }\n // } else {\n // return GestureCaptureState.Pending\n // }\n return event.phase === GesturePhase.End ? GestureCaptureState.Instant : GestureCaptureState.Pending\n } else {\n return GestureCaptureState.Skip\n }\n })\n )\n }\n\n override handle(events: Observable<GestureDetail>) {\n return super.handle(\n events.pipe(filter(event => event.phase === GesturePhase.Start || event.phase === GesturePhase.End))\n )\n }\n}\n\nexport function gestureTap(options?: GestureTapOptions) {\n return new GestureTapImpl(options)\n}\n\nexport const GestureTap = gestureTap()\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\n\nimport {\n combineLatest,\n connect,\n debounceTime,\n filter,\n finalize,\n map,\n merge,\n Observable,\n scan,\n share,\n startWith,\n Subject,\n Subscriber,\n switchMap,\n takeWhile,\n tap\n} from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { __zone_symbol__, coerceElement, ElementInput, isFalsy, isTruthy } from \"@ngutil/common\"\nimport { Position } from \"@ngutil/style\"\n\nimport { Gesture, GestureCaptureState, GestureEvent } from \"./gesture\"\nimport {\n GestureDetail,\n GestureListenerConfig,\n GestureOrigin,\n GesturePhase,\n GesturePointerType,\n Listeners\n} from \"./gesture-event\"\n\nconst ADD_EVENT_LISTENER = __zone_symbol__(\"addEventListener\")\nconst REMOVE_EVENT_LISTENER = __zone_symbol__(\"removeEventListener\")\nconst DISPATCH_EVENT = __zone_symbol__(\"dispatchEvent\")\n\ntype GesturesToEventsType<T extends Array<Gesture>> =\n T extends Array<infer G> ? (G extends Gesture ? GestureEvent<G> : never) : never\n\ntype GestureEventDiscriminator<T> = T extends { type: infer N } ? { type: N } & T : never\n\nexport type GestureWatchReturns<T extends Array<Gesture>> = Observable<\n GestureEventDiscriminator<GesturesToEventsType<T>>\n>\n\nexport type GestureListenReturns<T extends Array<Gesture>> = Observable<GesturesToEventsType<T>>\n\ninterface BeginState {\n detail: GestureDetail\n gestures: Map<Gesture, GestureCaptureState>\n includeScrollDistance: boolean\n}\n\ninterface CaptureState {\n events: GestureDetail[]\n gestures: BeginState[\"gestures\"]\n includeScrollDistance: BeginState[\"includeScrollDistance\"]\n}\n\ninterface CaptureSelectState {\n events: GestureDetail[]\n gesture?: Gesture\n watchers?: Array<Watcher>\n}\n\ninterface Watcher {\n readonly el: HTMLElement\n readonly gesture: Gesture\n}\n\nconst SCROLL_LISTENER_OPTIONS: AddEventListenerOptions = { passive: true, capture: true }\n\n@Injectable({ providedIn: \"root\" })\nexport class GestureService {\n readonly #zone = inject(NgZone)\n readonly #document = inject(DOCUMENT)\n\n #watchers: Watcher[] = []\n readonly #trigger = new Subject<GestureDetail>()\n\n readonly #moving: Observable<GestureDetail> = merge(\n ...Object.keys(Listeners)\n .filter(name => Listeners[name].phase === GesturePhase.Moving)\n .map(name => this.#listen(name, Listeners[name]))\n ).pipe(share())\n\n readonly #end: Observable<GestureDetail> = merge(\n ...Object.keys(Listeners)\n .filter(name => Listeners[name].phase === GesturePhase.End)\n .map(name => this.#listen(name, Listeners[name]))\n ).pipe(share())\n\n readonly #eventStream = merge(this.#moving, this.#end).pipe(share())\n\n readonly #begin = new Observable((dst: Subscriber<BeginState>) => {\n let pointerType: GesturePointerType | undefined\n\n return this.#trigger\n .pipe(\n filter(event => {\n if (pointerType == null) {\n pointerType = event.pointerType\n }\n\n return event.pointerType === pointerType\n }),\n connect(events =>\n merge(\n events,\n // reset pointerType on end, after 200ms, because touchend is maybe followed by a mouse event\n this.#end.pipe(\n debounceTime(200),\n tap(() => {\n pointerType = undefined\n this.#enableTouchAction()\n }),\n filter(() => false)\n )\n )\n ),\n // Select active watchers\n map((detail: Mutable<GestureDetail>) => {\n updatePointers(detail)\n const eventTarget = detail.origin.target as HTMLElement\n detail.target = eventTarget\n let includeScrollDistance = false\n const gestures = this.#watchers\n .filter(\n ({ gesture, el }) =>\n (el === eventTarget || (\"contains\" in el && el.contains(eventTarget))) &&\n gesture.shouldCapture(detail)\n )\n .reduce(\n (gestures, { gesture }) => {\n if (!gestures.has(gesture)) {\n includeScrollDistance = includeScrollDistance || gesture.includeScrollDistance\n gestures.set(gesture, GestureCaptureState.Unchecked)\n }\n return gestures\n },\n new Map() as BeginState[\"gestures\"]\n )\n\n return { detail: detail, gestures, includeScrollDistance } satisfies BeginState\n }),\n filter(({ gestures }) => gestures.size > 0),\n tap(this.#disableTouchAction)\n // finalize(() => console.log(\"FINALIZE BEGIN\"))\n )\n .subscribe(dst)\n })\n\n readonly #gesture = this.#begin.pipe(\n switchMap(({ detail: startEvent, gestures, includeScrollDistance }) => {\n const pointerType = startEvent.pointerType\n const startAt = startEvent.origin.timeStamp\n const targetEl = startEvent.origin.target as HTMLElement\n const dispatchEvent = targetEl[DISPATCH_EVENT].bind(targetEl)\n\n const eventStreamInit = this.#eventStream.pipe(\n startWith(startEvent),\n filter(event => event.pointerType === pointerType)\n )\n\n const eventStreamSource = !includeScrollDistance\n ? eventStreamInit\n : combineLatest([eventStreamInit, this.#scrollDistance(targetEl)]).pipe(\n map(([src, distance]) => {\n ;(src as Mutable<GestureDetail>).scrollDistance = distance\n return src\n })\n )\n\n const eventStream = eventStreamSource.pipe(\n scan(\n (state, curr) =>\n updatePointers({\n ...state,\n ...curr,\n target: targetEl,\n elapsed: curr.origin.timeStamp - startAt!\n }),\n startEvent\n ),\n takeWhile(event => event.phase !== GesturePhase.End, true),\n // finalize(() => console.log(\"FINALIZE STREAM\")),\n share()\n )\n\n const captureState = eventStream.pipe(\n connect(src => {\n const state: CaptureState = { events: [], gestures, includeScrollDistance }\n return merge(\n src.pipe(tap(event => state.events.push(event))),\n ...Array.from(gestures.keys())\n .sort(sortByPripority)\n .map(gesture =>\n gesture.capture(src.pipe(filter(gesture.shouldCapture.bind(gesture)))).pipe(\n takeWhile(result => result !== GestureCaptureState.Skip, true),\n tap(result => gestures.set(gesture, result))\n )\n )\n ).pipe(map(() => state))\n })\n // finalize(() => console.log(\"FINALIZE CAPTURE\"))\n )\n\n const selectGesture = captureState.pipe(\n map(state => {\n const partitions: { [k in GestureCaptureState]?: Gesture[] } = {}\n\n for (const [gesture, captureState] of state.gestures) {\n const partition = (partitions[captureState] ??= [])\n partition.push(gesture)\n }\n\n if (partitions[GestureCaptureState.Instant] != null) {\n return {\n gesture: partitions[GestureCaptureState.Instant].sort(sortByPripority)[0],\n events: state.events\n } as CaptureSelectState\n }\n\n // while not all gestures return from Gesture.capture\n if (partitions[GestureCaptureState.Unchecked] != null) {\n return null\n }\n\n // while has pending, the capture is continued\n if (partitions[GestureCaptureState.Pending] != null) {\n return null\n }\n\n // no pendig & has maybe\n if (partitions[GestureCaptureState.Maybe] != null) {\n return {\n gesture: partitions[GestureCaptureState.Maybe].sort(sortByPripority)[0],\n events: state.events\n } as CaptureSelectState\n }\n\n // no pending & no maybe & no terminate\n // so, nothign matched\n return { events: state.events } as CaptureSelectState\n }),\n takeWhile(isFalsy, true),\n filter(isTruthy),\n takeWhile(v => v!.gesture != null, false)\n // tap((v: CaptureSelectState) => v.events.forEach(({ origin }) => preventDefault(origin)))\n // finalize(() => console.log(\"FINALIZE SELECT\"))\n ) as Observable<Required<CaptureSelectState>>\n\n return selectGesture.pipe(\n switchMap(({ events, gesture }) =>\n gesture\n .handle(\n eventStream.pipe(\n startWith(...events),\n tap(({ origin }) => preventDefault(origin)),\n filter(gesture.isRelevantEvent.bind(gesture))\n )\n )\n .pipe(\n takeWhile(v => v.phase !== GesturePhase.End, true),\n tap(detail =>\n dispatchEvent(\n new CustomEvent(gesture.type, { detail, bubbles: true, cancelable: true })\n )\n )\n // finalize(() => console.log(\"GESTURE FINALIZE\"))\n )\n ),\n // finalize(() => console.log(\"FINALIZE RESULT\")),\n finalize(this.#enableTouchAction)\n )\n }),\n share()\n )\n\n constructor() {\n const triggers = merge(\n ...Object.keys(Listeners)\n .filter(name => Listeners[name].phase === GesturePhase.Start)\n .map(name => this.#listen(name, Listeners[name]))\n )\n triggers.pipe(takeUntilDestroyed()).subscribe(this.#trigger)\n }\n\n listen<T extends Array<Gesture>>(el: ElementInput, ...gestures: T): GestureListenReturns<T> {\n return new Observable((dst: Subscriber<GestureDetail>) =>\n this.#zone.runOutsideAngular(() => {\n const element = coerceElement(el)\n const next = dst.next.bind(dst)\n for (const gesture of gestures) {\n element[ADD_EVENT_LISTENER](gesture.type as any, next)\n dst.add(element[REMOVE_EVENT_LISTENER].bind(element, gesture.type as any, next as any))\n }\n dst.add(this.#watch(element, ...gestures).subscribe())\n })\n ) as any\n }\n\n #watch<T extends Array<Gesture>>(el: ElementInput, ...gestures: T): GestureWatchReturns<T> {\n return new Observable((dst: Subscriber<GestureDetail>) =>\n this.#zone.runOutsideAngular(() => {\n const element = coerceElement(el)\n const watchers = gestures.map(gesture => {\n return { gesture, el: element }\n })\n this.#add(watchers)\n dst.add(this.#gesture.subscribe(dst))\n return () => {\n this.#remove(watchers)\n }\n })\n ) as any\n }\n\n #add(watchers: Watcher[]) {\n this.#watchers = this.#watchers.concat(watchers)\n }\n\n #remove(watchers: Watcher[]) {\n this.#watchers = this.#watchers.filter(v => !watchers.includes(v))\n }\n\n #listen(name: string, config: GestureListenerConfig) {\n const { phase, pointerType, options } = config\n\n return new Observable((dst: Subscriber<GestureDetail>) =>\n this.#zone.runOutsideAngular(() => {\n const listener = (origin: GestureOrigin) => {\n if (origin.defaultPrevented) {\n return\n }\n dst.next({ origin, phase, pointerType } as GestureDetail)\n }\n\n // console.log(\"addEventListener\", name)\n this.#document[ADD_EVENT_LISTENER](name as keyof DocumentEventMap, listener as any, options)\n return () => {\n // console.log(\"removeEventListener\", name)\n this.#document[REMOVE_EVENT_LISTENER](name as keyof DocumentEventMap, listener as any, options)\n }\n })\n )\n }\n\n #scrollDistance(element: Element): Observable<Position> {\n const scrollPosition = () => {\n let x = 0\n let y = 0\n let p = element\n do {\n x += p.scrollLeft ?? 0\n y += p.scrollTop ?? 0\n p = p.parentNode as Element\n } while (p != null)\n return { x, y }\n }\n\n return new Observable((dst: Subscriber<Position>) =>\n this.#zone.runOutsideAngular(() => {\n const initial = scrollPosition()\n const listener = () => {\n const current = scrollPosition()\n dst.next({ x: current.x - initial.x, y: current.y - initial.y })\n }\n dst.next({ x: 0, y: 0 })\n this.#document[ADD_EVENT_LISTENER](\"scroll\", listener, SCROLL_LISTENER_OPTIONS)\n return () => {\n this.#document[REMOVE_EVENT_LISTENER](\"scroll\", listener, SCROLL_LISTENER_OPTIONS)\n }\n })\n )\n }\n\n #lastTouchAction?: string\n #disableTouchAction = (): void => {\n if (this.#lastTouchAction == null) {\n this.#lastTouchAction = window.getComputedStyle(this.#document.body).touchAction\n this.#document.body.style.touchAction = \"none\"\n }\n }\n\n #enableTouchAction = (): void => {\n if (this.#lastTouchAction != null) {\n this.#document.body.style.touchAction = this.#lastTouchAction\n this.#lastTouchAction = undefined\n }\n }\n}\n\nfunction sortByPripority(a: Gesture, b: Gesture) {\n return b.priority - a.priority\n}\n\nfunction pointersFromEvent(event: MouseEvent | TouchEvent): Position[] {\n if (event instanceof MouseEvent) {\n return [\n {\n x: event.clientX,\n y: event.clientY\n }\n ]\n } else {\n return Array.from(event.touches).map(t => {\n return { x: t.clientX, y: t.clientY }\n })\n }\n}\n\nfunction updatePointers(state: Mutable<GestureDetail>): GestureDetail {\n if (state.phase === GesturePhase.Start) {\n state.pointers = pointersFromEvent(state.origin).map(v => {\n return { start: v, current: v, distance: { x: 0, y: 0 }, direction: { x: 0, y: 0 } }\n })\n } else if (state.pointers) {\n const pointers = pointersFromEvent(state.origin)\n if (pointers.length === 0) {\n return state\n }\n\n state.pointers = state.pointers.map((v, i) => {\n const p = pointers[i]\n return {\n start: v.start,\n current: p,\n distance: { x: p.x - v.start.x, y: p.y - v.start.y },\n direction: { x: direction(v.start.x, p.x), y: direction(v.start.y, p.y) }\n }\n })\n }\n\n return state\n}\n\nfunction direction(prev: number, curr: number): -1 | 0 | 1 {\n return curr > prev ? 1 : curr < prev ? -1 : 0\n}\n\nfunction preventDefault(event: Event) {\n if (event.cancelable && !event.defaultPrevented) {\n // console.log(`PREVENT ${event.type}`)\n event.preventDefault()\n }\n}\n","import type { UiStateDetails } from \"./ui-state\"\n\nexport type CompiledSelector = (state: UiStateDetails) => boolean\n\nexport const enum TokenType {\n Any = 1,\n Name = 2,\n Negate = 3,\n Or = 4,\n And = 5,\n Subscript = 7,\n MultiSubscript = 8\n}\n\nexport interface AstBase {\n begin: number\n end: number\n}\n\nexport interface AstAny extends AstBase {\n type: TokenType.Any\n}\n\nexport interface AstName extends AstBase {\n type: TokenType.Name\n value: string\n}\n\nexport interface AstNegate extends AstBase {\n type: TokenType.Negate\n value: SelectorAst\n}\n\nexport interface AstOr extends AstBase {\n type: TokenType.Or\n left: SelectorAst\n right: SelectorAst\n}\n\nexport interface AstAnd extends AstBase {\n type: TokenType.And\n left: SelectorAst\n right: SelectorAst\n}\n\nexport interface AstSubscript extends AstBase {\n type: TokenType.Subscript\n base: AstName\n subscript: AstAny | AstName\n}\n\nexport interface AstMultiSubscript extends AstBase {\n type: TokenType.MultiSubscript\n base: AstName\n subscripts: AstName[]\n}\n\nexport type SelectorAst = AstAny | AstName | AstNegate | AstOr | AstAnd | AstSubscript | AstMultiSubscript\n\nconst COMPILE_CACHE: { [key: string]: CompiledSelector } = {}\nexport function compile(selector: string): CompiledSelector {\n return (COMPILE_CACHE[selector] ??= _compile(parse(selector)))\n}\n\nclass Cursor {\n position: number = 0\n\n get ch() {\n return this.data[this.position]\n }\n\n constructor(readonly data: string) {}\n\n inc(value: number = 1) {\n this.position += value\n return this\n }\n\n eatWs() {\n let end = this.position\n while (end < this.data.length && /[ \\r\\n\\t]/.test(this.data[end])) {\n end++\n }\n this.position = end\n return this\n }\n\n is(ch: string) {\n if (ch.length === 1) {\n return this.ch === ch\n }\n const begin = this.position\n const end = begin + ch.length\n return this.data.substring(begin, end) === ch\n }\n\n eof() {\n return this.position >= this.data.length\n }\n\n set(position: number) {\n this.position = position\n return this\n }\n}\n\n/**\n * expression:\n * - \"*\": any\n * - \"name without dot\": top level: eg. \"busy\" or \"disabled\", this is equal to \"busy.*\"\n * - \"name with dot\": nested: eg. \"busy.self\" or \"busy.loading\"\n * - negate: \"!busy\", \"!busy.*\", \"!busy.save\"\n * - OR: \"busy.* || !disabled.*\"\n * - AND: \"busy.* && !disabled.*\"\n * - GROUP: \"(busy || disabled) && !readonly\"\n * - Shorted of multiple source of same base: \"busy{load,save}\", if one of load or save is true, the result is true\n */\nexport function parse(selector: string): SelectorAst {\n const cursor = new Cursor(selector)\n const res = expression(cursor.eatWs())\n if (res == null) {\n throw new Error(`invalid selector: ${selector}`)\n }\n\n if (!cursor.eof()) {\n throw new Error(`unexpected charcter: ${selector[res.end]} at ${res.end}`)\n }\n return res\n}\n\nfunction expression(cursor: Cursor) {\n return binary(cursor) || leftExpr(cursor)\n}\n\nfunction leftExpr(cursor: Cursor) {\n const begin = cursor.position\n const left = unary(cursor) || group(cursor) || load(cursor)\n if (left != null) {\n return left\n }\n cursor.set(begin)\n return null\n}\n\nfunction group(cursor: Cursor): SelectorAst | null {\n const begin = cursor.position\n if (cursor.is(\"(\")) {\n const expr = expression(cursor.inc().eatWs())\n if (cursor.eatWs().is(\")\")) {\n cursor.inc()\n return binary(cursor.eatWs(), expr) || expr\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction binary(cursor: Cursor, left: SelectorAst | null = null): SelectorAst | null {\n const begin = cursor.position\n left = left ?? leftExpr(cursor)\n if (left != null) {\n cursor.eatWs()\n const result = and(left, cursor) || or(left, cursor)\n if (result != null) {\n return result\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction and(left: SelectorAst, cursor: Cursor): AstAnd | null {\n if (cursor.is(\"&&\")) {\n cursor.inc(2)\n const right = expression(cursor.eatWs())\n if (right == null) {\n return null\n }\n return { type: TokenType.And, left, right, begin: left.begin, end: cursor.position }\n }\n return null\n}\n\nfunction or(left: SelectorAst, cursor: Cursor): AstOr | null {\n if (cursor.is(\"||\")) {\n cursor.inc(2)\n const right = expression(cursor.eatWs())\n if (right == null) {\n return null\n }\n return { type: TokenType.Or, left, right, begin: left.begin, end: cursor.position }\n }\n return null\n}\n\nfunction unary(cursor: Cursor): SelectorAst | null {\n const begin = cursor.position\n if (cursor.is(\"!\")) {\n const expr = leftExpr(cursor.inc().eatWs())\n if (expr != null) {\n return { type: TokenType.Negate, value: expr, begin, end: cursor.position }\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction load(cursor: Cursor): AstAny | AstName | AstSubscript | AstMultiSubscript | null {\n cursor.eatWs()\n const _any = any(cursor)\n if (_any != null) {\n return _any\n }\n\n const base = name(cursor)\n if (base == null) {\n return null\n }\n\n cursor.eatWs()\n const sub = loadSingle(cursor) || loadMulti(cursor)\n if (sub == null) {\n return base\n } else if (Array.isArray(sub)) {\n return {\n type: TokenType.MultiSubscript,\n base,\n subscripts: sub,\n begin: base.begin,\n end: sub[sub.length - 1].end\n }\n } else {\n return { type: TokenType.Subscript, base, subscript: sub, begin: base.begin, end: sub.end }\n }\n}\n\nfunction loadSingle(cursor: Cursor): AstAny | AstName | null {\n const begin = cursor.position\n if (cursor.is(\".\")) {\n cursor.inc().eatWs()\n const prop = any(cursor) || name(cursor)\n if (prop != null) {\n return prop\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction loadMulti(cursor: Cursor): AstName[] | null {\n const begin = cursor.position\n if (cursor.is(\"{\")) {\n const names = [] as AstName[]\n let entry: AstName | null = null\n\n cursor.inc().eatWs()\n while ((entry = name(cursor))) {\n names.push(entry)\n cursor.eatWs()\n\n if (cursor.is(\",\")) {\n cursor.inc()\n }\n\n cursor.eatWs()\n if (cursor.is(\"}\")) {\n if (names.length === 0) {\n throw new Error(\"expected name\")\n }\n cursor.inc()\n return names\n }\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction name(cursor: Cursor): AstName | null {\n const begin = cursor.position\n while (!cursor.eof() && isNameCh(cursor.ch)) {\n cursor.inc()\n }\n if (cursor.position > begin) {\n return { type: TokenType.Name, begin, end: cursor.position, value: cursor.data.slice(begin, cursor.position) }\n }\n cursor.set(begin)\n return null\n}\n\nfunction isNameCh(ch: string): boolean {\n return /[^.,{}()!\\s&|]/.test(ch)\n}\n\nfunction any(cursor: Cursor): AstAny | null {\n if (cursor.is(\"*\")) {\n const begin = cursor.position\n cursor.inc()\n return { type: TokenType.Any, begin, end: cursor.position }\n }\n return null\n}\n\nfunction _compile(ast: SelectorAst, parent?: string): CompiledSelector {\n switch (ast.type) {\n case TokenType.Any:\n return compileAny(ast, parent)\n case TokenType.Subscript:\n return compileSubscript(ast, parent)\n case TokenType.MultiSubscript:\n return compileMultiSubscript(ast, parent)\n case TokenType.Name:\n return compileName(ast, parent)\n case TokenType.Negate:\n return compileNot(_compile(ast.value, parent))\n case TokenType.Or:\n return compileOr(_compile(ast.left, parent), _compile(ast.right, parent))\n case TokenType.And:\n return compileAnd(_compile(ast.left, parent), _compile(ast.right, parent))\n }\n return () => false\n}\n\nfunction compileAny(ast: AstAny, parent?: string): CompiledSelector {\n if (parent) {\n return v => {\n if (v[parent] == null) {\n return false\n }\n return Object.values(v[parent]).some(v => v === true)\n }\n } else {\n return v => {\n for (const entry of Object.values(v)) {\n if (Object.values(entry).some(v => v === true)) {\n return true\n }\n }\n return false\n }\n }\n}\n\nfunction compileSubscript(ast: AstSubscript, parent?: string): CompiledSelector {\n parent ??= ast.base.value\n\n if (ast.subscript.type === TokenType.Any) {\n return compileAny(ast.subscript, parent)\n }\n if (ast.subscript.type === TokenType.Name) {\n return compileName(ast.subscript, parent)\n }\n\n return () => false\n}\n\nfunction compileMultiSubscript(ast: AstMultiSubscript, parent?: string): CompiledSelector {\n parent ??= ast.base.value\n const values = ast.subscripts.map(v =>\n compileSubscript(\n { type: TokenType.Subscript, base: ast.base, subscript: v, begin: v.begin, end: v.end },\n parent\n )\n )\n\n if (values.length === 1) {\n return values[0]\n } else {\n let result = values[0]\n for (let i = 1; i < values.length; i++) {\n result = compileOr(result, values[i])\n }\n return result\n }\n}\n\nfunction compileName(ast: AstName, parent?: string): CompiledSelector {\n if (parent) {\n return v => {\n if (v[parent] == null) {\n return false\n }\n return !!v[parent][ast.value]\n }\n } else {\n return v => {\n const many = v[ast.value]\n return many != null && Object.values(many).some(v => v === true)\n }\n }\n}\n\nfunction compileNot(compiled: CompiledSelector): CompiledSelector {\n return v => !compiled(v)\n}\n\nfunction compileOr(left: CompiledSelector, right: CompiledSelector): CompiledSelector {\n return v => left(v) || right(v)\n}\n\nfunction compileAnd(left: CompiledSelector, right: CompiledSelector): CompiledSelector {\n return v => left(v) && right(v)\n}\n","import { computed, Directive, inject, signal, untracked } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { deepClone } from \"@ngutil/common\"\n\nimport { compile as compileSelector } from \"./selector\"\n\n/**\n * {\n * busy: {\n * self: true,\n * parent: false,\n * disabled: false\n * }\n * }\n */\nexport type UiStateDetails = { readonly [key: string]: UiStateEntry }\n\nexport type UiStateEntry = { readonly [key: UiStateSource]: boolean }\n\nexport type UiStateValue = { readonly [key: string]: boolean }\n\nexport type UiStateSource = \"parent\" | \"self\" | string\n\nexport type UiStateSelector = string\n\n@Directive({})\nexport class UiState<N extends string = string, S extends UiStateSource = UiStateSource> {\n readonly #parent = inject(UiState, { skipSelf: true, optional: true })\n\n get root(): UiState {\n return this.#parent?.root || this\n }\n\n readonly #self = signal<UiStateDetails>({})\n\n readonly merged = computed<UiStateDetails>(() => {\n const parent = this.#parent?.merged()\n const self = this.#self()\n if (parent) {\n const result: Mutable<UiStateDetails> = deepClone(self)\n\n for (const [k, v] of Object.entries(parent)) {\n const parentIsTrue = Object.values(v).includes(true)\n const { self: _, ...parentWihtoutSelf } = v\n if (result[k] != null) {\n result[k] = {\n ...parentWihtoutSelf,\n ...result[k],\n parent: parentIsTrue\n }\n } else {\n result[k] = { ...parentWihtoutSelf, parent: parentIsTrue }\n }\n }\n\n return result\n } else {\n return self\n }\n })\n\n readonly value = computed<UiStateValue>(() => {\n const merged = this.merged()\n const result: Mutable<UiStateValue> = {}\n\n for (const [k, v] of Object.entries(merged)) {\n result[k] = Object.values(v).includes(true)\n }\n\n return result\n })\n\n readonly inertSelector = signal(\"busy || disabled\")\n\n set(name: N, value: boolean, source: S = \"self\" as S) {\n if (source === \"parent\") {\n console.error(\"can't set parent state\")\n return\n }\n\n const current = untracked(this.#self)\n const entry = current[name] || {}\n\n if (entry[source] !== value) {\n this.#self.set({ ...current, [name]: { ...entry, [source]: value } })\n }\n\n // TODO: maybe some option to propagate to root\n // const root = this.root\n // if (source !== \"self\" && root !== this) {\n // root.set(name, value, source)\n // }\n }\n\n is(selector: UiStateSelector = \"*\"): boolean {\n return compileSelector(selector)(this.merged())\n }\n\n intercept(name: N, source: S) {\n return <S>(src: Observable<S>) => this.wrap(src, name, source)\n }\n\n wrap<T>(observable: Observable<T>, name: N, source: S): Observable<T> {\n return new Observable<T>(subscriber => {\n this.set(name, true, source)\n subscriber.add(() => this.set(name, false, source))\n return observable.subscribe(subscriber)\n })\n }\n\n isInert() {\n return this.is(this.inertSelector())\n }\n}\n","import { computed, Directive, effect, inject, Signal } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { coerceBoolAttr } from \"@ngutil/common\"\n\nimport { UiState } from \"./ui-state\"\n\nexport const NOTSET: any = Symbol(\"NOTSET\")\n\n@Directive()\nexport abstract class AbstractUiState<N extends string> {\n readonly state: UiState<N> = inject(UiState)\n\n abstract readonly input: Signal<boolean>\n abstract readonly when: Signal<string>\n\n readonly yes = computed(() => {\n const when = this.when()\n if (when !== NOTSET) {\n // TODO: add prefix if only provide loading, or simething simple selector\n return this.state.is(`${this.name}.self || (${when})`)\n }\n return this.state.is(this.name)\n })\n readonly no = computed(() => !this.yes())\n\n constructor(readonly name: N) {\n effect(\n () => {\n const input = this.input()\n if (input !== NOTSET) {\n this.state.set(name, !!coerceBoolAttr(input))\n }\n },\n { allowSignalWrites: true }\n )\n }\n\n set(value: boolean, source: string) {\n this.state.set(this.name, value, source)\n }\n\n intercept(source: string) {\n return this.state.intercept(this.name, source)\n }\n\n wrap<T>(observable: Observable<T>, source: string): Observable<T> {\n return this.state.wrap(observable, this.name, source)\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuBusy], [nuBusyWhen]\",\n exportAs: \"busy\",\n host: {\n \"[attr.aria-busy]\": \"yes() ? 'true' : 'false'\",\n \"[attr.inert]\": \"state.isInert() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class BusyDirective extends AbstractUiState<\"busy\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuBusy\" })\n readonly when = input(NOTSET as string, { alias: \"nuBusyWhen\" })\n\n constructor() {\n super(\"busy\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuDirty], [nuDirtyWhen]\",\n exportAs: \"dirty\",\n host: {\n \"[attr.dirty]\": \"yes() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class DirtyDirective extends AbstractUiState<\"dirty\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuDirty\" })\n readonly when = input(NOTSET as string, { alias: \"nuDirtyWhen\" })\n\n constructor() {\n super(\"dirty\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuDisabled], [nuDisabledWhen]\",\n exportAs: \"disabled\",\n host: {\n \"[attr.aria-disabled]\": \"yes() ? 'true' : 'false'\",\n \"[attr.disabled]\": \"yes() ? '' : null\",\n \"[attr.inert]\": \"state.isInert() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class DisabledDirective extends AbstractUiState<\"disabled\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuDisabled\" })\n readonly when = input(NOTSET as string, { alias: \"nuDisabledWhen\" })\n\n constructor() {\n super(\"disabled\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuReadonly], [nuReadonlyWhen]\",\n exportAs: \"readonly\",\n host: {\n \"[attr.aria-readonly]\": \"yes() ? 'true' : 'false'\",\n \"[attr.readonly]\": \"yes() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class ReadonlyDirective extends AbstractUiState<\"readonly\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuReadonly\" })\n readonly when = input(NOTSET as string, { alias: \"nuReadonlyWhen\" })\n\n constructor() {\n super(\"readonly\")\n }\n}\n","import { Directive } from \"@angular/core\"\nimport { toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { animationFrames, map, Observable, of, scan, shareReplay, startWith, Subject, switchMap, takeWhile } from \"rxjs\"\n\nimport { clamp } from \"es-toolkit\"\nimport { Mutable } from \"utility-types\"\n\nimport { DeepReadonly } from \"@ngutil/common\"\n\nexport interface ProgressCommon {\n readonly message?: string\n readonly [other: string]: unknown\n}\n\nexport interface ProgressLax {\n readonly type: \"lax\"\n readonly predictedTime: number\n // readonly updateInterval: number\n}\n\nexport interface ProgressFix {\n readonly type: \"fix\"\n readonly percent: number\n}\n\nexport type Progress = (ProgressLax | ProgressFix) & ProgressCommon\n\nexport interface ProgressSegmentInput {\n readonly name: string\n readonly distribution?: number\n readonly progress: DeepReadonly<Progress>\n}\n\nexport interface ProgressSegement extends ProgressSegmentInput {\n ratio: number\n share: number\n done: boolean\n laxBegin?: number\n}\n\nexport type ProgressSegements = { [key: string]: ProgressSegement }\n\nconst SEGMENT_REGISTER: Progress = { type: \"fix\", percent: 0 }\nconst SEGMENT_COMPLETE: Progress = { type: \"fix\", percent: 1 }\n\n@Directive()\nexport class ProgressState {\n readonly #segments: { [key: string]: ProgressSegmentRef } = {}\n\n readonly #input = new Subject<ProgressSegmentInput>()\n\n readonly #state: Observable<ProgressSegements> = this.#input.pipe(\n startWith(null),\n scan((state, input) => {\n if (Object.keys(state).length === 0) {\n state = this.#initialState()\n }\n\n if (input == null) {\n return state\n }\n\n let current = state[input.name] ?? { ratio: 0, share: 0, done: false }\n current = { ...current, ...input }\n\n if (input.progress.type === \"lax\") {\n delete current.laxBegin\n current.done = false\n }\n\n if (input.progress.type === \"fix\" && input.progress.percent < 1) {\n current.done = false\n }\n\n return { ...state, [input.name]: { ...current, ...input } }\n }, {} as ProgressSegements),\n switchMap(state => {\n const slist = Object.values(state) as Array<Mutable<ProgressSegement>>\n const min = slist.reduce((min, current) => Math.min(min, current.distribution || 0), Infinity) || 1\n const totalDistribution = slist.reduce((total, current) => total + (current.distribution || min), 0)\n const hasLax = slist.some(segment => segment.progress.type === \"lax\")\n const trigger = hasLax ? animationFrames() : of({ timestamp: performance.now() })\n\n return trigger.pipe(\n map(({ timestamp }) => {\n for (const segment of slist) {\n if (segment.distribution == null) {\n segment.distribution = min\n }\n segment.ratio = segment.distribution / totalDistribution + 0.0001\n\n let percent: number\n\n if (segment.progress.type === \"lax\") {\n if (segment.laxBegin == null) {\n segment.laxBegin = timestamp\n }\n\n percent = (timestamp - segment.laxBegin) / segment.progress.predictedTime\n if (percent >= 0.8) {\n const final = (timestamp - segment.laxBegin) / (segment.progress.predictedTime * 50)\n percent = 0.8 + Math.log1p(final)\n }\n } else {\n delete segment.laxBegin\n percent = clamp(segment.progress.percent, 0, 1)\n }\n\n segment.share = percent * segment.ratio\n segment.done = percent >= 1\n }\n\n return state\n }),\n takeWhile(state => Object.values(state).some(segment => !segment.done), true)\n )\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n readonly value$: Observable<DeepReadonly<ProgressSegements>> = this.#state\n readonly value = toSignal(this.value$)\n\n readonly percent$: Observable<number> = this.value$.pipe(\n map(value => {\n if (value == null) {\n return 0\n }\n\n return clamp(\n Object.values(value).reduce((a, b) => a + b.share, 0),\n 0,\n 1\n )\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n readonly percent = toSignal(this.percent$)\n\n segment(name: string, distribution: number = 1): ProgressSegmentRef {\n const segment =\n this.#segments[name] ?? (this.#segments[name] = new ProgressSegmentRef(this.#input, name, distribution))\n segment.next(SEGMENT_REGISTER)\n return segment\n }\n\n connect(state: ProgressState, name: string, distribution?: number): Observable<void> {\n return new Observable(() => {\n const segment = this.segment(name, distribution)\n return state.percent$.subscribe(percent => {\n segment.next({ type: \"fix\", percent })\n })\n })\n }\n\n #initialState() {\n return Object.values(this.#segments).reduce((res, segment) => {\n if (segment.value) {\n res[segment.name] = {\n name: segment.name,\n distribution: segment.distribution,\n progress: segment.value,\n ratio: 0,\n share: 0,\n done: false\n }\n }\n return res\n }, {} as ProgressSegements)\n }\n}\n\nexport class ProgressSegmentRef {\n readonly #subject: Subject<ProgressSegmentInput>\n\n set distribution(value: number | undefined) {\n if (this.#distribution !== value) {\n this.#distribution = value\n if (this.#value != null) {\n this.#next(this.#value)\n }\n }\n }\n\n get distribution() {\n return this.#distribution\n }\n #distribution?: number\n\n get value() {\n return this.#value\n }\n #value?: Progress\n\n constructor(\n subject: Subject<ProgressSegmentInput>,\n public readonly name: string,\n distribution?: number\n ) {\n this.#subject = subject\n this.#distribution = distribution\n }\n\n next(progress: Progress) {\n return this.#next(progress)\n }\n\n complete() {\n return this.#next(SEGMENT_COMPLETE)\n }\n\n #next(progress: Progress) {\n this.#value = progress\n this.#subject.next({ name: this.name, distribution: this.distribution, progress })\n return this\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { BusyDirective } from \"./busy.directive\"\nimport { DirtyDirective } from \"./dirty.directive\"\nimport { DisabledDirective } from \"./disabled.directive\"\nimport { ReadonlyDirective } from \"./readonly.directive\"\n\nexport * from \"./abstract\"\nexport * from \"./busy.directive\"\nexport * from \"./disabled.directive\"\nexport * from \"./progress-state\"\nexport * from \"./readonly.directive\"\nexport * from \"./dirty.directive\"\nexport * from \"./ui-state\"\n\nconst entries = [BusyDirective, DirtyDirective, DisabledDirective, ReadonlyDirective]\n\n@NgModule({\n imports: entries,\n exports: entries\n})\nexport class UiStateModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EVENT_OPTIONS","_a","i1.FocusState","compileSelector"],"mappings":"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"}
1
+ {"version":3,"file":"ngutil-aria.mjs","sources":["../../../../packages/aria/src/activity/activity.service.ts","../../../../packages/aria/src/focus/focus.service.ts","../../../../packages/aria/src/focus/focus-trap.directive.ts","../../../../packages/aria/src/focus/focus-state.directive.ts","../../../../packages/aria/src/focus/focusable.directive.ts","../../../../packages/aria/src/keystroke/keystroke.service.ts","../../../../packages/aria/src/gestures/gesture-event.ts","../../../../packages/aria/src/gestures/gesture.ts","../../../../packages/aria/src/gestures/gesture-drag.ts","../../../../packages/aria/src/gestures/gesture-longtap.ts","../../../../packages/aria/src/gestures/gesture-tap.ts","../../../../packages/aria/src/gestures/gesture.service.ts","../../../../packages/aria/src/ui-state/selector.ts","../../../../packages/aria/src/ui-state/ui-state.ts","../../../../packages/aria/src/ui-state/abstract.ts","../../../../packages/aria/src/ui-state/busy.directive.ts","../../../../packages/aria/src/ui-state/dirty.directive.ts","../../../../packages/aria/src/ui-state/disabled.directive.ts","../../../../packages/aria/src/ui-state/readonly.directive.ts","../../../../packages/aria/src/ui-state/progress-state.ts","../../../../packages/aria/src/ui-state/index.ts","../../../../packages/aria/src/ngutil-aria.ts"],"sourcesContent":["import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n share,\n shareReplay,\n startWith,\n switchMap,\n take,\n throttleTime,\n timer\n} from \"rxjs\"\n\n// TODO: detect program activity\nexport type ActivityOrigin = \"mouse\" | \"keyboard\" | \"touch\" | \"program\"\n\nexport interface ActivityEvent {\n origin: ActivityOrigin\n type: keyof typeof EVENT_ORIGIN\n node?: Node\n}\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\nconst EVENT_ORIGIN = {\n keydown: \"keyboard\",\n mousedown: \"mouse\",\n mousemove: \"mouse\",\n touchstart: \"touch\"\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class ActivityService {\n readonly #zone = inject(NgZone)\n readonly #doc = inject(DOCUMENT)\n\n readonly events$: Observable<ActivityEvent> = this.#zone.runOutsideAngular(() =>\n merge(\n fromEvent(this.#doc, \"keydown\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"mousedown\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"mousemove\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"touchstart\", EVENT_OPTIONS)\n ).pipe(\n map(event => {\n const type = event.type as ActivityEvent[\"type\"]\n return {\n origin: EVENT_ORIGIN[type] as ActivityOrigin,\n type: type,\n node: event.target as any\n }\n }),\n share()\n )\n )\n\n watchActivity(node?: HTMLElement) {\n if (node) {\n return this.events$.pipe(\n filter(\n event =>\n event.node != null &&\n (event.node === node || (event.node instanceof HTMLElement && event.node.contains(node)))\n ),\n shareReplay(1)\n )\n } else {\n return this.events$\n }\n }\n\n watchInactvity(timeout: number) {\n return this.events$.pipe(\n startWith(null),\n throttleTime(timeout / 2),\n switchMap(() => timer(0, timeout).pipe(take(2))),\n map(v => v !== 0),\n distinctUntilChanged(),\n shareReplay(1)\n )\n }\n}\n","import { FocusTrapFactory } from \"@angular/cdk/a11y\"\nimport { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n BehaviorSubject,\n combineLatest,\n connect,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n Observable,\n of,\n scan,\n shareReplay,\n Subject,\n Subscriber,\n switchMap,\n tap,\n timer\n} from \"rxjs\"\n\nimport { focusable, type FocusableElement, isFocusable } from \"tabbable\"\n\nimport { coerceElement, ElementInput, isEqual, isEqualStrict } from \"@ngutil/common\"\n\nimport { ActivityEvent, ActivityOrigin, ActivityService } from \"../activity\"\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\nexport type FocusOrigin = ActivityOrigin | null\n\nexport interface FocusOriginEvent {\n element: Node\n origin: FocusOrigin\n}\n\ninterface EventState {\n activity?: ActivityEvent\n focus?: Node\n blur?: Node\n nextOrigin?: FocusOrigin\n event?: FocusOriginEvent\n deferred?: FocusOriginEvent\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class FocusService {\n readonly #activity = inject(ActivityService)\n readonly #focusTrap = inject(FocusTrapFactory)\n readonly #zone = inject(NgZone)\n readonly #document = inject(DOCUMENT)\n\n readonly #originOverrides = new BehaviorSubject<Map<Node, ActivityOrigin>>(new Map())\n\n readonly #focus: Observable<Node> = listener(this.#document, this.#zone, \"focus\", EVENT_OPTIONS).pipe(\n connect(focus =>\n this.#zone.runOutsideAngular(() => {\n let lastFocused: Node | null = null\n const sideEffect = new Subject<Node>()\n\n // if element removed form document, emit blur & focus\n const mutation = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.removedNodes.length > 0) {\n for (const removed of Array.from(mutation.removedNodes)) {\n if (removed === lastFocused || removed.contains(lastFocused)) {\n this.#blurSide.next(lastFocused!)\n sideEffect.next(this.#document.activeElement!)\n return\n }\n }\n }\n }\n })\n\n mutation.observe(this.#document, { subtree: true, childList: true })\n return merge(\n focus.pipe(\n tap(node => (lastFocused = node)),\n finalize(() => mutation.disconnect())\n ),\n sideEffect\n )\n })\n ),\n\n distinctUntilChanged(isEqualStrict)\n )\n\n readonly #blurEvent = listener(this.#document, this.#zone, \"blur\", EVENT_OPTIONS)\n readonly #blurSide = new Subject<Node>()\n readonly #blur: Observable<Node> = merge(this.#blurEvent, this.#blurSide).pipe(distinctUntilChanged(isEqualStrict))\n\n readonly events: Observable<FocusOriginEvent> = this.#zone.runOutsideAngular(() => {\n const activity = this.#activity.events$.pipe(\n filter(activity => activity.type !== \"mousemove\"),\n map(activity => ({ activity }) satisfies Partial<EventState>)\n )\n const focus = this.#focus.pipe(map(focus => ({ focus }) satisfies Partial<EventState>))\n const blur = this.#blur.pipe(map(blur => ({ blur }) satisfies Partial<EventState>))\n\n const event = merge(activity, focus, blur).pipe(\n scan<EventState, EventState>((state, curr) => {\n const result: EventState = { ...state, event: undefined, deferred: undefined }\n\n if (curr.blur != null) {\n if (curr.blur === state.focus) {\n result.deferred = { element: curr.blur, origin: null }\n } else if (state.deferred && state.deferred.origin == null) {\n result.deferred = state.deferred\n }\n } else if (curr.focus != null) {\n if (\n curr.focus === document &&\n state.blur === curr.focus &&\n (!state.deferred || !state.deferred.origin)\n ) {\n result.deferred = { element: curr.focus, origin: null }\n result.nextOrigin = \"program\"\n return result\n }\n\n if (state.nextOrigin) {\n result.event = { element: curr.focus, origin: state.nextOrigin }\n result.nextOrigin = undefined\n } else if (state.activity) {\n result.event = { element: curr.focus, origin: state.activity.origin }\n }\n } else if (curr.activity) {\n delete result.nextOrigin\n if (\n state.event &&\n curr.activity.origin !== \"keyboard\" &&\n state.event.origin !== curr.activity.origin\n ) {\n result.deferred = { ...state.event, origin: curr.activity.origin }\n }\n }\n return { ...result, ...curr }\n }, {} as EventState),\n switchMap(state => {\n if (state.deferred) {\n return timer(20).pipe(\n map(() => {\n state.event = state.deferred\n delete state.deferred\n return state\n })\n )\n } else {\n return of(state)\n }\n }),\n map(state => state.event),\n filter(event => !!event)\n )\n\n return combineLatest({ event, overrides: this.#originOverrides }).pipe(\n map(({ event, overrides }) => {\n const override = overrides.get(event.element)\n\n if (override != null) {\n overrides.delete(event.element)\n event.origin = override || event.origin\n }\n\n return event\n }),\n distinctUntilChanged(isEqual),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n })\n\n watch(element: ElementInput) {\n const el = coerceElement(element)\n return this.events.pipe(\n map(event => {\n if (event.element && (event.element === el || el.contains(event.element))) {\n return event\n }\n return { element: el, origin: null } as FocusOriginEvent\n })\n )\n }\n\n focus(node: ElementInput, origin?: ActivityOrigin) {\n if (origin != null) {\n this.#setOrigin(node, origin)\n }\n coerceElement(node).focus()\n }\n\n queryFocusable(inside: ElementInput): FocusableElement[] {\n return focusable(coerceElement(inside), { includeContainer: false })\n }\n\n getFirstFocusable(inside: ElementInput): FocusableElement | undefined {\n return this.queryFocusable(inside)[0]\n }\n\n isFocusable(node: ElementInput): boolean {\n return isFocusable(coerceElement(node))\n }\n\n focusTrap(inside: ElementInput, deferCaptureElements: boolean = false) {\n return this.#focusTrap.create(coerceElement(inside), deferCaptureElements)\n }\n\n #setOrigin(el: ElementInput, origin: ActivityOrigin) {\n const target = coerceElement(el)\n const map = this.#originOverrides.value\n const old = map.get(target)\n if (old !== origin) {\n map.set(target, origin)\n this.#originOverrides.next(map)\n }\n }\n\n #delOrigin(el: ElementInput) {\n const target = coerceElement(el)\n const map = this.#originOverrides.value\n if (map.has(target)) {\n map.delete(target)\n this.#originOverrides.next(map)\n }\n }\n}\n\nfunction listener(doc: Document, zone: NgZone, type: Event[\"type\"], options: AddEventListenerOptions) {\n return new Observable((dst: Subscriber<Node>) =>\n zone.runOutsideAngular(() => {\n const handler = (e: Event) => {\n dst.next(e.target! as Node)\n }\n document.addEventListener(type, handler, options)\n return () => document.removeEventListener(type, handler, options)\n })\n )\n}\n","import { ElementRef, inject } from \"@angular/core\"\n\nimport { BehaviorSubject } from \"rxjs\"\n\nimport { Destructible } from \"@ngutil/common\"\n\nimport { FocusService } from \"./focus.service\"\n\n// TODO: implement\nexport class FocusTrap extends Destructible {\n #manager = inject(FocusService)\n #el = inject(ElementRef<HTMLElement>)\n\n get enabled() {\n return this.#enabled.value\n }\n set enabled(val: boolean) {\n if (this.#enabled.value !== val) {\n this.#enabled.next(val)\n }\n }\n #enabled = new BehaviorSubject<boolean>(true)\n\n enable() {\n this.enabled = true\n }\n\n disable() {\n this.enabled = false\n }\n}\n","import { computed, Directive, ElementRef, inject } from \"@angular/core\"\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { BehaviorSubject, combineLatest, distinctUntilChanged, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport { ConnectProtocol, ElementInput, isElementInput, isEqual } from \"@ngutil/common\"\n\nimport { FocusOrigin, FocusOriginEvent, FocusService } from \"./focus.service\"\n\n@Directive({\n host: {\n \"[attr.focus]\": \"self()\",\n \"[attr.focus-within]\": \"within()\",\n \"[attr.focus-present]\": \"has()\"\n }\n})\nexport class FocusState implements ConnectProtocol {\n readonly #focus = inject(FocusService)\n readonly #el = inject<ElementRef<HTMLElement>>(ElementRef)\n readonly #parent = inject(FocusState, { optional: true, skipSelf: true })\n readonly #default: FocusOriginEvent = { element: this.#el.nativeElement, origin: null }\n\n readonly #self = this.#focus.watch(this.#el).pipe(takeUntilDestroyed(), shareReplay(1))\n\n readonly #connected = new BehaviorSubject<Observable<FocusOriginEvent>[]>([])\n readonly #connEvent = this.#connected.pipe(\n switchMap(values => (values.length === 0 ? of([]) : combineLatest(values))),\n takeUntilDestroyed(),\n map(values => values.filter(v => v.origin != null)),\n map(values => values[0] || this.#default),\n shareReplay(1)\n )\n\n readonly event$: Observable<FocusOriginEvent> = combineLatest([this.#self, this.#connEvent]).pipe(\n // debounceTime(100), // TODO: miért volt ez itt?\n map(([self, conn]) => (self.origin !== null ? self : conn.origin !== null ? conn : this.#default)),\n distinctUntilChanged(isEqual),\n shareReplay(1)\n )\n\n readonly event = toSignal(this.event$, { rejectErrors: true, manualCleanup: true, equal: isEqual })\n\n readonly self = computed<FocusOrigin>(() => {\n const event = this.event()\n if (event == null) {\n return null\n }\n return event.element === this.#el.nativeElement ? event.origin : null\n })\n\n readonly within = computed<FocusOrigin>(() => {\n const event = this.event()\n if (event == null) {\n return null\n }\n return event.element !== this.#el.nativeElement ? event.origin : null\n })\n\n readonly has = computed<FocusOrigin>(() => this.self() || this.within())\n\n constructor() {\n this.#parent?.connect(this).pipe(takeUntilDestroyed()).subscribe()\n // effect(() => {\n // console.log(this.#el.nativeElement, this.has())\n // })\n }\n\n connect(value: FocusState | ElementInput) {\n return new Observable(() => {\n const src = (isElementInput(value) ? this.#focus.watch(value) : value.event$).pipe(shareReplay(1))\n this.#connected.next([...this.#connected.value, src])\n\n return () => {\n let current = this.#connected.value\n const idx = current.indexOf(src)\n if (idx >= 0) {\n current = [...current]\n current.splice(idx, 1)\n this.#connected.next(current)\n }\n }\n })\n }\n}\n","import { computed, Directive, inject, input } from \"@angular/core\"\n\nimport { ConnectProtocol, ElementInput, isElementInput } from \"@ngutil/common\"\n\nimport { FocusState } from \"./focus-state.directive\"\n\n// TODO: what happens when disabled is changed\n\n@Directive({\n selector: \"[nuFocusable]\",\n exportAs: \"nuFocusable\",\n host: {\n \"[attr.tabindex]\": \"_tabindex()\"\n },\n hostDirectives: [FocusState]\n})\nexport class Focusable implements ConnectProtocol {\n readonly state = inject(FocusState)\n\n readonly focusable = input<boolean | number>(true, { alias: \"nuFocusable\" })\n readonly tabindex = input(0, { transform: Number })\n\n readonly _tabindex = computed(() => {\n const focusable = this.focusable()\n const tabindex = this.tabindex()\n\n if (focusable === false) {\n return -1\n }\n\n if (typeof focusable === \"number\") {\n return focusable\n }\n\n if (focusable === true && tabindex != null && !isNaN(tabindex)) {\n return tabindex\n }\n\n return 0\n })\n\n connect(value: Focusable | FocusState | ElementInput) {\n if (value instanceof FocusState || isElementInput(value)) {\n return this.state.connect(value)\n } else {\n return this.state.connect(value.state)\n }\n }\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n distinctUntilChanged,\n EMPTY,\n filter,\n from,\n fromEvent,\n map,\n merge,\n Observable,\n of,\n share,\n shareReplay,\n startWith,\n Subscriber,\n switchMap\n} from \"rxjs\"\n\nimport { coerceElement, ElementInput, isElementInput } from \"@ngutil/common\"\n\nimport { FocusState } from \"../focus\"\n\nexport interface Keystroke {\n // https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n key: KeyboardEvent[\"key\"]\n shift?: boolean\n ctrl?: boolean\n alt?: boolean\n state: \"down\" | \"up\"\n}\n\nexport interface KeystrokeEvent {\n original: KeyboardEvent\n keystroke: Keystroke\n}\n\nexport type KeystrokeActivation = ElementInput | FocusState | Observable<ElementInput | FocusState | boolean>\n\n@Injectable({ providedIn: \"root\" })\nexport class KeystrokeService {\n readonly #document = inject(DOCUMENT)\n readonly #zone = inject(NgZone)\n\n readonly #keyEvent = this.#zone.runOutsideAngular(() =>\n merge(\n fromEvent<KeyboardEvent>(this.#document, \"keydown\", { capture: true, passive: false }),\n fromEvent<KeyboardEvent>(this.#document, \"keyup\", { capture: true, passive: false })\n ).pipe(\n filter(event => event.defaultPrevented === false),\n share()\n )\n )\n\n readonly #focusEvent = this.#zone.runOutsideAngular(() =>\n fromEvent(this.#document, \"focus\", { capture: true, passive: true }).pipe(\n startWith(null),\n map(() => this.#document.activeElement),\n shareReplay(1)\n )\n )\n\n watch(activation: KeystrokeActivation, ...keystrokes: Keystroke[]): Observable<KeystrokeEvent> {\n return new Observable((dst: Subscriber<KeystrokeEvent>) =>\n this.#trigger(activation)\n .pipe(\n distinctUntilChanged(),\n switchMap(enabled => {\n if (enabled) {\n return this.#keyEvent\n } else {\n return EMPTY\n }\n }),\n map(event => {\n if (event.defaultPrevented) {\n return []\n }\n\n const idFromEvent = keystrokeId(eventToKeystroke(event))\n const matches = keystrokes\n .filter(ks => keystrokeId(ks) === idFromEvent)\n .map(ks => {\n return {\n original: event,\n keystroke: ks\n }\n })\n\n if (matches.length > 0) {\n event.preventDefault()\n }\n\n return matches\n }),\n filter(matches => matches.length > 0),\n switchMap(matches => of(...matches))\n )\n .subscribe(dst)\n )\n }\n\n #trigger(activation: KeystrokeActivation): Observable<boolean | HTMLElement> {\n if (isElementInput(activation)) {\n return this.#focusActivation(coerceElement(activation))\n } else if (activation instanceof FocusState) {\n return activation.event$.pipe(map(({ origin }) => origin != null))\n } else {\n return from(activation).pipe(\n switchMap(value => {\n if (isElementInput(value) || value instanceof FocusState) {\n return this.#trigger(value)\n } else {\n return of(value)\n }\n })\n )\n }\n }\n\n #focusActivation(element: HTMLElement): Observable<boolean> {\n return this.#focusEvent.pipe(map(focused => focused === element || element.contains(focused)))\n }\n}\n\nfunction keystrokeId(ks: Keystroke): string {\n let res = ks.key\n if (ks.shift) {\n res += \"+shift\"\n }\n if (ks.ctrl) {\n res += \"+ctrl\"\n }\n if (ks.alt) {\n res += \"+alt\"\n }\n res += `${ks.state}`\n return res\n}\n\nfunction eventToKeystroke(event: KeyboardEvent): Keystroke {\n return {\n key: event.key,\n shift: event.shiftKey,\n ctrl: event.ctrlKey,\n alt: event.altKey,\n state: event.type === \"keyup\" ? \"up\" : \"down\"\n }\n}\n","import { Position } from \"@ngutil/style\"\n\nexport interface GestureDetail {\n readonly origin: GestureOrigin\n readonly target: HTMLElement\n readonly pointerType: GesturePointerType\n readonly phase: GesturePhase\n readonly pointers: ReadonlyArray<GesturePointer>\n readonly timeStamp: number\n readonly elapsed: number\n readonly scrollDistance?: Position\n}\n\nexport type PointersPosition = ReadonlyArray<Readonly<Position>>\n\nexport interface GesturePointer {\n readonly start: Position\n readonly current: Position\n readonly end?: Position\n readonly distance: Position\n readonly direction: { x: -1 | 0 | 1; y: -1 | 0 | 1 }\n}\n\nexport type GestureOrigin = MouseEvent | TouchEvent\n\nexport enum GesturePointerType {\n Mouse = \"mouse\",\n Touch = \"touch\"\n}\n\nexport enum GesturePhase {\n Start = \"start\",\n Moving = \"moving\",\n End = \"end\"\n}\n\nexport interface GestureListenerConfig {\n options?: AddEventListenerOptions\n pointerType: GesturePointerType\n phase: GesturePhase\n}\n\nexport const Listeners: { [key: string]: GestureListenerConfig } = {\n mousedown: {\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n mousemove: {\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n mouseup: {\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n },\n touchstart: {\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n touchmove: {\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n touchend: {\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n },\n touchcancel: {\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n }\n // ,\n // contextmenu: {\n // pointerType: GesturePointerType.Mouse,\n // phase: GesturePhase.Start,\n // options: { capture: true, passive: false }\n // }\n} as const\n","import { Observable } from \"rxjs\"\n\nimport { FunctionKeys, Mutable } from \"utility-types\"\n\nimport { GestureDetail, GesturePointerType, Listeners } from \"./gesture-event\"\n\nexport enum GestureCaptureState {\n // Unchecked\n Unchecked = 0,\n // Pending state\n Pending = 1,\n // Skip capture\n Skip = 2,\n // Determine by priority\n Maybe = 3,\n // Instanlty terminate capture, and fire event\n Instant = 4\n}\n\ntype _GestureOptions = Partial<Omit<Gesture<any>, \"originTypes\" | \"type\" | FunctionKeys<Gesture<any>>>>\nexport type GestureOptions<T extends object> = Partial<Omit<T, keyof Gesture<any> | FunctionKeys<T>>> & _GestureOptions\n\nexport type GestureEvent<G extends Gesture> = G extends Gesture<infer E> & { type: infer T }\n ? CustomEvent<E> & { type: T }\n : never\n\nexport abstract class Gesture<T extends GestureDetail = GestureDetail> {\n /**\n * The name of the gesture\n */\n abstract readonly type: string\n\n /**\n * Gestures that depends on move distance, like drag, use this option\n */\n readonly distanceInclusion: number = 10\n\n /**\n * Gestures thet dependnso on time frame, like longtap, use this option\n */\n readonly timeWithin: number = 300\n\n /**\n * The priority of the gesture\n */\n readonly priority: number = 0\n\n /**\n * Should the gesture include the scroll distance\n */\n readonly includeScrollDistance: boolean = false\n\n /**\n * The pointer types of the gesture\n */\n readonly pointerTypes: Array<GesturePointerType> = [GesturePointerType.Mouse, GesturePointerType.Touch]\n\n /**\n * The number of pointers of the gesture can handle\n */\n readonly pointerCount: number = 1\n\n /**\n * The mouse buttons of the gesture (1 = left, 2 = middle, 3 = right)\n */\n readonly mouseButtons: Array<number> = [0]\n\n /**\n * The event types of the gesture can handle\n */\n readonly originTypes: Array<string>\n\n constructor(options?: _GestureOptions) {\n Object.assign(this, options)\n this.originTypes = Object.keys(Listeners).filter(v => this.pointerTypes.includes(Listeners[v].pointerType))\n }\n\n /**\n * Test if the gesture should be captured.\n * The given events is filterde by {@see Gesture#shouldCapture}\n * ! important, dont rely on this object state, because not always create a new object\n * @param events events to check\n */\n abstract capture(events: Observable<GestureDetail>): Observable<GestureCaptureState>\n\n /**\n * Transform input event, to gesture event.\n * The given events is filterde by {@see Gesture#isRelevantEvent}\n * ! important, dont rely on this object state, because not always create a new object\n * @param events events to transform or filter or leave as is\n */\n handle(events: Observable<GestureDetail>): Observable<Mutable<T>> {\n return events as Observable<Mutable<T>>\n }\n\n /**\n * Should this gesture capture the event?\n * @param event event to check\n * @returns true if the gesture should capture the event, false otherwise\n */\n shouldCapture(event: GestureDetail): boolean {\n return this.isRelevantEvent(event)\n }\n\n /**\n * Test if the event is relevant to the gesture.\n * The event is relevant if\n * @param event event to check\n * @returns true if the event is relevant, false otherwise\n */\n isRelevantEvent(event: GestureDetail): boolean {\n return (\n this.pointerTypes.includes(event.pointerType) &&\n this.pointerCount === event.pointers.length &&\n this.originTypes.includes(event.origin.type as any) &&\n (event.pointerType !== GesturePointerType.Mouse ||\n (event.origin instanceof MouseEvent && this.mouseButtons.includes(event.origin.button)))\n )\n }\n}\n","import { map, Observable, tap } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { Position } from \"@ngutil/style\"\n\nimport { Gesture, GestureCaptureState, GestureOptions } from \"./gesture\"\nimport { GestureDetail } from \"./gesture-event\"\n\nexport interface GestureDragDetail extends GestureDetail {\n moveBy: Position\n}\n\nexport type GestureDragOptions = GestureOptions<GestureDragImpl>\n\nexport class GestureDragImpl<T extends GestureDragDetail = GestureDragDetail> extends Gesture<T> {\n readonly type = \"gesture-drag\"\n readonly horizontal?: boolean\n readonly vertical?: boolean\n\n constructor(options?: GestureDragOptions) {\n super({ includeScrollDistance: true, ...options })\n\n if (this.horizontal == null && this.vertical == null) {\n this.horizontal = true\n this.vertical = true\n }\n }\n\n override capture(events: Observable<GestureDetail>): Observable<GestureCaptureState> {\n return events.pipe(\n map(state => {\n if (Math.abs(state.pointers[0].distance.x) > this.distanceInclusion) {\n return this.horizontal ? GestureCaptureState.Maybe : GestureCaptureState.Skip\n }\n\n if (Math.abs(state.pointers[0].distance.y) > this.distanceInclusion) {\n return this.vertical ? GestureCaptureState.Maybe : GestureCaptureState.Skip\n }\n return GestureCaptureState.Pending\n })\n )\n }\n\n override handle(events: Observable<GestureDetail>) {\n const updater =\n this.horizontal && this.vertical\n ? updateAnyDirection\n : this.horizontal\n ? updateHorizontalOnly\n : updateVerticalOnly\n\n return super.handle(events).pipe(tap(updater<T>))\n }\n}\n\ntype UpdaterFn = (event: Mutable<GestureDragDetail>) => void\n\nfunction updateVerticalOnly<T extends GestureDragDetail>(event: Mutable<T>) {\n const pointer = event.pointers[0]\n pointer.distance.x = 0\n pointer.direction.x = 0\n pointer.current.x = pointer.start.x\n updateEvent(event, updateByScrollDistanceVertical)\n}\n\nfunction updateHorizontalOnly<T extends GestureDragDetail>(event: Mutable<T>) {\n const pointer = event.pointers[0]\n pointer.distance.y = 0\n pointer.direction.y = 0\n pointer.current.y = pointer.start.y\n updateEvent(event, updateByScrollDistanceHorizontal)\n}\n\nfunction updateAnyDirection<T extends GestureDragDetail>(event: Mutable<T>) {\n updateEvent(event, updateByScrollDistanceBoth)\n}\n\nfunction updateEvent<T extends GestureDragDetail>(event: Mutable<T>, scrollUpdate: UpdaterFn) {\n event.moveBy = { ...event.pointers[0].distance }\n scrollUpdate(event)\n}\n\nfunction updateByScrollDistanceVertical<T extends GestureDragDetail>(event: Mutable<T>) {\n const sd = event.scrollDistance\n if (sd == null) {\n return\n }\n event.moveBy.y += sd.y\n}\n\nfunction updateByScrollDistanceHorizontal<T extends GestureDragDetail>(event: Mutable<T>) {\n const sd = event.scrollDistance\n if (sd == null) {\n return\n }\n event.moveBy.x += sd.x\n}\n\nfunction updateByScrollDistanceBoth<T extends GestureDragDetail>(event: Mutable<T>) {\n const sd = event.scrollDistance\n if (sd == null) {\n return\n }\n event.moveBy.x += sd.x\n event.moveBy.y += sd.y\n}\n\nexport function gestureDrag(options?: GestureDragOptions) {\n return new GestureDragImpl(options)\n}\n\nexport const GestureDrag = gestureDrag()\nexport const GestureDragHorizontal = gestureDrag({ horizontal: true, vertical: false })\nexport const GestureDragVertical = gestureDrag({ horizontal: false, vertical: true })\n","import { combineLatest, filter, map, Observable, startWith, timer } from \"rxjs\"\n\nimport { Gesture, GestureCaptureState, GestureOptions } from \"./gesture\"\nimport { GestureDetail, GesturePhase, GesturePointerType } from \"./gesture-event\"\n\nexport type GestureLongTapDetail = GestureDetail\nexport type GestureLongTapOptions = GestureOptions<GestureLongTapImpl>\n\nexport class GestureLongTapImpl<T extends GestureLongTapDetail = GestureLongTapDetail> extends Gesture<T> {\n readonly type = \"gesture-longtap\"\n constructor(options?: GestureLongTapOptions) {\n super({ pointerTypes: [GesturePointerType.Touch], ...options })\n }\n\n override capture(events: Observable<GestureDetail>): Observable<GestureCaptureState> {\n return combineLatest({ timeWithin: timer(this.timeWithin).pipe(startWith(null)), event: events }).pipe(\n map(({ timeWithin, event }) => {\n if (event.elapsed > this.timeWithin) {\n return GestureCaptureState.Skip\n }\n\n if (event.phase === GesturePhase.End && event.elapsed > this.timeWithin) {\n return GestureCaptureState.Skip\n }\n\n const distance = event.pointers[0].distance\n\n if (Math.abs(distance.x) < this.distanceInclusion && Math.abs(distance.y) < this.distanceInclusion) {\n // maybe is ok event.phase === GesturePhase.End\n return timeWithin !== null ? GestureCaptureState.Instant : GestureCaptureState.Pending\n } else {\n return GestureCaptureState.Skip\n }\n })\n )\n }\n\n override handle(events: Observable<GestureDetail>) {\n return super.handle(\n events.pipe(filter(event => event.phase === GesturePhase.Start || event.phase === GesturePhase.End))\n )\n }\n}\n\nexport function gestureLongTap(options?: GestureLongTapOptions) {\n return new GestureLongTapImpl(options)\n}\n\nexport const GestureLongTap = gestureLongTap()\n","import { filter, map, Observable } from \"rxjs\"\n\nimport { Gesture, GestureCaptureState, GestureOptions } from \"./gesture\"\nimport { GestureDetail, GesturePhase } from \"./gesture-event\"\n\nexport type GestureTapDetail = GestureDetail\nexport type GestureTapOptions = GestureOptions<GestureTapImpl>\n\nexport class GestureTapImpl<T extends GestureTapDetail = GestureTapDetail> extends Gesture<T> {\n readonly type = \"gesture-tap\"\n\n override capture(events: Observable<GestureDetail>): Observable<GestureCaptureState> {\n return events.pipe(\n map(event => {\n const distance = event.pointers[0].distance\n if (Math.abs(distance.x) < this.distanceInclusion && Math.abs(distance.y) < this.distanceInclusion) {\n // TODO\n // if (event.phase === GesturePhase.End) {\n // if (event.target === event.origin.target || event.target.contains(event.origin.target)) {\n // return GestureCaptureState.Instant\n // } else {\n // return GestureCaptureState.Skip\n // }\n // } else {\n // return GestureCaptureState.Pending\n // }\n return event.phase === GesturePhase.End ? GestureCaptureState.Instant : GestureCaptureState.Pending\n } else {\n return GestureCaptureState.Skip\n }\n })\n )\n }\n\n override handle(events: Observable<GestureDetail>) {\n return super.handle(\n events.pipe(filter(event => event.phase === GesturePhase.Start || event.phase === GesturePhase.End))\n )\n }\n}\n\nexport function gestureTap(options?: GestureTapOptions) {\n return new GestureTapImpl(options)\n}\n\nexport const GestureTap = gestureTap()\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\n\nimport {\n combineLatest,\n connect,\n debounceTime,\n filter,\n finalize,\n map,\n merge,\n Observable,\n scan,\n share,\n startWith,\n Subject,\n Subscriber,\n switchMap,\n takeWhile,\n tap\n} from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { __zone_symbol__, coerceElement, ElementInput, isFalsy, isTruthy } from \"@ngutil/common\"\nimport { Position } from \"@ngutil/style\"\n\nimport { Gesture, GestureCaptureState, GestureEvent } from \"./gesture\"\nimport {\n GestureDetail,\n GestureListenerConfig,\n GestureOrigin,\n GesturePhase,\n GesturePointerType,\n Listeners\n} from \"./gesture-event\"\n\nconst ADD_EVENT_LISTENER = __zone_symbol__(\"addEventListener\")\nconst REMOVE_EVENT_LISTENER = __zone_symbol__(\"removeEventListener\")\nconst DISPATCH_EVENT = __zone_symbol__(\"dispatchEvent\")\n\ntype GesturesToEventsType<T extends Array<Gesture>> =\n T extends Array<infer G> ? (G extends Gesture ? GestureEvent<G> : never) : never\n\ntype GestureEventDiscriminator<T> = T extends { type: infer N } ? { type: N } & T : never\n\nexport type GestureWatchReturns<T extends Array<Gesture>> = Observable<\n GestureEventDiscriminator<GesturesToEventsType<T>>\n>\n\nexport type GestureListenReturns<T extends Array<Gesture>> = Observable<GesturesToEventsType<T>>\n\ninterface BeginState {\n detail: GestureDetail\n gestures: Map<Gesture, GestureCaptureState>\n includeScrollDistance: boolean\n}\n\ninterface CaptureState {\n events: GestureDetail[]\n gestures: BeginState[\"gestures\"]\n includeScrollDistance: BeginState[\"includeScrollDistance\"]\n}\n\ninterface CaptureSelectState {\n events: GestureDetail[]\n gesture?: Gesture\n watchers?: Array<Watcher>\n}\n\ninterface Watcher {\n readonly el: HTMLElement\n readonly gesture: Gesture\n}\n\nconst SCROLL_LISTENER_OPTIONS: AddEventListenerOptions = { passive: true, capture: true }\n\n@Injectable({ providedIn: \"root\" })\nexport class GestureService {\n readonly #zone = inject(NgZone)\n readonly #document = inject(DOCUMENT)\n\n #watchers: Watcher[] = []\n readonly #trigger = new Subject<GestureDetail>()\n\n readonly #moving: Observable<GestureDetail> = merge(\n ...Object.keys(Listeners)\n .filter(name => Listeners[name].phase === GesturePhase.Moving)\n .map(name => this.#listen(name, Listeners[name]))\n ).pipe(share())\n\n readonly #end: Observable<GestureDetail> = merge(\n ...Object.keys(Listeners)\n .filter(name => Listeners[name].phase === GesturePhase.End)\n .map(name => this.#listen(name, Listeners[name]))\n ).pipe(share())\n\n readonly #eventStream = merge(this.#moving, this.#end).pipe(share())\n\n readonly #begin = new Observable((dst: Subscriber<BeginState>) => {\n let pointerType: GesturePointerType | undefined\n\n return this.#trigger\n .pipe(\n filter(event => {\n if (pointerType == null) {\n pointerType = event.pointerType\n }\n\n return event.pointerType === pointerType\n }),\n connect(events =>\n merge(\n events,\n // reset pointerType on end, after 200ms, because touchend is maybe followed by a mouse event\n this.#end.pipe(\n debounceTime(200),\n tap(() => {\n pointerType = undefined\n this.#enableTouchAction()\n }),\n filter(() => false)\n )\n )\n ),\n // Select active watchers\n map((detail: Mutable<GestureDetail>) => {\n updatePointers(detail)\n const eventTarget = detail.origin.target as HTMLElement\n detail.target = eventTarget\n let includeScrollDistance = false\n const gestures = this.#watchers\n .filter(\n ({ gesture, el }) =>\n (el === eventTarget || (\"contains\" in el && el.contains(eventTarget))) &&\n gesture.shouldCapture(detail)\n )\n .reduce(\n (gestures, { gesture }) => {\n if (!gestures.has(gesture)) {\n includeScrollDistance = includeScrollDistance || gesture.includeScrollDistance\n gestures.set(gesture, GestureCaptureState.Unchecked)\n }\n return gestures\n },\n new Map() as BeginState[\"gestures\"]\n )\n\n return { detail: detail, gestures, includeScrollDistance } satisfies BeginState\n }),\n filter(({ gestures }) => gestures.size > 0),\n tap(this.#disableTouchAction)\n // finalize(() => console.log(\"FINALIZE BEGIN\"))\n )\n .subscribe(dst)\n })\n\n readonly #gesture = this.#begin.pipe(\n switchMap(({ detail: startEvent, gestures, includeScrollDistance }) => {\n const pointerType = startEvent.pointerType\n const startAt = startEvent.origin.timeStamp\n const targetEl = startEvent.origin.target as HTMLElement\n const dispatchEvent = targetEl[DISPATCH_EVENT].bind(targetEl)\n\n const eventStreamInit = this.#eventStream.pipe(\n startWith(startEvent),\n filter(event => event.pointerType === pointerType)\n )\n\n const eventStreamSource = !includeScrollDistance\n ? eventStreamInit\n : combineLatest([eventStreamInit, this.#scrollDistance(targetEl)]).pipe(\n map(([src, distance]) => {\n ;(src as Mutable<GestureDetail>).scrollDistance = distance\n return src\n })\n )\n\n const eventStream = eventStreamSource.pipe(\n scan(\n (state, curr) =>\n updatePointers({\n ...state,\n ...curr,\n target: targetEl,\n elapsed: curr.origin.timeStamp - startAt!\n }),\n startEvent\n ),\n takeWhile(event => event.phase !== GesturePhase.End, true),\n // finalize(() => console.log(\"FINALIZE STREAM\")),\n share()\n )\n\n const captureState = eventStream.pipe(\n connect(src => {\n const state: CaptureState = { events: [], gestures, includeScrollDistance }\n return merge(\n src.pipe(tap(event => state.events.push(event))),\n ...Array.from(gestures.keys())\n .sort(sortByPripority)\n .map(gesture =>\n gesture.capture(src.pipe(filter(gesture.shouldCapture.bind(gesture)), share())).pipe(\n takeWhile(result => result !== GestureCaptureState.Skip, true),\n tap(result => gestures.set(gesture, result))\n )\n )\n ).pipe(map(() => state))\n })\n // finalize(() => console.log(\"FINALIZE CAPTURE\"))\n )\n\n const selectGesture = captureState.pipe(\n map(state => {\n const partitions: { [k in GestureCaptureState]?: Gesture[] } = {}\n\n for (const [gesture, captureState] of state.gestures) {\n const partition = (partitions[captureState] ??= [])\n partition.push(gesture)\n }\n\n if (partitions[GestureCaptureState.Instant] != null) {\n return {\n gesture: partitions[GestureCaptureState.Instant].sort(sortByPripority)[0],\n events: state.events\n } as CaptureSelectState\n }\n\n // while not all gestures return from Gesture.capture\n if (partitions[GestureCaptureState.Unchecked] != null) {\n return null\n }\n\n // while has pending, the capture is continued\n if (partitions[GestureCaptureState.Pending] != null) {\n return null\n }\n\n // no pendig & has maybe\n if (partitions[GestureCaptureState.Maybe] != null) {\n return {\n gesture: partitions[GestureCaptureState.Maybe].sort(sortByPripority)[0],\n events: state.events\n } as CaptureSelectState\n }\n\n // no pending & no maybe & no terminate\n // so, nothign matched\n return { events: state.events } as CaptureSelectState\n }),\n takeWhile(isFalsy, true),\n filter(isTruthy),\n takeWhile(v => v!.gesture != null, false)\n // tap((v: CaptureSelectState) => v.events.forEach(({ origin }) => preventDefault(origin)))\n // finalize(() => console.log(\"FINALIZE SELECT\"))\n ) as Observable<Required<CaptureSelectState>>\n\n return selectGesture.pipe(\n switchMap(({ events, gesture }) =>\n gesture\n .handle(\n eventStream.pipe(\n startWith(...events),\n tap(({ origin }) => preventDefault(origin)),\n filter(gesture.isRelevantEvent.bind(gesture)),\n share()\n )\n )\n .pipe(\n takeWhile(v => v.phase !== GesturePhase.End, true),\n tap(detail =>\n dispatchEvent(\n new CustomEvent(gesture.type, { detail, bubbles: true, cancelable: true })\n )\n )\n // finalize(() => console.log(\"GESTURE FINALIZE\"))\n )\n ),\n // finalize(() => console.log(\"FINALIZE RESULT\")),\n finalize(this.#enableTouchAction)\n )\n }),\n share()\n )\n\n constructor() {\n const triggers = merge(\n ...Object.keys(Listeners)\n .filter(name => Listeners[name].phase === GesturePhase.Start)\n .map(name => this.#listen(name, Listeners[name]))\n )\n triggers.pipe(takeUntilDestroyed()).subscribe(this.#trigger)\n }\n\n listen<T extends Array<Gesture>>(el: ElementInput, ...gestures: T): GestureListenReturns<T> {\n return new Observable((dst: Subscriber<GestureDetail>) =>\n this.#zone.runOutsideAngular(() => {\n const element = coerceElement(el)\n const next = dst.next.bind(dst)\n for (const gesture of gestures) {\n element[ADD_EVENT_LISTENER](gesture.type as any, next)\n dst.add(element[REMOVE_EVENT_LISTENER].bind(element, gesture.type as any, next as any))\n }\n dst.add(this.#watch(element, ...gestures).subscribe())\n })\n ) as any\n }\n\n #watch<T extends Array<Gesture>>(el: ElementInput, ...gestures: T): GestureWatchReturns<T> {\n return new Observable((dst: Subscriber<GestureDetail>) =>\n this.#zone.runOutsideAngular(() => {\n const element = coerceElement(el)\n const watchers = gestures.map(gesture => {\n return { gesture, el: element }\n })\n this.#add(watchers)\n dst.add(this.#gesture.subscribe(dst))\n return () => {\n this.#remove(watchers)\n }\n })\n ) as any\n }\n\n #add(watchers: Watcher[]) {\n this.#watchers = this.#watchers.concat(watchers)\n }\n\n #remove(watchers: Watcher[]) {\n this.#watchers = this.#watchers.filter(v => !watchers.includes(v))\n }\n\n #listen(name: string, config: GestureListenerConfig) {\n const { phase, pointerType, options } = config\n\n return new Observable((dst: Subscriber<GestureDetail>) =>\n this.#zone.runOutsideAngular(() => {\n const listener = (origin: GestureOrigin) => {\n if (origin.defaultPrevented) {\n return\n }\n dst.next({ origin, phase, pointerType } as GestureDetail)\n }\n\n // console.log(\"addEventListener\", name)\n this.#document[ADD_EVENT_LISTENER](name as keyof DocumentEventMap, listener as any, options)\n return () => {\n // console.log(\"removeEventListener\", name)\n this.#document[REMOVE_EVENT_LISTENER](name as keyof DocumentEventMap, listener as any, options)\n }\n })\n )\n }\n\n #scrollDistance(element: Element): Observable<Position> {\n const scrollPosition = () => {\n let x = 0\n let y = 0\n let p = element\n do {\n x += p.scrollLeft ?? 0\n y += p.scrollTop ?? 0\n p = p.parentNode as Element\n } while (p != null)\n return { x, y }\n }\n\n return new Observable((dst: Subscriber<Position>) =>\n this.#zone.runOutsideAngular(() => {\n const initial = scrollPosition()\n const listener = () => {\n const current = scrollPosition()\n dst.next({ x: current.x - initial.x, y: current.y - initial.y })\n }\n dst.next({ x: 0, y: 0 })\n this.#document[ADD_EVENT_LISTENER](\"scroll\", listener, SCROLL_LISTENER_OPTIONS)\n return () => {\n this.#document[REMOVE_EVENT_LISTENER](\"scroll\", listener, SCROLL_LISTENER_OPTIONS)\n }\n })\n )\n }\n\n #lastTouchAction?: string\n #disableTouchAction = (): void => {\n if (this.#lastTouchAction == null) {\n this.#lastTouchAction = window.getComputedStyle(this.#document.body).touchAction\n this.#document.body.style.touchAction = \"none\"\n }\n }\n\n #enableTouchAction = (): void => {\n if (this.#lastTouchAction != null) {\n this.#document.body.style.touchAction = this.#lastTouchAction\n this.#lastTouchAction = undefined\n }\n }\n}\n\nfunction sortByPripority(a: Gesture, b: Gesture) {\n return b.priority - a.priority\n}\n\nfunction pointersFromEvent(event: MouseEvent | TouchEvent): Position[] {\n if (event instanceof MouseEvent) {\n return [\n {\n x: event.clientX,\n y: event.clientY\n }\n ]\n } else {\n return Array.from(event.touches).map(t => {\n return { x: t.clientX, y: t.clientY }\n })\n }\n}\n\nfunction updatePointers(state: Mutable<GestureDetail>): GestureDetail {\n if (state.phase === GesturePhase.Start) {\n state.pointers = pointersFromEvent(state.origin).map(v => {\n return { start: v, current: v, distance: { x: 0, y: 0 }, direction: { x: 0, y: 0 } }\n })\n } else if (state.pointers) {\n const pointers = pointersFromEvent(state.origin)\n if (pointers.length === 0) {\n return state\n }\n\n state.pointers = state.pointers.map((v, i) => {\n const p = pointers[i]\n return {\n start: v.start,\n current: p,\n distance: { x: p.x - v.start.x, y: p.y - v.start.y },\n direction: { x: direction(v.start.x, p.x), y: direction(v.start.y, p.y) }\n }\n })\n }\n\n return state\n}\n\nfunction direction(prev: number, curr: number): -1 | 0 | 1 {\n return curr > prev ? 1 : curr < prev ? -1 : 0\n}\n\nfunction preventDefault(event: Event) {\n if (event.cancelable && !event.defaultPrevented) {\n // console.log(`PREVENT ${event.type}`)\n event.preventDefault()\n }\n}\n\nexport function reduceCaptureStates(states: GestureCaptureState[]): GestureCaptureState {\n return Math.min(...states)\n}\n","import type { UiStateDetails } from \"./ui-state\"\n\nexport type CompiledSelector = (state: UiStateDetails) => boolean\n\nexport const enum TokenType {\n Any = 1,\n Name = 2,\n Negate = 3,\n Or = 4,\n And = 5,\n Subscript = 7,\n MultiSubscript = 8\n}\n\nexport interface AstBase {\n begin: number\n end: number\n}\n\nexport interface AstAny extends AstBase {\n type: TokenType.Any\n}\n\nexport interface AstName extends AstBase {\n type: TokenType.Name\n value: string\n}\n\nexport interface AstNegate extends AstBase {\n type: TokenType.Negate\n value: SelectorAst\n}\n\nexport interface AstOr extends AstBase {\n type: TokenType.Or\n left: SelectorAst\n right: SelectorAst\n}\n\nexport interface AstAnd extends AstBase {\n type: TokenType.And\n left: SelectorAst\n right: SelectorAst\n}\n\nexport interface AstSubscript extends AstBase {\n type: TokenType.Subscript\n base: AstName\n subscript: AstAny | AstName\n}\n\nexport interface AstMultiSubscript extends AstBase {\n type: TokenType.MultiSubscript\n base: AstName\n subscripts: AstName[]\n}\n\nexport type SelectorAst = AstAny | AstName | AstNegate | AstOr | AstAnd | AstSubscript | AstMultiSubscript\n\nconst COMPILE_CACHE: { [key: string]: CompiledSelector } = {}\nexport function compile(selector: string): CompiledSelector {\n return (COMPILE_CACHE[selector] ??= _compile(parse(selector)))\n}\n\nclass Cursor {\n position: number = 0\n\n get ch() {\n return this.data[this.position]\n }\n\n constructor(readonly data: string) {}\n\n inc(value: number = 1) {\n this.position += value\n return this\n }\n\n eatWs() {\n let end = this.position\n while (end < this.data.length && /[ \\r\\n\\t]/.test(this.data[end])) {\n end++\n }\n this.position = end\n return this\n }\n\n is(ch: string) {\n if (ch.length === 1) {\n return this.ch === ch\n }\n const begin = this.position\n const end = begin + ch.length\n return this.data.substring(begin, end) === ch\n }\n\n eof() {\n return this.position >= this.data.length\n }\n\n set(position: number) {\n this.position = position\n return this\n }\n}\n\n/**\n * expression:\n * - \"*\": any\n * - \"name without dot\": top level: eg. \"busy\" or \"disabled\", this is equal to \"busy.*\"\n * - \"name with dot\": nested: eg. \"busy.self\" or \"busy.loading\"\n * - negate: \"!busy\", \"!busy.*\", \"!busy.save\"\n * - OR: \"busy.* || !disabled.*\"\n * - AND: \"busy.* && !disabled.*\"\n * - GROUP: \"(busy || disabled) && !readonly\"\n * - Shorted of multiple source of same base: \"busy{load,save}\", if one of load or save is true, the result is true\n */\nexport function parse(selector: string): SelectorAst {\n const cursor = new Cursor(selector)\n const res = expression(cursor.eatWs())\n if (res == null) {\n throw new Error(`invalid selector: ${selector}`)\n }\n\n if (!cursor.eof()) {\n throw new Error(`unexpected charcter: ${selector[res.end]} at ${res.end}`)\n }\n return res\n}\n\nfunction expression(cursor: Cursor) {\n return binary(cursor) || leftExpr(cursor)\n}\n\nfunction leftExpr(cursor: Cursor) {\n const begin = cursor.position\n const left = unary(cursor) || group(cursor) || load(cursor)\n if (left != null) {\n return left\n }\n cursor.set(begin)\n return null\n}\n\nfunction group(cursor: Cursor): SelectorAst | null {\n const begin = cursor.position\n if (cursor.is(\"(\")) {\n const expr = expression(cursor.inc().eatWs())\n if (cursor.eatWs().is(\")\")) {\n cursor.inc()\n return binary(cursor.eatWs(), expr) || expr\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction binary(cursor: Cursor, left: SelectorAst | null = null): SelectorAst | null {\n const begin = cursor.position\n left = left ?? leftExpr(cursor)\n if (left != null) {\n cursor.eatWs()\n const result = and(left, cursor) || or(left, cursor)\n if (result != null) {\n return result\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction and(left: SelectorAst, cursor: Cursor): AstAnd | null {\n if (cursor.is(\"&&\")) {\n cursor.inc(2)\n const right = expression(cursor.eatWs())\n if (right == null) {\n return null\n }\n return { type: TokenType.And, left, right, begin: left.begin, end: cursor.position }\n }\n return null\n}\n\nfunction or(left: SelectorAst, cursor: Cursor): AstOr | null {\n if (cursor.is(\"||\")) {\n cursor.inc(2)\n const right = expression(cursor.eatWs())\n if (right == null) {\n return null\n }\n return { type: TokenType.Or, left, right, begin: left.begin, end: cursor.position }\n }\n return null\n}\n\nfunction unary(cursor: Cursor): SelectorAst | null {\n const begin = cursor.position\n if (cursor.is(\"!\")) {\n const expr = leftExpr(cursor.inc().eatWs())\n if (expr != null) {\n return { type: TokenType.Negate, value: expr, begin, end: cursor.position }\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction load(cursor: Cursor): AstAny | AstName | AstSubscript | AstMultiSubscript | null {\n cursor.eatWs()\n const _any = any(cursor)\n if (_any != null) {\n return _any\n }\n\n const base = name(cursor)\n if (base == null) {\n return null\n }\n\n cursor.eatWs()\n const sub = loadSingle(cursor) || loadMulti(cursor)\n if (sub == null) {\n return base\n } else if (Array.isArray(sub)) {\n return {\n type: TokenType.MultiSubscript,\n base,\n subscripts: sub,\n begin: base.begin,\n end: sub[sub.length - 1].end\n }\n } else {\n return { type: TokenType.Subscript, base, subscript: sub, begin: base.begin, end: sub.end }\n }\n}\n\nfunction loadSingle(cursor: Cursor): AstAny | AstName | null {\n const begin = cursor.position\n if (cursor.is(\".\")) {\n cursor.inc().eatWs()\n const prop = any(cursor) || name(cursor)\n if (prop != null) {\n return prop\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction loadMulti(cursor: Cursor): AstName[] | null {\n const begin = cursor.position\n if (cursor.is(\"{\")) {\n const names = [] as AstName[]\n let entry: AstName | null = null\n\n cursor.inc().eatWs()\n while ((entry = name(cursor))) {\n names.push(entry)\n cursor.eatWs()\n\n if (cursor.is(\",\")) {\n cursor.inc()\n }\n\n cursor.eatWs()\n if (cursor.is(\"}\")) {\n if (names.length === 0) {\n throw new Error(\"expected name\")\n }\n cursor.inc()\n return names\n }\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction name(cursor: Cursor): AstName | null {\n const begin = cursor.position\n while (!cursor.eof() && isNameCh(cursor.ch)) {\n cursor.inc()\n }\n if (cursor.position > begin) {\n return { type: TokenType.Name, begin, end: cursor.position, value: cursor.data.slice(begin, cursor.position) }\n }\n cursor.set(begin)\n return null\n}\n\nfunction isNameCh(ch: string): boolean {\n return /[^.,{}()!\\s&|]/.test(ch)\n}\n\nfunction any(cursor: Cursor): AstAny | null {\n if (cursor.is(\"*\")) {\n const begin = cursor.position\n cursor.inc()\n return { type: TokenType.Any, begin, end: cursor.position }\n }\n return null\n}\n\nfunction _compile(ast: SelectorAst, parent?: string): CompiledSelector {\n switch (ast.type) {\n case TokenType.Any:\n return compileAny(ast, parent)\n case TokenType.Subscript:\n return compileSubscript(ast, parent)\n case TokenType.MultiSubscript:\n return compileMultiSubscript(ast, parent)\n case TokenType.Name:\n return compileName(ast, parent)\n case TokenType.Negate:\n return compileNot(_compile(ast.value, parent))\n case TokenType.Or:\n return compileOr(_compile(ast.left, parent), _compile(ast.right, parent))\n case TokenType.And:\n return compileAnd(_compile(ast.left, parent), _compile(ast.right, parent))\n }\n return () => false\n}\n\nfunction compileAny(ast: AstAny, parent?: string): CompiledSelector {\n if (parent) {\n return v => {\n if (v[parent] == null) {\n return false\n }\n return Object.values(v[parent]).some(v => v === true)\n }\n } else {\n return v => {\n for (const entry of Object.values(v)) {\n if (Object.values(entry).some(v => v === true)) {\n return true\n }\n }\n return false\n }\n }\n}\n\nfunction compileSubscript(ast: AstSubscript, parent?: string): CompiledSelector {\n parent ??= ast.base.value\n\n if (ast.subscript.type === TokenType.Any) {\n return compileAny(ast.subscript, parent)\n }\n if (ast.subscript.type === TokenType.Name) {\n return compileName(ast.subscript, parent)\n }\n\n return () => false\n}\n\nfunction compileMultiSubscript(ast: AstMultiSubscript, parent?: string): CompiledSelector {\n parent ??= ast.base.value\n const values = ast.subscripts.map(v =>\n compileSubscript(\n { type: TokenType.Subscript, base: ast.base, subscript: v, begin: v.begin, end: v.end },\n parent\n )\n )\n\n if (values.length === 1) {\n return values[0]\n } else {\n let result = values[0]\n for (let i = 1; i < values.length; i++) {\n result = compileOr(result, values[i])\n }\n return result\n }\n}\n\nfunction compileName(ast: AstName, parent?: string): CompiledSelector {\n if (parent) {\n return v => {\n if (v[parent] == null) {\n return false\n }\n return !!v[parent][ast.value]\n }\n } else {\n return v => {\n const many = v[ast.value]\n return many != null && Object.values(many).some(v => v === true)\n }\n }\n}\n\nfunction compileNot(compiled: CompiledSelector): CompiledSelector {\n return v => !compiled(v)\n}\n\nfunction compileOr(left: CompiledSelector, right: CompiledSelector): CompiledSelector {\n return v => left(v) || right(v)\n}\n\nfunction compileAnd(left: CompiledSelector, right: CompiledSelector): CompiledSelector {\n return v => left(v) && right(v)\n}\n","import { computed, Directive, inject, signal, untracked } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { deepClone } from \"@ngutil/common\"\n\nimport { compile as compileSelector } from \"./selector\"\n\n/**\n * {\n * busy: {\n * self: true,\n * parent: false,\n * disabled: false\n * }\n * }\n */\nexport type UiStateDetails = { readonly [key: string]: UiStateEntry }\n\nexport type UiStateEntry = { readonly [key: UiStateSource]: boolean }\n\nexport type UiStateValue = { readonly [key: string]: boolean }\n\nexport type UiStateSource = \"parent\" | \"self\" | string\n\nexport type UiStateSelector = string\n\n@Directive({})\nexport class UiState<N extends string = string, S extends UiStateSource = UiStateSource> {\n readonly #parent = inject(UiState, { skipSelf: true, optional: true })\n\n get root(): UiState {\n return this.#parent?.root || this\n }\n\n readonly #self = signal<UiStateDetails>({})\n\n readonly merged = computed<UiStateDetails>(() => {\n const parent = this.#parent?.merged()\n const self = this.#self()\n if (parent) {\n const result: Mutable<UiStateDetails> = deepClone(self)\n\n for (const [k, v] of Object.entries(parent)) {\n const parentIsTrue = Object.values(v).includes(true)\n const { self: _, ...parentWihtoutSelf } = v\n if (result[k] != null) {\n result[k] = {\n ...parentWihtoutSelf,\n ...result[k],\n parent: parentIsTrue\n }\n } else {\n result[k] = { ...parentWihtoutSelf, parent: parentIsTrue }\n }\n }\n\n return result\n } else {\n return self\n }\n })\n\n readonly value = computed<UiStateValue>(() => {\n const merged = this.merged()\n const result: Mutable<UiStateValue> = {}\n\n for (const [k, v] of Object.entries(merged)) {\n result[k] = Object.values(v).includes(true)\n }\n\n return result\n })\n\n readonly inertSelector = signal(\"busy || disabled\")\n\n set(name: N, value: boolean, source: S = \"self\" as S) {\n if (source === \"parent\") {\n console.error(\"can't set parent state\")\n return\n }\n\n const current = untracked(this.#self)\n const entry = current[name] || {}\n\n if (entry[source] !== value) {\n this.#self.set({ ...current, [name]: { ...entry, [source]: value } })\n }\n\n // TODO: maybe some option to propagate to root\n // const root = this.root\n // if (source !== \"self\" && root !== this) {\n // root.set(name, value, source)\n // }\n }\n\n is(selector: UiStateSelector = \"*\"): boolean {\n return compileSelector(selector)(this.merged())\n }\n\n intercept(name: N, source: S) {\n return <S>(src: Observable<S>) => this.wrap(src, name, source)\n }\n\n wrap<T>(observable: Observable<T>, name: N, source: S): Observable<T> {\n return new Observable<T>(subscriber => {\n this.set(name, true, source)\n subscriber.add(() => this.set(name, false, source))\n return observable.subscribe(subscriber)\n })\n }\n\n isInert() {\n return this.is(this.inertSelector())\n }\n}\n","import { computed, Directive, effect, inject, Signal } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { coerceBoolAttr } from \"@ngutil/common\"\n\nimport { UiState } from \"./ui-state\"\n\nexport const NOTSET: any = Symbol(\"NOTSET\")\n\n@Directive()\nexport abstract class AbstractUiState<N extends string> {\n readonly state: UiState<N> = inject(UiState)\n\n abstract readonly input: Signal<boolean>\n abstract readonly when: Signal<string>\n\n readonly yes = computed(() => {\n const when = this.when()\n if (when !== NOTSET) {\n // TODO: add prefix if only provide loading, or simething simple selector\n return this.state.is(`${this.name}.self || (${when})`)\n }\n return this.state.is(this.name)\n })\n readonly no = computed(() => !this.yes())\n\n constructor(readonly name: N) {\n effect(\n () => {\n const input = this.input()\n if (input !== NOTSET) {\n this.state.set(name, !!coerceBoolAttr(input))\n }\n },\n { allowSignalWrites: true }\n )\n }\n\n set(value: boolean, source: string) {\n this.state.set(this.name, value, source)\n }\n\n intercept(source: string) {\n return this.state.intercept(this.name, source)\n }\n\n wrap<T>(observable: Observable<T>, source: string): Observable<T> {\n return this.state.wrap(observable, this.name, source)\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuBusy], [nuBusyWhen]\",\n exportAs: \"busy\",\n host: {\n \"[attr.aria-busy]\": \"yes() ? 'true' : 'false'\",\n \"[attr.inert]\": \"state.isInert() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class BusyDirective extends AbstractUiState<\"busy\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuBusy\" })\n readonly when = input(NOTSET as string, { alias: \"nuBusyWhen\" })\n\n constructor() {\n super(\"busy\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuDirty], [nuDirtyWhen]\",\n exportAs: \"dirty\",\n host: {\n \"[attr.dirty]\": \"yes() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class DirtyDirective extends AbstractUiState<\"dirty\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuDirty\" })\n readonly when = input(NOTSET as string, { alias: \"nuDirtyWhen\" })\n\n constructor() {\n super(\"dirty\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuDisabled], [nuDisabledWhen]\",\n exportAs: \"disabled\",\n host: {\n \"[attr.aria-disabled]\": \"yes() ? 'true' : 'false'\",\n \"[attr.disabled]\": \"yes() ? '' : null\",\n \"[attr.inert]\": \"state.isInert() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class DisabledDirective extends AbstractUiState<\"disabled\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuDisabled\" })\n readonly when = input(NOTSET as string, { alias: \"nuDisabledWhen\" })\n\n constructor() {\n super(\"disabled\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuReadonly], [nuReadonlyWhen]\",\n exportAs: \"readonly\",\n host: {\n \"[attr.aria-readonly]\": \"yes() ? 'true' : 'false'\",\n \"[attr.readonly]\": \"yes() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class ReadonlyDirective extends AbstractUiState<\"readonly\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuReadonly\" })\n readonly when = input(NOTSET as string, { alias: \"nuReadonlyWhen\" })\n\n constructor() {\n super(\"readonly\")\n }\n}\n","import { Directive } from \"@angular/core\"\nimport { toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { animationFrames, map, Observable, of, scan, shareReplay, startWith, Subject, switchMap, takeWhile } from \"rxjs\"\n\nimport { clamp } from \"es-toolkit\"\nimport { Mutable } from \"utility-types\"\n\nimport { DeepReadonly } from \"@ngutil/common\"\n\nexport interface ProgressCommon {\n readonly message?: string\n readonly [other: string]: unknown\n}\n\nexport interface ProgressLax {\n readonly type: \"lax\"\n readonly predictedTime: number\n // readonly updateInterval: number\n}\n\nexport interface ProgressFix {\n readonly type: \"fix\"\n readonly percent: number\n}\n\nexport type Progress = (ProgressLax | ProgressFix) & ProgressCommon\n\nexport interface ProgressSegmentInput {\n readonly name: string\n readonly distribution?: number\n readonly progress: DeepReadonly<Progress>\n}\n\nexport interface ProgressSegement extends ProgressSegmentInput {\n ratio: number\n share: number\n done: boolean\n laxBegin?: number\n}\n\nexport type ProgressSegements = { [key: string]: ProgressSegement }\n\nconst SEGMENT_REGISTER: Progress = { type: \"fix\", percent: 0 }\nconst SEGMENT_COMPLETE: Progress = { type: \"fix\", percent: 1 }\n\n@Directive()\nexport class ProgressState {\n readonly #segments: { [key: string]: ProgressSegmentRef } = {}\n\n readonly #input = new Subject<ProgressSegmentInput>()\n\n readonly #state: Observable<ProgressSegements> = this.#input.pipe(\n startWith(null),\n scan((state, input) => {\n if (Object.keys(state).length === 0) {\n state = this.#initialState()\n }\n\n if (input == null) {\n return state\n }\n\n let current = state[input.name] ?? { ratio: 0, share: 0, done: false }\n current = { ...current, ...input }\n\n if (input.progress.type === \"lax\") {\n delete current.laxBegin\n current.done = false\n }\n\n if (input.progress.type === \"fix\" && input.progress.percent < 1) {\n current.done = false\n }\n\n return { ...state, [input.name]: { ...current, ...input } }\n }, {} as ProgressSegements),\n switchMap(state => {\n const slist = Object.values(state) as Array<Mutable<ProgressSegement>>\n const min = slist.reduce((min, current) => Math.min(min, current.distribution || 0), Infinity) || 1\n const totalDistribution = slist.reduce((total, current) => total + (current.distribution || min), 0)\n const hasLax = slist.some(segment => segment.progress.type === \"lax\")\n const trigger = hasLax ? animationFrames() : of({ timestamp: performance.now() })\n\n return trigger.pipe(\n map(({ timestamp }) => {\n for (const segment of slist) {\n if (segment.distribution == null) {\n segment.distribution = min\n }\n segment.ratio = segment.distribution / totalDistribution + 0.0001\n\n let percent: number\n\n if (segment.progress.type === \"lax\") {\n if (segment.laxBegin == null) {\n segment.laxBegin = timestamp\n }\n\n percent = (timestamp - segment.laxBegin) / segment.progress.predictedTime\n if (percent >= 0.8) {\n const final = (timestamp - segment.laxBegin) / (segment.progress.predictedTime * 50)\n percent = 0.8 + Math.log1p(final)\n }\n } else {\n delete segment.laxBegin\n percent = clamp(segment.progress.percent, 0, 1)\n }\n\n segment.share = percent * segment.ratio\n segment.done = percent >= 1\n }\n\n return state\n }),\n takeWhile(state => Object.values(state).some(segment => !segment.done), true)\n )\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n readonly value$: Observable<DeepReadonly<ProgressSegements>> = this.#state\n readonly value = toSignal(this.value$)\n\n readonly percent$: Observable<number> = this.value$.pipe(\n map(value => {\n if (value == null) {\n return 0\n }\n\n return clamp(\n Object.values(value).reduce((a, b) => a + b.share, 0),\n 0,\n 1\n )\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n readonly percent = toSignal(this.percent$)\n\n segment(name: string, distribution: number = 1): ProgressSegmentRef {\n const segment =\n this.#segments[name] ?? (this.#segments[name] = new ProgressSegmentRef(this.#input, name, distribution))\n segment.next(SEGMENT_REGISTER)\n return segment\n }\n\n connect(state: ProgressState, name: string, distribution?: number): Observable<void> {\n return new Observable(() => {\n const segment = this.segment(name, distribution)\n return state.percent$.subscribe(percent => {\n segment.next({ type: \"fix\", percent })\n })\n })\n }\n\n #initialState() {\n return Object.values(this.#segments).reduce((res, segment) => {\n if (segment.value) {\n res[segment.name] = {\n name: segment.name,\n distribution: segment.distribution,\n progress: segment.value,\n ratio: 0,\n share: 0,\n done: false\n }\n }\n return res\n }, {} as ProgressSegements)\n }\n}\n\nexport class ProgressSegmentRef {\n readonly #subject: Subject<ProgressSegmentInput>\n\n set distribution(value: number | undefined) {\n if (this.#distribution !== value) {\n this.#distribution = value\n if (this.#value != null) {\n this.#next(this.#value)\n }\n }\n }\n\n get distribution() {\n return this.#distribution\n }\n #distribution?: number\n\n get value() {\n return this.#value\n }\n #value?: Progress\n\n constructor(\n subject: Subject<ProgressSegmentInput>,\n public readonly name: string,\n distribution?: number\n ) {\n this.#subject = subject\n this.#distribution = distribution\n }\n\n next(progress: Progress) {\n return this.#next(progress)\n }\n\n complete() {\n return this.#next(SEGMENT_COMPLETE)\n }\n\n #next(progress: Progress) {\n this.#value = progress\n this.#subject.next({ name: this.name, distribution: this.distribution, progress })\n return this\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { BusyDirective } from \"./busy.directive\"\nimport { DirtyDirective } from \"./dirty.directive\"\nimport { DisabledDirective } from \"./disabled.directive\"\nimport { ReadonlyDirective } from \"./readonly.directive\"\n\nexport * from \"./abstract\"\nexport * from \"./busy.directive\"\nexport * from \"./disabled.directive\"\nexport * from \"./progress-state\"\nexport * from \"./readonly.directive\"\nexport * from \"./dirty.directive\"\nexport * from \"./ui-state\"\n\nconst entries = [BusyDirective, DirtyDirective, DisabledDirective, ReadonlyDirective]\n\n@NgModule({\n imports: entries,\n exports: entries\n})\nexport class UiStateModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EVENT_OPTIONS","_a","i1.FocusState","compileSelector"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { ElementInput } from "@ngutil/common";
3
- import { Gesture, GestureEvent } from "./gesture";
3
+ import { Gesture, GestureCaptureState, GestureEvent } from "./gesture";
4
4
  import * as i0 from "@angular/core";
5
5
  type GesturesToEventsType<T extends Array<Gesture>> = T extends Array<infer G> ? (G extends Gesture ? GestureEvent<G> : never) : never;
6
6
  type GestureEventDiscriminator<T> = T extends {
@@ -17,4 +17,5 @@ export declare class GestureService {
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<GestureService, never>;
18
18
  static ɵprov: i0.ɵɵInjectableDeclaration<GestureService>;
19
19
  }
20
+ export declare function reduceCaptureStates(states: GestureCaptureState[]): GestureCaptureState;
20
21
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngutil/aria",
3
- "version": "0.0.101",
3
+ "version": "0.0.102",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "19.2.11",
6
6
  "@angular/common": "19.2.8",
@@ -9,8 +9,8 @@
9
9
  "rxjs": "^7.8.1",
10
10
  "tabbable": "^6.2.0",
11
11
  "utility-types": "^3.11.0",
12
- "@ngutil/common": "0.0.101",
13
- "@ngutil/style": "0.0.101"
12
+ "@ngutil/common": "0.0.102",
13
+ "@ngutil/style": "0.0.102"
14
14
  },
15
15
  "publishConfig": {
16
16
  "access": "public",