@ibyar/core 1.0.0 → 1.2.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/annotation/decorators.js +23 -23
- package/annotation/decorators.js.map +1 -1
- package/annotation/options.d.ts +26 -1
- package/annotation/options.d.ts.map +1 -1
- package/annotation/options.js.map +1 -1
- package/binding/binding.expressions.d.ts +1 -1
- package/binding/binding.expressions.d.ts.map +1 -1
- package/binding/binding.expressions.js +30 -18
- package/binding/binding.expressions.js.map +1 -1
- package/component/component.d.ts +2 -0
- package/component/component.d.ts.map +1 -1
- package/component/component.js +5 -4
- package/component/component.js.map +1 -1
- package/component/custom-element.d.ts +2 -4
- package/component/custom-element.d.ts.map +1 -1
- package/component/custom-element.js.map +1 -1
- package/component/events.js.map +1 -1
- package/component/reflect.d.ts +2 -2
- package/component/reflect.d.ts.map +1 -1
- package/component/reflect.js +2 -1
- package/component/reflect.js.map +1 -1
- package/context/subscription.d.ts +1 -1
- package/context/subscription.d.ts.map +1 -1
- package/context/subscription.js +1 -1
- package/context/subscription.js.map +1 -1
- package/directive/parser.js.map +1 -1
- package/directive/providers.js.map +1 -1
- package/html/deserialize.js.map +1 -1
- package/html/expression.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/linker/template-ref.js.map +1 -1
- package/linker/view-container-ref.d.ts.map +1 -1
- package/linker/view-container-ref.js +2 -1
- package/linker/view-container-ref.js.map +1 -1
- package/linker/view-ref.js.map +1 -1
- package/package.json +8 -8
- package/pipe/pipe.js.map +1 -1
- package/providers/provider.d.ts +1 -1
- package/providers/provider.d.ts.map +1 -1
- package/providers/provider.js +9 -8
- package/providers/provider.js.map +1 -1
- package/scope/scope.d.ts +29 -0
- package/scope/scope.d.ts.map +1 -0
- package/scope/scope.js +82 -0
- package/scope/scope.js.map +1 -0
- package/scope/signals.d.ts +15 -0
- package/scope/signals.d.ts.map +1 -0
- package/scope/signals.js +49 -0
- package/scope/signals.js.map +1 -0
- package/scope/stream.d.ts +1 -0
- package/scope/stream.d.ts.map +1 -0
- package/scope/stream.js +8 -0
- package/scope/stream.js.map +1 -0
- package/scope/variables.d.ts +19 -0
- package/scope/variables.d.ts.map +1 -0
- package/scope/variables.js +38 -0
- package/scope/variables.js.map +1 -0
- package/scope/web-scope.d.ts +4 -0
- package/scope/web-scope.d.ts.map +1 -0
- package/scope/web-scope.js +2 -0
- package/scope/web-scope.js.map +1 -0
- package/signals/signals.d.ts +14 -0
- package/signals/signals.d.ts.map +1 -0
- package/signals/signals.js +56 -0
- package/signals/signals.js.map +1 -0
- package/utils/elements-util.js.map +1 -1
- package/utils/path.js.map +1 -1
- package/view/base-view.d.ts.map +1 -1
- package/view/base-view.js +18 -15
- package/view/base-view.js.map +1 -1
- package/view/form-view.js.map +1 -1
- package/view/mutation.js +1 -2
- package/view/mutation.js.map +1 -1
- package/view/render.d.ts +2 -0
- package/view/render.d.ts.map +1 -1
- package/view/render.js +35 -13
- package/view/render.js.map +1 -1
- package/view/utils.js.map +1 -1
- package/view/view.d.ts.map +1 -1
- package/view/view.js +19 -8
- package/view/view.js.map +1 -1
- package/zone/bootstrap.js.map +1 -1
- package/zone/proxy.js.map +1 -1
- package/zone/task.js.map +1 -1
- package/zone/zone.js.map +1 -1
- package/annotation/context.d.ts +0 -41
- package/annotation/context.d.ts.map +0 -1
- package/annotation/context.js +0 -79
- package/annotation/context.js.map +0 -1
- package/render/host-binding.handler.d.ts +0 -46
- package/render/host-binding.handler.js +0 -60
- package/render/host-binding.handler.js.map +0 -1
- package/render/host-listener.handler.d.ts +0 -50
- package/render/host-listener.handler.js +0 -88
- package/render/host-listener.handler.js.map +0 -1
- package/render/render-handler.d.ts +0 -11
- package/render/render-handler.js +0 -2
- package/render/render-handler.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../src/core/scope/signals.ts"],"names":[],"mappings":"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","sourcesContent":["import { SignalScope } from '@ibyar/expressions';\n\nconst watchScope = new SignalScope();\n\nexport function signal<T>(initialValue: T) {\n\treturn watchScope.createSignal(initialValue);\n}\n\nexport function computed<T>(computation: () => T) {\n\treturn watchScope.createComputed(computation);\n}\n\nexport function lazy<T>(computation: () => T) {\n\treturn watchScope.createLazy(computation);\n}\n\n\nexport function signalFn<T>(initialValue: T) {\n\treturn watchScope.createSignalFn(initialValue);\n}\n\nexport function computedFn<T>(computation: () => T) {\n\treturn watchScope.createComputedFn(computation);\n}\n\nexport function lazyFn<T>(computation: () => T) {\n\treturn watchScope.createLazyFn(computation);\n}\n\nexport function effect<T>(effectFn: (onCleanup?: (clean: () => void) => void) => void) {\n\treturn watchScope.createEffect(effectFn);\n}\n\nexport function untracked<T>(nonReactiveReadsFn: () => T): T {\n\twatchScope.untrack();\n\tconst value = nonReactiveReadsFn();\n\twatchScope.track();\n\treturn value;\n}\n\nObject.assign(window, { signal, computed, lazy, signalFn, computedFn, lazyFn, effect, untracked, watchScope });\n\nconst x = signal(6);\nconst y = signal(4);\nconst z = signal(20);\nconst a = signal(true);\n\nconst g = computed(() => {\n\tif (a.get()) {\n\t\treturn x.get() + y.get();\n\t}\n\treturn x.get() + z.get();\n});\n\nconst h = computedFn(() => g.get());\n\nconsole.log('g = ', g.get());\n\nuntracked(() => x.get() + y.get() + y.get());\n\nconst e = effect(() => {\n\tconsole.log('x', x.get(), 'y', y.get(), 'z', z.get());\n\tconsole.log('a', a.get(), 'g', untracked(g.get), 'h', untracked(h));\n});\n\n\nObject.assign(window, { x, y, z, a, g, h, e });\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/core/scope/stream.ts"],"names":[],"mappings":""}
|
package/scope/stream.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/core/scope/stream.ts"],"names":[],"mappings":";AACA,MAAM;AACN,SAAS;AACT,MAAM;AACN,kBAAkB;AAClB,YAAY;AACZ,8BAA8B","sourcesContent":["\n// map\n// filter\n// tap\n// other operators\n// operation\n// create/delete/change/update"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Context, ReactiveScope } from '@ibyar/expressions';
|
|
2
|
+
export interface ScopeVariable<T> {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
get(): T | undefined;
|
|
5
|
+
set(value: T | undefined): void;
|
|
6
|
+
}
|
|
7
|
+
export declare class ScopeVariable<T> implements ScopeVariable<T> {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
private scope;
|
|
10
|
+
constructor(name: string, scope: ReactiveScope<Context>, value?: T);
|
|
11
|
+
}
|
|
12
|
+
export declare class ScopeEdit {
|
|
13
|
+
private scopes;
|
|
14
|
+
getScope<T extends Context>(): ReactiveScope<T>;
|
|
15
|
+
pushScope<T extends Context>(scope: ReactiveScope<T>): void;
|
|
16
|
+
popScope<T extends Context>(): ReactiveScope<T> | undefined;
|
|
17
|
+
}
|
|
18
|
+
export declare function input<T>(name: string, value?: T): ScopeVariable<T>;
|
|
19
|
+
//# sourceMappingURL=variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/core/scope/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACrB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CAChC;AAED,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAE5C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,OAAO,CAAC,KAAK;gBAA3B,IAAI,EAAE,MAAM,EAAU,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAYnF;AAED,qBAAa,SAAS;IAErB,OAAO,CAAC,MAAM,CAAgC;IAE9C,QAAQ,CAAC,CAAC,SAAS,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC;IAS/C,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAIpD,QAAQ,CAAC,CAAC,SAAS,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;CAI3D;AAID,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAElE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ReactiveScope } from '@ibyar/expressions';
|
|
2
|
+
export class ScopeVariable {
|
|
3
|
+
name;
|
|
4
|
+
scope;
|
|
5
|
+
constructor(name, scope, value) {
|
|
6
|
+
this.name = name;
|
|
7
|
+
this.scope = scope;
|
|
8
|
+
this.scope.set(name, value);
|
|
9
|
+
}
|
|
10
|
+
get() {
|
|
11
|
+
return this.scope.get(this.name);
|
|
12
|
+
}
|
|
13
|
+
set(value) {
|
|
14
|
+
this.scope.set(this.name, value);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class ScopeEdit {
|
|
18
|
+
scopes = [];
|
|
19
|
+
getScope() {
|
|
20
|
+
if (this.scopes.length == 0) {
|
|
21
|
+
const scope = ReactiveScope.blockScope();
|
|
22
|
+
this.scopes.push(scope);
|
|
23
|
+
return scope;
|
|
24
|
+
}
|
|
25
|
+
return this.scopes.at(-1);
|
|
26
|
+
}
|
|
27
|
+
pushScope(scope) {
|
|
28
|
+
this.scopes.push(scope);
|
|
29
|
+
}
|
|
30
|
+
popScope() {
|
|
31
|
+
return this.scopes.pop();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
let scopeEditor = new ScopeEdit();
|
|
35
|
+
export function input(name, value) {
|
|
36
|
+
return new ScopeVariable(name, scopeEditor.getScope(), value);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/core/scope/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQ5D,MAAM,OAAO,aAAa;IAEJ;IAAsB;IAA3C,YAAqB,IAAY,EAAU,KAA6B,EAAE,KAAS;QAA9D,SAAI,GAAJ,IAAI,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAwB;QACvE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,KAAoB;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;CAED;AAED,MAAM,OAAO,SAAS;IAEb,MAAM,GAA6B,EAAE,CAAC;IAE9C,QAAQ;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAK,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAqB,CAAC;IAC/C,CAAC;IAED,SAAS,CAAoB,KAAuB;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;CAED;AAED,IAAI,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;AAElC,MAAM,UAAU,KAAK,CAAI,IAAY,EAAE,KAAS;IAC/C,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { Context, ReactiveScope } from '@ibyar/expressions';\n\nexport interface ScopeVariable<T> {\n\treadonly name: string;\n\tget(): T | undefined;\n\tset(value: T | undefined): void;\n}\n\nexport class ScopeVariable<T> implements ScopeVariable<T> {\n\n\tconstructor(readonly name: string, private scope: ReactiveScope<Context>, value?: T) {\n\t\tthis.scope.set(name, value);\n\t}\n\n\tget(): T | undefined {\n\t\treturn this.scope.get(this.name);\n\t}\n\n\tset(value: T | undefined): void {\n\t\tthis.scope.set(this.name, value);\n\t}\n\n}\n\nexport class ScopeEdit {\n\n\tprivate scopes: ReactiveScope<Context>[] = [];\n\n\tgetScope<T extends Context>(): ReactiveScope<T> {\n\t\tif (this.scopes.length == 0) {\n\t\t\tconst scope = ReactiveScope.blockScope<T>();\n\t\t\tthis.scopes.push(scope);\n\t\t\treturn scope;\n\t\t}\n\t\treturn this.scopes.at(-1) as ReactiveScope<T>;\n\t}\n\n\tpushScope<T extends Context>(scope: ReactiveScope<T>) {\n\t\tthis.scopes.push(scope);\n\t}\n\n\tpopScope<T extends Context>(): ReactiveScope<T> | undefined {\n\t\treturn this.scopes.pop();\n\t}\n\n}\n\nlet scopeEditor = new ScopeEdit();\n\nexport function input<T>(name: string, value?: T): ScopeVariable<T> {\n\treturn new ScopeVariable(name, scopeEditor.getScope(), value);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-scope.d.ts","sourceRoot":"","sources":["../../../src/core/scope/web-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;CAE5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-scope.js","sourceRoot":"","sources":["../../../src/core/scope/web-scope.ts"],"names":[],"mappings":"","sourcesContent":["import { Context, Scope } from '@ibyar/expressions';\n\n\nexport interface WebScope<T extends Context> extends Scope<T> {\n\n}\n\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SignalScope } from '@ibyar/expressions';
|
|
2
|
+
export declare function setSignalScope(scope: SignalScope): void;
|
|
3
|
+
export declare function clearSignalScope(): void;
|
|
4
|
+
export declare function signalNode<T>(initialValue: T): import("@ibyar/expressions").Signal<T>;
|
|
5
|
+
export declare function signal<T>(initialValue: T): import("@ibyar/expressions").WritableSignal<T>;
|
|
6
|
+
export declare function computedNode<T>(computation: () => T): import("@ibyar/expressions").Computed<T>;
|
|
7
|
+
export declare function computed<T>(computation: () => T): import("@ibyar/expressions").ReactiveSignal<T>;
|
|
8
|
+
export declare function lazyNode<T>(computation: () => T): import("@ibyar/expressions").Lazy<T>;
|
|
9
|
+
export declare function lazy<T>(computation: () => T): import("@ibyar/expressions").ReactiveSignal<T>;
|
|
10
|
+
export declare function effect(effectFn: (onCleanup?: (clean: () => void) => void) => void): {
|
|
11
|
+
destroy(): void;
|
|
12
|
+
};
|
|
13
|
+
export declare function untracked<T>(nonReactiveReadsFn: () => T): T;
|
|
14
|
+
//# sourceMappingURL=signals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../../src/core/signals/signals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,QAEhD;AAED,wBAAgB,gBAAgB,SAE/B;AAQD,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,0CAG5C;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,kDAGxC;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,4CAGnD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,kDAG/C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,wCAG/C;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,kDAG3C;AAaD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI;;EAGjF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAM3D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
let signalScope;
|
|
2
|
+
export function setSignalScope(scope) {
|
|
3
|
+
signalScope = scope;
|
|
4
|
+
}
|
|
5
|
+
export function clearSignalScope() {
|
|
6
|
+
signalScope = undefined;
|
|
7
|
+
}
|
|
8
|
+
function isValidContext() {
|
|
9
|
+
if (!signalScope) {
|
|
10
|
+
throw new Error('Create a Signal, Computed and Effect is only allowed in class constructor.');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function signalNode(initialValue) {
|
|
14
|
+
isValidContext();
|
|
15
|
+
return signalScope.createSignal(initialValue);
|
|
16
|
+
}
|
|
17
|
+
export function signal(initialValue) {
|
|
18
|
+
isValidContext();
|
|
19
|
+
return signalScope.createSignalFn(initialValue);
|
|
20
|
+
}
|
|
21
|
+
export function computedNode(computation) {
|
|
22
|
+
isValidContext();
|
|
23
|
+
return signalScope.createComputed(computation);
|
|
24
|
+
}
|
|
25
|
+
export function computed(computation) {
|
|
26
|
+
isValidContext();
|
|
27
|
+
return signalScope.createComputedFn(computation);
|
|
28
|
+
}
|
|
29
|
+
export function lazyNode(computation) {
|
|
30
|
+
isValidContext();
|
|
31
|
+
return signalScope.createLazy(computation);
|
|
32
|
+
}
|
|
33
|
+
export function lazy(computation) {
|
|
34
|
+
isValidContext();
|
|
35
|
+
return signalScope.createLazyFn(computation);
|
|
36
|
+
}
|
|
37
|
+
const effectState = [];
|
|
38
|
+
function wrapEffect(scope, effectFn) {
|
|
39
|
+
return (onCleanup) => {
|
|
40
|
+
effectState.push(scope);
|
|
41
|
+
effectFn(onCleanup);
|
|
42
|
+
effectState.pop();
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function effect(effectFn) {
|
|
46
|
+
isValidContext();
|
|
47
|
+
return signalScope.createEffect(wrapEffect(signalScope, effectFn));
|
|
48
|
+
}
|
|
49
|
+
export function untracked(nonReactiveReadsFn) {
|
|
50
|
+
const scope = effectState.at(-1);
|
|
51
|
+
scope?.untrack();
|
|
52
|
+
const value = nonReactiveReadsFn();
|
|
53
|
+
scope?.track();
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=signals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../src/core/signals/signals.ts"],"names":[],"mappings":"AAEA,IAAI,WAAoC,CAAC;AAGzC,MAAM,UAAU,cAAc,CAAC,KAAkB;IAChD,WAAW,GAAG,KAAK,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC/B,WAAW,GAAG,SAAS,CAAC;AACzB,CAAC;AAED,SAAS,cAAc;IACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAC/F,CAAC;AACF,CAAC;AAED,MAAM,UAAU,UAAU,CAAI,YAAe;IAC5C,cAAc,EAAE,CAAC;IACjB,OAAO,WAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,YAAe;IACxC,cAAc,EAAE,CAAC;IACjB,OAAO,WAAY,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,WAAoB;IACnD,cAAc,EAAE,CAAC;IACjB,OAAO,WAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,WAAoB;IAC/C,cAAc,EAAE,CAAC;IACjB,OAAO,WAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,WAAoB;IAC/C,cAAc,EAAE,CAAC;IACjB,OAAO,WAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,IAAI,CAAI,WAAoB;IAC3C,cAAc,EAAE,CAAC;IACjB,OAAO,WAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,WAAW,GAAkB,EAAE,CAAC;AAEtC,SAAS,UAAU,CAAI,KAAkB,EAAE,QAAkB;IAC5D,OAAO,CAAC,SAAS,EAAE,EAAE;QACpB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,WAAW,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC,CAAC;AACH,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,QAA2D;IACjF,cAAc,EAAE,CAAC;IACjB,OAAO,WAAY,CAAC,YAAY,CAAC,UAAU,CAAC,WAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,SAAS,CAAI,kBAA2B;IACvD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["import { SignalScope } from '@ibyar/expressions';\n\nlet signalScope: SignalScope | undefined;\n\n\nexport function setSignalScope(scope: SignalScope) {\n\tsignalScope = scope;\n}\n\nexport function clearSignalScope() {\n\tsignalScope = undefined;\n}\n\nfunction isValidContext(): void {\n\tif (!signalScope) {\n\t\tthrow new Error('Create a Signal, Computed and Effect is only allowed in class constructor.');\n\t}\n}\n\nexport function signalNode<T>(initialValue: T) {\n\tisValidContext();\n\treturn signalScope!.createSignal(initialValue);\n}\n\nexport function signal<T>(initialValue: T) {\n\tisValidContext();\n\treturn signalScope!.createSignalFn(initialValue);\n}\n\nexport function computedNode<T>(computation: () => T) {\n\tisValidContext();\n\treturn signalScope!.createComputed(computation);\n}\n\nexport function computed<T>(computation: () => T) {\n\tisValidContext();\n\treturn signalScope!.createComputedFn(computation);\n}\n\nexport function lazyNode<T>(computation: () => T) {\n\tisValidContext();\n\treturn signalScope!.createLazy(computation);\n}\n\nexport function lazy<T>(computation: () => T) {\n\tisValidContext();\n\treturn signalScope!.createLazyFn(computation);\n}\n\nconst effectState: SignalScope[] = [];\ntype EffectFn = (onCleanup?: (clean: () => void) => void) => void;\nfunction wrapEffect<T>(scope: SignalScope, effectFn: EffectFn): EffectFn {\n\treturn (onCleanup) => {\n\t\teffectState.push(scope);\n\t\teffectFn(onCleanup);\n\t\teffectState.pop();\n\t};\n}\n\n\nexport function effect(effectFn: (onCleanup?: (clean: () => void) => void) => void) {\n\tisValidContext();\n\treturn signalScope!.createEffect(wrapEffect(signalScope!, effectFn));\n}\n\nexport function untracked<T>(nonReactiveReadsFn: () => T): T {\n\tconst scope = effectState.at(-1);\n\tscope?.untrack();\n\tconst value = nonReactiveReadsFn();\n\tscope?.track();\n\treturn value;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elements-util.js","sourceRoot":"","sources":["../../../src/core/utils/elements-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,UAAU,gBAAgB,CAAC,OAAoB,EAAE,IAAY;IAClE,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"elements-util.js","sourceRoot":"","sources":["../../../src/core/utils/elements-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,UAAU,gBAAgB,CAAC,OAAoB,EAAE,IAAY;IAClE,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,IAAI,YAAY,GAAsB,OAAO,CAAC,eAAe,EAAE,CAAC;QAChE,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB,EAAE,IAAY;IACtE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC;QACvD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAChG,CAAC;SACI,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACjE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAoB,EAAE,IAAY;IACzD,OAAO,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;WAC/B,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC;WACnC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;WAC/B,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC","sourcesContent":["import { hasNativeAttr } from '@ibyar/elements';\nimport { ComponentRef } from '../component/component.js';\nimport { isHTMLComponent } from '../component/custom-element.js';\n\nexport function hasComponentAttr(element: HTMLElement, attr: string): boolean {\n\tif (isHTMLComponent(element)) {\n\t\tvar componentRef: ComponentRef<any> = element.getComponentRef();\n\t\treturn componentRef.inputs.some(input => input.viewAttribute === attr);\n\t}\n\treturn false;\n}\n\nexport function hasAttrCustomElement(element: HTMLElement, attr: string): boolean {\n\tif (Reflect.has(element.constructor, 'allAttributes')) {\n\t\treturn Reflect.get(element.constructor, 'allAttributes').some((prop: string) => prop === attr);\n\t}\n\telse if (Reflect.has(element.constructor, 'observedAttributes')) {\n\t\treturn Reflect.get(element.constructor, 'observedAttributes').some((prop: string) => prop === attr);\n\t}\n\treturn false;\n}\n\nexport function isDataAttributes(attr: string) {\n\treturn attr.startsWith('data-');\n}\n\nexport function hasAttr(element: HTMLElement, attr: string): boolean {\n\treturn hasNativeAttr(element, attr)\n\t\t|| hasAttrCustomElement(element, attr)\n\t\t|| hasComponentAttr(element, attr)\n\t\t|| isDataAttributes(attr);\n}\n"]}
|
package/utils/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../src/core/utils/path.ts"],"names":[],"mappings":"AACA,SAAS,mBAAmB,CAAC,SAAiB,EAAE,QAAiB;IAChE,IAAI,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../src/core/utils/path.ts"],"names":[],"mappings":"AACA,SAAS,mBAAmB,CAAC,SAAiB,EAAE,QAAiB;IAChE,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IAC1E,CAAC;IACD,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC/C,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;SACzC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAChB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAID,MAAM,UAAU,mBAAmB,CAAC,gBAA6B;IAChE,MAAM,GAAG,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvF,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,YAAoB;IAChD,IAAI,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;QACzC,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACP,OAAO,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC;IAC5D,CAAC;AACF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,gBAAsC;IAC/D,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC1E,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAC9E,OAAO,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACpC,CAAC","sourcesContent":["\nfunction resolveHtmlFilePath(moduleUrl: string, filename?: string): string {\n\tif (filename) {\n\t\treturn moduleUrl.substring(0, moduleUrl.lastIndexOf('/') + 1) + filename;\n\t}\n\treturn moduleUrl.replace('.js', '.html');\n}\n\nexport async function fetchFromCache(url: string): Promise<string> {\n\treturn fetch(url, { cache: 'force-cache' })\n\t\t.then(response => {\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(`fetch ${url}, ${response}`);\n\t\t\t}\n\t\t\treturn response.text()\n\t\t});\n}\n\nexport type TemplateUrl = { filename?: string; meta: { url: string } };\n\nexport function fetchHtmlFromModule(fileNameResolver: TemplateUrl): Promise<string> {\n\tconst url = resolveHtmlFilePath(fileNameResolver.meta?.url, fileNameResolver.filename);\n\treturn fetchFromCache(url);\n}\n\nexport function htmlFullPath(fileFullPath: string): Promise<string> {\n\tif (fileFullPath.match(/^https?:\\/\\//g)) {\n\t\treturn fetchFromCache(fileFullPath);\n\t} else {\n\t\treturn fetchFromCache(window.location.href + fileFullPath);\n\t}\n}\n\nexport function fetchHtml(fileNameResolver: TemplateUrl | string): Promise<string> {\n\tif (typeof fileNameResolver === 'string') {\n\t\treturn htmlFullPath(fileNameResolver);\n\t} else if (typeof fileNameResolver === 'object' && fileNameResolver.meta) {\n\t\treturn fetchHtmlFromModule(fileNameResolver);\n\t} else if (typeof fileNameResolver === 'object' && fileNameResolver.filename) {\n\t\treturn htmlFullPath(fileNameResolver.filename);\n\t}\n\tthrow new Error('no url provided');\n}\n"]}
|
package/view/base-view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-view.d.ts","sourceRoot":"","sources":["../../../src/core/view/base-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-view.d.ts","sourceRoot":"","sources":["../../../src/core/view/base-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAUjD,OAAO,EAAgC,aAAa,EAAa,MAAM,gCAAgC,CAAC;AAUxG,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CA4VhH"}
|
package/view/base-view.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { ReactiveScope, ReactiveScopeControl } from '@ibyar/expressions';
|
|
1
|
+
import { ReactiveScope, ReactiveScopeControl, SignalScope, getReactiveNode } from '@ibyar/expressions';
|
|
2
2
|
import { isAfterContentChecked, isAfterContentInit, isAfterViewChecked, isAfterViewInit, isDoCheck, isOnChanges, isOnDestroy, isOnInit } from '../component/lifecycle.js';
|
|
3
3
|
import { ComponentRender } from './render.js';
|
|
4
4
|
import { getRootZone } from '../zone/bootstrap.js';
|
|
5
5
|
import { ProxyAuroraZone } from '../zone/zone.js';
|
|
6
6
|
import { createModelChangeDetectorRef } from '../linker/change-detector-ref.js';
|
|
7
7
|
import { createProxyZone } from '../zone/proxy.js';
|
|
8
|
+
import { clearSignalScope, setSignalScope } from '../signals/signals.js';
|
|
8
9
|
export function baseFactoryView(htmlElementType) {
|
|
9
10
|
return class CustomView extends htmlElementType {
|
|
10
11
|
_model;
|
|
11
|
-
|
|
12
|
+
_signalScope;
|
|
12
13
|
_render;
|
|
13
14
|
_shadowRoot;
|
|
14
15
|
_componentRef;
|
|
@@ -24,6 +25,8 @@ export function baseFactoryView(htmlElementType) {
|
|
|
24
25
|
if (componentRef.isShadowDom) {
|
|
25
26
|
this._shadowRoot = this.attachShadow(componentRef.shadowRootInit);
|
|
26
27
|
}
|
|
28
|
+
this._signalScope = new SignalScope();
|
|
29
|
+
setSignalScope(this._signalScope);
|
|
27
30
|
const args = []; /* resolve dependency injection*/
|
|
28
31
|
const detector = createModelChangeDetectorRef(() => this._modelScope);
|
|
29
32
|
args.push(detector);
|
|
@@ -31,12 +34,21 @@ export function baseFactoryView(htmlElementType) {
|
|
|
31
34
|
args.push(this._zone);
|
|
32
35
|
const model = new modelClass(...args);
|
|
33
36
|
this._model = model;
|
|
37
|
+
clearSignalScope();
|
|
34
38
|
const modelScope = ReactiveScopeControl.for(model);
|
|
35
39
|
const modelProxyRef = this._zone instanceof ProxyAuroraZone
|
|
36
40
|
? createProxyZone(model, this._zone)
|
|
37
41
|
: model;
|
|
38
42
|
modelScope.getContextProxy = () => modelProxyRef;
|
|
39
43
|
this._modelScope = modelScope;
|
|
44
|
+
Object.keys(this._model).forEach(key => {
|
|
45
|
+
const value = this._model[key];
|
|
46
|
+
const node = getReactiveNode(value);
|
|
47
|
+
if (!node) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
node.subscribe((value, old) => this._modelScope.emit(key, value, old));
|
|
51
|
+
});
|
|
40
52
|
this._viewScope = ReactiveScope.for({ 'this': this });
|
|
41
53
|
const elementScope = this._viewScope.getInnerScope('this');
|
|
42
54
|
componentRef.inputs.forEach(input => {
|
|
@@ -68,6 +80,10 @@ export function baseFactoryView(htmlElementType) {
|
|
|
68
80
|
Reflect.set(this._model, this._componentRef.view, this);
|
|
69
81
|
}
|
|
70
82
|
this._render = new ComponentRender(this, this.subscriptions);
|
|
83
|
+
if (this.attributes.length > 0) {
|
|
84
|
+
let attrs = Array.prototype.slice.call(this.attributes);
|
|
85
|
+
attrs.forEach(attr => this.initOuterAttribute(attr));
|
|
86
|
+
}
|
|
71
87
|
if (this._componentRef.encapsulation === 'shadow-slot') {
|
|
72
88
|
// render view before inserting any slot element as child
|
|
73
89
|
this.initView();
|
|
@@ -84,15 +100,6 @@ export function baseFactoryView(htmlElementType) {
|
|
|
84
100
|
getComponentRef() {
|
|
85
101
|
return this._componentRef;
|
|
86
102
|
}
|
|
87
|
-
setParentComponent(parent) {
|
|
88
|
-
this._parentComponent = parent;
|
|
89
|
-
}
|
|
90
|
-
getParentComponent() {
|
|
91
|
-
return this._parentComponent;
|
|
92
|
-
}
|
|
93
|
-
hasParentComponent() {
|
|
94
|
-
return this._parentComponent ? true : false;
|
|
95
|
-
}
|
|
96
103
|
hasInputStartWith(viewProp) {
|
|
97
104
|
let dotIndex = viewProp.indexOf('.');
|
|
98
105
|
if (dotIndex > 0) {
|
|
@@ -197,10 +204,6 @@ export function baseFactoryView(htmlElementType) {
|
|
|
197
204
|
this.setAttributeHelper(input.viewAttribute, inputDefaultValue);
|
|
198
205
|
}
|
|
199
206
|
});
|
|
200
|
-
if (!this.hasParentComponent() && this.attributes.length > 0) {
|
|
201
|
-
let attrs = Array.prototype.slice.call(this.attributes);
|
|
202
|
-
attrs.forEach(attr => this.initOuterAttribute(attr));
|
|
203
|
-
}
|
|
204
207
|
if (isOnChanges(this._model)) {
|
|
205
208
|
this._zone.run(this._model.onChanges, this._modelScope.getContextProxy());
|
|
206
209
|
}
|
package/view/base-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-view.js","sourceRoot":"","sources":["../../../src/core/view/base-view.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TypeOf } from '../utils/typeof.js';\nimport { ReactiveScope, ReactiveScopeControl, Context, ScopeSubscription } from '@ibyar/expressions';\nimport {\n\tisAfterContentChecked, isAfterContentInit, isAfterViewChecked,\n\tisAfterViewInit, isDoCheck, isOnChanges, isOnDestroy, isOnInit\n} from '../component/lifecycle.js';\nimport { ComponentRef } from '../component/component.js';\nimport { BaseComponent, CustomElement, HTMLComponent, ModelType } from '../component/custom-element.js';\nimport { EventEmitter } from '../component/events.js';\nimport { ComponentRender } from './render.js';\nimport { getRootZone } from '../zone/bootstrap.js';\nimport { AuroraZone, ProxyAuroraZone } from '../zone/zone.js';\nimport { createModelChangeDetectorRef } from '../linker/change-detector-ref.js';\nimport { createProxyZone } from '../zone/proxy.js';\nimport { PropertyRef } from '../component/reflect.js';\n\nexport function baseFactoryView<T extends object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<HTMLComponent<T>> {\n\treturn class CustomView extends htmlElementType implements BaseComponent<T>, CustomElement {\n\t\t_model: ModelType<T>;\n\t\t_parentComponent: HTMLComponent<object>;\n\t\t_render: ComponentRender<T>;\n\t\t_shadowRoot: ShadowRoot;\n\n\t\t_componentRef: ComponentRef<T>;\n\n\t\t_modelScope: ReactiveScopeControl<T>;\n\t\t_viewScope: ReactiveScope<{ 'this': BaseComponent<T> }>;\n\t\t_zone: AuroraZone;\n\n\t\tprivate subscriptions: ScopeSubscription<Context>[] = [];\n\t\tprivate onDestroyCalls: (() => void)[] = [];\n\t\tprivate needRendering = true;\n\n\t\tconstructor(componentRef: ComponentRef<T>, modelClass: TypeOf<T>) {\n\t\t\tsuper();\n\t\t\tthis._componentRef = componentRef;\n\t\t\tif (componentRef.isShadowDom) {\n\t\t\t\tthis._shadowRoot = this.attachShadow(componentRef.shadowRootInit);\n\t\t\t}\n\t\t\tconst args = []; /* resolve dependency injection*/\n\t\t\tconst detector = createModelChangeDetectorRef(() => this._modelScope);\n\t\t\targs.push(detector)\n\t\t\tthis._zone = getRootZone().fork(componentRef.zone);\n\t\t\targs.push(this._zone);\n\t\t\tconst model = new modelClass(...args);\n\t\t\tthis._model = model;\n\n\t\t\tconst modelScope = ReactiveScopeControl.for(model);\n\t\t\tconst modelProxyRef = this._zone instanceof ProxyAuroraZone\n\t\t\t\t? createProxyZone(model, this._zone)\n\t\t\t\t: model;\n\t\t\tmodelScope.getContextProxy = () => modelProxyRef;\n\t\t\tthis._modelScope = modelScope;\n\n\t\t\tthis._viewScope = ReactiveScope.for<{ 'this': BaseComponent<T> }>({ 'this': this });\n\t\t\tconst elementScope = this._viewScope.getInnerScope<ReactiveScope<BaseComponent<T>>>('this')!;\n\t\t\tcomponentRef.inputs.forEach(input => {\n\t\t\t\telementScope.subscribe(input.viewAttribute as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._modelScope.set(input.modelProperty as any, newValue);\n\t\t\t\t});\n\t\t\t\tthis._modelScope.subscribe(input.modelProperty as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telementScope.emit(input.viewAttribute as any, newValue, oldValue);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tcomponentRef.outputs.forEach(output =>\n\t\t\t\t(model[output.modelProperty as keyof T] as any as EventEmitter<any>)\n\t\t\t\t\t.subscribe((value: any) => {\n\t\t\t\t\t\tconst event = new CustomEvent(\n\t\t\t\t\t\t\toutput.viewAttribute,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdetail: value,\n\t\t\t\t\t\t\t\tcancelable: false,\n\t\t\t\t\t\t\t\tbubbles: output.options?.bubbles,\n\t\t\t\t\t\t\t\tcomposed: output.options?.bubbles,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.dispatchEvent(event);\n\t\t\t\t\t})\n\t\t\t);\n\t\t\t// if property of the model has view decorator\n\t\t\tif (this._componentRef.view) {\n\t\t\t\tReflect.set(this._model, this._componentRef.view, this);\n\t\t\t}\n\n\t\t\tthis._render = new ComponentRender(this, this.subscriptions);\n\n\t\t\tif (this._componentRef.encapsulation === 'shadow-slot') {\n\t\t\t\t// render view before inserting any slot element as child\n\t\t\t\tthis.initView();\n\t\t\t}\n\t\t}\n\n\t\tdetectChanges(): void {\n\t\t\tthis._modelScope.detectChanges();\n\t\t}\n\n\t\tdoBlockCallback = (): void => {\n\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t};\n\n\t\tgetComponentRef(): ComponentRef<T> {\n\t\t\treturn this._componentRef;\n\t\t}\n\n\t\tsetParentComponent(parent: HTMLComponent<any>): void {\n\t\t\tthis._parentComponent = parent;\n\t\t}\n\n\t\tgetParentComponent(): HTMLComponent<any> {\n\t\t\treturn this._parentComponent;\n\t\t}\n\n\t\thasParentComponent(): boolean {\n\t\t\treturn this._parentComponent ? true : false;\n\t\t}\n\n\t\thasInputStartWith(viewProp: string): boolean {\n\t\t\tlet dotIndex = viewProp.indexOf('.');\n\t\t\tif (dotIndex > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, dotIndex);\n\t\t\t}\n\t\t\treturn this.hasInput(viewProp);\n\t\t}\n\n\t\tgetInputStartWith(viewProp: string): PropertyRef | undefined {\n\t\t\tlet index = viewProp.indexOf('.');\n\t\t\tif (index > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, index);\n\t\t\t}\n\t\t\tindex = viewProp.indexOf('[');\n\t\t\tif (index > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, index);\n\t\t\t}\n\t\t\treturn this.getInput(viewProp);\n\t\t}\n\n\t\thasInput(viewProp: string): boolean {\n\t\t\treturn this._componentRef.inputs.some(input => input.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetInput(viewProp: string): PropertyRef | undefined {\n\t\t\treturn this._componentRef.inputs.find(input => input.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetInputValue(viewProp: string): any {\n\t\t\tconst inputRef = this.getInput(viewProp);\n\t\t\tif (inputRef) {\n\t\t\t\treturn this._model[inputRef.modelProperty];\n\t\t\t}\n\t\t}\n\n\t\tsetInputValue(viewProp: PropertyKey, value: any): void {\n\t\t\tconst inputRef = this.getInput(viewProp as string);\n\t\t\tif (inputRef) {\n\t\t\t\tthis._modelScope.set(inputRef.modelProperty as never, value);\n\t\t\t}\n\t\t}\n\n\t\thasOutput(viewProp: string): boolean {\n\t\t\treturn this._componentRef.outputs.some(output => output.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetOutput(viewProp: string): PropertyRef | undefined {\n\t\t\treturn this._componentRef.outputs.find(output => output.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetEventEmitter<V>(viewProp: string): EventEmitter<V> | undefined {\n\t\t\tconst outputRef = this.getOutput(viewProp);\n\t\t\tif (outputRef) {\n\t\t\t\treturn this._model[outputRef.modelProperty] as EventEmitter<V>;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\thasProp(propName: string): boolean {\n\t\t\treturn Reflect.has(this._model, propName);\n\t\t}\n\n\t\tprivate setAttributeHelper(attrViewName: string, value: any): void {\n\t\t\tif (value === null || value === undefined) {\n\t\t\t\tthis.removeAttribute(attrViewName);\n\t\t\t}\n\t\t\telse if (typeof value === 'boolean') {\n\t\t\t\tif (value) {\n\t\t\t\t\tsuper.setAttribute(attrViewName, '');\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeAttribute(attrViewName);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsuper.setAttribute(attrViewName, value);\n\t\t\t}\n\t\t}\n\n\t\tsetAttribute(attrViewName: string, value: any): void {\n\t\t\tthis.setInputValue(attrViewName, value);\n\t\t\tthis.setAttributeHelper(attrViewName, value);\n\t\t}\n\n\t\tgetAttribute(attrViewName: string): string | null {\n\t\t\treturn this.getInputValue(attrViewName) ?? super.getAttribute(attrViewName);\n\t\t}\n\n\t\tattributeChangedCallback(name: string, oldValue: string, newValue: string) {\n\t\t\tif (newValue === oldValue) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isOnChanges(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onChanges, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.doBlockCallback();\n\t\t}\n\n\t\tprivate initView() {\n\t\t\t// setup ui view\n\t\t\tthis._render.initView();\n\n\t\t\t// init view binding\n\t\t\tthis._render.initViewBinding();\n\t\t\tthis.needRendering = false;\n\t\t}\n\n\t\tconnectedCallback() {\n\t\t\tif (this.subscriptions.length) {\n\t\t\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\n\t\t\t}\n\t\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t\t\tconst cds = this._zone.onEmpty.subscribe(() => this._modelScope.detectChanges());\n\t\t\tthis.onDestroy(() => cds.unsubscribe());\n\t\t\tthis._componentRef.inputs.forEach(input => {\n\t\t\t\tconst inputDefaultValue = this._model[input.modelProperty];\n\t\t\t\tif (inputDefaultValue !== null && inputDefaultValue !== undefined) {\n\t\t\t\t\tthis.setAttributeHelper(input.viewAttribute, inputDefaultValue);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!this.hasParentComponent() && this.attributes.length > 0) {\n\t\t\t\tlet attrs: Attr[] = Array.prototype.slice.call(this.attributes);\n\t\t\t\tattrs.forEach(attr => this.initOuterAttribute(attr));\n\t\t\t}\n\n\t\t\tif (isOnChanges(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onChanges, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isOnInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterContentInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterContentInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterContentChecked(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy!());\n\t\t\t}\n\n\t\t\t// do once\n\t\t\tif (this.needRendering) {\n\t\t\t\tthis.initView();\n\t\t\t}\n\n\t\t\tif (isAfterViewInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterViewInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterViewChecked(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterViewChecked, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.doBlockCallback = () => {\n\t\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t\tif (isAfterContentChecked(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t\tif (isAfterViewChecked(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.afterViewChecked, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst event = new CustomEvent('connected', { cancelable: true, bubbles: false, composed: false });\n\t\t\tthis.dispatchEvent(event);\n\t\t}\n\n\n\t\tinitOuterAttribute(attr: Attr) {\n\t\t\t// [window, this] scop\n\t\t\tlet elementAttr = attr.name;\n\t\t\tlet modelProperty = attr.value;\n\t\t\tif (elementAttr.startsWith('[')) {\n\t\t\t\telementAttr = elementAttr.substring(1, elementAttr.length - 1);\n\t\t\t\tif (Reflect.has(window, modelProperty)) {\n\t\t\t\t\tthis.setInputValue(elementAttr, Reflect.get(window, modelProperty));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (elementAttr.startsWith('(')) {\n\t\t\t\t// (elementAttr)=\"modelProperty()\"\n\t\t\t\telementAttr = elementAttr.substring(1, elementAttr.length - 1);\n\t\t\t\t// this.handleEvent(element, elementAttr, viewProperty);\n\t\t\t\tmodelProperty = modelProperty.endsWith('()') ?\n\t\t\t\t\tmodelProperty.substring(0, modelProperty.length - 2) : modelProperty;\n\t\t\t\tlet callback: Function = Reflect.get(window, modelProperty);\n\t\t\t\tthis.addEventListener(elementAttr, event => {\n\t\t\t\t\tcallback(event);\n\t\t\t\t});\n\t\t\t} else if (elementAttr.startsWith('on')) {\n\t\t\t\tconst modelEvent = this.getEventEmitter<any>(elementAttr.substring(2));\n\t\t\t\tif (modelEvent) {\n\t\t\t\t\t// modelEvent.subscribe(listener);\n\t\t\t\t\tmodelProperty = modelProperty.endsWith('()') ?\n\t\t\t\t\t\tmodelProperty.substring(0, modelProperty.length - 2) : modelProperty;\n\t\t\t\t\tlet listener: Function = Reflect.get(window, modelProperty);\n\t\t\t\t\tmodelEvent.subscribe((data: any) => {\n\t\t\t\t\t\t(listener as Function)(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setInputValue(attr.name, attr.value);\n\t\t\t}\n\t\t}\n\t\tonDestroy(callback: () => void) {\n\t\t\tthis.onDestroyCalls.push(callback);\n\t\t}\n\t\tadoptedCallback() {\n\t\t\t// restart the process\n\t\t\tthis.innerHTML = '';\n\t\t\tthis.connectedCallback();\n\t\t}\n\t\tdisconnectedCallback() {\n\t\t\t// notify first, then call model.onDestroy func\n\t\t\tif (isOnDestroy(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onDestroy, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\n\t\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t\t\tthis.onDestroyCalls.forEach(callback => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.onDestroyCalls.splice(0, this.onDestroyCalls.length);\n\t\t\tconst event = new CustomEvent('disconnected', { cancelable: true, bubbles: false, composed: false });\n\t\t\tthis.dispatchEvent(event);\n\t\t}\n\n\t\ttriggerOutput(eventName: string, value?: any): void {\n\t\t\tconst modelEvent = this.getEventEmitter<any>(eventName);\n\t\t\tif (modelEvent) {\n\t\t\t\tmodelEvent.emit(value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base-view.js","sourceRoot":"","sources":["../../../src/core/view/base-view.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TypeOf } from '../utils/typeof.js';\nimport {\n\tReactiveScope, ReactiveScopeControl, Context,\n\tScopeSubscription, SignalScope, SignalValueScope, getReactiveNode\n} from '@ibyar/expressions';\nimport {\n\tisAfterContentChecked, isAfterContentInit, isAfterViewChecked,\n\tisAfterViewInit, isDoCheck, isOnChanges, isOnDestroy, isOnInit\n} from '../component/lifecycle.js';\nimport { ComponentRef } from '../component/component.js';\nimport { BaseComponent, CustomElement, HTMLComponent, ModelType } from '../component/custom-element.js';\nimport { EventEmitter } from '../component/events.js';\nimport { ComponentRender } from './render.js';\nimport { getRootZone } from '../zone/bootstrap.js';\nimport { AuroraZone, ProxyAuroraZone } from '../zone/zone.js';\nimport { createModelChangeDetectorRef } from '../linker/change-detector-ref.js';\nimport { createProxyZone } from '../zone/proxy.js';\nimport { PropertyRef } from '../component/reflect.js';\nimport { clearSignalScope, setSignalScope } from '../signals/signals.js';\n\nexport function baseFactoryView<T extends object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<HTMLComponent<T>> {\n\treturn class CustomView extends htmlElementType implements BaseComponent<T>, CustomElement {\n\t\t_model: ModelType<T>;\n\t\t_signalScope: SignalScope;\n\t\t_render: ComponentRender<T>;\n\t\t_shadowRoot: ShadowRoot;\n\n\t\t_componentRef: ComponentRef<T>;\n\n\t\t_modelScope: ReactiveScopeControl<T>;\n\t\t_viewScope: ReactiveScope<{ 'this': BaseComponent<T> }>;\n\t\t_zone: AuroraZone;\n\n\t\tprivate subscriptions: ScopeSubscription<Context>[] = [];\n\t\tprivate onDestroyCalls: (() => void)[] = [];\n\t\tprivate needRendering = true;\n\n\t\tconstructor(componentRef: ComponentRef<T>, modelClass: TypeOf<T>) {\n\t\t\tsuper();\n\t\t\tthis._componentRef = componentRef;\n\t\t\tif (componentRef.isShadowDom) {\n\t\t\t\tthis._shadowRoot = this.attachShadow(componentRef.shadowRootInit);\n\t\t\t}\n\n\t\t\tthis._signalScope = new SignalScope();\n\t\t\tsetSignalScope(this._signalScope);\n\n\t\t\tconst args = []; /* resolve dependency injection*/\n\t\t\tconst detector = createModelChangeDetectorRef(() => this._modelScope);\n\t\t\targs.push(detector)\n\t\t\tthis._zone = getRootZone().fork(componentRef.zone);\n\t\t\targs.push(this._zone);\n\t\t\tconst model = new modelClass(...args);\n\t\t\tthis._model = model;\n\n\t\t\tclearSignalScope();\n\t\t\tconst modelScope = ReactiveScopeControl.for(model);\n\t\t\tconst modelProxyRef = this._zone instanceof ProxyAuroraZone\n\t\t\t\t? createProxyZone(model, this._zone)\n\t\t\t\t: model;\n\t\t\tmodelScope.getContextProxy = () => modelProxyRef;\n\t\t\tthis._modelScope = modelScope;\n\n\t\t\tObject.keys(this._model).forEach(key => {\n\t\t\t\tconst value = this._model[key];\n\t\t\t\tconst node = getReactiveNode(value);\n\t\t\t\tif (!node) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tnode.subscribe((value, old) => this._modelScope.emit(key as any, value, old));\n\t\t\t});\n\n\t\t\tthis._viewScope = ReactiveScope.for<{ 'this': BaseComponent<T> }>({ 'this': this });\n\t\t\tconst elementScope = this._viewScope.getInnerScope<ReactiveScope<BaseComponent<T>>>('this')!;\n\t\t\tcomponentRef.inputs.forEach(input => {\n\t\t\t\telementScope.subscribe(input.viewAttribute as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._modelScope.set(input.modelProperty as any, newValue);\n\t\t\t\t});\n\t\t\t\tthis._modelScope.subscribe(input.modelProperty as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telementScope.emit(input.viewAttribute as any, newValue, oldValue);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tcomponentRef.outputs.forEach(output =>\n\t\t\t\t(model[output.modelProperty as keyof T] as any as EventEmitter<any>)\n\t\t\t\t\t.subscribe((value: any) => {\n\t\t\t\t\t\tconst event = new CustomEvent(\n\t\t\t\t\t\t\toutput.viewAttribute,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdetail: value,\n\t\t\t\t\t\t\t\tcancelable: false,\n\t\t\t\t\t\t\t\tbubbles: output.options?.bubbles,\n\t\t\t\t\t\t\t\tcomposed: output.options?.bubbles,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.dispatchEvent(event);\n\t\t\t\t\t})\n\t\t\t);\n\t\t\t// if property of the model has view decorator\n\t\t\tif (this._componentRef.view) {\n\t\t\t\tReflect.set(this._model, this._componentRef.view, this);\n\t\t\t}\n\n\t\t\tthis._render = new ComponentRender(this, this.subscriptions);\n\n\t\t\tif (this.attributes.length > 0) {\n\t\t\t\tlet attrs: Attr[] = Array.prototype.slice.call(this.attributes);\n\t\t\t\tattrs.forEach(attr => this.initOuterAttribute(attr));\n\t\t\t}\n\n\t\t\tif (this._componentRef.encapsulation === 'shadow-slot') {\n\t\t\t\t// render view before inserting any slot element as child\n\t\t\t\tthis.initView();\n\t\t\t}\n\t\t}\n\n\t\tdetectChanges(): void {\n\t\t\tthis._modelScope.detectChanges();\n\t\t}\n\n\t\tdoBlockCallback = (): void => {\n\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t};\n\n\t\tgetComponentRef(): ComponentRef<T> {\n\t\t\treturn this._componentRef;\n\t\t}\n\n\t\thasInputStartWith(viewProp: string): boolean {\n\t\t\tlet dotIndex = viewProp.indexOf('.');\n\t\t\tif (dotIndex > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, dotIndex);\n\t\t\t}\n\t\t\treturn this.hasInput(viewProp);\n\t\t}\n\n\t\tgetInputStartWith(viewProp: string): PropertyRef | undefined {\n\t\t\tlet index = viewProp.indexOf('.');\n\t\t\tif (index > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, index);\n\t\t\t}\n\t\t\tindex = viewProp.indexOf('[');\n\t\t\tif (index > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, index);\n\t\t\t}\n\t\t\treturn this.getInput(viewProp);\n\t\t}\n\n\t\thasInput(viewProp: string): boolean {\n\t\t\treturn this._componentRef.inputs.some(input => input.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetInput(viewProp: string): PropertyRef | undefined {\n\t\t\treturn this._componentRef.inputs.find(input => input.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetInputValue(viewProp: string): any {\n\t\t\tconst inputRef = this.getInput(viewProp);\n\t\t\tif (inputRef) {\n\t\t\t\treturn this._model[inputRef.modelProperty];\n\t\t\t}\n\t\t}\n\n\t\tsetInputValue(viewProp: PropertyKey, value: any): void {\n\t\t\tconst inputRef = this.getInput(viewProp as string);\n\t\t\tif (inputRef) {\n\t\t\t\tthis._modelScope.set(inputRef.modelProperty as never, value);\n\t\t\t}\n\t\t}\n\n\t\thasOutput(viewProp: string): boolean {\n\t\t\treturn this._componentRef.outputs.some(output => output.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetOutput(viewProp: string): PropertyRef | undefined {\n\t\t\treturn this._componentRef.outputs.find(output => output.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetEventEmitter<V>(viewProp: string): EventEmitter<V> | undefined {\n\t\t\tconst outputRef = this.getOutput(viewProp);\n\t\t\tif (outputRef) {\n\t\t\t\treturn this._model[outputRef.modelProperty] as EventEmitter<V>;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\thasProp(propName: string): boolean {\n\t\t\treturn Reflect.has(this._model, propName);\n\t\t}\n\n\t\tprivate setAttributeHelper(attrViewName: string, value: any): void {\n\t\t\tif (value === null || value === undefined) {\n\t\t\t\tthis.removeAttribute(attrViewName);\n\t\t\t}\n\t\t\telse if (typeof value === 'boolean') {\n\t\t\t\tif (value) {\n\t\t\t\t\tsuper.setAttribute(attrViewName, '');\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeAttribute(attrViewName);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsuper.setAttribute(attrViewName, value);\n\t\t\t}\n\t\t}\n\n\t\tsetAttribute(attrViewName: string, value: any): void {\n\t\t\tthis.setInputValue(attrViewName, value);\n\t\t\tthis.setAttributeHelper(attrViewName, value);\n\t\t}\n\n\t\tgetAttribute(attrViewName: string): string | null {\n\t\t\treturn this.getInputValue(attrViewName) ?? super.getAttribute(attrViewName);\n\t\t}\n\n\t\tattributeChangedCallback(name: string, oldValue: string, newValue: string) {\n\t\t\tif (newValue === oldValue) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isOnChanges(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onChanges, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.doBlockCallback();\n\t\t}\n\n\t\tprivate initView() {\n\t\t\t// setup ui view\n\t\t\tthis._render.initView();\n\n\t\t\t// init view binding\n\t\t\tthis._render.initViewBinding();\n\t\t\tthis.needRendering = false;\n\t\t}\n\n\t\tconnectedCallback() {\n\t\t\tif (this.subscriptions.length) {\n\t\t\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\n\t\t\t}\n\t\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t\t\tconst cds = this._zone.onEmpty.subscribe(() => this._modelScope.detectChanges());\n\t\t\tthis.onDestroy(() => cds.unsubscribe());\n\t\t\tthis._componentRef.inputs.forEach(input => {\n\t\t\t\tconst inputDefaultValue = this._model[input.modelProperty];\n\t\t\t\tif (inputDefaultValue !== null && inputDefaultValue !== undefined) {\n\t\t\t\t\tthis.setAttributeHelper(input.viewAttribute, inputDefaultValue);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (isOnChanges(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onChanges, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isOnInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterContentInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterContentInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterContentChecked(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy!());\n\t\t\t}\n\n\t\t\t// do once\n\t\t\tif (this.needRendering) {\n\t\t\t\tthis.initView();\n\t\t\t}\n\n\t\t\tif (isAfterViewInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterViewInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterViewChecked(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterViewChecked, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.doBlockCallback = () => {\n\t\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t\tif (isAfterContentChecked(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t\tif (isAfterViewChecked(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.afterViewChecked, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst event = new CustomEvent('connected', { cancelable: true, bubbles: false, composed: false });\n\t\t\tthis.dispatchEvent(event);\n\t\t}\n\n\n\t\tprivate initOuterAttribute(attr: Attr) {\n\t\t\t// [window, this] scop\n\t\t\tlet elementAttr = attr.name;\n\t\t\tlet modelProperty = attr.value;\n\t\t\tif (elementAttr.startsWith('[')) {\n\t\t\t\telementAttr = elementAttr.substring(1, elementAttr.length - 1);\n\t\t\t\tif (Reflect.has(window, modelProperty)) {\n\t\t\t\t\tthis.setInputValue(elementAttr, Reflect.get(window, modelProperty));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (elementAttr.startsWith('(')) {\n\t\t\t\t// (elementAttr)=\"modelProperty()\"\n\t\t\t\telementAttr = elementAttr.substring(1, elementAttr.length - 1);\n\t\t\t\t// this.handleEvent(element, elementAttr, viewProperty);\n\t\t\t\tmodelProperty = modelProperty.endsWith('()') ?\n\t\t\t\t\tmodelProperty.substring(0, modelProperty.length - 2) : modelProperty;\n\t\t\t\tlet callback: Function = Reflect.get(window, modelProperty);\n\t\t\t\tthis.addEventListener(elementAttr, event => {\n\t\t\t\t\tcallback(event);\n\t\t\t\t});\n\t\t\t} else if (elementAttr.startsWith('on')) {\n\t\t\t\tconst modelEvent = this.getEventEmitter<any>(elementAttr.substring(2));\n\t\t\t\tif (modelEvent) {\n\t\t\t\t\t// modelEvent.subscribe(listener);\n\t\t\t\t\tmodelProperty = modelProperty.endsWith('()') ?\n\t\t\t\t\t\tmodelProperty.substring(0, modelProperty.length - 2) : modelProperty;\n\t\t\t\t\tlet listener: Function = Reflect.get(window, modelProperty);\n\t\t\t\t\tmodelEvent.subscribe((data: any) => {\n\t\t\t\t\t\t(listener as Function)(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setInputValue(attr.name, attr.value);\n\t\t\t}\n\t\t}\n\t\tonDestroy(callback: () => void) {\n\t\t\tthis.onDestroyCalls.push(callback);\n\t\t}\n\t\tadoptedCallback() {\n\t\t\t// restart the process\n\t\t\tthis.innerHTML = '';\n\t\t\tthis.connectedCallback();\n\t\t}\n\t\tdisconnectedCallback() {\n\t\t\t// notify first, then call model.onDestroy func\n\t\t\tif (isOnDestroy(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onDestroy, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\n\t\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t\t\tthis.onDestroyCalls.forEach(callback => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.onDestroyCalls.splice(0, this.onDestroyCalls.length);\n\t\t\tconst event = new CustomEvent('disconnected', { cancelable: true, bubbles: false, composed: false });\n\t\t\tthis.dispatchEvent(event);\n\t\t}\n\n\t\ttriggerOutput(eventName: string, value?: any): void {\n\t\t\tconst modelEvent = this.getEventEmitter<any>(eventName);\n\t\t\tif (modelEvent) {\n\t\t\t\tmodelEvent.emit(value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n}\n"]}
|
package/view/form-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-view.js","sourceRoot":"","sources":["../../../src/core/view/form-view.ts"],"names":[],"mappings":"AAEA,OAAO,EAIN,cAAc,GACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AAM7C,MAAM,OAAO,sBAAsB;IAC1B,EAAE,CAAmB;IAC7B,YAAY,KAAwC;QACnD,IAAI,CAAC,EAAE,GAAG,KAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,MAAO,CAAC;IACxB,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,KAAiB,EAAE,KAAuC;QACtE,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CAED;AAED,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACtC,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE;QACjE,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,SAAS,IAAI;YACjB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,GAAG,EAAE,SAAS,IAAI,CAAiC,KAAU;YAC5D,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAClC,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAmB,eAAoC;IACzF,MAAM,aAAa,GAAG,eAAe,CAAI,eAAe,CAAC,CAAC;IAC1D,OAAO,MAAM,YAAgB,SAAQ,aAAa;QAEjD;;WAEG;QACH,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;QAE7B,KAAK,CAAM;QAEH,UAAU,CAAmB;QAC7B,KAAK,CAAyB;QAC9B,aAAa,CAAmB;QAExC,YAAY,YAA6B,EAAE,UAAqB;YAC/D,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAChC,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"form-view.js","sourceRoot":"","sources":["../../../src/core/view/form-view.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TypeOf } from '../utils/typeof.js';\nimport { ComponentRef } from '../component/component.js';\nimport {\n\tFormAssociatedCustomElement, HTMLFormElement,\n\tFormAssociatedComponent,\n\tValueControl,\n\tisValueControl,\n} from '../component/custom-element.js';\nimport { baseFactoryView } from './base-view.js';\nimport { ARIAMixinAttributes, isFormElement } from '@ibyar/elements';\n\nexport const NOOP_CONTROL_CHANGE = () => { };\n\nexport interface NativeElementInternals extends ElementInternals {\n\n}\n\nexport class NativeElementInternals implements ElementInternals {\n\tprivate el: HTMLInputElement;\n\tconstructor(input: FormAssociatedComponent<any, any>) {\n\t\tthis.el = input as any as HTMLInputElement;\n\t}\n\n\tget form() {\n\t\treturn this.el.form;\n\t}\n\tget labels() {\n\t\treturn this.el.labels!;\n\t}\n\n\tget shadowRoot() {\n\t\treturn this.el.shadowRoot;\n\t}\n\n\tget willValidate() {\n\t\treturn this.el.willValidate;\n\t}\n\n\tsetFormValue(value: any | null, state?: File | string | FormData | null): void {\n\t\tthis.el.value = value;\n\t}\n\n}\n\nARIAMixinAttributes.forEach(ariaName => {\n\tObject.defineProperty(NativeElementInternals.prototype, ariaName, {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\t\tget: function name(this: { el: HTMLInputElement }) {\n\t\t\treturn this.el[ariaName];\n\t\t},\n\t\tset: function name(this: { el: HTMLInputElement }, value: any) {\n\t\t\treturn this.el[ariaName] = value;\n\t\t},\n\t});\n});\n\nexport function baseFormFactoryView<T extends Object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<FormAssociatedComponent<T, any>> {\n\tconst baseViewClass = baseFactoryView<T>(htmlElementType);\n\treturn class BaseFormView<T> extends baseViewClass implements FormAssociatedCustomElement {\n\n\t\t/**\n\t\t * Identify the element as a form-associated custom element\n\t\t */\n\t\tstatic formAssociated = true;\n\n\t\tvalue: any;\n\n\t\tprivate _internals: ElementInternals;\n\t\tprivate _form: HTMLFormElement | null;\n\t\tprivate _valueControl?: ValueControl<T>;\n\n\t\tconstructor(componentRef: ComponentRef<T>, modelClass: TypeOf<T>) {\n\t\t\tsuper(componentRef, modelClass);\n\t\t\tif (componentRef.extend.name && isFormElement(componentRef.extend.name)) {\n\t\t\t\tthis._internals = new NativeElementInternals(this);\n\t\t\t} else {\n\t\t\t\tthis._internals = this.attachInternals();\n\t\t\t}\n\t\t\tlet valueControl: ValueControl<any> | undefined;\n\t\t\tif (typeof componentRef.formAssociated === 'function') {\n\t\t\t\tif (this._model instanceof componentRef.formAssociated) {\n\t\t\t\t\tvalueControl == this._model;\n\t\t\t\t} else {\n\t\t\t\t\tconst args: any[] = [this]; /* resolve dependency injection*/;\n\t\t\t\t\tvalueControl = new componentRef.formAssociated(args);\n\t\t\t\t}\n\t\t\t} else if (componentRef.formAssociated === true && isValueControl(this._model)) {\n\t\t\t\tvalueControl = this._model;\n\t\t\t}\n\t\t\tvalueControl && this.registerValueControl(valueControl);\n\t\t\tconst valueInput = componentRef.inputs.filter(input => input.viewAttribute === 'value').at(0);\n\t\t\tif (valueInput) {\n\t\t\t\tthis._modelScope.subscribe(valueInput.modelProperty as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.onValueControlChange(newValue);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tget internals(): ElementInternals {\n\t\t\treturn this._internals;\n\t\t}\n\t\tget form(): HTMLFormElement | null {\n\t\t\treturn this._form;\n\t\t}\n\t\tget valueControl(): ValueControl<T> | undefined {\n\t\t\treturn this._valueControl;\n\t\t}\n\t\tregisterValueControl(valueControl: ValueControl): void {\n\t\t\tif (this.valueControl) {\n\t\t\t\tthis.valueControl.registerOnChange(NOOP_CONTROL_CHANGE);\n\t\t\t}\n\t\t\tthis._valueControl = valueControl;\n\t\t\tthis._valueControl?.registerOnChange((value: any) => this.onValueControlChange(value));\n\t\t}\n\t\tprivate onValueControlChange(value: any) {\n\t\t\tthis._internals.setFormValue(value);\n\t\t\tthis.value = value;\n\t\t\tthis.dispatchEvent(new Event('change', { bubbles: true, cancelable: true, composed: true }));\n\t\t}\n\n\t\tformAssociatedCallback(form: HTMLFormElement | null): void {\n\t\t\tthis._form = form;\n\t\t}\n\t\tformDisabledCallback(disabled: boolean): void {\n\t\t\tthis._valueControl?.setDisabledState?.(disabled);\n\t\t}\n\t\tformResetCallback(): void {\n\t\t\tthis._valueControl?.writeValue({ mode: 'reset' });\n\t\t}\n\t\tformStateRestoreCallback(value: any, mode: 'restore' | 'autocomplete'): void {\n\t\t\tthis._valueControl?.writeValue({ value, mode });\n\t\t}\n\t}\n}\n"]}
|
package/view/mutation.js
CHANGED
|
@@ -105,7 +105,7 @@ export class MutationSubscription {
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
class ElementMutation {
|
|
108
|
+
export class ElementMutation {
|
|
109
109
|
static Mutation_OPTIONS = {
|
|
110
110
|
attributes: true,
|
|
111
111
|
childList: true,
|
|
@@ -169,5 +169,4 @@ class ElementMutation {
|
|
|
169
169
|
this.mutationCallback(records, this.mutationObserver);
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
|
-
export { ElementMutation };
|
|
173
172
|
//# sourceMappingURL=mutation.js.map
|
package/view/mutation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../../src/core/view/mutation.ts"],"names":[],"mappings":"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","sourcesContent":["interface AttributeChangeCallback {\n\t(value: any, oldValue?: any): void;\n}\n\ninterface NodeRemoveCallback {\n\t(): void;\n}\n\n\nexport class MutationObservable {\n\tprivate attributes = new Map<string, AttributeChangeCallback[]>();\n\tprivate remove = new WeakMap<Node, NodeRemoveCallback[]>();\n\tprivate insert = new WeakMap<Node, NodeRemoveCallback[]>();\n\n\temit(attributeName: string, value: any, oldValue?: any): void {\n\t\tconst calls = this.attributes.get(attributeName);\n\n\t\tcalls?.forEach(callback => {\n\t\t\ttry {\n\t\t\t\tcallback(value, oldValue);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t});\n\n\t}\n\n\temitNodeRemove(node: Node): void {\n\t\tthis.emitNode(this.remove, node);\n\t}\n\n\temitNodeInsert(node: Node): void {\n\t\tthis.emitNode(this.insert, node);\n\t}\n\n\tprivate emitNode(actionMap: WeakMap<Node, NodeRemoveCallback[]>, node: Node): void {\n\t\tconst calls = actionMap.get(node);\n\n\t\tcalls?.forEach(callback => {\n\t\t\ttry {\n\t\t\t\tcallback();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(attributeName: string, callback: AttributeChangeCallback): MutationSubscription {\n\t\tlet calls = this.attributes.get(attributeName);\n\t\tif (!calls) {\n\t\t\tcalls = [];\n\t\t\tthis.attributes.set(attributeName, calls);\n\t\t}\n\t\tcalls.push(callback);\n\t\treturn new MutationSubscription(this, attributeName, callback);\n\t}\n\n\tsubscribeOnRemoveNode(node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\treturn this.subscribeNodeAction(this.remove, node, callback);\n\t}\n\n\tsubscribeOnInsertNode(node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\treturn this.subscribeNodeAction(this.insert, node, callback);\n\t}\n\n\tprivate subscribeNodeAction(actionMap: WeakMap<Node, NodeRemoveCallback[]>, node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\tlet calls = actionMap.get(node);\n\t\tif (!calls) {\n\t\t\tcalls = [];\n\t\t\tactionMap.set(node, calls);\n\t\t}\n\t\tcalls.push(callback);\n\t\treturn new MutationSubscription(this, new WeakRef(node), callback);\n\t}\n\n\tunsubscribe(eventName: string, callback: AttributeChangeCallback): void {\n\t\tconst calls = this.attributes.get(eventName);\n\t\tif (calls) {\n\t\t\tconst index = calls.indexOf(callback);\n\t\t\tif (index !== -1) {\n\t\t\t\tcalls.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tunsubscribeOnRemoveNode(node: Node, callback: NodeRemoveCallback): void {\n\t\tthis.unsubscribeNodeAction(this.remove, node, callback);\n\t}\n\n\tunsubscribeOnInsertNode(node: Node, callback: NodeRemoveCallback): void {\n\t\tthis.unsubscribeNodeAction(this.insert, node, callback);\n\t}\n\n\tprivate unsubscribeNodeAction(actionMap: WeakMap<Node, NodeRemoveCallback[]>, node: Node, callback: NodeRemoveCallback): void {\n\t\tconst calls = actionMap.get(node);\n\t\tif (calls) {\n\t\t\tconst index = calls.indexOf(callback);\n\t\t\tif (index !== -1) {\n\t\t\t\tcalls.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tthis.attributes.clear();\n\t}\n}\n\nexport class MutationSubscription {\n\n\tprivate type: 'attribute' | 'remove';\n\tconstructor(observable: MutationObservable, node: WeakRef<Node>, callback: NodeRemoveCallback);\n\tconstructor(observable: MutationObservable, attributeName: string, callback: AttributeChangeCallback);\n\n\tconstructor(private observable: MutationObservable, private key: string | WeakRef<Node>, private callback: AttributeChangeCallback | NodeRemoveCallback) {\n\t\tthis.type = typeof key === 'string' ? 'attribute' : 'remove';\n\t}\n\n\tunsubscribe() {\n\t\tif (this.type === 'attribute') {\n\t\t\tthis.observable.unsubscribe(this.key as string, this.callback as AttributeChangeCallback);\n\t\t} else {\n\t\t\tconst ref = (this.key as WeakRef<Node>).deref();\n\t\t\tif (ref) {\n\t\t\t\tthis.observable.unsubscribeOnRemoveNode(ref, this.callback as NodeRemoveCallback);\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n\nexport class ElementMutation {\n\n\tprivate static Mutation_OPTIONS: MutationObserverInit = {\n\t\tattributes: true,\n\t\tchildList: true,\n\t\tsubtree: true,\n\t\tattributeOldValue: true,\n\t};\n\n\tprivate observables: WeakMap<Node, MutationObservable> = new WeakMap();\n\tprivate mutationCallback: MutationCallback = (mutations: MutationRecord[], observer: MutationObserver) => {\n\t\tmutations.forEach((mut) => {\n\t\t\tswitch (mut.type) {\n\t\t\t\tcase 'childList':\n\t\t\t\t\t{\n\t\t\t\t\t\t// insert/remove events\n\t\t\t\t\t\tif (mut.removedNodes.length > 0 && this.observables.has(mut.target)) {\n\t\t\t\t\t\t\tconst observable = this.observables.get(mut.target)!;\n\t\t\t\t\t\t\tmut.removedNodes.forEach(node => observable.emitNodeRemove(node));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'attributes':\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst observable = this.observables.get(mut.target);\n\t\t\t\t\t\tobservable && observable.emit(mut.attributeName as string, mut.target.nodeValue, mut.oldValue);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t};\n\tprivate mutationObserver: MutationObserver = new MutationObserver(this.mutationCallback);\n\n\tsubscribe(target: Node, attributeName: string, callback: AttributeChangeCallback): MutationSubscription {\n\t\tlet observable = this.observables.get(target);\n\t\tif (!observable) {\n\t\t\tobservable = new MutationObservable();\n\t\t\tthis.observables.set(target, observable);\n\t\t\tthis.mutationObserver.observe(target, ElementMutation.Mutation_OPTIONS);\n\t\t}\n\t\treturn observable.subscribe(attributeName, callback);\n\t}\n\n\tsubscribeOnRemoveNode(target: Node, node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\tlet observable = this.observables.get(target);\n\t\tif (!observable) {\n\t\t\tobservable = new MutationObservable();\n\t\t\tthis.observables.set(target, observable);\n\t\t\tthis.mutationObserver.observe(target, ElementMutation.Mutation_OPTIONS);\n\t\t}\n\t\treturn observable.subscribeOnRemoveNode(node, callback);\n\t}\n\n\tsubscribeOnInsertNode(target: Node, node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\tlet observable = this.observables.get(target);\n\t\tif (!observable) {\n\t\t\tobservable = new MutationObservable();\n\t\t\tthis.observables.set(target, observable);\n\t\t\tthis.mutationObserver.observe(target, ElementMutation.Mutation_OPTIONS);\n\t\t}\n\t\treturn observable.subscribeOnInsertNode(node, callback);\n\t}\n\n\tdisconnect() {\n\t\tconst records = this.mutationObserver.takeRecords();\n\t\tthis.mutationObserver.disconnect();\n\t\tthis.mutationCallback(records, this.mutationObserver);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../../src/core/view/mutation.ts"],"names":[],"mappings":"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","sourcesContent":["interface AttributeChangeCallback {\n\t(value: any, oldValue?: any): void;\n}\n\ninterface NodeRemoveCallback {\n\t(): void;\n}\n\n\nexport class MutationObservable {\n\tprivate attributes = new Map<string, AttributeChangeCallback[]>();\n\tprivate remove = new WeakMap<Node, NodeRemoveCallback[]>();\n\tprivate insert = new WeakMap<Node, NodeRemoveCallback[]>();\n\n\temit(attributeName: string, value: any, oldValue?: any): void {\n\t\tconst calls = this.attributes.get(attributeName);\n\n\t\tcalls?.forEach(callback => {\n\t\t\ttry {\n\t\t\t\tcallback(value, oldValue);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t});\n\n\t}\n\n\temitNodeRemove(node: Node): void {\n\t\tthis.emitNode(this.remove, node);\n\t}\n\n\temitNodeInsert(node: Node): void {\n\t\tthis.emitNode(this.insert, node);\n\t}\n\n\tprivate emitNode(actionMap: WeakMap<Node, NodeRemoveCallback[]>, node: Node): void {\n\t\tconst calls = actionMap.get(node);\n\n\t\tcalls?.forEach(callback => {\n\t\t\ttry {\n\t\t\t\tcallback();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(attributeName: string, callback: AttributeChangeCallback): MutationSubscription {\n\t\tlet calls = this.attributes.get(attributeName);\n\t\tif (!calls) {\n\t\t\tcalls = [];\n\t\t\tthis.attributes.set(attributeName, calls);\n\t\t}\n\t\tcalls.push(callback);\n\t\treturn new MutationSubscription(this, attributeName, callback);\n\t}\n\n\tsubscribeOnRemoveNode(node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\treturn this.subscribeNodeAction(this.remove, node, callback);\n\t}\n\n\tsubscribeOnInsertNode(node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\treturn this.subscribeNodeAction(this.insert, node, callback);\n\t}\n\n\tprivate subscribeNodeAction(actionMap: WeakMap<Node, NodeRemoveCallback[]>, node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\tlet calls = actionMap.get(node);\n\t\tif (!calls) {\n\t\t\tcalls = [];\n\t\t\tactionMap.set(node, calls);\n\t\t}\n\t\tcalls.push(callback);\n\t\treturn new MutationSubscription(this, new WeakRef(node), callback);\n\t}\n\n\tunsubscribe(eventName: string, callback: AttributeChangeCallback): void {\n\t\tconst calls = this.attributes.get(eventName);\n\t\tif (calls) {\n\t\t\tconst index = calls.indexOf(callback);\n\t\t\tif (index !== -1) {\n\t\t\t\tcalls.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tunsubscribeOnRemoveNode(node: Node, callback: NodeRemoveCallback): void {\n\t\tthis.unsubscribeNodeAction(this.remove, node, callback);\n\t}\n\n\tunsubscribeOnInsertNode(node: Node, callback: NodeRemoveCallback): void {\n\t\tthis.unsubscribeNodeAction(this.insert, node, callback);\n\t}\n\n\tprivate unsubscribeNodeAction(actionMap: WeakMap<Node, NodeRemoveCallback[]>, node: Node, callback: NodeRemoveCallback): void {\n\t\tconst calls = actionMap.get(node);\n\t\tif (calls) {\n\t\t\tconst index = calls.indexOf(callback);\n\t\t\tif (index !== -1) {\n\t\t\t\tcalls.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tthis.attributes.clear();\n\t}\n}\n\nexport class MutationSubscription {\n\n\tprivate type: 'attribute' | 'remove';\n\tconstructor(observable: MutationObservable, node: WeakRef<Node>, callback: NodeRemoveCallback);\n\tconstructor(observable: MutationObservable, attributeName: string, callback: AttributeChangeCallback);\n\n\tconstructor(private observable: MutationObservable, private key: string | WeakRef<Node>, private callback: AttributeChangeCallback | NodeRemoveCallback) {\n\t\tthis.type = typeof key === 'string' ? 'attribute' : 'remove';\n\t}\n\n\tunsubscribe() {\n\t\tif (this.type === 'attribute') {\n\t\t\tthis.observable.unsubscribe(this.key as string, this.callback as AttributeChangeCallback);\n\t\t} else {\n\t\t\tconst ref = (this.key as WeakRef<Node>).deref();\n\t\t\tif (ref) {\n\t\t\t\tthis.observable.unsubscribeOnRemoveNode(ref, this.callback as NodeRemoveCallback);\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n\nexport class ElementMutation {\n\n\tprivate static Mutation_OPTIONS: MutationObserverInit = {\n\t\tattributes: true,\n\t\tchildList: true,\n\t\tsubtree: true,\n\t\tattributeOldValue: true,\n\t};\n\n\tprivate observables: WeakMap<Node, MutationObservable> = new WeakMap();\n\tprivate mutationCallback: MutationCallback = (mutations: MutationRecord[], observer: MutationObserver) => {\n\t\tmutations.forEach((mut) => {\n\t\t\tswitch (mut.type) {\n\t\t\t\tcase 'childList':\n\t\t\t\t\t{\n\t\t\t\t\t\t// insert/remove events\n\t\t\t\t\t\tif (mut.removedNodes.length > 0 && this.observables.has(mut.target)) {\n\t\t\t\t\t\t\tconst observable = this.observables.get(mut.target)!;\n\t\t\t\t\t\t\tmut.removedNodes.forEach(node => observable.emitNodeRemove(node));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'attributes':\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst observable = this.observables.get(mut.target);\n\t\t\t\t\t\tobservable && observable.emit(mut.attributeName as string, mut.target.nodeValue, mut.oldValue);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t};\n\tprivate mutationObserver: MutationObserver = new MutationObserver(this.mutationCallback);\n\n\tsubscribe(target: Node, attributeName: string, callback: AttributeChangeCallback): MutationSubscription {\n\t\tlet observable = this.observables.get(target);\n\t\tif (!observable) {\n\t\t\tobservable = new MutationObservable();\n\t\t\tthis.observables.set(target, observable);\n\t\t\tthis.mutationObserver.observe(target, ElementMutation.Mutation_OPTIONS);\n\t\t}\n\t\treturn observable.subscribe(attributeName, callback);\n\t}\n\n\tsubscribeOnRemoveNode(target: Node, node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\tlet observable = this.observables.get(target);\n\t\tif (!observable) {\n\t\t\tobservable = new MutationObservable();\n\t\t\tthis.observables.set(target, observable);\n\t\t\tthis.mutationObserver.observe(target, ElementMutation.Mutation_OPTIONS);\n\t\t}\n\t\treturn observable.subscribeOnRemoveNode(node, callback);\n\t}\n\n\tsubscribeOnInsertNode(target: Node, node: Node, callback: NodeRemoveCallback): MutationSubscription {\n\t\tlet observable = this.observables.get(target);\n\t\tif (!observable) {\n\t\t\tobservable = new MutationObservable();\n\t\t\tthis.observables.set(target, observable);\n\t\t\tthis.mutationObserver.observe(target, ElementMutation.Mutation_OPTIONS);\n\t\t}\n\t\treturn observable.subscribeOnInsertNode(node, callback);\n\t}\n\n\tdisconnect() {\n\t\tconst records = this.mutationObserver.takeRecords();\n\t\tthis.mutationObserver.disconnect();\n\t\tthis.mutationCallback(records, this.mutationObserver);\n\t}\n}\n"]}
|
package/view/render.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare class ComponentRender<T extends object> {
|
|
|
9
9
|
private template;
|
|
10
10
|
private contextStack;
|
|
11
11
|
private templateNameScope;
|
|
12
|
+
private exportAsScope;
|
|
12
13
|
private viewScope;
|
|
13
14
|
constructor(view: HTMLComponent<T>, subscriptions: ScopeSubscription<Context>[]);
|
|
14
15
|
initView(): void;
|
|
@@ -27,6 +28,7 @@ export declare class ComponentRender<T extends object> {
|
|
|
27
28
|
is?: string;
|
|
28
29
|
}): HTMLElement;
|
|
29
30
|
createElement(node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective): HTMLElement;
|
|
31
|
+
private createReadOnlyWithReactiveInnerScope;
|
|
30
32
|
/**
|
|
31
33
|
* use for init host bindings
|
|
32
34
|
* @param element
|