@ibyar/core 0.8.5 → 1.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.
Files changed (134) hide show
  1. package/annotation/context.d.ts +41 -0
  2. package/annotation/context.d.ts.map +1 -0
  3. package/annotation/context.js +79 -0
  4. package/annotation/context.js.map +1 -0
  5. package/annotation/decorators.d.ts +20 -285
  6. package/annotation/decorators.d.ts.map +1 -0
  7. package/annotation/decorators.js +92 -84
  8. package/annotation/decorators.js.map +1 -1
  9. package/annotation/options.d.ts +275 -0
  10. package/annotation/options.d.ts.map +1 -0
  11. package/annotation/options.js +2 -0
  12. package/annotation/options.js.map +1 -0
  13. package/binding/binding.expressions.d.ts +1 -0
  14. package/binding/binding.expressions.d.ts.map +1 -0
  15. package/binding/binding.expressions.js +138 -125
  16. package/binding/binding.expressions.js.map +1 -1
  17. package/component/component.d.ts +16 -12
  18. package/component/component.d.ts.map +1 -0
  19. package/component/component.js +111 -52
  20. package/component/component.js.map +1 -1
  21. package/component/custom-element.d.ts +1 -0
  22. package/component/custom-element.d.ts.map +1 -0
  23. package/component/events.d.ts +1 -0
  24. package/component/events.d.ts.map +1 -0
  25. package/component/events.js +4 -3
  26. package/component/events.js.map +1 -1
  27. package/component/lifecycle.d.ts +1 -0
  28. package/component/lifecycle.d.ts.map +1 -0
  29. package/component/reflect.d.ts +12 -15
  30. package/component/reflect.d.ts.map +1 -0
  31. package/component/reflect.js +27 -47
  32. package/component/reflect.js.map +1 -1
  33. package/context/stack.d.ts +1 -0
  34. package/context/stack.d.ts.map +1 -0
  35. package/context/subscription.d.ts +1 -0
  36. package/context/subscription.d.ts.map +1 -0
  37. package/directive/directive.d.ts +1 -0
  38. package/directive/directive.d.ts.map +1 -0
  39. package/directive/directive.js +8 -0
  40. package/directive/directive.js.map +1 -1
  41. package/directive/parser.d.ts +1 -0
  42. package/directive/parser.d.ts.map +1 -0
  43. package/directive/parser.js +9 -7
  44. package/directive/parser.js.map +1 -1
  45. package/directive/providers.d.ts +1 -0
  46. package/directive/providers.d.ts.map +1 -0
  47. package/directive/providers.js +2 -1
  48. package/directive/providers.js.map +1 -1
  49. package/html/deserialize.d.ts +1 -0
  50. package/html/deserialize.d.ts.map +1 -0
  51. package/html/expression.d.ts +1 -0
  52. package/html/expression.d.ts.map +1 -0
  53. package/html/expression.js +2 -2
  54. package/html/expression.js.map +1 -1
  55. package/html/types.d.ts +1 -0
  56. package/html/types.d.ts.map +1 -0
  57. package/index.d.ts +2 -2
  58. package/index.d.ts.map +1 -0
  59. package/index.js +1 -2
  60. package/index.js.map +1 -1
  61. package/linker/change-detector-ref.d.ts +1 -0
  62. package/linker/change-detector-ref.d.ts.map +1 -0
  63. package/linker/template-ref.d.ts +1 -0
  64. package/linker/template-ref.d.ts.map +1 -0
  65. package/linker/template-ref.js +5 -0
  66. package/linker/template-ref.js.map +1 -1
  67. package/linker/view-container-ref.d.ts +4 -2
  68. package/linker/view-container-ref.d.ts.map +1 -0
  69. package/linker/view-container-ref.js +8 -7
  70. package/linker/view-container-ref.js.map +1 -1
  71. package/linker/view-ref.d.ts +1 -0
  72. package/linker/view-ref.d.ts.map +1 -0
  73. package/linker/view-ref.js +5 -2
  74. package/linker/view-ref.js.map +1 -1
  75. package/node.d.ts +1 -0
  76. package/node.d.ts.map +1 -0
  77. package/package.json +7 -8
  78. package/pipe/pipe.d.ts +1 -0
  79. package/pipe/pipe.d.ts.map +1 -0
  80. package/pipe/pipe.js +2 -1
  81. package/pipe/pipe.js.map +1 -1
  82. package/providers/provider.d.ts +15 -13
  83. package/providers/provider.d.ts.map +1 -0
  84. package/providers/provider.js +13 -16
  85. package/providers/provider.js.map +1 -1
  86. package/utils/elements-util.d.ts +1 -0
  87. package/utils/elements-util.d.ts.map +1 -0
  88. package/utils/path.d.ts +1 -0
  89. package/utils/path.d.ts.map +1 -0
  90. package/utils/typeof.d.ts +3 -0
  91. package/utils/typeof.d.ts.map +1 -0
  92. package/utils/typeof.js.map +1 -1
  93. package/utils/utils.d.ts +1 -0
  94. package/utils/utils.d.ts.map +1 -0
  95. package/view/base-view.d.ts +1 -0
  96. package/view/base-view.d.ts.map +1 -0
  97. package/view/base-view.js +34 -16
  98. package/view/base-view.js.map +1 -1
  99. package/view/form-view.d.ts +1 -0
  100. package/view/form-view.d.ts.map +1 -0
  101. package/view/form-view.js +70 -67
  102. package/view/form-view.js.map +1 -1
  103. package/view/mutation.d.ts +1 -0
  104. package/view/mutation.d.ts.map +1 -0
  105. package/view/mutation.js +37 -36
  106. package/view/mutation.js.map +1 -1
  107. package/view/render.d.ts +2 -2
  108. package/view/render.d.ts.map +1 -0
  109. package/view/render.js +21 -21
  110. package/view/render.js.map +1 -1
  111. package/view/utils.d.ts +4 -3
  112. package/view/utils.d.ts.map +1 -0
  113. package/view/utils.js.map +1 -1
  114. package/view/view.d.ts +5 -4
  115. package/view/view.d.ts.map +1 -0
  116. package/view/view.js +19 -3
  117. package/view/view.js.map +1 -1
  118. package/zone/bootstrap.d.ts +1 -0
  119. package/zone/bootstrap.d.ts.map +1 -0
  120. package/zone/proxy.d.ts +1 -0
  121. package/zone/proxy.d.ts.map +1 -0
  122. package/zone/proxy.js +1 -0
  123. package/zone/proxy.js.map +1 -1
  124. package/zone/task.d.ts +1 -0
  125. package/zone/task.d.ts.map +1 -0
  126. package/zone/task.js +11 -3
  127. package/zone/task.js.map +1 -1
  128. package/zone/zone.d.ts +1 -0
  129. package/zone/zone.d.ts.map +1 -0
  130. package/zone/zone.js +8 -6
  131. package/zone/zone.js.map +1 -1
  132. package/providers/injector.d.ts +0 -10
  133. package/providers/injector.js +0 -27
  134. package/providers/injector.js.map +0 -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 { 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} 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\tServiceOptions, DirectiveOptions\n} from '../annotation/decorators.js';\nimport {\n\tBootstrapMetadata, ChildRef, HostBindingRef,\n\tInputPropertyRef, ListenerRef, OutputPropertyRef,\n\tPropertyRef, ReflectComponents\n} from './reflect.js';\nimport { deserializeExpressionNodes } from '../html/deserialize.js';\n\n\nexport interface ServiceRef<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\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\t// attrTemplate: JsxAttrComponent;\n\tstyles: string;\n\textend: Tag;\n\n\tviewClass: TypeOf<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\n\tencapsulation: 'custom' | 'shadow-dom' | 'template' | 'shadow-dom-template';\n\tisShadowDom: boolean;\n\tshadowDomMode: ShadowRootMode;\n\tshadowDomDelegatesFocus: boolean;\n\tformAssociated: boolean | TypeOf<ValueControl<any>>;\n\tzone?: ZoneType;\n}\n\ntype ViewBindingOption = {\n\tprototype: Record<PropertyKey, any>;\n\thostBindings?: HostBindingRef[];\n\thostListeners?: ListenerRef[];\n\tselector?: string;\n};\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 parseHostBinding(option: ViewBindingOption): DomElementNode {\n\t\tconst inputs = option.hostBindings?.map(binding => {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(option.prototype, binding.modelPropertyName);\n\t\t\tif (typeof descriptor?.value === 'function') {\n\t\t\t\treturn `[${binding.hostPropertyName}]=\"${binding.modelPropertyName}()\"`\n\t\t\t}\n\t\t\treturn `[${binding.hostPropertyName}]=\"${binding.modelPropertyName}\"`;\n\t\t}) ?? [];\n\t\tconst outputs = option.hostListeners?.map(\n\t\t\tlistener => `(${listener.eventName})=\"${listener.modelCallbackName}(${listener.args.join(', ')})\"`\n\t\t) ?? [];\n\t\toption.selector ??= 'div';\n\t\tconst template = `<${option.selector} ${inputs.join(' ')} ${outputs.join(' ')}></${option.selector}>`;\n\t\tconst viewBindings = htmlParser.toDomRootNode(template) as DomElementNode;\n\t\tbuildExpressionNodes(viewBindings);\n\t\treturn viewBindings;\n\t}\n\n\tstatic defineDirective(modelClass: Function, opts: DirectiveOptions) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelClass.prototype);\n\t\tObject.assign(bootstrap, opts);\n\t\tif (bootstrap.hostListeners?.length || bootstrap.hostBindings?.length) {\n\t\t\tbootstrap.viewBindings = Components.parseHostBinding({\n\t\t\t\tprototype: modelClass.prototype,\n\t\t\t\thostBindings: bootstrap.hostBindings,\n\t\t\t\thostListeners: bootstrap.hostListeners,\n\t\t\t});\n\t\t}\n\t\tbootstrap.modelClass = modelClass;\n\t\tClassRegistryProvider.registerDirective(modelClass);\n\t\tdirectiveRegistry.register(opts.selector, {\n\t\t\tinputs: (bootstrap.inputs as PropertyRef[])?.map(input => input.viewAttribute),\n\t\t\toutputs: (bootstrap.outputs as PropertyRef[])?.map(output => output.viewAttribute),\n\t\t});\n\t}\n\n\tstatic definePipe(modelClass: Function, opts: PipeOptions) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelClass.prototype);\n\t\tfor (const key in opts) {\n\t\t\tbootstrap[key] = Reflect.get(opts, key);\n\t\t}\n\t\tbootstrap.modelClass = modelClass;\n\t\tClassRegistryProvider.registerPipe(modelClass);\n\t}\n\n\tstatic defineService(modelClass: Function, opts: ServiceOptions) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelClass.prototype);\n\t\tfor (const key in opts) {\n\t\t\tbootstrap[key] = Reflect.get(opts, key);\n\t\t}\n\t\tbootstrap.modelClass = modelClass;\n\t\tbootstrap.name = modelClass.name;\n\t\tClassRegistryProvider.registerService(modelClass);\n\t}\n\n\tstatic defineComponent<T extends Object>(modelClass: TypeOf<T>, opts: ComponentOptions<T>) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelClass.prototype);\n\t\tconst componentRef = Object.assign({}, opts, bootstrap) as any as ComponentRef<T>;\n\t\tcomponentRef.extend = findByTagName(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-dom/g.test(componentRef.encapsulation);\n\t\tcomponentRef.shadowDomMode ||= 'open';\n\t\tcomponentRef.shadowDomDelegatesFocus = componentRef.shadowDomDelegatesFocus === true || false;\n\n\t\tif (componentRef.hostListeners.length || componentRef.hostBindings.length) {\n\t\t\tcomponentRef.viewBindings = Components.parseHostBinding({\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}\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\t\tReflectComponents.setComponentRef(componentRef.modelClass, componentRef);\n\t\tReflectComponents.setComponentRef(componentRef.viewClass, componentRef);\n\n\t\tClassRegistryProvider.registerComponent(modelClass);\n\t\tClassRegistryProvider.registerView(bootstrap.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: TypeOf<T>, opt: { selector: string } & ElementDefinitionOptions) {\n\t\tClassRegistryProvider.registerView(viewClass);\n\t\tcustomElements.define(\n\t\t\topt.selector as string,\n\t\t\tviewClass,\n\t\t\tObject.assign({}, opt, { selector: undefined }),\n\t\t);\n\t}\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 { 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\tDomFragmentNode, DomParentNode\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\tServiceOptions, DirectiveOptions\n} from '../annotation/options.js';\nimport {\n\tBootstrapMetadata, ChildRef, HostBindingRef,\n\tInputPropertyRef, ListenerRef, OutputPropertyRef,\n\tPropertyRef, ReflectComponents\n} from './reflect.js';\nimport { deserializeExpressionNodes } from '../html/deserialize.js';\n\n\nexport interface ServiceRef<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\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\t// attrTemplate: JsxAttrComponent;\n\tstyles: string;\n\textend: Tag;\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\ntype ViewBindingOption = {\n\tprototype: Record<PropertyKey, any>;\n\thostBindings?: HostBindingRef[];\n\thostListeners?: ListenerRef[];\n\tselector?: string;\n};\n\ntype HostNode = {\n\thost?: DomElementNode;\n\twindow?: DomElementNode;\n\ttemplate?: DomElementNode[];\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\tprivate static createOutputs(Listeners?: ListenerRef[]) {\n\t\treturn Listeners?.map(\n\t\t\tlistener => `(${listener.eventName})=\"${listener.modelCallbackName}(${listener.args.join(', ')})\"`\n\t\t).join(' ') ?? ''\n\t}\n\n\tprivate static parseHostNode(option: ViewBindingOption): HostNode {\n\t\tconst inputs = option.hostBindings?.map(binding => {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(option.prototype, binding.modelPropertyName);\n\t\t\tif (typeof descriptor?.value === 'function') {\n\t\t\t\treturn `[${binding.hostPropertyName}]=\"${binding.modelPropertyName}()\"`\n\t\t\t}\n\t\t\treturn `[${binding.hostPropertyName}]=\"${binding.modelPropertyName}\"`;\n\t\t}).join(' ') ?? '';\n\n\t\tconst hostListeners: ListenerRef[] = [];\n\t\tconst windowListeners: ListenerRef[] = [];\n\t\tconst templateListeners: Record<string, ListenerRef[]> = {};\n\n\t\toption.hostListeners?.forEach(listener => {\n\t\t\tconst [host, event] = listener.eventName.split(':', 2);\n\t\t\tif (event === undefined) {\n\t\t\t\thostListeners.push(listener);\n\t\t\t} else if ('window' === host.toLowerCase()) {\n\t\t\t\twindowListeners.push(new ListenerRef(event, listener.args, listener.modelCallbackName));\n\t\t\t} else {\n\t\t\t\t(templateListeners[host] ??= []).push(new ListenerRef(event, listener.args, listener.modelCallbackName));\n\t\t\t}\n\t\t});\n\n\t\tconst result: HostNode = {};\n\n\t\tif (hostListeners.length) {\n\t\t\tconst hostOutputs = Components.createOutputs(hostListeners);\n\t\t\tconst selector = option.selector ?? 'div';\n\t\t\tconst hostTemplate = `<${selector} ${inputs} ${hostOutputs}></${selector}>`;\n\t\t\tresult.host = htmlParser.toDomRootNode(hostTemplate) as DomElementNode;\n\t\t\tbuildExpressionNodes(result.host);\n\t\t}\n\n\t\tif (windowListeners.length) {\n\t\t\tconst windowOutputs = Components.createOutputs(windowListeners);\n\t\t\tconst windowTemplate = `<window ${windowOutputs}></window>`;\n\t\t\tresult.window = htmlParser.toDomRootNode(windowTemplate) as DomElementNode;\n\t\t\tbuildExpressionNodes(result.window);\n\t\t}\n\n\t\tconst templateHosts = Object.keys(templateListeners);\n\t\tif (templateHosts.length) {\n\t\t\tconst template = templateHosts.map(host => {\n\t\t\t\tconst hostOutputs = Components.createOutputs(templateListeners[host]);\n\t\t\t\treturn `<template #${host} ${hostOutputs}></template>`;\n\t\t\t}).join('');\n\t\t\tconst templateNodes = htmlParser.toDomRootNode(template) as DomElementNode | DomFragmentNode;\n\t\t\tbuildExpressionNodes(templateNodes);\n\t\t\tresult.template = templateNodes instanceof DomFragmentNode\n\t\t\t\t? templateNodes.children?.filter(child => child instanceof DomElementNode) as DomElementNode[] ?? []\n\t\t\t\t: [templateNodes];\n\t\t}\n\t\treturn result;\n\t}\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 = Components.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});\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 defineService<T extends Class>(modelClass: MetadataClass<T>, opts: ServiceOptions, metadata: MetadataContext) {\n\t\tObject.assign(metadata, opts);\n\t\tmetadata.modelClass = modelClass;\n\t\tmetadata.name = modelClass.name;\n\t\tClassRegistryProvider.registerService(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\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 = Components.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\tcustomElements.define(\n\t\t\topt.selector as string,\n\t\t\tviewClass,\n\t\t\tObject.assign({}, opt, { selector: undefined }),\n\t\t);\n\t}\n}\n"]}
