@ibyar/core 2.5.0 → 3.0.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.d.ts +2 -30
- package/annotation/decorators.d.ts.map +1 -1
- package/annotation/decorators.js +2 -89
- package/annotation/decorators.js.map +1 -1
- package/annotation/options.d.ts +11 -6
- package/annotation/options.d.ts.map +1 -1
- package/annotation/options.js.map +1 -1
- package/binding/binding.expressions copy.d.ts +43 -0
- package/binding/binding.expressions copy.d.ts.map +1 -0
- package/binding/binding.expressions copy.js +161 -0
- package/binding/binding.expressions copy.js.map +1 -0
- package/binding/signal.expressions.d.ts +50 -0
- package/binding/signal.expressions.d.ts.map +1 -0
- package/binding/signal.expressions.js +182 -0
- package/binding/signal.expressions.js.map +1 -0
- package/component/component.d.ts +1 -1
- package/component/component.d.ts.map +1 -1
- package/component/component.js +5 -8
- package/component/component.js.map +1 -1
- package/component/custom-element.d.ts +4 -15
- package/component/custom-element.d.ts.map +1 -1
- package/component/custom-element.js +1 -2
- package/component/custom-element.js.map +1 -1
- package/component/initializer.d.ts +39 -27
- package/component/initializer.d.ts.map +1 -1
- package/component/initializer.js +47 -29
- package/component/initializer.js.map +1 -1
- package/component/reflect.d.ts.map +1 -1
- package/component/reflect.js +8 -2
- package/component/reflect.js.map +1 -1
- package/di/provider.d.ts +1 -0
- package/di/provider.d.ts.map +1 -1
- package/di/provider.js +11 -0
- package/di/provider.js.map +1 -1
- package/directive/directive.d.ts +21 -12
- package/directive/directive.d.ts.map +1 -1
- package/directive/directive.js +76 -27
- package/directive/directive.js.map +1 -1
- package/html/deserialize.d.ts.map +1 -1
- package/html/deserialize.js +7 -0
- package/html/deserialize.js.map +1 -1
- package/html/expression.d.ts.map +1 -1
- package/html/expression.js +41 -8
- package/html/expression.js.map +1 -1
- package/linker/change-detector-ref.d.ts +3 -3
- package/linker/change-detector-ref.js.map +1 -1
- package/linker/template-ref.js +3 -3
- package/linker/template-ref.js.map +1 -1
- package/linker/view-container-ref.d.ts.map +1 -1
- package/linker/view-container-ref.js +4 -4
- package/linker/view-container-ref.js.map +1 -1
- package/linker/view-ref.d.ts +2 -2
- package/linker/view-ref.js.map +1 -1
- package/package.json +7 -7
- package/pipe/pipe.d.ts +2 -2
- package/pipe/pipe.js +2 -2
- package/pipe/pipe.js.map +1 -1
- package/signals/factory.d.ts +3 -7
- package/signals/factory.d.ts.map +1 -1
- package/signals/factory.js +6 -12
- package/signals/factory.js.map +1 -1
- package/signals/runtime.d.ts +6 -6
- package/signals/runtime.d.ts.map +1 -1
- package/signals/runtime.js +29 -18
- package/signals/runtime.js.map +1 -1
- package/signals/scopes.d.ts +4 -0
- package/signals/scopes.d.ts.map +1 -0
- package/signals/scopes.js +4 -0
- package/signals/scopes.js.map +1 -0
- package/signals/signals.d.ts +2 -7
- package/signals/signals.d.ts.map +1 -1
- package/signals/signals.js +0 -9
- package/signals/signals.js.map +1 -1
- package/utils/elements-util.d.ts +0 -1
- package/utils/elements-util.d.ts.map +1 -1
- package/utils/elements-util.js +0 -9
- package/utils/elements-util.js.map +1 -1
- package/view/base-view.d.ts.map +1 -1
- package/view/base-view.js +38 -84
- package/view/base-view.js.map +1 -1
- package/view/render.d.ts +5 -3
- package/view/render.d.ts.map +1 -1
- package/view/render.js +64 -30
- package/view/render.js.map +1 -1
- package/view/view.d.ts.map +1 -1
- package/view/view.js +3 -16
- package/view/view.js.map +1 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { Deserializer, InfixExpressionNode, Scope, findReactiveScopeByEventMap, isReactive, isSignal } from '@ibyar/expressions';
|
|
3
|
+
import { isOnDestroy } from '../component/lifecycle.js';
|
|
4
|
+
import { createDestroySubscription } from '../context/subscription.js';
|
|
5
|
+
import { AsyncPipeProvider, AsyncPipeScope, PipeProvider } from '../pipe/pipe.js';
|
|
6
|
+
/**
|
|
7
|
+
* this.input.set(model.property |> pipe);
|
|
8
|
+
* left = this.input.set(value);
|
|
9
|
+
* right = model.property |> pipe;
|
|
10
|
+
*/
|
|
11
|
+
let SignalOneWayAssignmentExpression = (() => {
|
|
12
|
+
let _classDecorators = [Deserializer('SignalOneWayAssignment')];
|
|
13
|
+
let _classDescriptor;
|
|
14
|
+
let _classExtraInitializers = [];
|
|
15
|
+
let _classThis;
|
|
16
|
+
let _classSuper = InfixExpressionNode;
|
|
17
|
+
var SignalOneWayAssignmentExpression = class extends _classSuper {
|
|
18
|
+
static { _classThis = this; }
|
|
19
|
+
static {
|
|
20
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
21
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
22
|
+
SignalOneWayAssignmentExpression = _classThis = _classDescriptor.value;
|
|
23
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
24
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
25
|
+
}
|
|
26
|
+
static fromJSON(node, deserializer) {
|
|
27
|
+
return new SignalOneWayAssignmentExpression(deserializer(node.left), deserializer(node.right));
|
|
28
|
+
}
|
|
29
|
+
static visit(node, visitNode) {
|
|
30
|
+
visitNode(node.left);
|
|
31
|
+
visitNode(node.right);
|
|
32
|
+
}
|
|
33
|
+
rightEvents = this.right.events();
|
|
34
|
+
constructor(left, right) {
|
|
35
|
+
super('=:$', left, right);
|
|
36
|
+
}
|
|
37
|
+
set(stack, value) {
|
|
38
|
+
stack = stack.copyStack();
|
|
39
|
+
stack.pushBlockScopeFor({ '$value$': value });
|
|
40
|
+
return this.left.get(stack);
|
|
41
|
+
}
|
|
42
|
+
get(stack) {
|
|
43
|
+
const rv = this.right.get(stack);
|
|
44
|
+
this.set(stack, rv);
|
|
45
|
+
return rv;
|
|
46
|
+
}
|
|
47
|
+
subscribe(stack, pipelineNames) {
|
|
48
|
+
const subscriptions = [];
|
|
49
|
+
if (pipelineNames?.length) {
|
|
50
|
+
const syncPipeScope = Scope.blockScope();
|
|
51
|
+
const asyncPipeScope = AsyncPipeScope.blockScope();
|
|
52
|
+
let hasAsync = false, hasSync = false;
|
|
53
|
+
pipelineNames.forEach(pipelineName => {
|
|
54
|
+
const scope = stack.findScope(pipelineName);
|
|
55
|
+
const pipe = scope.get(pipelineName);
|
|
56
|
+
if (scope instanceof AsyncPipeProvider) {
|
|
57
|
+
hasAsync = true;
|
|
58
|
+
asyncPipeScope.set(pipelineName, pipe);
|
|
59
|
+
if (isOnDestroy(pipe.prototype)) {
|
|
60
|
+
subscriptions.push(createDestroySubscription(() => asyncPipeScope.unsubscribe(pipelineName)));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (scope instanceof PipeProvider) {
|
|
64
|
+
hasSync = true;
|
|
65
|
+
syncPipeScope.set(pipelineName, pipe);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
hasSync && stack.pushScope(syncPipeScope);
|
|
69
|
+
hasAsync && stack.pushScope(asyncPipeScope);
|
|
70
|
+
}
|
|
71
|
+
const tuples = findReactiveScopeByEventMap(this.rightEvents, stack);
|
|
72
|
+
const callback = () => this.get(stack);
|
|
73
|
+
tuples.forEach(tuple => {
|
|
74
|
+
const subscription = tuple[1].subscribe(tuple[0], callback);
|
|
75
|
+
subscriptions.push(subscription);
|
|
76
|
+
});
|
|
77
|
+
return subscriptions;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return SignalOneWayAssignmentExpression = _classThis;
|
|
81
|
+
})();
|
|
82
|
+
export { SignalOneWayAssignmentExpression };
|
|
83
|
+
/**
|
|
84
|
+
* `the default behavior is assign the right hand side to the left hand side.`
|
|
85
|
+
*
|
|
86
|
+
* this.input.set(model.property.get());
|
|
87
|
+
* model.property.set(this.input.get());
|
|
88
|
+
*/
|
|
89
|
+
let SignalTwoWayAssignmentExpression = (() => {
|
|
90
|
+
let _classDecorators = [Deserializer('SignalTwoWayAssignment')];
|
|
91
|
+
let _classDescriptor;
|
|
92
|
+
let _classExtraInitializers = [];
|
|
93
|
+
let _classThis;
|
|
94
|
+
let _classSuper = InfixExpressionNode;
|
|
95
|
+
var SignalTwoWayAssignmentExpression = class extends _classSuper {
|
|
96
|
+
static { _classThis = this; }
|
|
97
|
+
static {
|
|
98
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
99
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
100
|
+
SignalTwoWayAssignmentExpression = _classThis = _classDescriptor.value;
|
|
101
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
102
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
103
|
+
}
|
|
104
|
+
static fromJSON(node, deserializer) {
|
|
105
|
+
return new SignalTwoWayAssignmentExpression(deserializer(node.left), deserializer(node.right));
|
|
106
|
+
}
|
|
107
|
+
static visit(node, visitNode) {
|
|
108
|
+
visitNode(node.left);
|
|
109
|
+
visitNode(node.right);
|
|
110
|
+
}
|
|
111
|
+
rightEvents;
|
|
112
|
+
leftEvents;
|
|
113
|
+
constructor(left, right) {
|
|
114
|
+
super('=::$', left, right);
|
|
115
|
+
this.rightEvents = this.right.getCallee().events();
|
|
116
|
+
this.leftEvents = this.left.getCallee().events();
|
|
117
|
+
}
|
|
118
|
+
set(stack, value) {
|
|
119
|
+
return this.setRTL(stack, value);
|
|
120
|
+
}
|
|
121
|
+
get(stack) {
|
|
122
|
+
return this.getRTL(stack);
|
|
123
|
+
}
|
|
124
|
+
setRTL(stack, value) {
|
|
125
|
+
stack = stack.copyStack();
|
|
126
|
+
stack.pushBlockScopeFor({ '$value$': value });
|
|
127
|
+
return this.left.get(stack);
|
|
128
|
+
}
|
|
129
|
+
getRTL(stack) {
|
|
130
|
+
const rv = this.right.get(stack);
|
|
131
|
+
this.setRTL(stack, rv);
|
|
132
|
+
return rv;
|
|
133
|
+
}
|
|
134
|
+
actionRTL(stack) {
|
|
135
|
+
return () => this.getRTL(stack);
|
|
136
|
+
}
|
|
137
|
+
setLTR(stack, value) {
|
|
138
|
+
stack = stack.copyStack();
|
|
139
|
+
stack.pushBlockScopeFor({ '$value$': value });
|
|
140
|
+
return this.right.get(stack);
|
|
141
|
+
}
|
|
142
|
+
getLTR(stack) {
|
|
143
|
+
const lv = this.left.get(stack);
|
|
144
|
+
this.setLTR(stack, lv);
|
|
145
|
+
return lv;
|
|
146
|
+
}
|
|
147
|
+
actionLTR(stack) {
|
|
148
|
+
return () => this.getLTR(stack);
|
|
149
|
+
}
|
|
150
|
+
bindSignal(getter, setter) {
|
|
151
|
+
const value = isReactive(getter) ? getter.get() : getter;
|
|
152
|
+
if (isSignal(setter)) {
|
|
153
|
+
setter.set(value);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
setter = value;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
subscribeToEvents(stack, tuples, actionCallback) {
|
|
160
|
+
const subscriptions = [];
|
|
161
|
+
tuples.forEach(tuple => {
|
|
162
|
+
const subscription = tuple[1].subscribe(tuple[0], actionCallback);
|
|
163
|
+
subscriptions.push(subscription);
|
|
164
|
+
});
|
|
165
|
+
return subscriptions;
|
|
166
|
+
}
|
|
167
|
+
subscribe(stack) {
|
|
168
|
+
// right to left
|
|
169
|
+
const rightTuples = findReactiveScopeByEventMap(this.rightEvents, stack);
|
|
170
|
+
const rtlAction = this.actionRTL(stack);
|
|
171
|
+
const rtlSubscriptions = this.subscribeToEvents(stack, rightTuples, rtlAction);
|
|
172
|
+
// left to right
|
|
173
|
+
const leftTuples = findReactiveScopeByEventMap(this.leftEvents, stack);
|
|
174
|
+
const ltrAction = this.actionLTR(stack);
|
|
175
|
+
const ltrSubscriptions = this.subscribeToEvents(stack, leftTuples, ltrAction);
|
|
176
|
+
return rtlSubscriptions.concat(ltrSubscriptions);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
return SignalTwoWayAssignmentExpression = _classThis;
|
|
180
|
+
})();
|
|
181
|
+
export { SignalTwoWayAssignmentExpression };
|
|
182
|
+
//# sourceMappingURL=signal.expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.expressions.js","sourceRoot":"","sources":["../../../src/core/binding/signal.expressions.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tCallExpression, Context, Deserializer, ExpressionEventMap,\n\tExpressionNode, InfixExpressionNode, NodeDeserializer,\n\tReactiveScope, Scope, ScopeSubscription, Stack,\n\tValueChangedCallback, VisitNodeType,\n\tfindReactiveScopeByEventMap, isReactive, isSignal\n} from '@ibyar/expressions';\nimport { isOnDestroy } from '../component/lifecycle.js';\nimport { createDestroySubscription } from '../context/subscription.js';\nimport { AsyncPipeProvider, AsyncPipeScope, PipeProvider } from '../pipe/pipe.js';\n\ntype SignalOneWayOperator = '=:$';\ntype SignalTwoWayOperator = '=::$';\ntype SignalBindingOperators = SignalOneWayOperator | SignalTwoWayOperator;\n\nexport interface SignalBindingAssignment extends InfixExpressionNode<SignalBindingOperators> {\n\tsubscribe(stack: Stack, pipelineNames?: string[]): ScopeSubscription<Context>[];\n}\n\n\n/**\n * this.input.set(model.property |> pipe);\n * left = this.input.set(value);\n * right = model.property |> pipe;\n */\n@Deserializer('SignalOneWayAssignment')\nexport class SignalOneWayAssignmentExpression extends InfixExpressionNode<SignalOneWayOperator> implements SignalBindingAssignment {\n\tstatic fromJSON(node: SignalOneWayAssignmentExpression, deserializer: NodeDeserializer): SignalOneWayAssignmentExpression {\n\t\treturn new SignalOneWayAssignmentExpression(\n\t\t\tdeserializer(node.left) as CallExpression,\n\t\t\tdeserializer(node.right)\n\t\t);\n\t}\n\tstatic visit(node: SignalOneWayAssignmentExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\n\tdeclare protected left: CallExpression;\n\tprivate rightEvents = this.right.events();\n\tconstructor(left: CallExpression, right: ExpressionNode) {\n\t\tsuper('=:$', left, right);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tstack = stack.copyStack();\n\t\tstack.pushBlockScopeFor({ '$value$': value });\n\t\treturn this.left.get(stack);\n\t}\n\tget(stack: Stack): any {\n\t\tconst rv = this.right.get(stack);\n\t\tthis.set(stack, rv);\n\t\treturn rv;\n\t}\n\tsubscribe(stack: Stack, pipelineNames?: string[]): ScopeSubscription<Context>[] {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\t\tif (pipelineNames?.length) {\n\t\t\tconst syncPipeScope = Scope.blockScope();\n\t\t\tconst asyncPipeScope = AsyncPipeScope.blockScope();\n\t\t\tlet hasAsync = false, hasSync = false;\n\t\t\tpipelineNames.forEach(pipelineName => {\n\t\t\t\tconst scope = stack.findScope(pipelineName);\n\t\t\t\tconst pipe = scope.get(pipelineName)!;\n\t\t\t\tif (scope instanceof AsyncPipeProvider) {\n\t\t\t\t\thasAsync = true;\n\t\t\t\t\tasyncPipeScope.set(pipelineName, pipe);\n\t\t\t\t\tif (isOnDestroy(pipe.prototype)) {\n\t\t\t\t\t\tsubscriptions.push(createDestroySubscription(() => asyncPipeScope.unsubscribe(pipelineName)));\n\t\t\t\t\t}\n\t\t\t\t} else if (scope instanceof PipeProvider) {\n\t\t\t\t\thasSync = true;\n\t\t\t\t\tsyncPipeScope.set(pipelineName, pipe);\n\t\t\t\t}\n\t\t\t});\n\t\t\thasSync && stack.pushScope(syncPipeScope);\n\t\t\thasAsync && stack.pushScope(asyncPipeScope);\n\t\t}\n\t\tconst tuples = findReactiveScopeByEventMap(this.rightEvents, stack);\n\t\tconst callback: ValueChangedCallback = () => this.get(stack);\n\t\ttuples.forEach(tuple => {\n\t\t\tconst subscription = tuple[1].subscribe(tuple[0], callback);\n\t\t\tsubscriptions.push(subscription);\n\t\t});\n\t\treturn subscriptions;\n\t}\n}\n\n\n/**\n * `the default behavior is assign the right hand side to the left hand side.`\n * \n * this.input.set(model.property.get());\n * model.property.set(this.input.get());\n */\n@Deserializer('SignalTwoWayAssignment')\nexport class SignalTwoWayAssignmentExpression extends InfixExpressionNode<SignalTwoWayOperator> implements SignalBindingAssignment {\n\tstatic fromJSON(node: SignalTwoWayAssignmentExpression, deserializer: NodeDeserializer): SignalTwoWayAssignmentExpression {\n\t\treturn new SignalTwoWayAssignmentExpression(\n\t\t\tdeserializer(node.left) as CallExpression,\n\t\t\tdeserializer(node.right) as CallExpression\n\t\t);\n\t}\n\tstatic visit(node: SignalTwoWayAssignmentExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\n\tdeclare protected left: CallExpression;\n\tdeclare protected right: CallExpression;\n\n\tprivate rightEvents: ExpressionEventMap;\n\tprivate leftEvents: ExpressionEventMap;\n\tconstructor(left: CallExpression, right: CallExpression) {\n\t\tsuper('=::$', left, right);\n\t\tthis.rightEvents = this.right.getCallee().events();\n\t\tthis.leftEvents = this.left.getCallee().events();\n\t}\n\n\tset(stack: Stack, value: any) {\n\t\treturn this.setRTL(stack, value);\n\t}\n\tget(stack: Stack): any {\n\t\treturn this.getRTL(stack);\n\t}\n\n\tprivate setRTL(stack: Stack, value: any) {\n\t\tstack = stack.copyStack();\n\t\tstack.pushBlockScopeFor({ '$value$': value });\n\t\treturn this.left.get(stack);\n\t}\n\tprivate getRTL(stack: Stack): any {\n\t\tconst rv = this.right.get(stack);\n\t\tthis.setRTL(stack, rv);\n\t\treturn rv;\n\t}\n\tprivate actionRTL(stack: Stack): ValueChangedCallback {\n\t\treturn () => this.getRTL(stack);\n\t}\n\n\tprivate setLTR(stack: Stack, value: any) {\n\t\tstack = stack.copyStack();\n\t\tstack.pushBlockScopeFor({ '$value$': value });\n\t\treturn this.right.get(stack);\n\t}\n\tprivate getLTR(stack: Stack): any {\n\t\tconst lv = this.left.get(stack);\n\t\tthis.setLTR(stack, lv);\n\t\treturn lv;\n\t}\n\tprivate actionLTR(stack: Stack): ValueChangedCallback {\n\t\treturn () => this.getLTR(stack);\n\t}\n\n\tprivate bindSignal(getter: any, setter: any) {\n\t\tconst value = isReactive(getter) ? getter.get() : getter;\n\t\tif (isSignal(setter)) {\n\t\t\tsetter.set(value);\n\t\t} else {\n\t\t\tsetter = value;\n\t\t}\n\t}\n\n\tprivate subscribeToEvents(stack: Stack, tuples: [string, ReactiveScope<Context>][], actionCallback: ValueChangedCallback) {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\t\ttuples.forEach(tuple => {\n\t\t\tconst subscription = tuple[1].subscribe(tuple[0], actionCallback);\n\t\t\tsubscriptions.push(subscription);\n\t\t});\n\t\treturn subscriptions;\n\t}\n\n\tsubscribe(stack: Stack): ScopeSubscription<Context>[] {\n\n\t\t// right to left\n\t\tconst rightTuples = findReactiveScopeByEventMap(this.rightEvents, stack);\n\t\tconst rtlAction = this.actionRTL(stack);\n\t\tconst rtlSubscriptions = this.subscribeToEvents(stack, rightTuples, rtlAction);\n\n\t\t// left to right \n\t\tconst leftTuples = findReactiveScopeByEventMap(this.leftEvents, stack);\n\t\tconst ltrAction = this.actionLTR(stack);\n\t\tconst ltrSubscriptions = this.subscribeToEvents(stack, leftTuples, ltrAction);\n\n\t\treturn rtlSubscriptions.concat(ltrSubscriptions);\n\t}\n\n}\n"]}
|
package/component/component.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type MetadataClass, type MetadataContext } from '@ibyar/decorators';
|
|
2
2
|
import type { Type } from '../utils/typeof.js';
|
|
3
3
|
import type { ZoneType } from '../zone/bootstrap.js';
|
|
4
4
|
import { Tag, DomNode, DomRenderNode, DomElementNode } from '@ibyar/elements';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/core/component/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/core/component/component.ts"],"names":[],"mappings":"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"}
|
package/component/component.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { metadataHoler } from '@ibyar/decorators';
|
|
1
2
|
import { findByTagName, htmlParser, templateParser, canAttachShadow, directiveRegistry, DomElementNode, DomParentNode, isValidCustomElementName } from '@ibyar/elements';
|
|
2
3
|
import { classRegistryProvider } from '../providers/provider.js';
|
|
3
4
|
import { initCustomElementView } from '../view/view.js';
|
|
@@ -26,7 +27,8 @@ export class Components {
|
|
|
26
27
|
}
|
|
27
28
|
static defineDirective(modelClass, opts, metadata) {
|
|
28
29
|
if (!opts.signals) {
|
|
29
|
-
|
|
30
|
+
const scanParent = !metadataHoler.has(Object.getPrototypeOf(modelClass));
|
|
31
|
+
opts.signals = RuntimeClassMetadata.scanMetadata(modelClass, scanParent);
|
|
30
32
|
}
|
|
31
33
|
this.scanRuntimeSignals(modelClass, opts, metadata);
|
|
32
34
|
Object.assign(metadata, opts);
|
|
@@ -68,7 +70,8 @@ export class Components {
|
|
|
68
70
|
}
|
|
69
71
|
static defineComponent(modelClass, opts, metadata) {
|
|
70
72
|
if (!opts.signals) {
|
|
71
|
-
|
|
73
|
+
const scanParent = !metadataHoler.has(Object.getPrototypeOf(modelClass));
|
|
74
|
+
opts.signals = RuntimeClassMetadata.scanMetadata(modelClass, scanParent);
|
|
72
75
|
}
|
|
73
76
|
this.scanRuntimeSignals(modelClass, opts, metadata);
|
|
74
77
|
const componentRef = Object.assign(metadata, opts);
|
|
@@ -175,12 +178,6 @@ export class Components {
|
|
|
175
178
|
signals.filter(item => item.signal === 'output')
|
|
176
179
|
.flatMap(item => item.options)
|
|
177
180
|
.forEach(option => ReflectComponents.addOutput(metadata, option.name, option.alias, {}));
|
|
178
|
-
signals.filter(item => item.signal === 'model')
|
|
179
|
-
.flatMap(item => item.options)
|
|
180
|
-
.forEach(option => {
|
|
181
|
-
ReflectComponents.addInput(metadata, option.name, option.alias);
|
|
182
|
-
ReflectComponents.addOutput(metadata, option.name, option.alias, {});
|
|
183
|
-
});
|
|
184
181
|
signals.filter(item => item.signal === 'view')
|
|
185
182
|
.flatMap(item => item.options)
|
|
186
183
|
.forEach(option => ReflectComponents.setComponentView(metadata, option.name));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/core/component/component.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MetadataClass, MetadataContext } from '@ibyar/decorators';\nimport type { Type } from '../utils/typeof.js';\nimport type { ZoneType } from '../zone/bootstrap.js';\nimport {\n\tfindByTagName, Tag, htmlParser, templateParser,\n\tDomNode, DomRenderNode, canAttachShadow,\n\tdirectiveRegistry, DomElementNode,\n\tDomParentNode, isValidCustomElementName\n} from '@ibyar/elements';\n\nimport { HTMLComponent, ValueControl } from './custom-element.js';\nimport { classRegistryProvider } from '../providers/provider.js';\nimport { AttributeDirective, StructuralDirective } from '../directive/directive.js';\nimport { initCustomElementView } from '../view/view.js';\nimport { buildExpressionNodes } from '../html/expression.js';\nimport {\n\tComponentOptions, PipeOptions,\n\tInjectableOptions, DirectiveOptions\n} from '../annotation/options.js';\nimport {\n\tChildRef, HostBindingRef, InputPropertyRef,\n\tListenerRef, OutputPropertyRef, PropertyRef,\n\tReflectComponents\n} from './reflect.js';\nimport { deserializeExpressionNodes } from '../html/deserialize.js';\nimport { parseHostNode } from '../html/host.js';\nimport { provide } from '../di/inject.js';\nimport { RuntimeClassMetadata, SignalRuntimeMetadata } from '../signals/runtime.js';\n\n\nexport interface InjectableRef<T> {\n\tprovideIn: Type<CustomElementConstructor> | 'root' | 'platform' | 'any';\n\tmodelClass: Type<T>;\n\tname: string;\n}\n\nexport interface PipeRef<T> {\n\tname: string;\n\tasynchronous?: boolean;\n\tmodelClass: Type<T>;\n}\nexport interface DirectiveRef<T> {\n\tselector: string;\n\texportAs?: string;\n\tzone?: ZoneType;\n\n\tmodelClass: Type<StructuralDirective> | Type<AttributeDirective>;\n\n\tinputs: PropertyRef[];\n\toutputs: PropertyRef[];\n\tview: string;\n\tviewChild: ChildRef[];\n\tViewChildren: ChildRef[];\n\thostListeners: ListenerRef[];\n\thostBindings: HostBindingRef[];\n\tviewBindings?: DomElementNode;\n\tsignals: SignalRuntimeMetadata[];\n}\n\nexport interface ComponentRef<T> {\n\tselector: string;\n\ttemplate: DomNode | DomRenderNode<T>;\n\tcompiledTemplate?: DomNode;\n\tstyles: string;\n\textend: Tag;\n\textendCustomElement: boolean;\n\n\tviewClass: MetadataClass<HTMLComponent<T>> & CustomElementConstructor;\n\tmodelClass: Type<T>;\n\n\tinputs: InputPropertyRef[];\n\toutputs: OutputPropertyRef[];\n\tview: string;\n\tviewChild: ChildRef[];\n\tViewChildren: ChildRef[];\n\thostBindings: HostBindingRef[];\n\thostListeners: ListenerRef[];\n\tviewBindings?: DomElementNode;\n\twindowBindings?: DomElementNode;\n\n\tencapsulation: 'custom' | 'shadow-dom' | 'template' | 'shadow-dom-template' | 'shadow-slot';\n\tisShadowDom: boolean;\n\tshadowRootInit: ShadowRootInit;\n\tdisabledFeatures?: ('internals' | 'shadow')[];\n\tformAssociated: boolean | Type<ValueControl<any>>;\n\tzone?: ZoneType;\n\tsignals: SignalRuntimeMetadata[];\n}\n\nconst DEFAULT_SHADOW_ROOT_INIT: ShadowRootInit = { mode: 'open', delegatesFocus: false, slotAssignment: 'named' };\n\nexport class Components {\n\n\tprivate static EMPTY_LIST = Object.freeze<any>([]);\n\tprivate static emptyList<T>(): T[] {\n\t\treturn Components.EMPTY_LIST as T[];\n\t}\n\n\tprivate static patchTemplate(child: DomNode, templates: DomElementNode[]): void {\n\t\tif (child instanceof DomElementNode && child.templateRefName?.name) {\n\t\t\tconst ref = templates.find(node => child.templateRefName?.name === node.templateRefName?.name);\n\t\t\tif (ref?.outputs) {\n\t\t\t\t(child.outputs ??= []).push(...ref.outputs);\n\t\t\t}\n\t\t}\n\t\tif (child instanceof DomParentNode) {\n\t\t\tchild.children?.forEach(node => Components.patchTemplate(node, templates));\n\t\t}\n\t}\n\n\n\tstatic defineDirective(modelClass: MetadataClass, opts: DirectiveOptions, metadata: MetadataContext) {\n\t\tif (!(opts as any as DirectiveRef<Type<any>>).signals) {\n\t\t\t(opts as any as DirectiveRef<Type<any>>).signals = RuntimeClassMetadata.scanMetadata(modelClass);\n\t\t}\n\t\tthis.scanRuntimeSignals(modelClass, opts as any as DirectiveRef<Type<any>>, metadata);\n\t\tObject.assign(metadata, opts);\n\t\tif (metadata.hostListeners?.length || metadata.hostBindings?.length) {\n\t\t\tconst hostNode = parseHostNode({\n\t\t\t\tprototype: modelClass.prototype,\n\t\t\t\thostBindings: metadata.hostBindings,\n\t\t\t\thostListeners: metadata.hostListeners,\n\t\t\t});\n\t\t\tmetadata.viewBindings = hostNode.host;\n\t\t}\n\t\tmetadata.modelClass = modelClass;\n\t\tclassRegistryProvider.registerDirective(modelClass);\n\t\tconst successors: string[] = [];\n\t\tif (metadata.successor) {\n\t\t\tsuccessors.push(metadata.successor.trim());\n\t\t}\n\t\tif (Array.isArray(metadata.successors)) {\n\t\t\tsuccessors.push(...metadata.successors.map(s => s.trim()));\n\t\t}\n\t\tmetadata.successors = successors;\n\t\tdirectiveRegistry.register(opts.selector, {\n\t\t\tinputs: (metadata.inputs as PropertyRef[])?.map(input => input.viewAttribute),\n\t\t\toutputs: (metadata.outputs as PropertyRef[])?.map(output => output.viewAttribute),\n\t\t\tsuccessors: successors,\n\t\t});\n\t}\n\n\tstatic definePipe<T extends Type<any>>(modelClass: MetadataClass<T>, opts: PipeOptions, metadata: MetadataContext) {\n\t\tObject.assign(metadata, opts);\n\t\tmetadata.modelClass = modelClass;\n\t\tclassRegistryProvider.registerPipe(modelClass);\n\t}\n\n\tstatic defineInjectable<T extends Type<any>>(modelClass: MetadataClass<T>, opts: InjectableOptions, metadata: MetadataContext) {\n\t\tObject.assign(metadata, opts);\n\t\tmetadata.modelClass = modelClass;\n\t\tmetadata.name = modelClass.name;\n\t\tclassRegistryProvider.registerInjectable(modelClass);\n\t\tprovide(modelClass);\n\t}\n\n\tstatic defineComponent<T extends Type<any>>(modelClass: MetadataClass<T>, opts: ComponentOptions<T>, metadata: MetadataContext) {\n\t\tif (!(opts as any as ComponentRef<T>).signals) {\n\t\t\t(opts as any as ComponentRef<T>).signals = RuntimeClassMetadata.scanMetadata(modelClass);\n\t\t}\n\t\tthis.scanRuntimeSignals(modelClass, opts as any as ComponentRef<T>, metadata);\n\t\tconst componentRef = Object.assign(metadata, opts) as any as ComponentRef<T>;\n\t\tcomponentRef.extend = findByTagName(opts.extend);\n\t\tcomponentRef.extendCustomElement = !!opts.extend && isValidCustomElementName(opts.extend);\n\t\tif (typeof componentRef.template === 'string') {\n\t\t\tif (componentRef.styles) {\n\t\t\t\tconst template = `<style>${componentRef.styles}</style>${componentRef.template}`;\n\t\t\t\tcomponentRef.template = htmlParser.toDomRootNode(template);\n\t\t\t} else {\n\t\t\t\tcomponentRef.template = htmlParser.toDomRootNode(componentRef.template);\n\t\t\t}\n\t\t\tbuildExpressionNodes(componentRef.template);\n\t\t} else if (typeof componentRef.template === 'object') {\n\t\t\tbuildExpressionNodes(componentRef.template);\n\t\t} else if (typeof componentRef.compiledTemplate === 'object') {\n\t\t\thtmlParser.deserializeNode(componentRef.compiledTemplate);\n\t\t\tdeserializeExpressionNodes(componentRef.compiledTemplate);\n\t\t\tcomponentRef.template = componentRef.compiledTemplate;\n\t\t\tcomponentRef.compiledTemplate = undefined;\n\t\t}\n\n\t\tif (!componentRef.template && /template/g.test(componentRef.encapsulation)) {\n\t\t\tconst template = document.querySelector('#' + componentRef.selector);\n\t\t\tif (template && template instanceof HTMLTemplateElement) {\n\t\t\t\tcomponentRef.template = templateParser.parse(template);\n\t\t\t\tbuildExpressionNodes(componentRef.template);\n\t\t\t} else {\n\t\t\t\t// didn't find this template in 'index.html' document\n\t\t\t}\n\t\t}\n\n\t\tcomponentRef.inputs ||= Components.emptyList();\n\t\tcomponentRef.outputs ||= Components.emptyList();\n\t\tcomponentRef.viewChild ||= Components.emptyList();\n\t\tcomponentRef.ViewChildren ||= Components.emptyList();\n\t\tcomponentRef.hostBindings ||= Components.emptyList();\n\t\tcomponentRef.hostListeners ||= Components.emptyList();\n\t\tcomponentRef.encapsulation ||= 'custom';\n\t\tcomponentRef.isShadowDom = /shadow/g.test(componentRef.encapsulation);\n\t\tif (componentRef.isShadowDom) {\n\t\t\tcomponentRef.shadowRootInit = Object.assign({}, DEFAULT_SHADOW_ROOT_INIT, (componentRef.shadowRootInit ?? {}));\n\t\t}\n\n\t\tif (componentRef.hostListeners.length || componentRef.hostBindings.length) {\n\t\t\tconst hostNode = parseHostNode({\n\t\t\t\tprototype: modelClass.prototype,\n\t\t\t\tselector: componentRef.selector,\n\t\t\t\thostBindings: componentRef.hostBindings,\n\t\t\t\thostListeners: componentRef.hostListeners,\n\t\t\t});\n\t\t\tcomponentRef.viewBindings = hostNode.host;\n\t\t\tcomponentRef.windowBindings = hostNode.window;\n\n\t\t\tif (typeof componentRef.template === 'function') {\n\t\t\t\tconst creator = componentRef.template;\n\t\t\t\tcomponentRef.template = (model: T) => {\n\t\t\t\t\tconst template = creator(model);\n\t\t\t\t\tif (hostNode.template) {\n\t\t\t\t\t\tComponents.patchTemplate(template, hostNode.template);\n\t\t\t\t\t}\n\t\t\t\t\treturn template;\n\t\t\t\t};\n\t\t\t} else if (hostNode.template) {\n\t\t\t\tComponents.patchTemplate(componentRef.template, hostNode.template);\n\t\t\t}\n\n\t\t}\n\n\t\tif (!(componentRef.formAssociated === true || typeof componentRef.formAssociated === 'function')) {\n\t\t\tcomponentRef.formAssociated = false;\n\t\t}\n\n\t\tif (componentRef.isShadowDom && componentRef.extend.name) {\n\t\t\tcomponentRef.isShadowDom = canAttachShadow(componentRef.extend.name);\n\t\t}\n\n\t\tcomponentRef.modelClass = modelClass;\n\t\tcomponentRef.viewClass = initCustomElementView(modelClass, componentRef);\n\n\t\tclassRegistryProvider.registerComponent(modelClass);\n\t\tclassRegistryProvider.registerView(componentRef.viewClass);\n\n\t\tconst options: ElementDefinitionOptions = {};\n\t\tconst parentTagName = componentRef.extend?.name;\n\t\tif (parentTagName) {\n\t\t\tif (parentTagName !== '!' && parentTagName.indexOf('-') === -1) {\n\t\t\t\toptions.extends = parentTagName;\n\t\t\t}\n\t\t}\n\n\n\t\tcustomElements.define(\n\t\t\tcomponentRef.selector as string,\n\t\t\tcomponentRef.viewClass as CustomElementConstructor,\n\t\t\toptions\n\t\t);\n\n\t}\n\n\tstatic defineView<T extends HTMLElement>(viewClass: MetadataClass<T>, opt: { selector: string } & ElementDefinitionOptions) {\n\t\tclassRegistryProvider.registerView(viewClass);\n\t\tconst { selector, ...definition } = opt;\n\t\tcustomElements.define(\n\t\t\tselector,\n\t\t\tviewClass,\n\t\t\tdefinition,\n\t\t);\n\t}\n\n\tprivate static scanRuntimeSignals<T extends Type<any>>(modelClass: MetadataClass<T>, opts: { signals: SignalRuntimeMetadata[] }, metadata: MetadataContext) {\n\t\tif (!opts.signals) {\n\t\t\treturn;\n\t\t}\n\t\tconst signals = opts.signals;\n\t\tsignals.filter(item => item.signal === 'input')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.addInput(metadata, option.name, option.alias));\n\t\tsignals.filter(item => item.signal === 'formValue')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.addInput(metadata, option.name, 'view'));\n\t\tsignals.filter(item => item.signal === 'output')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.addOutput(metadata, option.name, option.alias, {}));\n\t\tsignals.filter(item => item.signal === 'model')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => {\n\t\t\t\tReflectComponents.addInput(metadata, option.name, option.alias);\n\t\t\t\tReflectComponents.addOutput(metadata, option.name, option.alias, {});\n\t\t\t});\n\t\tsignals.filter(item => item.signal === 'view')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.setComponentView(metadata, option.name));\n\n\t\tsignals.filter(item => item.signal === 'viewChild')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.addViewChild(metadata, option.name, 'ɵSignal', {}));\n\t}\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/core/component/component.ts"],"names":[],"mappings":"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","sourcesContent":["import { metadataHoler, type MetadataClass, type MetadataContext } from '@ibyar/decorators';\nimport type { Type } from '../utils/typeof.js';\nimport type { ZoneType } from '../zone/bootstrap.js';\nimport {\n\tfindByTagName, Tag, htmlParser, templateParser,\n\tDomNode, DomRenderNode, canAttachShadow,\n\tdirectiveRegistry, DomElementNode,\n\tDomParentNode, isValidCustomElementName\n} from '@ibyar/elements';\n\nimport { HTMLComponent, ValueControl } from './custom-element.js';\nimport { classRegistryProvider } from '../providers/provider.js';\nimport { AttributeDirective, StructuralDirective } from '../directive/directive.js';\nimport { initCustomElementView } from '../view/view.js';\nimport { buildExpressionNodes } from '../html/expression.js';\nimport {\n\tComponentOptions, PipeOptions,\n\tInjectableOptions, DirectiveOptions\n} from '../annotation/options.js';\nimport {\n\tChildRef, HostBindingRef, InputPropertyRef,\n\tListenerRef, OutputPropertyRef, PropertyRef,\n\tReflectComponents\n} from './reflect.js';\nimport { deserializeExpressionNodes } from '../html/deserialize.js';\nimport { parseHostNode } from '../html/host.js';\nimport { provide } from '../di/inject.js';\nimport { RuntimeClassMetadata, SignalRuntimeMetadata } from '../signals/runtime.js';\n\n\nexport interface InjectableRef<T> {\n\tprovideIn: Type<CustomElementConstructor> | 'root' | 'platform' | 'any';\n\tmodelClass: Type<T>;\n\tname: string;\n}\n\nexport interface PipeRef<T> {\n\tname: string;\n\tasynchronous?: boolean;\n\tmodelClass: Type<T>;\n}\nexport interface DirectiveRef<T> {\n\tselector: string;\n\texportAs?: string;\n\tzone?: ZoneType;\n\n\tmodelClass: Type<StructuralDirective> | Type<AttributeDirective>;\n\n\tinputs: PropertyRef[];\n\toutputs: PropertyRef[];\n\tview: string;\n\tviewChild: ChildRef[];\n\tViewChildren: ChildRef[];\n\thostListeners: ListenerRef[];\n\thostBindings: HostBindingRef[];\n\tviewBindings?: DomElementNode;\n\tsignals: SignalRuntimeMetadata[];\n}\n\nexport interface ComponentRef<T> {\n\tselector: string;\n\ttemplate: DomNode | DomRenderNode<T>;\n\tcompiledTemplate?: DomNode;\n\tstyles: string;\n\textend: Tag;\n\textendCustomElement: boolean;\n\n\tviewClass: MetadataClass<HTMLComponent<T>> & CustomElementConstructor;\n\tmodelClass: Type<T>;\n\n\tinputs: InputPropertyRef[];\n\toutputs: OutputPropertyRef[];\n\tview: string;\n\tviewChild: ChildRef[];\n\tViewChildren: ChildRef[];\n\thostBindings: HostBindingRef[];\n\thostListeners: ListenerRef[];\n\tviewBindings?: DomElementNode;\n\twindowBindings?: DomElementNode;\n\n\tencapsulation: 'custom' | 'shadow-dom' | 'template' | 'shadow-dom-template' | 'shadow-slot';\n\tisShadowDom: boolean;\n\tshadowRootInit: ShadowRootInit;\n\tdisabledFeatures?: ('internals' | 'shadow')[];\n\tformAssociated: boolean | Type<ValueControl<any>>;\n\tzone?: ZoneType;\n\tsignals: SignalRuntimeMetadata[];\n}\n\nconst DEFAULT_SHADOW_ROOT_INIT: ShadowRootInit = { mode: 'open', delegatesFocus: false, slotAssignment: 'named' };\n\nexport class Components {\n\n\tprivate static EMPTY_LIST = Object.freeze<any>([]);\n\tprivate static emptyList<T>(): T[] {\n\t\treturn Components.EMPTY_LIST as T[];\n\t}\n\n\tprivate static patchTemplate(child: DomNode, templates: DomElementNode[]): void {\n\t\tif (child instanceof DomElementNode && child.templateRefName?.name) {\n\t\t\tconst ref = templates.find(node => child.templateRefName?.name === node.templateRefName?.name);\n\t\t\tif (ref?.outputs) {\n\t\t\t\t(child.outputs ??= []).push(...ref.outputs);\n\t\t\t}\n\t\t}\n\t\tif (child instanceof DomParentNode) {\n\t\t\tchild.children?.forEach(node => Components.patchTemplate(node, templates));\n\t\t}\n\t}\n\n\n\tstatic defineDirective(modelClass: MetadataClass, opts: DirectiveOptions, metadata: MetadataContext) {\n\t\tif (!(opts as any as DirectiveRef<Type<any>>).signals) {\n\t\t\tconst scanParent = !metadataHoler.has(Object.getPrototypeOf(modelClass));\n\t\t\t(opts as any as DirectiveRef<Type<any>>).signals = RuntimeClassMetadata.scanMetadata(modelClass, scanParent);\n\t\t}\n\t\tthis.scanRuntimeSignals(modelClass, opts as any as DirectiveRef<Type<any>>, metadata);\n\t\tObject.assign(metadata, opts);\n\t\tif (metadata.hostListeners?.length || metadata.hostBindings?.length) {\n\t\t\tconst hostNode = parseHostNode({\n\t\t\t\tprototype: modelClass.prototype,\n\t\t\t\thostBindings: metadata.hostBindings,\n\t\t\t\thostListeners: metadata.hostListeners,\n\t\t\t});\n\t\t\tmetadata.viewBindings = hostNode.host;\n\t\t}\n\t\tmetadata.modelClass = modelClass;\n\t\tclassRegistryProvider.registerDirective(modelClass);\n\t\tconst successors: string[] = [];\n\t\tif (metadata.successor) {\n\t\t\tsuccessors.push(metadata.successor.trim());\n\t\t}\n\t\tif (Array.isArray(metadata.successors)) {\n\t\t\tsuccessors.push(...metadata.successors.map(s => s.trim()));\n\t\t}\n\t\tmetadata.successors = successors;\n\t\tdirectiveRegistry.register(opts.selector, {\n\t\t\tinputs: (metadata.inputs as PropertyRef[])?.map(input => input.viewAttribute),\n\t\t\toutputs: (metadata.outputs as PropertyRef[])?.map(output => output.viewAttribute),\n\t\t\tsuccessors: successors,\n\t\t});\n\t}\n\n\tstatic definePipe<T extends Type<any>>(modelClass: MetadataClass<T>, opts: PipeOptions, metadata: MetadataContext) {\n\t\tObject.assign(metadata, opts);\n\t\tmetadata.modelClass = modelClass;\n\t\tclassRegistryProvider.registerPipe(modelClass);\n\t}\n\n\tstatic defineInjectable<T extends Type<any>>(modelClass: MetadataClass<T>, opts: InjectableOptions, metadata: MetadataContext) {\n\t\tObject.assign(metadata, opts);\n\t\tmetadata.modelClass = modelClass;\n\t\tmetadata.name = modelClass.name;\n\t\tclassRegistryProvider.registerInjectable(modelClass);\n\t\tprovide(modelClass);\n\t}\n\n\tstatic defineComponent<T extends Type<any>>(modelClass: MetadataClass<T>, opts: ComponentOptions<T>, metadata: MetadataContext) {\n\t\tif (!(opts as any as ComponentRef<T>).signals) {\n\t\t\tconst scanParent = !metadataHoler.has(Object.getPrototypeOf(modelClass));\n\t\t\t(opts as any as ComponentRef<T>).signals = RuntimeClassMetadata.scanMetadata(modelClass, scanParent);\n\t\t}\n\t\tthis.scanRuntimeSignals(modelClass, opts as any as ComponentRef<T>, metadata);\n\t\tconst componentRef = Object.assign(metadata, opts) as any as ComponentRef<T>;\n\t\tcomponentRef.extend = findByTagName(opts.extend);\n\t\tcomponentRef.extendCustomElement = !!opts.extend && isValidCustomElementName(opts.extend);\n\t\tif (typeof componentRef.template === 'string') {\n\t\t\tif (componentRef.styles) {\n\t\t\t\tconst template = `<style>${componentRef.styles}</style>${componentRef.template}`;\n\t\t\t\tcomponentRef.template = htmlParser.toDomRootNode(template);\n\t\t\t} else {\n\t\t\t\tcomponentRef.template = htmlParser.toDomRootNode(componentRef.template);\n\t\t\t}\n\t\t\tbuildExpressionNodes(componentRef.template);\n\t\t} else if (typeof componentRef.template === 'object') {\n\t\t\tbuildExpressionNodes(componentRef.template);\n\t\t} else if (typeof componentRef.compiledTemplate === 'object') {\n\t\t\thtmlParser.deserializeNode(componentRef.compiledTemplate);\n\t\t\tdeserializeExpressionNodes(componentRef.compiledTemplate);\n\t\t\tcomponentRef.template = componentRef.compiledTemplate;\n\t\t\tcomponentRef.compiledTemplate = undefined;\n\t\t}\n\n\t\tif (!componentRef.template && /template/g.test(componentRef.encapsulation)) {\n\t\t\tconst template = document.querySelector('#' + componentRef.selector);\n\t\t\tif (template && template instanceof HTMLTemplateElement) {\n\t\t\t\tcomponentRef.template = templateParser.parse(template);\n\t\t\t\tbuildExpressionNodes(componentRef.template);\n\t\t\t} else {\n\t\t\t\t// didn't find this template in 'index.html' document\n\t\t\t}\n\t\t}\n\n\t\tcomponentRef.inputs ||= Components.emptyList();\n\t\tcomponentRef.outputs ||= Components.emptyList();\n\t\tcomponentRef.viewChild ||= Components.emptyList();\n\t\tcomponentRef.ViewChildren ||= Components.emptyList();\n\t\tcomponentRef.hostBindings ||= Components.emptyList();\n\t\tcomponentRef.hostListeners ||= Components.emptyList();\n\t\tcomponentRef.encapsulation ||= 'custom';\n\t\tcomponentRef.isShadowDom = /shadow/g.test(componentRef.encapsulation);\n\t\tif (componentRef.isShadowDom) {\n\t\t\tcomponentRef.shadowRootInit = Object.assign({}, DEFAULT_SHADOW_ROOT_INIT, (componentRef.shadowRootInit ?? {}));\n\t\t}\n\n\t\tif (componentRef.hostListeners.length || componentRef.hostBindings.length) {\n\t\t\tconst hostNode = parseHostNode({\n\t\t\t\tprototype: modelClass.prototype,\n\t\t\t\tselector: componentRef.selector,\n\t\t\t\thostBindings: componentRef.hostBindings,\n\t\t\t\thostListeners: componentRef.hostListeners,\n\t\t\t});\n\t\t\tcomponentRef.viewBindings = hostNode.host;\n\t\t\tcomponentRef.windowBindings = hostNode.window;\n\n\t\t\tif (typeof componentRef.template === 'function') {\n\t\t\t\tconst creator = componentRef.template;\n\t\t\t\tcomponentRef.template = (model: T) => {\n\t\t\t\t\tconst template = creator(model);\n\t\t\t\t\tif (hostNode.template) {\n\t\t\t\t\t\tComponents.patchTemplate(template, hostNode.template);\n\t\t\t\t\t}\n\t\t\t\t\treturn template;\n\t\t\t\t};\n\t\t\t} else if (hostNode.template) {\n\t\t\t\tComponents.patchTemplate(componentRef.template, hostNode.template);\n\t\t\t}\n\n\t\t}\n\n\t\tif (!(componentRef.formAssociated === true || typeof componentRef.formAssociated === 'function')) {\n\t\t\tcomponentRef.formAssociated = false;\n\t\t}\n\n\t\tif (componentRef.isShadowDom && componentRef.extend.name) {\n\t\t\tcomponentRef.isShadowDom = canAttachShadow(componentRef.extend.name);\n\t\t}\n\n\t\tcomponentRef.modelClass = modelClass;\n\t\tcomponentRef.viewClass = initCustomElementView(modelClass, componentRef);\n\n\t\tclassRegistryProvider.registerComponent(modelClass);\n\t\tclassRegistryProvider.registerView(componentRef.viewClass);\n\n\t\tconst options: ElementDefinitionOptions = {};\n\t\tconst parentTagName = componentRef.extend?.name;\n\t\tif (parentTagName) {\n\t\t\tif (parentTagName !== '!' && parentTagName.indexOf('-') === -1) {\n\t\t\t\toptions.extends = parentTagName;\n\t\t\t}\n\t\t}\n\n\n\t\tcustomElements.define(\n\t\t\tcomponentRef.selector as string,\n\t\t\tcomponentRef.viewClass as CustomElementConstructor,\n\t\t\toptions\n\t\t);\n\n\t}\n\n\tstatic defineView<T extends HTMLElement>(viewClass: MetadataClass<T>, opt: { selector: string } & ElementDefinitionOptions) {\n\t\tclassRegistryProvider.registerView(viewClass);\n\t\tconst { selector, ...definition } = opt;\n\t\tcustomElements.define(\n\t\t\tselector,\n\t\t\tviewClass,\n\t\t\tdefinition,\n\t\t);\n\t}\n\n\tprivate static scanRuntimeSignals<T extends Type<any>>(modelClass: MetadataClass<T>, opts: { signals: SignalRuntimeMetadata[] }, metadata: MetadataContext) {\n\t\tif (!opts.signals) {\n\t\t\treturn;\n\t\t}\n\t\tconst signals = opts.signals;\n\t\tsignals.filter(item => item.signal === 'input')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.addInput(metadata, option.name, option.alias));\n\t\tsignals.filter(item => item.signal === 'formValue')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.addInput(metadata, option.name, 'view'));\n\t\tsignals.filter(item => item.signal === 'output')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.addOutput(metadata, option.name, option.alias, {}));\n\t\tsignals.filter(item => item.signal === 'view')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.setComponentView(metadata, option.name));\n\n\t\tsignals.filter(item => item.signal === 'viewChild')\n\t\t\t.flatMap(item => item.options)\n\t\t\t.forEach(option => ReflectComponents.addViewChild(metadata, option.name, 'ɵSignal', {}));\n\t}\n\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { ReactiveScope,
|
|
1
|
+
import type { ReactiveScope, ReactiveControlScope, Context, SignalScope } from '@ibyar/expressions';
|
|
2
2
|
import type { Type } from '../utils/typeof.js';
|
|
3
|
-
import { EventEmitter } from './events.js';
|
|
4
3
|
import { ComponentRef } from './component.js';
|
|
5
4
|
import { AuroraZone } from '../zone/zone.js';
|
|
6
5
|
import { PropertyRef } from './reflect.js';
|
|
7
6
|
import { InjectionProvider } from '../di/provider.js';
|
|
8
7
|
import { ChangeDetectorRef } from '../linker/change-detector-ref.js';
|
|
8
|
+
import { ComponentRender } from '../view/render.js';
|
|
9
9
|
export interface CustomElement {
|
|
10
10
|
adoptedCallback(): void;
|
|
11
11
|
attributeChangedCallback(name: string, oldValue: any, newValue: any): void;
|
|
@@ -18,7 +18,7 @@ export type NodeContextType<T> = {
|
|
|
18
18
|
};
|
|
19
19
|
export interface BaseComponent<T> extends CustomElement {
|
|
20
20
|
_model: ModelType<T>;
|
|
21
|
-
_modelScope:
|
|
21
|
+
_modelScope: ReactiveControlScope<T & Context>;
|
|
22
22
|
_signalScope: SignalScope;
|
|
23
23
|
_viewScope: ReactiveScope<{
|
|
24
24
|
'this': BaseComponent<T>;
|
|
@@ -26,23 +26,12 @@ export interface BaseComponent<T> extends CustomElement {
|
|
|
26
26
|
_zone: AuroraZone;
|
|
27
27
|
_provider: InjectionProvider;
|
|
28
28
|
_detector: ChangeDetectorRef;
|
|
29
|
+
_render: ComponentRender<any>;
|
|
29
30
|
getComponentRef(): ComponentRef<T>;
|
|
30
|
-
hasInputStartWith(viewProp: string): boolean;
|
|
31
|
-
getInputStartWith(viewProp: string): PropertyRef | undefined;
|
|
32
31
|
getInput(viewProp: string): PropertyRef | undefined;
|
|
33
32
|
getInputValue(viewProp: string): any;
|
|
34
33
|
setInputValue(viewProp: string, value: any): void;
|
|
35
|
-
hasInput(viewProp: string): boolean;
|
|
36
|
-
hasProp(propName: string): boolean;
|
|
37
|
-
hasOutput(viewProp: string): boolean;
|
|
38
|
-
getOutput(viewProp: string): PropertyRef | undefined;
|
|
39
|
-
getEventEmitter<V>(viewProp: string): EventEmitter<V> | undefined;
|
|
40
|
-
triggerOutput(eventName: string, value?: any): void;
|
|
41
34
|
onDestroy(callback: () => void): void;
|
|
42
|
-
/**
|
|
43
|
-
* apply change detection
|
|
44
|
-
*/
|
|
45
|
-
detectChanges(): void;
|
|
46
35
|
}
|
|
47
36
|
export interface HTMLComponent<T> extends BaseComponent<T>, HTMLElement {
|
|
48
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-element.d.ts","sourceRoot":"","sources":["../../../src/core/component/custom-element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"custom-element.d.ts","sourceRoot":"","sources":["../../../src/core/component/custom-element.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export function isHTMLComponent(object) {
|
|
2
|
-
return Reflect.has(object, '_model')
|
|
3
|
-
&& object instanceof HTMLElement;
|
|
2
|
+
return object instanceof HTMLElement && Reflect.has(object, '_model');
|
|
4
3
|
}
|
|
5
4
|
export function isHTMLComponentOfType(object, typeClass) {
|
|
6
5
|
return isHTMLComponent(object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-element.js","sourceRoot":"","sources":["../../../src/core/component/custom-element.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"custom-element.js","sourceRoot":"","sources":["../../../src/core/component/custom-element.ts"],"names":[],"mappings":"AA0CA,MAAM,UAAU,eAAe,CAAC,MAAW;IAC1C,OAAO,MAAM,YAAY,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAmB,MAAW,EAAE,SAAkB;IACtF,OAAO,eAAe,CAAC,MAAM,CAAC;WAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,SAAS,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAoB;IACjD,OAAO,OAAO,IAAI,OAAO,YAAY,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACxD,OAAO,OAAO,IAAI,OAAO,YAAY,kBAAkB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5F,CAAC;AAqHD,MAAM,UAAU,cAAc,CAAC,GAAQ;IACtC,OAAO,GAAG;WACN,OAAO,GAAG,KAAK,QAAQ;WACvB,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU;WACpC,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,CAAC;AAChD,CAAC","sourcesContent":["import type { ReactiveScope, ReactiveControlScope, Context, SignalScope } from '@ibyar/expressions';\nimport type { Type } from '../utils/typeof.js';\nimport { ComponentRef } from './component.js';\nimport { AuroraZone } from '../zone/zone.js';\nimport { PropertyRef } from './reflect.js';\nimport { InjectionProvider } from '../di/provider.js';\nimport { ChangeDetectorRef } from '../linker/change-detector-ref.js';\nimport { ComponentRender } from '../view/render.js';\n\nexport interface CustomElement {\n\tadoptedCallback(): void;\n\tattributeChangedCallback(name: string, oldValue: any, newValue: any): void;\n\tconnectedCallback(): void;\n\tdisconnectedCallback(): void;\n}\n\nexport type ModelType<T> = T & Context;\n\nexport type NodeContextType<T> = { 'this': BaseComponent<T> };\n\nexport interface BaseComponent<T> extends CustomElement {\n\n\t_model: ModelType<T>;\n\t_modelScope: ReactiveControlScope<T & Context>;\n\t_signalScope: SignalScope;\n\t_viewScope: ReactiveScope<{ 'this': BaseComponent<T> }>;\n\t_zone: AuroraZone;\n\t_provider: InjectionProvider;\n\t_detector: ChangeDetectorRef;\n\t_render: ComponentRender<any>;\n\n\tgetComponentRef(): ComponentRef<T>;\n\tgetInput(viewProp: string): PropertyRef | undefined;\n\tgetInputValue(viewProp: string): any;\n\tsetInputValue(viewProp: string, value: any): void;\n\n\tonDestroy(callback: () => void): void;\n\n}\n\nexport interface HTMLComponent<T> extends BaseComponent<T>, HTMLElement { }\n\nexport function isHTMLComponent(object: any): object is HTMLComponent<any> {\n\treturn object instanceof HTMLElement && Reflect.has(object, '_model');\n}\n\nexport function isHTMLComponentOfType<T extends object>(object: any, typeClass: Type<T>): object is HTMLComponent<T> {\n\treturn isHTMLComponent(object)\n\t\t&& Reflect.get(object, '_model') instanceof typeClass;\n}\n\nexport function isHTMLElement(element: HTMLElement): element is HTMLElement {\n\treturn element && element instanceof HTMLElement && !element.tagName?.includes('-');\n}\n\nexport function isHTMLUnknownElement(element: HTMLElement): element is HTMLElement {\n\treturn element && element instanceof HTMLUnknownElement && !element.tagName?.includes('-');\n}\n\n/**\n * Lifecycle callbacks\n * A map, whose keys are the strings \"connectedCallback\", \"disconnectedCallback\", \"adoptedCallback\", \"attributeChangedCallback\", \n * \"formAssociatedCallback\", \"formDisabledCallback\", \"formResetCallback\", and \"formStateRestoreCallback\" \n * https://html.spec.whatwg.org/multipage/custom-elements.html#concept-custom-element-definition-lifecycle-callbacks\n * \n * A form-associated custom element API includes a set of extra lifecycle callbacks to tie in to the form lifecycle.\n * The callbacks are optional: only implement a callback if your element needs to do something at that point in the lifecycle.\n * https://html.spec.whatwg.org/multipage/custom-elements.html#the-elementinternals-interface \n * https://docs.google.com/document/d/1JO8puctCSpW-ZYGU8lF-h4FWRIDQNDVexzHoOQ2iQmY/edit\n */\nexport interface FormAssociatedCustomElement extends CustomElement {\n\n\t/**\n\t * Called when the browser associates the element with a form element,\n\t * or disassociates the element from a form element.\n\t * @param form \n\t */\n\tformAssociatedCallback(form: HTMLFormElement | null): void;\n\n\t/**\n\t * Called after the disabled state of the element changes,\n\t * either because the disabled attribute of this element was added or removed;\n\t * or because the disabled state changed on a <fieldset> that's an ancestor of this element.\n\t * The disabled parameter represents the new disabled state of the element.\n\t * The element may, for example, disable elements in its shadow DOM when it is disabled.\n\t * @param disabled \n\t */\n\tformDisabledCallback(disabled: boolean): void;\n\n\t/**\n\t * Called after the form is reset.\n\t * The element should reset itself to some kind of default state.\n\t * For <input> elements, this usually involves setting the value property to\n\t * match the value attribute set in markup (or in the case of a checkbox,\n\t * setting the checked property to match the checked attribute.\n\t */\n\tformResetCallback(): void;\n\n\t/**\n\t * Called in one of two circumstances:\n\t * When the browser restores the state of the element (for example, after a navigation, or when the browser restarts).\n\t * The mode argument is \"restore\" in this case.\n\t * \n\t * When the browser's input-assist features such as form auto filling sets a value.\n\t * The mode argument is \"autocomplete\" in this case.\n\t * \n\t * The type of the first argument depends on how the setFormValue() method was called.\n\t * For more details, see Restoring form state.\n\t */\n\tformStateRestoreCallback(value: any, mode: 'restore' | 'autocomplete'): void;\n}\n\nexport type WriteValueMode = 'restore' | 'autocomplete' | 'reset';\n\nexport type WriteValueOptions<T> = { value: T | null, mode?: 'restore' | 'autocomplete' } | { value?: undefined, mode: 'reset' };\n\n\nexport interface ValueControl<T = any> {\n\t/**\n\t * reset the value of the\n\t * @param value \n\t * @param mode \n\t */\n\twriteValue(opt: { value?: undefined, mode: 'reset' }): void;\n\n\t/**\n\t * \n\t * When the browser restores the state of the element (for example, after a navigation, or when the browser restarts).\n\t * The mode argument is \"restore\" in this case.\n\t * \n\t * When the browser's input-assist features such as form auto filling sets a value.\n\t * The mode argument is \"autocomplete\" in this case.\n\t * \n\t * @param opt: options contain the `value` to be written and `mode` represented by `restore` or `autocomplete` or `undefined`\n\t */\n\n\twriteValue(opt: { value: T | null, mode?: 'restore' | 'autocomplete' }): void;\n\n\twriteValue(opt: { value?: T | null, mode?: WriteValueMode }): void;\n\n\twriteValue(opt: WriteValueOptions<T>): void;\n\n\t/**\n\t * This method is called when new `ValueControl` assigned to the form associated element.\n\t * \n\t * When implementing the registerOnChange method in your own value accessor, save the given function so your class calls it at the appropriate time.\n\t * \n\t * ```ts\n\t * registerOnChange(fn: (_: any) => void): void {\n\t * \tthis._onChange = fn;\n\t * }\n\t * ```\n\t * \n\t * When the value changes in the UI, call the registered function to allow the forms API to update itself:\n\t * \n\t * ```ts\n\t * \n\t * onChange(event: Event){\n\t * \t\n\t * }\n\t * \n\t * ```\n\t * @param fn the function to be called when a control want to change the value of a form associated element.\n\t */\n\n\tregisterOnChange(fn: (value?: T | null) => void): void;\n\n\t/**\n\t * called when `disabled` attribute change.\n\t * @param isDisabled \n\t */\n\tsetDisabledState?(isDisabled: boolean): void;\n}\n\nexport function isValueControl(obj: any): obj is ValueControl {\n\treturn obj\n\t\t&& typeof obj === 'object'\n\t\t&& typeof obj.writeValue === 'function'\n\t\t&& typeof obj.registerOnChange === 'function';\n}\n\nexport interface BaseFormAssociatedComponent<T extends Object> extends BaseComponent<T>, FormAssociatedCustomElement {\n\treadonly internals: ElementInternals;\n\treadonly form: HTMLFormElement | null;\n\treadonly valueControl?: ValueControl<T>;\n\n\tregisterValueControl(valueControl: ValueControl): void;\n}\n\nexport interface FormAssociatedComponent<T extends Object, V = any> extends BaseFormAssociatedComponent<T>, HTMLComponent<T> {\n\n\tvalue: V | null;\n}\n\nexport type HTMLFormElement = HTMLButtonElement | HTMLDataListElement | HTMLFieldSetElement | HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\n\nexport interface ConstructorOfView<T> {\n\tnew(): T;\n\treadonly prototype: T;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Signal, SignalScope } from '@ibyar/expressions';
|
|
2
2
|
import { InjectionToken } from '../di/provider.js';
|
|
3
3
|
import { Type } from '../utils/typeof.js';
|
|
4
4
|
import { HTMLComponent } from './custom-element.js';
|
|
@@ -7,24 +7,46 @@ export interface InputOptions<T, TransformT> {
|
|
|
7
7
|
alias?: string;
|
|
8
8
|
transform?: (v: TransformT) => T;
|
|
9
9
|
}
|
|
10
|
-
export type InputOptionsWithoutTransform<T> = Omit<InputOptions<T, T>, 'transform'
|
|
11
|
-
transform?: undefined;
|
|
12
|
-
};
|
|
10
|
+
export type InputOptionsWithoutTransform<T> = Omit<InputOptions<T, T>, 'transform'>;
|
|
13
11
|
export type InputOptionsWithTransform<T, TransformT> = Required<Pick<InputOptions<T, TransformT>, 'transform'>> & InputOptions<T, TransformT>;
|
|
14
|
-
export interface
|
|
12
|
+
export interface InputWithTransform<T, TransformT = T> extends Signal<T> {
|
|
13
|
+
options?: InputOptions<T, TransformT>;
|
|
14
|
+
}
|
|
15
|
+
export interface InputWithoutTransform<T> extends InputWithTransform<T, T> {
|
|
16
|
+
options?: InputOptionsWithoutTransform<T>;
|
|
15
17
|
}
|
|
16
|
-
export
|
|
18
|
+
export declare class InputSignal<T, TransformT = T> extends Signal<T> implements InputWithoutTransform<T> {
|
|
19
|
+
options?: (InputOptions<T, TransformT> & {
|
|
20
|
+
required?: boolean;
|
|
21
|
+
}) | undefined;
|
|
22
|
+
constructor(scope: SignalScope, index: number, initValue?: T, options?: (InputOptions<T, TransformT> & {
|
|
23
|
+
required?: boolean;
|
|
24
|
+
}) | undefined);
|
|
25
|
+
set(value: T): void;
|
|
26
|
+
set(value: TransformT): void;
|
|
17
27
|
}
|
|
18
|
-
export declare function
|
|
19
|
-
export declare function input<T>(
|
|
20
|
-
export declare function input<T, TransformT = T>(
|
|
21
|
-
export declare function input<T
|
|
28
|
+
export declare function isInputSignal<T = any>(signal: any): signal is InputSignal<T>;
|
|
29
|
+
export declare function input<T>(): InputWithoutTransform<T>;
|
|
30
|
+
export declare function input<T, TransformT = T>(initValue: T, options: InputOptionsWithTransform<T, TransformT>): InputWithTransform<T, TransformT>;
|
|
31
|
+
export declare function input<T>(initValue: T, options?: InputOptionsWithoutTransform<T>): InputWithoutTransform<T>;
|
|
32
|
+
export declare function input<T, TransformT = T>(initValue?: T, options?: InputOptions<T, TransformT>): InputWithTransform<T, TransformT>;
|
|
22
33
|
export declare namespace input {
|
|
23
34
|
var required: typeof requiredInput;
|
|
24
35
|
}
|
|
25
|
-
declare function requiredInput<T>():
|
|
26
|
-
declare
|
|
27
|
-
|
|
36
|
+
declare function requiredInput<T, TransformT = T>(options?: InputOptions<T, TransformT>): InputWithTransform<T, TransformT>;
|
|
37
|
+
export declare class FormValueSignal<T> extends Signal<T> {
|
|
38
|
+
options?: {
|
|
39
|
+
required?: boolean;
|
|
40
|
+
} | undefined;
|
|
41
|
+
constructor(scope: SignalScope, index: number, initValue?: T, options?: {
|
|
42
|
+
required?: boolean;
|
|
43
|
+
} | undefined);
|
|
44
|
+
}
|
|
45
|
+
export declare function formValue<T>(initValue?: T): FormValueSignal<T>;
|
|
46
|
+
export declare namespace formValue {
|
|
47
|
+
var required: typeof requiredFormValue;
|
|
48
|
+
}
|
|
49
|
+
declare function requiredFormValue<T>(): FormValueSignal<T>;
|
|
28
50
|
type OutputOption = OutputEventInit & {
|
|
29
51
|
alias?: string;
|
|
30
52
|
};
|
|
@@ -33,23 +55,12 @@ export interface OutputSignal<T> extends Signal<T> {
|
|
|
33
55
|
update: never;
|
|
34
56
|
}
|
|
35
57
|
export declare class OutputSignal<T> extends Signal<T> {
|
|
36
|
-
options?: OutputOption;
|
|
58
|
+
options?: OutputOption | undefined;
|
|
59
|
+
constructor(scope: SignalScope, index: number, options?: OutputOption | undefined);
|
|
37
60
|
emit(value: T): void;
|
|
38
61
|
}
|
|
39
62
|
export declare function isOutputSignal<T = any>(signal: any): signal is OutputSignal<T>;
|
|
40
|
-
export declare function output<T>(
|
|
41
|
-
interface ModelOptions {
|
|
42
|
-
alias?: string;
|
|
43
|
-
}
|
|
44
|
-
export interface ModelSignal<T> extends WritableSignal<T> {
|
|
45
|
-
subscribe(callback: (value: T) => void): ScopeSubscription<T>;
|
|
46
|
-
}
|
|
47
|
-
export declare function model<T>(): ModelSignal<T>;
|
|
48
|
-
export declare function model<T>(opts?: ModelOptions): ModelSignal<T>;
|
|
49
|
-
export declare namespace model {
|
|
50
|
-
var required: typeof requiredModel;
|
|
51
|
-
}
|
|
52
|
-
declare function requiredModel<T>(): ModelSignal<T>;
|
|
63
|
+
export declare function output<T>(options?: OutputOption): OutputSignal<T>;
|
|
53
64
|
export declare const VIEW_TOKEN: InjectionToken<HTMLElement>;
|
|
54
65
|
export declare function view(): HTMLElement;
|
|
55
66
|
export declare function view<T extends keyof HTMLElementTagNameMap>(extend: T): HTMLElementTagNameMap[T];
|
|
@@ -57,6 +68,7 @@ export declare function view<T>(type: Type<T>): HTMLComponent<T>;
|
|
|
57
68
|
export declare function view<T, V extends keyof HTMLElementTagNameMap>(type: Type<T>, extend: V): HTMLComponent<T> & HTMLElementTagNameMap[V];
|
|
58
69
|
export declare class ViewChildSignal<T> extends Signal<T> {
|
|
59
70
|
selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap;
|
|
71
|
+
constructor(scope: SignalScope, index: number, selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap);
|
|
60
72
|
}
|
|
61
73
|
export declare function isViewChildSignal<T = any>(signal: any): signal is ViewChildSignal<T>;
|
|
62
74
|
export declare function viewChild<T extends HTMLElement>(selector: Type<T>): Signal<T>;
|