@ibyar/core 2.3.0 → 2.5.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 +23 -2
- package/annotation/decorators.d.ts.map +1 -1
- package/annotation/decorators.js +18 -0
- package/annotation/decorators.js.map +1 -1
- package/annotation/options.d.ts +11 -7
- package/annotation/options.d.ts.map +1 -1
- package/annotation/options.js.map +1 -1
- package/binding/binding.expressions.d.ts +2 -2
- package/binding/binding.expressions.d.ts.map +1 -1
- package/binding/binding.expressions.js.map +1 -1
- package/component/component.d.ts +15 -10
- package/component/component.d.ts.map +1 -1
- package/component/component.js +46 -1
- package/component/component.js.map +1 -1
- package/component/custom-element.d.ts +6 -2
- package/component/custom-element.d.ts.map +1 -1
- package/component/custom-element.js.map +1 -1
- package/component/events.js.map +1 -1
- package/component/initializer.d.ts +67 -0
- package/component/initializer.d.ts.map +1 -0
- package/component/initializer.js +59 -0
- package/component/initializer.js.map +1 -0
- package/di/inject.d.ts +11 -4
- package/di/inject.d.ts.map +1 -1
- package/di/inject.js +18 -2
- package/di/inject.js.map +1 -1
- package/di/provider.d.ts +7 -5
- package/di/provider.d.ts.map +1 -1
- package/di/provider.js +29 -13
- package/di/provider.js.map +1 -1
- package/directive/directive.d.ts +3 -2
- package/directive/directive.d.ts.map +1 -1
- package/directive/directive.js +6 -3
- package/directive/directive.js.map +1 -1
- package/html/deserialize.d.ts.map +1 -1
- package/html/deserialize.js +11 -2
- package/html/deserialize.js.map +1 -1
- package/html/expression.d.ts.map +1 -1
- package/html/expression.js +14 -5
- package/html/expression.js.map +1 -1
- package/html/types.d.ts +6 -0
- package/html/types.d.ts.map +1 -1
- package/html/types.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/initializer/input.d.ts +1 -0
- package/initializer/input.d.ts.map +1 -0
- package/initializer/input.js +2 -0
- package/initializer/input.js.map +1 -0
- package/linker/change-detector-ref.d.ts.map +1 -1
- package/linker/change-detector-ref.js +26 -4
- package/linker/change-detector-ref.js.map +1 -1
- package/linker/view-container-ref.d.ts +4 -4
- package/linker/view-container-ref.d.ts.map +1 -1
- package/linker/view-container-ref.js.map +1 -1
- package/package.json +8 -8
- package/pipe/pipe.d.ts +6 -6
- package/pipe/pipe.d.ts.map +1 -1
- package/pipe/pipe.js.map +1 -1
- package/signals/factory.d.ts +23 -0
- package/signals/factory.d.ts.map +1 -0
- package/signals/factory.js +65 -0
- package/signals/factory.js.map +1 -0
- package/signals/initializer.d.ts +26 -0
- package/signals/initializer.d.ts.map +1 -0
- package/signals/initializer.js +19 -0
- package/signals/initializer.js.map +1 -0
- package/signals/input.d.ts +1 -0
- package/signals/input.d.ts.map +1 -0
- package/signals/input.js +2 -0
- package/signals/input.js.map +1 -0
- package/signals/runtime.d.ts +37 -0
- package/signals/runtime.d.ts.map +1 -0
- package/signals/runtime.js +165 -0
- package/signals/runtime.js.map +1 -0
- package/signals/signals.d.ts +11 -9
- package/signals/signals.d.ts.map +1 -1
- package/signals/signals.js +23 -41
- package/signals/signals.js.map +1 -1
- package/utils/typeof.d.ts +4 -2
- package/utils/typeof.d.ts.map +1 -1
- package/utils/typeof.js.map +1 -1
- package/view/base-view.d.ts +2 -2
- package/view/base-view.d.ts.map +1 -1
- package/view/base-view.js +42 -24
- package/view/base-view.js.map +1 -1
- package/view/form-view.d.ts +2 -2
- package/view/form-view.d.ts.map +1 -1
- package/view/form-view.js +2 -1
- package/view/form-view.js.map +1 -1
- package/view/render.d.ts +4 -1
- package/view/render.d.ts.map +1 -1
- package/view/render.js +32 -6
- package/view/render.js.map +1 -1
- package/view/utils.d.ts +2 -2
- package/view/utils.d.ts.map +1 -1
- package/view/utils.js.map +1 -1
- package/view/view.d.ts +3 -3
- package/view/view.d.ts.map +1 -1
- package/view/view.js +27 -7
- package/view/view.js.map +1 -1
- package/zone/zone.js +1 -1
- package/zone/zone.js.map +1 -1
|
@@ -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 { Class, TypeOf } 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} from './reflect.js';\nimport { deserializeExpressionNodes } from '../html/deserialize.js';\nimport { parseHostNode } from '../html/host.js';\nimport { provide } from '../di/inject.js';\n\n\nexport interface InjectableRef<T> {\n\tprovideIn: TypeOf<CustomElementConstructor> | 'root' | 'platform' | 'any';\n\tmodelClass: TypeOf<T>;\n\tname: string;\n}\n\nexport interface PipeRef<T> {\n\tname: string;\n\tasynchronous?: boolean;\n\tmodelClass: TypeOf<T>;\n}\nexport interface DirectiveRef<T> {\n\tselector: string;\n\texportAs?: string;\n\tzone?: ZoneType;\n\n\tmodelClass: TypeOf<StructuralDirective> | TypeOf<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}\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: TypeOf<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\tformAssociated: boolean | TypeOf<ValueControl<any>>;\n\tzone?: ZoneType;\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\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\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\tsuccessor: (metadata.successor as string | undefined),\n\t\t});\n\t}\n\n\tstatic definePipe<T extends Class>(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 Class>(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 Class>(modelClass: MetadataClass<T>, opts: ComponentOptions<T>, metadata: MetadataContext) {\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\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}\n"]}
|
|
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,9 +1,11 @@
|
|
|
1
1
|
import type { ReactiveScope, ReactiveScopeControl, Context, SignalScope } from '@ibyar/expressions';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Type } from '../utils/typeof.js';
|
|
3
3
|
import { EventEmitter } from './events.js';
|
|
4
4
|
import { ComponentRef } from './component.js';
|
|
5
5
|
import { AuroraZone } from '../zone/zone.js';
|
|
6
6
|
import { PropertyRef } from './reflect.js';
|
|
7
|
+
import { InjectionProvider } from '../di/provider.js';
|
|
8
|
+
import { ChangeDetectorRef } from '../linker/change-detector-ref.js';
|
|
7
9
|
export interface CustomElement {
|
|
8
10
|
adoptedCallback(): void;
|
|
9
11
|
attributeChangedCallback(name: string, oldValue: any, newValue: any): void;
|
|
@@ -22,6 +24,8 @@ export interface BaseComponent<T> extends CustomElement {
|
|
|
22
24
|
'this': BaseComponent<T>;
|
|
23
25
|
}>;
|
|
24
26
|
_zone: AuroraZone;
|
|
27
|
+
_provider: InjectionProvider;
|
|
28
|
+
_detector: ChangeDetectorRef;
|
|
25
29
|
getComponentRef(): ComponentRef<T>;
|
|
26
30
|
hasInputStartWith(viewProp: string): boolean;
|
|
27
31
|
getInputStartWith(viewProp: string): PropertyRef | undefined;
|
|
@@ -43,7 +47,7 @@ export interface BaseComponent<T> extends CustomElement {
|
|
|
43
47
|
export interface HTMLComponent<T> extends BaseComponent<T>, HTMLElement {
|
|
44
48
|
}
|
|
45
49
|
export declare function isHTMLComponent(object: any): object is HTMLComponent<any>;
|
|
46
|
-
export declare function isHTMLComponentOfType<T extends object>(object: any, typeClass:
|
|
50
|
+
export declare function isHTMLComponentOfType<T extends object>(object: any, typeClass: Type<T>): object is HTMLComponent<T>;
|
|
47
51
|
export declare function isHTMLElement(element: HTMLElement): element is HTMLElement;
|
|
48
52
|
export declare function isHTMLUnknownElement(element: HTMLElement): element is HTMLElement;
|
|
49
53
|
/**
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"custom-element.d.ts","sourceRoot":"","sources":["../../../src/core/component/custom-element.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAwDA,MAAM,UAAU,eAAe,CAAC,MAAW;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;WAChC,MAAM,YAAY,WAAW,CAAC;AACnC,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, ReactiveScopeControl, Context, SignalScope } from '@ibyar/expressions';\nimport type { Type } from '../utils/typeof.js';\nimport { EventEmitter } from './events.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';\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: ReactiveScopeControl<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\n\tgetComponentRef(): ComponentRef<T>;\n\n\thasInputStartWith(viewProp: string): boolean;\n\tgetInputStartWith(viewProp: string): PropertyRef | undefined;\n\tgetInput(viewProp: string): PropertyRef | undefined;\n\tgetInputValue(viewProp: string): any;\n\tsetInputValue(viewProp: string, value: any): void;\n\n\thasInput(viewProp: string): boolean;\n\thasProp(propName: string): boolean;\n\thasOutput(viewProp: string): boolean;\n\n\tgetOutput(viewProp: string): PropertyRef | undefined;\n\tgetEventEmitter<V>(viewProp: string): EventEmitter<V> | undefined;\n\n\ttriggerOutput(eventName: string, value?: any): void;\n\tonDestroy(callback: () => void): void;\n\n\t/**\n\t * apply change detection\n\t */\n\tdetectChanges(): void;\n}\n\nexport interface HTMLComponent<T> extends BaseComponent<T>, HTMLElement { }\n\nexport function isHTMLComponent(object: any): object is HTMLComponent<any> {\n\treturn Reflect.has(object, '_model')\n\t\t&& object instanceof HTMLElement;\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"]}
|
package/component/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/core/component/events.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAEJ;IADZ,kBAAkB,CAAsB;IAChD,YAAoB,YAA6B;QAA7B,iBAAY,GAAZ,YAAY,CAAiB;IAAI,CAAC;IACtD,GAAG,CAAC,YAA+B;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,WAAW;QACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;gBAChD,YAAY,CAAC,WAAW,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;CACD;AAQD,MAAM,OAAO,YAAY;IAChB,WAAW,GAAoC,IAAI,GAAG,EAAE,CAAC;IACjE,gBAAgB,CAAC;IACjB,IAAI,CAAC,KAAS;QACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACtC,IAAI,CAAC;gBACJ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACJ,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC;oBACJ,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACxB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,SAAS,CAAC,IAAU,EAAE,KAAW,EAAE,QAAc;QAChD,MAAM,YAAY,GAAoB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,YAA6B;QACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;CACD","sourcesContent":["export class Subscription<T> {\n\tprivate othersSubscription: Subscription<any>[];\n\tconstructor(private eventEmitter: EventEmitter<T>) { }\n\tadd(subscription: Subscription<any>) {\n\t\tif (!this.othersSubscription) {\n\t\t\tthis.othersSubscription = [];\n\t\t}\n\t\tthis.othersSubscription.push(subscription);\n\t}\n\tunsubscribe(): void {\n\t\tthis.eventEmitter.remove(this);\n\t\tif (this.othersSubscription) {\n\t\t\tthis.othersSubscription.forEach((subscription) => {\n\t\t\t\tsubscription.unsubscribe();\n\t\t\t});\n\t\t}\n\t}\n}\n\ninterface Subscribe {\n\tnext?: any;\n\terror?: any;\n\tcomplete?: any;\n}\n\nexport class EventEmitter<T> {\n\tprivate subscribers: Map<Subscription<T>, Subscribe> = new Map();\n\tconstructor() { }\n\temit(value?: T): void {\n\t\tthis.subscribers.forEach((subscribe) => {\n\t\t\ttry {\n\t\t\t\tsubscribe.next(value);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tsubscribe.error?.(error);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('error: handling event', error);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tsubscribe.complete?.();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('error: handling event', error);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tsubscribe(next?: any, error?: any, complete?: any): Subscription<T> {\n\t\tconst subscription: Subscription<T> = new Subscription(this);\n\t\tthis.subscribers.set(subscription, { next, error, complete });\n\t\treturn subscription;\n\t}\n\n\tremove(subscription: Subscription<T>) {\n\t\tthis.subscribers.delete(subscription);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/core/component/events.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAEJ;IADZ,kBAAkB,CAAsB;IAChD,YAAoB,YAA6B;QAA7B,iBAAY,GAAZ,YAAY,CAAiB;IAAI,CAAC;IACtD,GAAG,CAAC,YAA+B;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,WAAW;QACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;gBAChD,YAAY,CAAC,WAAW,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;CACD;AAQD,MAAM,OAAO,YAAY;IAChB,WAAW,GAAoC,IAAI,GAAG,EAAE,CAAC;IACjE,gBAAgB,CAAC;IACjB,IAAI,CAAC,KAAS;QACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACtC,IAAI,CAAC;gBACJ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACJ,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC;oBACJ,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACxB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,SAAS,CAAC,IAAU,EAAE,KAAW,EAAE,QAAc;QAChD,MAAM,YAAY,GAAoB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,YAA6B;QACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;CACD","sourcesContent":["export class Subscription<T> {\n\tprivate othersSubscription: Subscription<any>[];\n\tconstructor(private eventEmitter: EventEmitter<T>) { }\n\tadd(subscription: Subscription<any>) {\n\t\tif (!this.othersSubscription) {\n\t\t\tthis.othersSubscription = [];\n\t\t}\n\t\tthis.othersSubscription.push(subscription);\n\t}\n\tunsubscribe(): void {\n\t\tthis.eventEmitter.remove(this);\n\t\tif (this.othersSubscription) {\n\t\t\tthis.othersSubscription.forEach((subscription) => {\n\t\t\t\tsubscription.unsubscribe();\n\t\t\t});\n\t\t}\n\t}\n}\n\ninterface Subscribe {\n\tnext?: any;\n\terror?: any;\n\tcomplete?: any;\n}\n\nexport class EventEmitter<T> {\n\tprivate subscribers: Map<Subscription<T>, Subscribe> = new Map();\n\tconstructor() { }\n\temit(value?: T): void {\n\t\tthis.subscribers.forEach((subscribe) => {\n\t\t\ttry {\n\t\t\t\tsubscribe.next(value);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tsubscribe.error?.(error);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('error: handling event', error);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tsubscribe.complete?.();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('error: handling event', error);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tsubscribe(next?: any, error?: any, complete?: any): Subscription<T> {\n\t\tconst subscription: Subscription<T> = new Subscription(this);\n\t\tthis.subscribers.set(subscription, { next, error, complete });\n\t\treturn subscription;\n\t}\n\n\tremove(subscription: Subscription<T>) {\n\t\tthis.subscribers.delete(subscription);\n\t}\n}\n\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ScopeSubscription, Signal, WritableSignal } from '@ibyar/expressions';
|
|
2
|
+
import { InjectionToken } from '../di/provider.js';
|
|
3
|
+
import { Type } from '../utils/typeof.js';
|
|
4
|
+
import { HTMLComponent } from './custom-element.js';
|
|
5
|
+
import { OutputEventInit } from '../annotation/options.js';
|
|
6
|
+
export interface InputOptions<T, TransformT> {
|
|
7
|
+
alias?: string;
|
|
8
|
+
transform?: (v: TransformT) => T;
|
|
9
|
+
}
|
|
10
|
+
export type InputOptionsWithoutTransform<T> = Omit<InputOptions<T, T>, 'transform'> & {
|
|
11
|
+
transform?: undefined;
|
|
12
|
+
};
|
|
13
|
+
export type InputOptionsWithTransform<T, TransformT> = Required<Pick<InputOptions<T, TransformT>, 'transform'>> & InputOptions<T, TransformT>;
|
|
14
|
+
export interface InputSignalWithTransform<T, TransformT> extends Signal<T> {
|
|
15
|
+
}
|
|
16
|
+
export interface InputSignal<T, TransformT = T> extends InputSignalWithTransform<T, TransformT> {
|
|
17
|
+
}
|
|
18
|
+
export declare function input<T>(): InputSignal<T>;
|
|
19
|
+
export declare function input<T>(initialValue: T, opts?: InputOptionsWithoutTransform<T>): InputSignal<T>;
|
|
20
|
+
export declare function input<T, TransformT = T>(initialValue: T, opts: InputOptionsWithTransform<T, TransformT>): InputSignalWithTransform<T, TransformT>;
|
|
21
|
+
export declare function input<T, TransformT = T>(initialValue?: T, opts?: InputOptions<T, TransformT>): InputSignal<T, TransformT>;
|
|
22
|
+
export declare namespace input {
|
|
23
|
+
var required: typeof requiredInput;
|
|
24
|
+
}
|
|
25
|
+
declare function requiredInput<T>(): InputSignal<T>;
|
|
26
|
+
declare function requiredInput<T>(opts?: InputOptionsWithoutTransform<T>): InputSignal<T>;
|
|
27
|
+
declare function requiredInput<T, TransformT = T>(opts: InputOptionsWithTransform<T, TransformT>): InputSignalWithTransform<T, TransformT>;
|
|
28
|
+
type OutputOption = OutputEventInit & {
|
|
29
|
+
alias?: string;
|
|
30
|
+
};
|
|
31
|
+
export interface OutputSignal<T> extends Signal<T> {
|
|
32
|
+
set: never;
|
|
33
|
+
update: never;
|
|
34
|
+
}
|
|
35
|
+
export declare class OutputSignal<T> extends Signal<T> {
|
|
36
|
+
options?: OutputOption;
|
|
37
|
+
emit(value: T): void;
|
|
38
|
+
}
|
|
39
|
+
export declare function isOutputSignal<T = any>(signal: any): signal is OutputSignal<T>;
|
|
40
|
+
export declare function output<T>(opts?: OutputOption): OutputSignal<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>;
|
|
53
|
+
export declare const VIEW_TOKEN: InjectionToken<HTMLElement>;
|
|
54
|
+
export declare function view(): HTMLElement;
|
|
55
|
+
export declare function view<T extends keyof HTMLElementTagNameMap>(extend: T): HTMLElementTagNameMap[T];
|
|
56
|
+
export declare function view<T>(type: Type<T>): HTMLComponent<T>;
|
|
57
|
+
export declare function view<T, V extends keyof HTMLElementTagNameMap>(type: Type<T>, extend: V): HTMLComponent<T> & HTMLElementTagNameMap[V];
|
|
58
|
+
export declare class ViewChildSignal<T> extends Signal<T> {
|
|
59
|
+
selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap;
|
|
60
|
+
}
|
|
61
|
+
export declare function isViewChildSignal<T = any>(signal: any): signal is ViewChildSignal<T>;
|
|
62
|
+
export declare function viewChild<T extends HTMLElement>(selector: Type<T>): Signal<T>;
|
|
63
|
+
export declare function viewChild<T>(selector: Type<T>): Signal<HTMLComponent<T>>;
|
|
64
|
+
export declare function viewChild<T extends keyof HTMLElementTagNameMap>(selector: T): Signal<HTMLElementTagNameMap[T]>;
|
|
65
|
+
export declare function viewChild<T extends HTMLElement>(selector: string): Signal<T>;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=initializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializer.d.ts","sourceRoot":"","sources":["../../../src/core/component/initializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { getReactiveNode, Signal } from '@ibyar/expressions';
|
|
2
|
+
import { signalScopeFactory } from '../signals/factory.js';
|
|
3
|
+
import { InjectionToken } from '../di/provider.js';
|
|
4
|
+
import { inject } from '../di/inject.js';
|
|
5
|
+
export function input(initialValue, opts) {
|
|
6
|
+
const signal = signalScopeFactory.signal(initialValue);
|
|
7
|
+
if (opts?.transform) {
|
|
8
|
+
const setOriginal = signal.set;
|
|
9
|
+
signal.set = (value) => setOriginal(opts.transform(value));
|
|
10
|
+
}
|
|
11
|
+
;
|
|
12
|
+
return signal;
|
|
13
|
+
}
|
|
14
|
+
function requiredInput(opts) {
|
|
15
|
+
return input(undefined, opts);
|
|
16
|
+
}
|
|
17
|
+
input.required = requiredInput;
|
|
18
|
+
export class OutputSignal extends Signal {
|
|
19
|
+
options;
|
|
20
|
+
emit(value) {
|
|
21
|
+
this.scope.set(this.index, value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function isOutputSignal(signal) {
|
|
25
|
+
return signal instanceof OutputSignal;
|
|
26
|
+
}
|
|
27
|
+
export function output(opts) {
|
|
28
|
+
const signal = signalScopeFactory.signal(undefined, OutputSignal);
|
|
29
|
+
signal.options = opts;
|
|
30
|
+
return signal;
|
|
31
|
+
}
|
|
32
|
+
export function model(opts) {
|
|
33
|
+
const signal = signalScopeFactory.signalFn(undefined);
|
|
34
|
+
const node = getReactiveNode(signal);
|
|
35
|
+
if (node) {
|
|
36
|
+
signal.subscribe = node.subscribe.bind(signal);
|
|
37
|
+
}
|
|
38
|
+
return signal;
|
|
39
|
+
}
|
|
40
|
+
function requiredModel(opts) {
|
|
41
|
+
return model(opts);
|
|
42
|
+
}
|
|
43
|
+
model.required = requiredModel;
|
|
44
|
+
export const VIEW_TOKEN = new InjectionToken('VIEW');
|
|
45
|
+
export function view() {
|
|
46
|
+
return inject(VIEW_TOKEN);
|
|
47
|
+
}
|
|
48
|
+
export class ViewChildSignal extends Signal {
|
|
49
|
+
selector;
|
|
50
|
+
}
|
|
51
|
+
export function isViewChildSignal(signal) {
|
|
52
|
+
return signal instanceof ViewChildSignal;
|
|
53
|
+
}
|
|
54
|
+
export function viewChild(selector) {
|
|
55
|
+
const signal = signalScopeFactory.signal(undefined, ViewChildSignal);
|
|
56
|
+
signal.selector = selector;
|
|
57
|
+
return signal;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=initializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializer.js","sourceRoot":"","sources":["../../../src/core/component/initializer.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EAEf,MAAM,EACN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA2BzC,MAAM,UAAU,KAAK,CAAoB,YAAgB,EAAE,IAAkC;IAC5F,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,KAAQ,EAAQ,EAAE,CAAC,WAAW,CAAC,IAAK,CAAC,SAAU,CAAC,KAA0B,CAAC,CAAC,CAAC;IAC5F,CAAC;IAAA,CAAC;IACF,OAAO,MAAoC,CAAC;AAC7C,CAAC;AAKD,SAAS,aAAa,CAAoB,IAAkC;IAC3E,OAAO,KAAK,CAAC,SAAc,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;AAY/B,MAAM,OAAO,YAAgB,SAAQ,MAAS;IACtC,OAAO,CAAgB;IAE9B,IAAI,CAAC,KAAQ;QACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;CACD;AAGD,MAAM,UAAU,cAAc,CAAU,MAAW;IAClD,OAAO,MAAM,YAAY,YAAY,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,IAAmB;IAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAoB,CAAC;IACrF,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,OAAO,MAAM,CAAC;AACf,CAAC;AAYD,MAAM,UAAU,KAAK,CAAI,IAAmB;IAC3C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAmB,CAAC;IACxE,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAGD,SAAS,aAAa,CAAI,IAAmB;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;AAG/B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,cAAc,CAAc,MAAM,CAAC,CAAC;AAOlE,MAAM,UAAU,IAAI;IACnB,OAAO,MAAM,CAAC,UAAU,CAAE,CAAC;AAC5B,CAAC;AAGD,MAAM,OAAO,eAAmB,SAAQ,MAAS;IACzC,QAAQ,CAA+D;CAC9E;AAED,MAAM,UAAU,iBAAiB,CAAU,MAAW;IACrD,OAAO,MAAM,YAAY,eAAe,CAAC;AAC1C,CAAC;AAMD,MAAM,UAAU,SAAS,CAAI,QAAsE;IAClG,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAuB,CAAC;IAC3F,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,OAAO,MAAM,CAAC;AACf,CAAC","sourcesContent":["import {\n\tgetReactiveNode,\n\tScopeSubscription,\n\tSignal, WritableSignal\n} from '@ibyar/expressions';\nimport { signalScopeFactory } from '../signals/factory.js';\nimport { InjectionToken } from '../di/provider.js';\nimport { inject } from '../di/inject.js';\nimport { Type } from '../utils/typeof.js';\nimport { HTMLComponent } from './custom-element.js';\nimport { OutputEventInit } from '../annotation/options.js';\n\n\nexport interface InputOptions<T, TransformT> {\n\talias?: string;\n\ttransform?: (v: TransformT) => T;\n}\n\nexport type InputOptionsWithoutTransform<T> = Omit<InputOptions<T, T>, 'transform'> & { transform?: undefined }\n\nexport type InputOptionsWithTransform<T, TransformT> = Required<Pick<InputOptions<T, TransformT>, 'transform'>> & InputOptions<T, TransformT>;\n\nexport interface InputSignalWithTransform<T, TransformT> extends Signal<T> {\n\n}\n\nexport interface InputSignal<T, TransformT = T> extends InputSignalWithTransform<T, TransformT> {\n\n}\n\nexport function input<T>(): InputSignal<T>;\nexport function input<T>(initialValue: T, opts?: InputOptionsWithoutTransform<T>): InputSignal<T>;\nexport function input<T, TransformT = T>(initialValue: T, opts: InputOptionsWithTransform<T, TransformT>): InputSignalWithTransform<T, TransformT>;\nexport function input<T, TransformT = T>(initialValue?: T, opts?: InputOptions<T, TransformT>): InputSignal<T, TransformT>;\nexport function input<T, TransformT = T>(initialValue?: T, opts?: InputOptions<T, TransformT>): InputSignal<T, TransformT> {\n\tconst signal = signalScopeFactory.signal(initialValue);\n\tif (opts?.transform) {\n\t\tconst setOriginal = signal.set;\n\t\tsignal.set = (value: T): void => setOriginal(opts!.transform!(value as any as TransformT));\n\t};\n\treturn signal as InputSignal<T, TransformT>;\n}\n\nfunction requiredInput<T>(): InputSignal<T>;\nfunction requiredInput<T>(opts?: InputOptionsWithoutTransform<T>): InputSignal<T>;\nfunction requiredInput<T, TransformT = T>(opts: InputOptionsWithTransform<T, TransformT>): InputSignalWithTransform<T, TransformT>;\nfunction requiredInput<T, TransformT = T>(opts?: InputOptions<T, TransformT>): InputSignal<T, TransformT> {\n\treturn input(undefined as T, opts);\n}\n\ninput.required = requiredInput;\n\n\ntype OutputOption = OutputEventInit & { alias?: string };\n\n\n\nexport interface OutputSignal<T> extends Signal<T> {\n\tset: never;\n\tupdate: never;\n}\n\nexport class OutputSignal<T> extends Signal<T> {\n\tpublic options?: OutputOption;\n\n\temit(value: T) {\n\t\tthis.scope.set(this.index, value);\n\t}\n}\n\n\nexport function isOutputSignal<T = any>(signal: any): signal is OutputSignal<T> {\n\treturn signal instanceof OutputSignal;\n}\n\nexport function output<T>(opts?: OutputOption): OutputSignal<T> {\n\tconst signal = signalScopeFactory.signal(undefined, OutputSignal) as OutputSignal<T>;\n\tsignal.options = opts;\n\treturn signal;\n}\n\ninterface ModelOptions {\n\talias?: string;\n}\n\nexport interface ModelSignal<T> extends WritableSignal<T> {\n\tsubscribe(callback: (value: T) => void): ScopeSubscription<T>;\n}\n\nexport function model<T>(): ModelSignal<T>;\nexport function model<T>(opts?: ModelOptions): ModelSignal<T>;\nexport function model<T>(opts?: ModelOptions): ModelSignal<T> {\n\tconst signal = signalScopeFactory.signalFn(undefined) as ModelSignal<T>;\n\tconst node = getReactiveNode(signal);\n\tif (node) {\n\t\tsignal.subscribe = node.subscribe.bind(signal);\n\t}\n\treturn signal;\n}\n\nfunction requiredModel<T>(): ModelSignal<T>;\nfunction requiredModel<T>(opts?: ModelOptions): ModelSignal<T> {\n\treturn model(opts);\n}\n\nmodel.required = requiredModel;\n\n\nexport const VIEW_TOKEN = new InjectionToken<HTMLElement>('VIEW');\n\n\nexport function view(): HTMLElement;\nexport function view<T extends keyof HTMLElementTagNameMap>(extend: T): HTMLElementTagNameMap[T];\nexport function view<T>(type: Type<T>): HTMLComponent<T>;\nexport function view<T, V extends keyof HTMLElementTagNameMap>(type: Type<T>, extend: V): HTMLComponent<T> & HTMLElementTagNameMap[V];\nexport function view(): any {\n\treturn inject(VIEW_TOKEN)!;\n}\n\n\nexport class ViewChildSignal<T> extends Signal<T> {\n\tpublic selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap;\n}\n\nexport function isViewChildSignal<T = any>(signal: any): signal is ViewChildSignal<T> {\n\treturn signal instanceof ViewChildSignal;\n}\n\nexport function viewChild<T extends HTMLElement>(selector: Type<T>): Signal<T>;\nexport function viewChild<T>(selector: Type<T>): Signal<HTMLComponent<T>>;\nexport function viewChild<T extends keyof HTMLElementTagNameMap>(selector: T): Signal<HTMLElementTagNameMap[T]>;\nexport function viewChild<T extends HTMLElement>(selector: string): Signal<T>;\nexport function viewChild<T>(selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap): Signal<T> {\n\tconst signal = signalScopeFactory.signal(undefined, ViewChildSignal) as ViewChildSignal<T>;\n\tsignal.selector = selector;\n\treturn signal;\n}\n"]}
|
package/di/inject.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { InjectionToken } from './provider.js';
|
|
3
|
-
export declare function
|
|
1
|
+
import { AbstractType, Type } from '../utils/typeof.js';
|
|
2
|
+
import { InjectionProvider, InjectionToken } from './provider.js';
|
|
3
|
+
export declare function forkProvider(): InjectionProvider;
|
|
4
|
+
export declare function addProvider(modelProvider: InjectionProvider): void;
|
|
5
|
+
export declare function removeProvider(modelProvider: InjectionProvider): void;
|
|
6
|
+
export declare function provide<T>(type: Type<T>): void;
|
|
7
|
+
export declare function provide<T>(type: AbstractType<T>): void;
|
|
8
|
+
export declare function provide<T>(type: Type<T>, value: T): void;
|
|
9
|
+
export declare function provide<T>(type: AbstractType<T>, value: T): void;
|
|
4
10
|
export declare function provide<T>(token: InjectionToken<T>, value: T): void;
|
|
5
|
-
export declare function inject<T>(type:
|
|
11
|
+
export declare function inject<T>(type: Type<T>): T;
|
|
12
|
+
export declare function inject<T>(type: AbstractType<T>): T;
|
|
6
13
|
export declare function inject<T>(token: InjectionToken<T>): T | undefined;
|
|
7
14
|
//# sourceMappingURL=inject.d.ts.map
|
package/di/inject.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../src/core/di/inject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../src/core/di/inject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAY,MAAM,eAAe,CAAC;AAO5E,wBAAgB,YAAY,IAAI,iBAAiB,CAEhD;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,iBAAiB,QAE3D;AAED,wBAAgB,cAAc,CAAC,aAAa,EAAE,iBAAiB,QAK9D;AAMD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAChD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACxD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;AAC1D,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;AAClE,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;AAKrE,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC"}
|
package/di/inject.js
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
import { InjectionProvider } from './provider.js';
|
|
2
2
|
const ROOT_PROVIDER = new InjectionProvider();
|
|
3
|
+
const PROVIDERS = [ROOT_PROVIDER];
|
|
4
|
+
export function forkProvider() {
|
|
5
|
+
return ROOT_PROVIDER.fork();
|
|
6
|
+
}
|
|
7
|
+
export function addProvider(modelProvider) {
|
|
8
|
+
PROVIDERS.push(modelProvider);
|
|
9
|
+
}
|
|
10
|
+
export function removeProvider(modelProvider) {
|
|
11
|
+
const index = PROVIDERS.findIndex(provider => provider === modelProvider);
|
|
12
|
+
if (index >= 0) {
|
|
13
|
+
PROVIDERS.splice(index, 1);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function getProvider() {
|
|
17
|
+
return PROVIDERS.at(-1) ?? ROOT_PROVIDER;
|
|
18
|
+
}
|
|
3
19
|
export function provide(provider, value) {
|
|
4
|
-
|
|
20
|
+
getProvider().provide(provider, value);
|
|
5
21
|
}
|
|
6
22
|
export function inject(provider) {
|
|
7
|
-
return
|
|
23
|
+
return getProvider().inject(provider);
|
|
8
24
|
}
|
|
9
25
|
//# sourceMappingURL=inject.js.map
|
package/di/inject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../src/core/di/inject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,eAAe,CAAC;AAG5E,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../src/core/di/inject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,eAAe,CAAC;AAG5E,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAE9C,MAAM,SAAS,GAAwB,CAAC,aAAa,CAAC,CAAC;AAEvD,MAAM,UAAU,YAAY;IAC3B,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,aAAgC;IAC3D,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,aAAgC;IAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC;IAC1E,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAChB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,SAAS,WAAW;IACnB,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;AAC1C,CAAC;AAOD,MAAM,UAAU,OAAO,CAAI,QAAqB,EAAE,KAAS;IAC1D,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAKD,MAAM,UAAU,MAAM,CAAI,QAAqB;IAC9C,OAAO,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import { AbstractType, Type } from '../utils/typeof.js';\nimport { InjectionProvider, InjectionToken, Provider } from './provider.js';\n\n\nconst ROOT_PROVIDER = new InjectionProvider();\n\nconst PROVIDERS: InjectionProvider[] = [ROOT_PROVIDER];\n\nexport function forkProvider(): InjectionProvider {\n\treturn ROOT_PROVIDER.fork();\n}\n\nexport function addProvider(modelProvider: InjectionProvider) {\n\tPROVIDERS.push(modelProvider);\n}\n\nexport function removeProvider(modelProvider: InjectionProvider) {\n\tconst index = PROVIDERS.findIndex(provider => provider === modelProvider);\n\tif (index >= 0) {\n\t\tPROVIDERS.splice(index, 1);\n\t}\n}\n\nfunction getProvider(): InjectionProvider {\n\treturn PROVIDERS.at(-1) ?? ROOT_PROVIDER;\n}\n\nexport function provide<T>(type: Type<T>): void;\nexport function provide<T>(type: AbstractType<T>): void;\nexport function provide<T>(type: Type<T>, value: T): void;\nexport function provide<T>(type: AbstractType<T>, value: T): void;\nexport function provide<T>(token: InjectionToken<T>, value: T): void;\nexport function provide<T>(provider: Provider<T>, value?: T) {\n\tgetProvider().provide(provider, value);\n}\n\nexport function inject<T>(type: Type<T>): T;\nexport function inject<T>(type: AbstractType<T>): T;\nexport function inject<T>(token: InjectionToken<T>): T | undefined;\nexport function inject<T>(provider: Provider<T>): T | undefined {\n\treturn getProvider().inject(provider);\n}\n"]}
|
package/di/provider.d.ts
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AbstractType, Type } from '../utils/typeof.js';
|
|
2
2
|
export declare class InjectionToken<T> {
|
|
3
3
|
token: string;
|
|
4
4
|
constructor(token: string);
|
|
5
5
|
}
|
|
6
|
-
export type Provider<T> =
|
|
6
|
+
export type Provider<T> = Type<T> | AbstractType<T> | InjectionToken<T>;
|
|
7
7
|
export declare class InjectionProvider {
|
|
8
8
|
private parent?;
|
|
9
9
|
private readonly types;
|
|
10
10
|
private readonly tokens;
|
|
11
11
|
constructor(parent?: InjectionProvider | undefined);
|
|
12
|
+
fork(): InjectionProvider;
|
|
12
13
|
hasToken<T>(token: InjectionToken<T>): InjectionProvider | false;
|
|
13
|
-
hasType<T>(type:
|
|
14
|
+
hasType<T>(type: Type<any> | AbstractType<any>): InjectionProvider | false;
|
|
14
15
|
getToken<T>(token: InjectionToken<T>): T | undefined;
|
|
15
|
-
getInstance<T>(type:
|
|
16
|
-
setType<T>(type:
|
|
16
|
+
getInstance<T>(type: Type<any> | AbstractType<any>): T;
|
|
17
|
+
setType<T>(type: Type<any> | AbstractType<any>, value?: T): void;
|
|
17
18
|
setToken<T>(token: InjectionToken<T>, value: T): void;
|
|
18
19
|
provide<T>(typeOrToken: Provider<T>, value?: T): void;
|
|
19
20
|
inject<T>(typeOrToken: Provider<T>): T | undefined;
|
|
21
|
+
clear<T>(typeOrToken: Provider<T>): void;
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=provider.d.ts.map
|
package/di/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/core/di/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/core/di/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG7D,qBAAa,cAAc,CAAC,CAAC;IACT,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAChC;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAIxE,qBAAa,iBAAiB;IAKjB,OAAO,CAAC,MAAM,CAAC;IAH3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiD;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAE1C,MAAM,CAAC,EAAE,iBAAiB,YAAA;IAE9C,IAAI,IAAI,iBAAiB;IAIzB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,KAAK;IAIhE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,iBAAiB,GAAG,KAAK;IAI1E,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAQpD,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;IAWtD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAIhE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIrD,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAQ9C,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAOlD,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;CAUxC"}
|
package/di/provider.js
CHANGED
|
@@ -4,14 +4,17 @@ export class InjectionToken {
|
|
|
4
4
|
this.token = token;
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
const
|
|
7
|
+
const REQUIRE_INIT = Symbol('REQUIRE_INIT');
|
|
8
8
|
export class InjectionProvider {
|
|
9
9
|
parent;
|
|
10
|
-
types = new
|
|
11
|
-
tokens = new
|
|
10
|
+
types = new Map();
|
|
11
|
+
tokens = new Map();
|
|
12
12
|
constructor(parent) {
|
|
13
13
|
this.parent = parent;
|
|
14
14
|
}
|
|
15
|
+
fork() {
|
|
16
|
+
return new InjectionProvider(this);
|
|
17
|
+
}
|
|
15
18
|
hasToken(token) {
|
|
16
19
|
return this.tokens.has(token) ? this : false;
|
|
17
20
|
}
|
|
@@ -19,39 +22,52 @@ export class InjectionProvider {
|
|
|
19
22
|
return this.types.has(type) ? this : false;
|
|
20
23
|
}
|
|
21
24
|
getToken(token) {
|
|
22
|
-
|
|
25
|
+
let value = this.tokens.get(token);
|
|
26
|
+
if (value === undefined && this.parent) {
|
|
27
|
+
value = this.parent.getToken(token);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
23
30
|
}
|
|
24
31
|
getInstance(type) {
|
|
25
32
|
let instance = this.types.get(type);
|
|
26
|
-
if (instance ===
|
|
33
|
+
if (instance === REQUIRE_INIT) {
|
|
27
34
|
instance = new type();
|
|
28
35
|
this.types.set(type, instance);
|
|
29
36
|
}
|
|
37
|
+
else if (instance === undefined && this.parent) {
|
|
38
|
+
instance = this.parent.getInstance(type);
|
|
39
|
+
}
|
|
30
40
|
return instance;
|
|
31
41
|
}
|
|
32
42
|
setType(type, value) {
|
|
33
|
-
this.types.set(type, value ??
|
|
43
|
+
this.types.set(type, value ?? REQUIRE_INIT);
|
|
34
44
|
}
|
|
35
45
|
setToken(token, value) {
|
|
36
46
|
this.tokens.set(token, value);
|
|
37
47
|
}
|
|
38
48
|
provide(typeOrToken, value) {
|
|
39
49
|
if (typeOrToken instanceof InjectionToken) {
|
|
40
|
-
|
|
41
|
-
provider.setToken(typeOrToken, value);
|
|
50
|
+
this.setToken(typeOrToken, value);
|
|
42
51
|
}
|
|
43
52
|
else {
|
|
44
|
-
|
|
45
|
-
provider.setType(typeOrToken, value ?? EMPTY_VALUE);
|
|
53
|
+
this.setType(typeOrToken, value ?? REQUIRE_INIT);
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
inject(typeOrToken) {
|
|
57
|
+
if (typeOrToken instanceof InjectionToken) {
|
|
58
|
+
return this.getToken(typeOrToken);
|
|
59
|
+
}
|
|
60
|
+
return this.getInstance(typeOrToken);
|
|
61
|
+
}
|
|
62
|
+
clear(typeOrToken) {
|
|
49
63
|
if (typeOrToken instanceof InjectionToken) {
|
|
50
64
|
const provider = this.parent?.hasToken(typeOrToken) || this;
|
|
51
|
-
|
|
65
|
+
provider.tokens.delete(typeOrToken);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const provider = this.parent?.hasType(typeOrToken) || this;
|
|
69
|
+
provider.types.delete(typeOrToken);
|
|
52
70
|
}
|
|
53
|
-
const provider = this.parent?.hasType(typeOrToken) || this;
|
|
54
|
-
return provider.getInstance(typeOrToken);
|
|
55
71
|
}
|
|
56
72
|
}
|
|
57
73
|
//# sourceMappingURL=provider.js.map
|
package/di/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/core/di/provider.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IACP;IAAnB,YAAmB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAI,CAAC;CACrC;AAID,MAAM,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/core/di/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractType, Type } from '../utils/typeof.js';\n\n\nexport class InjectionToken<T> {\n\tconstructor(public token: string) { }\n}\n\nexport type Provider<T> = Type<T> | AbstractType<T> | InjectionToken<T>;\n\nconst REQUIRE_INIT = Symbol('REQUIRE_INIT');\n\nexport class InjectionProvider {\n\n\tprivate readonly types = new Map<Type<any> | AbstractType<any>, any>();\n\tprivate readonly tokens = new Map<InjectionToken<any>, any>();\n\n\tconstructor(private parent?: InjectionProvider) { }\n\n\tfork(): InjectionProvider {\n\t\treturn new InjectionProvider(this);\n\t}\n\n\thasToken<T>(token: InjectionToken<T>): InjectionProvider | false {\n\t\treturn this.tokens.has(token) ? this : false;\n\t}\n\n\thasType<T>(type: Type<any> | AbstractType<any>): InjectionProvider | false {\n\t\treturn this.types.has(type) ? this : false;\n\t}\n\n\tgetToken<T>(token: InjectionToken<T>): T | undefined {\n\t\tlet value = this.tokens.get(token);\n\t\tif (value === undefined && this.parent) {\n\t\t\tvalue = this.parent.getToken(token);\n\t\t}\n\t\treturn value;\n\t}\n\n\tgetInstance<T>(type: Type<any> | AbstractType<any>): T {\n\t\tlet instance = this.types.get(type);\n\t\tif (instance === REQUIRE_INIT) {\n\t\t\tinstance = new (type as Type<any>)();\n\t\t\tthis.types.set(type, instance);\n\t\t} else if (instance === undefined && this.parent) {\n\t\t\tinstance = this.parent.getInstance(type);\n\t\t}\n\t\treturn instance;\n\t}\n\n\tsetType<T>(type: Type<any> | AbstractType<any>, value?: T): void {\n\t\tthis.types.set(type, value ?? REQUIRE_INIT);\n\t}\n\n\tsetToken<T>(token: InjectionToken<T>, value: T): void {\n\t\tthis.tokens.set(token, value);\n\t}\n\n\tprovide<T>(typeOrToken: Provider<T>, value?: T) {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\tthis.setToken(typeOrToken, value);\n\t\t} else {\n\t\t\tthis.setType(typeOrToken, value ?? REQUIRE_INIT as unknown as T);\n\t\t}\n\t}\n\n\tinject<T>(typeOrToken: Provider<T>): T | undefined {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\treturn this.getToken(typeOrToken);\n\t\t}\n\t\treturn this.getInstance(typeOrToken);\n\t}\n\n\tclear<T>(typeOrToken: Provider<T>): void {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\tconst provider = this.parent?.hasToken(typeOrToken) || this;\n\t\t\tprovider.tokens.delete(typeOrToken);\n\t\t} else {\n\t\t\tconst provider = this.parent?.hasType(typeOrToken) || this;\n\t\t\tprovider.types.delete(typeOrToken);\n\t\t}\n\t}\n\n}\n"]}
|
package/directive/directive.d.ts
CHANGED
|
@@ -10,8 +10,9 @@ export declare class StructuralDirective {
|
|
|
10
10
|
protected viewContainerRef: ViewContainerRef;
|
|
11
11
|
protected host: HTMLComponent<any> | StructuralDirective;
|
|
12
12
|
protected _zone: AuroraZone;
|
|
13
|
-
|
|
14
|
-
constructor(templateRef: TemplateRef, viewContainerRef: ViewContainerRef, host: HTMLComponent<any> | StructuralDirective, _zone: AuroraZone,
|
|
13
|
+
private successors;
|
|
14
|
+
constructor(templateRef: TemplateRef, viewContainerRef: ViewContainerRef, host: HTMLComponent<any> | StructuralDirective, _zone: AuroraZone, successors: Record<string, TemplateRef>);
|
|
15
|
+
getSuccessor(name: string): TemplateRef | undefined;
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
18
|
* An attributes directive selector as '[class] [style]'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../../src/core/directive/directive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,qBAAa,mBAAmB;IAE9B,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB;IAC5C,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,mBAAmB;IACxD,SAAS,CAAC,KAAK,EAAE,UAAU;IAC3B,
|
|
1
|
+
{"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../../src/core/directive/directive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,qBAAa,mBAAmB;IAE9B,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB;IAC5C,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,mBAAmB;IACxD,SAAS,CAAC,KAAK,EAAE,UAAU;IAC3B,OAAO,CAAC,UAAU;gBAJR,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,mBAAmB,EAC9C,KAAK,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAGhD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAInD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAClB,SAAS,CAAC,EAAE,EAAE,WAAW;IAAE,SAAS,CAAC,KAAK,EAAE,UAAU;gBAA5C,EAAE,EAAE,WAAW,EAAY,KAAK,EAAE,UAAU;CAClE;AAED;;GAEG;AACH,qBAAa,8BAA8B;IAC9B,SAAS,CAAC,SAAS,EAAE,mBAAmB;IAAE,SAAS,CAAC,KAAK,EAAE,UAAU;gBAA3D,SAAS,EAAE,mBAAmB,EAAY,KAAK,EAAE,UAAU;CACjF"}
|