@@ -177,3 +177,4 @@ export interface ConstructorOfView<T> {
177
177
  new (): T;
178
178
  readonly prototype: T;
179
179
  }
180
+ //# sourceMappingURL=custom-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-element.d.ts","sourceRoot":"","sources":["../../../src/core/component/custom-element.ts"],"names":[],"mappings":"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"}
@@ -12,3 +12,4 @@ export declare class EventEmitter<T> {
12
12
  subscribe(next?: any, error?: any, complete?: any): Subscription<T>;
13
13
  remove(subscription: Subscription<T>): void;
14
14
  }
15
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/core/component/events.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY,CAAC,CAAC;IAEd,OAAO,CAAC,YAAY;IADhC,OAAO,CAAC,kBAAkB,CAAsB;gBAC5B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IACjD,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC;IAMnC,WAAW,IAAI,IAAI;CAQnB;AAQD,qBAAa,YAAY,CAAC,CAAC;IAC1B,OAAO,CAAC,WAAW,CAA8C;;IAEjE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAmBrB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC;IAMnE,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;CAGpC"}
@@ -1,4 +1,6 @@
1
1
  export class Subscription {
2
+ eventEmitter;
3
+ othersSubscription;
2
4
  constructor(eventEmitter) {
3
5
  this.eventEmitter = eventEmitter;
4
6
  }
@@ -18,9 +20,8 @@ export class Subscription {
18
20
  }
19
21
  }
