@ibyar/core 3.1.1 → 5.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/LICENSE +1 -1
- package/annotation/decorators.d.ts +4 -0
- package/annotation/decorators.d.ts.map +1 -1
- package/annotation/decorators.js +7 -1
- package/annotation/decorators.js.map +1 -1
- package/annotation/options.d.ts +4 -0
- package/annotation/options.d.ts.map +1 -1
- package/annotation/options.js.map +1 -1
- package/component/component.d.ts +1 -1
- package/component/component.d.ts.map +1 -1
- package/component/component.js +2 -2
- package/component/component.js.map +1 -1
- package/component/custom-element.d.ts +42 -0
- package/component/custom-element.d.ts.map +1 -1
- package/component/custom-element.js.map +1 -1
- package/component/initializer.d.ts +1 -1
- package/component/initializer.d.ts.map +1 -1
- package/component/initializer.js.map +1 -1
- package/component/lifecycle.d.ts +20 -0
- package/component/lifecycle.d.ts.map +1 -1
- package/component/lifecycle.js +6 -0
- package/component/lifecycle.js.map +1 -1
- package/di/inject.js +1 -1
- package/di/inject.js.map +1 -1
- package/directive/providers.d.ts +1 -2
- package/directive/providers.d.ts.map +1 -1
- package/directive/providers.js.map +1 -1
- package/linker/view-container-ref.d.ts +64 -32
- package/linker/view-container-ref.d.ts.map +1 -1
- package/linker/view-container-ref.js +39 -27
- package/linker/view-container-ref.js.map +1 -1
- package/linker/view-ref.d.ts +15 -3
- package/linker/view-ref.d.ts.map +1 -1
- package/linker/view-ref.js +17 -0
- package/linker/view-ref.js.map +1 -1
- package/package.json +10 -9
- package/pipe/pipe.d.ts +3 -9
- package/pipe/pipe.d.ts.map +1 -1
- package/pipe/pipe.js +39 -7
- package/pipe/pipe.js.map +1 -1
- package/providers/provider.d.ts +4 -4
- package/providers/provider.d.ts.map +1 -1
- package/providers/provider.js +9 -9
- package/providers/provider.js.map +1 -1
- package/view/base-view.d.ts.map +1 -1
- package/view/base-view.js +20 -9
- package/view/base-view.js.map +1 -1
- package/view/form-view.js +1 -1
- package/view/form-view.js.map +1 -1
- package/view/render.d.ts +0 -1
- package/view/render.d.ts.map +1 -1
- package/view/render.js +16 -30
- package/view/render.js.map +1 -1
- package/view/shadow-root.d.ts +8 -0
- package/view/shadow-root.d.ts.map +1 -0
- package/view/shadow-root.js +15 -0
- package/view/shadow-root.js.map +1 -0
package/view/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/core/view/render.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EAEP,iBAAiB,EACjB,KAAK,EAEL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,WAAW,EAAE,0BAA0B,EAAE,sBAAsB,EAC/D,cAAc,EAAE,eAAe,EAAE,OAAO,EACG,eAAe,EAC1D,WAAW,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/core/view/render.ts"],"names":[],"mappings":"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"}
|
package/view/render.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactiveScope, Stack, isComputed, isSignal, isReactive } from '@ibyar/expressions';
|
|
2
|
-
import { CommentNode, DomStructuralDirectiveNode, LocalTemplateVariables, DomElementNode, DomFragmentNode, isLiveTextContent, isTagNameNative, isValidCustomElementName, TextContent,
|
|
2
|
+
import { CommentNode, DomStructuralDirectiveNode, LocalTemplateVariables, DomElementNode, DomFragmentNode, isLiveTextContent, isTagNameNative, isValidCustomElementName, TextContent, readInputValue, getChangeEventNameFoTag, getInputChangeEventName } from '@ibyar/elements';
|
|
3
3
|
import { isHTMLComponent } from '../component/custom-element.js';
|
|
4
4
|
import { documentStack } from '../context/stack.js';
|
|
5
5
|
import { classRegistryProvider } from '../providers/provider.js';
|
|
@@ -10,21 +10,10 @@ import { TemplateRef, TemplateRefImpl } from '../linker/template-ref.js';
|
|
|
10
10
|
import { ViewContainerRef, ViewContainerRefImpl } from '../linker/view-container-ref.js';
|
|
11
11
|
import { createDestroySubscription } from '../context/subscription.js';
|
|
12
12
|
import { isViewChildSignal } from '../component/initializer.js';
|
|
13
|
-
import { addProvider, removeProvider } from '../di/inject.js';
|
|
13
|
+
import { addProvider, inject, removeProvider } from '../di/inject.js';
|
|
14
14
|
import { AbstractAuroraZone } from '../zone/zone.js';
|
|
15
15
|
import { clearSignalScope, pushNewSignalScope } from '../signals/signals.js';
|
|
16
|
-
|
|
17
|
-
switch (true) {
|
|
18
|
-
case tagName === 'input':
|
|
19
|
-
return 'input';
|
|
20
|
-
case tagName === 'textarea':
|
|
21
|
-
case tagName === 'select':
|
|
22
|
-
case isFormAssociatedCustomElementByTag(tagName):
|
|
23
|
-
return 'change';
|
|
24
|
-
default:
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
16
|
+
import { ShadowRootService } from './shadow-root.js';
|
|
28
17
|
export class ComponentRender {
|
|
29
18
|
view;
|
|
30
19
|
subscriptions;
|
|
@@ -60,9 +49,9 @@ export class ComponentRender {
|
|
|
60
49
|
this.template = this.componentRef.template;
|
|
61
50
|
}
|
|
62
51
|
let rootRef;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
52
|
+
const shadowRootService = inject(ShadowRootService);
|
|
53
|
+
if (this.componentRef.isShadowDom && shadowRootService.has(this.view)) {
|
|
54
|
+
rootRef = shadowRootService.get(this.view);
|
|
66
55
|
}
|
|
67
56
|
else {
|
|
68
57
|
rootRef = this.view;
|
|
@@ -205,8 +194,9 @@ export class ComponentRender {
|
|
|
205
194
|
fragmentParent.append(this.createElement(child, contextStack, subscriptions, host));
|
|
206
195
|
}
|
|
207
196
|
else if (child instanceof DomStructuralDirectiveNode) {
|
|
208
|
-
const comment = document.createComment(` @${child.name.substring(1)} ${
|
|
197
|
+
const comment = document.createComment(` @${child.name.substring(1)} ${child.value ? `(${child.value}) {` : '{'}`);
|
|
209
198
|
fragmentParent.append(comment);
|
|
199
|
+
fragmentParent.append(document.createComment('}'));
|
|
210
200
|
this.createStructuralDirective(child, comment, contextStack, subscriptions, parentNode, host);
|
|
211
201
|
}
|
|
212
202
|
else if (isLiveTextContent(child)) {
|
|
@@ -254,27 +244,23 @@ export class ComponentRender {
|
|
|
254
244
|
this.initHtmlElement(element, node, contextStack, subscriptions, host);
|
|
255
245
|
return element;
|
|
256
246
|
}
|
|
257
|
-
createReadOnlyWithReactiveInnerScope(ctx, aliasName, propertyKeys) {
|
|
258
|
-
const scope = ReactiveScope.readOnlyScopeForThis(ctx, propertyKeys);
|
|
259
|
-
if (aliasName) {
|
|
260
|
-
const thisInnerScope = scope.getInnerScope('this');
|
|
261
|
-
scope.set(aliasName, ctx);
|
|
262
|
-
scope.setInnerScope(aliasName, thisInnerScope);
|
|
263
|
-
}
|
|
264
|
-
return scope;
|
|
265
|
-
}
|
|
266
247
|
initHtmlElement(element, node, contextStack, subscriptions, host) {
|
|
267
248
|
const elementStack = contextStack.copyStack();
|
|
268
249
|
const elementScope = isHTMLComponent(element)
|
|
269
250
|
? element._viewScope
|
|
270
|
-
:
|
|
251
|
+
: (node.templateRefName?.name
|
|
252
|
+
? ReactiveScope.readOnlyScopeForAliasThis(element, node.templateRefName.name)
|
|
253
|
+
: ReactiveScope.readOnlyScopeForThis(element));
|
|
271
254
|
elementStack.pushScope(elementScope);
|
|
272
255
|
const attributesSubscriptions = this.initAttribute(element, node, elementStack);
|
|
273
256
|
subscriptions.push(...attributesSubscriptions);
|
|
274
|
-
const changeEventName =
|
|
257
|
+
const changeEventName = getChangeEventNameFoTag(node.tagName);
|
|
275
258
|
if (changeEventName) {
|
|
276
259
|
const inputScope = elementScope.getInnerScope('this');
|
|
277
|
-
const listener = (event) =>
|
|
260
|
+
const listener = (event) => {
|
|
261
|
+
const input = event.target;
|
|
262
|
+
inputScope.emit(getInputChangeEventName(input.type), readInputValue(input));
|
|
263
|
+
};
|
|
278
264
|
element.addEventListener(changeEventName, listener);
|
|
279
265
|
subscriptions.push(createDestroySubscription(() => element.removeEventListener(changeEventName, listener)));
|
|
280
266
|
}
|
package/view/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/core/view/render.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tContext,\n\tReactiveScope,\n\tScopeSubscription,\n\tStack, Identifier,\n\tisComputed, isSignal, isReactive\n} from '@ibyar/expressions';\nimport {\n\tCommentNode, DomStructuralDirectiveNode, LocalTemplateVariables,\n\tDomElementNode, DomFragmentNode, DomNode, isLiveTextContent,\n\tisTagNameNative, isValidCustomElementName, LiveTextContent,\n\tTextContent, DomAttributeDirectiveNode, isFormAssociatedCustomElementByTag\n} from '@ibyar/elements';\nimport type { DomStructuralDirectiveNodeUpgrade } from '@ibyar/elements/node.js';\nimport { ComponentRef } from '../component/component.js';\nimport { HTMLComponent, isHTMLComponent } from '../component/custom-element.js';\nimport { documentStack } from '../context/stack.js';\nimport { classRegistryProvider } from '../providers/provider.js';\nimport { isOnDestroy, isOnInit } from '../component/lifecycle.js';\nimport { hasAttr } from '../utils/elements-util.js';\nimport {\n\tAttributeDirective, StructuralDirective, ReactiveSignalScope,\n\tDIRECTIVE_HOST_TOKEN, NATIVE_HOST_TOKEN, SUCCESSORS_TOKEN,\n} from '../directive/directive.js';\nimport { TemplateRef, TemplateRefImpl } from '../linker/template-ref.js';\nimport { ViewContainerRef, ViewContainerRefImpl } from '../linker/view-container-ref.js';\nimport { createDestroySubscription } from '../context/subscription.js';\nimport { isViewChildSignal, OutputSignal, ViewChildSignal } from '../component/initializer.js';\nimport { ChildRef } from '../component/reflect.js';\nimport { addProvider, removeProvider } from '../di/inject.js';\nimport { AbstractAuroraZone } from '../zone/zone.js';\nimport { clearSignalScope, pushNewSignalScope } from '../signals/signals.js';\n\ntype ViewContext = { [element: string]: HTMLElement };\n\nfunction getChangeEventName(tagName: string): 'input' | 'change' | undefined {\n\tswitch (true) {\n\t\tcase tagName === 'input':\n\t\t\treturn 'input';\n\t\tcase tagName === 'textarea':\n\t\tcase tagName === 'select':\n\t\tcase isFormAssociatedCustomElementByTag(tagName):\n\t\t\treturn 'change';\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\nexport class ComponentRender<T extends object> {\n\tprivate componentRef: ComponentRef<T>;\n\tprivate template: DomNode;\n\tprivate contextStack: Stack;\n\tprivate templateNameScope: ReactiveScope<{ [templateName: string]: TemplateRef }>;\n\tprivate exportAsScope: ReactiveScope<Record<string, any>>;\n\tprivate viewScope: ReactiveScope<ViewContext> = new ReactiveScope({});\n\tprivate viewChildSignal: ChildRef[];\n\n\tmodelStack: Stack;\n\n\tconstructor(public view: HTMLComponent<T>, private subscriptions: ScopeSubscription<Context>[]) {\n\t\tthis.componentRef = this.view.getComponentRef();\n\t\tthis.contextStack = documentStack.copyStack();\n\t\tthis.contextStack.pushScope<Context>(this.view._modelScope);\n\t\tconst signalMaskScope = this.contextStack.pushReactiveScope();\n\t\tthis.maskRawSignalScope(signalMaskScope, this.view._model);\n\t\tthis.modelStack = Stack.forScopes(this.view._modelScope, signalMaskScope);\n\t\tthis.exportAsScope = this.contextStack.pushReactiveScope();\n\t\tthis.templateNameScope = this.contextStack.pushReactiveScope();\n\t\tthis.viewChildSignal = this.componentRef.viewChild.filter(child => child.selector === 'ɵSignal');\n\t}\n\tinitView(): void {\n\t\tif (!this.componentRef.template) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof this.componentRef.template === 'function') {\n\t\t\tthis.template = this.componentRef.template(this.view._model);\n\t\t} else {\n\t\t\tthis.template = this.componentRef.template;\n\t\t}\n\n\t\tlet rootRef: HTMLElement | ShadowRoot;\n\t\tif (this.componentRef.isShadowDom) {\n\t\t\trootRef = Reflect.get(this.view, '_shadowRoot') as ShadowRoot;\n\t\t\tReflect.deleteProperty(this.view, '_shadowRoot');\n\t\t} else {\n\t\t\trootRef = this.view;\n\t\t}\n\t\tthis.initTemplateRefMap(this.template);\n\t\tlet rootFragment: DocumentFragment;\n\t\tif (this.template instanceof DomFragmentNode) {\n\t\t\trootFragment = this.createDocumentFragment(this.template, this.contextStack, rootRef, this.subscriptions, this.view);\n\t\t} else {\n\t\t\trootFragment = document.createDocumentFragment();\n\t\t\tthis.appendChildToParent(rootFragment, this.template, this.contextStack, rootRef, this.subscriptions, this.view);\n\t\t}\n\t\trootRef.append(rootFragment);\n\t}\n\tisTemplateRefName(template: DomNode): template is DomElementNode {\n\t\tif (template instanceof DomElementNode) {\n\t\t\tif (template.tagName === 'template' && template.templateRefName) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tinitTemplateRefMap(domNode: DomNode) {\n\t\tif (!(domNode instanceof DomElementNode || domNode instanceof DomFragmentNode) || !domNode.children) {\n\t\t\treturn;\n\t\t}\n\t\tfor (let index = 0; index < domNode.children.length; index++) {\n\t\t\tconst child = domNode.children[index];\n\t\t\tif (this.isTemplateRefName(child)) {\n\t\t\t\tthis.templateNameScope.set(child.templateRefName!.name, undefined);\n\t\t\t} else {\n\t\t\t\tthis.initTemplateRefMap(child);\n\t\t\t}\n\t\t}\n\t}\n\tinitViewBinding() {\n\t\tif (this.componentRef.viewBindings) {\n\t\t\tthis.initHtmlElement(this.view, this.componentRef.viewBindings, this.contextStack, this.subscriptions);\n\t\t}\n\t\tif (this.componentRef.windowBindings) {\n\t\t\tthis.subscriptions.push(...this.initAttribute(window as any, this.componentRef.windowBindings, this.contextStack));\n\t\t}\n\t}\n\tgetElementByName(name: string) {\n\t\treturn Reflect.get(this.view, name);\n\t}\n\tcreateStructuralDirective(directive: DomStructuralDirectiveNode, comment: Comment, directiveStack: Stack, subscriptions: ScopeSubscription<Context>[], parentNode: Node, host: HTMLComponent<any> | StructuralDirective): void {\n\t\tconst directiveRef = classRegistryProvider.getDirectiveRef<T>(directive.name);\n\t\tif (!directiveRef) {\n\t\t\t// didn't find directive or it is not define yet.\n\t\t\t// class registry should have 'when defined' callback\n\t\t\treturn;\n\t\t}\n\t\tconst stack = directiveStack.copyStack();\n\t\tconst templateRef = new TemplateRefImpl(\n\t\t\tthis,\n\t\t\tdirective.node,\n\t\t\tstack,\n\t\t\t(directive as DomStructuralDirectiveNodeUpgrade).templateExpressions ?? [],\n\t\t);\n\t\tconst successorTemplateRefs = Object.fromEntries((directive.successors ?? [])?.map(\n\t\t\tsuccessor => [successor.name, new TemplateRefImpl(this, successor, stack, [])]\n\t\t));\n\t\tconst directiveZone = this.view._zone.fork(directiveRef.zone);\n\t\tconst viewContainerRef = new ViewContainerRefImpl(parentNode as Element, comment);\n\n\t\tdirectiveZone.onEmpty.subscribe(() => {\n\t\t\tconst length = viewContainerRef.length;\n\t\t\tfor (let index = 0; index < length; index++) {\n\t\t\t\tviewContainerRef.get(index)?.detectChanges();\n\t\t\t}\n\t\t});\n\n\t\tconst provider = this.view._provider.fork();\n\t\tprovider.setToken(DIRECTIVE_HOST_TOKEN, host);\n\t\tprovider.setType(TemplateRef, templateRef);\n\t\tprovider.setType(AbstractAuroraZone, directiveZone);\n\t\tprovider.setType(ViewContainerRef, viewContainerRef);\n\t\tprovider.setToken(SUCCESSORS_TOKEN, successorTemplateRefs);\n\t\taddProvider(provider);\n\t\tconst signalScope = pushNewSignalScope();\n\t\tconst StructuralDirectiveClass = directiveRef.modelClass as typeof StructuralDirective;\n\t\tconst structural = directiveZone.run(() => new StructuralDirectiveClass());\n\t\tclearSignalScope(signalScope);\n\t\tremoveProvider(provider);\n\n\t\ttemplateRef.host = structural;\n\t\tconst scope = ReactiveSignalScope.readOnlyScopeForThis(structural);\n\t\tscope.getInnerScope('this')!.getContextProxy = () => structural;\n\t\tstack.pushScope(scope);\n\t\tif (directiveRef.exportAs) {\n\t\t\tstack.pushBlockScopeFor({ [directiveRef.exportAs]: structural });\n\t\t}\n\t\tsubscriptions.push(...this.initDirective(structural, directive, stack));\n\t\tif (isOnInit(structural)) {\n\t\t\tdirectiveZone.run(structural.onInit, structural);\n\t\t}\n\t\tif (directive.attributeDirectives?.length) {\n\t\t\tthis.initAttributeDirectives(directive.attributeDirectives, structural, stack, subscriptions);\n\t\t}\n\t\tif (isOnDestroy(structural)) {\n\t\t\tsubscriptions.push(createDestroySubscription(() => structural.onDestroy()));\n\t\t}\n\t}\n\tcreateComment(node: CommentNode): Comment {\n\t\treturn document.createComment(`${node.comment}`);\n\t}\n\tcreateText(node: TextContent): Text {\n\t\treturn new Text(node.value);\n\t}\n\tcreateLiveText(textNode: LiveTextContent, contextStack: Stack, subscriptions: ScopeSubscription<Context>[]): Text {\n\t\tconst liveText = new Text('');\n\t\tcontextStack = contextStack.copyStack();\n\t\tcontextStack.pushBlockScopeFor({ this: liveText });\n\t\tconst textSubscriptions = textNode.expression.subscribe(contextStack, textNode.pipelineNames);\n\t\tsubscriptions.push(...textSubscriptions);\n\t\ttextNode.expression.get(contextStack);\n\t\treturn liveText;\n\t}\n\tcreateLocalTemplateVariables(localNode: LocalTemplateVariables, contextStack: Stack, subscriptions: ScopeSubscription<Context>[]): void {\n\t\tconst entries = localNode.variables.map(variable => [(variable.expression.getLeft() as Identifier).getDeclarationName(), undefined]);\n\t\tconst context = Object.fromEntries(entries);\n\t\tcontextStack.pushReactiveScopeFor(context);\n\t\tlocalNode.variables.forEach(variable => {\n\t\t\tconst localSubscriptions = variable.expression.subscribe(contextStack, variable.pipelineNames);\n\t\t\tsubscriptions.push(...localSubscriptions);\n\t\t\tvariable.expression.get(contextStack);\n\t\t});\n\t}\n\tcreateDocumentFragment(node: DomFragmentNode, contextStack: Stack, parentNode: Node, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective): DocumentFragment {\n\t\tconst fragment = document.createDocumentFragment();\n\t\tnode.children?.forEach(child => this.appendChildToParent(fragment, child, contextStack, parentNode, subscriptions, host));\n\t\treturn fragment;\n\t}\n\tappendChildToParent(fragmentParent: HTMLElement | DocumentFragment, child: DomNode, contextStack: Stack, parentNode: Node, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective) {\n\t\tif (child instanceof DomElementNode) {\n\t\t\tif (this.isTemplateRefName(child)) {\n\t\t\t\tconst templateRefName = child.templateRefName!;\n\t\t\t\t// const oldRef = this.templateNameScope.get(templateRefName.name);\n\t\t\t\t// if (oldRef) {\n\t\t\t\t// \treturn;\n\t\t\t\t// }\n\t\t\t\t// TODO: extract template expression\n\t\t\t\tconst templateRef = new TemplateRefImpl(\n\t\t\t\t\tthis,\n\t\t\t\t\tnew DomFragmentNode(child.children),\n\t\t\t\t\tcontextStack.copyStack(),\n\t\t\t\t\t[]\n\t\t\t\t);\n\t\t\t\tthis.templateNameScope.set(templateRefName.name, templateRef);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfragmentParent.append(this.createElement(child, contextStack, subscriptions, host));\n\t\t} else if (child instanceof DomStructuralDirectiveNode) {\n\t\t\tconst comment = document.createComment(` @${child.name.substring(1)} ${typeof child.value ? `(${child.value}) ` : ''}`);\n\t\t\tfragmentParent.append(comment);\n\t\t\tthis.createStructuralDirective(child, comment, contextStack, subscriptions, parentNode, host);\n\t\t} else if (isLiveTextContent(child)) {\n\t\t\tfragmentParent.append(this.createLiveText(child, contextStack, subscriptions));\n\t\t} else if (child instanceof LocalTemplateVariables) {\n\t\t\tthis.createLocalTemplateVariables(child, contextStack, subscriptions);\n\t\t} else if (child instanceof TextContent) {\n\t\t\tfragmentParent.append(this.createText(child));\n\t\t} else if (child instanceof CommentNode) {\n\t\t\tfragmentParent.append(this.createComment(child));\n\t\t} else if (child instanceof DomFragmentNode) {\n\t\t\tfragmentParent.append(this.createDocumentFragment(child, contextStack, parentNode, subscriptions, host));\n\t\t}\n\t}\n\tcreateElementByTagName(node: { tagName: string, is?: string }): HTMLElement {\n\t\tlet element: HTMLElement;\n\t\tif (isValidCustomElementName(node.tagName)) {\n\t\t\tconst ViewClass = customElements.get(node.tagName) as ((new () => HTMLElement) | undefined);\n\t\t\tif (ViewClass) {\n\t\t\t\telement = new ViewClass();\n\t\t\t} else {\n\t\t\t\telement = document.createElement(node.tagName);\n\t\t\t\tif (element.constructor.name === 'HTMLElement') {\n\t\t\t\t\tcustomElements.whenDefined(node.tagName).then(() => customElements.upgrade(element));\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isTagNameNative(node.tagName)) {\n\t\t\t// native tags // and custom tags can be used her\n\t\t\telement = document.createElement(node.tagName, node.is ? { is: node.is } : undefined);\n\t\t} else {\n\t\t\t// html unknown element\n\t\t\telement = document.createElement(node.tagName);\n\t\t}\n\t\treturn element;\n\t}\n\tcreateElement(node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective): HTMLElement {\n\t\tconst element = this.createElementByTagName(node);\n\t\tthis.initHtmlElement(element, node, contextStack, subscriptions, host);\n\t\treturn element;\n\t}\n\n\tprivate createReadOnlyWithReactiveInnerScope<T extends Context>(ctx: T, aliasName?: string, propertyKeys?: (keyof T)[]) {\n\t\tconst scope = ReactiveScope.readOnlyScopeForThis(ctx, propertyKeys);\n\t\tif (aliasName) {\n\t\t\tconst thisInnerScope = scope.getInnerScope('this');\n\t\t\tscope.set(aliasName as 'this', ctx);\n\t\t\tscope.setInnerScope(aliasName as 'this', thisInnerScope);\n\t\t}\n\t\treturn scope;\n\t}\n\n\t/**\n\t * use for init host bindings\n\t * @param element \n\t * @param node \n\t * @param contextStack \n\t * @param subscriptions \n\t */\n\tinitHtmlElement(element: HTMLElement, node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[]): void;\n\n\t/**\n\t * use to initialize a newly created html element\n\t * @param element \n\t * @param node \n\t * @param contextStack \n\t * @param subscriptions \n\t * @param host is the direct html element `this.view` or a sub `structural directive` like `*if` or `*for`, etc...\n\t */\n\tinitHtmlElement(element: HTMLElement, node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective): void;\n\tinitHtmlElement(element: HTMLElement, node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[], host?: HTMLComponent<any> | StructuralDirective): void {\n\t\tconst elementStack = contextStack.copyStack();\n\t\tconst elementScope = isHTMLComponent(element)\n\t\t\t? element._viewScope\n\t\t\t: this.createReadOnlyWithReactiveInnerScope(element, node.templateRefName?.name);\n\t\telementStack.pushScope<Context>(elementScope);\n\t\tconst attributesSubscriptions = this.initAttribute(element, node, elementStack);\n\t\tsubscriptions.push(...attributesSubscriptions);\n\t\tconst changeEventName = getChangeEventName(node.tagName);\n\t\tif (changeEventName) {\n\t\t\tconst inputScope = elementScope.getInnerScope<ReactiveScope<HTMLInputElement>>('this')!;\n\t\t\tconst listener = (event: HTMLElementEventMap['input' | 'change']) => inputScope.emit('value', (element as HTMLInputElement).value);\n\t\t\telement.addEventListener(changeEventName, listener);\n\t\t\tsubscriptions.push(createDestroySubscription(\n\t\t\t\t() => element.removeEventListener(changeEventName, listener),\n\t\t\t));\n\t\t}\n\n\t\tconst templateRefName = node.templateRefName;\n\t\tif (templateRefName) {\n\t\t\tReflect.set(this.view, templateRefName.name, element);\n\t\t\tthis.viewScope.set(templateRefName.name, element);\n\t\t\tconst view = this.componentRef.viewChild.find(child => child.selector === templateRefName.name);\n\t\t\tlet signal: ViewChildSignal<any> | undefined;\n\t\t\tif (view) {\n\t\t\t\tReflect.set(this.view._model, view.modelName, element);\n\t\t\t} else if (signal = this.getViewChildSignal(templateRefName.name)) {\n\t\t\t\tsignal.set(element);\n\t\t\t}\n\t\t}\n\t\tif (node.children) {\n\t\t\tfor (const child of node.children) {\n\t\t\t\tthis.appendChildToParent(element, child, elementStack, element, subscriptions, host!);\n\t\t\t}\n\t\t}\n\t\tif (node.attributeDirectives?.length) {\n\t\t\tthis.initAttributeDirectives(node.attributeDirectives, element, contextStack, subscriptions);\n\t\t}\n\t}\n\tprivate initAttributeDirectives(\n\t\tattributeDirectives: DomAttributeDirectiveNode[],\n\t\telement: HTMLElement | StructuralDirective,\n\t\tcontextStack: Stack,\n\t\tsubscriptions: ScopeSubscription<Context>[]) {\n\t\tattributeDirectives?.forEach(directiveNode => {\n\t\t\tconst directiveRef = classRegistryProvider.getDirectiveRef<any>(directiveNode.name);\n\t\t\tif (!directiveRef || !(directiveRef.modelClass.prototype instanceof AttributeDirective)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst directiveZone = this.view._zone.fork(directiveRef.zone);\n\t\t\tconst provider = this.view._provider.fork();\n\t\t\tprovider.setToken(NATIVE_HOST_TOKEN, element);\n\t\t\tprovider.setType(AbstractAuroraZone, directiveZone);\n\t\t\taddProvider(provider);\n\t\t\tconst signalScope = pushNewSignalScope();\n\t\t\tconst directive = directiveZone.run(() => new directiveRef.modelClass() as AttributeDirective);\n\t\t\tclearSignalScope(signalScope);\n\t\t\tremoveProvider(provider);\n\t\t\tif (directiveRef.exportAs) {\n\t\t\t\tthis.exportAsScope.set(directiveRef.exportAs, directive);\n\t\t\t}\n\n\t\t\tconst stack = contextStack.copyStack();\n\t\t\tconst scope = ReactiveSignalScope.readOnlyScopeForThis(directive);\n\t\t\tconst directiveScope = scope.getInnerScope('this')!;\n\t\t\tdirectiveScope.getContextProxy = () => directive;\n\t\t\tstack.pushScope(scope);\n\n\t\t\tconst directiveSubscriptions = this.initDirective(directive, directiveNode, stack);\n\t\t\tsubscriptions.push(...directiveSubscriptions);\n\t\t\tif (isOnInit(directive)) {\n\t\t\t\tdirectiveZone.run(directive.onInit, directive);\n\t\t\t}\n\t\t\tif (isOnDestroy(directive)) {\n\t\t\t\tsubscriptions.push(createDestroySubscription(() => directive.onDestroy()));\n\t\t\t}\n\t\t\tif (!(element instanceof HTMLElement)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst attributeName = directiveRef.selector.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n\t\t\tif (!element.hasAttribute(attributeName)) {\n\t\t\t\telement.setAttribute(attributeName, '');\n\t\t\t}\n\t\t\tif (directiveRef.viewBindings) {\n\t\t\t\tconst directiveStack = stack.copyStack();\n\t\t\t\tdirectiveStack.pushScope(directiveScope);\n\t\t\t\tthis.initHtmlElement(element, directiveRef.viewBindings, directiveStack, subscriptions);\n\t\t\t}\n\t\t});\n\t}\n\n\tinitAttribute(element: HTMLElement, node: DomElementNode, contextStack: Stack): ScopeSubscription<Context>[] {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\t\tif (node.attributes?.length) {\n\t\t\tnode.attributes.forEach(attr => {\n\t\t\t\t/**\n\t\t\t\t * <input id=\"23\" name=\"person-name\" data-id=\"1234567890\" data-user=\"carinaanand\" data-date-of-birth />\n\t\t\t\t */\n\t\t\t\tif (hasAttr(element, attr.name)) {\n\t\t\t\t\tif (attr.value === false) {\n\t\t\t\t\t\telement.removeAttribute(attr.name);\n\t\t\t\t\t} else if (attr.value === true) {\n\t\t\t\t\t\telement.setAttribute(attr.name, '');\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.setAttribute(attr.name, attr.value as string);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tattr.expression.get(contextStack);\n\t\t\t\t\t// Reflect.set(element, attr.name, attr.value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (node.twoWayBinding?.length) {\n\t\t\tnode.twoWayBinding.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\tif (node.inputs?.length) {\n\t\t\tnode.inputs.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack, attr.pipelineNames);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\tif (node.outputs?.length) {\n\t\t\tnode.outputs.forEach(event => {\n\t\t\t\tlet listener: Function;\n\t\t\t\t/**\n\t\t\t\t * <a (click)=\"onLinkClick($event)\"></a>\n\t\t\t\t * <a @click=\"onLinkClick($event)\"></a>\n\t\t\t\t * <input [(value)]=\"person.name\" />\n\t\t\t\t * <input (value)=\"person.name\" />\n\t\t\t\t * <!-- <input (value)=\"person.name = $event\" /> -->\n\t\t\t\t * \n\t\t\t\t * TODO: diff of event listener and back-way data binding\n\t\t\t\t */\n\t\t\t\tif (typeof event.value === 'string') {\n\t\t\t\t\tlistener = ($event: Event) => {\n\t\t\t\t\t\tconst stack = contextStack.copyStack();\n\t\t\t\t\t\tstack.pushBlockScopeFor({ $event });\n\t\t\t\t\t\tthis.view._zone.run(event.expression.get, event.expression, [stack]);\n\t\t\t\t\t};\n\t\t\t\t} else /* if (typeof event.sourceHandler === 'function')*/ {\n\t\t\t\t\t// let eventName: keyof HTMLElementEventMap = event.eventName;\n\t\t\t\t\tlistener = event.value;\n\t\t\t\t}\n\t\t\t\telement.addEventListener(event.name as any, listener as any);\n\t\t\t\tsubscriptions.push(createDestroySubscription(\n\t\t\t\t\t() => element.removeEventListener(event.name as any, listener as any),\n\t\t\t\t));\n\t\t\t});\n\t\t}\n\t\tif (node.templateAttrs?.length) {\n\t\t\tnode.templateAttrs.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\treturn subscriptions;\n\t}\n\n\tinitDirective(\n\t\tcontext: StructuralDirective | AttributeDirective,\n\t\tnode: DomStructuralDirectiveNode | DomAttributeDirectiveNode,\n\t\tcontextStack: Stack): ScopeSubscription<Context>[] {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\n\t\tif (node.attributes?.length) {\n\t\t\tnode.attributes.forEach(attr => attr.expression.get(contextStack));\n\t\t}\n\t\tif (node.twoWayBinding?.length) {\n\t\t\tnode.twoWayBinding.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\tif (node.inputs?.length) {\n\t\t\tnode.inputs.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack, attr.pipelineNames);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\tif (node.outputs?.length) {\n\t\t\tnode.outputs.forEach(event => {\n\t\t\t\tconst listener = ($event: Event) => {\n\t\t\t\t\tconst stack = contextStack.copyStack();\n\t\t\t\t\tstack.pushBlockScopeFor({ $event });\n\t\t\t\t\tthis.view._zone.run(event.expression.get, event.expression, [stack]);\n\t\t\t\t};\n\t\t\t\tconst subscription = (Reflect.get(context, event.name) as OutputSignal<T>).subscribe(listener);\n\t\t\t\tsubscriptions.push(createDestroySubscription(() => subscription.unsubscribe()));\n\t\t\t});\n\t\t}\n\t\tif (node.templateAttrs?.length) {\n\t\t\tnode.templateAttrs.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\t// TODO: \n\t\t// check host binding\n\t\treturn subscriptions;\n\t}\n\tprivate getViewChildSignal(templateRefName: string) {\n\t\tfor (const child of this.viewChildSignal) {\n\t\t\tconst signal = this.view._model[child.modelName];\n\t\t\tif (isViewChildSignal(signal) && signal.selector === templateRefName) {\n\t\t\t\treturn signal;\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\tprivate maskRawSignalScope(maskScope: ReactiveScope<Context>, model: Context) {\n\t\tObject.entries(model).forEach(([key, signal]) => {\n\t\t\tif (isSignal(signal)) {\n\t\t\t\tmaskScope.set(key, signal.get());\n\t\t\t\tsignal.subscribe(value => maskScope.set(key, value));\n\t\t\t\tmaskScope.subscribe(key, value => signal.set(value));\n\t\t\t} else if (isComputed(signal)) {\n\t\t\t\tmaskScope.set(key, signal.get());\n\t\t\t\tsignal.subscribe(value => maskScope.set(key, value));\n\t\t\t} else if (isReactive(signal)) {\n\t\t\t\tmaskScope.set(key, undefined);\n\t\t\t\tsignal.subscribe(value => maskScope.set(key, value));\n\t\t\t}\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/core/view/render.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tContext,\n\tReactiveScope,\n\tScopeSubscription,\n\tStack, Identifier,\n\tisComputed, isSignal, isReactive\n} from '@ibyar/expressions';\nimport {\n\tCommentNode, DomStructuralDirectiveNode, LocalTemplateVariables,\n\tDomElementNode, DomFragmentNode, DomNode, isLiveTextContent,\n\tisTagNameNative, isValidCustomElementName, LiveTextContent,\n\tTextContent, DomAttributeDirectiveNode, readInputValue,\n\tgetChangeEventNameFoTag, getInputChangeEventName\n} from '@ibyar/elements';\nimport type { DomStructuralDirectiveNodeUpgrade } from '@ibyar/elements/node.js';\nimport { ComponentRef } from '../component/component.js';\nimport { HTMLComponent, isHTMLComponent } from '../component/custom-element.js';\nimport { documentStack } from '../context/stack.js';\nimport { classRegistryProvider } from '../providers/provider.js';\nimport { isOnDestroy, isOnInit } from '../component/lifecycle.js';\nimport { hasAttr } from '../utils/elements-util.js';\nimport {\n\tAttributeDirective, StructuralDirective, ReactiveSignalScope,\n\tDIRECTIVE_HOST_TOKEN, NATIVE_HOST_TOKEN, SUCCESSORS_TOKEN,\n} from '../directive/directive.js';\nimport { TemplateRef, TemplateRefImpl } from '../linker/template-ref.js';\nimport { ViewContainerRef, ViewContainerRefImpl } from '../linker/view-container-ref.js';\nimport { createDestroySubscription } from '../context/subscription.js';\nimport { isViewChildSignal, OutputSignal, ViewChildSignal } from '../component/initializer.js';\nimport { ChildRef } from '../component/reflect.js';\nimport { addProvider, inject, removeProvider } from '../di/inject.js';\nimport { AbstractAuroraZone } from '../zone/zone.js';\nimport { clearSignalScope, pushNewSignalScope } from '../signals/signals.js';\nimport { ShadowRootService } from './shadow-root.js';\n\ntype ViewContext = { [element: string]: HTMLElement };\n\nexport class ComponentRender<T extends object> {\n\tprivate componentRef: ComponentRef<T>;\n\tprivate template: DomNode;\n\tprivate contextStack: Stack;\n\tprivate templateNameScope: ReactiveScope<{ [templateName: string]: TemplateRef }>;\n\tprivate exportAsScope: ReactiveScope<Record<string, any>>;\n\tprivate viewScope: ReactiveScope<ViewContext> = new ReactiveScope({});\n\tprivate viewChildSignal: ChildRef[];\n\n\tmodelStack: Stack;\n\n\tconstructor(public view: HTMLComponent<T>, private subscriptions: ScopeSubscription<Context>[]) {\n\t\tthis.componentRef = this.view.getComponentRef();\n\t\tthis.contextStack = documentStack.copyStack();\n\t\tthis.contextStack.pushScope<Context>(this.view._modelScope);\n\t\tconst signalMaskScope = this.contextStack.pushReactiveScope();\n\t\tthis.maskRawSignalScope(signalMaskScope, this.view._model);\n\t\tthis.modelStack = Stack.forScopes(this.view._modelScope, signalMaskScope);\n\t\tthis.exportAsScope = this.contextStack.pushReactiveScope();\n\t\tthis.templateNameScope = this.contextStack.pushReactiveScope();\n\t\tthis.viewChildSignal = this.componentRef.viewChild.filter(child => child.selector === 'ɵSignal');\n\t}\n\tinitView(): void {\n\t\tif (!this.componentRef.template) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof this.componentRef.template === 'function') {\n\t\t\tthis.template = this.componentRef.template(this.view._model);\n\t\t} else {\n\t\t\tthis.template = this.componentRef.template;\n\t\t}\n\n\t\tlet rootRef: HTMLElement | ShadowRoot;\n\t\tconst shadowRootService = inject(ShadowRootService);\n\t\tif (this.componentRef.isShadowDom && shadowRootService.has(this.view)) {\n\t\t\trootRef = shadowRootService.get(this.view)!;\n\t\t} else {\n\t\t\trootRef = this.view;\n\t\t}\n\t\tthis.initTemplateRefMap(this.template);\n\t\tlet rootFragment: DocumentFragment;\n\t\tif (this.template instanceof DomFragmentNode) {\n\t\t\trootFragment = this.createDocumentFragment(this.template, this.contextStack, rootRef, this.subscriptions, this.view);\n\t\t} else {\n\t\t\trootFragment = document.createDocumentFragment();\n\t\t\tthis.appendChildToParent(rootFragment, this.template, this.contextStack, rootRef, this.subscriptions, this.view);\n\t\t}\n\t\trootRef.append(rootFragment);\n\t}\n\tisTemplateRefName(template: DomNode): template is DomElementNode {\n\t\tif (template instanceof DomElementNode) {\n\t\t\tif (template.tagName === 'template' && template.templateRefName) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tinitTemplateRefMap(domNode: DomNode) {\n\t\tif (!(domNode instanceof DomElementNode || domNode instanceof DomFragmentNode) || !domNode.children) {\n\t\t\treturn;\n\t\t}\n\t\tfor (let index = 0; index < domNode.children.length; index++) {\n\t\t\tconst child = domNode.children[index];\n\t\t\tif (this.isTemplateRefName(child)) {\n\t\t\t\tthis.templateNameScope.set(child.templateRefName!.name, undefined);\n\t\t\t} else {\n\t\t\t\tthis.initTemplateRefMap(child);\n\t\t\t}\n\t\t}\n\t}\n\tinitViewBinding() {\n\t\tif (this.componentRef.viewBindings) {\n\t\t\tthis.initHtmlElement(this.view, this.componentRef.viewBindings, this.contextStack, this.subscriptions);\n\t\t}\n\t\tif (this.componentRef.windowBindings) {\n\t\t\tthis.subscriptions.push(...this.initAttribute(window as any, this.componentRef.windowBindings, this.contextStack));\n\t\t}\n\t}\n\tgetElementByName(name: string) {\n\t\treturn Reflect.get(this.view, name);\n\t}\n\tcreateStructuralDirective(directive: DomStructuralDirectiveNode, comment: Comment, directiveStack: Stack, subscriptions: ScopeSubscription<Context>[], parentNode: Node, host: HTMLComponent<any> | StructuralDirective): void {\n\t\tconst directiveRef = classRegistryProvider.getDirectiveRef<T>(directive.name);\n\t\tif (!directiveRef) {\n\t\t\t// didn't find directive or it is not define yet.\n\t\t\t// class registry should have 'when defined' callback\n\t\t\treturn;\n\t\t}\n\t\tconst stack = directiveStack.copyStack();\n\t\tconst templateRef = new TemplateRefImpl(\n\t\t\tthis,\n\t\t\tdirective.node,\n\t\t\tstack,\n\t\t\t(directive as DomStructuralDirectiveNodeUpgrade).templateExpressions ?? [],\n\t\t);\n\t\tconst successorTemplateRefs = Object.fromEntries((directive.successors ?? [])?.map(\n\t\t\tsuccessor => [successor.name, new TemplateRefImpl(this, successor, stack, [])]\n\t\t));\n\t\tconst directiveZone = this.view._zone.fork(directiveRef.zone);\n\t\tconst viewContainerRef = new ViewContainerRefImpl(parentNode as Element, comment);\n\n\t\tdirectiveZone.onEmpty.subscribe(() => {\n\t\t\tconst length = viewContainerRef.length;\n\t\t\tfor (let index = 0; index < length; index++) {\n\t\t\t\tviewContainerRef.get(index)?.detectChanges();\n\t\t\t}\n\t\t});\n\n\t\tconst provider = this.view._provider.fork();\n\t\tprovider.setToken(DIRECTIVE_HOST_TOKEN, host);\n\t\tprovider.setType(TemplateRef, templateRef);\n\t\tprovider.setType(AbstractAuroraZone, directiveZone);\n\t\tprovider.setType(ViewContainerRef, viewContainerRef);\n\t\tprovider.setToken(SUCCESSORS_TOKEN, successorTemplateRefs);\n\t\taddProvider(provider);\n\t\tconst signalScope = pushNewSignalScope();\n\t\tconst StructuralDirectiveClass = directiveRef.modelClass as typeof StructuralDirective;\n\t\tconst structural = directiveZone.run(() => new StructuralDirectiveClass());\n\t\tclearSignalScope(signalScope);\n\t\tremoveProvider(provider);\n\n\t\ttemplateRef.host = structural;\n\t\tconst scope = ReactiveSignalScope.readOnlyScopeForThis(structural);\n\t\tscope.getInnerScope('this')!.getContextProxy = () => structural;\n\t\tstack.pushScope(scope);\n\t\tif (directiveRef.exportAs) {\n\t\t\tstack.pushBlockScopeFor({ [directiveRef.exportAs]: structural });\n\t\t}\n\t\tsubscriptions.push(...this.initDirective(structural, directive, stack));\n\t\tif (isOnInit(structural)) {\n\t\t\tdirectiveZone.run(structural.onInit, structural);\n\t\t}\n\t\tif (directive.attributeDirectives?.length) {\n\t\t\tthis.initAttributeDirectives(directive.attributeDirectives, structural, stack, subscriptions);\n\t\t}\n\t\tif (isOnDestroy(structural)) {\n\t\t\tsubscriptions.push(createDestroySubscription(() => structural.onDestroy()));\n\t\t}\n\t}\n\tcreateComment(node: CommentNode): Comment {\n\t\treturn document.createComment(`${node.comment}`);\n\t}\n\tcreateText(node: TextContent): Text {\n\t\treturn new Text(node.value);\n\t}\n\tcreateLiveText(textNode: LiveTextContent, contextStack: Stack, subscriptions: ScopeSubscription<Context>[]): Text {\n\t\tconst liveText = new Text('');\n\t\tcontextStack = contextStack.copyStack();\n\t\tcontextStack.pushBlockScopeFor({ this: liveText });\n\t\tconst textSubscriptions = textNode.expression.subscribe(contextStack, textNode.pipelineNames);\n\t\tsubscriptions.push(...textSubscriptions);\n\t\ttextNode.expression.get(contextStack);\n\t\treturn liveText;\n\t}\n\tcreateLocalTemplateVariables(localNode: LocalTemplateVariables, contextStack: Stack, subscriptions: ScopeSubscription<Context>[]): void {\n\t\tconst entries = localNode.variables.map(variable => [(variable.expression.getLeft() as Identifier).getDeclarationName(), undefined]);\n\t\tconst context = Object.fromEntries(entries);\n\t\tcontextStack.pushReactiveScopeFor(context);\n\t\tlocalNode.variables.forEach(variable => {\n\t\t\tconst localSubscriptions = variable.expression.subscribe(contextStack, variable.pipelineNames);\n\t\t\tsubscriptions.push(...localSubscriptions);\n\t\t\tvariable.expression.get(contextStack);\n\t\t});\n\t}\n\tcreateDocumentFragment(node: DomFragmentNode, contextStack: Stack, parentNode: Node, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective): DocumentFragment {\n\t\tconst fragment = document.createDocumentFragment();\n\t\tnode.children?.forEach(child => this.appendChildToParent(fragment, child, contextStack, parentNode, subscriptions, host));\n\t\treturn fragment;\n\t}\n\tappendChildToParent(fragmentParent: HTMLElement | DocumentFragment, child: DomNode, contextStack: Stack, parentNode: Node, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective) {\n\t\tif (child instanceof DomElementNode) {\n\t\t\tif (this.isTemplateRefName(child)) {\n\t\t\t\tconst templateRefName = child.templateRefName!;\n\t\t\t\t// const oldRef = this.templateNameScope.get(templateRefName.name);\n\t\t\t\t// if (oldRef) {\n\t\t\t\t// \treturn;\n\t\t\t\t// }\n\t\t\t\t// TODO: extract template expression\n\t\t\t\tconst templateRef = new TemplateRefImpl(\n\t\t\t\t\tthis,\n\t\t\t\t\tnew DomFragmentNode(child.children),\n\t\t\t\t\tcontextStack.copyStack(),\n\t\t\t\t\t[]\n\t\t\t\t);\n\t\t\t\tthis.templateNameScope.set(templateRefName.name, templateRef);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfragmentParent.append(this.createElement(child, contextStack, subscriptions, host));\n\t\t} else if (child instanceof DomStructuralDirectiveNode) {\n\t\t\tconst comment = document.createComment(` @${child.name.substring(1)} ${child.value ? `(${child.value}) {` : '{'}`);\n\t\t\tfragmentParent.append(comment);\n\t\t\tfragmentParent.append(document.createComment('}'));\n\t\t\tthis.createStructuralDirective(child, comment, contextStack, subscriptions, parentNode, host);\n\t\t} else if (isLiveTextContent(child)) {\n\t\t\tfragmentParent.append(this.createLiveText(child, contextStack, subscriptions));\n\t\t} else if (child instanceof LocalTemplateVariables) {\n\t\t\tthis.createLocalTemplateVariables(child, contextStack, subscriptions);\n\t\t} else if (child instanceof TextContent) {\n\t\t\tfragmentParent.append(this.createText(child));\n\t\t} else if (child instanceof CommentNode) {\n\t\t\tfragmentParent.append(this.createComment(child));\n\t\t} else if (child instanceof DomFragmentNode) {\n\t\t\tfragmentParent.append(this.createDocumentFragment(child, contextStack, parentNode, subscriptions, host));\n\t\t}\n\t}\n\tcreateElementByTagName(node: { tagName: string, is?: string }): HTMLElement {\n\t\tlet element: HTMLElement;\n\t\tif (isValidCustomElementName(node.tagName)) {\n\t\t\tconst ViewClass = customElements.get(node.tagName) as ((new () => HTMLElement) | undefined);\n\t\t\tif (ViewClass) {\n\t\t\t\telement = new ViewClass();\n\t\t\t} else {\n\t\t\t\telement = document.createElement(node.tagName);\n\t\t\t\tif (element.constructor.name === 'HTMLElement') {\n\t\t\t\t\tcustomElements.whenDefined(node.tagName).then(() => customElements.upgrade(element));\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isTagNameNative(node.tagName)) {\n\t\t\t// native tags // and custom tags can be used her\n\t\t\telement = document.createElement(node.tagName, node.is ? { is: node.is } : undefined);\n\t\t} else {\n\t\t\t// html unknown element\n\t\t\telement = document.createElement(node.tagName);\n\t\t}\n\t\treturn element;\n\t}\n\tcreateElement(node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective): HTMLElement {\n\t\tconst element = this.createElementByTagName(node);\n\t\tthis.initHtmlElement(element, node, contextStack, subscriptions, host);\n\t\treturn element;\n\t}\n\n\t/**\n\t * use for init host bindings\n\t * @param element \n\t * @param node \n\t * @param contextStack \n\t * @param subscriptions \n\t */\n\tinitHtmlElement(element: HTMLElement, node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[]): void;\n\n\t/**\n\t * use to initialize a newly created html element\n\t * @param element \n\t * @param node \n\t * @param contextStack \n\t * @param subscriptions \n\t * @param host is the direct html element `this.view` or a sub `structural directive` like `*if` or `*for`, etc...\n\t */\n\tinitHtmlElement(element: HTMLElement, node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[], host: HTMLComponent<any> | StructuralDirective): void;\n\tinitHtmlElement(element: HTMLElement, node: DomElementNode, contextStack: Stack, subscriptions: ScopeSubscription<Context>[], host?: HTMLComponent<any> | StructuralDirective): void {\n\t\tconst elementStack = contextStack.copyStack();\n\t\tconst elementScope = isHTMLComponent(element)\n\t\t\t? element._viewScope\n\t\t\t: (node.templateRefName?.name\n\t\t\t\t? ReactiveScope.readOnlyScopeForAliasThis(element, node.templateRefName.name)\n\t\t\t\t: ReactiveScope.readOnlyScopeForThis(element));\n\t\telementStack.pushScope<Context>(elementScope);\n\t\tconst attributesSubscriptions = this.initAttribute(element, node, elementStack);\n\t\tsubscriptions.push(...attributesSubscriptions);\n\t\tconst changeEventName = getChangeEventNameFoTag(node.tagName);\n\t\tif (changeEventName) {\n\t\t\tconst inputScope = elementScope.getInnerScope<ReactiveScope<HTMLInputElement>>('this')!;\n\t\t\tconst listener = (event: HTMLElementEventMap['input' | 'change']) => {\n\t\t\t\tconst input = event.target as HTMLInputElement;\n\t\t\t\tinputScope.emit(\n\t\t\t\t\tgetInputChangeEventName(input.type),\n\t\t\t\t\treadInputValue(input)\n\t\t\t\t)\n\t\t\t};\n\t\t\telement.addEventListener(changeEventName, listener);\n\t\t\tsubscriptions.push(createDestroySubscription(\n\t\t\t\t() => element.removeEventListener(changeEventName, listener),\n\t\t\t));\n\t\t}\n\n\t\tconst templateRefName = node.templateRefName;\n\t\tif (templateRefName) {\n\t\t\tReflect.set(this.view, templateRefName.name, element);\n\t\t\tthis.viewScope.set(templateRefName.name, element);\n\t\t\tconst view = this.componentRef.viewChild.find(child => child.selector === templateRefName.name);\n\t\t\tlet signal: ViewChildSignal<any> | undefined;\n\t\t\tif (view) {\n\t\t\t\tReflect.set(this.view._model, view.modelName, element);\n\t\t\t} else if (signal = this.getViewChildSignal(templateRefName.name)) {\n\t\t\t\tsignal.set(element);\n\t\t\t}\n\t\t}\n\t\tif (node.children) {\n\t\t\tfor (const child of node.children) {\n\t\t\t\tthis.appendChildToParent(element, child, elementStack, element, subscriptions, host!);\n\t\t\t}\n\t\t}\n\t\tif (node.attributeDirectives?.length) {\n\t\t\tthis.initAttributeDirectives(node.attributeDirectives, element, contextStack, subscriptions);\n\t\t}\n\t}\n\tprivate initAttributeDirectives(\n\t\tattributeDirectives: DomAttributeDirectiveNode[],\n\t\telement: HTMLElement | StructuralDirective,\n\t\tcontextStack: Stack,\n\t\tsubscriptions: ScopeSubscription<Context>[]) {\n\t\tattributeDirectives?.forEach(directiveNode => {\n\t\t\tconst directiveRef = classRegistryProvider.getDirectiveRef<any>(directiveNode.name);\n\t\t\tif (!directiveRef || !(directiveRef.modelClass.prototype instanceof AttributeDirective)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst directiveZone = this.view._zone.fork(directiveRef.zone);\n\t\t\tconst provider = this.view._provider.fork();\n\t\t\tprovider.setToken(NATIVE_HOST_TOKEN, element);\n\t\t\tprovider.setType(AbstractAuroraZone, directiveZone);\n\t\t\taddProvider(provider);\n\t\t\tconst signalScope = pushNewSignalScope();\n\t\t\tconst directive = directiveZone.run(() => new directiveRef.modelClass() as AttributeDirective);\n\t\t\tclearSignalScope(signalScope);\n\t\t\tremoveProvider(provider);\n\t\t\tif (directiveRef.exportAs) {\n\t\t\t\tthis.exportAsScope.set(directiveRef.exportAs, directive);\n\t\t\t}\n\n\t\t\tconst stack = contextStack.copyStack();\n\t\t\tconst scope = ReactiveSignalScope.readOnlyScopeForThis(directive);\n\t\t\tconst directiveScope = scope.getInnerScope('this')!;\n\t\t\tdirectiveScope.getContextProxy = () => directive;\n\t\t\tstack.pushScope(scope);\n\n\t\t\tconst directiveSubscriptions = this.initDirective(directive, directiveNode, stack);\n\t\t\tsubscriptions.push(...directiveSubscriptions);\n\t\t\tif (isOnInit(directive)) {\n\t\t\t\tdirectiveZone.run(directive.onInit, directive);\n\t\t\t}\n\t\t\tif (isOnDestroy(directive)) {\n\t\t\t\tsubscriptions.push(createDestroySubscription(() => directive.onDestroy()));\n\t\t\t}\n\t\t\tif (!(element instanceof HTMLElement)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst attributeName = directiveRef.selector.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n\t\t\tif (!element.hasAttribute(attributeName)) {\n\t\t\t\telement.setAttribute(attributeName, '');\n\t\t\t}\n\t\t\tif (directiveRef.viewBindings) {\n\t\t\t\tconst directiveStack = stack.copyStack();\n\t\t\t\tdirectiveStack.pushScope(directiveScope);\n\t\t\t\tthis.initHtmlElement(element, directiveRef.viewBindings, directiveStack, subscriptions);\n\t\t\t}\n\t\t});\n\t}\n\n\tinitAttribute(element: HTMLElement, node: DomElementNode, contextStack: Stack): ScopeSubscription<Context>[] {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\t\tif (node.attributes?.length) {\n\t\t\tnode.attributes.forEach(attr => {\n\t\t\t\t/**\n\t\t\t\t * <input id=\"23\" name=\"person-name\" data-id=\"1234567890\" data-user=\"carinaanand\" data-date-of-birth />\n\t\t\t\t */\n\t\t\t\tif (hasAttr(element, attr.name)) {\n\t\t\t\t\tif (attr.value === false) {\n\t\t\t\t\t\telement.removeAttribute(attr.name);\n\t\t\t\t\t} else if (attr.value === true) {\n\t\t\t\t\t\telement.setAttribute(attr.name, '');\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.setAttribute(attr.name, attr.value as string);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tattr.expression.get(contextStack);\n\t\t\t\t\t// Reflect.set(element, attr.name, attr.value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (node.twoWayBinding?.length) {\n\t\t\tnode.twoWayBinding.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\tif (node.inputs?.length) {\n\t\t\tnode.inputs.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack, attr.pipelineNames);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\tif (node.outputs?.length) {\n\t\t\tnode.outputs.forEach(event => {\n\t\t\t\tlet listener: Function;\n\t\t\t\t/**\n\t\t\t\t * <a (click)=\"onLinkClick($event)\"></a>\n\t\t\t\t * <a @click=\"onLinkClick($event)\"></a>\n\t\t\t\t * <input [(value)]=\"person.name\" />\n\t\t\t\t * <input (value)=\"person.name\" />\n\t\t\t\t * <!-- <input (value)=\"person.name = $event\" /> -->\n\t\t\t\t * \n\t\t\t\t * TODO: diff of event listener and back-way data binding\n\t\t\t\t */\n\t\t\t\tif (typeof event.value === 'string') {\n\t\t\t\t\tlistener = ($event: Event) => {\n\t\t\t\t\t\tconst stack = contextStack.copyStack();\n\t\t\t\t\t\tstack.pushBlockScopeFor({ $event });\n\t\t\t\t\t\tthis.view._zone.run(event.expression.get, event.expression, [stack]);\n\t\t\t\t\t};\n\t\t\t\t} else /* if (typeof event.sourceHandler === 'function')*/ {\n\t\t\t\t\t// let eventName: keyof HTMLElementEventMap = event.eventName;\n\t\t\t\t\tlistener = event.value;\n\t\t\t\t}\n\t\t\t\telement.addEventListener(event.name as any, listener as any);\n\t\t\t\tsubscriptions.push(createDestroySubscription(\n\t\t\t\t\t() => element.removeEventListener(event.name as any, listener as any),\n\t\t\t\t));\n\t\t\t});\n\t\t}\n\t\tif (node.templateAttrs?.length) {\n\t\t\tnode.templateAttrs.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\treturn subscriptions;\n\t}\n\n\tinitDirective(\n\t\tcontext: StructuralDirective | AttributeDirective,\n\t\tnode: DomStructuralDirectiveNode | DomAttributeDirectiveNode,\n\t\tcontextStack: Stack): ScopeSubscription<Context>[] {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\n\t\tif (node.attributes?.length) {\n\t\t\tnode.attributes.forEach(attr => attr.expression.get(contextStack));\n\t\t}\n\t\tif (node.twoWayBinding?.length) {\n\t\t\tnode.twoWayBinding.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\tif (node.inputs?.length) {\n\t\t\tnode.inputs.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack, attr.pipelineNames);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\tif (node.outputs?.length) {\n\t\t\tnode.outputs.forEach(event => {\n\t\t\t\tconst listener = ($event: Event) => {\n\t\t\t\t\tconst stack = contextStack.copyStack();\n\t\t\t\t\tstack.pushBlockScopeFor({ $event });\n\t\t\t\t\tthis.view._zone.run(event.expression.get, event.expression, [stack]);\n\t\t\t\t};\n\t\t\t\tconst subscription = (Reflect.get(context, event.name) as OutputSignal<T>).subscribe(listener);\n\t\t\t\tsubscriptions.push(createDestroySubscription(() => subscription.unsubscribe()));\n\t\t\t});\n\t\t}\n\t\tif (node.templateAttrs?.length) {\n\t\t\tnode.templateAttrs.forEach(attr => {\n\t\t\t\tconst sub = attr.expression.subscribe(contextStack);\n\t\t\t\tsubscriptions.push(...sub);\n\t\t\t\tattr.expression.get(contextStack);\n\t\t\t});\n\t\t}\n\t\t// TODO: \n\t\t// check host binding\n\t\treturn subscriptions;\n\t}\n\tprivate getViewChildSignal(templateRefName: string) {\n\t\tfor (const child of this.viewChildSignal) {\n\t\t\tconst signal = this.view._model[child.modelName];\n\t\t\tif (isViewChildSignal(signal) && signal.selector === templateRefName) {\n\t\t\t\treturn signal;\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\tprivate maskRawSignalScope(maskScope: ReactiveScope<Context>, model: Context) {\n\t\tObject.entries(model).forEach(([key, signal]) => {\n\t\t\tif (isSignal(signal)) {\n\t\t\t\tmaskScope.set(key, signal.get());\n\t\t\t\tsignal.subscribe(value => maskScope.set(key, value));\n\t\t\t\tmaskScope.subscribe(key, value => signal.set(value));\n\t\t\t} else if (isComputed(signal)) {\n\t\t\t\tmaskScope.set(key, signal.get());\n\t\t\t\tsignal.subscribe(value => maskScope.set(key, value));\n\t\t\t} else if (isReactive(signal)) {\n\t\t\t\tmaskScope.set(key, undefined);\n\t\t\t\tsignal.subscribe(value => maskScope.set(key, value));\n\t\t\t}\n\t\t});\n\t}\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CustomElement } from '../component/custom-element.js';
|
|
2
|
+
export declare class ShadowRootService {
|
|
3
|
+
private shadowRoots;
|
|
4
|
+
has(elem: CustomElement): boolean;
|
|
5
|
+
get(elem: CustomElement): ShadowRoot | undefined;
|
|
6
|
+
set(elem: CustomElement, root: ShadowRoot): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=shadow-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-root.d.ts","sourceRoot":"","sources":["../../../src/core/view/shadow-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,WAAW,CAA4C;IAE/D,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS;IAIhD,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;CAIhD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { provide } from '../di/inject.js';
|
|
2
|
+
export class ShadowRootService {
|
|
3
|
+
shadowRoots = new WeakMap();
|
|
4
|
+
has(elem) {
|
|
5
|
+
return this.shadowRoots.has(elem);
|
|
6
|
+
}
|
|
7
|
+
get(elem) {
|
|
8
|
+
return this.shadowRoots.get(elem);
|
|
9
|
+
}
|
|
10
|
+
set(elem, root) {
|
|
11
|
+
this.shadowRoots.set(elem, root);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
provide(ShadowRootService);
|
|
15
|
+
//# sourceMappingURL=shadow-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-root.js","sourceRoot":"","sources":["../../../src/core/view/shadow-root.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,iBAAiB;IACrB,WAAW,GAAG,IAAI,OAAO,EAA6B,CAAC;IAE/D,GAAG,CAAC,IAAmB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAmB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAmB,EAAE,IAAgB;QACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;CAED;AAED,OAAO,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["import { type CustomElement } from '../component/custom-element.js';\nimport { provide } from '../di/inject.js';\n\nexport class ShadowRootService {\n\tprivate shadowRoots = new WeakMap<CustomElement, ShadowRoot>();\n\n\thas(elem: CustomElement): boolean {\n\t\treturn this.shadowRoots.has(elem);\n\t}\n\n\tget(elem: CustomElement): ShadowRoot | undefined {\n\t\treturn this.shadowRoots.get(elem);\n\t}\n\n\tset(elem: CustomElement, root: ShadowRoot): void {\n\t\tthis.shadowRoots.set(elem, root);\n\t}\n\n}\n\nprovide(ShadowRootService);\n"]}
|