@ngutil/aria 0.0.80 → 0.0.82
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/fesm2022/ngutil-aria.mjs +88 -65
- package/fesm2022/ngutil-aria.mjs.map +1 -1
- package/focus/focus-state.directive.d.ts +1 -2
- package/focus/focus.service.d.ts +1 -1
- package/focus/focusable.directive.d.ts +0 -1
- package/package.json +7 -9
- package/ui-state/abstract.d.ts +1 -1
- package/ui-state/dirty.directive.d.ts +9 -0
- package/ui-state/index.d.ts +5 -3
- package/ui-state/progress-state.d.ts +1 -1
- package/esm2022/activity/activity.service.mjs +0 -49
- package/esm2022/activity/index.mjs +0 -2
- package/esm2022/focus/focus-state.directive.mjs +0 -63
- package/esm2022/focus/focus-trap.directive.mjs +0 -25
- package/esm2022/focus/focus.service.mjs +0 -145
- package/esm2022/focus/focusable.directive.mjs +0 -52
- package/esm2022/focus/index.mjs +0 -5
- package/esm2022/gestures/gesture-drag.mjs +0 -81
- package/esm2022/gestures/gesture-event.mjs +0 -44
- package/esm2022/gestures/gesture-longtap.mjs +0 -34
- package/esm2022/gestures/gesture-tap.mjs +0 -37
- package/esm2022/gestures/gesture.mjs +0 -66
- package/esm2022/gestures/gesture.service.mjs +0 -279
- package/esm2022/gestures/index.mjs +0 -7
- package/esm2022/index.mjs +0 -6
- package/esm2022/keystroke/index.mjs +0 -2
- package/esm2022/keystroke/keystroke.service.mjs +0 -92
- package/esm2022/ngutil-aria.mjs +0 -5
- package/esm2022/ui-state/abstract.mjs +0 -41
- package/esm2022/ui-state/busy.directive.mjs +0 -27
- package/esm2022/ui-state/disabled.directive.mjs +0 -28
- package/esm2022/ui-state/index.mjs +0 -25
- package/esm2022/ui-state/progress-state.mjs +0 -141
- package/esm2022/ui-state/readonly.directive.mjs +0 -27
- package/esm2022/ui-state/selector.mjs +0 -308
- package/esm2022/ui-state/ui-state.mjs +0 -91
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
|
-
import { ElementInput } from "
|
|
3
|
-
import { ConnectProtocol } from "@ngutil/common";
|
|
2
|
+
import { ConnectProtocol, ElementInput } from "@ngutil/common";
|
|
4
3
|
import { FocusChanges } from "./focus.service";
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
export declare class FocusState implements ConnectProtocol {
|
package/focus/focus.service.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export declare class FocusService {
|
|
|
21
21
|
queryFocusable(inside: ElementInput): FocusableElement[];
|
|
22
22
|
getFirstFocusable(inside: ElementInput): FocusableElement | undefined;
|
|
23
23
|
isFocusable(node: ElementInput): boolean;
|
|
24
|
-
focusTrap(inside: ElementInput, deferCaptureElements?: boolean): import("@angular/cdk/a11y").FocusTrap;
|
|
24
|
+
focusTrap(inside: ElementInput, deferCaptureElements?: boolean): import("@angular/cdk/a11y-module.d-DrV0SO0k").FocusTrap;
|
|
25
25
|
static ɵfac: i0.ɵɵFactoryDeclaration<FocusService, never>;
|
|
26
26
|
static ɵprov: i0.ɵɵInjectableDeclaration<FocusService>;
|
|
27
27
|
}
|
|
@@ -7,7 +7,6 @@ export declare class Focusable implements ConnectProtocol {
|
|
|
7
7
|
readonly focusable: import("@angular/core").InputSignal<number | boolean>;
|
|
8
8
|
readonly tabindex: import("@angular/core").InputSignalWithTransform<number, any>;
|
|
9
9
|
readonly _tabindex: import("@angular/core").Signal<number>;
|
|
10
|
-
constructor();
|
|
11
10
|
connect(value: Focusable | FocusState | ElementInput): import("rxjs").Observable<unknown>;
|
|
12
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<Focusable, never>;
|
|
13
12
|
static ɵdir: i0.ɵɵDirectiveDeclaration<Focusable, "[nuFocusable]", ["nuFocusable"], { "focusable": { "alias": "nuFocusable"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.FocusState; inputs: {}; outputs: {}; }]>;
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngutil/aria",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.82",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/cdk": "
|
|
6
|
-
"@angular/common": "
|
|
7
|
-
"@angular/core": "
|
|
8
|
-
"
|
|
5
|
+
"@angular/cdk": "19.2.11",
|
|
6
|
+
"@angular/common": "19.2.8",
|
|
7
|
+
"@angular/core": "19.2.8",
|
|
8
|
+
"es-toolkit": "^1.35.0",
|
|
9
9
|
"rxjs": "^7.8.1",
|
|
10
10
|
"tabbable": "^6.2.0",
|
|
11
11
|
"utility-types": "^3.11.0",
|
|
12
|
-
"@ngutil/common": "0.0.
|
|
13
|
-
"@ngutil/style": "0.0.
|
|
12
|
+
"@ngutil/common": "0.0.82",
|
|
13
|
+
"@ngutil/style": "0.0.82"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public",
|
|
@@ -25,8 +25,6 @@
|
|
|
25
25
|
},
|
|
26
26
|
".": {
|
|
27
27
|
"types": "./index.d.ts",
|
|
28
|
-
"esm2022": "./esm2022/ngutil-aria.mjs",
|
|
29
|
-
"esm": "./esm2022/ngutil-aria.mjs",
|
|
30
28
|
"default": "./fesm2022/ngutil-aria.mjs"
|
|
31
29
|
}
|
|
32
30
|
},
|
package/ui-state/abstract.d.ts
CHANGED
|
@@ -15,5 +15,5 @@ export declare abstract class AbstractUiState<N extends string> {
|
|
|
15
15
|
intercept(source: string): <S>(src: Observable<S>) => Observable<S>;
|
|
16
16
|
wrap<T>(observable: Observable<T>, source: string): Observable<T>;
|
|
17
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<AbstractUiState<any>, never>;
|
|
18
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractUiState<any>, never, never, {}, {}, never, never,
|
|
18
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractUiState<any>, never, never, {}, {}, never, never, true, never>;
|
|
19
19
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AbstractUiState } from "./abstract";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class DirtyDirective extends AbstractUiState<"dirty"> {
|
|
4
|
+
readonly input: import("@angular/core").InputSignal<boolean>;
|
|
5
|
+
readonly when: import("@angular/core").InputSignal<string>;
|
|
6
|
+
constructor();
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DirtyDirective, never>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DirtyDirective, "[nuDirty], [nuDirtyWhen]", ["dirty"], { "input": { "alias": "nuDirty"; "required": false; "isSignal": true; }; "when": { "alias": "nuDirtyWhen"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
9
|
+
}
|
package/ui-state/index.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./busy.directive";
|
|
3
|
-
import * as i2 from "./
|
|
4
|
-
import * as i3 from "./
|
|
3
|
+
import * as i2 from "./dirty.directive";
|
|
4
|
+
import * as i3 from "./disabled.directive";
|
|
5
|
+
import * as i4 from "./readonly.directive";
|
|
5
6
|
export * from "./abstract";
|
|
6
7
|
export * from "./busy.directive";
|
|
7
8
|
export * from "./disabled.directive";
|
|
8
9
|
export * from "./progress-state";
|
|
9
10
|
export * from "./readonly.directive";
|
|
11
|
+
export * from "./dirty.directive";
|
|
10
12
|
export * from "./ui-state";
|
|
11
13
|
export declare class UiStateModule {
|
|
12
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<UiStateModule, never>;
|
|
13
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<UiStateModule, never, [typeof i1.BusyDirective, typeof i2.
|
|
15
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<UiStateModule, never, [typeof i1.BusyDirective, typeof i2.DirtyDirective, typeof i3.DisabledDirective, typeof i4.ReadonlyDirective], [typeof i1.BusyDirective, typeof i2.DirtyDirective, typeof i3.DisabledDirective, typeof i4.ReadonlyDirective]>;
|
|
14
16
|
static ɵinj: i0.ɵɵInjectorDeclaration<UiStateModule>;
|
|
15
17
|
}
|
|
@@ -57,7 +57,7 @@ export declare class ProgressState {
|
|
|
57
57
|
segment(name: string, distribution?: number): ProgressSegmentRef;
|
|
58
58
|
connect(state: ProgressState, name: string, distribution?: number): Observable<void>;
|
|
59
59
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProgressState, never>;
|
|
60
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ProgressState, never, never, {}, {}, never, never,
|
|
60
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ProgressState, never, never, {}, {}, never, never, true, never>;
|
|
61
61
|
}
|
|
62
62
|
export declare class ProgressSegmentRef {
|
|
63
63
|
#private;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from "@angular/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";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
const EVENT_OPTIONS = {
|
|
6
|
-
capture: true,
|
|
7
|
-
passive: true
|
|
8
|
-
};
|
|
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()));
|
|
27
|
-
}
|
|
28
|
-
#zone;
|
|
29
|
-
#doc;
|
|
30
|
-
watchActivity(node) {
|
|
31
|
-
if (node) {
|
|
32
|
-
return this.events$.pipe(filter(event => event.node != null &&
|
|
33
|
-
(event.node === node || (event.node instanceof HTMLElement && event.node.contains(node)))), shareReplay(1));
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
return this.events$;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
watchInactvity(timeout) {
|
|
40
|
-
return this.events$.pipe(startWith(null), throttleTime(timeout / 2), switchMap(() => timer(0, timeout).pipe(take(2))), map(v => v !== 0), distinctUntilChanged(), shareReplay(1));
|
|
41
|
-
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActivityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
43
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActivityService, providedIn: "root" }); }
|
|
44
|
-
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActivityService, decorators: [{
|
|
46
|
-
type: Injectable,
|
|
47
|
-
args: [{ providedIn: "root" }]
|
|
48
|
-
}] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2FjdGl2aXR5L2FjdGl2aXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFFTCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFlBQVksRUFDWixLQUFLLEVBQ1IsTUFBTSxNQUFNLENBQUE7O0FBV2IsTUFBTSxhQUFhLEdBQTRCO0lBQzNDLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7Q0FDaEIsQ0FBQTtBQUVELE1BQU0sWUFBWSxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFVBQVUsRUFBRSxPQUFPO0NBQ3RCLENBQUE7QUFHRCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVhLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdEIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixZQUFPLEdBQThCLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQzVFLEtBQUssQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsRUFDaEQsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxFQUNoRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQ3BELENBQUMsSUFBSSxDQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUE2QixDQUFBO1lBQ2hELE9BQU87Z0JBQ0gsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQW1CO2dCQUM1QyxJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQWE7YUFDNUIsQ0FBQTtRQUNMLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxDQUNWLENBQ0osQ0FBQTtLQTJCSjtJQS9DWSxLQUFLLENBQWlCO0lBQ3RCLElBQUksQ0FBbUI7SUFxQmhDLGFBQWEsQ0FBQyxJQUFrQjtRQUM1QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDcEIsTUFBTSxDQUNGLEtBQUssQ0FBQyxFQUFFLENBQ0osS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJO2dCQUNsQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNoRyxFQUNELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWU7UUFDMUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDcEIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLFlBQVksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQ3pCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtJQUNMLENBQUM7OEdBL0NRLGVBQWU7a0hBQWYsZUFBZSxjQURGLE1BQU07OzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHtcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgZnJvbUV2ZW50LFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIHNoYXJlLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHN0YXJ0V2l0aCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZSxcbiAgICB0aHJvdHRsZVRpbWUsXG4gICAgdGltZXJcbn0gZnJvbSBcInJ4anNcIlxuXG4vLyBUT0RPOiBkZXRlY3QgcHJvZ3JhbSBhY3Rpdml0eVxuZXhwb3J0IHR5cGUgQWN0aXZpdHlPcmlnaW4gPSBcIm1vdXNlXCIgfCBcImtleWJvYXJkXCIgfCBcInRvdWNoXCIgfCBcInByb2dyYW1cIlxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5RXZlbnQge1xuICAgIG9yaWdpbjogQWN0aXZpdHlPcmlnaW5cbiAgICB0eXBlOiBrZXlvZiB0eXBlb2YgRVZFTlRfT1JJR0lOXG4gICAgbm9kZT86IE5vZGVcbn1cblxuY29uc3QgRVZFTlRfT1BUSU9OUzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgY2FwdHVyZTogdHJ1ZSxcbiAgICBwYXNzaXZlOiB0cnVlXG59XG5cbmNvbnN0IEVWRU5UX09SSUdJTiA9IHtcbiAgICBrZXlkb3duOiBcImtleWJvYXJkXCIsXG4gICAgbW91c2Vkb3duOiBcIm1vdXNlXCIsXG4gICAgbW91c2Vtb3ZlOiBcIm1vdXNlXCIsXG4gICAgdG91Y2hzdGFydDogXCJ0b3VjaFwiXG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eVNlcnZpY2Uge1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSlcbiAgICByZWFkb25seSAjZG9jID0gaW5qZWN0KERPQ1VNRU5UKVxuXG4gICAgcmVhZG9ubHkgZXZlbnRzJDogT2JzZXJ2YWJsZTxBY3Rpdml0eUV2ZW50PiA9IHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy4jZG9jLCBcImtleWRvd25cIiwgRVZFTlRfT1BUSU9OUyksXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy4jZG9jLCBcIm1vdXNlZG93blwiLCBFVkVOVF9PUFRJT05TKSxcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLiNkb2MsIFwibW91c2Vtb3ZlXCIsIEVWRU5UX09QVElPTlMpLFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuI2RvYywgXCJ0b3VjaHN0YXJ0XCIsIEVWRU5UX09QVElPTlMpXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IGV2ZW50LnR5cGUgYXMgQWN0aXZpdHlFdmVudFtcInR5cGVcIl1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IEVWRU5UX09SSUdJTlt0eXBlXSBhcyBBY3Rpdml0eU9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZTogZXZlbnQudGFyZ2V0IGFzIGFueVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICApXG4gICAgKVxuXG4gICAgd2F0Y2hBY3Rpdml0eShub2RlPzogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV2ZW50cyQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5ub2RlICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5ub2RlID09PSBub2RlIHx8IChldmVudC5ub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZXZlbnQubm9kZS5jb250YWlucyhub2RlKSkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzJFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgd2F0Y2hJbmFjdHZpdHkodGltZW91dDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50cyQucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgIHRocm90dGxlVGltZSh0aW1lb3V0IC8gMiksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGltZXIoMCwgdGltZW91dCkucGlwZSh0YWtlKDIpKSksXG4gICAgICAgICAgICBtYXAodiA9PiB2ICE9PSAwKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApXG4gICAgfVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from "./activity.service";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy9hY3Rpdml0eS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYWN0aXZpdHkuc2VydmljZVwiXG4iXX0=
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
var _a;
|
|
2
|
-
import { Directive, effect, ElementRef, inject } from "@angular/core";
|
|
3
|
-
import { takeUntilDestroyed, toSignal } from "@angular/core/rxjs-interop";
|
|
4
|
-
import { BehaviorSubject, combineLatest, debounceTime, map, Observable, of, shareReplay, switchMap } from "rxjs";
|
|
5
|
-
import { isElementInput } from "@ngutil/common";
|
|
6
|
-
import { FocusService } from "./focus.service";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class FocusState {
|
|
9
|
-
#focus;
|
|
10
|
-
#el;
|
|
11
|
-
#parent;
|
|
12
|
-
#default;
|
|
13
|
-
#self;
|
|
14
|
-
#connected;
|
|
15
|
-
#connEvent;
|
|
16
|
-
constructor() {
|
|
17
|
-
this.#focus = inject(FocusService);
|
|
18
|
-
this.#el = inject(ElementRef);
|
|
19
|
-
this.#parent = inject(_a, { optional: true, skipSelf: true });
|
|
20
|
-
this.#default = { element: this.#el.nativeElement, origin: null };
|
|
21
|
-
this.#self = this.#focus.watch(this.#el).pipe(takeUntilDestroyed(), shareReplay(1));
|
|
22
|
-
this.#connected = new BehaviorSubject([]);
|
|
23
|
-
this.#connEvent = this.#connected.pipe(switchMap(values => (values.length === 0 ? of([]) : combineLatest(values))), takeUntilDestroyed(), map(values => values.filter(v => v.origin != null)), map(values => values[0] || this.#default), shareReplay(1));
|
|
24
|
-
this.event$ = combineLatest([this.#self, this.#connEvent]).pipe(debounceTime(100), map(values => values.find(v => v.origin != null) || this.#default), shareReplay(1));
|
|
25
|
-
this.origin$ = this.event$.pipe(map(event => event.origin));
|
|
26
|
-
this.within$ = this.event$.pipe(map(event => (event.element !== this.#el.nativeElement ? event.origin : null)));
|
|
27
|
-
this.event = toSignal(this.event$, { rejectErrors: true, manualCleanup: true });
|
|
28
|
-
this.origin = toSignal(this.origin$, { rejectErrors: true, manualCleanup: true });
|
|
29
|
-
this.within = toSignal(this.within$, { rejectErrors: true, manualCleanup: true });
|
|
30
|
-
// TODO: miért kell ez?, ha nincs itt akkor nem frissül
|
|
31
|
-
effect(() => this.origin(), { allowSignalWrites: false });
|
|
32
|
-
this.#parent?.connect(this).pipe(takeUntilDestroyed()).subscribe();
|
|
33
|
-
}
|
|
34
|
-
connect(value) {
|
|
35
|
-
return new Observable(() => {
|
|
36
|
-
const src = (isElementInput(value) ? this.#focus.watch(value) : value.event$).pipe(shareReplay(1));
|
|
37
|
-
this.#connected.next([...this.#connected.value, src]);
|
|
38
|
-
return () => {
|
|
39
|
-
let current = this.#connected.value;
|
|
40
|
-
const idx = current.indexOf(src);
|
|
41
|
-
if (idx >= 0) {
|
|
42
|
-
current = [...current];
|
|
43
|
-
current.splice(idx, 1);
|
|
44
|
-
this.#connected.next(current);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FocusState, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
50
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: FocusState, isStandalone: true, host: { properties: { "attr.focus": "origin()", "attr.focusWithin": "within()" } }, ngImport: i0 }); }
|
|
51
|
-
}
|
|
52
|
-
_a = FocusState;
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FocusState, decorators: [{
|
|
54
|
-
type: Directive,
|
|
55
|
-
args: [{
|
|
56
|
-
standalone: true,
|
|
57
|
-
host: {
|
|
58
|
-
"[attr.focus]": "origin()",
|
|
59
|
-
"[attr.focusWithin]": "within()"
|
|
60
|
-
}
|
|
61
|
-
}]
|
|
62
|
-
}], ctorParameters: () => [] });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXJpYS9zcmMvZm9jdXMvZm9jdXMtc3RhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUloSCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWhFLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7O0FBUzVELE1BQU0sT0FBTyxVQUFVO0lBQ1YsTUFBTSxDQUF1QjtJQUM3QixHQUFHLENBQThDO0lBQ2pELE9BQU8sQ0FBeUQ7SUFDaEUsUUFBUSxDQUFrRTtJQUUxRSxLQUFLLENBQXlFO0lBRTlFLFVBQVUsQ0FBc0Q7SUFDaEUsVUFBVSxDQU1sQjtJQWVEO1FBN0JTLFdBQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDN0IsUUFBRyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUE7UUFDakQsWUFBTyxHQUFHLE1BQU0sQ0FBQyxFQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLGFBQVEsR0FBaUIsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFBO1FBRTFF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LENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDbEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFFckQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUE7Z0JBQ25DLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNYLE9BQU8sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUE7b0JBQ3RCLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFDakMsQ0FBQztZQUNMLENBQUMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs4R0FuRFEsVUFBVTtrR0FBVixVQUFVOzs7MkZBQVYsVUFBVTtrQkFQdEIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLGNBQWMsRUFBRSxVQUFVO3dCQUMxQixvQkFBb0IsRUFBRSxVQUFVO3FCQUNuQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCJcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IEVsZW1lbnRJbnB1dCB9IGZyb20gXCJkaXN0L3BhY2thZ2VzL2NvbW1vblwiXG5cbmltcG9ydCB7IENvbm5lY3RQcm90b2NvbCwgaXNFbGVtZW50SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBGb2N1c0NoYW5nZXMsIEZvY3VzU2VydmljZSB9IGZyb20gXCIuL2ZvY3VzLnNlcnZpY2VcIlxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgXCJbYXR0ci5mb2N1c11cIjogXCJvcmlnaW4oKVwiLFxuICAgICAgICBcIlthdHRyLmZvY3VzV2l0aGluXVwiOiBcIndpdGhpbigpXCJcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzU3RhdGUgaW1wbGVtZW50cyBDb25uZWN0UHJvdG9jb2wge1xuICAgIHJlYWRvbmx5ICNmb2N1cyA9IGluamVjdChGb2N1c1NlcnZpY2UpXG4gICAgcmVhZG9ubHkgI2VsID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKVxuICAgIHJlYWRvbmx5ICNwYXJlbnQgPSBpbmplY3QoRm9jdXNTdGF0ZSwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSlcbiAgICByZWFkb25seSAjZGVmYXVsdDogRm9jdXNDaGFuZ2VzID0geyBlbGVtZW50OiB0aGlzLiNlbC5uYXRpdmVFbGVtZW50LCBvcmlnaW46IG51bGwgfVxuXG4gICAgcmVhZG9ubHkgI3NlbGYgPSB0aGlzLiNmb2N1cy53YXRjaCh0aGlzLiNlbCkucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSwgc2hhcmVSZXBsYXkoMSkpXG5cbiAgICByZWFkb25seSAjY29ubmVjdGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPEZvY3VzQ2hhbmdlcz5bXT4oW10pXG4gICAgcmVhZG9ubHkgI2Nvbm5FdmVudCA9IHRoaXMuI2Nvbm5lY3RlZC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodmFsdWVzID0+ICh2YWx1ZXMubGVuZ3RoID09PSAwID8gb2YoW10pIDogY29tYmluZUxhdGVzdCh2YWx1ZXMpKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICBtYXAodmFsdWVzID0+IHZhbHVlcy5maWx0ZXIodiA9PiB2Lm9yaWdpbiAhPSBudWxsKSksXG4gICAgICAgIG1hcCh2YWx1ZXMgPT4gdmFsdWVzWzBdIHx8IHRoaXMuI2RlZmF1bHQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGV2ZW50JDogT2JzZXJ2YWJsZTxGb2N1c0NoYW5nZXM+ID0gY29tYmluZUxhdGVzdChbdGhpcy4jc2VsZiwgdGhpcy4jY29ubkV2ZW50XSkucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIG1hcCh2YWx1ZXMgPT4gdmFsdWVzLmZpbmQodiA9PiB2Lm9yaWdpbiAhPSBudWxsKSB8fCB0aGlzLiNkZWZhdWx0KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBvcmlnaW4kID0gdGhpcy5ldmVudCQucGlwZShtYXAoZXZlbnQgPT4gZXZlbnQub3JpZ2luKSlcbiAgICByZWFkb25seSB3aXRoaW4kID0gdGhpcy5ldmVudCQucGlwZShtYXAoZXZlbnQgPT4gKGV2ZW50LmVsZW1lbnQgIT09IHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQgPyBldmVudC5vcmlnaW4gOiBudWxsKSkpXG5cbiAgICByZWFkb25seSBldmVudCA9IHRvU2lnbmFsKHRoaXMuZXZlbnQkLCB7IHJlamVjdEVycm9yczogdHJ1ZSwgbWFudWFsQ2xlYW51cDogdHJ1ZSB9KVxuICAgIHJlYWRvbmx5IG9yaWdpbiA9IHRvU2lnbmFsKHRoaXMub3JpZ2luJCwgeyByZWplY3RFcnJvcnM6IHRydWUsIG1hbnVhbENsZWFudXA6IHRydWUgfSlcbiAgICByZWFkb25seSB3aXRoaW4gPSB0b1NpZ25hbCh0aGlzLndpdGhpbiQsIHsgcmVqZWN0RXJyb3JzOiB0cnVlLCBtYW51YWxDbGVhbnVwOiB0cnVlIH0pXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gVE9ETzogbWnDqXJ0IGtlbGwgZXo/LCBoYSBuaW5jcyBpdHQgYWtrb3IgbmVtIGZyaXNzw7xsXG4gICAgICAgIGVmZmVjdCgoKSA9PiB0aGlzLm9yaWdpbigpLCB7IGFsbG93U2lnbmFsV3JpdGVzOiBmYWxzZSB9KVxuICAgICAgICB0aGlzLiNwYXJlbnQ/LmNvbm5lY3QodGhpcykucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKClcbiAgICB9XG5cbiAgICBjb25uZWN0KHZhbHVlOiBGb2N1c1N0YXRlIHwgRWxlbWVudElucHV0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzcmMgPSAoaXNFbGVtZW50SW5wdXQodmFsdWUpID8gdGhpcy4jZm9jdXMud2F0Y2godmFsdWUpIDogdmFsdWUuZXZlbnQkKS5waXBlKHNoYXJlUmVwbGF5KDEpKVxuICAgICAgICAgICAgdGhpcy4jY29ubmVjdGVkLm5leHQoWy4uLnRoaXMuI2Nvbm5lY3RlZC52YWx1ZSwgc3JjXSlcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IHRoaXMuI2Nvbm5lY3RlZC52YWx1ZVxuICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IGN1cnJlbnQuaW5kZXhPZihzcmMpXG4gICAgICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBbLi4uY3VycmVudF1cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudC5zcGxpY2UoaWR4LCAxKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNjb25uZWN0ZWQubmV4dChjdXJyZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ElementRef, inject } from "@angular/core";
|
|
2
|
-
import { BehaviorSubject } from "rxjs";
|
|
3
|
-
import { Destructible } from "@ngutil/common";
|
|
4
|
-
import { FocusService } from "./focus.service";
|
|
5
|
-
// TODO: implement
|
|
6
|
-
export class FocusTrap extends Destructible {
|
|
7
|
-
#manager = inject(FocusService);
|
|
8
|
-
#el = inject((ElementRef));
|
|
9
|
-
get enabled() {
|
|
10
|
-
return this.#enabled.value;
|
|
11
|
-
}
|
|
12
|
-
set enabled(val) {
|
|
13
|
-
if (this.#enabled.value !== val) {
|
|
14
|
-
this.#enabled.next(val);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
#enabled = new BehaviorSubject(true);
|
|
18
|
-
enable() {
|
|
19
|
-
this.enabled = true;
|
|
20
|
-
}
|
|
21
|
-
disable() {
|
|
22
|
-
this.enabled = false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy9mb2N1cy9mb2N1cy10cmFwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFOUMsa0JBQWtCO0FBQ2xCLE1BQU0sT0FBTyxTQUFVLFNBQVEsWUFBWTtJQUN2QyxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQy9CLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQTtJQUVyQyxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFBO0lBQzlCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxHQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFDRCxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUE7SUFFN0MsTUFBTTtRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7SUFDeEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IERlc3RydWN0aWJsZSB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IEZvY3VzU2VydmljZSB9IGZyb20gXCIuL2ZvY3VzLnNlcnZpY2VcIlxuXG4vLyBUT0RPOiBpbXBsZW1lbnRcbmV4cG9ydCBjbGFzcyBGb2N1c1RyYXAgZXh0ZW5kcyBEZXN0cnVjdGlibGUge1xuICAgICNtYW5hZ2VyID0gaW5qZWN0KEZvY3VzU2VydmljZSlcbiAgICAjZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBnZXQgZW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2VuYWJsZWQudmFsdWVcbiAgICB9XG4gICAgc2V0IGVuYWJsZWQodmFsOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLiNlbmFibGVkLnZhbHVlICE9PSB2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuI2VuYWJsZWQubmV4dCh2YWwpXG4gICAgICAgIH1cbiAgICB9XG4gICAgI2VuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpXG5cbiAgICBlbmFibGUoKSB7XG4gICAgICAgIHRoaXMuZW5hYmxlZCA9IHRydWVcbiAgICB9XG5cbiAgICBkaXNhYmxlKCkge1xuICAgICAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { FocusTrapFactory } from "@angular/cdk/a11y";
|
|
2
|
-
import { DOCUMENT } from "@angular/common";
|
|
3
|
-
import { inject, Injectable, NgZone } from "@angular/core";
|
|
4
|
-
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
5
|
-
import { BehaviorSubject, combineLatest, connect, distinctUntilChanged, filter, finalize, map, merge, Observable, shareReplay, startWith, Subject, tap } from "rxjs";
|
|
6
|
-
import { isEqual } from "lodash-es";
|
|
7
|
-
import { focusable, isFocusable } from "tabbable";
|
|
8
|
-
import { coerceElement } from "@ngutil/common";
|
|
9
|
-
import { ActivityService } from "../activity";
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
const EVENT_OPTIONS = {
|
|
12
|
-
capture: true,
|
|
13
|
-
passive: true
|
|
14
|
-
};
|
|
15
|
-
export class FocusService {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.#activity = inject(ActivityService);
|
|
18
|
-
this.#focusTrap = inject(FocusTrapFactory);
|
|
19
|
-
this.#zone = inject(NgZone);
|
|
20
|
-
this.#document = inject(DOCUMENT);
|
|
21
|
-
this.#originOverrides = new BehaviorSubject(new Map());
|
|
22
|
-
this.#focus = listener(this.#document, this.#zone, "focus", EVENT_OPTIONS).pipe(connect(focus => this.#zone.runOutsideAngular(() => {
|
|
23
|
-
let lastFocused = null;
|
|
24
|
-
const sideEffect = new Subject();
|
|
25
|
-
// if element removed form document, emit blur & focus
|
|
26
|
-
const mutation = new MutationObserver(mutations => {
|
|
27
|
-
for (const mutation of mutations) {
|
|
28
|
-
if (mutation.type === "childList" && mutation.removedNodes.length > 0) {
|
|
29
|
-
for (const removed of Array.from(mutation.removedNodes)) {
|
|
30
|
-
if (removed === lastFocused || removed.contains(lastFocused)) {
|
|
31
|
-
this.#blurSide.next(lastFocused);
|
|
32
|
-
sideEffect.next(this.#document.activeElement);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
mutation.observe(this.#document, { subtree: true, childList: true });
|
|
40
|
-
return merge(focus.pipe(tap(node => (lastFocused = node)), finalize(() => mutation.disconnect())), sideEffect);
|
|
41
|
-
})), distinctUntilChanged(strictEq));
|
|
42
|
-
this.#blurEvent = listener(this.#document, this.#zone, "blur", EVENT_OPTIONS).pipe(startWith(null));
|
|
43
|
-
this.#blurSide = new Subject();
|
|
44
|
-
this.#blur = merge(this.#blurEvent, this.#blurSide).pipe(distinctUntilChanged(strictEq));
|
|
45
|
-
this.events = this.#zone.runOutsideAngular(() => combineLatest({
|
|
46
|
-
activity: this.#activity.events$.pipe(filter(event => event.type !== "mousemove")),
|
|
47
|
-
focus: this.#focus,
|
|
48
|
-
blur: this.#blur.pipe(tap(el => this.#delOrigin(el))),
|
|
49
|
-
overrides: this.#originOverrides
|
|
50
|
-
}).pipe(takeUntilDestroyed(), map(({ activity, focus, blur, overrides }) => {
|
|
51
|
-
const override = overrides.get(focus);
|
|
52
|
-
// If focus in with alt+tab
|
|
53
|
-
if (blur === document && activity.origin === "keyboard") {
|
|
54
|
-
return { origin: override || "program", element: focus };
|
|
55
|
-
}
|
|
56
|
-
if (focus === document) {
|
|
57
|
-
return { origin: override || "program", element: focus };
|
|
58
|
-
}
|
|
59
|
-
// If press tab button, first fire the event in the currently focused element
|
|
60
|
-
if (focus === blur) {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
// When press tab, the activity is on the current fucesd element,
|
|
64
|
-
// so when blur is changed to it, the focus change is completed
|
|
65
|
-
if (activity.origin === "keyboard" && isActivityElement(activity.node, blur)) {
|
|
66
|
-
return { origin: override || "keyboard", element: focus };
|
|
67
|
-
}
|
|
68
|
-
if (isActivityElement(activity.node, focus)) {
|
|
69
|
-
return { origin: override || activity.origin, element: focus };
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
return { origin: override || "program", element: focus };
|
|
73
|
-
}
|
|
74
|
-
}), filter(v => !!v), distinctUntilChanged(isEqual), shareReplay({ bufferSize: 1, refCount: true })));
|
|
75
|
-
}
|
|
76
|
-
#activity;
|
|
77
|
-
#focusTrap;
|
|
78
|
-
#zone;
|
|
79
|
-
#document;
|
|
80
|
-
#originOverrides;
|
|
81
|
-
#focus;
|
|
82
|
-
#blurEvent;
|
|
83
|
-
#blurSide;
|
|
84
|
-
#blur;
|
|
85
|
-
watch(element) {
|
|
86
|
-
const el = coerceElement(element);
|
|
87
|
-
return this.events.pipe(map(event => {
|
|
88
|
-
if (event.element &&
|
|
89
|
-
(event.element === el || (typeof el.contains === "function" && el.contains(event.element)))) {
|
|
90
|
-
return event;
|
|
91
|
-
}
|
|
92
|
-
return { element: el, origin: null };
|
|
93
|
-
}));
|
|
94
|
-
}
|
|
95
|
-
focus(node, origin) {
|
|
96
|
-
this.#setOrigin(node, origin);
|
|
97
|
-
coerceElement(node).focus();
|
|
98
|
-
}
|
|
99
|
-
queryFocusable(inside) {
|
|
100
|
-
return focusable(coerceElement(inside), { includeContainer: false });
|
|
101
|
-
}
|
|
102
|
-
getFirstFocusable(inside) {
|
|
103
|
-
return this.queryFocusable(inside)[0];
|
|
104
|
-
}
|
|
105
|
-
isFocusable(node) {
|
|
106
|
-
return isFocusable(coerceElement(node));
|
|
107
|
-
}
|
|
108
|
-
focusTrap(inside, deferCaptureElements = false) {
|
|
109
|
-
return this.#focusTrap.create(coerceElement(inside), deferCaptureElements);
|
|
110
|
-
}
|
|
111
|
-
#setOrigin(el, origin) {
|
|
112
|
-
const target = coerceElement(el);
|
|
113
|
-
const map = this.#originOverrides.value;
|
|
114
|
-
map.set(target, origin);
|
|
115
|
-
this.#originOverrides.next(map);
|
|
116
|
-
}
|
|
117
|
-
#delOrigin(el) {
|
|
118
|
-
const target = coerceElement(el);
|
|
119
|
-
const map = this.#originOverrides.value;
|
|
120
|
-
map.delete(target);
|
|
121
|
-
this.#originOverrides.next(map);
|
|
122
|
-
}
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FocusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
124
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FocusService, providedIn: "root" }); }
|
|
125
|
-
}
|
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FocusService, decorators: [{
|
|
127
|
-
type: Injectable,
|
|
128
|
-
args: [{ providedIn: "root" }]
|
|
129
|
-
}] });
|
|
130
|
-
function isActivityElement(activityEl, focused) {
|
|
131
|
-
return activityEl != null && focused != null && (activityEl === focused || focused.contains(activityEl));
|
|
132
|
-
}
|
|
133
|
-
function listener(doc, zone, type, options) {
|
|
134
|
-
return new Observable((dst) => zone.runOutsideAngular(() => {
|
|
135
|
-
const handler = (e) => {
|
|
136
|
-
dst.next(e.target);
|
|
137
|
-
};
|
|
138
|
-
document.addEventListener(type, handler, options);
|
|
139
|
-
return () => document.removeEventListener(type, handler, options);
|
|
140
|
-
}));
|
|
141
|
-
}
|
|
142
|
-
function strictEq(a, b) {
|
|
143
|
-
return a === b;
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2ZvY3VzL2ZvY3VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUUvRCxPQUFPLEVBQ0gsZUFBZSxFQUNmLGFBQWEsRUFDYixPQUFPLEVBQ1Asb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILEtBQUssRUFDTCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFNBQVMsRUFDVCxPQUFPLEVBRVAsR0FBRyxFQUNOLE1BQU0sTUFBTSxDQUFBO0FBRWIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUF5QixXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFeEUsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU1RCxPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTs7QUFFN0QsTUFBTSxhQUFhLEdBQTRCO0lBQzNDLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7Q0FDaEIsQ0FBQTtBQWdCRCxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVhLGNBQVMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDbkMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ3JDLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxD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SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c1RyYXBGYWN0b3J5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiXG5cbmltcG9ydCB7XG4gICAgQmVoYXZpb3JTdWJqZWN0LFxuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgY29ubmVjdCxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgZmluYWxpemUsXG4gICAgbWFwLFxuICAgIG1lcmdlLFxuICAgIE9ic2VydmFibGUsXG4gICAgc2hhcmVSZXBsYXksXG4gICAgc3RhcnRXaXRoLFxuICAgIFN1YmplY3QsXG4gICAgU3Vic2NyaWJlcixcbiAgICB0YXBcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcImxvZGFzaC1lc1wiXG5pbXBvcnQgeyBmb2N1c2FibGUsIHR5cGUgRm9jdXNhYmxlRWxlbWVudCwgaXNGb2N1c2FibGUgfSBmcm9tIFwidGFiYmFibGVcIlxuXG5pbXBvcnQgeyBjb2VyY2VFbGVtZW50LCBFbGVtZW50SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBBY3Rpdml0eU9yaWdpbiwgQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSBcIi4uL2FjdGl2aXR5XCJcblxuY29uc3QgRVZFTlRfT1BUSU9OUzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgY2FwdHVyZTogdHJ1ZSxcbiAgICBwYXNzaXZlOiB0cnVlXG59XG5cbmV4cG9ydCB0eXBlIEZvY3VzT3JpZ2luID0gQWN0aXZpdHlPcmlnaW4gfCBudWxsXG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9jdXNDaGFuZ2VzIHtcbiAgICBvcmlnaW46IEZvY3VzT3JpZ2luXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb2N1c2FibGVFdmVudCB7XG4gICAgb3JpZ2luOiBGb2N1c09yaWdpblxuICAgIGV4YWN0OiBib29sZWFuXG4gICAgbm9kZTogTm9kZVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgRm9jdXNTZXJ2aWNlIHtcbiAgICByZWFkb25seSAjYWN0aXZpdHkgPSBpbmplY3QoQWN0aXZpdHlTZXJ2aWNlKVxuICAgIHJlYWRvbmx5ICNmb2N1c1RyYXAgPSBpbmplY3QoRm9jdXNUcmFwRmFjdG9yeSlcbiAgICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmVhZG9ubHkgI2RvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKVxuXG4gICAgcmVhZG9ubHkgI29yaWdpbk92ZXJyaWRlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPEhUTUxFbGVtZW50LCBGb2N1c09yaWdpbj4+KG5ldyBNYXAoKSlcblxuICAgIHJlYWRvbmx5ICNmb2N1cyA9IGxpc3RlbmVyKHRoaXMuI2RvY3VtZW50LCB0aGlzLiN6b25lLCBcImZvY3VzXCIsIEVWRU5UX09QVElPTlMpLnBpcGUoXG4gICAgICAgIGNvbm5lY3QoZm9jdXMgPT5cbiAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBsYXN0Rm9jdXNlZDogTm9kZSB8IG51bGwgPSBudWxsXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lkZUVmZmVjdCA9IG5ldyBTdWJqZWN0PE5vZGU+KClcblxuICAgICAgICAgICAgICAgIC8vIGlmIGVsZW1lbnQgcmVtb3ZlZCBmb3JtIGRvY3VtZW50LCBlbWl0IGJsdXIgJiBmb2N1c1xuICAgICAgICAgICAgICAgIGNvbnN0IG11dGF0aW9uID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSBcImNoaWxkTGlzdFwiICYmIG11dGF0aW9uLnJlbW92ZWROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZW1vdmVkIG9mIEFycmF5LmZyb20obXV0YXRpb24ucmVtb3ZlZE5vZGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVtb3ZlZCA9PT0gbGFzdEZvY3VzZWQgfHwgcmVtb3ZlZC5jb250YWlucyhsYXN0Rm9jdXNlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2JsdXJTaWRlLm5leHQobGFzdEZvY3VzZWQhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZUVmZmVjdC5uZXh0KHRoaXMuI2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgbXV0YXRpb24ub2JzZXJ2ZSh0aGlzLiNkb2N1bWVudCwgeyBzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUgfSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAobm9kZSA9PiAobGFzdEZvY3VzZWQgPSBub2RlKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiBtdXRhdGlvbi5kaXNjb25uZWN0KCkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHNpZGVFZmZlY3RcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKHN0cmljdEVxKVxuICAgIClcblxuICAgIHJlYWRvbmx5ICNibHVyRXZlbnQgPSBsaXN0ZW5lcih0aGlzLiNkb2N1bWVudCwgdGhpcy4jem9uZSwgXCJibHVyXCIsIEVWRU5UX09QVElPTlMpLnBpcGUoc3RhcnRXaXRoKG51bGwpKVxuICAgIHJlYWRvbmx5ICNibHVyU2lkZSA9IG5ldyBTdWJqZWN0PE5vZGU+KClcbiAgICByZWFkb25seSAjYmx1ciA9IG1lcmdlKHRoaXMuI2JsdXJFdmVudCwgdGhpcy4jYmx1clNpZGUpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoc3RyaWN0RXEpKVxuXG4gICAgcmVhZG9ubHkgZXZlbnRzOiBPYnNlcnZhYmxlPEZvY3VzQ2hhbmdlcz4gPSB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICAgICAgYWN0aXZpdHk6IHRoaXMuI2FjdGl2aXR5LmV2ZW50cyQucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQudHlwZSAhPT0gXCJtb3VzZW1vdmVcIikpLFxuICAgICAgICAgICAgZm9jdXM6IHRoaXMuI2ZvY3VzLFxuICAgICAgICAgICAgYmx1cjogdGhpcy4jYmx1ci5waXBlKHRhcChlbCA9PiB0aGlzLiNkZWxPcmlnaW4oZWwgYXMgYW55KSkpLFxuICAgICAgICAgICAgb3ZlcnJpZGVzOiB0aGlzLiNvcmlnaW5PdmVycmlkZXNcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICAgICAgbWFwKCh7IGFjdGl2aXR5LCBmb2N1cywgYmx1ciwgb3ZlcnJpZGVzIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVycmlkZSA9IG92ZXJyaWRlcy5nZXQoZm9jdXMgYXMgYW55KVxuXG4gICAgICAgICAgICAgICAgLy8gSWYgZm9jdXMgaW4gd2l0aCBhbHQrdGFiXG4gICAgICAgICAgICAgICAgaWYgKGJsdXIgPT09IGRvY3VtZW50ICYmIGFjdGl2aXR5Lm9yaWdpbiA9PT0gXCJrZXlib2FyZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG9yaWdpbjogb3ZlcnJpZGUgfHwgXCJwcm9ncmFtXCIsIGVsZW1lbnQ6IGZvY3VzIH0gc2F0aXNmaWVzIEZvY3VzQ2hhbmdlc1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmb2N1cyA9PT0gZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgb3JpZ2luOiBvdmVycmlkZSB8fCBcInByb2dyYW1cIiwgZWxlbWVudDogZm9jdXMgfSBzYXRpc2ZpZXMgRm9jdXNDaGFuZ2VzXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gSWYgcHJlc3MgdGFiIGJ1dHRvbiwgZmlyc3QgZmlyZSB0aGUgZXZlbnQgaW4gdGhlIGN1cnJlbnRseSBmb2N1c2VkIGVsZW1lbnRcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXMgPT09IGJsdXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBXaGVuIHByZXNzIHRhYiwgdGhlIGFjdGl2aXR5IGlzIG9uIHRoZSBjdXJyZW50IGZ1Y2VzZCBlbGVtZW50LFxuICAgICAgICAgICAgICAgIC8vIHNvIHdoZW4gYmx1ciBpcyBjaGFuZ2VkIHRvIGl0LCB0aGUgZm9jdXMgY2hhbmdlIGlzIGNvbXBsZXRlZFxuICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0eS5vcmlnaW4gPT09IFwia2V5Ym9hcmRcIiAmJiBpc0FjdGl2aXR5RWxlbWVudChhY3Rpdml0eS5ub2RlLCBibHVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcmlnaW46IG92ZXJyaWRlIHx8IFwia2V5Ym9hcmRcIiwgZWxlbWVudDogZm9jdXMgfSBzYXRpc2ZpZXMgRm9jdXNDaGFuZ2VzXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzQWN0aXZpdHlFbGVtZW50KGFjdGl2aXR5Lm5vZGUsIGZvY3VzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcmlnaW46IG92ZXJyaWRlIHx8IGFjdGl2aXR5Lm9yaWdpbiwgZWxlbWVudDogZm9jdXMgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG9yaWdpbjogb3ZlcnJpZGUgfHwgXCJwcm9ncmFtXCIsIGVsZW1lbnQ6IGZvY3VzIH0gc2F0aXNmaWVzIEZvY3VzQ2hhbmdlc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKHYgPT4gISF2KSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzRXF1YWwpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgICApXG4gICAgKVxuXG4gICAgd2F0Y2goZWxlbWVudDogRWxlbWVudElucHV0KSB7XG4gICAgICAgIGNvbnN0IGVsID0gY29lcmNlRWxlbWVudChlbGVtZW50KVxuICAgICAgICByZXR1cm4gdGhpcy5ldmVudHMucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBldmVudC5lbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIChldmVudC5lbGVtZW50ID09PSBlbCB8fCAodHlwZW9mIGVsLmNvbnRhaW5zID09PSBcImZ1bmN0aW9uXCIgJiYgZWwuY29udGFpbnMoZXZlbnQuZWxlbWVudCkpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZWxlbWVudDogZWwsIG9yaWdpbjogbnVsbCB9IGFzIEZvY3VzQ2hhbmdlc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGZvY3VzKG5vZGU6IEVsZW1lbnRJbnB1dCwgb3JpZ2luOiBGb2N1c09yaWdpbiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy4jc2V0T3JpZ2luKG5vZGUsIG9yaWdpbilcbiAgICAgICAgY29lcmNlRWxlbWVudChub2RlKS5mb2N1cygpXG4gICAgfVxuXG4gICAgcXVlcnlGb2N1c2FibGUoaW5zaWRlOiBFbGVtZW50SW5wdXQpOiBGb2N1c2FibGVFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gZm9jdXNhYmxlKGNvZXJjZUVsZW1lbnQoaW5zaWRlKSwgeyBpbmNsdWRlQ29udGFpbmVyOiBmYWxzZSB9KVxuICAgIH1cblxuICAgIGdldEZpcnN0Rm9jdXNhYmxlKGluc2lkZTogRWxlbWVudElucHV0KTogRm9jdXNhYmxlRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5Rm9jdXNhYmxlKGluc2lkZSlbMF1cbiAgICB9XG5cbiAgICBpc0ZvY3VzYWJsZShub2RlOiBFbGVtZW50SW5wdXQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzRm9jdXNhYmxlKGNvZXJjZUVsZW1lbnQobm9kZSkpXG4gICAgfVxuXG4gICAgZm9jdXNUcmFwKGluc2lkZTogRWxlbWVudElucHV0LCBkZWZlckNhcHR1cmVFbGVtZW50czogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNmb2N1c1RyYXAuY3JlYXRlKGNvZXJjZUVsZW1lbnQoaW5zaWRlKSwgZGVmZXJDYXB0dXJlRWxlbWVudHMpXG4gICAgfVxuXG4gICAgI3NldE9yaWdpbihlbDogRWxlbWVudElucHV0LCBvcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGNvZXJjZUVsZW1lbnQoZWwpXG4gICAgICAgIGNvbnN0IG1hcCA9IHRoaXMuI29yaWdpbk92ZXJyaWRlcy52YWx1ZVxuICAgICAgICBtYXAuc2V0KHRhcmdldCwgb3JpZ2luKVxuICAgICAgICB0aGlzLiNvcmlnaW5PdmVycmlkZXMubmV4dChtYXApXG4gICAgfVxuXG4gICAgI2RlbE9yaWdpbihlbDogRWxlbWVudElucHV0KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGNvZXJjZUVsZW1lbnQoZWwpXG4gICAgICAgIGNvbnN0IG1hcCA9IHRoaXMuI29yaWdpbk92ZXJyaWRlcy52YWx1ZVxuICAgICAgICBtYXAuZGVsZXRlKHRhcmdldClcbiAgICAgICAgdGhpcy4jb3JpZ2luT3ZlcnJpZGVzLm5leHQobWFwKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNBY3Rpdml0eUVsZW1lbnQoYWN0aXZpdHlFbD86IE5vZGUgfCBudWxsLCBmb2N1c2VkPzogTm9kZSB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWN0aXZpdHlFbCAhPSBudWxsICYmIGZvY3VzZWQgIT0gbnVsbCAmJiAoYWN0aXZpdHlFbCA9PT0gZm9jdXNlZCB8fCBmb2N1c2VkLmNvbnRhaW5zKGFjdGl2aXR5RWwpKVxufVxuXG5mdW5jdGlvbiBsaXN0ZW5lcihkb2M6IERvY3VtZW50LCB6b25lOiBOZ1pvbmUsIHR5cGU6IEV2ZW50W1widHlwZVwiXSwgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKGRzdDogU3Vic2NyaWJlcjxOb2RlPikgPT5cbiAgICAgICAgem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZHN0Lm5leHQoZS50YXJnZXQgYXMgTm9kZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgaGFuZGxlciwgb3B0aW9ucylcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGhhbmRsZXIsIG9wdGlvbnMpXG4gICAgICAgIH0pXG4gICAgKVxufVxuXG5mdW5jdGlvbiBzdHJpY3RFcShhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhID09PSBiXG59XG4iXX0=
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { computed, Directive, effect, inject, input } from "@angular/core";
|
|
2
|
-
import { isElementInput } from "@ngutil/common";
|
|
3
|
-
import { FocusState } from "./focus-state.directive";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./focus-state.directive";
|
|
6
|
-
// TODO: what happens when disabled is changed
|
|
7
|
-
export class Focusable {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.state = inject(FocusState);
|
|
10
|
-
this.focusable = input(true, { alias: "nuFocusable" });
|
|
11
|
-
this.tabindex = input(0, { transform: Number });
|
|
12
|
-
this._tabindex = computed(() => {
|
|
13
|
-
const focusable = this.focusable();
|
|
14
|
-
const tabindex = this.tabindex();
|
|
15
|
-
if (focusable === false) {
|
|
16
|
-
return -1;
|
|
17
|
-
}
|
|
18
|
-
if (typeof focusable === "number") {
|
|
19
|
-
return focusable;
|
|
20
|
-
}
|
|
21
|
-
if (focusable === true && tabindex != null && !isNaN(tabindex)) {
|
|
22
|
-
return tabindex;
|
|
23
|
-
}
|
|
24
|
-
return 0;
|
|
25
|
-
});
|
|
26
|
-
// TODO: miért kell ez?, ha nincs itt akkor nem frissül
|
|
27
|
-
effect(() => this._tabindex(), { allowSignalWrites: false });
|
|
28
|
-
}
|
|
29
|
-
connect(value) {
|
|
30
|
-
if (value instanceof FocusState || isElementInput(value)) {
|
|
31
|
-
return this.state.connect(value);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
return this.state.connect(value.state);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: Focusable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
38
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: Focusable, isStandalone: true, selector: "[nuFocusable]", inputs: { focusable: { classPropertyName: "focusable", publicName: "nuFocusable", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.tabindex": "_tabindex()" } }, exportAs: ["nuFocusable"], hostDirectives: [{ directive: i1.FocusState }], ngImport: i0 }); }
|
|
39
|
-
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: Focusable, decorators: [{
|
|
41
|
-
type: Directive,
|
|
42
|
-
args: [{
|
|
43
|
-
standalone: true,
|
|
44
|
-
selector: "[nuFocusable]",
|
|
45
|
-
exportAs: "nuFocusable",
|
|
46
|
-
host: {
|
|
47
|
-
"[attr.tabindex]": "_tabindex()"
|
|
48
|
-
},
|
|
49
|
-
hostDirectives: [FocusState]
|
|
50
|
-
}]
|
|
51
|
-
}], ctorParameters: () => [] });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2ZvY3VzL2ZvY3VzYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUUsT0FBTyxFQUFpQyxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUE7OztBQUVwRCw4Q0FBOEM7QUFXOUMsTUFBTSxPQUFPLFNBQVM7SUF5QmxCO1FBeEJTLFVBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFMUIsY0FBUyxHQUFHLEtBQUssQ0FBbUIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7UUFDbkUsYUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUUxQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMvQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7WUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBRWhDLElBQUksU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN0QixPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQ2IsQ0FBQztZQUVELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sU0FBUyxDQUFBO1lBQ3BCLENBQUM7WUFFRCxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM3RCxPQUFPLFFBQVEsQ0FBQTtZQUNuQixDQUFDO1lBRUQsT0FBTyxDQUFDLENBQUE7UUFDWixDQUFDLENBQUMsQ0FBQTtRQUdFLHVEQUF1RDtRQUN2RCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQTRDO1FBQ2hELElBQUksS0FBSyxZQUFZLFVBQVUsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUMsQ0FBQztJQUNMLENBQUM7OEdBcENRLFNBQVM7a0dBQVQsU0FBUzs7MkZBQVQsU0FBUztrQkFUckIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxhQUFhO29CQUN2QixJQUFJLEVBQUU7d0JBQ0YsaUJBQWlCLEVBQUUsYUFBYTtxQkFDbkM7b0JBQ0QsY0FBYyxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHsgQ29ubmVjdFByb3RvY29sLCBFbGVtZW50SW5wdXQsIGlzRWxlbWVudElucHV0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgRm9jdXNTdGF0ZSB9IGZyb20gXCIuL2ZvY3VzLXN0YXRlLmRpcmVjdGl2ZVwiXG5cbi8vIFRPRE86IHdoYXQgaGFwcGVucyB3aGVuIGRpc2FibGVkIGlzIGNoYW5nZWRcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJbbnVGb2N1c2FibGVdXCIsXG4gICAgZXhwb3J0QXM6IFwibnVGb2N1c2FibGVcIixcbiAgICBob3N0OiB7XG4gICAgICAgIFwiW2F0dHIudGFiaW5kZXhdXCI6IFwiX3RhYmluZGV4KClcIlxuICAgIH0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtGb2N1c1N0YXRlXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGUgaW1wbGVtZW50cyBDb25uZWN0UHJvdG9jb2wge1xuICAgIHJlYWRvbmx5IHN0YXRlID0gaW5qZWN0KEZvY3VzU3RhdGUpXG5cbiAgICByZWFkb25seSBmb2N1c2FibGUgPSBpbnB1dDxib29sZWFuIHwgbnVtYmVyPih0cnVlLCB7IGFsaWFzOiBcIm51Rm9jdXNhYmxlXCIgfSlcbiAgICByZWFkb25seSB0YWJpbmRleCA9IGlucHV0KDAsIHsgdHJhbnNmb3JtOiBOdW1iZXIgfSlcblxuICAgIHJlYWRvbmx5IF90YWJpbmRleCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlID0gdGhpcy5mb2N1c2FibGUoKVxuICAgICAgICBjb25zdCB0YWJpbmRleCA9IHRoaXMudGFiaW5kZXgoKVxuXG4gICAgICAgIGlmIChmb2N1c2FibGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZm9jdXNhYmxlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9jdXNhYmxlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9jdXNhYmxlID09PSB0cnVlICYmIHRhYmluZGV4ICE9IG51bGwgJiYgIWlzTmFOKHRhYmluZGV4KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRhYmluZGV4XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMFxuICAgIH0pXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gVE9ETzogbWnDqXJ0IGtlbGwgZXo/LCBoYSBuaW5jcyBpdHQgYWtrb3IgbmVtIGZyaXNzw7xsXG4gICAgICAgIGVmZmVjdCgoKSA9PiB0aGlzLl90YWJpbmRleCgpLCB7IGFsbG93U2lnbmFsV3JpdGVzOiBmYWxzZSB9KVxuICAgIH1cblxuICAgIGNvbm5lY3QodmFsdWU6IEZvY3VzYWJsZSB8IEZvY3VzU3RhdGUgfCBFbGVtZW50SW5wdXQpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRm9jdXNTdGF0ZSB8fCBpc0VsZW1lbnRJbnB1dCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmNvbm5lY3QodmFsdWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jb25uZWN0KHZhbHVlLnN0YXRlKVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
package/esm2022/focus/index.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from "./focus.service";
|
|
2
|
-
export * from "./focus-trap.directive";
|
|
3
|
-
export * from "./focusable.directive";
|
|
4
|
-
export * from "./focus-state.directive";
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy9mb2N1cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHlCQUF5QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZm9jdXMuc2VydmljZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9mb2N1cy10cmFwLmRpcmVjdGl2ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9mb2N1c2FibGUuZGlyZWN0aXZlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2ZvY3VzLXN0YXRlLmRpcmVjdGl2ZVwiXG4iXX0=
|