@ngutil/aria 0.0.46 → 0.0.48
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.
- package/activity/activity.service.d.ts +11 -6
- package/esm2022/activity/activity.service.mjs +28 -52
- package/esm2022/focus/focus.service.mjs +10 -3
- package/esm2022/gestures/gestures/_base.mjs +43 -7
- package/esm2022/gestures/gestures/dragging.mjs +7 -10
- package/esm2022/gestures/gestures.service.mjs +22 -25
- package/fesm2022/ngutil-aria.mjs +103 -89
- package/fesm2022/ngutil-aria.mjs.map +1 -1
- package/gestures/gestures/_base.d.ts +5 -2
- package/gestures/gestures/dragging.d.ts +2 -1
- package/package.json +3 -3
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
import { NgZone } from "@angular/core";
|
|
2
1
|
import { Observable } from "rxjs";
|
|
3
|
-
import { Destructible } from "@ngutil/common";
|
|
4
2
|
import * as i0 from "@angular/core";
|
|
5
3
|
export type ActivityOrigin = "mouse" | "keyboard" | "touch" | "program";
|
|
6
4
|
export interface ActivityEvent {
|
|
7
5
|
origin: ActivityOrigin;
|
|
6
|
+
type: keyof typeof EVENT_ORIGIN;
|
|
8
7
|
node?: Node;
|
|
9
8
|
}
|
|
10
|
-
|
|
9
|
+
declare const EVENT_ORIGIN: {
|
|
10
|
+
keydown: string;
|
|
11
|
+
mousedown: string;
|
|
12
|
+
mousemove: string;
|
|
13
|
+
touchstart: string;
|
|
14
|
+
};
|
|
15
|
+
export declare class ActivityService {
|
|
11
16
|
#private;
|
|
12
|
-
readonly events
|
|
13
|
-
constructor(document: Document, zone: NgZone);
|
|
17
|
+
readonly events$: Observable<ActivityEvent>;
|
|
14
18
|
watchActivity(node?: HTMLElement): Observable<ActivityEvent>;
|
|
15
|
-
watchInactvity(timeout: number):
|
|
19
|
+
watchInactvity(timeout: number): Observable<boolean>;
|
|
16
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<ActivityService, never>;
|
|
17
21
|
static ɵprov: i0.ɵɵInjectableDeclaration<ActivityService>;
|
|
18
22
|
}
|
|
23
|
+
export {};
|
|
@@ -1,73 +1,49 @@
|
|
|
1
1
|
import { DOCUMENT } from "@angular/common";
|
|
2
|
-
import {
|
|
3
|
-
import { distinctUntilChanged, filter, shareReplay,
|
|
4
|
-
import { Destructible } from "@ngutil/common";
|
|
2
|
+
import { inject, Injectable, NgZone } from "@angular/core";
|
|
3
|
+
import { distinctUntilChanged, filter, fromEvent, map, merge, share, shareReplay, startWith, switchMap, take, throttleTime, timer } from "rxjs";
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
const EVENT_OPTIONS = {
|
|
7
6
|
capture: true,
|
|
8
7
|
passive: true
|
|
9
8
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.d.any(() => {
|
|
29
|
-
document.removeEventListener("keydown", this.#onKeydown, EVENT_OPTIONS);
|
|
30
|
-
document.removeEventListener("mousedown", this.#onMouseDown, EVENT_OPTIONS);
|
|
31
|
-
document.removeEventListener("mousemove", this.#onMouseMove, EVENT_OPTIONS);
|
|
32
|
-
document.removeEventListener("touchstart", this.#onTouchStart, EVENT_OPTIONS);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
9
|
+
const EVENT_ORIGIN = {
|
|
10
|
+
keydown: "keyboard",
|
|
11
|
+
mousedown: "mouse",
|
|
12
|
+
mousemove: "mouse",
|
|
13
|
+
touchstart: "touch"
|
|
14
|
+
};
|
|
15
|
+
export class ActivityService {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.#zone = inject(NgZone);
|
|
18
|
+
this.#doc = inject(DOCUMENT);
|
|
19
|
+
this.events$ = this.#zone.runOutsideAngular(() => merge(fromEvent(this.#doc, "keydown", EVENT_OPTIONS), fromEvent(this.#doc, "mousedown", EVENT_OPTIONS), fromEvent(this.#doc, "mousemove", EVENT_OPTIONS), fromEvent(this.#doc, "touchstart", EVENT_OPTIONS)).pipe(map(event => {
|
|
20
|
+
const type = event.type;
|
|
21
|
+
return {
|
|
22
|
+
origin: EVENT_ORIGIN[type],
|
|
23
|
+
type: type,
|
|
24
|
+
node: event.target
|
|
25
|
+
};
|
|
26
|
+
}), share()));
|
|
35
27
|
}
|
|
28
|
+
#zone;
|
|
29
|
+
#doc;
|
|
36
30
|
watchActivity(node) {
|
|
37
31
|
if (node) {
|
|
38
|
-
return this.events
|
|
32
|
+
return this.events$.pipe(filter(event => event.node != null &&
|
|
39
33
|
(event.node === node || (event.node instanceof HTMLElement && event.node.contains(node)))), shareReplay(1));
|
|
40
34
|
}
|
|
41
35
|
else {
|
|
42
|
-
return this.events
|
|
36
|
+
return this.events$;
|
|
43
37
|
}
|
|
44
38
|
}
|
|
45
39
|
watchInactvity(timeout) {
|
|
46
|
-
|
|
40
|
+
return this.events$.pipe(startWith(null), throttleTime(timeout / 2), switchMap(() => timer(0, timeout).pipe(take(2))), map(v => v !== 0), distinctUntilChanged(), shareReplay(1));
|
|
47
41
|
}
|
|
48
|
-
|
|
49
|
-
this.#activity.next({ origin: "keyboard", node: event.target });
|
|
50
|
-
};
|
|
51
|
-
#onMouseDown = (event) => {
|
|
52
|
-
this.#activity.next({ origin: "mouse", node: event.target });
|
|
53
|
-
};
|
|
54
|
-
#onMouseMove = (event) => {
|
|
55
|
-
// this.#activity.next({ origin: "mouse" })
|
|
56
|
-
};
|
|
57
|
-
#onTouchStart = (event) => {
|
|
58
|
-
this.#activity.next({ origin: "touch", node: event.target });
|
|
59
|
-
};
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ActivityService, deps: [{ token: DOCUMENT }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ActivityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
61
43
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ActivityService, providedIn: "root" }); }
|
|
62
44
|
}
|
|
63
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ActivityService, decorators: [{
|
|
64
46
|
type: Injectable,
|
|
65
47
|
args: [{ providedIn: "root" }]
|
|
66
|
-
}]
|
|
67
|
-
|
|
68
|
-
args: [DOCUMENT]
|
|
69
|
-
}] }, { type: i0.NgZone, decorators: [{
|
|
70
|
-
type: Inject,
|
|
71
|
-
args: [NgZone]
|
|
72
|
-
}] }] });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2FjdGl2aXR5L2FjdGl2aXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFjLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFBOztBQVU3QyxNQUFNLGFBQWEsR0FBNEI7SUFDM0MsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtDQUNoQixDQUFBO0FBR0QsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBWTtJQUM3QyxTQUFTLENBQXlCO0lBSWxDLFlBQThCLFFBQWtCLEVBQWtCLElBQVk7UUFDMUUsS0FBSyxFQUFFLENBQUE7UUFFUCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FDN0I7WUFBQyxJQUE4QyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDekUsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFXLEVBQUU7Z0JBQ3pDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQTtnQkFDakUsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sS0FBSyxD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QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBTWpCLE1BQU07MkJBQUMsUUFBUTs7MEJBQXVCLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IERlc3RydWN0aWJsZSB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbi8vIFRPRE86IGRldGVjdCBwcm9ncmFtIGFjdGl2aXR5XG5leHBvcnQgdHlwZSBBY3Rpdml0eU9yaWdpbiA9IFwibW91c2VcIiB8IFwia2V5Ym9hcmRcIiB8IFwidG91Y2hcIiB8IFwicHJvZ3JhbVwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlFdmVudCB7XG4gICAgb3JpZ2luOiBBY3Rpdml0eU9yaWdpblxuICAgIG5vZGU/OiBOb2RlXG59XG5cbmNvbnN0IEVWRU5UX09QVElPTlM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICAgIGNhcHR1cmU6IHRydWUsXG4gICAgcGFzc2l2ZTogdHJ1ZVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlTZXJ2aWNlIGV4dGVuZHMgRGVzdHJ1Y3RpYmxlIHtcbiAgICAjYWN0aXZpdHkhOiBTdWJqZWN0PEFjdGl2aXR5RXZlbnQ+XG5cbiAgICByZWFkb25seSBldmVudHMhOiBPYnNlcnZhYmxlPEFjdGl2aXR5RXZlbnQ+XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogRG9jdW1lbnQsIEBJbmplY3QoTmdab25lKSB6b25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jYWN0aXZpdHkgPSBuZXcgU3ViamVjdCgpXG4gICAgICAgICAgICA7KHRoaXMgYXMgeyBldmVudHM6IE9ic2VydmFibGU8QWN0aXZpdHlFdmVudD4gfSkuZXZlbnRzID0gdGhpcy4jYWN0aXZpdHkucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3Vycik6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldiAmJiBjdXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5vcmlnaW4gPT09IGN1cnIub3JpZ2luICYmIHByZXYubm9kZSA9PT0gY3Vyci5ub2RlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuI29uS2V5ZG93biwgRVZFTlRfT1BUSU9OUylcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy4jb25Nb3VzZURvd24sIEVWRU5UX09QVElPTlMpXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMuI29uTW91c2VNb3ZlLCBFVkVOVF9PUFRJT05TKVxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgdGhpcy4jb25Ub3VjaFN0YXJ0LCBFVkVOVF9PUFRJT05TKVxuXG4gICAgICAgICAgICB0aGlzLmQuYW55KCgpID0+IHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLiNvbktleWRvd24sIEVWRU5UX09QVElPTlMpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLiNvbk1vdXNlRG93biwgRVZFTlRfT1BUSU9OUylcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMuI29uTW91c2VNb3ZlLCBFVkVOVF9PUFRJT05TKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIHRoaXMuI29uVG91Y2hTdGFydCwgRVZFTlRfT1BUSU9OUylcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgd2F0Y2hBY3Rpdml0eShub2RlPzogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV2ZW50cy5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Lm5vZGUgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Lm5vZGUgPT09IG5vZGUgfHwgKGV2ZW50Lm5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBldmVudC5ub2RlLmNvbnRhaW5zKG5vZGUpKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ldmVudHNcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdhdGNoSW5hY3R2aXR5KHRpbWVvdXQ6IG51bWJlcikge1xuICAgICAgICB0aHJvdyBFcnJvcihcIk5vdCBpbXBsZW1udGVkIHlldFwiKVxuICAgIH1cblxuICAgICNvbktleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy4jYWN0aXZpdHkubmV4dCh7IG9yaWdpbjogXCJrZXlib2FyZFwiLCBub2RlOiBldmVudC50YXJnZXQgYXMgYW55IH0pXG4gICAgfVxuXG4gICAgI29uTW91c2VEb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuI2FjdGl2aXR5Lm5leHQoeyBvcmlnaW46IFwibW91c2VcIiwgbm9kZTogZXZlbnQudGFyZ2V0IGFzIGFueSB9KVxuICAgIH1cblxuICAgICNvbk1vdXNlTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAvLyB0aGlzLiNhY3Rpdml0eS5uZXh0KHsgb3JpZ2luOiBcIm1vdXNlXCIgfSlcbiAgICB9XG5cbiAgICAjb25Ub3VjaFN0YXJ0ID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuI2FjdGl2aXR5Lm5leHQoeyBvcmlnaW46IFwidG91Y2hcIiwgbm9kZTogZXZlbnQudGFyZ2V0IGFzIGFueSB9KVxuICAgIH1cbn1cbiJdfQ==
|
|
48
|
+
}] });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2FjdGl2aXR5L2FjdGl2aXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFFTCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFlBQVksRUFDWixLQUFLLEVBQ1IsTUFBTSxNQUFNLENBQUE7O0FBV2IsTUFBTSxhQUFhLEdBQTRCO0lBQzNDLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7Q0FDaEIsQ0FBQTtBQUVELE1BQU0sWUFBWSxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFVBQVUsRUFBRSxPQUFPO0NBQ3RCLENBQUE7QUFHRCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVhLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdEIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixZQUFPLEdBQThCLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQzVFLEtBQUssQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsRUFDaEQsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxFQUNoRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQ3BELENBQUMsSUFBSSxDQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUE2QixDQUFBO1lBQ2hELE9BQU87Z0JBQ0gsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQW1CO2dCQUM1QyxJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQWE7YUFDNUIsQ0FBQTtRQUNMLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxDQUNWLENBQ0osQ0FBQTtLQTJCSjtJQS9DWSxLQUFLLENBQWlCO0lBQ3RCLElBQUksQ0FBbUI7SUFxQmhDLGFBQWEsQ0FBQyxJQUFrQjtRQUM1QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDcEIsTUFBTSxDQUNGLEtBQUssQ0FBQyxFQUFFLENBQ0osS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJO2dCQUNsQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNoRyxFQUNELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWU7UUFDMUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDcEIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLFlBQVksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQ3pCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtJQUNMLENBQUM7OEdBL0NRLGVBQWU7a0hBQWYsZUFBZSxjQURGLE1BQU07OzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHtcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgZnJvbUV2ZW50LFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIHNoYXJlLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHN0YXJ0V2l0aCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZSxcbiAgICB0aHJvdHRsZVRpbWUsXG4gICAgdGltZXJcbn0gZnJvbSBcInJ4anNcIlxuXG4vLyBUT0RPOiBkZXRlY3QgcHJvZ3JhbSBhY3Rpdml0eVxuZXhwb3J0IHR5cGUgQWN0aXZpdHlPcmlnaW4gPSBcIm1vdXNlXCIgfCBcImtleWJvYXJkXCIgfCBcInRvdWNoXCIgfCBcInByb2dyYW1cIlxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5RXZlbnQge1xuICAgIG9yaWdpbjogQWN0aXZpdHlPcmlnaW5cbiAgICB0eXBlOiBrZXlvZiB0eXBlb2YgRVZFTlRfT1JJR0lOXG4gICAgbm9kZT86IE5vZGVcbn1cblxuY29uc3QgRVZFTlRfT1BUSU9OUzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgY2FwdHVyZTogdHJ1ZSxcbiAgICBwYXNzaXZlOiB0cnVlXG59XG5cbmNvbnN0IEVWRU5UX09SSUdJTiA9IHtcbiAgICBrZXlkb3duOiBcImtleWJvYXJkXCIsXG4gICAgbW91c2Vkb3duOiBcIm1vdXNlXCIsXG4gICAgbW91c2Vtb3ZlOiBcIm1vdXNlXCIsXG4gICAgdG91Y2hzdGFydDogXCJ0b3VjaFwiXG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eVNlcnZpY2Uge1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSlcbiAgICByZWFkb25seSAjZG9jID0gaW5qZWN0KERPQ1VNRU5UKVxuXG4gICAgcmVhZG9ubHkgZXZlbnRzJDogT2JzZXJ2YWJsZTxBY3Rpdml0eUV2ZW50PiA9IHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy4jZG9jLCBcImtleWRvd25cIiwgRVZFTlRfT1BUSU9OUyksXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy4jZG9jLCBcIm1vdXNlZG93blwiLCBFVkVOVF9PUFRJT05TKSxcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLiNkb2MsIFwibW91c2Vtb3ZlXCIsIEVWRU5UX09QVElPTlMpLFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuI2RvYywgXCJ0b3VjaHN0YXJ0XCIsIEVWRU5UX09QVElPTlMpXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IGV2ZW50LnR5cGUgYXMgQWN0aXZpdHlFdmVudFtcInR5cGVcIl1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IEVWRU5UX09SSUdJTlt0eXBlXSBhcyBBY3Rpdml0eU9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZTogZXZlbnQudGFyZ2V0IGFzIGFueVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICApXG4gICAgKVxuXG4gICAgd2F0Y2hBY3Rpdml0eShub2RlPzogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV2ZW50cyQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5ub2RlICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5ub2RlID09PSBub2RlIHx8IChldmVudC5ub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZXZlbnQubm9kZS5jb250YWlucyhub2RlKSkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzJFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgd2F0Y2hJbmFjdHZpdHkodGltZW91dDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50cyQucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgIHRocm90dGxlVGltZSh0aW1lb3V0IC8gMiksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGltZXIoMCwgdGltZW91dCkucGlwZSh0YWtlKDIpKSksXG4gICAgICAgICAgICBtYXAodiA9PiB2ICE9PSAwKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApXG4gICAgfVxufVxuIl19
|
|
@@ -2,7 +2,7 @@ import { FocusTrapFactory } from "@angular/cdk/a11y";
|
|
|
2
2
|
import { DOCUMENT } from "@angular/common";
|
|
3
3
|
import { inject, Inject, Injectable, NgZone } from "@angular/core";
|
|
4
4
|
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
5
|
-
import { combineLatest, filter, fromEvent, map, shareReplay, startWith } from "rxjs";
|
|
5
|
+
import { combineLatest, distinctUntilChanged, filter, fromEvent, map, shareReplay, startWith } from "rxjs";
|
|
6
6
|
import { focusable, isFocusable } from "tabbable";
|
|
7
7
|
import { coerceElement } from "@ngutil/common";
|
|
8
8
|
import { ActivityService } from "../activity";
|
|
@@ -19,7 +19,14 @@ export class FocusService {
|
|
|
19
19
|
const focus = fromEvent(document, "focus", EVENT_OPTIONS).pipe(map(e => e.target));
|
|
20
20
|
const blur = fromEvent(document, "blur", EVENT_OPTIONS).pipe(startWith(null), map(e => e?.target || null));
|
|
21
21
|
return combineLatest({
|
|
22
|
-
activity: this.#activity.events,
|
|
22
|
+
activity: this.#activity.events$.pipe(filter(event => event.type !== "mousemove"), distinctUntilChanged((prev, curr) => {
|
|
23
|
+
if (prev && curr) {
|
|
24
|
+
return prev.origin === curr.origin && prev.node === curr.node;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
})),
|
|
23
30
|
focus: focus,
|
|
24
31
|
blur: blur
|
|
25
32
|
}).pipe(takeUntilDestroyed(), map(({ activity, focus, blur }) => {
|
|
@@ -91,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
91
98
|
function isActivityElement(activityEl, focused) {
|
|
92
99
|
return activityEl != null && focused != null && (activityEl === focused || focused.contains(activityEl));
|
|
93
100
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2ZvY3VzL2ZvY3VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWhHLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBRTVELE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBOztBQUU3RCxNQUFNLGFBQWEsR0FBNEI7SUFDM0MsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtDQUNoQixDQUFBO0FBZ0JELE1BQU0sT0FBTyxZQUFZO0lBQ1osU0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNuQyxVQUFVLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFHOUMsWUFBOEIsUUFBa0IsRUFBa0IsSUFBWTtRQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsYUFB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TCxDQUFBO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFpQixFQUFFLE9BQTJCO1FBQ2hELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDaEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFtQjtRQUM5QixPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ3pELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFtQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFhO1FBQ3JCLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBbUIsRUFBRSx1QkFBZ0MsS0FBSztRQUNoRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQy9ELENBQUM7OEdBeEZRLFlBQVksa0JBS0QsUUFBUSxhQUE4QixNQUFNO2tIQUx2RCxZQUFZLGNBREMsTUFBTTs7MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFNakIsTUFBTTsyQkFBQyxRQUFROzswQkFBdUIsTUFBTTsyQkFBQyxNQUFNOztBQXNGcEUsU0FBUyxpQkFBaUIsQ0FBQyxVQUF3QixFQUFFLE9BQXFCO0lBQ3RFLE9BQU8sVUFBVSxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7QUFDNUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzVHJhcEZhY3RvcnkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIlxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIlxuXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIGZyb21FdmVudCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBmb2N1c2FibGUsIHR5cGUgRm9jdXNhYmxlRWxlbWVudCwgaXNGb2N1c2FibGUgfSBmcm9tIFwidGFiYmFibGVcIlxuXG5pbXBvcnQgeyBjb2VyY2VFbGVtZW50LCBFbGVtZW50SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBBY3Rpdml0eU9yaWdpbiwgQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSBcIi4uL2FjdGl2aXR5XCJcblxuY29uc3QgRVZFTlRfT1BUSU9OUzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgY2FwdHVyZTogdHJ1ZSxcbiAgICBwYXNzaXZlOiB0cnVlXG59XG5cbmV4cG9ydCB0eXBlIEZvY3VzT3JpZ2luID0gQWN0aXZpdHlPcmlnaW4gfCBudWxsXG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9jdXNDaGFuZ2VzIHtcbiAgICBvcmlnaW46IEZvY3VzT3JpZ2luXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb2N1c2FibGVFdmVudCB7XG4gICAgb3JpZ2luOiBGb2N1c09yaWdpblxuICAgIGV4YWN0OiBib29sZWFuXG4gICAgbm9kZTogTm9kZVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgRm9jdXNTZXJ2aWNlIHtcbiAgICByZWFkb25seSAjYWN0aXZpdHkgPSBpbmplY3QoQWN0aXZpdHlTZXJ2aWNlKVxuICAgIHJlYWRvbmx5ICNmb2N1c1RyYXAgPSBpbmplY3QoRm9jdXNUcmFwRmFjdG9yeSlcbiAgICByZWFkb25seSBldmVudHM6IE9ic2VydmFibGU8Rm9jdXNDaGFuZ2VzPlxuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IERvY3VtZW50LCBASW5qZWN0KE5nWm9uZSkgem9uZTogTmdab25lKSB7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2N1cyA9IGZyb21FdmVudChkb2N1bWVudCwgXCJmb2N1c1wiLCBFVkVOVF9PUFRJT05TKS5waXBlKG1hcChlID0+IGUudGFyZ2V0IGFzIE5vZGUpKVxuICAgICAgICAgICAgY29uc3QgYmx1ciA9IGZyb21FdmVudChkb2N1bWVudCwgXCJibHVyXCIsIEVWRU5UX09QVElPTlMpLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIG1hcChlID0+IChlPy50YXJnZXQgYXMgTm9kZSkgfHwgbnVsbClcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5OiB0aGlzLiNhY3Rpdml0eS5ldmVudHMsXG4gICAgICAgICAgICAgICAgZm9jdXM6IGZvY3VzLFxuICAgICAgICAgICAgICAgIGJsdXI6IGJsdXJcbiAgICAgICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgICAgICAgICAgbWFwKCh7IGFjdGl2aXR5LCBmb2N1cywgYmx1ciB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHsgYWN0aXZpdHksIGZvY3VzLCBibHVyIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZm9jdXMgaW4gd2l0aCBhbHQrdGFiXG4gICAgICAgICAgICAgICAgICAgIGlmIChibHVyID09PSBkb2N1bWVudCAmJiBhY3Rpdml0eS5vcmlnaW4gPT09IFwia2V5Ym9hcmRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgb3JpZ2luOiBcInByb2dyYW1cIiwgZWxlbWVudDogZm9jdXMgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzID09PSBkb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgb3JpZ2luOiBcInByb2dyYW1cIiwgZWxlbWVudDogZm9jdXMgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgcHJlc3MgdGFiIGJ1dHRvbiwgZmlyc3QgZmlyZSB0aGUgZXZlbnQgaW4gdGhlIGN1cnJlbnRseSBmb2N1c2VkIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzID09PSBibHVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBwcmVzcyB0YWIsIHRoZSBhY3Rpdml0eSBpcyBvbiB0aGUgY3VycmVudCBmdWNlc2QgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2hlbiBibHVyIGlzIGNoYW5nZWQgdG8gaXQsIHRoZSBmb2N1cyBjaGFuZ2UgaXMgY29tcGxldGVkXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0eS5vcmlnaW4gPT09IFwia2V5Ym9hcmRcIiAmJiBpc0FjdGl2aXR5RWxlbWVudChhY3Rpdml0eS5ub2RlLCBibHVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgb3JpZ2luOiBcImtleWJvYXJkXCIsIGVsZW1lbnQ6IGZvY3VzIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FjdGl2aXR5RWxlbWVudChhY3Rpdml0eS5ub2RlLCBmb2N1cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG9yaWdpbjogYWN0aXZpdHkub3JpZ2luLCBlbGVtZW50OiBmb2N1cyB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcmlnaW46IFwicHJvZ3JhbVwiLCBlbGVtZW50OiBmb2N1cyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIodiA9PiAhIXYpLFxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICAgICApIGFzIGFueVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHdhdGNoKGVsZW1lbnQ6IEVsZW1lbnRJbnB1dCkge1xuICAgICAgICBjb25zdCBlbCA9IGNvZXJjZUVsZW1lbnQoZWxlbWVudClcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuZWxlbWVudCAmJlxuICAgICAgICAgICAgICAgICAgICAoZXZlbnQuZWxlbWVudCA9PT0gZWwgfHwgKHR5cGVvZiBlbC5jb250YWlucyA9PT0gXCJmdW5jdGlvblwiICYmIGVsLmNvbnRhaW5zKGV2ZW50LmVsZW1lbnQpKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGVsZW1lbnQ6IGVsLCBvcmlnaW46IG51bGwgfSBhcyBGb2N1c0NoYW5nZXNcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBmb2N1cyhub2RlOiBIVE1MRWxlbWVudCwgX29yaWdpbjogRm9jdXNPcmlnaW4gfCBudWxsKSB7XG4gICAgICAgIC8vIFRPRE86IGZvY3VzIG9yaWdpblxuICAgICAgICBub2RlLmZvY3VzKClcbiAgICB9XG5cbiAgICBxdWVyeUZvY3VzYWJsZShpbnNpZGU6IEhUTUxFbGVtZW50KTogRm9jdXNhYmxlRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIGZvY3VzYWJsZShpbnNpZGUsIHsgaW5jbHVkZUNvbnRhaW5lcjogZmFsc2UgfSlcbiAgICB9XG5cbiAgICBnZXRGaXJzdEZvY3VzYWJsZShpbnNpZGU6IEhUTUxFbGVtZW50KTogRm9jdXNhYmxlRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5Rm9jdXNhYmxlKGluc2lkZSlbMF1cbiAgICB9XG5cbiAgICBpc0ZvY3VzYWJsZShub2RlOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc0ZvY3VzYWJsZShub2RlKVxuICAgIH1cblxuICAgIGZvY3VzVHJhcChpbnNpZGU6IEhUTUxFbGVtZW50LCBkZWZlckNhcHR1cmVFbGVtZW50czogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNmb2N1c1RyYXAuY3JlYXRlKGluc2lkZSwgZGVmZXJDYXB0dXJlRWxlbWVudHMpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0FjdGl2aXR5RWxlbWVudChhY3Rpdml0eUVsPzogTm9kZSB8IG51bGwsIGZvY3VzZWQ/OiBOb2RlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhY3Rpdml0eUVsICE9IG51bGwgJiYgZm9jdXNlZCAhPSBudWxsICYmIChhY3Rpdml0eUVsID09PSBmb2N1c2VkIHx8IGZvY3VzZWQuY29udGFpbnMoYWN0aXZpdHlFbCkpXG59XG4iXX0=
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2ZvY3VzL2ZvY3VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRXRILE9BQU8sRUFBRSxTQUFTLEVBQXlCLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBRTVELE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBOztBQUU3RCxNQUFNLGFBQWEsR0FBNEI7SUFDM0MsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtDQUNoQixDQUFBO0FBZ0JELE1BQU0sT0FBTyxZQUFZO0lBQ1osU0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNuQyxVQUFVLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFHOUMsWUFBOEIsUUFBa0IsRUFBa0IsSUFBWTtRQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxP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QUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBTWpCLE1BQU07MkJBQUMsUUFBUTs7MEJBQXVCLE1BQU07MkJBQUMsTUFBTTs7QUErRnBFLFNBQVMsaUJBQWlCLENBQUMsVUFBd0IsRUFBRSxPQUFxQjtJQUN0RSxPQUFPLFVBQVUsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0FBQzVHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c1RyYXBGYWN0b3J5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCJcblxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGggfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IGZvY3VzYWJsZSwgdHlwZSBGb2N1c2FibGVFbGVtZW50LCBpc0ZvY3VzYWJsZSB9IGZyb20gXCJ0YWJiYWJsZVwiXG5cbmltcG9ydCB7IGNvZXJjZUVsZW1lbnQsIEVsZW1lbnRJbnB1dCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IEFjdGl2aXR5T3JpZ2luLCBBY3Rpdml0eVNlcnZpY2UgfSBmcm9tIFwiLi4vYWN0aXZpdHlcIlxuXG5jb25zdCBFVkVOVF9PUFRJT05TOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgICBjYXB0dXJlOiB0cnVlLFxuICAgIHBhc3NpdmU6IHRydWVcbn1cblxuZXhwb3J0IHR5cGUgRm9jdXNPcmlnaW4gPSBBY3Rpdml0eU9yaWdpbiB8IG51bGxcblxuZXhwb3J0IGludGVyZmFjZSBGb2N1c0NoYW5nZXMge1xuICAgIG9yaWdpbjogRm9jdXNPcmlnaW5cbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvY3VzYWJsZUV2ZW50IHtcbiAgICBvcmlnaW46IEZvY3VzT3JpZ2luXG4gICAgZXhhY3Q6IGJvb2xlYW5cbiAgICBub2RlOiBOb2RlXG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBGb2N1c1NlcnZpY2Uge1xuICAgIHJlYWRvbmx5ICNhY3Rpdml0eSA9IGluamVjdChBY3Rpdml0eVNlcnZpY2UpXG4gICAgcmVhZG9ubHkgI2ZvY3VzVHJhcCA9IGluamVjdChGb2N1c1RyYXBGYWN0b3J5KVxuICAgIHJlYWRvbmx5IGV2ZW50czogT2JzZXJ2YWJsZTxGb2N1c0NoYW5nZXM+XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogRG9jdW1lbnQsIEBJbmplY3QoTmdab25lKSB6b25lOiBOZ1pvbmUpIHtcbiAgICAgICAgdGhpcy5ldmVudHMgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzID0gZnJvbUV2ZW50KGRvY3VtZW50LCBcImZvY3VzXCIsIEVWRU5UX09QVElPTlMpLnBpcGUobWFwKGUgPT4gZS50YXJnZXQgYXMgTm9kZSkpXG4gICAgICAgICAgICBjb25zdCBibHVyID0gZnJvbUV2ZW50KGRvY3VtZW50LCBcImJsdXJcIiwgRVZFTlRfT1BUSU9OUykucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgbWFwKGUgPT4gKGU/LnRhcmdldCBhcyBOb2RlKSB8fCBudWxsKVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHk6IHRoaXMuI2FjdGl2aXR5LmV2ZW50cyQucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnR5cGUgIT09IFwibW91c2Vtb3ZlXCIpLFxuICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3Vycik6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYgJiYgY3Vycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2Lm9yaWdpbiA9PT0gY3Vyci5vcmlnaW4gJiYgcHJldi5ub2RlID09PSBjdXJyLm5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBmb2N1czogZm9jdXMsXG4gICAgICAgICAgICAgICAgYmx1cjogYmx1clxuICAgICAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgICAgICAgICBtYXAoKHsgYWN0aXZpdHksIGZvY3VzLCBibHVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coeyBhY3Rpdml0eSwgZm9jdXMsIGJsdXIgfSlcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBmb2N1cyBpbiB3aXRoIGFsdCt0YWJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsdXIgPT09IGRvY3VtZW50ICYmIGFjdGl2aXR5Lm9yaWdpbiA9PT0gXCJrZXlib2FyZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcmlnaW46IFwicHJvZ3JhbVwiLCBlbGVtZW50OiBmb2N1cyB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXMgPT09IGRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcmlnaW46IFwicHJvZ3JhbVwiLCBlbGVtZW50OiBmb2N1cyB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBwcmVzcyB0YWIgYnV0dG9uLCBmaXJzdCBmaXJlIHRoZSBldmVudCBpbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXMgPT09IGJsdXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHByZXNzIHRhYiwgdGhlIGFjdGl2aXR5IGlzIG9uIHRoZSBjdXJyZW50IGZ1Y2VzZCBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAvLyBzbyB3aGVuIGJsdXIgaXMgY2hhbmdlZCB0byBpdCwgdGhlIGZvY3VzIGNoYW5nZSBpcyBjb21wbGV0ZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2aXR5Lm9yaWdpbiA9PT0gXCJrZXlib2FyZFwiICYmIGlzQWN0aXZpdHlFbGVtZW50KGFjdGl2aXR5Lm5vZGUsIGJsdXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcmlnaW46IFwia2V5Ym9hcmRcIiwgZWxlbWVudDogZm9jdXMgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWN0aXZpdHlFbGVtZW50KGFjdGl2aXR5Lm5vZGUsIGZvY3VzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgb3JpZ2luOiBhY3Rpdml0eS5vcmlnaW4sIGVsZW1lbnQ6IGZvY3VzIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG9yaWdpbjogXCJwcm9ncmFtXCIsIGVsZW1lbnQ6IGZvY3VzIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcih2ID0+ICEhdiksXG4gICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgICAgICkgYXMgYW55XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgd2F0Y2goZWxlbWVudDogRWxlbWVudElucHV0KSB7XG4gICAgICAgIGNvbnN0IGVsID0gY29lcmNlRWxlbWVudChlbGVtZW50KVxuICAgICAgICByZXR1cm4gdGhpcy5ldmVudHMucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBldmVudC5lbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIChldmVudC5lbGVtZW50ID09PSBlbCB8fCAodHlwZW9mIGVsLmNvbnRhaW5zID09PSBcImZ1bmN0aW9uXCIgJiYgZWwuY29udGFpbnMoZXZlbnQuZWxlbWVudCkpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZWxlbWVudDogZWwsIG9yaWdpbjogbnVsbCB9IGFzIEZvY3VzQ2hhbmdlc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGZvY3VzKG5vZGU6IEhUTUxFbGVtZW50LCBfb3JpZ2luOiBGb2N1c09yaWdpbiB8IG51bGwpIHtcbiAgICAgICAgLy8gVE9ETzogZm9jdXMgb3JpZ2luXG4gICAgICAgIG5vZGUuZm9jdXMoKVxuICAgIH1cblxuICAgIHF1ZXJ5Rm9jdXNhYmxlKGluc2lkZTogSFRNTEVsZW1lbnQpOiBGb2N1c2FibGVFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gZm9jdXNhYmxlKGluc2lkZSwgeyBpbmNsdWRlQ29udGFpbmVyOiBmYWxzZSB9KVxuICAgIH1cblxuICAgIGdldEZpcnN0Rm9jdXNhYmxlKGluc2lkZTogSFRNTEVsZW1lbnQpOiBGb2N1c2FibGVFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlGb2N1c2FibGUoaW5zaWRlKVswXVxuICAgIH1cblxuICAgIGlzRm9jdXNhYmxlKG5vZGU6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzRm9jdXNhYmxlKG5vZGUpXG4gICAgfVxuXG4gICAgZm9jdXNUcmFwKGluc2lkZTogSFRNTEVsZW1lbnQsIGRlZmVyQ2FwdHVyZUVsZW1lbnRzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2ZvY3VzVHJhcC5jcmVhdGUoaW5zaWRlLCBkZWZlckNhcHR1cmVFbGVtZW50cylcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQWN0aXZpdHlFbGVtZW50KGFjdGl2aXR5RWw/OiBOb2RlIHwgbnVsbCwgZm9jdXNlZD86IE5vZGUgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFjdGl2aXR5RWwgIT0gbnVsbCAmJiBmb2N1c2VkICE9IG51bGwgJiYgKGFjdGl2aXR5RWwgPT09IGZvY3VzZWQgfHwgZm9jdXNlZC5jb250YWlucyhhY3Rpdml0eUVsKSlcbn1cbiJdfQ==
|
|
@@ -9,11 +9,47 @@ export function stateToEvent(state, type) {
|
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
11
|
export const Listeners = {
|
|
12
|
-
mousedown: {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
mousedown: {
|
|
13
|
+
target: "element" /* ListenerTarget.Element */,
|
|
14
|
+
pointerType: "mouse" /* GesturePointerType.Mouse */,
|
|
15
|
+
phase: "start" /* GesturePhase.Start */,
|
|
16
|
+
options: { capture: true, passive: false }
|
|
17
|
+
},
|
|
18
|
+
mousemove: {
|
|
19
|
+
target: "document" /* ListenerTarget.Document */,
|
|
20
|
+
pointerType: "mouse" /* GesturePointerType.Mouse */,
|
|
21
|
+
phase: "moving" /* GesturePhase.Moving */,
|
|
22
|
+
options: { capture: true, passive: false }
|
|
23
|
+
},
|
|
24
|
+
mouseup: {
|
|
25
|
+
target: "document" /* ListenerTarget.Document */,
|
|
26
|
+
pointerType: "mouse" /* GesturePointerType.Mouse */,
|
|
27
|
+
phase: "end" /* GesturePhase.End */,
|
|
28
|
+
options: { capture: true, passive: true }
|
|
29
|
+
},
|
|
30
|
+
touchstart: {
|
|
31
|
+
target: "element" /* ListenerTarget.Element */,
|
|
32
|
+
pointerType: "touch" /* GesturePointerType.Touch */,
|
|
33
|
+
phase: "start" /* GesturePhase.Start */,
|
|
34
|
+
options: { capture: true, passive: false }
|
|
35
|
+
},
|
|
36
|
+
touchmove: {
|
|
37
|
+
target: "document" /* ListenerTarget.Document */,
|
|
38
|
+
pointerType: "touch" /* GesturePointerType.Touch */,
|
|
39
|
+
phase: "moving" /* GesturePhase.Moving */,
|
|
40
|
+
options: { capture: true, passive: false }
|
|
41
|
+
},
|
|
42
|
+
touchend: {
|
|
43
|
+
target: "document" /* ListenerTarget.Document */,
|
|
44
|
+
pointerType: "touch" /* GesturePointerType.Touch */,
|
|
45
|
+
phase: "end" /* GesturePhase.End */,
|
|
46
|
+
options: { capture: true, passive: false }
|
|
47
|
+
},
|
|
48
|
+
touchcancel: {
|
|
49
|
+
target: "document" /* ListenerTarget.Document */,
|
|
50
|
+
pointerType: "touch" /* GesturePointerType.Touch */,
|
|
51
|
+
phase: "end" /* GesturePhase.End */,
|
|
52
|
+
options: { capture: true, passive: true }
|
|
53
|
+
}
|
|
18
54
|
};
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2Jhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy9nZXN0dXJlcy9nZXN0dXJlcy9fYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnRUEsTUFBTSxVQUFVLFlBQVksQ0FBeUIsS0FBd0IsRUFBRSxJQUFZO0lBQ3ZGLE9BQU87UUFDSCxJQUFJLEVBQUUsSUFBSTtRQUNWLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTztRQUNyQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU87UUFDckIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFZO1FBQy9CLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBTTtRQUNuQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVM7S0FDdkIsQ0FBQTtBQUNWLENBQUM7QUFjRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQXNDO0lBQ3hELFNBQVMsRUFBRTtRQUNQLE1BQU0sd0NBQXdCO1FBQzlCLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssa0NBQW9CO1FBQ3pCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFNBQVMsRUFBRTtRQUNQLE1BQU0sMENBQXlCO1FBQy9CLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssb0NBQXFCO1FBQzFCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELE9BQU8sRUFBRTtRQUNMLE1BQU0sMENBQXlCO1FBQy9CLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssOEJBQWtCO1FBQ3ZCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtLQUM1QztJQUNELFVBQVUsRUFBRTtRQUNSLE1BQU0sd0NBQXdCO1FBQzlCLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssa0NBQW9CO1FBQ3pCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFNBQVMsRUFBRTtRQUNQLE1BQU0sMENBQXlCO1FBQy9CLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssb0NBQXFCO1FBQzFCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFFBQVEsRUFBRTtRQUNOLE1BQU0sMENBQXlCO1FBQy9CLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssOEJBQWtCO1FBQ3ZCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFdBQVcsRUFBRTtRQUNULE1BQU0sMENBQXlCO1FBQy9CLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssOEJBQWtCO1FBQ3ZCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtLQUM1QztDQUNLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBNdXRhYmxlIH0gZnJvbSBcInV0aWxpdHktdHlwZXNcIlxuXG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuZXhwb3J0IGludGVyZmFjZSBHZXN0dXJlPFQgZXh0ZW5kcyBHZXN0dXJlRXZlbnQ+IHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBwcmlvcml0eTogbnVtYmVyXG4gICAgbGlzdGVuZXJzPzogQXJyYXk8a2V5b2YgRG9jdW1lbnRFdmVudE1hcD5cbiAgICBoYW5kbGVyOiBHZXN0dXJlSGFuZGxlcjxUPlxufVxuXG5leHBvcnQgdHlwZSBHZXN0dXJlSGFuZGxlcjxUIGV4dGVuZHMgR2VzdHVyZUV2ZW50PiA9IChldmVudHM6IE9ic2VydmFibGU8R2VzdHVyZU1hdGNoU3RhdGU8VD4+KSA9PiBPYnNlcnZhYmxlPFQ+XG5cbmV4cG9ydCB0eXBlIEdlc3R1cmVMaXN0ZW5lciA9IHtcbiAgICBuYW1lOiBrZXlvZiBEb2N1bWVudEV2ZW50TWFwXG4gICAgdGFyZ2V0OiBMaXN0ZW5lclRhcmdldFxuICAgIC8vIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9uc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlc3R1cmVFdmVudDxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiB7XG4gICAgcmVhZG9ubHkgdHlwZTogVFxuICAgIHJlYWRvbmx5IG9yaWdpbjogR2VzdHVyZU9yaWdpblxuICAgIHJlYWRvbmx5IHRhcmdldDogSFRNTEVsZW1lbnRcbiAgICByZWFkb25seSBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlXG4gICAgcmVhZG9ubHkgcGhhc2U6IEdlc3R1cmVQaGFzZVxuICAgIHJlYWRvbmx5IHBvaW50ZXJzOiBSZWFkb25seUFycmF5PEdlc3R1cmVQb2ludGVyPlxuXG4gICAgcHJldmVudERlZmF1bHQoKTogdm9pZFxufVxuXG50eXBlIEdlc3R1cmVFdmVudEZpeEZpZWxkcyA9IFwidGFyZ2V0XCIgfCBcIm9yaWdpblwiIHwgXCJwb2ludGVyc1wiIHwgXCJwaGFzZVwiIHwgXCJwb2ludGVyVHlwZVwiIHwgXCJwcmV2ZW50RGVmYXVsdFwiXG5cbmV4cG9ydCB0eXBlIFBvaW50ZXJzUG9zaXRpb24gPSBSZWFkb25seUFycmF5PFJlYWRvbmx5PFBvc2l0aW9uPj5cblxuZXhwb3J0IGludGVyZmFjZSBHZXN0dXJlUG9pbnRlciB7XG4gICAgcmVhZG9ubHkgc3RhcnQ6IFBvc2l0aW9uXG4gICAgcmVhZG9ubHkgY3VycmVudDogUG9zaXRpb25cbiAgICByZWFkb25seSBlbmQ/OiBQb3NpdGlvblxuICAgIHJlYWRvbmx5IGRpc3RhbmNlOiBQb3NpdGlvblxuICAgIHJlYWRvbmx5IGRpcmVjdGlvbjogeyB4OiAtMSB8IDAgfCAxOyB5OiAtMSB8IDAgfCAxIH1cbn1cblxuZXhwb3J0IHR5cGUgR2VzdHVyZU9yaWdpbiA9IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50XG5cbmV4cG9ydCBjb25zdCBlbnVtIEdlc3R1cmVQb2ludGVyVHlwZSB7XG4gICAgTW91c2UgPSBcIm1vdXNlXCIsXG4gICAgVG91Y2ggPSBcInRvdWNoXCJcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gR2VzdHVyZVBoYXNlIHtcbiAgICBTdGFydCA9IFwic3RhcnRcIixcbiAgICBNb3ZpbmcgPSBcIm1vdmluZ1wiLFxuICAgIEVuZCA9IFwiZW5kXCJcbn1cblxuZXhwb3J0IHR5cGUgR2VzdHVyZU1hdGNoU3RhdGU8VCBleHRlbmRzIEdlc3R1cmVFdmVudCA9IEdlc3R1cmVFdmVudD4gPSBQYXJ0aWFsPFxuICAgIE11dGFibGU8T21pdDxULCBHZXN0dXJlRXZlbnRGaXhGaWVsZHM+PlxuPiAmXG4gICAgUGljazxULCBHZXN0dXJlRXZlbnRGaXhGaWVsZHM+ICYge1xuICAgICAgICByZWFkb25seSBwZW5kaW5nPzogQXJyYXk8c3RyaW5nPlxuICAgIH1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlVG9FdmVudDxUIGV4dGVuZHMgR2VzdHVyZUV2ZW50PihzdGF0ZTogR2VzdHVyZU1hdGNoU3RhdGUsIHR5cGU6IHN0cmluZyk6IFQge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIG9yaWdpbjogc3RhdGUub3JpZ2luISxcbiAgICAgICAgdGFyZ2V0OiBzdGF0ZS50YXJnZXQhLFxuICAgICAgICBwb2ludGVyVHlwZTogc3RhdGUucG9pbnRlclR5cGUhLFxuICAgICAgICBwaGFzZTogc3RhdGUucGhhc2UhLFxuICAgICAgICBwb2ludGVyczogc3RhdGUucG9pbnRlcnMhXG4gICAgfSBhcyBUXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuZXJDb25maWcge1xuICAgIHRhcmdldDogTGlzdGVuZXJUYXJnZXRcbiAgICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbiAgICBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlXG4gICAgcGhhc2U6IEdlc3R1cmVQaGFzZVxufVxuXG5leHBvcnQgY29uc3QgZW51bSBMaXN0ZW5lclRhcmdldCB7XG4gICAgRG9jdW1lbnQgPSBcImRvY3VtZW50XCIsXG4gICAgRWxlbWVudCA9IFwiZWxlbWVudFwiXG59XG5cbmV4cG9ydCBjb25zdCBMaXN0ZW5lcnM6IHsgW2tleTogc3RyaW5nXTogTGlzdGVuZXJDb25maWcgfSA9IHtcbiAgICBtb3VzZWRvd246IHtcbiAgICAgICAgdGFyZ2V0OiBMaXN0ZW5lclRhcmdldC5FbGVtZW50LFxuICAgICAgICBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlLFxuICAgICAgICBwaGFzZTogR2VzdHVyZVBoYXNlLlN0YXJ0LFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9LFxuICAgIG1vdXNlbW92ZToge1xuICAgICAgICB0YXJnZXQ6IExpc3RlbmVyVGFyZ2V0LkRvY3VtZW50LFxuICAgICAgICBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlLFxuICAgICAgICBwaGFzZTogR2VzdHVyZVBoYXNlLk1vdmluZyxcbiAgICAgICAgb3B0aW9uczogeyBjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZSB9XG4gICAgfSxcbiAgICBtb3VzZXVwOiB7XG4gICAgICAgIHRhcmdldDogTGlzdGVuZXJUYXJnZXQuRG9jdW1lbnQsXG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuTW91c2UsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuRW5kLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IHRydWUgfVxuICAgIH0sXG4gICAgdG91Y2hzdGFydDoge1xuICAgICAgICB0YXJnZXQ6IExpc3RlbmVyVGFyZ2V0LkVsZW1lbnQsXG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuU3RhcnQsXG4gICAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfVxuICAgIH0sXG4gICAgdG91Y2htb3ZlOiB7XG4gICAgICAgIHRhcmdldDogTGlzdGVuZXJUYXJnZXQuRG9jdW1lbnQsXG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuTW92aW5nLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9LFxuICAgIHRvdWNoZW5kOiB7XG4gICAgICAgIHRhcmdldDogTGlzdGVuZXJUYXJnZXQuRG9jdW1lbnQsXG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuRW5kLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9LFxuICAgIHRvdWNoY2FuY2VsOiB7XG4gICAgICAgIHRhcmdldDogTGlzdGVuZXJUYXJnZXQuRG9jdW1lbnQsXG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuRW5kLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IHRydWUgfVxuICAgIH1cbn0gYXMgY29uc3RcbiJdfQ==
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import { filter, map } from "rxjs";
|
|
1
|
+
import { filter, map, tap } from "rxjs";
|
|
2
2
|
import { stateToEvent } from "./_base";
|
|
3
3
|
const TypeMap = {
|
|
4
|
-
["start" /* GesturePhase.Start */]: "
|
|
5
|
-
["moving" /* GesturePhase.Moving */]: "
|
|
6
|
-
["end" /* GesturePhase.End */]: "
|
|
4
|
+
["start" /* GesturePhase.Start */]: "dragging-start",
|
|
5
|
+
["moving" /* GesturePhase.Moving */]: "dragging-move",
|
|
6
|
+
["end" /* GesturePhase.End */]: "dragging-end"
|
|
7
7
|
};
|
|
8
8
|
export const Dragging = {
|
|
9
9
|
name: "dragging",
|
|
10
|
-
listeners: ["mousedown", "mousemove", "mouseup", "touchstart", "touchmove", "touchend"],
|
|
10
|
+
listeners: ["mousedown", "mousemove", "mouseup", "touchstart", "touchmove", "touchend", "touchcancel"],
|
|
11
11
|
priority: 0,
|
|
12
|
-
handler: events =>
|
|
13
|
-
const x = 0;
|
|
14
|
-
return events.pipe(filter(state => !state.pending || state.pending.length === 0), map(state => stateToEvent(state, TypeMap[state.phase])));
|
|
15
|
-
}
|
|
12
|
+
handler: events => events.pipe(filter(state => !state.pending || state.pending.length === 0), tap(state => state.preventDefault()), map(state => stateToEvent(state, TypeMap[state.phase])))
|
|
16
13
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy9nZXN0dXJlcy9nZXN0dXJlcy9kcmFnZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFdkMsT0FBTyxFQUF1QyxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFNM0UsTUFBTSxPQUFPLEdBQUc7SUFDWixrQ0FBb0IsRUFBRSxnQkFBZ0I7SUFDdEMsb0NBQXFCLEVBQUUsZUFBZTtJQUN0Qyw4QkFBa0IsRUFBRSxjQUFjO0NBQ3JDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQTJCO0lBQzVDLElBQUksRUFBRSxVQUFVO0lBQ2hCLFNBQVMsRUFBRSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQztJQUN0RyxRQUFRLEVBQUUsQ0FBQztJQUNYLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUNkLE1BQU0sQ0FBQyxJQUFJLENBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUM3RCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsRUFDcEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDMUQ7Q0FDUixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgR2VzdHVyZSwgR2VzdHVyZUV2ZW50LCBHZXN0dXJlUGhhc2UsIHN0YXRlVG9FdmVudCB9IGZyb20gXCIuL19iYXNlXCJcblxuLy8gZXhwb3J0IHR5cGUgRHJhZ2dpbmdFdmVudCA9IEdlc3R1cmVFdmVudDxcImRyYWdnaW5nLXN0YXJ0XCIgfCBcImRyYWdnaW5nLWVuZFwiIHwgXCJkcmFnZ2luZy1tb3ZlXCI+XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJhZ2dpbmdFdmVudCBleHRlbmRzIEdlc3R1cmVFdmVudDxcImRyYWdnaW5nLXN0YXJ0XCIgfCBcImRyYWdnaW5nLWVuZFwiIHwgXCJkcmFnZ2luZy1tb3ZlXCI+IHt9XG5cbmNvbnN0IFR5cGVNYXAgPSB7XG4gICAgW0dlc3R1cmVQaGFzZS5TdGFydF06IFwiZHJhZ2dpbmctc3RhcnRcIixcbiAgICBbR2VzdHVyZVBoYXNlLk1vdmluZ106IFwiZHJhZ2dpbmctbW92ZVwiLFxuICAgIFtHZXN0dXJlUGhhc2UuRW5kXTogXCJkcmFnZ2luZy1lbmRcIlxufVxuXG5leHBvcnQgY29uc3QgRHJhZ2dpbmc6IEdlc3R1cmU8RHJhZ2dpbmdFdmVudD4gPSB7XG4gICAgbmFtZTogXCJkcmFnZ2luZ1wiLFxuICAgIGxpc3RlbmVyczogW1wibW91c2Vkb3duXCIsIFwibW91c2Vtb3ZlXCIsIFwibW91c2V1cFwiLCBcInRvdWNoc3RhcnRcIiwgXCJ0b3VjaG1vdmVcIiwgXCJ0b3VjaGVuZFwiLCBcInRvdWNoY2FuY2VsXCJdLFxuICAgIHByaW9yaXR5OiAwLFxuICAgIGhhbmRsZXI6IGV2ZW50cyA9PlxuICAgICAgICBldmVudHMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiAhc3RhdGUucGVuZGluZyB8fCBzdGF0ZS5wZW5kaW5nLmxlbmd0aCA9PT0gMCksXG4gICAgICAgICAgICB0YXAoc3RhdGUgPT4gc3RhdGUucHJldmVudERlZmF1bHQoKSksXG4gICAgICAgICAgICBtYXAoc3RhdGUgPT4gc3RhdGVUb0V2ZW50KHN0YXRlLCBUeXBlTWFwW3N0YXRlLnBoYXNlXSkpXG4gICAgICAgIClcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DOCUMENT } from "@angular/common";
|
|
2
2
|
import { inject, Injectable, NgZone } from "@angular/core";
|
|
3
|
-
import { concatMap, filter, finalize, fromEvent, map, merge, of, scan, share,
|
|
3
|
+
import { concatMap, filter, finalize, fromEvent, map, merge, of, scan, share, startWith, takeWhile, tap } from "rxjs";
|
|
4
4
|
import { flatten } from "lodash";
|
|
5
5
|
import { coerceElement } from "@ngutil/common";
|
|
6
6
|
import { Listeners } from "./gestures";
|
|
@@ -11,29 +11,18 @@ export class GesturesService {
|
|
|
11
11
|
#listeners = new Map();
|
|
12
12
|
watch(el, ...gestures) {
|
|
13
13
|
return this.#zone.runOutsideAngular(() => {
|
|
14
|
-
const signal = new Subject();
|
|
15
14
|
const listeners = flatten(gestures.map(v => v.listeners || []));
|
|
16
15
|
const { trigger, watch } = this.#getListeners(coerceElement(el), listeners);
|
|
17
16
|
let pointerType;
|
|
18
|
-
|
|
17
|
+
return trigger.pipe(filter(state => {
|
|
19
18
|
if (pointerType == null) {
|
|
20
19
|
pointerType = state.pointerType;
|
|
21
20
|
}
|
|
22
21
|
return pointerType === state.pointerType;
|
|
23
|
-
}), concatMap(v => this.#zone.runOutsideAngular(() =>
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}, {}), tap(state => {
|
|
28
|
-
if (state.phase === "end" /* GesturePhase.End */) {
|
|
29
|
-
pointerType = undefined;
|
|
30
|
-
signal.next(1 /* Signal.Rewatch */);
|
|
31
|
-
}
|
|
32
|
-
}), shareReplay(1));
|
|
33
|
-
return merge(...gestures.map(v => v.handler(events))).pipe(finalize(() => {
|
|
34
|
-
signal.next(2 /* Signal.Destroy */);
|
|
35
|
-
signal.complete();
|
|
36
|
-
}));
|
|
22
|
+
}), concatMap(v => this.#zone.runOutsideAngular(() => {
|
|
23
|
+
const watching = watch[pointerType].pipe(startWith(v), scan((state, curr) => updatePointers({ ...state, ...curr }), {}), takeWhile(state => state.phase !== "end" /* GesturePhase.End */, true), share());
|
|
24
|
+
return merge(...gestures.map(v => v.handler(watching)));
|
|
25
|
+
})));
|
|
37
26
|
});
|
|
38
27
|
}
|
|
39
28
|
#getListeners(inputEl, listeners) {
|
|
@@ -81,15 +70,19 @@ export class GesturesService {
|
|
|
81
70
|
}
|
|
82
71
|
let listener = targetListeners.get(name);
|
|
83
72
|
if (listener == null) {
|
|
84
|
-
const phase = Listeners[name]
|
|
85
|
-
const
|
|
86
|
-
listener = fromEvent(targetObj, name,
|
|
73
|
+
const { phase, pointerType, options } = Listeners[name];
|
|
74
|
+
const passive = options?.passive;
|
|
75
|
+
listener = fromEvent(targetObj, name, options).pipe(finalize(() => {
|
|
87
76
|
targetListeners.delete(name);
|
|
88
|
-
}), map(origin => {
|
|
89
|
-
|
|
90
|
-
|
|
77
|
+
}), map(origin => ({
|
|
78
|
+
origin,
|
|
79
|
+
phase,
|
|
80
|
+
pointerType,
|
|
81
|
+
preventDefault: passive === false ? origin.preventDefault.bind(origin) : noop
|
|
82
|
+
})));
|
|
91
83
|
if (phase === "start" /* GesturePhase.Start */) {
|
|
92
84
|
listener = listener.pipe(tap(state => {
|
|
85
|
+
;
|
|
93
86
|
state.target = state.origin.target;
|
|
94
87
|
}));
|
|
95
88
|
}
|
|
@@ -130,7 +123,7 @@ function updatePointers(state) {
|
|
|
130
123
|
else if (state.pointers) {
|
|
131
124
|
const pointers = pointersFromEvent(state.origin);
|
|
132
125
|
if (pointers.length === 0) {
|
|
133
|
-
return;
|
|
126
|
+
return state;
|
|
134
127
|
}
|
|
135
128
|
state.pointers = state.pointers.map((v, i) => {
|
|
136
129
|
const p = pointers[i];
|
|
@@ -142,8 +135,12 @@ function updatePointers(state) {
|
|
|
142
135
|
};
|
|
143
136
|
});
|
|
144
137
|
}
|
|
138
|
+
return state;
|
|
145
139
|
}
|
|
146
140
|
function direction(prev, curr) {
|
|
147
141
|
return curr > prev ? 1 : curr < prev ? -1 : 0;
|
|
148
142
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2dlc3R1cmVzL2dlc3R1cmVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBRUwsRUFBRSxFQUNGLElBQUksRUFDSixLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsRUFDTixNQUFNLE1BQU0sQ0FBQTtBQUViLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFaEMsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQTtBQUc1RCxPQUFPLEVBT0gsU0FBUyxFQUNaLE1BQU0sWUFBWSxDQUFBOztBQVFuQixNQUFNLE9BQU8sZUFBZTtJQUNmLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDNUIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN0QixVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXNFLENBQUE7SUFFbkcsS0FBSyxDQUF5QixFQUFnQixFQUFFLEdBQUcsUUFBc0I7UUFDckUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFBO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMs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QyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIlxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7XG4gICAgY29uY2F0TWFwLFxuICAgIGZpbHRlcixcbiAgICBmaW5hbGl6ZSxcbiAgICBmcm9tRXZlbnQsXG4gICAgbWFwLFxuICAgIG1lcmdlLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgc2NhbixcbiAgICBzaGFyZSxcbiAgICBzaGFyZVJlcGxheSxcbiAgICBzdGFydFdpdGgsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlVW50aWwsXG4gICAgdGFwXG59IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gXCJsb2Rhc2hcIlxuXG5pbXBvcnQgeyBjb2VyY2VFbGVtZW50LCBFbGVtZW50SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiQG5ndXRpbC9zdHlsZVwiXG5cbmltcG9ydCB7XG4gICAgR2VzdHVyZSxcbiAgICBHZXN0dXJlRXZlbnQsXG4gICAgR2VzdHVyZU1hdGNoU3RhdGUsXG4gICAgR2VzdHVyZU9yaWdpbixcbiAgICBHZXN0dXJlUGhhc2UsXG4gICAgR2VzdHVyZVBvaW50ZXJUeXBlLFxuICAgIExpc3RlbmVyc1xufSBmcm9tIFwiLi9nZXN0dXJlc1wiXG5cbmNvbnN0IGVudW0gU2lnbmFsIHtcbiAgICBSZXdhdGNoID0gMSxcbiAgICBEZXN0cm95ID0gMlxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgR2VzdHVyZXNTZXJ2aWNlIHtcbiAgICByZWFkb25seSAjZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpXG4gICAgcmVhZG9ubHkgI3pvbmUgPSBpbmplY3QoTmdab25lKVxuICAgIHJlYWRvbmx5ICNsaXN0ZW5lcnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50IHwgRG9jdW1lbnQsIE1hcDxzdHJpbmcsIE9ic2VydmFibGU8R2VzdHVyZU1hdGNoU3RhdGU+Pj4oKVxuXG4gICAgd2F0Y2g8VCBleHRlbmRzIEdlc3R1cmVFdmVudD4oZWw6IEVsZW1lbnRJbnB1dCwgLi4uZ2VzdHVyZXM6IEdlc3R1cmU8VD5bXSk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaWduYWwgPSBuZXcgU3ViamVjdDxTaWduYWw+KClcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IGZsYXR0ZW4oZ2VzdHVyZXMubWFwKHYgPT4gdi5saXN0ZW5lcnMgfHwgW10pKVxuICAgICAgICAgICAgY29uc3QgeyB0cmlnZ2VyLCB3YXRjaCB9ID0gdGhpcy4jZ2V0TGlzdGVuZXJzKGNvZXJjZUVsZW1lbnQoZWwpLCBsaXN0ZW5lcnMpXG5cbiAgICAgICAgICAgIGxldCBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlIHwgdW5kZWZpbmVkXG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSB0cmlnZ2VyLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHNpZ25hbC5waXBlKGZpbHRlcih2ID0+IHYgPT09IFNpZ25hbC5EZXN0cm95KSkpLFxuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludGVyVHlwZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSA9IHN0YXRlLnBvaW50ZXJUeXBlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50ZXJUeXBlID09PSBzdGF0ZS5wb2ludGVyVHlwZVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcCh2ID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gd2F0Y2hbcG9pbnRlclR5cGUhXS5waXBlKHN0YXJ0V2l0aCh2KSwgdGFrZVVudGlsKHNpZ25hbCkpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgc2Nhbigoc3RhdGUsIGN1cnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geyAuLi5zdGF0ZSwgLi4uY3VyciB9XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVBvaW50ZXJzKHJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgICAgIH0sIHt9IGFzIEdlc3R1cmVNYXRjaFN0YXRlKSxcbiAgICAgICAgICAgICAgICB0YXAoc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUucGhhc2UgPT09IEdlc3R1cmVQaGFzZS5FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlID0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwubmV4dChTaWduYWwuUmV3YXRjaClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi5nZXN0dXJlcy5tYXAodiA9PiB2LmhhbmRsZXIoZXZlbnRzKSkpLnBpcGUoXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzaWduYWwubmV4dChTaWduYWwuRGVzdHJveSlcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFsLmNvbXBsZXRlKClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgICNnZXRMaXN0ZW5lcnMoaW5wdXRFbDogSFRNTEVsZW1lbnQsIGxpc3RlbmVyczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW11cbiAgICAgICAgY29uc3Qgd2F0Y2hlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge31cblxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBjb25mID0gTGlzdGVuZXJzW25hbWVdXG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgICAgICAgICAgICAgY29uZi5waGFzZSA9PT0gR2VzdHVyZVBoYXNlLlN0YXJ0XG4gICAgICAgICAgICAgICAgICAgID8gdHJpZ2dlcnNcbiAgICAgICAgICAgICAgICAgICAgOiAod2F0Y2hlc1tjb25mLnBvaW50ZXJUeXBlXSA9IHdhdGNoZXNbY29uZi5wb2ludGVyVHlwZV0gfHwgW10pXG5cbiAgICAgICAgICAgIGlmIChjb250YWluZXIuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIucHVzaChuYW1lKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJNaXNzaW5nIHN0YXJ0IGV2ZW50c1wiKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSA9IChuYW1lczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jZ2V0TGlzdGVuZXIoaW5wdXRFbCwgbmFtZXNbMF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi5uYW1lcy5tYXAodiA9PiB0aGlzLiNnZXRMaXN0ZW5lcihpbnB1dEVsLCB2KSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHJpZ2dlcjogb2JzZXJ2YWJsZSh0cmlnZ2VycyksXG4gICAgICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgICAgIFtHZXN0dXJlUG9pbnRlclR5cGUuTW91c2VdOiBvYnNlcnZhYmxlKHdhdGNoZXNbR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlXSksXG4gICAgICAgICAgICAgICAgW0dlc3R1cmVQb2ludGVyVHlwZS5Ub3VjaF06IG9ic2VydmFibGUod2F0Y2hlc1tHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2hdKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2dldExpc3RlbmVyKGlucHV0RWw6IEhUTUxFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEdlc3R1cmVNYXRjaFN0YXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IExpc3RlbmVyc1tuYW1lXS50YXJnZXRcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE9iaiA9IHRhcmdldCA9PT0gXCJkb2N1bWVudFwiID8gdGhpcy4jZG9jdW1lbnQgOiBpbnB1dEVsXG4gICAgICAgICAgICBsZXQgdGFyZ2V0TGlzdGVuZXJzID0gdGhpcy4jbGlzdGVuZXJzLmdldCh0YXJnZXRPYmopXG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRMaXN0ZW5lcnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldExpc3RlbmVycyA9IG5ldyBNYXAoKVxuICAgICAgICAgICAgICAgIHRoaXMuI2xpc3RlbmVycy5zZXQodGFyZ2V0T2JqLCB0YXJnZXRMaXN0ZW5lcnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IHRhcmdldExpc3RlbmVycy5nZXQobmFtZSlcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGhhc2UgPSBMaXN0ZW5lcnNbbmFtZV0ucGhhc2VcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludGVyVHlwZSA9IExpc3RlbmVyc1tuYW1lXS5wb2ludGVyVHlwZVxuXG4gICAgICAgICAgICAgICAgbGlzdGVuZXIgPSBmcm9tRXZlbnQ8R2VzdHVyZU9yaWdpbj4odGFyZ2V0T2JqLCBuYW1lLCB7IGNhcHR1cmU6IHRydWUgfSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGlzdGVuZXJzLmRlbGV0ZShuYW1lKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwPEdlc3R1cmVPcmlnaW4sIEdlc3R1cmVNYXRjaFN0YXRlPihvcmlnaW4gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgb3JpZ2luLCBwaGFzZSwgcG9pbnRlclR5cGUgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIGlmIChwaGFzZSA9PT0gR2VzdHVyZVBoYXNlLlN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyID0gbGlzdGVuZXIucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcChzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUudGFyZ2V0ID0gc3RhdGUub3JpZ2luIS50YXJnZXQhIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGlzdGVuZXIgPSBsaXN0ZW5lci5waXBlKHNoYXJlKCkpXG5cbiAgICAgICAgICAgICAgICB0YXJnZXRMaXN0ZW5lcnMuc2V0KG5hbWUsIGxpc3RlbmVyKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBvaW50ZXJzRnJvbUV2ZW50KGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IFBvc2l0aW9uW10ge1xuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGV2ZW50LnRvdWNoZXMpLm1hcCh0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHg6IHQuY2xpZW50WCwgeTogdC5jbGllbnRZIH1cbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVBvaW50ZXJzKHN0YXRlOiBHZXN0dXJlTWF0Y2hTdGF0ZSkge1xuICAgIGlmIChzdGF0ZS5waGFzZSA9PT0gR2VzdHVyZVBoYXNlLlN0YXJ0KSB7XG4gICAgICAgIHN0YXRlLnBvaW50ZXJzID0gcG9pbnRlcnNGcm9tRXZlbnQoc3RhdGUub3JpZ2luISkubWFwKHYgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnQ6IHYsIGN1cnJlbnQ6IHYsIGRpc3RhbmNlOiB7IHg6IDAsIHk6IDAgfSwgZGlyZWN0aW9uOiB7IHg6IDAsIHk6IDAgfSB9XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5wb2ludGVycykge1xuICAgICAgICBjb25zdCBwb2ludGVycyA9IHBvaW50ZXJzRnJvbUV2ZW50KHN0YXRlLm9yaWdpbiEpXG4gICAgICAgIGlmIChwb2ludGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucG9pbnRlcnMgPSBzdGF0ZS5wb2ludGVycy5tYXAoKHYsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwb2ludGVyc1tpXVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzdGFydDogdi5zdGFydCxcbiAgICAgICAgICAgICAgICBjdXJyZW50OiBwLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlOiB7IHg6IHAueCAtIHYuc3RhcnQueCwgeTogcC55IC0gdi5zdGFydC55IH0sXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB7IHg6IGRpcmVjdGlvbih2LnN0YXJ0LngsIHAueCksIHk6IGRpcmVjdGlvbih2LnN0YXJ0LnksIHAueSkgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGlyZWN0aW9uKHByZXY6IG51bWJlciwgY3VycjogbnVtYmVyKTogLTEgfCAwIHwgMSB7XG4gICAgcmV0dXJuIGN1cnIgPiBwcmV2ID8gMSA6IGN1cnIgPCBwcmV2ID8gLTEgOiAwXG59XG5cbi8vIGNvbnN0IHN2YyA9IG5ldyBHZXN0dXJlc1NlcnZpY2UoKVxuLy8gY29uc3QgdyA9IHN2Yy53YXRjaChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLCBEcmFnQW5kRHJvcClcbiJdfQ==
|
|
143
|
+
// const svc = new GesturesService()
|
|
144
|
+
// const w = svc.watch(document.createElement("div"), DragAndDrop)
|
|
145
|
+
function noop() { }
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2dlc3R1cmVzL2dlc3R1cmVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBRUwsRUFBRSxFQUNGLElBQUksRUFDSixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ04sTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBR2hDLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7QUFHNUQsT0FBTyxFQU9ILFNBQVMsRUFDWixNQUFNLFlBQVksQ0FBQTs7QUFHbkIsTUFBTSxPQUFPLGVBQWU7SUFDZixTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVCLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEIsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFzRSxDQUFBO0lBRW5HLEtBQUssQ0FBeUIsRUFBZ0IsRUFBRSxHQUFHLFFBQXNCO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDL0QsTUFBTSxFQUFFLE9BQU8s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LE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNyQixPQUFPO2dCQUNILEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxPQUFPLEVBQUUsQ0FBQztnQkFDVixRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDcEQsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDNUUsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBWTtJQUN6QyxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNqRCxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLGtFQUFrRTtBQUNsRSxTQUFTLElBQUksS0FBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQge1xuICAgIGNvbmNhdE1hcCxcbiAgICBmaWx0ZXIsXG4gICAgZmluYWxpemUsXG4gICAgZnJvbUV2ZW50LFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIHNjYW4sXG4gICAgc2hhcmUsXG4gICAgc3RhcnRXaXRoLFxuICAgIHRha2VXaGlsZSxcbiAgICB0YXBcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSBcImxvZGFzaFwiXG5pbXBvcnQgeyBNdXRhYmxlIH0gZnJvbSBcInV0aWxpdHktdHlwZXNcIlxuXG5pbXBvcnQgeyBjb2VyY2VFbGVtZW50LCBFbGVtZW50SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiQG5ndXRpbC9zdHlsZVwiXG5cbmltcG9ydCB7XG4gICAgR2VzdHVyZSxcbiAgICBHZXN0dXJlRXZlbnQsXG4gICAgR2VzdHVyZU1hdGNoU3RhdGUsXG4gICAgR2VzdHVyZU9yaWdpbixcbiAgICBHZXN0dXJlUGhhc2UsXG4gICAgR2VzdHVyZVBvaW50ZXJUeXBlLFxuICAgIExpc3RlbmVyc1xufSBmcm9tIFwiLi9nZXN0dXJlc1wiXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBHZXN0dXJlc1NlcnZpY2Uge1xuICAgIHJlYWRvbmx5ICNkb2N1bWVudCA9IGluamVjdChET0NVTUVOVClcbiAgICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmVhZG9ubHkgI2xpc3RlbmVycyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQgfCBEb2N1bWVudCwgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxHZXN0dXJlTWF0Y2hTdGF0ZT4+PigpXG5cbiAgICB3YXRjaDxUIGV4dGVuZHMgR2VzdHVyZUV2ZW50PihlbDogRWxlbWVudElucHV0LCAuLi5nZXN0dXJlczogR2VzdHVyZTxUPltdKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IGZsYXR0ZW4oZ2VzdHVyZXMubWFwKHYgPT4gdi5saXN0ZW5lcnMgfHwgW10pKVxuICAgICAgICAgICAgY29uc3QgeyB0cmlnZ2VyLCB3YXRjaCB9ID0gdGhpcy4jZ2V0TGlzdGVuZXJzKGNvZXJjZUVsZW1lbnQoZWwpLCBsaXN0ZW5lcnMpXG5cbiAgICAgICAgICAgIGxldCBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlIHwgdW5kZWZpbmVkXG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlci5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludGVyVHlwZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSA9IHN0YXRlLnBvaW50ZXJUeXBlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50ZXJUeXBlID09PSBzdGF0ZS5wb2ludGVyVHlwZVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcCh2ID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F0Y2hpbmcgPSB3YXRjaFtwb2ludGVyVHlwZSFdLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKHYpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZSwgY3VycikgPT4gdXBkYXRlUG9pbnRlcnM8VD4oeyAuLi5zdGF0ZSwgLi4uY3VyciB9IGFzIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSBhcyBHZXN0dXJlTWF0Y2hTdGF0ZTxUPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVdoaWxlKHN0YXRlID0+IHN0YXRlLnBoYXNlICE9PSBHZXN0dXJlUGhhc2UuRW5kLCB0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2UoLi4uZ2VzdHVyZXMubWFwKHYgPT4gdi5oYW5kbGVyKHdhdGNoaW5nKSkpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgICNnZXRMaXN0ZW5lcnM8VCBleHRlbmRzIEdlc3R1cmVFdmVudD4oaW5wdXRFbDogSFRNTEVsZW1lbnQsIGxpc3RlbmVyczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW11cbiAgICAgICAgY29uc3Qgd2F0Y2hlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge31cblxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBjb25mID0gTGlzdGVuZXJzW25hbWVdXG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgICAgICAgICAgICAgY29uZi5waGFzZSA9PT0gR2VzdHVyZVBoYXNlLlN0YXJ0XG4gICAgICAgICAgICAgICAgICAgID8gdHJpZ2dlcnNcbiAgICAgICAgICAgICAgICAgICAgOiAod2F0Y2hlc1tjb25mLnBvaW50ZXJUeXBlXSA9IHdhdGNoZXNbY29uZi5wb2ludGVyVHlwZV0gfHwgW10pXG5cbiAgICAgICAgICAgIGlmIChjb250YWluZXIuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIucHVzaChuYW1lKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJNaXNzaW5nIHN0YXJ0IGV2ZW50c1wiKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSA9IChuYW1lczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jZ2V0TGlzdGVuZXI8VD4oaW5wdXRFbCwgbmFtZXNbMF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi5uYW1lcy5tYXAodiA9PiB0aGlzLiNnZXRMaXN0ZW5lcjxUPihpbnB1dEVsLCB2KSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHJpZ2dlcjogb2JzZXJ2YWJsZSh0cmlnZ2VycyksXG4gICAgICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgICAgIFtHZXN0dXJlUG9pbnRlclR5cGUuTW91c2VdOiBvYnNlcnZhYmxlKHdhdGNoZXNbR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlXSksXG4gICAgICAgICAgICAgICAgW0dlc3R1cmVQb2ludGVyVHlwZS5Ub3VjaF06IG9ic2VydmFibGUod2F0Y2hlc1tHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2hdKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2dldExpc3RlbmVyPFQgZXh0ZW5kcyBHZXN0dXJlRXZlbnQ+KGlucHV0RWw6IEhUTUxFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEdlc3R1cmVNYXRjaFN0YXRlPFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IExpc3RlbmVyc1tuYW1lXS50YXJnZXRcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE9iaiA9IHRhcmdldCA9PT0gXCJkb2N1bWVudFwiID8gdGhpcy4jZG9jdW1lbnQgOiBpbnB1dEVsXG4gICAgICAgICAgICBsZXQgdGFyZ2V0TGlzdGVuZXJzID0gdGhpcy4jbGlzdGVuZXJzLmdldCh0YXJnZXRPYmopXG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRMaXN0ZW5lcnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldExpc3RlbmVycyA9IG5ldyBNYXAoKVxuICAgICAgICAgICAgICAgIHRoaXMuI2xpc3RlbmVycy5zZXQodGFyZ2V0T2JqLCB0YXJnZXRMaXN0ZW5lcnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IHRhcmdldExpc3RlbmVycy5nZXQobmFtZSlcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwaGFzZSwgcG9pbnRlclR5cGUsIG9wdGlvbnMgfSA9IExpc3RlbmVyc1tuYW1lXVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhc3NpdmUgPSBvcHRpb25zPy5wYXNzaXZlXG5cbiAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGZyb21FdmVudDxHZXN0dXJlT3JpZ2luPih0YXJnZXRPYmosIG5hbWUsIG9wdGlvbnMgYXMgYW55KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMaXN0ZW5lcnMuZGVsZXRlKG5hbWUpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQ6IHBhc3NpdmUgPT09IGZhbHNlID8gb3JpZ2luLnByZXZlbnREZWZhdWx0LmJpbmQob3JpZ2luKSA6IG5vb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyB1bmtub3duIGFzIEdlc3R1cmVNYXRjaFN0YXRlPFQ+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICBpZiAocGhhc2UgPT09IEdlc3R1cmVQaGFzZS5TdGFydCkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsoc3RhdGUgYXMgTXV0YWJsZTxHZXN0dXJlTWF0Y2hTdGF0ZT4pLnRhcmdldCA9IHN0YXRlLm9yaWdpbi50YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLnBpcGUoc2hhcmUoKSlcblxuICAgICAgICAgICAgICAgIHRhcmdldExpc3RlbmVycy5zZXQobmFtZSwgbGlzdGVuZXIpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lciBhcyBPYnNlcnZhYmxlPEdlc3R1cmVNYXRjaFN0YXRlPFQ+PlxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcG9pbnRlcnNGcm9tRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogUG9zaXRpb25bXSB7XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZXZlbnQudG91Y2hlcykubWFwKHQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgeDogdC5jbGllbnRYLCB5OiB0LmNsaWVudFkgfVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlUG9pbnRlcnM8VCBleHRlbmRzIEdlc3R1cmVFdmVudD4oc3RhdGU6IE11dGFibGU8VD4pOiBHZXN0dXJlTWF0Y2hTdGF0ZTxUPiB7XG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSBHZXN0dXJlUGhhc2UuU3RhcnQpIHtcbiAgICAgICAgc3RhdGUucG9pbnRlcnMgPSBwb2ludGVyc0Zyb21FdmVudChzdGF0ZS5vcmlnaW4pLm1hcCh2ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiB2LCBjdXJyZW50OiB2LCBkaXN0YW5jZTogeyB4OiAwLCB5OiAwIH0sIGRpcmVjdGlvbjogeyB4OiAwLCB5OiAwIH0gfVxuICAgICAgICB9KVxuICAgIH0gZWxzZSBpZiAoc3RhdGUucG9pbnRlcnMpIHtcbiAgICAgICAgY29uc3QgcG9pbnRlcnMgPSBwb2ludGVyc0Zyb21FdmVudChzdGF0ZS5vcmlnaW4pXG4gICAgICAgIGlmIChwb2ludGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucG9pbnRlcnMgPSBzdGF0ZS5wb2ludGVycy5tYXAoKHYsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwb2ludGVyc1tpXVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzdGFydDogdi5zdGFydCxcbiAgICAgICAgICAgICAgICBjdXJyZW50OiBwLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlOiB7IHg6IHAueCAtIHYuc3RhcnQueCwgeTogcC55IC0gdi5zdGFydC55IH0sXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB7IHg6IGRpcmVjdGlvbih2LnN0YXJ0LngsIHAueCksIHk6IGRpcmVjdGlvbih2LnN0YXJ0LnksIHAueSkgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZVxufVxuXG5mdW5jdGlvbiBkaXJlY3Rpb24ocHJldjogbnVtYmVyLCBjdXJyOiBudW1iZXIpOiAtMSB8IDAgfCAxIHtcbiAgICByZXR1cm4gY3VyciA+IHByZXYgPyAxIDogY3VyciA8IHByZXYgPyAtMSA6IDBcbn1cblxuLy8gY29uc3Qgc3ZjID0gbmV3IEdlc3R1cmVzU2VydmljZSgpXG4vLyBjb25zdCB3ID0gc3ZjLndhdGNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksIERyYWdBbmREcm9wKVxuZnVuY3Rpb24gbm9vcCgpIHt9XG4iXX0=
|
package/fesm2022/ngutil-aria.mjs
CHANGED
|
@@ -1,80 +1,57 @@
|
|
|
1
1
|
import { DOCUMENT } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { NgZone, Injectable, Inject,
|
|
4
|
-
import {
|
|
5
|
-
import { Destructible, coerceElement, isElementInput, DisabledState } from '@ngutil/common';
|
|
3
|
+
import { inject, NgZone, Injectable, Inject, ElementRef, effect, Directive, input, computed } from '@angular/core';
|
|
4
|
+
import { merge, fromEvent, map, share, filter, shareReplay, startWith, throttleTime, switchMap, timer, take, distinctUntilChanged, combineLatest, BehaviorSubject, of, debounceTime, Observable, Subject, tap, concatMap, scan, takeWhile, finalize } from 'rxjs';
|
|
6
5
|
import { FocusTrapFactory } from '@angular/cdk/a11y';
|
|
7
6
|
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
8
7
|
import { focusable, isFocusable } from 'tabbable';
|
|
8
|
+
import { coerceElement, Destructible, isElementInput, DisabledState } from '@ngutil/common';
|
|
9
9
|
import { flatten } from 'lodash';
|
|
10
10
|
|
|
11
11
|
const EVENT_OPTIONS$1 = {
|
|
12
12
|
capture: true,
|
|
13
13
|
passive: true
|
|
14
14
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
this.d.any(() => {
|
|
34
|
-
document.removeEventListener("keydown", this.#onKeydown, EVENT_OPTIONS$1);
|
|
35
|
-
document.removeEventListener("mousedown", this.#onMouseDown, EVENT_OPTIONS$1);
|
|
36
|
-
document.removeEventListener("mousemove", this.#onMouseMove, EVENT_OPTIONS$1);
|
|
37
|
-
document.removeEventListener("touchstart", this.#onTouchStart, EVENT_OPTIONS$1);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
15
|
+
const EVENT_ORIGIN = {
|
|
16
|
+
keydown: "keyboard",
|
|
17
|
+
mousedown: "mouse",
|
|
18
|
+
mousemove: "mouse",
|
|
19
|
+
touchstart: "touch"
|
|
20
|
+
};
|
|
21
|
+
class ActivityService {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.#zone = inject(NgZone);
|
|
24
|
+
this.#doc = inject(DOCUMENT);
|
|
25
|
+
this.events$ = this.#zone.runOutsideAngular(() => merge(fromEvent(this.#doc, "keydown", EVENT_OPTIONS$1), fromEvent(this.#doc, "mousedown", EVENT_OPTIONS$1), fromEvent(this.#doc, "mousemove", EVENT_OPTIONS$1), fromEvent(this.#doc, "touchstart", EVENT_OPTIONS$1)).pipe(map(event => {
|
|
26
|
+
const type = event.type;
|
|
27
|
+
return {
|
|
28
|
+
origin: EVENT_ORIGIN[type],
|
|
29
|
+
type: type,
|
|
30
|
+
node: event.target
|
|
31
|
+
};
|
|
32
|
+
}), share()));
|
|
40
33
|
}
|
|
34
|
+
#zone;
|
|
35
|
+
#doc;
|
|
41
36
|
watchActivity(node) {
|
|
42
37
|
if (node) {
|
|
43
|
-
return this.events
|
|
38
|
+
return this.events$.pipe(filter(event => event.node != null &&
|
|
44
39
|
(event.node === node || (event.node instanceof HTMLElement && event.node.contains(node)))), shareReplay(1));
|
|
45
40
|
}
|
|
46
41
|
else {
|
|
47
|
-
return this.events
|
|
42
|
+
return this.events$;
|
|
48
43
|
}
|
|
49
44
|
}
|
|
50
45
|
watchInactvity(timeout) {
|
|
51
|
-
|
|
46
|
+
return this.events$.pipe(startWith(null), throttleTime(timeout / 2), switchMap(() => timer(0, timeout).pipe(take(2))), map(v => v !== 0), distinctUntilChanged(), shareReplay(1));
|
|
52
47
|
}
|
|
53
|
-
|
|
54
|
-
this.#activity.next({ origin: "keyboard", node: event.target });
|
|
55
|
-
};
|
|
56
|
-
#onMouseDown = (event) => {
|
|
57
|
-
this.#activity.next({ origin: "mouse", node: event.target });
|
|
58
|
-
};
|
|
59
|
-
#onMouseMove = (event) => {
|
|
60
|
-
// this.#activity.next({ origin: "mouse" })
|
|
61
|
-
};
|
|
62
|
-
#onTouchStart = (event) => {
|
|
63
|
-
this.#activity.next({ origin: "touch", node: event.target });
|
|
64
|
-
};
|
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ActivityService, deps: [{ token: DOCUMENT }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ActivityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
66
49
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ActivityService, providedIn: "root" }); }
|
|
67
50
|
}
|
|
68
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ActivityService, decorators: [{
|
|
69
52
|
type: Injectable,
|
|
70
53
|
args: [{ providedIn: "root" }]
|
|
71
|
-
}]
|
|
72
|
-
type: Inject,
|
|
73
|
-
args: [DOCUMENT]
|
|
74
|
-
}] }, { type: i0.NgZone, decorators: [{
|
|
75
|
-
type: Inject,
|
|
76
|
-
args: [NgZone]
|
|
77
|
-
}] }] });
|
|
54
|
+
}] });
|
|
78
55
|
|
|
79
56
|
const EVENT_OPTIONS = {
|
|
80
57
|
capture: true,
|
|
@@ -88,7 +65,14 @@ class FocusService {
|
|
|
88
65
|
const focus = fromEvent(document, "focus", EVENT_OPTIONS).pipe(map(e => e.target));
|
|
89
66
|
const blur = fromEvent(document, "blur", EVENT_OPTIONS).pipe(startWith(null), map(e => e?.target || null));
|
|
90
67
|
return combineLatest({
|
|
91
|
-
activity: this.#activity.events,
|
|
68
|
+
activity: this.#activity.events$.pipe(filter(event => event.type !== "mousemove"), distinctUntilChanged((prev, curr) => {
|
|
69
|
+
if (prev && curr) {
|
|
70
|
+
return prev.origin === curr.origin && prev.node === curr.node;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
})),
|
|
92
76
|
focus: focus,
|
|
93
77
|
blur: blur
|
|
94
78
|
}).pipe(takeUntilDestroyed(), map(({ activity, focus, blur }) => {
|
|
@@ -388,27 +372,60 @@ function stateToEvent(state, type) {
|
|
|
388
372
|
};
|
|
389
373
|
}
|
|
390
374
|
const Listeners = {
|
|
391
|
-
mousedown: {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
375
|
+
mousedown: {
|
|
376
|
+
target: "element" /* ListenerTarget.Element */,
|
|
377
|
+
pointerType: "mouse" /* GesturePointerType.Mouse */,
|
|
378
|
+
phase: "start" /* GesturePhase.Start */,
|
|
379
|
+
options: { capture: true, passive: false }
|
|
380
|
+
},
|
|
381
|
+
mousemove: {
|
|
382
|
+
target: "document" /* ListenerTarget.Document */,
|
|
383
|
+
pointerType: "mouse" /* GesturePointerType.Mouse */,
|
|
384
|
+
phase: "moving" /* GesturePhase.Moving */,
|
|
385
|
+
options: { capture: true, passive: false }
|
|
386
|
+
},
|
|
387
|
+
mouseup: {
|
|
388
|
+
target: "document" /* ListenerTarget.Document */,
|
|
389
|
+
pointerType: "mouse" /* GesturePointerType.Mouse */,
|
|
390
|
+
phase: "end" /* GesturePhase.End */,
|
|
391
|
+
options: { capture: true, passive: true }
|
|
392
|
+
},
|
|
393
|
+
touchstart: {
|
|
394
|
+
target: "element" /* ListenerTarget.Element */,
|
|
395
|
+
pointerType: "touch" /* GesturePointerType.Touch */,
|
|
396
|
+
phase: "start" /* GesturePhase.Start */,
|
|
397
|
+
options: { capture: true, passive: false }
|
|
398
|
+
},
|
|
399
|
+
touchmove: {
|
|
400
|
+
target: "document" /* ListenerTarget.Document */,
|
|
401
|
+
pointerType: "touch" /* GesturePointerType.Touch */,
|
|
402
|
+
phase: "moving" /* GesturePhase.Moving */,
|
|
403
|
+
options: { capture: true, passive: false }
|
|
404
|
+
},
|
|
405
|
+
touchend: {
|
|
406
|
+
target: "document" /* ListenerTarget.Document */,
|
|
407
|
+
pointerType: "touch" /* GesturePointerType.Touch */,
|
|
408
|
+
phase: "end" /* GesturePhase.End */,
|
|
409
|
+
options: { capture: true, passive: false }
|
|
410
|
+
},
|
|
411
|
+
touchcancel: {
|
|
412
|
+
target: "document" /* ListenerTarget.Document */,
|
|
413
|
+
pointerType: "touch" /* GesturePointerType.Touch */,
|
|
414
|
+
phase: "end" /* GesturePhase.End */,
|
|
415
|
+
options: { capture: true, passive: true }
|
|
416
|
+
}
|
|
397
417
|
};
|
|
398
418
|
|
|
399
419
|
const TypeMap = {
|
|
400
|
-
["start" /* GesturePhase.Start */]: "
|
|
401
|
-
["moving" /* GesturePhase.Moving */]: "
|
|
402
|
-
["end" /* GesturePhase.End */]: "
|
|
420
|
+
["start" /* GesturePhase.Start */]: "dragging-start",
|
|
421
|
+
["moving" /* GesturePhase.Moving */]: "dragging-move",
|
|
422
|
+
["end" /* GesturePhase.End */]: "dragging-end"
|
|
403
423
|
};
|
|
404
424
|
const Dragging = {
|
|
405
425
|
name: "dragging",
|
|
406
|
-
listeners: ["mousedown", "mousemove", "mouseup", "touchstart", "touchmove", "touchend"],
|
|
426
|
+
listeners: ["mousedown", "mousemove", "mouseup", "touchstart", "touchmove", "touchend", "touchcancel"],
|
|
407
427
|
priority: 0,
|
|
408
|
-
handler: events =>
|
|
409
|
-
const x = 0;
|
|
410
|
-
return events.pipe(filter(state => !state.pending || state.pending.length === 0), map(state => stateToEvent(state, TypeMap[state.phase])));
|
|
411
|
-
}
|
|
428
|
+
handler: events => events.pipe(filter(state => !state.pending || state.pending.length === 0), tap(state => state.preventDefault()), map(state => stateToEvent(state, TypeMap[state.phase])))
|
|
412
429
|
};
|
|
413
430
|
|
|
414
431
|
class GesturesService {
|
|
@@ -417,29 +434,18 @@ class GesturesService {
|
|
|
417
434
|
#listeners = new Map();
|
|
418
435
|
watch(el, ...gestures) {
|
|
419
436
|
return this.#zone.runOutsideAngular(() => {
|
|
420
|
-
const signal = new Subject();
|
|
421
437
|
const listeners = flatten(gestures.map(v => v.listeners || []));
|
|
422
438
|
const { trigger, watch } = this.#getListeners(coerceElement(el), listeners);
|
|
423
439
|
let pointerType;
|
|
424
|
-
|
|
440
|
+
return trigger.pipe(filter(state => {
|
|
425
441
|
if (pointerType == null) {
|
|
426
442
|
pointerType = state.pointerType;
|
|
427
443
|
}
|
|
428
444
|
return pointerType === state.pointerType;
|
|
429
|
-
}), concatMap(v => this.#zone.runOutsideAngular(() =>
|
|
430
|
-
const
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
}, {}), tap(state => {
|
|
434
|
-
if (state.phase === "end" /* GesturePhase.End */) {
|
|
435
|
-
pointerType = undefined;
|
|
436
|
-
signal.next(1 /* Signal.Rewatch */);
|
|
437
|
-
}
|
|
438
|
-
}), shareReplay(1));
|
|
439
|
-
return merge(...gestures.map(v => v.handler(events))).pipe(finalize(() => {
|
|
440
|
-
signal.next(2 /* Signal.Destroy */);
|
|
441
|
-
signal.complete();
|
|
442
|
-
}));
|
|
445
|
+
}), concatMap(v => this.#zone.runOutsideAngular(() => {
|
|
446
|
+
const watching = watch[pointerType].pipe(startWith(v), scan((state, curr) => updatePointers({ ...state, ...curr }), {}), takeWhile(state => state.phase !== "end" /* GesturePhase.End */, true), share());
|
|
447
|
+
return merge(...gestures.map(v => v.handler(watching)));
|
|
448
|
+
})));
|
|
443
449
|
});
|
|
444
450
|
}
|
|
445
451
|
#getListeners(inputEl, listeners) {
|
|
@@ -487,15 +493,19 @@ class GesturesService {
|
|
|
487
493
|
}
|
|
488
494
|
let listener = targetListeners.get(name);
|
|
489
495
|
if (listener == null) {
|
|
490
|
-
const phase = Listeners[name]
|
|
491
|
-
const
|
|
492
|
-
listener = fromEvent(targetObj, name,
|
|
496
|
+
const { phase, pointerType, options } = Listeners[name];
|
|
497
|
+
const passive = options?.passive;
|
|
498
|
+
listener = fromEvent(targetObj, name, options).pipe(finalize(() => {
|
|
493
499
|
targetListeners.delete(name);
|
|
494
|
-
}), map(origin => {
|
|
495
|
-
|
|
496
|
-
|
|
500
|
+
}), map(origin => ({
|
|
501
|
+
origin,
|
|
502
|
+
phase,
|
|
503
|
+
pointerType,
|
|
504
|
+
preventDefault: passive === false ? origin.preventDefault.bind(origin) : noop
|
|
505
|
+
})));
|
|
497
506
|
if (phase === "start" /* GesturePhase.Start */) {
|
|
498
507
|
listener = listener.pipe(tap(state => {
|
|
508
|
+
;
|
|
499
509
|
state.target = state.origin.target;
|
|
500
510
|
}));
|
|
501
511
|
}
|
|
@@ -536,7 +546,7 @@ function updatePointers(state) {
|
|
|
536
546
|
else if (state.pointers) {
|
|
537
547
|
const pointers = pointersFromEvent(state.origin);
|
|
538
548
|
if (pointers.length === 0) {
|
|
539
|
-
return;
|
|
549
|
+
return state;
|
|
540
550
|
}
|
|
541
551
|
state.pointers = state.pointers.map((v, i) => {
|
|
542
552
|
const p = pointers[i];
|
|
@@ -548,10 +558,14 @@ function updatePointers(state) {
|
|
|
548
558
|
};
|
|
549
559
|
});
|
|
550
560
|
}
|
|
561
|
+
return state;
|
|
551
562
|
}
|
|
552
563
|
function direction(prev, curr) {
|
|
553
564
|
return curr > prev ? 1 : curr < prev ? -1 : 0;
|
|
554
565
|
}
|
|
566
|
+
// const svc = new GesturesService()
|
|
567
|
+
// const w = svc.watch(document.createElement("div"), DragAndDrop)
|
|
568
|
+
function noop() { }
|
|
555
569
|
|
|
556
570
|
/**
|
|
557
571
|
* Generated bundle index. Do not edit.
|
|
@@ -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/gestures/_base.ts","../../../../packages/aria/src/gestures/gestures/dragging.ts","../../../../packages/aria/src/gestures/gestures.service.ts","../../../../packages/aria/src/ngutil-aria.ts"],"sourcesContent":["import { DOCUMENT } from \"@angular/common\"\nimport { Inject, Injectable, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, filter, Observable, shareReplay, Subject } from \"rxjs\"\n\nimport { Destructible } from \"@ngutil/common\"\n\n// TODO: detect program activity\nexport type ActivityOrigin = \"mouse\" | \"keyboard\" | \"touch\" | \"program\"\n\nexport interface ActivityEvent {\n origin: ActivityOrigin\n node?: Node\n}\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class ActivityService extends Destructible {\n #activity!: Subject<ActivityEvent>\n\n readonly events!: Observable<ActivityEvent>\n\n constructor(@Inject(DOCUMENT) document: Document, @Inject(NgZone) zone: NgZone) {\n super()\n\n zone.runOutsideAngular(() => {\n this.#activity = new Subject()\n ;(this as { events: Observable<ActivityEvent> }).events = this.#activity.pipe(\n distinctUntilChanged((prev, curr): boolean => {\n if (prev && curr) {\n return prev.origin === curr.origin && prev.node === curr.node\n } else {\n return false\n }\n }),\n shareReplay(1)\n )\n\n document.addEventListener(\"keydown\", this.#onKeydown, EVENT_OPTIONS)\n document.addEventListener(\"mousedown\", this.#onMouseDown, EVENT_OPTIONS)\n document.addEventListener(\"mousemove\", this.#onMouseMove, EVENT_OPTIONS)\n document.addEventListener(\"touchstart\", this.#onTouchStart, EVENT_OPTIONS)\n\n this.d.any(() => {\n document.removeEventListener(\"keydown\", this.#onKeydown, EVENT_OPTIONS)\n document.removeEventListener(\"mousedown\", this.#onMouseDown, EVENT_OPTIONS)\n document.removeEventListener(\"mousemove\", this.#onMouseMove, EVENT_OPTIONS)\n document.removeEventListener(\"touchstart\", this.#onTouchStart, EVENT_OPTIONS)\n })\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 throw Error(\"Not implemnted yet\")\n }\n\n #onKeydown = (event: KeyboardEvent) => {\n this.#activity.next({ origin: \"keyboard\", node: event.target as any })\n }\n\n #onMouseDown = (event: MouseEvent) => {\n this.#activity.next({ origin: \"mouse\", node: event.target as any })\n }\n\n #onMouseMove = (event: MouseEvent) => {\n // this.#activity.next({ origin: \"mouse\" })\n }\n\n #onTouchStart = (event: TouchEvent) => {\n this.#activity.next({ origin: \"touch\", node: event.target as any })\n }\n}\n","import { FocusTrapFactory } from \"@angular/cdk/a11y\"\nimport { DOCUMENT } from \"@angular/common\"\nimport { inject, Inject, Injectable, NgZone } from \"@angular/core\"\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\n\nimport { combineLatest, filter, fromEvent, map, Observable, shareReplay, startWith } from \"rxjs\"\n\nimport { focusable, type FocusableElement, isFocusable } from \"tabbable\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { 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 FocusChanges {\n origin: FocusOrigin\n element: HTMLElement\n}\n\nexport interface FocusableEvent {\n origin: FocusOrigin\n exact: boolean\n node: Node\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class FocusService {\n readonly #activity = inject(ActivityService)\n readonly #focusTrap = inject(FocusTrapFactory)\n readonly events: Observable<FocusChanges>\n\n constructor(@Inject(DOCUMENT) document: Document, @Inject(NgZone) zone: NgZone) {\n this.events = zone.runOutsideAngular(() => {\n const focus = fromEvent(document, \"focus\", EVENT_OPTIONS).pipe(map(e => e.target as Node))\n const blur = fromEvent(document, \"blur\", EVENT_OPTIONS).pipe(\n startWith(null),\n map(e => (e?.target as Node) || null)\n )\n\n return combineLatest({\n activity: this.#activity.events,\n focus: focus,\n blur: blur\n }).pipe(\n takeUntilDestroyed(),\n map(({ activity, focus, blur }) => {\n // console.log({ activity, focus, blur })\n\n // If focus in with alt+tab\n if (blur === document && activity.origin === \"keyboard\") {\n return { origin: \"program\", element: focus }\n }\n\n if (focus === document) {\n return { origin: \"program\", element: focus }\n }\n\n // If press tab button, first fire the event in the currently focused element\n if (focus === blur) {\n return null\n }\n\n // When press tab, the activity is on the current fucesd element,\n // so when blur is changed to it, the focus change is completed\n if (activity.origin === \"keyboard\" && isActivityElement(activity.node, blur)) {\n return { origin: \"keyboard\", element: focus }\n }\n\n if (isActivityElement(activity.node, focus)) {\n return { origin: activity.origin, element: focus }\n } else {\n return { origin: \"program\", element: focus }\n }\n }),\n filter(v => !!v),\n shareReplay(1)\n ) as any\n })\n }\n\n watch(element: ElementInput) {\n const el = coerceElement(element)\n return this.events.pipe(\n map(event => {\n if (\n event.element &&\n (event.element === el || (typeof el.contains === \"function\" && el.contains(event.element)))\n ) {\n return event\n }\n return { element: el, origin: null } as FocusChanges\n })\n )\n }\n\n focus(node: HTMLElement, _origin: FocusOrigin | null) {\n // TODO: focus origin\n node.focus()\n }\n\n queryFocusable(inside: HTMLElement): FocusableElement[] {\n return focusable(inside, { includeContainer: false })\n }\n\n getFirstFocusable(inside: HTMLElement): FocusableElement | undefined {\n return this.queryFocusable(inside)[0]\n }\n\n isFocusable(node: Element): boolean {\n return isFocusable(node)\n }\n\n focusTrap(inside: HTMLElement, deferCaptureElements: boolean = false) {\n return this.#focusTrap.create(inside, deferCaptureElements)\n }\n}\n\nfunction isActivityElement(activityEl?: Node | null, focused?: Node | null): boolean {\n return activityEl != null && focused != null && (activityEl === focused || focused.contains(activityEl))\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 { Directive, effect, ElementRef, inject } from \"@angular/core\"\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { BehaviorSubject, combineLatest, debounceTime, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport { ElementInput } from \"dist/packages/common\"\n\nimport { ConnectProtocol, isElementInput } from \"@ngutil/common\"\n\nimport { FocusChanges, FocusService } from \"./focus.service\"\n\n@Directive({\n standalone: true,\n host: {\n \"[attr.focus]\": \"origin()\",\n \"[attr.focusWithin]\": \"within()\"\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: FocusChanges = { 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<FocusChanges>[]>([])\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<FocusChanges> = combineLatest([this.#self, this.#connEvent]).pipe(\n debounceTime(100),\n map(values => values.find(v => v.origin != null) || this.#default),\n shareReplay(1)\n )\n\n readonly origin$ = this.event$.pipe(map(event => event.origin))\n readonly within$ = this.event$.pipe(map(event => (event.element !== this.#el.nativeElement ? event.origin : null)))\n\n readonly event = toSignal(this.event$, { rejectErrors: true, manualCleanup: true })\n readonly origin = toSignal(this.origin$, { rejectErrors: true, manualCleanup: true })\n readonly within = toSignal(this.within$, { rejectErrors: true, manualCleanup: true })\n\n constructor() {\n // TODO: miért kell ez?, ha nincs itt akkor nem frissül\n effect(() => this.origin(), { allowSignalWrites: false })\n this.#parent?.connect(this).pipe(takeUntilDestroyed()).subscribe()\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, effect, inject, input } from \"@angular/core\"\n\nimport { ConnectProtocol, DisabledState, 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 standalone: true,\n selector: \"[nuFocusable]\",\n exportAs: \"nuFocusable\",\n host: {\n \"[attr.tabindex]\": \"_tabindex()\"\n },\n hostDirectives: [FocusState]\n})\nexport class Focusable implements ConnectProtocol {\n readonly #disabled = inject(DisabledState, { optional: true, self: true })\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 const isDisabled = this.#disabled?.isDisabled()\n\n if (focusable === false || isDisabled) {\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 constructor() {\n // TODO: miért kell ez?, ha nincs itt akkor nem frissül\n effect(() => this._tabindex(), { allowSignalWrites: false })\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 { Injectable } from \"@angular/core\"\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\n\nimport { map, Observable, share, Subject, Subscriber } from \"rxjs\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\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\ninterface KeystrokeEntry {\n keystroke: Keystroke\n target: HTMLElement\n subject: Subject<KeystrokeEvent>\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class KeystrokeService {\n readonly #keystrokes: { [key: string]: KeystrokeEntry[] } = {}\n\n readonly #keyEvent = new Observable((dst: Subscriber<KeyboardEvent>) => {\n const handler = (event: KeyboardEvent) => {\n dst.next(event)\n }\n document.addEventListener(\"keydown\", handler, { capture: true })\n document.addEventListener(\"keyup\", handler, { capture: true })\n\n return () => {\n document.removeEventListener(\"keydown\", handler, { capture: true })\n document.removeEventListener(\"keyup\", handler, { capture: true })\n }\n }).pipe(share())\n\n readonly #activatedKs = this.#keyEvent.pipe(\n map(event => {\n const keystroke = eventToKeystroke(event)\n const id = keystrokeId(keystroke)\n return { event, keystrokes: this.#keystrokes[id] || [], keystroke }\n })\n )\n\n constructor() {\n this.#activatedKs.pipe(takeUntilDestroyed()).subscribe(({ event, keystrokes, keystroke }) => {\n for (const ks of keystrokes) {\n if (event.defaultPrevented) {\n return\n }\n\n if (\n ks.target === event.target ||\n ks.target.contains(event.target as Node) ||\n document.activeElement === ks.target ||\n ks.target.contains(document.activeElement as Node)\n ) {\n ks.subject.next({ original: event, keystroke })\n }\n }\n })\n }\n\n watch(target: ElementInput, keystroke: Keystroke): Observable<KeystrokeEvent> {\n const id = keystrokeId(keystroke)\n return new Observable((dst: Subscriber<KeystrokeEvent>) => {\n if (!this.#keystrokes[id]) {\n this.#keystrokes[id] = []\n }\n\n const subject = new Subject<KeystrokeEvent>()\n const entry: KeystrokeEntry = { target: coerceElement(target), keystroke, subject }\n const sub = subject.subscribe(dst)\n\n this.#keystrokes[id].push(entry)\n\n return () => {\n sub.unsubscribe()\n if (this.#keystrokes[id]) {\n const index = this.#keystrokes[id].indexOf(entry)\n if (index !== -1) {\n this.#keystrokes[id].splice(index, 1)\n }\n if (this.#keystrokes[id].length === 0) {\n delete this.#keystrokes[id]\n }\n }\n }\n }).pipe(share())\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 { Observable } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { Position } from \"@ngutil/style\"\n\nexport interface Gesture<T extends GestureEvent> {\n name: string\n priority: number\n listeners?: Array<keyof DocumentEventMap>\n handler: GestureHandler<T>\n}\n\nexport type GestureHandler<T extends GestureEvent> = (events: Observable<GestureMatchState>) => Observable<T>\n\nexport type GestureListener = {\n name: keyof DocumentEventMap\n target: ListenerTarget\n // options?: AddEventListenerOptions\n}\n\nexport interface GestureEvent<T extends string = string> {\n readonly type: T\n readonly origin: GestureOrigin\n readonly target: HTMLElement\n readonly pointerType: GesturePointerType\n readonly phase: GesturePhase\n readonly pointers: ReadonlyArray<GesturePointer>\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 const enum GesturePointerType {\n Mouse = \"mouse\",\n Touch = \"touch\"\n}\n\nexport const enum GesturePhase {\n Start = \"start\",\n Moving = \"moving\",\n End = \"end\"\n}\n\nexport type GestureMatchState = Partial<Mutable<GestureEvent>> & {\n readonly pending?: Array<string>\n}\n\nexport function stateToEvent<T extends GestureEvent>(state: GestureMatchState, type: string): T {\n return {\n type: type,\n origin: state.origin!,\n target: state.target!,\n pointerType: state.pointerType!,\n phase: state.phase!,\n pointers: state.pointers!\n } as T\n}\n\nexport interface ListenerConfig {\n target: ListenerTarget\n options?: AddEventListenerOptions\n pointerType: GesturePointerType\n phase: GesturePhase\n}\n\nexport const enum ListenerTarget {\n Document = \"document\",\n Element = \"element\"\n}\n\nexport const Listeners: { [key: string]: ListenerConfig } = {\n mousedown: { target: ListenerTarget.Element, pointerType: GesturePointerType.Mouse, phase: GesturePhase.Start },\n mousemove: { target: ListenerTarget.Document, pointerType: GesturePointerType.Mouse, phase: GesturePhase.Moving },\n mouseup: { target: ListenerTarget.Document, pointerType: GesturePointerType.Mouse, phase: GesturePhase.End },\n touchstart: { target: ListenerTarget.Element, pointerType: GesturePointerType.Touch, phase: GesturePhase.Start },\n touchmove: { target: ListenerTarget.Document, pointerType: GesturePointerType.Touch, phase: GesturePhase.Moving },\n touchend: { target: ListenerTarget.Document, pointerType: GesturePointerType.Touch, phase: GesturePhase.End }\n} as const\n","import { filter, map } from \"rxjs\"\n\nimport { Gesture, GestureEvent, GesturePhase, stateToEvent } from \"./_base\"\n\nexport type DraggingEvent = GestureEvent<\"nu-dragstart\" | \"nu-dragend\" | \"nu-dragmove\">\n\nconst TypeMap = {\n [GesturePhase.Start]: \"nu-dragstart\",\n [GesturePhase.Moving]: \"nu-dragmove\",\n [GesturePhase.End]: \"nu-dragend\"\n}\n\nexport const Dragging: Gesture<DraggingEvent> = {\n name: \"dragging\",\n listeners: [\"mousedown\", \"mousemove\", \"mouseup\", \"touchstart\", \"touchmove\", \"touchend\"],\n priority: 0,\n handler: events => {\n const x = 0\n return events.pipe(\n filter(state => !state.pending || state.pending.length === 0),\n map(state => stateToEvent(state, TypeMap[state.phase!]))\n )\n }\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n concatMap,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n Observable,\n of,\n scan,\n share,\n shareReplay,\n startWith,\n Subject,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { flatten } from \"lodash\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\nimport { Position } from \"@ngutil/style\"\n\nimport {\n Gesture,\n GestureEvent,\n GestureMatchState,\n GestureOrigin,\n GesturePhase,\n GesturePointerType,\n Listeners\n} from \"./gestures\"\n\nconst enum Signal {\n Rewatch = 1,\n Destroy = 2\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class GesturesService {\n readonly #document = inject(DOCUMENT)\n readonly #zone = inject(NgZone)\n readonly #listeners = new Map<HTMLElement | Document, Map<string, Observable<GestureMatchState>>>()\n\n watch<T extends GestureEvent>(el: ElementInput, ...gestures: Gesture<T>[]): Observable<T> {\n return this.#zone.runOutsideAngular(() => {\n const signal = new Subject<Signal>()\n const listeners = flatten(gestures.map(v => v.listeners || []))\n const { trigger, watch } = this.#getListeners(coerceElement(el), listeners)\n\n let pointerType: GesturePointerType | undefined\n const events = trigger.pipe(\n takeUntil(signal.pipe(filter(v => v === Signal.Destroy))),\n filter(state => {\n if (pointerType == null) {\n pointerType = state.pointerType\n }\n return pointerType === state.pointerType\n }),\n concatMap(v =>\n this.#zone.runOutsideAngular(() => watch[pointerType!].pipe(startWith(v), takeUntil(signal)))\n ),\n scan((state, curr) => {\n const result = { ...state, ...curr }\n updatePointers(result)\n return result\n }, {} as GestureMatchState),\n tap(state => {\n if (state.phase === GesturePhase.End) {\n pointerType = undefined\n signal.next(Signal.Rewatch)\n }\n }),\n shareReplay(1)\n )\n\n return merge(...gestures.map(v => v.handler(events))).pipe(\n finalize(() => {\n signal.next(Signal.Destroy)\n signal.complete()\n })\n )\n })\n }\n\n #getListeners(inputEl: HTMLElement, listeners: string[]) {\n const triggers: string[] = []\n const watches: { [key: string]: string[] } = {}\n\n for (const name of listeners) {\n const conf = Listeners[name]\n\n const container =\n conf.phase === GesturePhase.Start\n ? triggers\n : (watches[conf.pointerType] = watches[conf.pointerType] || [])\n\n if (container.indexOf(name) === -1) {\n container.push(name)\n }\n }\n\n if (triggers.length === 0) {\n throw Error(\"Missing start events\")\n }\n\n const observable = (names: string[]) => {\n if (names.length === 0) {\n return of()\n } else if (names.length === 1) {\n return this.#getListener(inputEl, names[0])\n } else {\n return merge(...names.map(v => this.#getListener(inputEl, v)))\n }\n }\n\n return {\n trigger: observable(triggers),\n watch: {\n [GesturePointerType.Mouse]: observable(watches[GesturePointerType.Mouse]),\n [GesturePointerType.Touch]: observable(watches[GesturePointerType.Touch])\n }\n }\n }\n\n #getListener(inputEl: HTMLElement, name: string): Observable<GestureMatchState> {\n return this.#zone.runOutsideAngular(() => {\n const target = Listeners[name].target\n const targetObj = target === \"document\" ? this.#document : inputEl\n let targetListeners = this.#listeners.get(targetObj)\n\n if (targetListeners == null) {\n targetListeners = new Map()\n this.#listeners.set(targetObj, targetListeners)\n }\n\n let listener = targetListeners.get(name)\n if (listener == null) {\n const phase = Listeners[name].phase\n const pointerType = Listeners[name].pointerType\n\n listener = fromEvent<GestureOrigin>(targetObj, name, { capture: true }).pipe(\n finalize(() => {\n targetListeners.delete(name)\n }),\n map<GestureOrigin, GestureMatchState>(origin => {\n return { origin, phase, pointerType }\n })\n )\n\n if (phase === GesturePhase.Start) {\n listener = listener.pipe(\n tap(state => {\n state.target = state.origin!.target! as HTMLElement\n })\n )\n }\n\n listener = listener.pipe(share())\n\n targetListeners.set(name, listener)\n }\n\n return listener\n })\n }\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: GestureMatchState) {\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\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\nfunction direction(prev: number, curr: number): -1 | 0 | 1 {\n return curr > prev ? 1 : curr < prev ? -1 : 0\n}\n\n// const svc = new GesturesService()\n// const w = svc.watch(document.createElement(\"div\"), DragAndDrop)\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EVENT_OPTIONS","i1.FocusState"],"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/gestures/_base.ts","../../../../packages/aria/src/gestures/gestures/dragging.ts","../../../../packages/aria/src/gestures/gestures.service.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, Inject, Injectable, NgZone } from \"@angular/core\"\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\n\nimport { combineLatest, distinctUntilChanged, filter, fromEvent, map, Observable, shareReplay, startWith } from \"rxjs\"\n\nimport { focusable, type FocusableElement, isFocusable } from \"tabbable\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { 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 FocusChanges {\n origin: FocusOrigin\n element: HTMLElement\n}\n\nexport interface FocusableEvent {\n origin: FocusOrigin\n exact: boolean\n node: Node\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class FocusService {\n readonly #activity = inject(ActivityService)\n readonly #focusTrap = inject(FocusTrapFactory)\n readonly events: Observable<FocusChanges>\n\n constructor(@Inject(DOCUMENT) document: Document, @Inject(NgZone) zone: NgZone) {\n this.events = zone.runOutsideAngular(() => {\n const focus = fromEvent(document, \"focus\", EVENT_OPTIONS).pipe(map(e => e.target as Node))\n const blur = fromEvent(document, \"blur\", EVENT_OPTIONS).pipe(\n startWith(null),\n map(e => (e?.target as Node) || null)\n )\n\n return combineLatest({\n activity: this.#activity.events$.pipe(\n filter(event => event.type !== \"mousemove\"),\n distinctUntilChanged((prev, curr): boolean => {\n if (prev && curr) {\n return prev.origin === curr.origin && prev.node === curr.node\n } else {\n return false\n }\n })\n ),\n focus: focus,\n blur: blur\n }).pipe(\n takeUntilDestroyed(),\n map(({ activity, focus, blur }) => {\n // console.log({ activity, focus, blur })\n\n // If focus in with alt+tab\n if (blur === document && activity.origin === \"keyboard\") {\n return { origin: \"program\", element: focus }\n }\n\n if (focus === document) {\n return { origin: \"program\", element: focus }\n }\n\n // If press tab button, first fire the event in the currently focused element\n if (focus === blur) {\n return null\n }\n\n // When press tab, the activity is on the current fucesd element,\n // so when blur is changed to it, the focus change is completed\n if (activity.origin === \"keyboard\" && isActivityElement(activity.node, blur)) {\n return { origin: \"keyboard\", element: focus }\n }\n\n if (isActivityElement(activity.node, focus)) {\n return { origin: activity.origin, element: focus }\n } else {\n return { origin: \"program\", element: focus }\n }\n }),\n filter(v => !!v),\n shareReplay(1)\n ) as any\n })\n }\n\n watch(element: ElementInput) {\n const el = coerceElement(element)\n return this.events.pipe(\n map(event => {\n if (\n event.element &&\n (event.element === el || (typeof el.contains === \"function\" && el.contains(event.element)))\n ) {\n return event\n }\n return { element: el, origin: null } as FocusChanges\n })\n )\n }\n\n focus(node: HTMLElement, _origin: FocusOrigin | null) {\n // TODO: focus origin\n node.focus()\n }\n\n queryFocusable(inside: HTMLElement): FocusableElement[] {\n return focusable(inside, { includeContainer: false })\n }\n\n getFirstFocusable(inside: HTMLElement): FocusableElement | undefined {\n return this.queryFocusable(inside)[0]\n }\n\n isFocusable(node: Element): boolean {\n return isFocusable(node)\n }\n\n focusTrap(inside: HTMLElement, deferCaptureElements: boolean = false) {\n return this.#focusTrap.create(inside, deferCaptureElements)\n }\n}\n\nfunction isActivityElement(activityEl?: Node | null, focused?: Node | null): boolean {\n return activityEl != null && focused != null && (activityEl === focused || focused.contains(activityEl))\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 { Directive, effect, ElementRef, inject } from \"@angular/core\"\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { BehaviorSubject, combineLatest, debounceTime, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport { ElementInput } from \"dist/packages/common\"\n\nimport { ConnectProtocol, isElementInput } from \"@ngutil/common\"\n\nimport { FocusChanges, FocusService } from \"./focus.service\"\n\n@Directive({\n standalone: true,\n host: {\n \"[attr.focus]\": \"origin()\",\n \"[attr.focusWithin]\": \"within()\"\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: FocusChanges = { 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<FocusChanges>[]>([])\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<FocusChanges> = combineLatest([this.#self, this.#connEvent]).pipe(\n debounceTime(100),\n map(values => values.find(v => v.origin != null) || this.#default),\n shareReplay(1)\n )\n\n readonly origin$ = this.event$.pipe(map(event => event.origin))\n readonly within$ = this.event$.pipe(map(event => (event.element !== this.#el.nativeElement ? event.origin : null)))\n\n readonly event = toSignal(this.event$, { rejectErrors: true, manualCleanup: true })\n readonly origin = toSignal(this.origin$, { rejectErrors: true, manualCleanup: true })\n readonly within = toSignal(this.within$, { rejectErrors: true, manualCleanup: true })\n\n constructor() {\n // TODO: miért kell ez?, ha nincs itt akkor nem frissül\n effect(() => this.origin(), { allowSignalWrites: false })\n this.#parent?.connect(this).pipe(takeUntilDestroyed()).subscribe()\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, effect, inject, input } from \"@angular/core\"\n\nimport { ConnectProtocol, DisabledState, 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 standalone: true,\n selector: \"[nuFocusable]\",\n exportAs: \"nuFocusable\",\n host: {\n \"[attr.tabindex]\": \"_tabindex()\"\n },\n hostDirectives: [FocusState]\n})\nexport class Focusable implements ConnectProtocol {\n readonly #disabled = inject(DisabledState, { optional: true, self: true })\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 const isDisabled = this.#disabled?.isDisabled()\n\n if (focusable === false || isDisabled) {\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 constructor() {\n // TODO: miért kell ez?, ha nincs itt akkor nem frissül\n effect(() => this._tabindex(), { allowSignalWrites: false })\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 { Injectable } from \"@angular/core\"\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\n\nimport { map, Observable, share, Subject, Subscriber } from \"rxjs\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\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\ninterface KeystrokeEntry {\n keystroke: Keystroke\n target: HTMLElement\n subject: Subject<KeystrokeEvent>\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class KeystrokeService {\n readonly #keystrokes: { [key: string]: KeystrokeEntry[] } = {}\n\n readonly #keyEvent = new Observable((dst: Subscriber<KeyboardEvent>) => {\n const handler = (event: KeyboardEvent) => {\n dst.next(event)\n }\n document.addEventListener(\"keydown\", handler, { capture: true })\n document.addEventListener(\"keyup\", handler, { capture: true })\n\n return () => {\n document.removeEventListener(\"keydown\", handler, { capture: true })\n document.removeEventListener(\"keyup\", handler, { capture: true })\n }\n }).pipe(share())\n\n readonly #activatedKs = this.#keyEvent.pipe(\n map(event => {\n const keystroke = eventToKeystroke(event)\n const id = keystrokeId(keystroke)\n return { event, keystrokes: this.#keystrokes[id] || [], keystroke }\n })\n )\n\n constructor() {\n this.#activatedKs.pipe(takeUntilDestroyed()).subscribe(({ event, keystrokes, keystroke }) => {\n for (const ks of keystrokes) {\n if (event.defaultPrevented) {\n return\n }\n\n if (\n ks.target === event.target ||\n ks.target.contains(event.target as Node) ||\n document.activeElement === ks.target ||\n ks.target.contains(document.activeElement as Node)\n ) {\n ks.subject.next({ original: event, keystroke })\n }\n }\n })\n }\n\n watch(target: ElementInput, keystroke: Keystroke): Observable<KeystrokeEvent> {\n const id = keystrokeId(keystroke)\n return new Observable((dst: Subscriber<KeystrokeEvent>) => {\n if (!this.#keystrokes[id]) {\n this.#keystrokes[id] = []\n }\n\n const subject = new Subject<KeystrokeEvent>()\n const entry: KeystrokeEntry = { target: coerceElement(target), keystroke, subject }\n const sub = subject.subscribe(dst)\n\n this.#keystrokes[id].push(entry)\n\n return () => {\n sub.unsubscribe()\n if (this.#keystrokes[id]) {\n const index = this.#keystrokes[id].indexOf(entry)\n if (index !== -1) {\n this.#keystrokes[id].splice(index, 1)\n }\n if (this.#keystrokes[id].length === 0) {\n delete this.#keystrokes[id]\n }\n }\n }\n }).pipe(share())\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 { Observable } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { Position } from \"@ngutil/style\"\n\nexport interface Gesture<T extends GestureEvent> {\n name: string\n priority: number\n listeners?: Array<keyof DocumentEventMap>\n handler: GestureHandler<T>\n}\n\nexport type GestureHandler<T extends GestureEvent> = (events: Observable<GestureMatchState<T>>) => Observable<T>\n\nexport type GestureListener = {\n name: keyof DocumentEventMap\n target: ListenerTarget\n // options?: AddEventListenerOptions\n}\n\nexport interface GestureEvent<T extends string = string> {\n readonly type: T\n readonly origin: GestureOrigin\n readonly target: HTMLElement\n readonly pointerType: GesturePointerType\n readonly phase: GesturePhase\n readonly pointers: ReadonlyArray<GesturePointer>\n\n preventDefault(): void\n}\n\ntype GestureEventFixFields = \"target\" | \"origin\" | \"pointers\" | \"phase\" | \"pointerType\" | \"preventDefault\"\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 const enum GesturePointerType {\n Mouse = \"mouse\",\n Touch = \"touch\"\n}\n\nexport const enum GesturePhase {\n Start = \"start\",\n Moving = \"moving\",\n End = \"end\"\n}\n\nexport type GestureMatchState<T extends GestureEvent = GestureEvent> = Partial<\n Mutable<Omit<T, GestureEventFixFields>>\n> &\n Pick<T, GestureEventFixFields> & {\n readonly pending?: Array<string>\n }\n\nexport function stateToEvent<T extends GestureEvent>(state: GestureMatchState, type: string): T {\n return {\n type: type,\n origin: state.origin!,\n target: state.target!,\n pointerType: state.pointerType!,\n phase: state.phase!,\n pointers: state.pointers!\n } as T\n}\n\nexport interface ListenerConfig {\n target: ListenerTarget\n options?: AddEventListenerOptions\n pointerType: GesturePointerType\n phase: GesturePhase\n}\n\nexport const enum ListenerTarget {\n Document = \"document\",\n Element = \"element\"\n}\n\nexport const Listeners: { [key: string]: ListenerConfig } = {\n mousedown: {\n target: ListenerTarget.Element,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n mousemove: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n mouseup: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.End,\n options: { capture: true, passive: true }\n },\n touchstart: {\n target: ListenerTarget.Element,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n touchmove: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n touchend: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n },\n touchcancel: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: true }\n }\n} as const\n","import { filter, map, tap } from \"rxjs\"\n\nimport { Gesture, GestureEvent, GesturePhase, stateToEvent } from \"./_base\"\n\n// export type DraggingEvent = GestureEvent<\"dragging-start\" | \"dragging-end\" | \"dragging-move\">\n\nexport interface DraggingEvent extends GestureEvent<\"dragging-start\" | \"dragging-end\" | \"dragging-move\"> {}\n\nconst TypeMap = {\n [GesturePhase.Start]: \"dragging-start\",\n [GesturePhase.Moving]: \"dragging-move\",\n [GesturePhase.End]: \"dragging-end\"\n}\n\nexport const Dragging: Gesture<DraggingEvent> = {\n name: \"dragging\",\n listeners: [\"mousedown\", \"mousemove\", \"mouseup\", \"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\"],\n priority: 0,\n handler: events =>\n events.pipe(\n filter(state => !state.pending || state.pending.length === 0),\n tap(state => state.preventDefault()),\n map(state => stateToEvent(state, TypeMap[state.phase]))\n )\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n concatMap,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n Observable,\n of,\n scan,\n share,\n startWith,\n takeWhile,\n tap\n} from \"rxjs\"\n\nimport { flatten } from \"lodash\"\nimport { Mutable } from \"utility-types\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\nimport { Position } from \"@ngutil/style\"\n\nimport {\n Gesture,\n GestureEvent,\n GestureMatchState,\n GestureOrigin,\n GesturePhase,\n GesturePointerType,\n Listeners\n} from \"./gestures\"\n\n@Injectable({ providedIn: \"root\" })\nexport class GesturesService {\n readonly #document = inject(DOCUMENT)\n readonly #zone = inject(NgZone)\n readonly #listeners = new Map<HTMLElement | Document, Map<string, Observable<GestureMatchState>>>()\n\n watch<T extends GestureEvent>(el: ElementInput, ...gestures: Gesture<T>[]): Observable<T> {\n return this.#zone.runOutsideAngular(() => {\n const listeners = flatten(gestures.map(v => v.listeners || []))\n const { trigger, watch } = this.#getListeners(coerceElement(el), listeners)\n\n let pointerType: GesturePointerType | undefined\n return trigger.pipe(\n filter(state => {\n if (pointerType == null) {\n pointerType = state.pointerType\n }\n return pointerType === state.pointerType\n }),\n concatMap(v =>\n this.#zone.runOutsideAngular(() => {\n const watching = watch[pointerType!].pipe(\n startWith(v),\n scan(\n (state, curr) => updatePointers<T>({ ...state, ...curr } as T),\n {} as GestureMatchState<T>\n ),\n takeWhile(state => state.phase !== GesturePhase.End, true),\n share()\n )\n return merge(...gestures.map(v => v.handler(watching)))\n })\n )\n )\n })\n }\n\n #getListeners<T extends GestureEvent>(inputEl: HTMLElement, listeners: string[]) {\n const triggers: string[] = []\n const watches: { [key: string]: string[] } = {}\n\n for (const name of listeners) {\n const conf = Listeners[name]\n\n const container =\n conf.phase === GesturePhase.Start\n ? triggers\n : (watches[conf.pointerType] = watches[conf.pointerType] || [])\n\n if (container.indexOf(name) === -1) {\n container.push(name)\n }\n }\n\n if (triggers.length === 0) {\n throw Error(\"Missing start events\")\n }\n\n const observable = (names: string[]) => {\n if (names.length === 0) {\n return of()\n } else if (names.length === 1) {\n return this.#getListener<T>(inputEl, names[0])\n } else {\n return merge(...names.map(v => this.#getListener<T>(inputEl, v)))\n }\n }\n\n return {\n trigger: observable(triggers),\n watch: {\n [GesturePointerType.Mouse]: observable(watches[GesturePointerType.Mouse]),\n [GesturePointerType.Touch]: observable(watches[GesturePointerType.Touch])\n }\n }\n }\n\n #getListener<T extends GestureEvent>(inputEl: HTMLElement, name: string): Observable<GestureMatchState<T>> {\n return this.#zone.runOutsideAngular(() => {\n const target = Listeners[name].target\n const targetObj = target === \"document\" ? this.#document : inputEl\n let targetListeners = this.#listeners.get(targetObj)\n\n if (targetListeners == null) {\n targetListeners = new Map()\n this.#listeners.set(targetObj, targetListeners)\n }\n\n let listener = targetListeners.get(name)\n if (listener == null) {\n const { phase, pointerType, options } = Listeners[name]\n const passive = options?.passive\n\n listener = fromEvent<GestureOrigin>(targetObj, name, options as any).pipe(\n finalize(() => {\n targetListeners.delete(name)\n }),\n map(\n origin =>\n ({\n origin,\n phase,\n pointerType,\n preventDefault: passive === false ? origin.preventDefault.bind(origin) : noop\n }) as unknown as GestureMatchState<T>\n )\n )\n\n if (phase === GesturePhase.Start) {\n listener = listener.pipe(\n tap(state => {\n ;(state as Mutable<GestureMatchState>).target = state.origin.target as HTMLElement\n })\n )\n }\n\n listener = listener.pipe(share())\n\n targetListeners.set(name, listener)\n }\n\n return listener as Observable<GestureMatchState<T>>\n })\n }\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<T extends GestureEvent>(state: Mutable<T>): GestureMatchState<T> {\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\n// const svc = new GesturesService()\n// const w = svc.watch(document.createElement(\"div\"), DragAndDrop)\nfunction noop() {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EVENT_OPTIONS","i1.FocusState"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export interface Gesture<T extends GestureEvent> {
|
|
|
7
7
|
listeners?: Array<keyof DocumentEventMap>;
|
|
8
8
|
handler: GestureHandler<T>;
|
|
9
9
|
}
|
|
10
|
-
export type GestureHandler<T extends GestureEvent> = (events: Observable<GestureMatchState
|
|
10
|
+
export type GestureHandler<T extends GestureEvent> = (events: Observable<GestureMatchState<T>>) => Observable<T>;
|
|
11
11
|
export type GestureListener = {
|
|
12
12
|
name: keyof DocumentEventMap;
|
|
13
13
|
target: ListenerTarget;
|
|
@@ -19,7 +19,9 @@ export interface GestureEvent<T extends string = string> {
|
|
|
19
19
|
readonly pointerType: GesturePointerType;
|
|
20
20
|
readonly phase: GesturePhase;
|
|
21
21
|
readonly pointers: ReadonlyArray<GesturePointer>;
|
|
22
|
+
preventDefault(): void;
|
|
22
23
|
}
|
|
24
|
+
type GestureEventFixFields = "target" | "origin" | "pointers" | "phase" | "pointerType" | "preventDefault";
|
|
23
25
|
export type PointersPosition = ReadonlyArray<Readonly<Position>>;
|
|
24
26
|
export interface GesturePointer {
|
|
25
27
|
readonly start: Position;
|
|
@@ -41,7 +43,7 @@ export declare const enum GesturePhase {
|
|
|
41
43
|
Moving = "moving",
|
|
42
44
|
End = "end"
|
|
43
45
|
}
|
|
44
|
-
export type GestureMatchState = Partial<Mutable<
|
|
46
|
+
export type GestureMatchState<T extends GestureEvent = GestureEvent> = Partial<Mutable<Omit<T, GestureEventFixFields>>> & Pick<T, GestureEventFixFields> & {
|
|
45
47
|
readonly pending?: Array<string>;
|
|
46
48
|
};
|
|
47
49
|
export declare function stateToEvent<T extends GestureEvent>(state: GestureMatchState, type: string): T;
|
|
@@ -58,3 +60,4 @@ export declare const enum ListenerTarget {
|
|
|
58
60
|
export declare const Listeners: {
|
|
59
61
|
[key: string]: ListenerConfig;
|
|
60
62
|
};
|
|
63
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { Gesture, GestureEvent } from "./_base";
|
|
2
|
-
export
|
|
2
|
+
export interface DraggingEvent extends GestureEvent<"dragging-start" | "dragging-end" | "dragging-move"> {
|
|
3
|
+
}
|
|
3
4
|
export declare const Dragging: Gesture<DraggingEvent>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngutil/aria",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.48",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/cdk": "^17.3.6",
|
|
6
6
|
"@angular/common": "^17.3.6",
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"rxjs": "^7.8.1",
|
|
9
9
|
"tabbable": "^6.2.0",
|
|
10
10
|
"utility-types": "^3.11.0",
|
|
11
|
-
"@ngutil/common": "0.0.
|
|
12
|
-
"@ngutil/style": "0.0.
|
|
11
|
+
"@ngutil/common": "0.0.48",
|
|
12
|
+
"@ngutil/style": "0.0.48"
|
|
13
13
|
},
|
|
14
14
|
"publishConfig": {
|
|
15
15
|
"access": "public",
|