20
22
  export class EventEmitter {
21
- constructor() {
22
- this.subscribers = new Map();
23
- }
23
+ subscribers = new Map();
24
+ constructor() { }
24
25
  emit(value) {
25
26
  this.subscribers.forEach((subscribe) => {
26
27
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/core/component/events.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAExB,YAAoB,YAA6B;QAA7B,iBAAY,GAAZ,YAAY,CAAiB;IAAI,CAAC;IACtD,GAAG,CAAC,YAA+B;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC7B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;SAC7B;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;YAC5B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;gBAChD,YAAY,CAAC,WAAW,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;SACH;IACF,CAAC;CACD;AAQD,MAAM,OAAO,YAAY;IAExB;QADQ,gBAAW,GAAoC,IAAI,GAAG,EAAE,CAAC;IACjD,CAAC;IACjB,IAAI,CAAC,KAAS;QACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACtC,IAAI;gBACH,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YAAC,OAAO,KAAK,EAAE;gBACf,IAAI;oBACH,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;iBACzB;gBAAC,OAAO,KAAK,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;iBAC9C;aACD;oBAAS;gBACT,IAAI;oBACH,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;iBACvB;gBAAC,OAAO,KAAK,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;iBAC9C;aACD;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;YAC7B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;SAC7B;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;YAC5B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;gBAChD,YAAY,CAAC,WAAW,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;SACH;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;gBACH,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YAAC,OAAO,KAAK,EAAE;gBACf,IAAI;oBACH,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;iBACzB;gBAAC,OAAO,KAAK,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;iBAC9C;aACD;oBAAS;gBACT,IAAI;oBACH,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;iBACvB;gBAAC,OAAO,KAAK,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;iBAC9C;aACD;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"]}
@@ -30,3 +30,4 @@ export interface OnDestroy {
30
30
  onDestroy(): void;
31
31
  }
32
32
  export declare function isOnDestroy(object: any): object is OnDestroy;
33
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/core/component/lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACzB,SAAS,IAAI,IAAI,CAAC;CAClB;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,SAAS,CAE5D;AAED,MAAM,WAAW,MAAM;IACtB,MAAM,IAAI,IAAI,CAAC;CACf;AACD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,MAAM,CAEtD;AAED,MAAM,WAAW,OAAO;IACvB,OAAO,IAAI,IAAI,CAAC;CAChB;AACD,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,OAAO,CAExD;AAED,MAAM,WAAW,gBAAgB;IAChC,gBAAgB,IAAI,IAAI,CAAC;CACzB;AACD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,gBAAgB,CAE1E;AAED,MAAM,WAAW,mBAAmB;IACnC,mBAAmB,IAAI,IAAI,CAAC;CAC5B;AACD,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,GAAG,GACT,MAAM,IAAI,mBAAmB,CAE/B;AAED,MAAM,WAAW,aAAa;IAC7B,aAAa,IAAI,IAAI,CAAC;CACtB;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,aAAa,CAEpE;AAED,MAAM,WAAW,gBAAgB;IAChC,gBAAgB,IAAI,IAAI,CAAC;CACzB;AACD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,gBAAgB,CAE1E;AAED,MAAM,WAAW,SAAS;IACzB,SAAS,IAAI,IAAI,CAAC;CAClB;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,SAAS,CAE5D"}
@@ -1,5 +1,5 @@
1
- import type { ChildOptions, OutputEventInit } from '../annotation/decorators.js';
2
- import type { ComponentRef } from './component.js';
1
+ import type { MetadataClass, MetadataContext } from '@ibyar/decorators';
2
+ import type { ChildOptions, OutputEventInit } from '../annotation/options.js';
3
3
  export declare class PropertyRef {
4
4
  modelProperty: string;
5
5
  protected _viewName?: string | undefined;
@@ -39,16 +39,13 @@ export interface BootstrapMetadata {
39
39
  [key: string]: any;
40
40
  }
41
41
  export declare class ReflectComponents {
42
- static getOrCreateBootstrap<T extends {}>(target: Object): T;
43
- static getBootstrap<T extends {}>(target: Object): T;
44
- static getComponentRef<T>(target: object): ComponentRef<T>;
45
- static setComponentRef<T>(target: object, componentRef: ComponentRef<T>): void;
46
- static addOptional(modelProperty: Object): void;
47
- static addInput(modelProperty: Object, modelName: string, viewName: string): void;
48
- static addOutput(modelProperty: Object, modelName: string, viewName: string, options: OutputEventInit): void;
49
- static setComponentView(modelProperty: Object, modelName: string): void;
50
- static addViewChild(modelProperty: Object, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor, childOptions?: ChildOptions): void;
51
- static addViewChildren(modelProperty: Object, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor): void;
52
- static addHostListener(modelProperty: Object, propertyKey: string, eventName: string, args: string[]): void;
53
- static addHostBinding(modelProperty: Object, propertyKey: string, hostPropertyName: string): void;
54
- }
42
+ static getMetaDate(constructor: MetadataClass): Record<PropertyKey, any>;
43
+ static addInput(metadata: MetadataContext, modelName: string, viewName: string): void;
44
+ static addOutput(metadata: MetadataContext, modelName: string, viewName: string, options: OutputEventInit): void;
45
+ static setComponentView(metadata: MetadataContext, modelName: string): void;
46
+ static addViewChild(metadata: MetadataContext, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor, childOptions?: ChildOptions): void;
47
+ static addViewChildren(metadata: MetadataContext, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor): void;
48
+ static addHostListener(metadata: MetadataContext, propertyKey: string, eventName: string, args: string[]): void;
49
+ static addHostBinding(metadata: MetadataContext, propertyKey: string, hostPropertyName: string): void;
50
+ }
51
+ //# sourceMappingURL=reflect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../../src/core/component/reflect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE9E,qBAAa,WAAW;IACJ,aAAa,EAAE,MAAM;IAAE,SAAS,CAAC,SAAS,CAAC;gBAA3C,aAAa,EAAE,MAAM,EAAY,SAAS,CAAC,oBAAQ;IACtE,IAAI,aAAa,IAAI,MAAM,CAE1B;CACD;AAED,qBAAa,gBAAiB,SAAQ,WAAW;CAEhD;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IACY,OAAO,CAAC;gBAAzD,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAS,OAAO,CAAC,6BAAiB;CAGtF;AAED,qBAAa,QAAQ;IAEZ,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM,GAAG;QAAE,QAAO,WAAW,CAAC;QAAC,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,wBAAwB;IAC5F,YAAY,CAAC;gBAFb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG;QAAE,QAAO,WAAW,CAAC;QAAC,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,wBAAwB,EAC5F,YAAY,CAAC,0BAAc;CAEnC;AAED,qBAAa,WAAW;IACJ,SAAS,EAAE,MAAM;IAAS,IAAI,EAAE,MAAM,EAAE;IAAS,iBAAiB,EAAE,MAAM;gBAA1E,SAAS,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM,EAAE,EAAS,iBAAiB,EAAE,MAAM;CAC7F;AAED,qBAAa,cAAc;IACP,iBAAiB,EAAE,MAAM;IAAS,gBAAgB,EAAE,MAAM;gBAA1D,iBAAiB,EAAE,MAAM,EAAS,gBAAgB,EAAE,MAAM;CAC7E;AAED,MAAM,WAAW,iBAAiB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AAGD,qBAAa,iBAAiB;IAE7B,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa;IAI7C,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAI9E,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;IAIzG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM;IAIpE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,WAAW,GAAG,wBAAwB,EAAE,YAAY,CAAC,EAAE,YAAY;IAI/J,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,WAAW,GAAG,wBAAwB;IAIrI,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAIxG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;CAG9F"}
@@ -1,4 +1,6 @@
1
1
  export class PropertyRef {
2
+ modelProperty;
3
+ _viewName;
2
4
  constructor(modelProperty, _viewName) {
3
5
  this.modelProperty = modelProperty;
4
6
  this._viewName = _viewName;
@@ -10,12 +12,16 @@ export class PropertyRef {
10
12
  export class InputPropertyRef extends PropertyRef {
11
13
  }
12
14
  export class OutputPropertyRef extends PropertyRef {
15
+ options;
13
16
  constructor(modelProperty, viewName, options) {
14
17
  super(modelProperty, viewName);
15
18
  this.options = options;
16
19
  }
17
20
  }
18
21
  export class ChildRef {
22
+ modelName;
23
+ selector;
24
+ childOptions;
19
25
  constructor(modelName, selector, childOptions) {
20
26
  this.modelName = modelName;
21
27
  this.selector = selector;
@@ -23,6 +29,9 @@ export class ChildRef {
23
29
  }
24
30
  }
25
31
  export class ListenerRef {
32
+ eventName;
33
+ args;
34
+ modelCallbackName;
26
35
  constructor(eventName, args, modelCallbackName) {
27
36
  this.eventName = eventName;
28
37
  this.args = args;
@@ -30,66 +39,37 @@ export class ListenerRef {
30
39
  }
31
40
  }
32
41
  export class HostBindingRef {
42
+ modelPropertyName;
43
+ hostPropertyName;
33
44
  constructor(modelPropertyName, hostPropertyName) {
34
45
  this.modelPropertyName = modelPropertyName;
35
46
  this.hostPropertyName = hostPropertyName;
36
47
  }
37
48
  }
38
- const AuroraBootstrap = Symbol.for('aurora:bootstrap');
39
- const AuroraMetadata = Symbol.for('aurora:metadata');
40
49
  export class ReflectComponents {
41
- static getOrCreateBootstrap(target) {
42
- let bootstrap = Reflect.getMetadata(AuroraBootstrap, target);
43
- if (!bootstrap) {
44
- bootstrap = {};
45
- Reflect.defineMetadata(AuroraBootstrap, bootstrap, target);
46
- }
47
- return bootstrap;
50
+ static getMetaDate(constructor) {
51
+ return constructor[Symbol.metadata];
48
52
  }
49
- static getBootstrap(target) {
50
- return Reflect.getMetadata(AuroraBootstrap, target);
53
+ static addInput(metadata, modelName, viewName) {
54
+ (metadata.inputs ??= []).push(new InputPropertyRef(modelName, viewName));
51
55
  }
52
- static getComponentRef(target) {
53
- return Reflect.getMetadata(AuroraMetadata, target);
56
+ static addOutput(metadata, modelName, viewName, options) {
57
+ (metadata.outputs ??= []).push(new OutputPropertyRef(modelName, viewName, options));
54
58
  }
55
- static setComponentRef(target, componentRef) {
56
- Reflect.defineMetadata(AuroraMetadata, componentRef, target);
59
+ static setComponentView(metadata, modelName) {
60
+ metadata.view = modelName;
57
61
  }
58
- static addOptional(modelProperty) {
62
+ static addViewChild(metadata, modelName, selector, childOptions) {
63
+ (metadata.viewChild ??= []).push(new ChildRef(modelName, selector, childOptions));
59
64
  }
60
- static addInput(modelProperty, modelName, viewName) {
61
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelProperty);
62
- bootstrap.inputs ?? (bootstrap.inputs = []);
63
- bootstrap.inputs.push(new InputPropertyRef(modelName, viewName));
65
+ static addViewChildren(metadata, modelName, selector) {
66
+ (metadata.ViewChildren ??= []).push(new ChildRef(modelName, selector));
64
67
  }
65
- static addOutput(modelProperty, modelName, viewName, options) {
66
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelProperty);
67
- bootstrap.outputs ?? (bootstrap.outputs = []);
68
- bootstrap.outputs.push(new OutputPropertyRef(modelName, viewName, options));
68
+ static addHostListener(metadata, propertyKey, eventName, args) {
69
+ (metadata.hostListeners ??= []).push(new ListenerRef(eventName, args, propertyKey));
69
70
  }
70
- static setComponentView(modelProperty, modelName) {
71
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelProperty);
72
- bootstrap.view = modelName;
73
- }
74
- static addViewChild(modelProperty, modelName, selector, childOptions) {
75
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelProperty);
76
- bootstrap.viewChild ?? (bootstrap.viewChild = []);
77
- bootstrap.viewChild.push(new ChildRef(modelName, selector, childOptions));
78
- }
79
- static addViewChildren(modelProperty, modelName, selector) {
80
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelProperty);
81
- bootstrap.ViewChildren ?? (bootstrap.ViewChildren = []);
82
- bootstrap.ViewChildren.push(new ChildRef(modelName, selector));
83
- }
84
- static addHostListener(modelProperty, propertyKey, eventName, args) {
85
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelProperty);
86
- bootstrap.hostListeners ?? (bootstrap.hostListeners = []);
87
- bootstrap.hostListeners.push(new ListenerRef(eventName, args, propertyKey));
88
- }
89
- static addHostBinding(modelProperty, propertyKey, hostPropertyName) {
90
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelProperty);
91
- bootstrap.hostBindings ?? (bootstrap.hostBindings = []);
92
- bootstrap.hostBindings.push(new HostBindingRef(propertyKey, hostPropertyName));
71
+ static addHostBinding(metadata, propertyKey, hostPropertyName) {
72
+ (metadata.hostBindings ??= []).push(new HostBindingRef(propertyKey, hostPropertyName));
93
73
  }
94
74
  }
95
75
  //# sourceMappingURL=reflect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../../src/core/component/reflect.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,WAAW;IACvB,YAAmB,aAAqB,EAAY,SAAkB;QAAnD,kBAAa,GAAb,aAAa,CAAQ;QAAY,cAAS,GAAT,SAAS,CAAS;IAAI,CAAC;IAC3E,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC;IAC7C,CAAC;CACD;AAED,MAAM,OAAO,gBAAiB,SAAQ,WAAW;CAEhD;AAED,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IACjD,YAAY,aAAqB,EAAE,QAAiB,EAAS,OAAyB;QACrF,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAD6B,YAAO,GAAP,OAAO,CAAkB;IAEtF,CAAC;CACD;AAED,MAAM,OAAO,QAAQ;IACpB,YACQ,SAAiB,EACjB,QAA4F,EAC5F,YAA2B;QAF3B,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAoF;QAC5F,iBAAY,GAAZ,YAAY,CAAe;IAC/B,CAAC;CACL;AAED,MAAM,OAAO,WAAW;IACvB,YAAmB,SAAiB,EAAS,IAAc,EAAS,iBAAyB;QAA1E,cAAS,GAAT,SAAS,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAU;QAAS,sBAAiB,GAAjB,iBAAiB,CAAQ;IAAI,CAAC;CAClG;AAED,MAAM,OAAO,cAAc;IAC1B,YAAmB,iBAAyB,EAAS,gBAAwB;QAA1D,sBAAiB,GAAjB,iBAAiB,CAAQ;QAAS,qBAAgB,GAAhB,gBAAgB,CAAQ;IAAI,CAAC;CAClF;AAMD,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACvD,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAGrD,MAAM,OAAO,iBAAiB;IAE7B,MAAM,CAAC,oBAAoB,CAAe,MAAc;QACvD,IAAI,SAAS,GAAM,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,EAAE;YACf,SAAS,GAAG,EAAO,CAAC;YACpB,OAAO,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SAC3D;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,YAAY,CAAe,MAAc;QAC/C,OAAO,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,eAAe,CAAI,MAAc;QACvC,OAAO,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,eAAe,CAAI,MAAc,EAAE,YAA6B;QACtE,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,aAAqB;IACxC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAgB;QACzE,MAAM,SAAS,GAAsB,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3F,SAAS,CAAC,MAAM,KAAhB,SAAS,CAAC,MAAM,GAAK,EAAE,EAAC;QACxB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAgB,EAAE,OAAwB;QACpG,MAAM,SAAS,GAAsB,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3F,SAAS,CAAC,OAAO,KAAjB,SAAS,CAAC,OAAO,GAAK,EAAE,EAAC;QACzB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,aAAqB,EAAE,SAAiB;QAC/D,MAAM,SAAS,GAAsB,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3F,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAgE,EAAE,YAA2B;QAC1J,MAAM,SAAS,GAAsB,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3F,SAAS,CAAC,SAAS,KAAnB,SAAS,CAAC,SAAS,GAAK,EAAE,EAAC;QAC3B,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAgE;QAChI,MAAM,SAAS,GAAsB,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3F,SAAS,CAAC,YAAY,KAAtB,SAAS,CAAC,YAAY,GAAK,EAAE,EAAC;QAC9B,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,aAAqB,EAAE,WAAmB,EAAE,SAAiB,EAAE,IAAc;QACnG,MAAM,SAAS,GAAsB,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3F,SAAS,CAAC,aAAa,KAAvB,SAAS,CAAC,aAAa,GAAK,EAAE,EAAC;QAC/B,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,aAAqB,EAAE,WAAmB,EAAE,gBAAwB;QACzF,MAAM,SAAS,GAAsB,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3F,SAAS,CAAC,YAAY,KAAtB,SAAS,CAAC,YAAY,GAAK,EAAE,EAAC;QAC9B,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAChF,CAAC;CACD","sourcesContent":["import type { ChildOptions, OutputEventInit } from '../annotation/decorators.js';\nimport type { ComponentRef } from './component.js';\n\nexport class PropertyRef {\n\tconstructor(public modelProperty: string, protected _viewName?: string) { }\n\tget viewAttribute(): string {\n\t\treturn this._viewName || this.modelProperty;\n\t}\n}\n\nexport class InputPropertyRef extends PropertyRef {\n\n}\n\nexport class OutputPropertyRef extends PropertyRef {\n\tconstructor(modelProperty: string, viewName?: string, public options?: OutputEventInit) {\n\t\tsuper(modelProperty, viewName);\n\t}\n}\n\nexport class ChildRef {\n\tconstructor(\n\t\tpublic modelName: string,\n\t\tpublic selector: string | { new(): HTMLElement; prototype: HTMLElement } | CustomElementConstructor,\n\t\tpublic childOptions?: ChildOptions\n\t) { }\n}\n\nexport class ListenerRef {\n\tconstructor(public eventName: string, public args: string[], public modelCallbackName: string) { }\n}\n\nexport class HostBindingRef {\n\tconstructor(public modelPropertyName: string, public hostPropertyName: string) { }\n}\n\nexport interface BootstrapMetadata {\n\t[key: string]: any;\n}\n\nconst AuroraBootstrap = Symbol.for('aurora:bootstrap');\nconst AuroraMetadata = Symbol.for('aurora:metadata');\n\n\nexport class ReflectComponents {\n\n\tstatic getOrCreateBootstrap<T extends {}>(target: Object): T {\n\t\tlet bootstrap: T = Reflect.getMetadata(AuroraBootstrap, target);\n\t\tif (!bootstrap) {\n\t\t\tbootstrap = {} as T;\n\t\t\tReflect.defineMetadata(AuroraBootstrap, bootstrap, target);\n\t\t}\n\t\treturn bootstrap;\n\t}\n\n\tstatic getBootstrap<T extends {}>(target: Object): T {\n\t\treturn Reflect.getMetadata(AuroraBootstrap, target);\n\t}\n\n\tstatic getComponentRef<T>(target: object): ComponentRef<T> {\n\t\treturn Reflect.getMetadata(AuroraMetadata, target);\n\t}\n\n\tstatic setComponentRef<T>(target: object, componentRef: ComponentRef<T>): void {\n\t\tReflect.defineMetadata(AuroraMetadata, componentRef, target);\n\t}\n\n\tstatic addOptional(modelProperty: Object) {\n\t}\n\n\tstatic addInput(modelProperty: Object, modelName: string, viewName: string) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelProperty);\n\t\tbootstrap.inputs ??= [];\n\t\tbootstrap.inputs.push(new InputPropertyRef(modelName, viewName));\n\t}\n\n\tstatic addOutput(modelProperty: Object, modelName: string, viewName: string, options: OutputEventInit) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelProperty);\n\t\tbootstrap.outputs ??= [];\n\t\tbootstrap.outputs.push(new OutputPropertyRef(modelName, viewName, options));\n\t}\n\n\tstatic setComponentView(modelProperty: Object, modelName: string) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelProperty);\n\t\tbootstrap.view = modelName;\n\t}\n\n\tstatic addViewChild(modelProperty: Object, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor, childOptions?: ChildOptions) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelProperty);\n\t\tbootstrap.viewChild ??= [];\n\t\tbootstrap.viewChild.push(new ChildRef(modelName, selector, childOptions));\n\t}\n\n\tstatic addViewChildren(modelProperty: Object, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelProperty);\n\t\tbootstrap.ViewChildren ??= [];\n\t\tbootstrap.ViewChildren.push(new ChildRef(modelName, selector));\n\t}\n\n\tstatic addHostListener(modelProperty: Object, propertyKey: string, eventName: string, args: string[]) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelProperty);\n\t\tbootstrap.hostListeners ??= [];\n\t\tbootstrap.hostListeners.push(new ListenerRef(eventName, args, propertyKey));\n\t}\n\n\tstatic addHostBinding(modelProperty: Object, propertyKey: string, hostPropertyName: string) {\n\t\tconst bootstrap: BootstrapMetadata = ReflectComponents.getOrCreateBootstrap(modelProperty);\n\t\tbootstrap.hostBindings ??= [];\n\t\tbootstrap.hostBindings.push(new HostBindingRef(propertyKey, hostPropertyName));\n\t}\n}\n"]}
1
+ {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../../src/core/component/reflect.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MetadataClass, MetadataContext } from '@ibyar/decorators';\nimport type { ChildOptions, OutputEventInit } from '../annotation/options.js';\n\nexport class PropertyRef {\n\tconstructor(public modelProperty: string, protected _viewName?: string) { }\n\tget viewAttribute(): string {\n\t\treturn this._viewName || this.modelProperty;\n\t}\n}\n\nexport class InputPropertyRef extends PropertyRef {\n\n}\n\nexport class OutputPropertyRef extends PropertyRef {\n\tconstructor(modelProperty: string, viewName?: string, public options?: OutputEventInit) {\n\t\tsuper(modelProperty, viewName);\n\t}\n}\n\nexport class ChildRef {\n\tconstructor(\n\t\tpublic modelName: string,\n\t\tpublic selector: string | { new(): HTMLElement; prototype: HTMLElement } | CustomElementConstructor,\n\t\tpublic childOptions?: ChildOptions\n\t) { }\n}\n\nexport class ListenerRef {\n\tconstructor(public eventName: string, public args: string[], public modelCallbackName: string) { }\n}\n\nexport class HostBindingRef {\n\tconstructor(public modelPropertyName: string, public hostPropertyName: string) { }\n}\n\nexport interface BootstrapMetadata {\n\t[key: string]: any;\n}\n\n\nexport class ReflectComponents {\n\n\tstatic getMetaDate(constructor: MetadataClass) {\n\t\treturn constructor[Symbol.metadata];\n\t}\n\n\tstatic addInput(metadata: MetadataContext, modelName: string, viewName: string) {\n\t\t(metadata.inputs ??= []).push(new InputPropertyRef(modelName, viewName));\n\t}\n\n\tstatic addOutput(metadata: MetadataContext, modelName: string, viewName: string, options: OutputEventInit) {\n\t\t(metadata.outputs ??= []).push(new OutputPropertyRef(modelName, viewName, options));\n\t}\n\n\tstatic setComponentView(metadata: MetadataContext, modelName: string) {\n\t\tmetadata.view = modelName;\n\t}\n\n\tstatic addViewChild(metadata: MetadataContext, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor, childOptions?: ChildOptions) {\n\t\t(metadata.viewChild ??= []).push(new ChildRef(modelName, selector, childOptions));\n\t}\n\n\tstatic addViewChildren(metadata: MetadataContext, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor) {\n\t\t(metadata.ViewChildren ??= []).push(new ChildRef(modelName, selector));\n\t}\n\n\tstatic addHostListener(metadata: MetadataContext, propertyKey: string, eventName: string, args: string[]) {\n\t\t(metadata.hostListeners ??= []).push(new ListenerRef(eventName, args, propertyKey));\n\t}\n\n\tstatic addHostBinding(metadata: MetadataContext, propertyKey: string, hostPropertyName: string) {\n\t\t(metadata.hostBindings ??= []).push(new HostBindingRef(propertyKey, hostPropertyName));\n\t}\n}\n"]}
@@ -1,2 +1,3 @@
1
1
  import { Stack } from '@ibyar/expressions';
2
2
  export declare const documentStack: Stack;
3
+ //# sourceMappingURL=stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../src/core/context/stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAsEjE,eAAO,MAAM,aAAa,OAMzB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import { ScopeSubscription } from '@ibyar/expressions';
2
2
  export declare function createSubscriptionDestroyer(unsubscribe: () => void, pause?: () => void, resume?: () => void): ScopeSubscription<void>;
3
+ //# sourceMappingURL=subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../../src/core/context/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAYrI"}
@@ -28,3 +28,4 @@ export declare class AttributeOnStructuralDirective {
28
28
  protected _zone: AuroraZone;
29
29
  constructor(directive: StructuralDirective, _zone: AuroraZone);
30
30
  }
31
+ //# sourceMappingURL=directive.d.ts.map
@@ -0,0 +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;gBAHjB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,mBAAmB,EAC9C,KAAK,EAAE,UAAU;CAE5B;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"}
@@ -2,6 +2,10 @@
2
2
  * A structural directive selector as '*if' '*for'
3
3
  */
4
4
  export class StructuralDirective {
5
+ templateRef;
6
+ viewContainerRef;
7
+ host;
8
+ _zone;
5
9
  constructor(templateRef, viewContainerRef, host, _zone) {
6
10
  this.templateRef = templateRef;
7
11
  this.viewContainerRef = viewContainerRef;
@@ -13,6 +17,8 @@ export class StructuralDirective {
13
17
  * An attributes directive selector as '[class] [style]'
14
18
  */
15
19
  export class AttributeDirective {
20
+ el;
21
+ _zone;
16
22
  constructor(el, _zone) {
17
23
  this.el = el;
18
24
  this._zone = _zone;
@@ -22,6 +28,8 @@ export class AttributeDirective {
22
28
  * An attributes directive on structural directive
23
29
  */
24
30
  export class AttributeOnStructuralDirective {
31
+ directive;
32
+ _zone;
25
33
  constructor(directive, _zone) {
26
34
  this.directive = directive;
27
35
  this._zone = _zone;
@@ -1 +1 @@
1
- {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../../src/core/directive/directive.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAC/B,YACW,WAAwB,EACxB,gBAAkC,EAClC,IAA8C,EAC9C,KAAiB;QAHjB,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,SAAI,GAAJ,IAAI,CAA0C;QAC9C,UAAK,GAAL,KAAK,CAAY;IACxB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAC9B,YAAsB,EAAe,EAAY,KAAiB;QAA5C,OAAE,GAAF,EAAE,CAAa;QAAY,UAAK,GAAL,KAAK,CAAY;IAAI,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,OAAO,8BAA8B;IAC1C,YAAsB,SAA8B,EAAY,KAAiB;QAA3D,cAAS,GAAT,SAAS,CAAqB;QAAY,UAAK,GAAL,KAAK,CAAY;IAAI,CAAC;CACtF","sourcesContent":["\nimport { HTMLComponent } from '../component/custom-element.js';\nimport { TemplateRef } from '../linker/template-ref.js';\nimport { ViewContainerRef } from '../linker/view-container-ref.js';\nimport { AuroraZone } from '../zone/zone.js';\n\n/**\n * A structural directive selector as '*if' '*for'\n */\nexport class StructuralDirective {\n\tconstructor(\n\t\tprotected templateRef: TemplateRef,\n\t\tprotected viewContainerRef: ViewContainerRef,\n\t\tprotected host: HTMLComponent<any> | StructuralDirective,\n\t\tprotected _zone: AuroraZone,\n\t) { }\n}\n\n/**\n * An attributes directive selector as '[class] [style]'\n */\nexport class AttributeDirective {\n\tconstructor(protected el: HTMLElement, protected _zone: AuroraZone) { }\n}\n\n/**\n * An attributes directive on structural directive\n */\nexport class AttributeOnStructuralDirective {\n\tconstructor(protected directive: StructuralDirective, protected _zone: AuroraZone) { }\n}\n"]}
1
+ {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../../src/core/directive/directive.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAEpB;IACA;IACA;IACA;IAJX,YACW,WAAwB,EACxB,gBAAkC,EAClC,IAA8C,EAC9C,KAAiB;QAHjB,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,SAAI,GAAJ,IAAI,CAA0C;QAC9C,UAAK,GAAL,KAAK,CAAY;IACxB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACR;IAA2B;IAAjD,YAAsB,EAAe,EAAY,KAAiB;QAA5C,OAAE,GAAF,EAAE,CAAa;QAAY,UAAK,GAAL,KAAK,CAAY;IAAI,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,OAAO,8BAA8B;IACpB;IAA0C;IAAhE,YAAsB,SAA8B,EAAY,KAAiB;QAA3D,cAAS,GAAT,SAAS,CAAqB;QAAY,UAAK,GAAL,KAAK,CAAY;IAAI,CAAC;CACtF","sourcesContent":["\nimport { HTMLComponent } from '../component/custom-element.js';\nimport { TemplateRef } from '../linker/template-ref.js';\nimport { ViewContainerRef } from '../linker/view-container-ref.js';\nimport { AuroraZone } from '../zone/zone.js';\n\n/**\n * A structural directive selector as '*if' '*for'\n */\nexport class StructuralDirective {\n\tconstructor(\n\t\tprotected templateRef: TemplateRef,\n\t\tprotected viewContainerRef: ViewContainerRef,\n\t\tprotected host: HTMLComponent<any> | StructuralDirective,\n\t\tprotected _zone: AuroraZone,\n\t) { }\n}\n\n/**\n * An attributes directive selector as '[class] [style]'\n */\nexport class AttributeDirective {\n\tconstructor(protected el: HTMLElement, protected _zone: AuroraZone) { }\n}\n\n/**\n * An attributes directive on structural directive\n */\nexport class AttributeOnStructuralDirective {\n\tconstructor(protected directive: StructuralDirective, protected _zone: AuroraZone) { }\n}\n"]}
@@ -32,3 +32,4 @@ export declare class DirectiveExpressionParser {
32
32
  protected parseDirectiveAndTemplateInputs(): void;
33
33
  private mapTokenToString;
34
34
  }
35
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/core/directive/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAErF,MAAM,MAAM,uBAAuB,GAAG;IACrC,mBAAmB,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAUF,qBAAa,yBAAyB;IAiBzB,SAAS,CAAC,aAAa,EAAE,MAAM;IAAE,SAAS,CAAC,MAAM,EAAE,WAAW;WAd5D,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,uBAAuB;IAWvF,SAAS,CAAC,mBAAmB,sBAAkC;IAC/D,SAAS,CAAC,eAAe,sBAA6B;gBAEhC,aAAa,EAAE,MAAM,EAAY,MAAM,EAAE,WAAW;IAE1E,0BAA0B,IAAI,uBAAuB;IAMrD,IAAI,IAAI,IAAI;IAmBZ,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK;IAK9B,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAQtC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE;IAQ7D,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,OAAO;IAUxE,SAAS,CAAC,gBAAgB,IAAI,OAAO;IAKrC,SAAS,CAAC,YAAY,IAAI,OAAO;IAIjC,SAAS,CAAC,WAAW,IAAI,OAAO;IAKhC,SAAS,CAAC,gBAAgB;IAG1B,SAAS,CAAC,WAAW;IAGrB,SAAS,CAAC,OAAO;IAGjB,SAAS,CAAC,uBAAuB;IAOjC,SAAS,CAAC,kBAAkB;IA0B5B,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM;IAM3C;;;OAGG;IACH,SAAS,CAAC,+BAA+B;IAkDzC,OAAO,CAAC,gBAAgB;CAOxB"}
@@ -1,12 +1,14 @@
1
1
  import { Identifier, Token, TokenExpression, TokenStream } from '@ibyar/expressions';
2
2
  class TokenConstant {
3
+ static LET = new TokenExpression(Token.LET, [-1, -1]);
4
+ static COMMA = new TokenExpression(Token.COMMA, [-1, -1]);
5
+ static ASSIGN = new TokenExpression(Token.ASSIGN, [-1, -1]);
6
+ static IMPLICIT = new TokenExpression(Token.IDENTIFIER, [-1, -1], new Identifier('$implicit'));
7
+ static EOS = new TokenExpression(Token.EOS, [-1, -1]);
3
8
  }
4
- TokenConstant.LET = new TokenExpression(Token.LET, [-1, -1]);
5
- TokenConstant.COMMA = new TokenExpression(Token.COMMA, [-1, -1]);
6
- TokenConstant.ASSIGN = new TokenExpression(Token.ASSIGN, [-1, -1]);
7
- TokenConstant.IMPLICIT = new TokenExpression(Token.IDENTIFIER, [-1, -1], new Identifier('$implicit'));
8
- TokenConstant.EOS = new TokenExpression(Token.EOS, [-1, -1]);
9
9
  export class DirectiveExpressionParser {
10
+ directiveName;
11
+ stream;
10
12
  static parse(directiveName, expression) {
11
13
  const stream = TokenStream.getTokenStream(expression);
12
14
  const parser = new DirectiveExpressionParser(directiveName, stream);
@@ -18,11 +20,11 @@ export class DirectiveExpressionParser {
18
20
  }
19
21
  return parser.getDirectiveExpressionType();
20
22
  }
23
+ templateExpressions = new Array();
24
+ directiveInputs = new Map();
21
25
  constructor(directiveName, stream) {
22
26
  this.directiveName = directiveName;
23
27
  this.stream = stream;
24
- this.templateExpressions = new Array();
25
- this.directiveInputs = new Map();
26
28
  }
27
29
  getDirectiveExpressionType() {
28
30
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/core/directive/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { Identifier, Token, TokenExpression, TokenStream } from '@ibyar/expressions';\n\nexport type DirectiveExpressionType = {\n\ttemplateExpressions: Array<TokenExpression[]>;\n\tdirectiveInputs: Map<string, string>;\n};\n\nclass TokenConstant {\n\tstatic LET = new TokenExpression(Token.LET, [-1, -1]);\n\tstatic COMMA = new TokenExpression(Token.COMMA, [-1, -1]);\n\tstatic ASSIGN = new TokenExpression(Token.ASSIGN, [-1, -1]);\n\tstatic IMPLICIT = new TokenExpression(Token.IDENTIFIER, [-1, -1], new Identifier('$implicit'));\n\tstatic EOS = new TokenExpression(Token.EOS, [-1, -1]);\n}\n\nexport class DirectiveExpressionParser {\n\n\n\tpublic static parse(directiveName: string, expression: string): DirectiveExpressionType {\n\t\tconst stream = TokenStream.getTokenStream(expression);\n\t\tconst parser = new DirectiveExpressionParser(directiveName, stream);\n\t\ttry {\n\t\t\tparser.scan();\n\t\t} catch (error) {\n\t\t\tconsole.error('error parsing template expression', expression, parser, error);\n\t\t}\n\t\treturn parser.getDirectiveExpressionType();\n\t}\n\n\tprotected templateExpressions = new Array<TokenExpression[]>();\n\tprotected directiveInputs = new Map<string, string>();\n\n\tconstructor(protected directiveName: string, protected stream: TokenStream) { }\n\n\tgetDirectiveExpressionType(): DirectiveExpressionType {\n\t\treturn {\n\t\t\ttemplateExpressions: this.templateExpressions,\n\t\t\tdirectiveInputs: this.directiveInputs\n\t\t};\n\t}\n\tscan(): void {\n\t\t// parse 'let/const/var' if found, or switch to expression mode.\n\t\tif (this.isDeclareKeyword()) {\n\t\t\tthis.parseTemplateInput();\n\t\t} else {\n\t\t\t// parse expression, possible ends is semicolon, comma, let and 'EOS'\n\t\t\tthis.parseExpression(this.directiveName);\n\t\t}\n\t\tif (this.stream.peek().isType(Token.EOS)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.consumeSemicolonOrComma();\n\n\t\t// parse let and parseDirectiveAndTemplateInputs\n\t\twhile (this.stream.peek().isNotType(Token.EOS)) {\n\t\t\tthis.parseTemplateInput() || this.parseDirectiveAndTemplateInputs();\n\t\t\tthis.consumeSemicolonOrComma();\n\t\t}\n\t}\n\tprotected consume(token: Token) {\n\t\tif (this.stream.next().isNotType(token)) {\n\t\t\tthrow new Error(this.stream.createError(`Parsing ${JSON.stringify(token)}`));\n\t\t}\n\t}\n\tprotected check(token: Token): boolean {\n\t\tconst peek = this.stream.peek();\n\t\tif (peek.isType(token)) {\n\t\t\tthis.stream.next();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tprotected consumeToList(token: Token, list: TokenExpression[]) {\n\t\tconst next = this.stream.next();\n\t\tif (next.isNotType(token)) {\n\t\t\tthrow new Error(this.stream.createError(`Parsing ${JSON.stringify(token)}`));\n\t\t}\n\t\tlist.push(next);\n\t}\n\n\tprotected consumeIfToken(token: Token, list: TokenExpression[]): boolean {\n\t\tconst next = this.stream.peek();\n\t\tif (next.isNotType(token)) {\n\t\t\treturn false;\n\t\t}\n\t\tlist.push(next);\n\t\tthis.stream.next();\n\t\treturn true;\n\t}\n\n\tprotected isDeclareKeyword(): boolean {\n\t\tconst peek = this.stream.peek();\n\t\treturn peek.isType(Token.LET) || peek.isType(Token.CONST) || peek.isType(Token.VAR);\n\t}\n\n\tprotected isIdentifier(): boolean {\n\t\treturn this.stream.peek().isType(Token.IDENTIFIER);\n\t}\n\n\tprotected isAsKeyword(): boolean {\n\t\tconst peek = this.stream.peek();\n\t\treturn peek.isType(Token.IDENTIFIER) && (peek.getValue<Identifier>().getName() == 'as');\n\t}\n\n\tprotected consumeAsKeyword() {\n\t\tthis.consume(Token.IDENTIFIER);\n\t}\n\tprotected isSemicolon() {\n\t\treturn this.stream.peek().isType(Token.SEMICOLON);\n\t}\n\tprotected isComma() {\n\t\treturn this.stream.peek().isType(Token.COMMA);\n\t}\n\tprotected consumeSemicolonOrComma() {\n\t\tlet peek = this.stream.peek();\n\t\tif (peek.isType(Token.SEMICOLON) || peek.isType(Token.COMMA)) {\n\t\t\tthis.stream.next();\n\t\t\treturn;\n\t\t}\n\t}\n\tprotected parseTemplateInput() {\n\t\t// let = \"let\" :local \"=\" :export \";\"?\n\t\tif (this.isDeclareKeyword()) {\n\t\t\tlet peek = this.stream.peek();\n\t\t\tconst list: TokenExpression[] = [peek];\n\t\t\tthis.consume(peek.token);\n\t\t\tpeek = this.stream.peek();\n\t\t\tif (Token.isOpenPair(peek.token) && peek.isNotType(Token.LPAREN)) {\n\t\t\t\t// object and array pattern, destructing\n\t\t\t\tthis.stream.readTill(Token.closeOf(peek.token), list);\n\t\t\t} else if (peek.isType(Token.IDENTIFIER)) {\n\t\t\t\tthis.consumeToList(Token.IDENTIFIER, list);\n\t\t\t} else {\n\t\t\t\tthrow new Error(this.stream.createError(`Can't parse let/const/var {IDENTIFIER/ObjectPattern}`));\n\t\t\t}\n\t\t\tif (this.consumeIfToken(Token.ASSIGN, list)) {\n\t\t\t\tthis.stream.readTokensConsiderPair(list, Token.SEMICOLON, Token.COMMA, Token.LET, Token.CONST, Token.VAR, Token.EOS);\n\t\t\t} else {\n\t\t\t\tlist.push(TokenConstant.ASSIGN, TokenConstant.IMPLICIT);\n\t\t\t}\n\t\t\tthis.templateExpressions.push(list);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected parseExpression(inputName: string) {\n\t\tconst list: TokenExpression[] = [];\n\t\tthis.stream.readTokensConsiderPair(list, Token.SEMICOLON, Token.COMMA, Token.LET, Token.EOS);\n\t\tthis.directiveInputs.set(inputName, list.map(this.mapTokenToString).join(' '));\n\t}\n\n\t/**\n\t * check if the first is\n\t * @returns `boolean`\n\t */\n\tprotected parseDirectiveAndTemplateInputs() {\n\t\tif (this.stream.peek().isType(Token.EOS)) {\n\t\t\treturn;\n\t\t}\n\t\tlet inputToken: TokenExpression;\n\t\tif (this.isIdentifier()) {\n\t\t\tinputToken = this.stream.next();\n\t\t} else {\n\t\t\tinputToken = this.stream.next();\n\t\t\tconst identifierName = inputToken.token.getName();\n\t\t\tinputToken = new TokenExpression(Token.IDENTIFIER, [-1, -1], new Identifier(identifierName));\n\t\t}\n\n\t\t// only template input\n\t\t// mapping from directive scope(context) to template scope\n\t\tif (this.isAsKeyword()) {\n\t\t\t// as = :export \"as\" :local \";\"?\n\t\t\tthis.consumeAsKeyword();\n\t\t\t// rewrite `input as alias`\n\t\t\t// ==> in template -> alias = input\n\n\t\t\tconst aliasToken = this.stream.next();\n\t\t\tconst aliasList: TokenExpression[] = [];\n\t\t\taliasList.push(aliasToken, TokenConstant.ASSIGN, inputToken, TokenConstant.EOS);\n\t\t\tthis.templateExpressions.push(aliasList);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.check(Token.ASSIGN) || this.check(Token.COLON);\n\n\t\tconst list: TokenExpression[] = [];\n\t\t// keyExp = :key \":\"? :expression (\"as\" :local)? \";\"?\n\t\tthis.stream.readTokensConsiderPair(list, Token.SEMICOLON, Token.COMMA, Token.LET, Token.CONST, Token.VAR, Token.EOS);\n\n\t\t// mix for directive input and template input\n\t\tif (this.isAsKeyword()) {\n\t\t\tthis.consumeAsKeyword();\n\t\t\t// rewrite `input {x: 7, y: 9} as alias` \n\t\t\t// ==> in directive ->`input = {x: 7, y: 9}`\n\t\t\t// ==> or in template -> let alias = input\n\t\t\tconst aliasToken = this.stream.next();\n\t\t\tconst aliasList: TokenExpression[] = [];\n\t\t\taliasList.push(TokenConstant.LET, aliasToken, TokenConstant.ASSIGN, inputToken, TokenConstant.EOS);\n\t\t\tthis.templateExpressions.push(aliasList);\n\t\t}\n\t\tconst inputName = inputToken.getValue<Identifier>().getName() as string;\n\t\tthis.directiveInputs.set(inputName, list.map(this.mapTokenToString).join(' '));\n\n\t}\n\n\tprivate mapTokenToString(token: TokenExpression): String {\n\t\tif (token.value) {\n\t\t\treturn token.value.toString();\n\t\t}\n\t\treturn token.token.getName();\n\t}\n\n}\n\n"]}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/core/directive/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { Identifier, Token, TokenExpression, TokenStream } from '@ibyar/expressions';\n\nexport type DirectiveExpressionType = {\n\ttemplateExpressions: Array<TokenExpression[]>;\n\tdirectiveInputs: Map<string, string>;\n};\n\nclass TokenConstant {\n\tstatic LET = new TokenExpression(Token.LET, [-1, -1]);\n\tstatic COMMA = new TokenExpression(Token.COMMA, [-1, -1]);\n\tstatic ASSIGN = new TokenExpression(Token.ASSIGN, [-1, -1]);\n\tstatic IMPLICIT = new TokenExpression(Token.IDENTIFIER, [-1, -1], new Identifier('$implicit'));\n\tstatic EOS = new TokenExpression(Token.EOS, [-1, -1]);\n}\n\nexport class DirectiveExpressionParser {\n\n\n\tpublic static parse(directiveName: string, expression: string): DirectiveExpressionType {\n\t\tconst stream = TokenStream.getTokenStream(expression);\n\t\tconst parser = new DirectiveExpressionParser(directiveName, stream);\n\t\ttry {\n\t\t\tparser.scan();\n\t\t} catch (error) {\n\t\t\tconsole.error('error parsing template expression', expression, parser, error);\n\t\t}\n\t\treturn parser.getDirectiveExpressionType();\n\t}\n\n\tprotected templateExpressions = new Array<TokenExpression[]>();\n\tprotected directiveInputs = new Map<string, string>();\n\n\tconstructor(protected directiveName: string, protected stream: TokenStream) { }\n\n\tgetDirectiveExpressionType(): DirectiveExpressionType {\n\t\treturn {\n\t\t\ttemplateExpressions: this.templateExpressions,\n\t\t\tdirectiveInputs: this.directiveInputs\n\t\t};\n\t}\n\tscan(): void {\n\t\t// parse 'let/const/var' if found, or switch to expression mode.\n\t\tif (this.isDeclareKeyword()) {\n\t\t\tthis.parseTemplateInput();\n\t\t} else {\n\t\t\t// parse expression, possible ends is semicolon, comma, let and 'EOS'\n\t\t\tthis.parseExpression(this.directiveName);\n\t\t}\n\t\tif (this.stream.peek().isType(Token.EOS)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.consumeSemicolonOrComma();\n\n\t\t// parse let and parseDirectiveAndTemplateInputs\n\t\twhile (this.stream.peek().isNotType(Token.EOS)) {\n\t\t\tthis.parseTemplateInput() || this.parseDirectiveAndTemplateInputs();\n\t\t\tthis.consumeSemicolonOrComma();\n\t\t}\n\t}\n\tprotected consume(token: Token) {\n\t\tif (this.stream.next().isNotType(token)) {\n\t\t\tthrow new Error(this.stream.createError(`Parsing ${JSON.stringify(token)}`));\n\t\t}\n\t}\n\tprotected check(token: Token): boolean {\n\t\tconst peek = this.stream.peek();\n\t\tif (peek.isType(token)) {\n\t\t\tthis.stream.next();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tprotected consumeToList(token: Token, list: TokenExpression[]) {\n\t\tconst next = this.stream.next();\n\t\tif (next.isNotType(token)) {\n\t\t\tthrow new Error(this.stream.createError(`Parsing ${JSON.stringify(token)}`));\n\t\t}\n\t\tlist.push(next);\n\t}\n\n\tprotected consumeIfToken(token: Token, list: TokenExpression[]): boolean {\n\t\tconst next = this.stream.peek();\n\t\tif (next.isNotType(token)) {\n\t\t\treturn false;\n\t\t}\n\t\tlist.push(next);\n\t\tthis.stream.next();\n\t\treturn true;\n\t}\n\n\tprotected isDeclareKeyword(): boolean {\n\t\tconst peek = this.stream.peek();\n\t\treturn peek.isType(Token.LET) || peek.isType(Token.CONST) || peek.isType(Token.VAR);\n\t}\n\n\tprotected isIdentifier(): boolean {\n\t\treturn this.stream.peek().isType(Token.IDENTIFIER);\n\t}\n\n\tprotected isAsKeyword(): boolean {\n\t\tconst peek = this.stream.peek();\n\t\treturn peek.isType(Token.IDENTIFIER) && (peek.getValue<Identifier>().getName() == 'as');\n\t}\n\n\tprotected consumeAsKeyword() {\n\t\tthis.consume(Token.IDENTIFIER);\n\t}\n\tprotected isSemicolon() {\n\t\treturn this.stream.peek().isType(Token.SEMICOLON);\n\t}\n\tprotected isComma() {\n\t\treturn this.stream.peek().isType(Token.COMMA);\n\t}\n\tprotected consumeSemicolonOrComma() {\n\t\tlet peek = this.stream.peek();\n\t\tif (peek.isType(Token.SEMICOLON) || peek.isType(Token.COMMA)) {\n\t\t\tthis.stream.next();\n\t\t\treturn;\n\t\t}\n\t}\n\tprotected parseTemplateInput() {\n\t\t// let = \"let\" :local \"=\" :export \";\"?\n\t\tif (this.isDeclareKeyword()) {\n\t\t\tlet peek = this.stream.peek();\n\t\t\tconst list: TokenExpression[] = [peek];\n\t\t\tthis.consume(peek.token);\n\t\t\tpeek = this.stream.peek();\n\t\t\tif (Token.isOpenPair(peek.token) && peek.isNotType(Token.LPAREN)) {\n\t\t\t\t// object and array pattern, destructing\n\t\t\t\tthis.stream.readTill(Token.closeOf(peek.token), list);\n\t\t\t} else if (peek.isType(Token.IDENTIFIER)) {\n\t\t\t\tthis.consumeToList(Token.IDENTIFIER, list);\n\t\t\t} else {\n\t\t\t\tthrow new Error(this.stream.createError(`Can't parse let/const/var {IDENTIFIER/ObjectPattern}`));\n\t\t\t}\n\t\t\tif (this.consumeIfToken(Token.ASSIGN, list)) {\n\t\t\t\tthis.stream.readTokensConsiderPair(list, Token.SEMICOLON, Token.COMMA, Token.LET, Token.CONST, Token.VAR, Token.EOS);\n\t\t\t} else {\n\t\t\t\tlist.push(TokenConstant.ASSIGN, TokenConstant.IMPLICIT);\n\t\t\t}\n\t\t\tthis.templateExpressions.push(list);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected parseExpression(inputName: string) {\n\t\tconst list: TokenExpression[] = [];\n\t\tthis.stream.readTokensConsiderPair(list, Token.SEMICOLON, Token.COMMA, Token.LET, Token.EOS);\n\t\tthis.directiveInputs.set(inputName, list.map(this.mapTokenToString).join(' '));\n\t}\n\n\t/**\n\t * check if the first is\n\t * @returns `boolean`\n\t */\n\tprotected parseDirectiveAndTemplateInputs() {\n\t\tif (this.stream.peek().isType(Token.EOS)) {\n\t\t\treturn;\n\t\t}\n\t\tlet inputToken: TokenExpression;\n\t\tif (this.isIdentifier()) {\n\t\t\tinputToken = this.stream.next();\n\t\t} else {\n\t\t\tinputToken = this.stream.next();\n\t\t\tconst identifierName = inputToken.token.getName();\n\t\t\tinputToken = new TokenExpression(Token.IDENTIFIER, [-1, -1], new Identifier(identifierName));\n\t\t}\n\n\t\t// only template input\n\t\t// mapping from directive scope(context) to template scope\n\t\tif (this.isAsKeyword()) {\n\t\t\t// as = :export \"as\" :local \";\"?\n\t\t\tthis.consumeAsKeyword();\n\t\t\t// rewrite `input as alias`\n\t\t\t// ==> in template -> alias = input\n\n\t\t\tconst aliasToken = this.stream.next();\n\t\t\tconst aliasList: TokenExpression[] = [];\n\t\t\taliasList.push(aliasToken, TokenConstant.ASSIGN, inputToken, TokenConstant.EOS);\n\t\t\tthis.templateExpressions.push(aliasList);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.check(Token.ASSIGN) || this.check(Token.COLON);\n\n\t\tconst list: TokenExpression[] = [];\n\t\t// keyExp = :key \":\"? :expression (\"as\" :local)? \";\"?\n\t\tthis.stream.readTokensConsiderPair(list, Token.SEMICOLON, Token.COMMA, Token.LET, Token.CONST, Token.VAR, Token.EOS);\n\n\t\t// mix for directive input and template input\n\t\tif (this.isAsKeyword()) {\n\t\t\tthis.consumeAsKeyword();\n\t\t\t// rewrite `input {x: 7, y: 9} as alias` \n\t\t\t// ==> in directive ->`input = {x: 7, y: 9}`\n\t\t\t// ==> or in template -> let alias = input\n\t\t\tconst aliasToken = this.stream.next();\n\t\t\tconst aliasList: TokenExpression[] = [];\n\t\t\taliasList.push(TokenConstant.LET, aliasToken, TokenConstant.ASSIGN, inputToken, TokenConstant.EOS);\n\t\t\tthis.templateExpressions.push(aliasList);\n\t\t}\n\t\tconst inputName = inputToken.getValue<Identifier>().getName() as string;\n\t\tthis.directiveInputs.set(inputName, list.map(this.mapTokenToString).join(' '));\n\n\t}\n\n\tprivate mapTokenToString(token: TokenExpression): String {\n\t\tif (token.value) {\n\t\t\treturn token.value.toString();\n\t\t}\n\t\treturn token.token.getName();\n\t}\n\n}\n\n"]}
@@ -17,3 +17,4 @@ export declare class ElementReactiveScope extends ReactiveScope<ElementContext>
17
17
  has(propertyKey: string): boolean;
18
18
  getClass(): TypeOf<ElementReactiveScope>;
19
19
  }
20
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/core/directive/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;CAAE,CAAC;AACxG,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,cAAc,CAAC;IAE1D,OAAO,CAAC,EAAE;IADtB,OAAO,CAAC,YAAY,CAA8C;gBAC9C,EAAE,EAAE,WAAW;IAInC,UAAU;IAGV,aAAa;IAGb,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG;IAyBlC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO;IAyBlE,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAoBjC,QAAQ,IAAI,MAAM,CAAC,oBAAoB,CAAC;CAGxC"}
@@ -3,10 +3,11 @@ import { isOnInit } from '../component/lifecycle.js';
3
3
  import { ClassRegistryProvider } from '../providers/provider.js';
4
4
  import { AttributeDirective } from './directive.js';
5
5
  export class ElementReactiveScope extends ReactiveScope {
6
+ el;
7
+ directiveMap = new Map();
6
8
  constructor(el) {
7
9
  super({});
8
10
  this.el = el;
9
- this.directiveMap = new Map();
10
11
  this._ctx.this = el;
11
12
  }
12
13
  getElement() {