@ng-atomic/core 17.10.0 → 17.11.0
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/esm2022/lib/action-store.mjs +40 -8
- package/esm2022/lib/effect.mjs +14 -15
- package/esm2022/lib/input.mjs +1 -1
- package/esm2022/lib/ng-atomic-component.mjs +43 -27
- package/fesm2022/ng-atomic-core.mjs +115 -69
- package/fesm2022/ng-atomic-core.mjs.map +1 -1
- package/lib/action-store.d.ts +15 -3
- package/lib/effect.d.ts +4 -2
- package/lib/input.d.ts +4 -1
- package/lib/ng-atomic-component.d.ts +2 -5
- package/package.json +1 -1
|
@@ -1,15 +1,26 @@
|
|
|
1
|
-
import { EventEmitter, Injectable } from "@angular/core";
|
|
1
|
+
import { EventEmitter, inject, Injectable, Injector } from "@angular/core";
|
|
2
|
+
import { injectEffectReducer } from "./effect";
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
export class NgAtomicActionLogger {
|
|
5
|
+
log(action, scope = 'default') {
|
|
6
|
+
console.debug(action, scope);
|
|
7
|
+
}
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicActionLogger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
9
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicActionLogger, providedIn: 'root' });
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicActionLogger, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{ providedIn: 'root' }]
|
|
14
|
+
}] });
|
|
3
15
|
export class NgAtomicRootActionStore {
|
|
4
|
-
|
|
16
|
+
logger = inject(NgAtomicActionLogger);
|
|
17
|
+
_actions$ = new EventEmitter();
|
|
18
|
+
actions$ = this._actions$.asObservable();
|
|
5
19
|
constructor() {
|
|
6
|
-
this.actions$.subscribe(action => this.log(action, 'root'));
|
|
20
|
+
this.actions$.subscribe(action => this.logger.log(action, 'root'));
|
|
7
21
|
}
|
|
8
22
|
dispatch(action) {
|
|
9
|
-
this.
|
|
10
|
-
}
|
|
11
|
-
log(action, scope = 'default') {
|
|
12
|
-
console.debug(action, scope);
|
|
23
|
+
this._actions$.emit(action);
|
|
13
24
|
}
|
|
14
25
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15
26
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, providedIn: 'root' });
|
|
@@ -18,4 +29,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
18
29
|
type: Injectable,
|
|
19
30
|
args: [{ providedIn: 'root' }]
|
|
20
31
|
}], ctorParameters: () => [] });
|
|
21
|
-
|
|
32
|
+
export class NgAtomicInjectorActionStore {
|
|
33
|
+
logger = inject(NgAtomicActionLogger);
|
|
34
|
+
async dispatch(injector, action, hostInjector = injector) {
|
|
35
|
+
const _action = { ...action, meta: { injector } };
|
|
36
|
+
this.logger.log(_action, 'injector');
|
|
37
|
+
const reducer = injectEffectReducer(injector);
|
|
38
|
+
const effect = await reducer(_action, hostInjector);
|
|
39
|
+
if (effect.dispatch) {
|
|
40
|
+
const injector_ = injector.get(Injector, null, { skipSelf: true });
|
|
41
|
+
if (injector_ && injector_ !== Injector.NULL) {
|
|
42
|
+
await this.dispatch(injector_, _action, hostInjector);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicInjectorActionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
47
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicInjectorActionStore, providedIn: 'root' });
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicInjectorActionStore, decorators: [{
|
|
50
|
+
type: Injectable,
|
|
51
|
+
args: [{ providedIn: 'root' }]
|
|
52
|
+
}] });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvYWN0aW9uLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUcvQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLEdBQUcsQ0FBQyxNQUFjLEVBQUUsUUFBZ0IsU0FBUztRQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO3VHQUhVLG9CQUFvQjsyR0FBcEIsb0JBQW9CLGNBRFIsTUFBTTs7MkZBQ2xCLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBUWhDLE1BQU0sT0FBTyx1QkFBdUI7SUFDeEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzdCLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ2pELFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxEO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQWM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQzt1R0FYVSx1QkFBdUI7MkdBQXZCLHVCQUF1QixjQURYLE1BQU07OzJGQUNsQix1QkFBdUI7a0JBRG5DLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQWdCaEMsTUFBTSxPQUFPLDJCQUEyQjtJQUM1QixNQUFNLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFaEQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFrQixFQUFFLE1BQWMsRUFBRSxlQUF5QixRQUFRO1FBQ2xGLE1BQU0sT0FBTyxHQUFHLEVBQUMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckMsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXBELElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNuQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUNqRSxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDNUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDdkQ7U0FDRjtJQUNILENBQUM7dUdBaEJVLDJCQUEyQjsyR0FBM0IsMkJBQTJCLGNBRGYsTUFBTTs7MkZBQ2xCLDJCQUEyQjtrQkFEdkMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9uXCI7XG5pbXBvcnQgeyBpbmplY3RFZmZlY3RSZWR1Y2VyIH0gZnJvbSBcIi4vZWZmZWN0XCI7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nQXRvbWljQWN0aW9uTG9nZ2VyIHtcbiAgbG9nKGFjdGlvbjogQWN0aW9uLCBzY29wZTogc3RyaW5nID0gJ2RlZmF1bHQnKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhhY3Rpb24sIHNjb3BlKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ0F0b21pY1Jvb3RBY3Rpb25TdG9yZSB7XG4gIHByb3RlY3RlZCBsb2dnZXIgPSBpbmplY3QoTmdBdG9taWNBY3Rpb25Mb2dnZXIpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbnMkID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb24+KCk7XG4gIHJlYWRvbmx5IGFjdGlvbnMkID0gdGhpcy5fYWN0aW9ucyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hY3Rpb25zJC5zdWJzY3JpYmUoYWN0aW9uID0+IHRoaXMubG9nZ2VyLmxvZyhhY3Rpb24sICdyb290JykpO1xuICB9XG5cbiAgZGlzcGF0Y2goYWN0aW9uOiBBY3Rpb24pIHtcbiAgICB0aGlzLl9hY3Rpb25zJC5lbWl0KGFjdGlvbik7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdBdG9taWNJbmplY3RvckFjdGlvblN0b3JlIHtcbiAgcHJvdGVjdGVkIGxvZ2dlciA9IGluamVjdChOZ0F0b21pY0FjdGlvbkxvZ2dlcik7XG5cbiAgYXN5bmMgZGlzcGF0Y2goaW5qZWN0b3I6IEluamVjdG9yLCBhY3Rpb246IEFjdGlvbiwgaG9zdEluamVjdG9yOiBJbmplY3RvciA9IGluamVjdG9yKSB7XG4gICAgY29uc3QgX2FjdGlvbiA9IHsuLi5hY3Rpb24sIG1ldGE6IHsgaW5qZWN0b3IgfX07XG4gICAgdGhpcy5sb2dnZXIubG9nKF9hY3Rpb24sICdpbmplY3RvcicpO1xuXG4gICAgY29uc3QgcmVkdWNlciA9IGluamVjdEVmZmVjdFJlZHVjZXIoaW5qZWN0b3IpO1xuICAgIGNvbnN0IGVmZmVjdCA9IGF3YWl0IHJlZHVjZXIoX2FjdGlvbiwgaG9zdEluamVjdG9yKTtcblxuICAgIGlmIChlZmZlY3QuZGlzcGF0Y2gpIHtcbiAgICAgIGNvbnN0IGluamVjdG9yXyA9IGluamVjdG9yLmdldChJbmplY3RvciwgbnVsbCwge3NraXBTZWxmOiB0cnVlfSk7XG4gICAgICBpZiAoaW5qZWN0b3JfICYmIGluamVjdG9yXyAhPT0gSW5qZWN0b3IuTlVMTCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRpc3BhdGNoKGluamVjdG9yXywgX2FjdGlvbiwgaG9zdEluamVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iXX0=
|
package/esm2022/lib/effect.mjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { Injectable, InjectionToken, Injector, inject, runInInjectionContext } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class EffectMap extends Map {
|
|
4
|
-
get(key, scope = '
|
|
4
|
+
get(key, scope = 'host') {
|
|
5
5
|
return super.get(this.makeKey(key, scope));
|
|
6
6
|
}
|
|
7
7
|
set(key, value) {
|
|
8
8
|
return super.set(this.makeKey(key, value.props.scope), value);
|
|
9
9
|
}
|
|
10
|
-
has(key, scope = '
|
|
10
|
+
has(key, scope = 'host') {
|
|
11
11
|
return super.has(this.makeKey(key, scope));
|
|
12
12
|
}
|
|
13
|
-
makeKey(key, scope = '
|
|
13
|
+
makeKey(key, scope = 'host') {
|
|
14
14
|
return `[${scope}]#${key}`;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
export function Effect(id, { dispatch = false, scope = '
|
|
17
|
+
export function Effect(id, { dispatch = false, scope = 'host', accessor = (action) => action.payload, } = {}) {
|
|
18
18
|
return function (target, propertyKey, descriptor) {
|
|
19
19
|
target['_effectMap'] ??= new EffectMap();
|
|
20
20
|
target['_effectMap'].set(id, { key: propertyKey, props: { dispatch, scope, accessor } });
|
|
@@ -34,8 +34,8 @@ export function provideEffect(ActionIds, _effectFactory, options = { dispatch: f
|
|
|
34
34
|
deps: [Injector]
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
export function injectEffectEntries() {
|
|
38
|
-
return
|
|
37
|
+
export function injectEffectEntries(injector = inject(Injector)) {
|
|
38
|
+
return injector.get(EFFECT_ENTRY, null, { optional: true }) ?? [];
|
|
39
39
|
}
|
|
40
40
|
function buildEffectEntryMap(injector, effectEntries) {
|
|
41
41
|
const effectEntryMap = new Map();
|
|
@@ -58,7 +58,7 @@ export class EffectReducer {
|
|
|
58
58
|
await runInInjectionContext(this.injector, () => {
|
|
59
59
|
return entry?.effect()(action.payload, { injector: this.injector });
|
|
60
60
|
});
|
|
61
|
-
return
|
|
61
|
+
return entry?.options ?? { dispatch: false };
|
|
62
62
|
}
|
|
63
63
|
return { dispatch: true };
|
|
64
64
|
}
|
|
@@ -68,19 +68,18 @@ export class EffectReducer {
|
|
|
68
68
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: EffectReducer, decorators: [{
|
|
69
69
|
type: Injectable
|
|
70
70
|
}] });
|
|
71
|
-
export function injectEffectReducer() {
|
|
72
|
-
const
|
|
73
|
-
const effectEntries = injectEffectEntries();
|
|
71
|
+
export function injectEffectReducer(injector = inject(Injector)) {
|
|
72
|
+
const effectEntries = injectEffectEntries(injector);
|
|
74
73
|
const effectEntryMap = buildEffectEntryMap(injector, effectEntries);
|
|
75
|
-
return async (action) => {
|
|
74
|
+
return async (action, hostInjector) => {
|
|
76
75
|
const entry = effectEntryMap.get(action.id);
|
|
77
76
|
if (entry) {
|
|
78
|
-
await runInInjectionContext(
|
|
79
|
-
return entry?.effect()(action.payload, { injector
|
|
77
|
+
await runInInjectionContext(hostInjector, () => {
|
|
78
|
+
return entry?.effect()(action.payload, { injector });
|
|
80
79
|
});
|
|
81
|
-
return
|
|
80
|
+
return { dispatch: false };
|
|
82
81
|
}
|
|
83
82
|
return { dispatch: true };
|
|
84
83
|
};
|
|
85
84
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvZWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBWSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzlHLE1BQU0sT0FBTyxTQUFVLFNBQVEsR0FBOEM7SUFDbEUsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUN6QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUEyQztRQUNuRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUN6QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUM1QyxPQUFPLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsRUFBVSxFQUFFLEVBQ2pDLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLEtBQUssR0FBRyxTQUFTLEVBQ2pCLFFBQVEsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sTUFDckIsRUFBRTtJQUMxQixPQUFPLFVBQVUsTUFBVyxFQUFFLFdBQW1CLEVBQUUsVUFBOEI7UUFDL0UsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUMsQ0FBQztBQUNKLENBQUM7QUFtQkQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFjLGNBQWMsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sVUFBVSxhQUFhLENBQzNCLFNBQTRCLEVBQzVCLGNBQXNELEVBQ3RELFVBQWlDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQztJQUVuRCxPQUFPO1FBQ04sT0FBTyxFQUFFLFlBQVk7UUFDckIsVUFBVSxFQUFFLENBQUMsUUFBa0IsRUFBRSxFQUFFO1lBQy9CLE1BQU0sYUFBYSxHQUFHLENBQUMsWUFBc0IsRUFBRSxFQUFFO2dCQUMvQyxPQUFPLHFCQUFxQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM3RSxDQUFDLENBQUM7WUFDRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUQsQ0FBQztRQUNILEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDO0tBQ2hCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQjtJQUNsQyxPQUFPLE1BQU0sQ0FBZ0IsWUFBWSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BFLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLFFBQWtCLEVBQUUsYUFBNEI7SUFDM0UsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQW9FLENBQUM7SUFFbkcsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUU7UUFDakMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pGLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO0tBQ0Y7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBR0QsTUFBTSxPQUFPLGFBQWE7SUFDZixRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLGFBQWEsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3JDLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsRixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQWM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDOUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sSUFBSSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQztTQUN6RTtRQUNELE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDM0IsQ0FBQzt1R0FkVyxhQUFhOzJHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7O0FBa0JYLE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixFQUFFLENBQUM7SUFDM0MsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXBFLE9BQU8sS0FBSyxFQUFFLE1BQWMsRUFBRSxFQUFFO1FBQzlCLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sSUFBSSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQztTQUNwRTtRQUNELE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFBO0FBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgUHJvdmlkZXIsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuL2FjdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVmZmVjdFByb3BzIHtcbiAgZGlzcGF0Y2g6IGJvb2xlYW47XG4gIHNjb3BlOiBzdHJpbmc7XG4gIGFjY2Vzc29yOiAoYWN0aW9uOiBBY3Rpb24pID0+IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEVmZmVjdE1hcCBleHRlbmRzIE1hcDxzdHJpbmcsIHtrZXk6IHN0cmluZywgcHJvcHM6IEVmZmVjdFByb3BzfT4ge1xuICBvdmVycmlkZSBnZXQoa2V5OiBzdHJpbmcsIHNjb3BlID0gJ2RlZmF1bHQnKTogeyBrZXk6IHN0cmluZzsgcHJvcHM6IEVmZmVjdFByb3BzOyB9IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0KHRoaXMubWFrZUtleShrZXksIHNjb3BlKSkhOyBcbiAgfVxuXG4gIG92ZXJyaWRlIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHsga2V5OiBzdHJpbmc7IHByb3BzOiBFZmZlY3RQcm9wczsgfSk6IHRoaXMge1xuICAgIHJldHVybiBzdXBlci5zZXQodGhpcy5tYWtlS2V5KGtleSwgdmFsdWUucHJvcHMuc2NvcGUpLCB2YWx1ZSk7XG4gIH1cblxuICBvdmVycmlkZSBoYXMoa2V5OiBzdHJpbmcsIHNjb3BlID0gJ2RlZmF1bHQnKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmhhcyh0aGlzLm1ha2VLZXkoa2V5LCBzY29wZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYWtlS2V5KGtleTogc3RyaW5nLCBzY29wZSA9ICdkZWZhdWx0Jykge1xuICAgIHJldHVybiBgWyR7c2NvcGV9XSMke2tleX1gO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFZmZlY3QoaWQ6IHN0cmluZywge1xuICBkaXNwYXRjaCA9IGZhbHNlLFxuICBzY29wZSA9ICdkZWZhdWx0JyxcbiAgYWNjZXNzb3IgPSAoYWN0aW9uOiBBY3Rpb24pID0+IGFjdGlvbi5wYXlsb2FkLFxufTogUGFydGlhbDxFZmZlY3RQcm9wcz4gPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICB0YXJnZXRbJ19lZmZlY3RNYXAnXSA/Pz0gbmV3IEVmZmVjdE1hcCgpO1xuICAgIHRhcmdldFsnX2VmZmVjdE1hcCddLnNldChpZCwge2tleTogcHJvcGVydHlLZXksIHByb3BzOiB7ZGlzcGF0Y2gsIHNjb3BlLCBhY2Nlc3Nvcn19KTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZmZlY3RGdW5jdGlvbk9wdGlvbnMge1xuICBkaXNwYXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWZmZWN0Q29udGV4dCB7XG4gIGluamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbmV4cG9ydCB0eXBlIEVmZmVjdEZ1bmN0aW9uID0gKHBheWxvYWQ/OiBhbnksIGNvbnRleHQ/OiBFZmZlY3RDb250ZXh0KSA9PiBhbnkgfCBQcm9taXNlPGFueT47XG5leHBvcnQgdHlwZSBFZmZlY3RGdW5jdGlvbkZhY3RvcnkgPSAoaG9zdEluamVjdG9yPzogSW5qZWN0b3IpID0+IEVmZmVjdEZ1bmN0aW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVmZmVjdEVudHJ5IHtcblx0YWN0aW9uSWRzOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgZWZmZWN0RmFjdG9yeT86IEVmZmVjdEZ1bmN0aW9uRmFjdG9yeTtcbiAgb3B0aW9ucz86IEVmZmVjdEZ1bmN0aW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IEVGRkVDVF9FTlRSWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFZmZlY3RFbnRyeT4oJ0VGRkVDVF9FTlRSWScpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUVmZmVjdChcbiAgQWN0aW9uSWRzOiBzdHJpbmdbXSB8IHN0cmluZyxcbiAgX2VmZmVjdEZhY3Rvcnk6IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEVmZmVjdEZ1bmN0aW9uLFxuICBvcHRpb25zOiBFZmZlY3RGdW5jdGlvbk9wdGlvbnMgPSB7ZGlzcGF0Y2g6IGZhbHNlfSxcbik6IFByb3ZpZGVyIHtcblx0cmV0dXJuIHtcblx0XHRwcm92aWRlOiBFRkZFQ1RfRU5UUlksXG5cdFx0dXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgICAgY29uc3QgZWZmZWN0RmFjdG9yeSA9IChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaG9zdEluamVjdG9yLCAoKSA9PiBfZWZmZWN0RmFjdG9yeShpbmplY3RvcikpO1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7IGFjdGlvbklkczogQWN0aW9uSWRzLCBlZmZlY3RGYWN0b3J5LCBvcHRpb25zIH07XG4gICAgfSxcblx0XHRtdWx0aTogdHJ1ZSxcblx0XHRkZXBzOiBbSW5qZWN0b3JdXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RFZmZlY3RFbnRyaWVzKCk6IEVmZmVjdEVudHJ5W10ge1xuXHRyZXR1cm4gaW5qZWN0PEVmZmVjdEVudHJ5W10+KEVGRkVDVF9FTlRSWSwge29wdGlvbmFsOiB0cnVlfSkgPz8gW107XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRWZmZWN0RW50cnlNYXAoaW5qZWN0b3I6IEluamVjdG9yLCBlZmZlY3RFbnRyaWVzOiBFZmZlY3RFbnRyeVtdKSB7XG4gIGNvbnN0IGVmZmVjdEVudHJ5TWFwID0gbmV3IE1hcDxzdHJpbmcsIHtlZmZlY3Q6IEVmZmVjdEZ1bmN0aW9uLCBvcHRpb25zOiBFZmZlY3RGdW5jdGlvbk9wdGlvbnN9PigpO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZWZmZWN0RW50cmllcykge1xuICAgIGNvbnN0IGlkcyA9IEFycmF5LmlzQXJyYXkoZW50cnkuYWN0aW9uSWRzKSA/IGVudHJ5LmFjdGlvbklkcyA6IFtlbnRyeS5hY3Rpb25JZHNdO1xuICAgIGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XG4gICAgICBjb25zdCBlZmZlY3QgPSAoKSA9PiBlbnRyeS5lZmZlY3RGYWN0b3J5KGluamVjdG9yKTtcbiAgICAgIGVmZmVjdEVudHJ5TWFwLnNldChpZCwgeyBlZmZlY3QsIG9wdGlvbnM6IGVudHJ5Lm9wdGlvbnMgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVmZmVjdEVudHJ5TWFwO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRWZmZWN0UmVkdWNlciB7XG4gIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0cmVhZG9ubHkgZWZmZWN0RW50cmllcyA9IGluamVjdEVmZmVjdEVudHJpZXMoKTtcbiAgcmVhZG9ubHkgZWZmZWN0RW50cnlNYXAgPSBidWlsZEVmZmVjdEVudHJ5TWFwKHRoaXMuaW5qZWN0b3IsIHRoaXMuZWZmZWN0RW50cmllcyk7XG5cblx0YXN5bmMgcmVkdWNlKGFjdGlvbjogQWN0aW9uKTogUHJvbWlzZTxFZmZlY3RGdW5jdGlvbk9wdGlvbnM+IHtcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gZW50cnk/LmVmZmVjdCgpKGFjdGlvbi5wYXlsb2FkLCB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk/Lm9wdGlvbnMgPz8ge2Rpc3BhdGNoOiBmYWxzZX07XG4gICAgfVxuICAgIHJldHVybiB7ZGlzcGF0Y2g6IHRydWV9O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RFZmZlY3RSZWR1Y2VyKCkge1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdGNvbnN0IGVmZmVjdEVudHJpZXMgPSBpbmplY3RFZmZlY3RFbnRyaWVzKCk7XG4gIGNvbnN0IGVmZmVjdEVudHJ5TWFwID0gYnVpbGRFZmZlY3RFbnRyeU1hcChpbmplY3RvciwgZWZmZWN0RW50cmllcyk7XG5cbiAgcmV0dXJuIGFzeW5jIChhY3Rpb246IEFjdGlvbikgPT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGVudHJ5Py5lZmZlY3QoKShhY3Rpb24ucGF5bG9hZCwge2luamVjdG9yOiBpbmplY3Rvcn0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk/Lm9wdGlvbnMgPz8ge2Rpc3BhdGNoOiBmYWxzZX07XG4gICAgfVxuICAgIHJldHVybiB7ZGlzcGF0Y2g6IHRydWV9O1xuXHR9XG59XG4iXX0=
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvZWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBWSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzlHLE1BQU0sT0FBTyxTQUFVLFNBQVEsR0FBOEM7SUFDbEUsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsTUFBTTtRQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUEyQztRQUNuRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsTUFBTTtRQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsTUFBTTtRQUN6QyxPQUFPLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsRUFBVSxFQUFFLEVBQ2pDLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLEtBQUssR0FBRyxNQUFNLEVBQ2QsUUFBUSxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENB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QyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxLQUFLLEVBQUUsT0FBTyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQzlDO1FBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO3VHQWRXLGFBQWE7MkdBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVTs7QUFrQlgsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFdBQXFCLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDeEUsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXBFLE9BQU8sS0FBSyxFQUFFLE1BQWMsRUFBRSxZQUFzQixFQUFnQyxFQUFFO1FBQ3BGLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO2dCQUM3QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2RCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDNUI7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUMsQ0FBQTtBQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFByb3ZpZGVyLCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBFZmZlY3RQcm9wcyB7XG4gIGRpc3BhdGNoOiBib29sZWFuO1xuICBzY29wZTogc3RyaW5nO1xuICBhY2Nlc3NvcjogKGFjdGlvbjogQWN0aW9uKSA9PiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBFZmZlY3RNYXAgZXh0ZW5kcyBNYXA8c3RyaW5nLCB7a2V5OiBzdHJpbmcsIHByb3BzOiBFZmZlY3RQcm9wc30+IHtcbiAgb3ZlcnJpZGUgZ2V0KGtleTogc3RyaW5nLCBzY29wZSA9ICdob3N0Jyk6IHsga2V5OiBzdHJpbmc7IHByb3BzOiBFZmZlY3RQcm9wczsgfSB7XG4gICAgcmV0dXJuIHN1cGVyLmdldCh0aGlzLm1ha2VLZXkoa2V5LCBzY29wZSkpITsgXG4gIH1cblxuICBvdmVycmlkZSBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiB7IGtleTogc3RyaW5nOyBwcm9wczogRWZmZWN0UHJvcHM7IH0pOiB0aGlzIHtcbiAgICByZXR1cm4gc3VwZXIuc2V0KHRoaXMubWFrZUtleShrZXksIHZhbHVlLnByb3BzLnNjb3BlKSwgdmFsdWUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgaGFzKGtleTogc3RyaW5nLCBzY29wZSA9ICdob3N0Jyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5oYXModGhpcy5tYWtlS2V5KGtleSwgc2NvcGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUtleShrZXk6IHN0cmluZywgc2NvcGUgPSAnaG9zdCcpIHtcbiAgICByZXR1cm4gYFske3Njb3BlfV0jJHtrZXl9YDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRWZmZWN0KGlkOiBzdHJpbmcsIHtcbiAgZGlzcGF0Y2ggPSBmYWxzZSxcbiAgc2NvcGUgPSAnaG9zdCcsXG4gIGFjY2Vzc29yID0gKGFjdGlvbjogQWN0aW9uKSA9PiBhY3Rpb24ucGF5bG9hZCxcbn06IFBhcnRpYWw8RWZmZWN0UHJvcHM+ID0ge30pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgdGFyZ2V0WydfZWZmZWN0TWFwJ10gPz89IG5ldyBFZmZlY3RNYXAoKTtcbiAgICB0YXJnZXRbJ19lZmZlY3RNYXAnXS5zZXQoaWQsIHtrZXk6IHByb3BlcnR5S2V5LCBwcm9wczoge2Rpc3BhdGNoLCBzY29wZSwgYWNjZXNzb3J9fSk7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWZmZWN0RnVuY3Rpb25PcHRpb25zIHtcbiAgZGlzcGF0Y2g/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVmZmVjdENvbnRleHQge1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xufVxuXG5leHBvcnQgdHlwZSBFZmZlY3RGdW5jdGlvbiA9IChwYXlsb2FkPzogYW55LCBjb250ZXh0PzogRWZmZWN0Q29udGV4dCkgPT4gYW55IHwgUHJvbWlzZTxhbnk+O1xuZXhwb3J0IHR5cGUgRWZmZWN0RnVuY3Rpb25GYWN0b3J5ID0gKGhvc3RJbmplY3Rvcj86IEluamVjdG9yKSA9PiBFZmZlY3RGdW5jdGlvbjtcblxuZXhwb3J0IGludGVyZmFjZSBFZmZlY3RFbnRyeSB7XG5cdGFjdGlvbklkczogc3RyaW5nIHwgc3RyaW5nW107XG4gIGVmZmVjdEZhY3Rvcnk/OiBFZmZlY3RGdW5jdGlvbkZhY3Rvcnk7XG4gIG9wdGlvbnM/OiBFZmZlY3RGdW5jdGlvbk9wdGlvbnM7XG59XG5cbmV4cG9ydCBjb25zdCBFRkZFQ1RfRU5UUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48RWZmZWN0RW50cnk+KCdFRkZFQ1RfRU5UUlknKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVFZmZlY3QoXG4gIEFjdGlvbklkczogc3RyaW5nW10gfCBzdHJpbmcsXG4gIF9lZmZlY3RGYWN0b3J5OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBFZmZlY3RGdW5jdGlvbixcbiAgb3B0aW9uczogRWZmZWN0RnVuY3Rpb25PcHRpb25zID0ge2Rpc3BhdGNoOiBmYWxzZX0sXG4pOiBQcm92aWRlciB7XG5cdHJldHVybiB7XG5cdFx0cHJvdmlkZTogRUZGRUNUX0VOVFJZLFxuXHRcdHVzZUZhY3Rvcnk6IChpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICAgIGNvbnN0IGVmZmVjdEZhY3RvcnkgPSAoaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGhvc3RJbmplY3RvciwgKCkgPT4gX2VmZmVjdEZhY3RvcnkoaW5qZWN0b3IpKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBhY3Rpb25JZHM6IEFjdGlvbklkcywgZWZmZWN0RmFjdG9yeSwgb3B0aW9ucyB9O1xuICAgIH0sXG5cdFx0bXVsdGk6IHRydWUsXG5cdFx0ZGVwczogW0luamVjdG9yXVxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RWZmZWN0RW50cmllcyhpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKTogRWZmZWN0RW50cnlbXSB7XG5cdHJldHVybiBpbmplY3Rvci5nZXQ8RWZmZWN0RW50cnlbXT4oRUZGRUNUX0VOVFJZLCBudWxsLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IFtdO1xufVxuXG5mdW5jdGlvbiBidWlsZEVmZmVjdEVudHJ5TWFwKGluamVjdG9yOiBJbmplY3RvciwgZWZmZWN0RW50cmllczogRWZmZWN0RW50cnlbXSkge1xuICBjb25zdCBlZmZlY3RFbnRyeU1hcCA9IG5ldyBNYXA8c3RyaW5nLCB7ZWZmZWN0OiBFZmZlY3RGdW5jdGlvbiwgb3B0aW9uczogRWZmZWN0RnVuY3Rpb25PcHRpb25zfT4oKTtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVmZmVjdEVudHJpZXMpIHtcbiAgICBjb25zdCBpZHMgPSBBcnJheS5pc0FycmF5KGVudHJ5LmFjdGlvbklkcykgPyBlbnRyeS5hY3Rpb25JZHMgOiBbZW50cnkuYWN0aW9uSWRzXTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIGlkcykge1xuICAgICAgY29uc3QgZWZmZWN0ID0gKCkgPT4gZW50cnkuZWZmZWN0RmFjdG9yeShpbmplY3Rvcik7XG4gICAgICBlZmZlY3RFbnRyeU1hcC5zZXQoaWQsIHsgZWZmZWN0LCBvcHRpb25zOiBlbnRyeS5vcHRpb25zIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlZmZlY3RFbnRyeU1hcDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVmZmVjdFJlZHVjZXIge1xuICByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdHJlYWRvbmx5IGVmZmVjdEVudHJpZXMgPSBpbmplY3RFZmZlY3RFbnRyaWVzKCk7XG4gIHJlYWRvbmx5IGVmZmVjdEVudHJ5TWFwID0gYnVpbGRFZmZlY3RFbnRyeU1hcCh0aGlzLmluamVjdG9yLCB0aGlzLmVmZmVjdEVudHJpZXMpO1xuXG5cdGFzeW5jIHJlZHVjZShhY3Rpb246IEFjdGlvbik6IFByb21pc2U8RWZmZWN0RnVuY3Rpb25PcHRpb25zPiB7XG4gICAgY29uc3QgZW50cnkgPSB0aGlzLmVmZmVjdEVudHJ5TWFwLmdldChhY3Rpb24uaWQpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGVudHJ5Py5lZmZlY3QoKShhY3Rpb24ucGF5bG9hZCwgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVudHJ5Py5vcHRpb25zID8/IHsgZGlzcGF0Y2g6IGZhbHNlIH07XG4gICAgfVxuICAgIHJldHVybiB7IGRpc3BhdGNoOiB0cnVlIH07XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEVmZmVjdFJlZHVjZXIoaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKSkge1xuXHRjb25zdCBlZmZlY3RFbnRyaWVzID0gaW5qZWN0RWZmZWN0RW50cmllcyhpbmplY3Rvcik7XG4gIGNvbnN0IGVmZmVjdEVudHJ5TWFwID0gYnVpbGRFZmZlY3RFbnRyeU1hcChpbmplY3RvciwgZWZmZWN0RW50cmllcyk7XG5cbiAgcmV0dXJuIGFzeW5jIChhY3Rpb246IEFjdGlvbiwgaG9zdEluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8e2Rpc3BhdGNoOiBib29sZWFufT4gPT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQoaG9zdEluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBlbnRyeT8uZWZmZWN0KCkoYWN0aW9uLnBheWxvYWQsIHsgaW5qZWN0b3IgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IGRpc3BhdGNoOiBmYWxzZSB9O1xuICAgIH1cbiAgICByZXR1cm4geyBkaXNwYXRjaDogdHJ1ZSB9O1xuXHR9XG59XG4iXX0=
|
package/esm2022/lib/input.mjs
CHANGED
|
@@ -16,4 +16,4 @@ export function applyToInput(instance, propName, value) {
|
|
|
16
16
|
instance[propName] = value;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvcmUvc3JjL2xpYi9pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUEyQixNQUFNLGtDQUFrQyxDQUFDO0FBb0JuRixTQUFTLHNCQUFzQixDQUM3QixRQUFXLEVBQ1gsZUFBeUQsRUFDekQsV0FBbUIsRUFDbkIsS0FBYztJQUVkLElBQUksZUFBZSxLQUFLLElBQUksRUFBRTtRQUM1QixlQUFlLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2pFO1NBQU07UUFDSixRQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUN4QztBQUNILENBQUM7QUFJRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixRQUFXLEVBQ1gsUUFBVyxFQUNYLEtBQTRCO0lBRTdCLE1BQU0sZUFBZSxHQUFJLFFBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFzQyxDQUFDO0lBQ2pHLElBQUksZUFBZSxLQUFLLElBQUksRUFBRTtRQUM3QixlQUFlLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2hFO1NBQU07UUFDTCxRQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUNwQztBQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dFNpZ25hbCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTSUdOQUwsIFNpZ25hbE5vZGUsIHNpZ25hbFNldEZuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9wcmltaXRpdmVzL3NpZ25hbHMnO1xuXG5pbnRlcmZhY2UgSW5wdXRTaWduYWxOb2RlPFQsIFRyYW5zZm9ybVQ+IGV4dGVuZHMgU2lnbmFsTm9kZTxUPiB7XG4gIC8qKlxuICAgKiBVc2VyLWNvbmZpZ3VyZWQgdHJhbnNmb3JtIHRoYXQgd2lsbCBydW4gd2hlbmV2ZXIgYSBuZXcgdmFsdWUgaXMgYXBwbGllZFxuICAgKiB0byB0aGUgaW5wdXQgc2lnbmFsIG5vZGUuXG4gICAqL1xuICB0cmFuc2Zvcm1GbjogKCh2YWx1ZTogVHJhbnNmb3JtVCkgPT4gVCkgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgYSBuZXcgdmFsdWUgdG8gdGhlIGlucHV0IHNpZ25hbC4gRXhwZWN0cyB0cmFuc2Zvcm1zIHRvIGJlIHJ1blxuICAgKiBtYW51YWxseSBiZWZvcmUuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBmcmFtZXdvcmsgcnVudGltZSBjb2RlIHdoZW5ldmVyIGEgYmluZGluZ1xuICAgKiBjaGFuZ2VzLiBUaGUgdmFsdWUgY2FuIGluIHByYWN0aWNlIGJlIGFueXRoaW5nIGF0IHJ1bnRpbWUsIGJ1dCBmb3IgdHlwaW5nXG4gICAqIHB1cnBvc2VzIHdlIGFzc3VtZSBpdCdzIGEgdmFsaWQgYFRgIHZhbHVlLiBUeXBlLWNoZWNraW5nIHdpbGwgZW5mb3JjZSB0aGF0LlxuICAgKi9cbiAgYXBwbHlWYWx1ZVRvSW5wdXRTaWduYWw8VCwgVHJhbnNmb3JtVD4obm9kZTogSW5wdXRTaWduYWxOb2RlPFQsIFRyYW5zZm9ybVQ+LCB2YWx1ZTogVCk6IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIGFwcGx5VmFsdWVUb0lucHV0RmllbGQ8VD4oXG4gIGluc3RhbmNlOiBULFxuICBpbnB1dFNpZ25hbE5vZGU6IG51bGwgfCBJbnB1dFNpZ25hbE5vZGU8dW5rbm93biwgdW5rbm93bj4sXG4gIHByaXZhdGVOYW1lOiBzdHJpbmcsXG4gIHZhbHVlOiB1bmtub3duLFxuKSB7XG4gIGlmIChpbnB1dFNpZ25hbE5vZGUgIT09IG51bGwpIHtcbiAgICBpbnB1dFNpZ25hbE5vZGUuYXBwbHlWYWx1ZVRvSW5wdXRTaWduYWwoaW5wdXRTaWduYWxOb2RlLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgKGluc3RhbmNlIGFzIGFueSlbcHJpdmF0ZU5hbWVdID0gdmFsdWU7XG4gIH1cbn1cblxudHlwZSBJbnB1dFNpZ25hbFR5cGU8VD4gPSBUIGV4dGVuZHMgSW5wdXRTaWduYWw8aW5mZXIgVT4gPyBVIDogbmV2ZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVRvSW5wdXQ8VCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICBpbnN0YW5jZTogVCxcbiAgcHJvcE5hbWU6IEssXG4gIHZhbHVlOiBJbnB1dFNpZ25hbFR5cGU8VFtLXT4sXG4pIHtcblx0Y29uc3QgaW5wdXRTaWduYWxOb2RlID0gKGluc3RhbmNlIGFzIGFueSlbcHJvcE5hbWVdW1NJR05BTF0gYXMgSW5wdXRTaWduYWxOb2RlPHVua25vd24sIHVua25vd24+O1xuXHRpZiAoaW5wdXRTaWduYWxOb2RlICE9PSBudWxsKSB7XG5cdFx0aW5wdXRTaWduYWxOb2RlLmFwcGx5VmFsdWVUb0lucHV0U2lnbmFsKGlucHV0U2lnbmFsTm9kZSwgdmFsdWUpO1xuXHR9IGVsc2Uge1xuXHRcdChpbnN0YW5jZSBhcyBhbnkpW3Byb3BOYW1lXSA9IHZhbHVlO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,45 +1,61 @@
|
|
|
1
|
-
import { DestroyRef, Directive, ElementRef, inject } from "@angular/core";
|
|
1
|
+
import { ApplicationRef, DestroyRef, Directive, ElementRef, inject, Injector } from "@angular/core";
|
|
2
2
|
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
3
3
|
import { InjectableComponent } from "./injectable-component";
|
|
4
|
-
import { EffectMap
|
|
5
|
-
import { NgAtomicRootActionStore } from "./action-store";
|
|
4
|
+
import { EffectMap } from "./effect";
|
|
5
|
+
import { NgAtomicActionLogger, NgAtomicInjectorActionStore, NgAtomicRootActionStore } from "./action-store";
|
|
6
6
|
import { DebugDirective } from './debug';
|
|
7
|
+
import { ActivatedRoute } from "@angular/router";
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "./debug/debug.directive";
|
|
10
|
+
function injectIsRouteComponent(component) {
|
|
11
|
+
const route = inject(ActivatedRoute);
|
|
12
|
+
const currentComponent = route.snapshot.component;
|
|
13
|
+
return currentComponent === component.constructor;
|
|
14
|
+
}
|
|
9
15
|
export class NgAtomicComponent extends InjectableComponent {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
root = inject(NgAtomicRootActionStore);
|
|
16
|
+
#rootActionStore = inject(NgAtomicRootActionStore);
|
|
17
|
+
#injectorActionStore = inject(NgAtomicInjectorActionStore);
|
|
13
18
|
#destroyRef = inject(DestroyRef);
|
|
14
19
|
#el = inject(ElementRef);
|
|
20
|
+
#injector = inject(Injector);
|
|
21
|
+
#logger = inject(NgAtomicActionLogger);
|
|
22
|
+
#isRouteComponent = injectIsRouteComponent(this);
|
|
23
|
+
#appRef = inject(ApplicationRef);
|
|
24
|
+
get selector() {
|
|
25
|
+
return this.#el.nativeElement.tagName.toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
get #isBootstrapComponent() {
|
|
28
|
+
return this.#appRef.components.some(component => component.instance === this);
|
|
29
|
+
}
|
|
15
30
|
constructor() {
|
|
16
31
|
super();
|
|
17
|
-
this.
|
|
18
|
-
this.effect(action, 'root');
|
|
19
|
-
});
|
|
32
|
+
this.#rootActionStore.actions$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(action => this.effect(action, 'root'));
|
|
20
33
|
}
|
|
21
|
-
async dispatch(action, scope = '
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
async dispatch(action, scope = 'host', componentId = null) {
|
|
35
|
+
const _action = { ...action, meta: { componentId, selector: this.selector } };
|
|
36
|
+
this.#logger.log(_action, scope);
|
|
37
|
+
const dispatch = await this.effect(_action, scope);
|
|
38
|
+
if (dispatch) {
|
|
39
|
+
if (scope === 'root') {
|
|
40
|
+
return this.#rootActionStore.dispatch(_action);
|
|
41
|
+
}
|
|
42
|
+
else if (this.#isRouteComponent || this.#isBootstrapComponent) {
|
|
43
|
+
return this.#injectorActionStore.dispatch(this.#injector, _action);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return super.dispatch(_action);
|
|
47
|
+
}
|
|
34
48
|
}
|
|
35
49
|
}
|
|
36
|
-
effect(action, scope = '
|
|
50
|
+
async effect(action, scope = 'host') {
|
|
37
51
|
// MEMO(@nontangent): _effectMapをpropertyに持つとEffectが機能しなくなる
|
|
38
|
-
const
|
|
52
|
+
const effectMap = (this['_effectMap'] ?? new EffectMap());
|
|
53
|
+
const effect = effectMap.get(action.id, scope);
|
|
39
54
|
if (effect?.key && effect?.props?.scope === scope) {
|
|
40
|
-
this[effect.key](effect.props.accessor(action));
|
|
55
|
+
await this[effect.key](effect.props.accessor(action));
|
|
56
|
+
return !!effect?.props?.dispatch;
|
|
41
57
|
}
|
|
42
|
-
return
|
|
58
|
+
return true;
|
|
43
59
|
}
|
|
44
60
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
45
61
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: NgAtomicComponent, isStandalone: true, usesInheritance: true, hostDirectives: [{ directive: i1.DebugDirective }], ngImport: i0 });
|
|
@@ -53,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
53
69
|
],
|
|
54
70
|
}]
|
|
55
71
|
}], ctorParameters: () => [] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29yZS9zcmMvbGliL25nLWF0b21pYy1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUdqRCxTQUFTLHNCQUFzQixDQUFDLFNBQVM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsV0FBVyxDQUFDO0FBQ3BELENBQUM7QUFRRCxNQUFNLE9BQU8saUJBQTJCLFNBQVEsbUJBQXNCO0lBQ3BFLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25ELG9CQUFvQixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzNELFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMs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QUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUU7d0JBQ2QsY0FBYztxQkFDZjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25cIjtcbmltcG9ydCB7IEluamVjdGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi9pbmplY3RhYmxlLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRWZmZWN0TWFwIH0gZnJvbSBcIi4vZWZmZWN0XCI7XG5pbXBvcnQgeyBOZ0F0b21pY0FjdGlvbkxvZ2dlciwgTmdBdG9taWNJbmplY3RvckFjdGlvblN0b3JlLCBOZ0F0b21pY1Jvb3RBY3Rpb25TdG9yZSB9IGZyb20gXCIuL2FjdGlvbi1zdG9yZVwiO1xuaW1wb3J0IHsgRGVidWdEaXJlY3RpdmUgfSBmcm9tICcuL2RlYnVnJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5cbmZ1bmN0aW9uIGluamVjdElzUm91dGVDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgY29uc3QgY3VycmVudENvbXBvbmVudCA9IHJvdXRlLnNuYXBzaG90LmNvbXBvbmVudDtcbiAgcmV0dXJuIGN1cnJlbnRDb21wb25lbnQgPT09IGNvbXBvbmVudC5jb25zdHJ1Y3Rvcjtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgRGVidWdEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5nQXRvbWljQ29tcG9uZW50PFQgPSBhbnk+IGV4dGVuZHMgSW5qZWN0YWJsZUNvbXBvbmVudDxUPiB7XG4gICNyb290QWN0aW9uU3RvcmUgPSBpbmplY3QoTmdBdG9taWNSb290QWN0aW9uU3RvcmUpO1xuICAjaW5qZWN0b3JBY3Rpb25TdG9yZSA9IGluamVjdChOZ0F0b21pY0luamVjdG9yQWN0aW9uU3RvcmUpO1xuICAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAjbG9nZ2VyID0gaW5qZWN0KE5nQXRvbWljQWN0aW9uTG9nZ2VyKTtcbiAgI2lzUm91dGVDb21wb25lbnQgPSBpbmplY3RJc1JvdXRlQ29tcG9uZW50KHRoaXMpO1xuICAjYXBwUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcblxuXG4gIGdldCBzZWxlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy4jZWwubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBnZXQgI2lzQm9vdHN0cmFwQ29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLiNhcHBSZWYuY29tcG9uZW50cy5zb21lKGNvbXBvbmVudCA9PiBjb21wb25lbnQuaW5zdGFuY2UgPT09IHRoaXMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLiNyb290QWN0aW9uU3RvcmUuYWN0aW9ucyQucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSxcbiAgICApLnN1YnNjcmliZShhY3Rpb24gPT4gdGhpcy5lZmZlY3QoYWN0aW9uLCAncm9vdCcpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc3BhdGNoKFxuICAgIGFjdGlvbjogQWN0aW9uLFxuICAgIHNjb3BlOiBzdHJpbmcgPSAnaG9zdCcsXG4gICAgY29tcG9uZW50SWQ6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBjb25zdCBfYWN0aW9uID0gey4uLmFjdGlvbiwgbWV0YTogeyBjb21wb25lbnRJZCwgc2VsZWN0b3I6IHRoaXMuc2VsZWN0b3IgfX07XG4gICAgdGhpcy4jbG9nZ2VyLmxvZyhfYWN0aW9uLCBzY29wZSk7XG4gICAgY29uc3QgZGlzcGF0Y2ggPSBhd2FpdCB0aGlzLmVmZmVjdChfYWN0aW9uLCBzY29wZSk7XG5cbiAgICBpZiAoZGlzcGF0Y2gpIHtcbiAgICAgIGlmIChzY29wZSA9PT0gJ3Jvb3QnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNyb290QWN0aW9uU3RvcmUuZGlzcGF0Y2goX2FjdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuI2lzUm91dGVDb21wb25lbnQgfHwgdGhpcy4jaXNCb290c3RyYXBDb21wb25lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2luamVjdG9yQWN0aW9uU3RvcmUuZGlzcGF0Y2godGhpcy4jaW5qZWN0b3IsIF9hY3Rpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmRpc3BhdGNoKF9hY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBlZmZlY3QoYWN0aW9uOiBBY3Rpb24sIHNjb3BlID0gJ2hvc3QnKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gTUVNTyhAbm9udGFuZ2VudCk6IF9lZmZlY3RNYXDjgpJwcm9wZXJ0eeOBq+aMgeOBpOOBqEVmZmVjdOOBjOapn+iDveOBl+OBquOBj+OBquOCi1xuICAgIGNvbnN0IGVmZmVjdE1hcDogRWZmZWN0TWFwID0gKHRoaXNbJ19lZmZlY3RNYXAnXSA/PyBuZXcgRWZmZWN0TWFwKCkpO1xuICAgIGNvbnN0IGVmZmVjdCA9IGVmZmVjdE1hcC5nZXQoYWN0aW9uLmlkLCBzY29wZSk7XG4gICAgaWYgKGVmZmVjdD8ua2V5ICYmIGVmZmVjdD8ucHJvcHM/LnNjb3BlID09PSBzY29wZSkge1xuICAgICAgYXdhaXQgdGhpc1tlZmZlY3Qua2V5XShlZmZlY3QucHJvcHMuYWNjZXNzb3IoYWN0aW9uKSk7XG4gICAgICByZXR1cm4gISFlZmZlY3Q/LnByb3BzPy5kaXNwYXRjaDtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,53 +1,25 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { InjectionToken, runInInjectionContext, Injector, inject, Injectable, EventEmitter, isSignal, computed, Pipe, PLATFORM_ID, ViewContainerRef, DestroyRef, ElementRef, input, reflectComponentType, Directive, Output, ApplicationRef } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { isPlatformBrowser } from '@angular/common';
|
|
5
5
|
import { SIGNAL } from '@angular/core/primitives/signals';
|
|
6
|
-
|
|
7
|
-
class NgAtomicRootActionStore {
|
|
8
|
-
actions$ = new EventEmitter();
|
|
9
|
-
constructor() {
|
|
10
|
-
this.actions$.subscribe(action => this.log(action, 'root'));
|
|
11
|
-
}
|
|
12
|
-
dispatch(action) {
|
|
13
|
-
this.actions$.emit(action);
|
|
14
|
-
}
|
|
15
|
-
log(action, scope = 'default') {
|
|
16
|
-
console.debug(action, scope);
|
|
17
|
-
}
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
19
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, providedIn: 'root' });
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, decorators: [{
|
|
22
|
-
type: Injectable,
|
|
23
|
-
args: [{ providedIn: 'root' }]
|
|
24
|
-
}], ctorParameters: () => [] });
|
|
25
|
-
|
|
26
|
-
function resolveActions(actions, ...args) {
|
|
27
|
-
if (typeof actions === 'function') {
|
|
28
|
-
return actions(...args);
|
|
29
|
-
}
|
|
30
|
-
return actions;
|
|
31
|
-
}
|
|
32
|
-
function wrapActions(actions) {
|
|
33
|
-
return typeof actions === 'function' ? actions : () => actions;
|
|
34
|
-
}
|
|
6
|
+
import { ActivatedRoute } from '@angular/router';
|
|
35
7
|
|
|
36
8
|
class EffectMap extends Map {
|
|
37
|
-
get(key, scope = '
|
|
9
|
+
get(key, scope = 'host') {
|
|
38
10
|
return super.get(this.makeKey(key, scope));
|
|
39
11
|
}
|
|
40
12
|
set(key, value) {
|
|
41
13
|
return super.set(this.makeKey(key, value.props.scope), value);
|
|
42
14
|
}
|
|
43
|
-
has(key, scope = '
|
|
15
|
+
has(key, scope = 'host') {
|
|
44
16
|
return super.has(this.makeKey(key, scope));
|
|
45
17
|
}
|
|
46
|
-
makeKey(key, scope = '
|
|
18
|
+
makeKey(key, scope = 'host') {
|
|
47
19
|
return `[${scope}]#${key}`;
|
|
48
20
|
}
|
|
49
21
|
}
|
|
50
|
-
function Effect(id, { dispatch = false, scope = '
|
|
22
|
+
function Effect(id, { dispatch = false, scope = 'host', accessor = (action) => action.payload, } = {}) {
|
|
51
23
|
return function (target, propertyKey, descriptor) {
|
|
52
24
|
target['_effectMap'] ??= new EffectMap();
|
|
53
25
|
target['_effectMap'].set(id, { key: propertyKey, props: { dispatch, scope, accessor } });
|
|
@@ -67,8 +39,8 @@ function provideEffect(ActionIds, _effectFactory, options = { dispatch: false })
|
|
|
67
39
|
deps: [Injector]
|
|
68
40
|
};
|
|
69
41
|
}
|
|
70
|
-
function injectEffectEntries() {
|
|
71
|
-
return
|
|
42
|
+
function injectEffectEntries(injector = inject(Injector)) {
|
|
43
|
+
return injector.get(EFFECT_ENTRY, null, { optional: true }) ?? [];
|
|
72
44
|
}
|
|
73
45
|
function buildEffectEntryMap(injector, effectEntries) {
|
|
74
46
|
const effectEntryMap = new Map();
|
|
@@ -91,7 +63,7 @@ class EffectReducer {
|
|
|
91
63
|
await runInInjectionContext(this.injector, () => {
|
|
92
64
|
return entry?.effect()(action.payload, { injector: this.injector });
|
|
93
65
|
});
|
|
94
|
-
return
|
|
66
|
+
return entry?.options ?? { dispatch: false };
|
|
95
67
|
}
|
|
96
68
|
return { dispatch: true };
|
|
97
69
|
}
|
|
@@ -101,22 +73,81 @@ class EffectReducer {
|
|
|
101
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: EffectReducer, decorators: [{
|
|
102
74
|
type: Injectable
|
|
103
75
|
}] });
|
|
104
|
-
function injectEffectReducer() {
|
|
105
|
-
const
|
|
106
|
-
const effectEntries = injectEffectEntries();
|
|
76
|
+
function injectEffectReducer(injector = inject(Injector)) {
|
|
77
|
+
const effectEntries = injectEffectEntries(injector);
|
|
107
78
|
const effectEntryMap = buildEffectEntryMap(injector, effectEntries);
|
|
108
|
-
return async (action) => {
|
|
79
|
+
return async (action, hostInjector) => {
|
|
109
80
|
const entry = effectEntryMap.get(action.id);
|
|
110
81
|
if (entry) {
|
|
111
|
-
await runInInjectionContext(
|
|
112
|
-
return entry?.effect()(action.payload, { injector
|
|
82
|
+
await runInInjectionContext(hostInjector, () => {
|
|
83
|
+
return entry?.effect()(action.payload, { injector });
|
|
113
84
|
});
|
|
114
|
-
return
|
|
85
|
+
return { dispatch: false };
|
|
115
86
|
}
|
|
116
87
|
return { dispatch: true };
|
|
117
88
|
};
|
|
118
89
|
}
|
|
119
90
|
|
|
91
|
+
class NgAtomicActionLogger {
|
|
92
|
+
log(action, scope = 'default') {
|
|
93
|
+
console.debug(action, scope);
|
|
94
|
+
}
|
|
95
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicActionLogger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
96
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicActionLogger, providedIn: 'root' });
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicActionLogger, decorators: [{
|
|
99
|
+
type: Injectable,
|
|
100
|
+
args: [{ providedIn: 'root' }]
|
|
101
|
+
}] });
|
|
102
|
+
class NgAtomicRootActionStore {
|
|
103
|
+
logger = inject(NgAtomicActionLogger);
|
|
104
|
+
_actions$ = new EventEmitter();
|
|
105
|
+
actions$ = this._actions$.asObservable();
|
|
106
|
+
constructor() {
|
|
107
|
+
this.actions$.subscribe(action => this.logger.log(action, 'root'));
|
|
108
|
+
}
|
|
109
|
+
dispatch(action) {
|
|
110
|
+
this._actions$.emit(action);
|
|
111
|
+
}
|
|
112
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
113
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, providedIn: 'root' });
|
|
114
|
+
}
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, decorators: [{
|
|
116
|
+
type: Injectable,
|
|
117
|
+
args: [{ providedIn: 'root' }]
|
|
118
|
+
}], ctorParameters: () => [] });
|
|
119
|
+
class NgAtomicInjectorActionStore {
|
|
120
|
+
logger = inject(NgAtomicActionLogger);
|
|
121
|
+
async dispatch(injector, action, hostInjector = injector) {
|
|
122
|
+
const _action = { ...action, meta: { injector } };
|
|
123
|
+
this.logger.log(_action, 'injector');
|
|
124
|
+
const reducer = injectEffectReducer(injector);
|
|
125
|
+
const effect = await reducer(_action, hostInjector);
|
|
126
|
+
if (effect.dispatch) {
|
|
127
|
+
const injector_ = injector.get(Injector, null, { skipSelf: true });
|
|
128
|
+
if (injector_ && injector_ !== Injector.NULL) {
|
|
129
|
+
await this.dispatch(injector_, _action, hostInjector);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicInjectorActionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
134
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicInjectorActionStore, providedIn: 'root' });
|
|
135
|
+
}
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicInjectorActionStore, decorators: [{
|
|
137
|
+
type: Injectable,
|
|
138
|
+
args: [{ providedIn: 'root' }]
|
|
139
|
+
}] });
|
|
140
|
+
|
|
141
|
+
function resolveActions(actions, ...args) {
|
|
142
|
+
if (typeof actions === 'function') {
|
|
143
|
+
return actions(...args);
|
|
144
|
+
}
|
|
145
|
+
return actions;
|
|
146
|
+
}
|
|
147
|
+
function wrapActions(actions) {
|
|
148
|
+
return typeof actions === 'function' ? actions : () => actions;
|
|
149
|
+
}
|
|
150
|
+
|
|
120
151
|
function call(valueOrSignal) {
|
|
121
152
|
return isSignal(valueOrSignal) ? call(valueOrSignal()) : valueOrSignal;
|
|
122
153
|
}
|
|
@@ -413,40 +444,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
413
444
|
args: [{ standalone: true, selector: 'debug' }]
|
|
414
445
|
}] });
|
|
415
446
|
|
|
447
|
+
function injectIsRouteComponent(component) {
|
|
448
|
+
const route = inject(ActivatedRoute);
|
|
449
|
+
const currentComponent = route.snapshot.component;
|
|
450
|
+
return currentComponent === component.constructor;
|
|
451
|
+
}
|
|
416
452
|
class NgAtomicComponent extends InjectableComponent {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
root = inject(NgAtomicRootActionStore);
|
|
453
|
+
#rootActionStore = inject(NgAtomicRootActionStore);
|
|
454
|
+
#injectorActionStore = inject(NgAtomicInjectorActionStore);
|
|
420
455
|
#destroyRef = inject(DestroyRef);
|
|
421
456
|
#el = inject(ElementRef);
|
|
457
|
+
#injector = inject(Injector);
|
|
458
|
+
#logger = inject(NgAtomicActionLogger);
|
|
459
|
+
#isRouteComponent = injectIsRouteComponent(this);
|
|
460
|
+
#appRef = inject(ApplicationRef);
|
|
461
|
+
get selector() {
|
|
462
|
+
return this.#el.nativeElement.tagName.toLowerCase();
|
|
463
|
+
}
|
|
464
|
+
get #isBootstrapComponent() {
|
|
465
|
+
return this.#appRef.components.some(component => component.instance === this);
|
|
466
|
+
}
|
|
422
467
|
constructor() {
|
|
423
468
|
super();
|
|
424
|
-
this.
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
const
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
super.dispatch(_action);
|
|
469
|
+
this.#rootActionStore.actions$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(action => this.effect(action, 'root'));
|
|
470
|
+
}
|
|
471
|
+
async dispatch(action, scope = 'host', componentId = null) {
|
|
472
|
+
const _action = { ...action, meta: { componentId, selector: this.selector } };
|
|
473
|
+
this.#logger.log(_action, scope);
|
|
474
|
+
const dispatch = await this.effect(_action, scope);
|
|
475
|
+
if (dispatch) {
|
|
476
|
+
if (scope === 'root') {
|
|
477
|
+
return this.#rootActionStore.dispatch(_action);
|
|
478
|
+
}
|
|
479
|
+
else if (this.#isRouteComponent || this.#isBootstrapComponent) {
|
|
480
|
+
return this.#injectorActionStore.dispatch(this.#injector, _action);
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
return super.dispatch(_action);
|
|
484
|
+
}
|
|
441
485
|
}
|
|
442
486
|
}
|
|
443
|
-
effect(action, scope = '
|
|
487
|
+
async effect(action, scope = 'host') {
|
|
444
488
|
// MEMO(@nontangent): _effectMapをpropertyに持つとEffectが機能しなくなる
|
|
445
|
-
const
|
|
489
|
+
const effectMap = (this['_effectMap'] ?? new EffectMap());
|
|
490
|
+
const effect = effectMap.get(action.id, scope);
|
|
446
491
|
if (effect?.key && effect?.props?.scope === scope) {
|
|
447
|
-
this[effect.key](effect.props.accessor(action));
|
|
492
|
+
await this[effect.key](effect.props.accessor(action));
|
|
493
|
+
return !!effect?.props?.dispatch;
|
|
448
494
|
}
|
|
449
|
-
return
|
|
495
|
+
return true;
|
|
450
496
|
}
|
|
451
497
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
452
498
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: NgAtomicComponent, isStandalone: true, usesInheritance: true, hostDirectives: [{ directive: DebugDirective }], ngImport: i0 });
|
|
@@ -465,5 +511,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
465
511
|
* Generated bundle index. Do not edit.
|
|
466
512
|
*/
|
|
467
513
|
|
|
468
|
-
export { CallPipe, DebugDirective, EFFECT_ENTRY, Effect, EffectMap, EffectReducer, FAKE_COMPUTED, HostType, InjectableComponent, NG_ATOMIC_DEBUG, NgAtomicComponent, NgAtomicRootActionStore, TOKEN, TokenizedType, _computed, applyToInput, compute, computeFake, fakeComputed, getInputs, getInputsByComponentRef, getMeta, getOutputs, getOutputsByInstance, getToken, injectEffectEntries, injectEffectReducer, isFakeComputed, provideComponent, provideEffect, proxyFakeComputedInputValueFn, proxyFakeComputedInputs, resolveActions, withNgAtomicDebug, wrapActions };
|
|
514
|
+
export { CallPipe, DebugDirective, EFFECT_ENTRY, Effect, EffectMap, EffectReducer, FAKE_COMPUTED, HostType, InjectableComponent, NG_ATOMIC_DEBUG, NgAtomicActionLogger, NgAtomicComponent, NgAtomicInjectorActionStore, NgAtomicRootActionStore, TOKEN, TokenizedType, _computed, applyToInput, compute, computeFake, fakeComputed, getInputs, getInputsByComponentRef, getMeta, getOutputs, getOutputsByInstance, getToken, injectEffectEntries, injectEffectReducer, isFakeComputed, provideComponent, provideEffect, proxyFakeComputedInputValueFn, proxyFakeComputedInputs, resolveActions, withNgAtomicDebug, wrapActions };
|
|
469
515
|
//# sourceMappingURL=ng-atomic-core.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-core.mjs","sources":["../../../../../packages/@ng-atomic/core/src/lib/action-store.ts","../../../../../packages/@ng-atomic/core/src/lib/action.ts","../../../../../packages/@ng-atomic/core/src/lib/effect.ts","../../../../../packages/@ng-atomic/core/src/lib/signals.ts","../../../../../packages/@ng-atomic/core/src/lib/injectable-component.ts","../../../../../packages/@ng-atomic/core/src/lib/input.ts","../../../../../packages/@ng-atomic/core/src/lib/ng-atomic-debug.ts","../../../../../packages/@ng-atomic/core/src/lib/debug/debug.directive.ts","../../../../../packages/@ng-atomic/core/src/lib/ng-atomic-component.ts","../../../../../packages/@ng-atomic/core/src/ng-atomic-core.ts"],"sourcesContent":["import { EventEmitter, Injectable } from \"@angular/core\";\nimport { Action } from \"./action\";\n\n@Injectable({providedIn: 'root'})\nexport class NgAtomicRootActionStore {\n readonly actions$ = new EventEmitter<Action>();\n\n constructor() {\n this.actions$.subscribe(action => this.log(action, 'root'));\n }\n\n dispatch(action: Action) {\n this.actions$.emit(action);\n }\n\n log(action: Action, scope: string = 'default') {\n console.debug(action, scope);\n }\n}\n","export interface Action<T = any> {\n id: string;\n payload?: T;\n name?: string;\n icon?: string;\n color?: string;\n disabled?: boolean;\n children?: Action<T>[],\n meta?: {componentId?: string | number | null} | any;\n}\n\nexport type ActionsFactory<T = any> = (...args: any[]) => Action<T>[];\n\nexport type Actions = ActionsFactory | Action[];\n\nexport function resolveActions(actions: Actions, ...args: any[]) {\n if (typeof actions === 'function') {\n return actions(...args);\n }\n return actions;\n}\n\nexport function wrapActions(actions: Actions): ActionsFactory {\n return typeof actions === 'function' ? actions : () => actions;\n}\n","import { Injectable, InjectionToken, Injector, Provider, inject, runInInjectionContext } from \"@angular/core\";\nimport { Action } from \"./action\";\n\nexport interface EffectProps {\n dispatch: boolean;\n scope: string;\n accessor: (action: Action) => any;\n}\n\nexport class EffectMap extends Map<string, {key: string, props: EffectProps}> {\n override get(key: string, scope = 'default'): { key: string; props: EffectProps; } {\n return super.get(this.makeKey(key, scope))!; \n }\n\n override set(key: string, value: { key: string; props: EffectProps; }): this {\n return super.set(this.makeKey(key, value.props.scope), value);\n }\n\n override has(key: string, scope = 'default'): boolean {\n return super.has(this.makeKey(key, scope));\n }\n\n private makeKey(key: string, scope = 'default') {\n return `[${scope}]#${key}`;\n }\n}\n\nexport function Effect(id: string, {\n dispatch = false,\n scope = 'default',\n accessor = (action: Action) => action.payload,\n}: Partial<EffectProps> = {}) {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n target['_effectMap'] ??= new EffectMap();\n target['_effectMap'].set(id, {key: propertyKey, props: {dispatch, scope, accessor}});\n };\n}\n\nexport interface EffectFunctionOptions {\n dispatch?: boolean;\n}\n\nexport interface EffectContext {\n injector?: Injector;\n}\n\nexport type EffectFunction = (payload?: any, context?: EffectContext) => any | Promise<any>;\nexport type EffectFunctionFactory = (hostInjector?: Injector) => EffectFunction;\n\nexport interface EffectEntry {\n\tactionIds: string | string[];\n effectFactory?: EffectFunctionFactory;\n options?: EffectFunctionOptions;\n}\n\nexport const EFFECT_ENTRY = new InjectionToken<EffectEntry>('EFFECT_ENTRY');\n\nexport function provideEffect(\n ActionIds: string[] | string,\n _effectFactory: (injector: Injector) => EffectFunction,\n options: EffectFunctionOptions = {dispatch: false},\n): Provider {\n\treturn {\n\t\tprovide: EFFECT_ENTRY,\n\t\tuseFactory: (injector: Injector) => {\n const effectFactory = (hostInjector: Injector) => {\n return runInInjectionContext(hostInjector, () => _effectFactory(injector));\n };\n return { actionIds: ActionIds, effectFactory, options };\n },\n\t\tmulti: true,\n\t\tdeps: [Injector]\n\t};\n}\n\nexport function injectEffectEntries(): EffectEntry[] {\n\treturn inject<EffectEntry[]>(EFFECT_ENTRY, {optional: true}) ?? [];\n}\n\nfunction buildEffectEntryMap(injector: Injector, effectEntries: EffectEntry[]) {\n const effectEntryMap = new Map<string, {effect: EffectFunction, options: EffectFunctionOptions}>();\n\n for (const entry of effectEntries) {\n const ids = Array.isArray(entry.actionIds) ? entry.actionIds : [entry.actionIds];\n for (const id of ids) {\n const effect = () => entry.effectFactory(injector);\n effectEntryMap.set(id, { effect, options: entry.options });\n }\n }\n\n return effectEntryMap;\n}\n\n@Injectable()\nexport class EffectReducer {\n readonly injector = inject(Injector);\n\treadonly effectEntries = injectEffectEntries();\n readonly effectEntryMap = buildEffectEntryMap(this.injector, this.effectEntries);\n\n\tasync reduce(action: Action): Promise<EffectFunctionOptions> {\n const entry = this.effectEntryMap.get(action.id);\n if (entry) {\n await runInInjectionContext(this.injector, () => {\n return entry?.effect()(action.payload, {injector: this.injector});\n });\n return this.effectEntryMap.get(action.id)?.options ?? {dispatch: false};\n }\n return {dispatch: true};\n\t}\n}\n\nexport function injectEffectReducer() {\n const injector = inject(Injector);\n\tconst effectEntries = injectEffectEntries();\n const effectEntryMap = buildEffectEntryMap(injector, effectEntries);\n\n return async (action: Action) => {\n const entry = effectEntryMap.get(action.id);\n if (entry) {\n await runInInjectionContext(injector, () => {\n return entry?.effect()(action.payload, {injector: injector});\n });\n return effectEntryMap.get(action.id)?.options ?? {dispatch: false};\n }\n return {dispatch: true};\n\t}\n}\n","import { CreateComputedOptions, Pipe, Signal, computed, isSignal, PipeTransform } from \"@angular/core\";\n\nfunction call<T>(valueOrSignal: Signal<T> | T): T {\n return isSignal(valueOrSignal) ? call(valueOrSignal()) : valueOrSignal;\n}\n\nexport function proxyFakeComputedInputValueFn(inputValueFn: any) {\n return new Proxy(inputValueFn, {\n apply: function (target, _, args) {\n return computeFake(target(...args));\n }\n });\n}\n\nexport function computeFake(valueOrFakeComputed: any) {\n return isFakeComputed(valueOrFakeComputed) ? valueOrFakeComputed() : valueOrFakeComputed;\n}\n\nexport function proxyFakeComputedInputs(target: any, inputs: string[]) {\n inputs.filter(input => isSignal(target[input])).forEach(input => {\n target[input] = proxyFakeComputedInputValueFn(target[input]);\n });\n}\n\nexport const FAKE_COMPUTED = /* @__PURE__ */ Symbol('FAKE_COMPUTED');\n\nexport function compute(target: any, propName: string) {\n let inputValueFn: any;\n Object.defineProperty(target, propName, {\n get() {\n return new Proxy(inputValueFn, {\n apply: function (target, _, args) {\n const valueOrSignal: any = target(...args);\n return isSignal(valueOrSignal) ? valueOrSignal() : valueOrSignal;\n }\n });\n },\n set(value) {\n inputValueFn = value;\n },\n });\n}\n\nexport function fakeComputed<T>(computation: () => T, options?: CreateComputedOptions<T>): T {\n const _computed = computed(computation, options) as never as T;\n _computed[FAKE_COMPUTED] = true;\n return _computed;\n}\n\nexport function _computed<T>(computation: () => T, options?: CreateComputedOptions<T>): T {\n return fakeComputed(computation, options);\n}\n\nexport function isFakeComputed(_computed: any): _computed is ReturnType<typeof computed> {\n return !!_computed?.[FAKE_COMPUTED];\n}\n\n@Pipe({ name: 'call', standalone: true, pure: true})\nexport class CallPipe implements PipeTransform {\n transform<T>(value: Signal<T> | T): T {\n return call(value);\n }\n}\n","import {\n ComponentMirror, ComponentRef, DestroyRef,\n Directive,\n // ɵoutput,\n ElementRef, EmbeddedViewRef,\n InjectionToken, Injector, SimpleChange, SimpleChanges,\n Type, ViewContainerRef, inject, input, PLATFORM_ID,\n Output, EventEmitter\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { reflectComponentType } from \"@angular/core\";\nimport { Action } from \"./action\";\n\nexport type TypeFactoryAsync<T> = () => Promise<Type<T>>;\n\nexport type TypeFactory<T> = () => (Type<T> | Promise<Type<T>>);\nimport { proxyFakeComputedInputs } from \"./signals\";\nimport { isPlatformBrowser } from \"@angular/common\";\n\nexport const TOKEN = 'Δtkn';\n\nexport function provideComponent<ABS = any, IMPL = any>(\n abstract: Type<ABS>,\n typeOrFactory: Type<IMPL> | TypeFactory<IMPL>,\n) {\n async function loadComponentType(): Promise<Type<IMPL>> {\n if (typeof typeOrFactory === 'function' && !typeOrFactory.prototype) {\n return await (typeOrFactory as TypeFactory<IMPL>)();\n } else {\n return typeOrFactory as Type<IMPL>;\n }\n };\n return { provide: (abstract as any)[TOKEN], useValue: loadComponentType };\n}\n\nexport function TokenizedType() {\n return function <T extends Type<any>>(type: T) {\n (type as any)[TOKEN] = new InjectionToken<T>(type.name);\n };\n}\n\nexport function getToken(type: Type<any>) {\n return (type as any)[TOKEN];\n}\n\nexport enum HostType {\n Dir = 'ɵdir',\n Cmp = 'ɵcmp',\n}\n\ntype IO = {propName: string, templateName: string};\n\nexport function getMeta<T>(type: Type<T>) {\n return (type as any)[HostType.Cmp] || (type as any)[HostType.Dir];\n}\n\nexport function getInputs<T>(type: Type<T>): IO[] {\n return Object.entries<string>(getMeta(type)['inputs'])\n .map(([templateName, [propName]]) => ({propName, templateName}));\n}\n\nexport function getOutputs<T>(type: Type<T>): IO[] {\n const meta = getMeta(type);\n return Object.entries<string>(meta['outputs'])\n .map(([templateName, propName]) => ({propName, templateName}));\n}\n\nexport function getInputsByComponentRef<T extends {} = any>(cmp: ComponentRef<T>): IO[] {\n return getInputs(cmp.instance.constructor as Type<T>);\n}\n\nexport function getOutputsByInstance<T extends {} = any>(cmp: ComponentRef<T>): IO[] {\n return getOutputs(cmp.instance.constructor as Type<T>);\n}\n\n@Directive({\n standalone: true,\n // host: {ngSkipHydration: 'true'}\n})\nexport class InjectableComponent<T = any> {\n readonly #platformId = inject(PLATFORM_ID);\n readonly #viewContainerRef = inject(ViewContainerRef);\n readonly #injector = inject(Injector);\n readonly #destroyRef = inject(DestroyRef);\n readonly #el: ElementRef<HTMLElement> = inject(ElementRef);\n #component: ComponentRef<T> | null = null;\n #componentMirror: ComponentMirror<T> | null = null;\n\n readonly injectable = input(false, {transform: (value: any) => value === '' ? true : value, alias: 'injectable'});\n // readonly __action = ɵoutput<Action>({alias: 'action'});\n @Output('action') readonly __action = new EventEmitter<Action>();\n\n dispatch(action: Action) {\n this.__action.emit(action);\n }\n\n get #inputs(): IO[] {\n const abs = getInputs(this.constructor as Type<T>);\n return abs;\n }\n\n get #outputs(): IO[] {\n const abs = getOutputs(this.constructor as Type<T>);\n return abs;\n // const impl = this.#componentMirror!.outputs;\n // return abs.filter(abstractOutput => impl.some(implOutput => implOutput.templateName === abstractOutput.templateName));\n }\n\n #setAttribute() {\n const hostElement = (this.#component!.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n const attributes: NamedNodeMap = this.#el.nativeElement.attributes;\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes.item(i)!;\n if (attr.name === 'injectable') {\n hostElement.setAttribute('injected', '');\n } else {\n hostElement.setAttribute(attr.name, attr.value);\n }\n }\n }\n\n #bindInputs() {\n for (const input of this.#inputs) {\n if (input.propName === 'injectable') continue;\n const valueOrInputValueFn = this[input.propName];\n const value = typeof valueOrInputValueFn === 'function' ? valueOrInputValueFn() : valueOrInputValueFn;\n this.#component!.setInput(input.templateName, value);\n }\n }\n\n get propNames() {\n return this.#inputs.map(input => input.propName);\n }\n\n proxyFakeComputedInputs() {\n proxyFakeComputedInputs(this, this.propNames);\n }\n\n #bindOutputs() {\n for (const output of this.#outputs) {\n (this.#component!.instance as any)[output.propName]?.pipe(\n takeUntilDestroyed(this.#destroyRef)\n ).subscribe((value: any) => this[output.propName].emit(value));\n }\n }\n\n #bindEvents() {\n for (const name of ['click']) {\n this.#component.injector.get(ElementRef).nativeElement.addEventListener(name, (event) => {\n this.#el.nativeElement.dispatchEvent(new Event(name, {}));\n });\n }\n }\n \n constructor() {\n this.proxyFakeComputedInputs();\n }\n\n ngOnInit() {\n if (this.injectable() && isPlatformBrowser(this.#platformId)) {\n this.#injector.get<TypeFactoryAsync<T>>(getToken(this.constructor as any))().then(type => {\n this.#component = this.#viewContainerRef.createComponent(type, {\n projectableNodes: [\n Array.from(this.#el.nativeElement.childNodes)\n ],\n });\n this.#componentMirror = reflectComponentType(type);\n this.#bindInputs();\n this.#bindOutputs();\n this.#bindEvents();\n this.#setAttribute();\n // this.#viewContainerRef.remove(0);\n this.#component.changeDetectorRef.detectChanges();\n // this.#el.nativeElement.remove();\n });\n }\n this.proxyFakeComputedInputs();\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (this.injectable() && this.#componentMirror) {\n for (const input of this.#inputs) {\n if (input.propName === 'injectable') return;\n const change = simpleChanges[input.propName] as SimpleChange;\n if (change) {\n this.#component!.setInput(input.propName, change.currentValue);\n }\n }\n }\n }\n}\n","import { SIGNAL, SignalNode, signalSetFn } from '@angular/core/primitives/signals';\n\ninterface InputSignalNode<T, TransformT> extends SignalNode<T> {\n /**\n * User-configured transform that will run whenever a new value is applied\n * to the input signal node.\n */\n transformFn: ((value: TransformT) => T) | undefined;\n\n /**\n * Applies a new value to the input signal. Expects transforms to be run\n * manually before.\n *\n * This function is called by the framework runtime code whenever a binding\n * changes. The value can in practice be anything at runtime, but for typing\n * purposes we assume it's a valid `T` value. Type-checking will enforce that.\n */\n applyValueToInputSignal<T, TransformT>(node: InputSignalNode<T, TransformT>, value: T): void;\n}\n\nfunction applyValueToInputField<T>(\n instance: T,\n inputSignalNode: null | InputSignalNode<unknown, unknown>,\n privateName: string,\n value: unknown,\n) {\n if (inputSignalNode !== null) {\n inputSignalNode.applyValueToInputSignal(inputSignalNode, value);\n } else {\n (instance as any)[privateName] = value;\n }\n}\n\nexport function applyToInput<T>(instance: T, propName: keyof T, value: unknown) {\n\tconst inputSignalNode = (instance as any)[propName][SIGNAL] as InputSignalNode<unknown, unknown>;\n\tif (inputSignalNode !== null) {\n\t\tinputSignalNode.applyValueToInputSignal(inputSignalNode, value);\n\t} else {\n\t\t(instance as any)[propName] = value;\n\t}\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NG_ATOMIC_DEBUG = new InjectionToken<boolean>('NG_ATOMIC_DEBUG');\nexport function withNgAtomicDebug() {\n return {provide: NG_ATOMIC_DEBUG, useValue: true};\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, PLATFORM_ID, inject } from '@angular/core';\nimport { NG_ATOMIC_DEBUG } from '../ng-atomic-debug';\n\nconst DEBUG_CONFIG = {\n outline: '1px',\n colors: {\n 'templates': '#f00',\n 'organisms': '#0f0',\n 'molecules': '#00f',\n 'atoms': '#ff0',\n 'frames': 'transparent',\n 'default': '#000',\n },\n excludes: ['frames', 'app', 'pages', 'atoms'],\n};\n\n@Directive({standalone: true, selector: 'debug'})\nexport class DebugDirective {\n protected el: ElementRef<HTMLElement> = inject(ElementRef);\n protected platformId = inject(PLATFORM_ID);\n protected isDebug = inject(NG_ATOMIC_DEBUG, {optional: true}) ?? false;\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId) && this.isDebug) {\n const name = this.el.nativeElement.tagName.toLowerCase();\n const type = name.split('-')[0];\n if (DEBUG_CONFIG.excludes.includes(type)) return;\n const color = DEBUG_CONFIG.colors?.[type] ?? DEBUG_CONFIG.colors.default;\n\n // 1pxのアウトラインを設定\n this.el.nativeElement.style.outline = `${DEBUG_CONFIG.outline} solid ${color}`;\n\n // 疑似要素でコンポーネント名を表示\n const labelEl = this.createLabelElement({\n name: `${name}${this.el.nativeElement.hasAttribute('injected') ? '[injected]' : ''}`,\n color\n });\n this.el.nativeElement.style.outlineOffset = '-1px';\n this.el.nativeElement.style.position = 'relative';\n this.el.nativeElement.appendChild(labelEl);\n }\n }\n\n protected createLabelElement(options: {\n name: string\n color: string\n }): HTMLElement {\n const content = document.createElement('span');\n content.textContent = options.name;\n content.style.backgroundColor = `${options.color}`;\n content.style.color = '#fff';\n content.style.padding = '2px 4px';\n content.style.position = 'absolute';\n content.style.fontSize = '10px';\n content.style.top = '0';\n content.style.left = '0';\n content.style.zIndex = '9999';\n content.style.lineHeight = '1.5em';\n content.style.whiteSpace = 'nowrap';\n return content;\n }\n}","import { DestroyRef, Directive, ElementRef, inject } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { Action } from \"./action\";\nimport { InjectableComponent } from \"./injectable-component\";\nimport { EffectMap, injectEffectEntries, injectEffectReducer } from \"./effect\";\nimport { NgAtomicRootActionStore } from \"./action-store\";\nimport { DebugDirective } from './debug';\n\n@Directive({\n standalone: true,\n hostDirectives: [\n DebugDirective,\n ],\n})\nexport class NgAtomicComponent<T = any> extends InjectableComponent<T> {\n protected effectEntries = injectEffectEntries();\n protected reducer = injectEffectReducer();\n protected root = inject(NgAtomicRootActionStore);\n #destroyRef = inject(DestroyRef);\n #el = inject(ElementRef);\n\n constructor() {\n super();\n this.root.actions$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(action => {\n this.effect(action, 'root');\n });\n }\n\n async dispatch(action: Action, scope = 'default', componentId: string | number | null = null) {\n const selector = this.#el.nativeElement.tagName.toLowerCase();\n const _action = {...action, meta: {componentId, selector}};\n\n const props = await this.reducer(_action);\n if (props?.dispatch === false) return;\n\n const effect = this.effect(_action, scope);\n this.root.log(_action, scope);\n\n if (scope === 'root' && (!effect?.props || effect?.props?.dispatch)) {\n this.root.actions$.emit(_action);\n } else if (!effect?.props || effect?.props?.dispatch) {\n super.dispatch(_action);\n }\n }\n\n protected effect(action: Action, scope = 'default') {\n // MEMO(@nontangent): _effectMapをpropertyに持つとEffectが機能しなくなる\n const effect = (this['_effectMap'] ?? new EffectMap()).get(action.id, scope);\n if (effect?.key && effect?.props?.scope === scope) {\n this[effect.key](effect.props.accessor(action));\n }\n return effect;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DebugDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-core.mjs","sources":["../../../../../packages/@ng-atomic/core/src/lib/effect.ts","../../../../../packages/@ng-atomic/core/src/lib/action-store.ts","../../../../../packages/@ng-atomic/core/src/lib/action.ts","../../../../../packages/@ng-atomic/core/src/lib/signals.ts","../../../../../packages/@ng-atomic/core/src/lib/injectable-component.ts","../../../../../packages/@ng-atomic/core/src/lib/input.ts","../../../../../packages/@ng-atomic/core/src/lib/ng-atomic-debug.ts","../../../../../packages/@ng-atomic/core/src/lib/debug/debug.directive.ts","../../../../../packages/@ng-atomic/core/src/lib/ng-atomic-component.ts","../../../../../packages/@ng-atomic/core/src/ng-atomic-core.ts"],"sourcesContent":["import { Injectable, InjectionToken, Injector, Provider, inject, runInInjectionContext } from \"@angular/core\";\nimport { Action } from \"./action\";\n\nexport interface EffectProps {\n dispatch: boolean;\n scope: string;\n accessor: (action: Action) => any;\n}\n\nexport class EffectMap extends Map<string, {key: string, props: EffectProps}> {\n override get(key: string, scope = 'host'): { key: string; props: EffectProps; } {\n return super.get(this.makeKey(key, scope))!; \n }\n\n override set(key: string, value: { key: string; props: EffectProps; }): this {\n return super.set(this.makeKey(key, value.props.scope), value);\n }\n\n override has(key: string, scope = 'host'): boolean {\n return super.has(this.makeKey(key, scope));\n }\n\n private makeKey(key: string, scope = 'host') {\n return `[${scope}]#${key}`;\n }\n}\n\nexport function Effect(id: string, {\n dispatch = false,\n scope = 'host',\n accessor = (action: Action) => action.payload,\n}: Partial<EffectProps> = {}) {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n target['_effectMap'] ??= new EffectMap();\n target['_effectMap'].set(id, {key: propertyKey, props: {dispatch, scope, accessor}});\n };\n}\n\nexport interface EffectFunctionOptions {\n dispatch?: boolean;\n}\n\nexport interface EffectContext {\n injector?: Injector;\n}\n\nexport type EffectFunction = (payload?: any, context?: EffectContext) => any | Promise<any>;\nexport type EffectFunctionFactory = (hostInjector?: Injector) => EffectFunction;\n\nexport interface EffectEntry {\n\tactionIds: string | string[];\n effectFactory?: EffectFunctionFactory;\n options?: EffectFunctionOptions;\n}\n\nexport const EFFECT_ENTRY = new InjectionToken<EffectEntry>('EFFECT_ENTRY');\n\nexport function provideEffect(\n ActionIds: string[] | string,\n _effectFactory: (injector: Injector) => EffectFunction,\n options: EffectFunctionOptions = {dispatch: false},\n): Provider {\n\treturn {\n\t\tprovide: EFFECT_ENTRY,\n\t\tuseFactory: (injector: Injector) => {\n const effectFactory = (hostInjector: Injector) => {\n return runInInjectionContext(hostInjector, () => _effectFactory(injector));\n };\n return { actionIds: ActionIds, effectFactory, options };\n },\n\t\tmulti: true,\n\t\tdeps: [Injector]\n\t};\n}\n\nexport function injectEffectEntries(injector: Injector = inject(Injector)): EffectEntry[] {\n\treturn injector.get<EffectEntry[]>(EFFECT_ENTRY, null, { optional: true }) ?? [];\n}\n\nfunction buildEffectEntryMap(injector: Injector, effectEntries: EffectEntry[]) {\n const effectEntryMap = new Map<string, {effect: EffectFunction, options: EffectFunctionOptions}>();\n\n for (const entry of effectEntries) {\n const ids = Array.isArray(entry.actionIds) ? entry.actionIds : [entry.actionIds];\n for (const id of ids) {\n const effect = () => entry.effectFactory(injector);\n effectEntryMap.set(id, { effect, options: entry.options });\n }\n }\n\n return effectEntryMap;\n}\n\n@Injectable()\nexport class EffectReducer {\n readonly injector = inject(Injector);\n\treadonly effectEntries = injectEffectEntries();\n readonly effectEntryMap = buildEffectEntryMap(this.injector, this.effectEntries);\n\n\tasync reduce(action: Action): Promise<EffectFunctionOptions> {\n const entry = this.effectEntryMap.get(action.id);\n if (entry) {\n await runInInjectionContext(this.injector, () => {\n return entry?.effect()(action.payload, { injector: this.injector });\n });\n return entry?.options ?? { dispatch: false };\n }\n return { dispatch: true };\n\t}\n}\n\nexport function injectEffectReducer(injector: Injector = inject(Injector)) {\n\tconst effectEntries = injectEffectEntries(injector);\n const effectEntryMap = buildEffectEntryMap(injector, effectEntries);\n\n return async (action: Action, hostInjector: Injector): Promise<{dispatch: boolean}> => {\n const entry = effectEntryMap.get(action.id);\n if (entry) {\n await runInInjectionContext(hostInjector, () => {\n return entry?.effect()(action.payload, { injector });\n });\n return { dispatch: false };\n }\n return { dispatch: true };\n\t}\n}\n","import { EventEmitter, inject, Injectable, Injector } from \"@angular/core\";\nimport { Action } from \"./action\";\nimport { injectEffectReducer } from \"./effect\";\n\n@Injectable({providedIn: 'root'})\nexport class NgAtomicActionLogger {\n log(action: Action, scope: string = 'default') {\n console.debug(action, scope);\n }\n}\n\n@Injectable({providedIn: 'root'})\nexport class NgAtomicRootActionStore {\n protected logger = inject(NgAtomicActionLogger);\n protected readonly _actions$ = new EventEmitter<Action>();\n readonly actions$ = this._actions$.asObservable();\n\n constructor() {\n this.actions$.subscribe(action => this.logger.log(action, 'root'));\n }\n\n dispatch(action: Action) {\n this._actions$.emit(action);\n }\n}\n\n@Injectable({providedIn: 'root'})\nexport class NgAtomicInjectorActionStore {\n protected logger = inject(NgAtomicActionLogger);\n\n async dispatch(injector: Injector, action: Action, hostInjector: Injector = injector) {\n const _action = {...action, meta: { injector }};\n this.logger.log(_action, 'injector');\n\n const reducer = injectEffectReducer(injector);\n const effect = await reducer(_action, hostInjector);\n\n if (effect.dispatch) {\n const injector_ = injector.get(Injector, null, {skipSelf: true});\n if (injector_ && injector_ !== Injector.NULL) {\n await this.dispatch(injector_, _action, hostInjector);\n }\n }\n }\n}","export interface Action<T = any> {\n id: string;\n payload?: T;\n name?: string;\n icon?: string;\n color?: string;\n disabled?: boolean;\n children?: Action<T>[],\n meta?: {componentId?: string | number | null} | any;\n}\n\nexport type ActionsFactory<T = any> = (...args: any[]) => Action<T>[];\n\nexport type Actions = ActionsFactory | Action[];\n\nexport function resolveActions(actions: Actions, ...args: any[]) {\n if (typeof actions === 'function') {\n return actions(...args);\n }\n return actions;\n}\n\nexport function wrapActions(actions: Actions): ActionsFactory {\n return typeof actions === 'function' ? actions : () => actions;\n}\n","import { CreateComputedOptions, Pipe, Signal, computed, isSignal, PipeTransform } from \"@angular/core\";\n\nfunction call<T>(valueOrSignal: Signal<T> | T): T {\n return isSignal(valueOrSignal) ? call(valueOrSignal()) : valueOrSignal;\n}\n\nexport function proxyFakeComputedInputValueFn(inputValueFn: any) {\n return new Proxy(inputValueFn, {\n apply: function (target, _, args) {\n return computeFake(target(...args));\n }\n });\n}\n\nexport function computeFake(valueOrFakeComputed: any) {\n return isFakeComputed(valueOrFakeComputed) ? valueOrFakeComputed() : valueOrFakeComputed;\n}\n\nexport function proxyFakeComputedInputs(target: any, inputs: string[]) {\n inputs.filter(input => isSignal(target[input])).forEach(input => {\n target[input] = proxyFakeComputedInputValueFn(target[input]);\n });\n}\n\nexport const FAKE_COMPUTED = /* @__PURE__ */ Symbol('FAKE_COMPUTED');\n\nexport function compute(target: any, propName: string) {\n let inputValueFn: any;\n Object.defineProperty(target, propName, {\n get() {\n return new Proxy(inputValueFn, {\n apply: function (target, _, args) {\n const valueOrSignal: any = target(...args);\n return isSignal(valueOrSignal) ? valueOrSignal() : valueOrSignal;\n }\n });\n },\n set(value) {\n inputValueFn = value;\n },\n });\n}\n\nexport function fakeComputed<T>(computation: () => T, options?: CreateComputedOptions<T>): T {\n const _computed = computed(computation, options) as never as T;\n _computed[FAKE_COMPUTED] = true;\n return _computed;\n}\n\nexport function _computed<T>(computation: () => T, options?: CreateComputedOptions<T>): T {\n return fakeComputed(computation, options);\n}\n\nexport function isFakeComputed(_computed: any): _computed is ReturnType<typeof computed> {\n return !!_computed?.[FAKE_COMPUTED];\n}\n\n@Pipe({ name: 'call', standalone: true, pure: true})\nexport class CallPipe implements PipeTransform {\n transform<T>(value: Signal<T> | T): T {\n return call(value);\n }\n}\n","import {\n ComponentMirror, ComponentRef, DestroyRef,\n Directive,\n // ɵoutput,\n ElementRef, EmbeddedViewRef,\n InjectionToken, Injector, SimpleChange, SimpleChanges,\n Type, ViewContainerRef, inject, input, PLATFORM_ID,\n Output, EventEmitter\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { reflectComponentType } from \"@angular/core\";\nimport { Action } from \"./action\";\n\nexport type TypeFactoryAsync<T> = () => Promise<Type<T>>;\n\nexport type TypeFactory<T> = () => (Type<T> | Promise<Type<T>>);\nimport { proxyFakeComputedInputs } from \"./signals\";\nimport { isPlatformBrowser } from \"@angular/common\";\n\nexport const TOKEN = 'Δtkn';\n\nexport function provideComponent<ABS = any, IMPL = any>(\n abstract: Type<ABS>,\n typeOrFactory: Type<IMPL> | TypeFactory<IMPL>,\n) {\n async function loadComponentType(): Promise<Type<IMPL>> {\n if (typeof typeOrFactory === 'function' && !typeOrFactory.prototype) {\n return await (typeOrFactory as TypeFactory<IMPL>)();\n } else {\n return typeOrFactory as Type<IMPL>;\n }\n };\n return { provide: (abstract as any)[TOKEN], useValue: loadComponentType };\n}\n\nexport function TokenizedType() {\n return function <T extends Type<any>>(type: T) {\n (type as any)[TOKEN] = new InjectionToken<T>(type.name);\n };\n}\n\nexport function getToken(type: Type<any>) {\n return (type as any)[TOKEN];\n}\n\nexport enum HostType {\n Dir = 'ɵdir',\n Cmp = 'ɵcmp',\n}\n\ntype IO = {propName: string, templateName: string};\n\nexport function getMeta<T>(type: Type<T>) {\n return (type as any)[HostType.Cmp] || (type as any)[HostType.Dir];\n}\n\nexport function getInputs<T>(type: Type<T>): IO[] {\n return Object.entries<string>(getMeta(type)['inputs'])\n .map(([templateName, [propName]]) => ({propName, templateName}));\n}\n\nexport function getOutputs<T>(type: Type<T>): IO[] {\n const meta = getMeta(type);\n return Object.entries<string>(meta['outputs'])\n .map(([templateName, propName]) => ({propName, templateName}));\n}\n\nexport function getInputsByComponentRef<T extends {} = any>(cmp: ComponentRef<T>): IO[] {\n return getInputs(cmp.instance.constructor as Type<T>);\n}\n\nexport function getOutputsByInstance<T extends {} = any>(cmp: ComponentRef<T>): IO[] {\n return getOutputs(cmp.instance.constructor as Type<T>);\n}\n\n@Directive({\n standalone: true,\n // host: {ngSkipHydration: 'true'}\n})\nexport class InjectableComponent<T = any> {\n readonly #platformId = inject(PLATFORM_ID);\n readonly #viewContainerRef = inject(ViewContainerRef);\n readonly #injector = inject(Injector);\n readonly #destroyRef = inject(DestroyRef);\n readonly #el: ElementRef<HTMLElement> = inject(ElementRef);\n #component: ComponentRef<T> | null = null;\n #componentMirror: ComponentMirror<T> | null = null;\n\n readonly injectable = input(false, {transform: (value: any) => value === '' ? true : value, alias: 'injectable'});\n // readonly __action = ɵoutput<Action>({alias: 'action'});\n @Output('action') readonly __action = new EventEmitter<Action>();\n\n dispatch(action: Action) {\n this.__action.emit(action);\n }\n\n get #inputs(): IO[] {\n const abs = getInputs(this.constructor as Type<T>);\n return abs;\n }\n\n get #outputs(): IO[] {\n const abs = getOutputs(this.constructor as Type<T>);\n return abs;\n // const impl = this.#componentMirror!.outputs;\n // return abs.filter(abstractOutput => impl.some(implOutput => implOutput.templateName === abstractOutput.templateName));\n }\n\n #setAttribute() {\n const hostElement = (this.#component!.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n const attributes: NamedNodeMap = this.#el.nativeElement.attributes;\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes.item(i)!;\n if (attr.name === 'injectable') {\n hostElement.setAttribute('injected', '');\n } else {\n hostElement.setAttribute(attr.name, attr.value);\n }\n }\n }\n\n #bindInputs() {\n for (const input of this.#inputs) {\n if (input.propName === 'injectable') continue;\n const valueOrInputValueFn = this[input.propName];\n const value = typeof valueOrInputValueFn === 'function' ? valueOrInputValueFn() : valueOrInputValueFn;\n this.#component!.setInput(input.templateName, value);\n }\n }\n\n get propNames() {\n return this.#inputs.map(input => input.propName);\n }\n\n proxyFakeComputedInputs() {\n proxyFakeComputedInputs(this, this.propNames);\n }\n\n #bindOutputs() {\n for (const output of this.#outputs) {\n (this.#component!.instance as any)[output.propName]?.pipe(\n takeUntilDestroyed(this.#destroyRef)\n ).subscribe((value: any) => this[output.propName].emit(value));\n }\n }\n\n #bindEvents() {\n for (const name of ['click']) {\n this.#component.injector.get(ElementRef).nativeElement.addEventListener(name, (event) => {\n this.#el.nativeElement.dispatchEvent(new Event(name, {}));\n });\n }\n }\n \n constructor() {\n this.proxyFakeComputedInputs();\n }\n\n ngOnInit() {\n if (this.injectable() && isPlatformBrowser(this.#platformId)) {\n this.#injector.get<TypeFactoryAsync<T>>(getToken(this.constructor as any))().then(type => {\n this.#component = this.#viewContainerRef.createComponent(type, {\n projectableNodes: [\n Array.from(this.#el.nativeElement.childNodes)\n ],\n });\n this.#componentMirror = reflectComponentType(type);\n this.#bindInputs();\n this.#bindOutputs();\n this.#bindEvents();\n this.#setAttribute();\n // this.#viewContainerRef.remove(0);\n this.#component.changeDetectorRef.detectChanges();\n // this.#el.nativeElement.remove();\n });\n }\n this.proxyFakeComputedInputs();\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (this.injectable() && this.#componentMirror) {\n for (const input of this.#inputs) {\n if (input.propName === 'injectable') return;\n const change = simpleChanges[input.propName] as SimpleChange;\n if (change) {\n this.#component!.setInput(input.propName, change.currentValue);\n }\n }\n }\n }\n}\n","import { InputSignal, Signal } from '@angular/core';\nimport { SIGNAL, SignalNode, signalSetFn } from '@angular/core/primitives/signals';\n\ninterface InputSignalNode<T, TransformT> extends SignalNode<T> {\n /**\n * User-configured transform that will run whenever a new value is applied\n * to the input signal node.\n */\n transformFn: ((value: TransformT) => T) | undefined;\n\n /**\n * Applies a new value to the input signal. Expects transforms to be run\n * manually before.\n *\n * This function is called by the framework runtime code whenever a binding\n * changes. The value can in practice be anything at runtime, but for typing\n * purposes we assume it's a valid `T` value. Type-checking will enforce that.\n */\n applyValueToInputSignal<T, TransformT>(node: InputSignalNode<T, TransformT>, value: T): void;\n}\n\nfunction applyValueToInputField<T>(\n instance: T,\n inputSignalNode: null | InputSignalNode<unknown, unknown>,\n privateName: string,\n value: unknown,\n) {\n if (inputSignalNode !== null) {\n inputSignalNode.applyValueToInputSignal(inputSignalNode, value);\n } else {\n (instance as any)[privateName] = value;\n }\n}\n\ntype InputSignalType<T> = T extends InputSignal<infer U> ? U : never;\n\nexport function applyToInput<T, K extends keyof T>(\n instance: T,\n propName: K,\n value: InputSignalType<T[K]>,\n) {\n\tconst inputSignalNode = (instance as any)[propName][SIGNAL] as InputSignalNode<unknown, unknown>;\n\tif (inputSignalNode !== null) {\n\t\tinputSignalNode.applyValueToInputSignal(inputSignalNode, value);\n\t} else {\n\t\t(instance as any)[propName] = value;\n\t}\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NG_ATOMIC_DEBUG = new InjectionToken<boolean>('NG_ATOMIC_DEBUG');\nexport function withNgAtomicDebug() {\n return {provide: NG_ATOMIC_DEBUG, useValue: true};\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, PLATFORM_ID, inject } from '@angular/core';\nimport { NG_ATOMIC_DEBUG } from '../ng-atomic-debug';\n\nconst DEBUG_CONFIG = {\n outline: '1px',\n colors: {\n 'templates': '#f00',\n 'organisms': '#0f0',\n 'molecules': '#00f',\n 'atoms': '#ff0',\n 'frames': 'transparent',\n 'default': '#000',\n },\n excludes: ['frames', 'app', 'pages', 'atoms'],\n};\n\n@Directive({standalone: true, selector: 'debug'})\nexport class DebugDirective {\n protected el: ElementRef<HTMLElement> = inject(ElementRef);\n protected platformId = inject(PLATFORM_ID);\n protected isDebug = inject(NG_ATOMIC_DEBUG, {optional: true}) ?? false;\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId) && this.isDebug) {\n const name = this.el.nativeElement.tagName.toLowerCase();\n const type = name.split('-')[0];\n if (DEBUG_CONFIG.excludes.includes(type)) return;\n const color = DEBUG_CONFIG.colors?.[type] ?? DEBUG_CONFIG.colors.default;\n\n // 1pxのアウトラインを設定\n this.el.nativeElement.style.outline = `${DEBUG_CONFIG.outline} solid ${color}`;\n\n // 疑似要素でコンポーネント名を表示\n const labelEl = this.createLabelElement({\n name: `${name}${this.el.nativeElement.hasAttribute('injected') ? '[injected]' : ''}`,\n color\n });\n this.el.nativeElement.style.outlineOffset = '-1px';\n this.el.nativeElement.style.position = 'relative';\n this.el.nativeElement.appendChild(labelEl);\n }\n }\n\n protected createLabelElement(options: {\n name: string\n color: string\n }): HTMLElement {\n const content = document.createElement('span');\n content.textContent = options.name;\n content.style.backgroundColor = `${options.color}`;\n content.style.color = '#fff';\n content.style.padding = '2px 4px';\n content.style.position = 'absolute';\n content.style.fontSize = '10px';\n content.style.top = '0';\n content.style.left = '0';\n content.style.zIndex = '9999';\n content.style.lineHeight = '1.5em';\n content.style.whiteSpace = 'nowrap';\n return content;\n }\n}","import { ApplicationRef, DestroyRef, Directive, ElementRef, inject, Injector } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { Action } from \"./action\";\nimport { InjectableComponent } from \"./injectable-component\";\nimport { EffectMap } from \"./effect\";\nimport { NgAtomicActionLogger, NgAtomicInjectorActionStore, NgAtomicRootActionStore } from \"./action-store\";\nimport { DebugDirective } from './debug';\nimport { ActivatedRoute } from \"@angular/router\";\n\n\nfunction injectIsRouteComponent(component) {\n const route = inject(ActivatedRoute);\n const currentComponent = route.snapshot.component;\n return currentComponent === component.constructor;\n}\n\n@Directive({\n standalone: true,\n hostDirectives: [\n DebugDirective,\n ],\n})\nexport class NgAtomicComponent<T = any> extends InjectableComponent<T> {\n #rootActionStore = inject(NgAtomicRootActionStore);\n #injectorActionStore = inject(NgAtomicInjectorActionStore);\n #destroyRef = inject(DestroyRef);\n #el = inject(ElementRef);\n #injector = inject(Injector);\n #logger = inject(NgAtomicActionLogger);\n #isRouteComponent = injectIsRouteComponent(this);\n #appRef = inject(ApplicationRef);\n\n\n get selector() {\n return this.#el.nativeElement.tagName.toLowerCase();\n }\n\n get #isBootstrapComponent() {\n return this.#appRef.components.some(component => component.instance === this);\n }\n\n constructor() {\n super();\n this.#rootActionStore.actions$.pipe(\n takeUntilDestroyed(this.#destroyRef),\n ).subscribe(action => this.effect(action, 'root'));\n }\n\n async dispatch(\n action: Action,\n scope: string = 'host',\n componentId: string | number | null = null,\n ) {\n const _action = {...action, meta: { componentId, selector: this.selector }};\n this.#logger.log(_action, scope);\n const dispatch = await this.effect(_action, scope);\n\n if (dispatch) {\n if (scope === 'root') {\n return this.#rootActionStore.dispatch(_action);\n } else if (this.#isRouteComponent || this.#isBootstrapComponent) {\n return this.#injectorActionStore.dispatch(this.#injector, _action);\n } else {\n return super.dispatch(_action);\n }\n }\n }\n\n protected async effect(action: Action, scope = 'host'): Promise<boolean> {\n // MEMO(@nontangent): _effectMapをpropertyに持つとEffectが機能しなくなる\n const effectMap: EffectMap = (this['_effectMap'] ?? new EffectMap());\n const effect = effectMap.get(action.id, scope);\n if (effect?.key && effect?.props?.scope === scope) {\n await this[effect.key](effect.props.accessor(action));\n return !!effect?.props?.dispatch;\n }\n return true;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DebugDirective"],"mappings":";;;;;;;AASM,MAAO,SAAU,SAAQ,GAA8C,CAAA;AAClE,IAAA,GAAG,CAAC,GAAW,EAAE,KAAK,GAAG,MAAM,EAAA;AACtC,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAE,CAAC;KAC7C;IAEQ,GAAG,CAAC,GAAW,EAAE,KAA2C,EAAA;AACnE,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;KAC/D;AAEQ,IAAA,GAAG,CAAC,GAAW,EAAE,KAAK,GAAG,MAAM,EAAA;AACtC,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;KAC5C;AAEO,IAAA,OAAO,CAAC,GAAW,EAAE,KAAK,GAAG,MAAM,EAAA;AACzC,QAAA,OAAO,CAAI,CAAA,EAAA,KAAK,CAAK,EAAA,EAAA,GAAG,EAAE,CAAC;KAC5B;AACF,CAAA;AAEK,SAAU,MAAM,CAAC,EAAU,EAAE,EACjC,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,MAAM,EACd,QAAQ,GAAG,CAAC,MAAc,KAAK,MAAM,CAAC,OAAO,GAAA,GACrB,EAAE,EAAA;AAC1B,IAAA,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B,EAAA;AAC/E,QAAA,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;QACzC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAC,EAAC,CAAC,CAAC;AACvF,KAAC,CAAC;AACJ,CAAC;MAmBY,YAAY,GAAG,IAAI,cAAc,CAAc,cAAc,EAAE;AAE5D,SAAA,aAAa,CAC3B,SAA4B,EAC5B,cAAsD,EACtD,OAAA,GAAiC,EAAC,QAAQ,EAAE,KAAK,EAAC,EAAA;IAEnD,OAAO;AACN,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,UAAU,EAAE,CAAC,QAAkB,KAAI;AAC/B,YAAA,MAAM,aAAa,GAAG,CAAC,YAAsB,KAAI;AAC/C,gBAAA,OAAO,qBAAqB,CAAC,YAAY,EAAE,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7E,aAAC,CAAC;YACF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;SACzD;AACH,QAAA,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,CAAC,QAAQ,CAAC;KAChB,CAAC;AACH,CAAC;SAEe,mBAAmB,CAAC,WAAqB,MAAM,CAAC,QAAQ,CAAC,EAAA;AACxE,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAgB,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAkB,EAAE,aAA4B,EAAA;AAC3E,IAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoE,CAAC;AAEnG,IAAA,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;QACjC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACjF,QAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;YACpB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnD,YAAA,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5D,SAAA;AACF,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC;MAGY,aAAa,CAAA;AACf,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,aAAa,GAAG,mBAAmB,EAAE,CAAC;IACrC,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAElF,MAAM,MAAM,CAAC,MAAc,EAAA;AACxB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACjD,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;AAC9C,gBAAA,OAAO,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,KAAK,EAAE,OAAO,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC9C,SAAA;AACD,QAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC5B;uGAdW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;SAkBK,mBAAmB,CAAC,WAAqB,MAAM,CAAC,QAAQ,CAAC,EAAA;AACxE,IAAA,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEpE,IAAA,OAAO,OAAO,MAAc,EAAE,YAAsB,KAAkC;QACpF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,qBAAqB,CAAC,YAAY,EAAE,MAAK;AAC7C,gBAAA,OAAO,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,KAAC,CAAA;AACF;;MCxHa,oBAAoB,CAAA;AAC/B,IAAA,GAAG,CAAC,MAAc,EAAE,KAAA,GAAgB,SAAS,EAAA;AAC3C,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC9B;uGAHU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADR,MAAM,EAAA,CAAA,CAAA;;2FAClB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;MAQnB,uBAAuB,CAAA;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC7B,IAAA,SAAS,GAAG,IAAI,YAAY,EAAU,CAAC;AACjD,IAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AAElD,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACpE;AAED,IAAA,QAAQ,CAAC,MAAc,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7B;uGAXU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADX,MAAM,EAAA,CAAA,CAAA;;2FAClB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;MAgBnB,2BAA2B,CAAA;AAC5B,IAAA,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEhD,MAAM,QAAQ,CAAC,QAAkB,EAAE,MAAc,EAAE,eAAyB,QAAQ,EAAA;AAClF,QAAA,MAAM,OAAO,GAAG,EAAC,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAErC,QAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEpD,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACjE,YAAA,IAAI,SAAS,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,EAAE;gBAC5C,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACvD,aAAA;AACF,SAAA;KACF;uGAhBU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADf,MAAM,EAAA,CAAA,CAAA;;2FAClB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;SCXhB,cAAc,CAAC,OAAgB,EAAE,GAAG,IAAW,EAAA;AAC7D,IAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACjC,QAAA,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACzB,KAAA;AACD,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC;AAEK,SAAU,WAAW,CAAC,OAAgB,EAAA;AAC1C,IAAA,OAAO,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,GAAG,MAAM,OAAO,CAAC;AACjE;;ACtBA,SAAS,IAAI,CAAI,aAA4B,EAAA;AAC3C,IAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,aAAa,CAAC;AACzE,CAAC;AAEK,SAAU,6BAA6B,CAAC,YAAiB,EAAA;AAC7D,IAAA,OAAO,IAAI,KAAK,CAAC,YAAY,EAAE;AAC7B,QAAA,KAAK,EAAE,UAAU,MAAM,EAAE,CAAC,EAAE,IAAI,EAAA;YAC9B,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;SACrC;AACF,KAAA,CAAC,CAAC;AACL,CAAC;AAEK,SAAU,WAAW,CAAC,mBAAwB,EAAA;AAClD,IAAA,OAAO,cAAc,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,CAAC;AAC3F,CAAC;AAEe,SAAA,uBAAuB,CAAC,MAAW,EAAE,MAAgB,EAAA;IACnE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;QAC9D,MAAM,CAAC,KAAK,CAAC,GAAG,6BAA6B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,KAAC,CAAC,CAAC;AACL,CAAC;AAEY,MAAA,aAAa,mBAAmB,MAAM,CAAC,eAAe,EAAE;AAErD,SAAA,OAAO,CAAC,MAAW,EAAE,QAAgB,EAAA;AACnD,IAAA,IAAI,YAAiB,CAAC;AACtB,IAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;QACtC,GAAG,GAAA;AACD,YAAA,OAAO,IAAI,KAAK,CAAC,YAAY,EAAE;AAC7B,gBAAA,KAAK,EAAE,UAAU,MAAM,EAAE,CAAC,EAAE,IAAI,EAAA;AAC9B,oBAAA,MAAM,aAAa,GAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3C,oBAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC;iBAClE;AACF,aAAA,CAAC,CAAC;SACJ;AACD,QAAA,GAAG,CAAC,KAAK,EAAA;YACP,YAAY,GAAG,KAAK,CAAC;SACtB;AACF,KAAA,CAAC,CAAC;AACL,CAAC;AAEe,SAAA,YAAY,CAAI,WAAoB,EAAE,OAAkC,EAAA;IACtF,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAe,CAAC;AAC/D,IAAA,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;AAChC,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAEe,SAAA,SAAS,CAAI,WAAoB,EAAE,OAAkC,EAAA;AACnF,IAAA,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAEK,SAAU,cAAc,CAAC,SAAc,EAAA;AAC3C,IAAA,OAAO,CAAC,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC;AACtC,CAAC;MAGY,QAAQ,CAAA;AACnB,IAAA,SAAS,CAAI,KAAoB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;uGAHU,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,IAAI;mBAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAA;;;ACtC5C,MAAM,KAAK,GAAG,OAAO;AAEZ,SAAA,gBAAgB,CAC9B,QAAmB,EACnB,aAA6C,EAAA;AAE7C,IAAA,eAAe,iBAAiB,GAAA;QAC9B,IAAI,OAAO,aAAa,KAAK,UAAU,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YACnE,OAAO,MAAO,aAAmC,EAAE,CAAC;AACrD,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,aAA2B,CAAC;AACpC,SAAA;KACF;IAAA,CAAC;AACF,IAAA,OAAO,EAAE,OAAO,EAAG,QAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AAC5E,CAAC;SAEe,aAAa,GAAA;AAC3B,IAAA,OAAO,UAA+B,IAAO,EAAA;QAC1C,IAAY,CAAC,KAAK,CAAC,GAAG,IAAI,cAAc,CAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,QAAQ,CAAC,IAAe,EAAA;AACtC,IAAA,OAAQ,IAAY,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;IAEW,SAGX;AAHD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,WAAY,CAAA;AACZ,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,WAAY,CAAA;AACd,CAAC,EAHW,QAAQ,KAAR,QAAQ,GAGnB,EAAA,CAAA,CAAA,CAAA;AAIK,SAAU,OAAO,CAAI,IAAa,EAAA;AACtC,IAAA,OAAQ,IAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAK,IAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC;AAEK,SAAU,SAAS,CAAI,IAAa,EAAA;IACxC,OAAO,MAAM,CAAC,OAAO,CAAS,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAC,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAEK,SAAU,UAAU,CAAI,IAAa,EAAA;AACzC,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,OAAO,CAAS,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,SAAA,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAC,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAEK,SAAU,uBAAuB,CAAqB,GAAoB,EAAA;IAC9E,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAsB,CAAC,CAAC;AACxD,CAAC;AAEK,SAAU,oBAAoB,CAAqB,GAAoB,EAAA;IAC3E,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAsB,CAAC,CAAC;AACzD,CAAC;MAMY,mBAAmB,CAAA;AACrB,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC7C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,IAAA,GAAG,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3D,UAAU,GAA2B,IAAI,CAAC;IAC1C,gBAAgB,GAA8B,IAAI,CAAC;AAE1C,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,CAAC,KAAU,KAAK,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,KAAK,EAAE,KAAK,EAAE,YAAY,EAAC,CAAC,CAAC;;AAEvF,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AAEjE,IAAA,QAAQ,CAAC,MAAc,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;AAED,IAAA,IAAI,OAAO,GAAA;QACT,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,WAAsB,CAAC,CAAC;AACnD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,WAAsB,CAAC,CAAC;AACpD,QAAA,OAAO,GAAG,CAAC;;;KAGZ;IAED,aAAa,GAAA;AACX,QAAA,MAAM,WAAW,GAAI,IAAI,CAAC,UAAW,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;QACpG,MAAM,UAAU,GAAiB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC;AACnE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;AACjC,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;AAC9B,gBAAA,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA;gBACL,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;AAChC,YAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY;gBAAE,SAAS;YAC9C,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjD,YAAA,MAAM,KAAK,GAAG,OAAO,mBAAmB,KAAK,UAAU,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,CAAC;YACtG,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACtD,SAAA;KACF;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;KAClD;IAED,uBAAuB,GAAA;AACrB,QAAA,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/C;IAED,YAAY,GAAA;AACV,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,UAAW,CAAC,QAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CACvD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC,CAAC,SAAS,CAAC,CAAC,KAAU,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,KAAK,KAAI;AACtF,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAsB,QAAQ,CAAC,IAAI,CAAC,WAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAG;gBACvF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,EAAE;AAC7D,oBAAA,gBAAgB,EAAE;wBAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC;AAC9C,qBAAA;AACF,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,aAAa,EAAE,CAAC;;AAErB,gBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;;AAEpD,aAAC,CAAC,CAAC;AACJ,SAAA;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AAED,IAAA,WAAW,CAAC,aAA4B,EAAA;QACtC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC9C,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;AAChC,gBAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY;oBAAE,OAAO;gBAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAiB,CAAC;AAC7D,gBAAA,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AAChE,iBAAA;AACF,aAAA;AACF,SAAA;KACF;uGA9GU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;;AAEjB,iBAAA,CAAA;wDAY4B,QAAQ,EAAA,CAAA;sBAAlC,MAAM;uBAAC,QAAQ,CAAA;;;ACrElB,SAAS,sBAAsB,CAC7B,QAAW,EACX,eAAyD,EACzD,WAAmB,EACnB,KAAc,EAAA;IAEd,IAAI,eAAe,KAAK,IAAI,EAAE;AAC5B,QAAA,eAAe,CAAC,uBAAuB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACjE,KAAA;AAAM,SAAA;AACJ,QAAA,QAAgB,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;AACxC,KAAA;AACH,CAAC;SAIe,YAAY,CAC1B,QAAW,EACX,QAAW,EACX,KAA4B,EAAA;IAE7B,MAAM,eAAe,GAAI,QAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAsC,CAAC;IACjG,IAAI,eAAe,KAAK,IAAI,EAAE;AAC7B,QAAA,eAAe,CAAC,uBAAuB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAChE,KAAA;AAAM,SAAA;AACL,QAAA,QAAgB,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACpC,KAAA;AACF;;MC7Ca,eAAe,GAAG,IAAI,cAAc,CAAU,iBAAiB,EAAE;SAC9D,iBAAiB,GAAA;IAC/B,OAAO,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpD;;ACDA,MAAM,YAAY,GAAG;AACnB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,MAAM,EAAE;AACN,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,SAAS,EAAE,MAAM;AAClB,KAAA;IACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;CAC9C,CAAC;MAGW,cAAc,CAAA;AACf,IAAA,EAAE,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;AACjD,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACjC,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,KAAK,CAAC;IAEvE,QAAQ,GAAA;QACN,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AACtD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO;AACjD,YAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;;AAGzE,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,CAAA,EAAG,YAAY,CAAC,OAAO,CAAU,OAAA,EAAA,KAAK,EAAE,CAAC;;AAG/E,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACtC,IAAI,EAAE,GAAG,IAAI,CAAA,EAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,EAAE,CAAE,CAAA;gBACpF,KAAK;AACN,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;YACnD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YAClD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAA;KACF;AAES,IAAA,kBAAkB,CAAC,OAG5B,EAAA;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAA,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,OAAO,CAAC,KAAK,CAAA,CAAE,CAAC;AACnD,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC7B,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;AAClC,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACpC,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;AAChC,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACxB,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC;AACnC,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACpC,QAAA,OAAO,OAAO,CAAC;KAChB;uGA3CU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAA;;;ACPhD,SAAS,sBAAsB,CAAC,SAAS,EAAA;AACvC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACrC,IAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClD,IAAA,OAAO,gBAAgB,KAAK,SAAS,CAAC,WAAW,CAAC;AACpD,CAAC;AAQK,MAAO,iBAA2B,SAAQ,mBAAsB,CAAA;AACpE,IAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACnD,IAAA,oBAAoB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAC3D,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,IAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACvC,IAAA,iBAAiB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACjD,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAGjC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KACrD;AAED,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;KAC/E;AAED,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CACjC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACpD;IAED,MAAM,QAAQ,CACZ,MAAc,EACd,KAAgB,GAAA,MAAM,EACtB,WAAA,GAAsC,IAAI,EAAA;AAE1C,QAAA,MAAM,OAAO,GAAG,EAAC,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAEnD,QAAA,IAAI,QAAQ,EAAE;YACZ,IAAI,KAAK,KAAK,MAAM,EAAE;gBACpB,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChD,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/D,gBAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACpE,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChC,aAAA;AACF,SAAA;KACF;AAES,IAAA,MAAM,MAAM,CAAC,MAAc,EAAE,KAAK,GAAG,MAAM,EAAA;;AAEnD,QAAA,MAAM,SAAS,IAAe,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;AACrE,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,EAAE;AACjD,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,YAAA,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;uGAvDU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;wBACd,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;;;ACrBD;;AAEG;;;;"}
|
package/lib/action-store.d.ts
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
import { EventEmitter } from "@angular/core";
|
|
1
|
+
import { EventEmitter, Injector } from "@angular/core";
|
|
2
2
|
import { Action } from "./action";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class NgAtomicActionLogger {
|
|
5
|
+
log(action: Action, scope?: string): void;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgAtomicActionLogger, never>;
|
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NgAtomicActionLogger>;
|
|
8
|
+
}
|
|
4
9
|
export declare class NgAtomicRootActionStore {
|
|
5
|
-
|
|
10
|
+
protected logger: NgAtomicActionLogger;
|
|
11
|
+
protected readonly _actions$: EventEmitter<Action<any>>;
|
|
12
|
+
readonly actions$: import("rxjs").Observable<Action<any>>;
|
|
6
13
|
constructor();
|
|
7
14
|
dispatch(action: Action): void;
|
|
8
|
-
log(action: Action, scope?: string): void;
|
|
9
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgAtomicRootActionStore, never>;
|
|
10
16
|
static ɵprov: i0.ɵɵInjectableDeclaration<NgAtomicRootActionStore>;
|
|
11
17
|
}
|
|
18
|
+
export declare class NgAtomicInjectorActionStore {
|
|
19
|
+
protected logger: NgAtomicActionLogger;
|
|
20
|
+
dispatch(injector: Injector, action: Action, hostInjector?: Injector): Promise<void>;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgAtomicInjectorActionStore, never>;
|
|
22
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NgAtomicInjectorActionStore>;
|
|
23
|
+
}
|
package/lib/effect.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export interface EffectEntry {
|
|
|
37
37
|
}
|
|
38
38
|
export declare const EFFECT_ENTRY: InjectionToken<EffectEntry>;
|
|
39
39
|
export declare function provideEffect(ActionIds: string[] | string, _effectFactory: (injector: Injector) => EffectFunction, options?: EffectFunctionOptions): Provider;
|
|
40
|
-
export declare function injectEffectEntries(): EffectEntry[];
|
|
40
|
+
export declare function injectEffectEntries(injector?: Injector): EffectEntry[];
|
|
41
41
|
export declare class EffectReducer {
|
|
42
42
|
readonly injector: Injector;
|
|
43
43
|
readonly effectEntries: EffectEntry[];
|
|
@@ -49,4 +49,6 @@ export declare class EffectReducer {
|
|
|
49
49
|
static ɵfac: i0.ɵɵFactoryDeclaration<EffectReducer, never>;
|
|
50
50
|
static ɵprov: i0.ɵɵInjectableDeclaration<EffectReducer>;
|
|
51
51
|
}
|
|
52
|
-
export declare function injectEffectReducer(): (action: Action) => Promise<
|
|
52
|
+
export declare function injectEffectReducer(injector?: Injector): (action: Action, hostInjector: Injector) => Promise<{
|
|
53
|
+
dispatch: boolean;
|
|
54
|
+
}>;
|
package/lib/input.d.ts
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { InputSignal } from '@angular/core';
|
|
2
|
+
type InputSignalType<T> = T extends InputSignal<infer U> ? U : never;
|
|
3
|
+
export declare function applyToInput<T, K extends keyof T>(instance: T, propName: K, value: InputSignalType<T[K]>): void;
|
|
4
|
+
export {};
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { Action } from "./action";
|
|
2
2
|
import { InjectableComponent } from "./injectable-component";
|
|
3
|
-
import { NgAtomicRootActionStore } from "./action-store";
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
import * as i1 from "./debug/debug.directive";
|
|
6
5
|
export declare class NgAtomicComponent<T = any> extends InjectableComponent<T> {
|
|
7
6
|
#private;
|
|
8
|
-
|
|
9
|
-
protected reducer: (action: Action<any>) => Promise<import("./effect").EffectFunctionOptions>;
|
|
10
|
-
protected root: NgAtomicRootActionStore;
|
|
7
|
+
get selector(): any;
|
|
11
8
|
constructor();
|
|
12
9
|
dispatch(action: Action, scope?: string, componentId?: string | number | null): Promise<void>;
|
|
13
|
-
protected effect(action: Action, scope?: string):
|
|
10
|
+
protected effect(action: Action, scope?: string): Promise<boolean>;
|
|
14
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgAtomicComponent<any>, never>;
|
|
15
12
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NgAtomicComponent<any>, never, never, {}, {}, never, never, true, [{ directive: typeof i1.DebugDirective; inputs: {}; outputs: {}; }]>;
|
|
16
13
|
}
|