@ibyar/core 2.2.1 → 2.3.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 (56) hide show
  1. package/component/component.d.ts +1 -1
  2. package/component/component.d.ts.map +1 -1
  3. package/component/component.js.map +1 -1
  4. package/html/expression.d.ts +2 -1
  5. package/html/expression.d.ts.map +1 -1
  6. package/html/expression.js +4 -1
  7. package/html/expression.js.map +1 -1
  8. package/package.json +5 -5
  9. package/providers/provider.d.ts +6 -2
  10. package/providers/provider.d.ts.map +1 -1
  11. package/providers/provider.js +42 -6
  12. package/providers/provider.js.map +1 -1
  13. package/di/token.d.ts +0 -7
  14. package/di/token.d.ts.map +0 -1
  15. package/di/token.js +0 -11
  16. package/di/token.js.map +0 -1
  17. package/di/types.d.ts +0 -1
  18. package/di/types.d.ts.map +0 -1
  19. package/di/types.js +0 -2
  20. package/di/types.js.map +0 -1
  21. package/html/binding.d.ts +0 -16
  22. package/html/binding.d.ts.map +0 -1
  23. package/html/binding.js +0 -58
  24. package/html/binding.js.map +0 -1
  25. package/scope/scope.d.ts +0 -29
  26. package/scope/scope.d.ts.map +0 -1
  27. package/scope/scope.js +0 -82
  28. package/scope/scope.js.map +0 -1
  29. package/scope/signals.d.ts +0 -15
  30. package/scope/signals.d.ts.map +0 -1
  31. package/scope/signals.js +0 -49
  32. package/scope/signals.js.map +0 -1
  33. package/scope/stream.d.ts +0 -1
  34. package/scope/stream.d.ts.map +0 -1
  35. package/scope/stream.js +0 -8
  36. package/scope/stream.js.map +0 -1
  37. package/scope/variables.d.ts +0 -19
  38. package/scope/variables.d.ts.map +0 -1
  39. package/scope/variables.js +0 -38
  40. package/scope/variables.js.map +0 -1
  41. package/scope/web-scope.d.ts +0 -4
  42. package/scope/web-scope.d.ts.map +0 -1
  43. package/scope/web-scope.js +0 -2
  44. package/scope/web-scope.js.map +0 -1
  45. package/signals/proposal-signals.d.ts +0 -4
  46. package/signals/proposal-signals.d.ts.map +0 -1
  47. package/signals/proposal-signals.js +0 -11
  48. package/signals/proposal-signals.js.map +0 -1
  49. package/signals/proposal-sugnal.d.ts +0 -1
  50. package/signals/proposal-sugnal.d.ts.map +0 -1
  51. package/signals/proposal-sugnal.js +0 -2
  52. package/signals/proposal-sugnal.js.map +0 -1
  53. package/zone/task.d.ts +0 -1
  54. package/zone/task.d.ts.map +0 -1
  55. package/zone/task.js +0 -128
  56. package/zone/task.js.map +0 -1
@@ -6,7 +6,7 @@ import { HTMLComponent, ValueControl } from './custom-element.js';
6
6
  import { AttributeDirective, StructuralDirective } from '../directive/directive.js';
7
7
  import { ComponentOptions, PipeOptions, InjectableOptions, DirectiveOptions } from '../annotation/options.js';
8
8
  import { ChildRef, HostBindingRef, InputPropertyRef, ListenerRef, OutputPropertyRef, PropertyRef } from './reflect.js';
9
- export interface ServiceRef<T> {
9
+ export interface InjectableRef<T> {
10
10
  provideIn: TypeOf<CustomElementConstructor> | 'root' | 'platform' | 'any';
11
11
  modelClass: TypeOf<T>;
12
12
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/core/component/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/core/component/component.ts"],"names":[],"mappings":"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"}
@@ -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 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\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":"AAGA,OAAO,EACN,aAAa,EAAO,UAAU,EAAE,cAAc,EACtB,eAAe,EACvC,iBAAiB,EAAE,cAAc,EACjC,aAAa,EAAE,wBAAwB,EACvC,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAS7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AA2D1C,MAAM,wBAAwB,GAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;AAElH,MAAM,OAAO,UAAU;IAEd,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAM,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,SAAS;QACvB,OAAO,UAAU,CAAC,UAAiB,CAAC;IACrC,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,KAAc,EAAE,SAA2B;QACvE,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;YACpE,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,KAAK,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAC/F,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;gBAClB,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;QACF,CAAC;QACD,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACpC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,UAAyB,EAAE,IAAsB,EAAE,QAAyB;QAClG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YACrE,MAAM,QAAQ,GAAG,aAAa,CAAC;gBAC9B,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,aAAa,EAAE,QAAQ,CAAC,aAAa;aACrC,CAAC,CAAC;YACH,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QACvC,CAAC;QACD,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,qBAAqB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpD,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzC,MAAM,EAAG,QAAQ,CAAC,MAAwB,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;YAC7E,OAAO,EAAG,QAAQ,CAAC,OAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;YACjF,SAAS,EAAG,QAAQ,CAAC,SAAgC;SACrD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAkB,UAA4B,EAAE,IAAiB,EAAE,QAAyB;QAC5G,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,qBAAqB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAkB,UAA4B,EAAE,IAAuB,EAAE,QAAyB;QACxH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAChC,qBAAqB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,eAAe,CAAkB,UAA4B,EAAE,IAAyB,EAAE,QAAyB;QACzH,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAA2B,CAAC;QAC7E,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,YAAY,CAAC,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1F,IAAI,OAAO,YAAY,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/C,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,UAAU,YAAY,CAAC,MAAM,WAAW,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACjF,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACP,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACzE,CAAC;YACD,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,OAAO,YAAY,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtD,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,OAAO,YAAY,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YAC9D,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAC1D,0BAA0B,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAC1D,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,gBAAgB,CAAC;YACtD,YAAY,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5E,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,QAAQ,IAAI,QAAQ,YAAY,mBAAmB,EAAE,CAAC;gBACzD,YAAY,CAAC,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACvD,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACP,qDAAqD;YACtD,CAAC;QACF,CAAC;QAED,YAAY,CAAC,MAAM,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QAC/C,YAAY,CAAC,OAAO,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QAChD,YAAY,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QAClD,YAAY,CAAC,YAAY,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QACrD,YAAY,CAAC,YAAY,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QACrD,YAAY,CAAC,aAAa,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QACtD,YAAY,CAAC,aAAa,KAAK,QAAQ,CAAC;QACxC,YAAY,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;YAC9B,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,wBAAwB,EAAE,CAAC,YAAY,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;QAChH,CAAC;QAED,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3E,MAAM,QAAQ,GAAG,aAAa,CAAC;gBAC9B,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,YAAY,EAAE,YAAY,CAAC,YAAY;gBACvC,aAAa,EAAE,YAAY,CAAC,aAAa;aACzC,CAAC,CAAC;YACH,YAAY,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC1C,YAAY,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE9C,IAAI,OAAO,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACtC,YAAY,CAAC,QAAQ,GAAG,CAAC,KAAQ,EAAE,EAAE;oBACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBAChC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBACvB,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACvD,CAAC;oBACD,OAAO,QAAQ,CAAC;gBACjB,CAAC,CAAC;YACH,CAAC;iBAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC9B,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpE,CAAC;QAEF,CAAC;QAED,IAAI,CAAC,CAAC,YAAY,CAAC,cAAc,KAAK,IAAI,IAAI,OAAO,YAAY,CAAC,cAAc,KAAK,UAAU,CAAC,EAAE,CAAC;YAClG,YAAY,CAAC,cAAc,GAAG,KAAK,CAAC;QACrC,CAAC;QAED,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1D,YAAY,CAAC,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;QAED,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC;QACrC,YAAY,CAAC,SAAS,GAAG,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAEzE,qBAAqB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpD,qBAAqB,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,OAAO,GAA6B,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;QAChD,IAAI,aAAa,EAAE,CAAC;YACnB,IAAI,aAAa,KAAK,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;YACjC,CAAC;QACF,CAAC;QAGD,cAAc,CAAC,MAAM,CACpB,YAAY,CAAC,QAAkB,EAC/B,YAAY,CAAC,SAAqC,EAClD,OAAO,CACP,CAAC;IAEH,CAAC;IAED,MAAM,CAAC,UAAU,CAAwB,SAA2B,EAAE,GAAoD;QACzH,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,GAAG,CAAC;QACxC,cAAc,CAAC,MAAM,CACpB,QAAQ,EACR,SAAS,EACT,UAAU,CACV,CAAC;IACH,CAAC","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"]}
@@ -6,5 +6,6 @@ export declare function buildExpressionNodes(node: DomNode): void;
6
6
  * function to skip node checking
7
7
  * @param modelClass
8
8
  */
9
- export declare function registerDirective(modelClass: Record<string, any>): void;
9
+ export declare function provideDirective(modelClass: Record<string, any>): void;
10
+ export declare function deleteDirective(selector: string): void;
10
11
  //# sourceMappingURL=expression.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/core/html/expression.ts"],"names":[],"mappings":"AAAA,OAAO,EAEsC,OAAO,EAInD,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,cAAc,EAEd,MAAM,oBAAoB,CAAC;AA2E5B,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,cAAc,GAAG,MAAM,EAAE,GAAG,SAAS,CAWtF;AA8FD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,QAMjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAEhE"}
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/core/html/expression.ts"],"names":[],"mappings":"AAAA,OAAO,EAEsC,OAAO,EAInD,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,cAAc,EAEd,MAAM,oBAAoB,CAAC;AA2E5B,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,cAAc,GAAG,MAAM,EAAE,GAAG,SAAS,CAWtF;AA8FD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,QAMjD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAE/D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,QAE/C"}
@@ -178,7 +178,10 @@ export function buildExpressionNodes(node) {
178
178
  * function to skip node checking
179
179
  * @param modelClass
180
180
  */
181
- export function registerDirective(modelClass) {
181
+ export function provideDirective(modelClass) {
182
182
  classRegistryProvider.registerDirective(modelClass);
183
183
  }
184
+ export function deleteDirective(selector) {
185
+ classRegistryProvider.deleteDirective(selector);
186
+ }
184
187
  //# sourceMappingURL=expression.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/core/html/expression.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tBaseNode, createLiveAttribute,\n\tDomStructuralDirectiveNode, DomElementNode, DomNode,\n\tDomFragmentNode, DomParentNode, ElementAttribute,\n\tisLiveTextContent, LiveAttribute, LiveTextContent,\n\tDomStructuralDirectiveNodeUpgrade, DomAttributeDirectiveNode\n} from '@ibyar/elements/node.js';\nimport {\n\tExpressionNode, expressionVisitor, Identifier,\n\tJavaScriptParser, MemberExpression, PipelineExpression\n} from '@ibyar/expressions';\nimport {\n\tOneWayAssignmentExpression,\n\tTwoWayAssignmentExpression\n} from '../binding/binding.expressions.js';\nimport { DirectiveExpressionParser } from '../directive/parser.js';\nimport { classRegistryProvider } from '../providers/provider.js';\n\nconst ThisTextContent = JavaScriptParser.parseScript('this.textContent') as MemberExpression;\nfunction parseLiveText(text: LiveTextContent) {\n\tconst textExpression = JavaScriptParser.parseScript(text.value);\n\ttext.expression = new OneWayAssignmentExpression(ThisTextContent, textExpression);\n\ttext.pipelineNames = getPipelineNames(textExpression);\n}\n\n/**\n * user-name ==> userName\n * \n * @param source \n * @returns \n */\nfunction convertToMemberAccessStyle(source: string | string[]): string {\n\tconst dashSplits = Array.isArray(source) ? source : source.split('-');\n\tif (dashSplits.length === 1) {\n\t\treturn source as string;\n\t}\n\treturn dashSplits[0] + dashSplits.splice(1).map(s => (s[0].toUpperCase() + s.substring(1))).join('');\n}\n\nfunction getAccessNotation(property: string) {\n\tif (property.includes('-')) {\n\t\treturn [`['`, property, `']`];\n\t} else if (Number.isInteger(property.at(0))) {\n\t\treturn ['[', property, ']'];\n\t}\n\treturn ['.', property];\n}\n\n/**\n * user.tel-number ==> user['tel-number']\n * \n * @param source \n * @returns \n */\nfunction escapeMemberExpression(source: string | string[]): string {\n\tconst dashSplits = Array.isArray(source) ? source : source.split('.');\n\treturn dashSplits.flatMap(property => getAccessNotation(property)).join('');\n}\n\n/**\n * warp js code with `()` if necessary\n * \n * `{name: 'alex'}` will be `({name: 'alex'})`\n * \n * @param params \n */\nfunction checkAndValidateObjectSyntax(source: string) {\n\tif (source.startsWith('{')) {\n\t\treturn `(${source})`;\n\t}\n\treturn source;\n}\nfunction parseLiveAttribute(attr: LiveAttribute) {\n\tconst elementSource = `this${escapeMemberExpression(attr.name)}`;\n\tconst elementExpression = JavaScriptParser.parseScript(elementSource);\n\tconst modelExpression = JavaScriptParser.parseScript(checkAndValidateObjectSyntax(attr.value));\n\tif (elementExpression instanceof MemberExpression\n\t\t&& (modelExpression instanceof MemberExpression || modelExpression instanceof Identifier)) {\n\t\tattr.expression = new TwoWayAssignmentExpression(elementExpression, modelExpression);\n\t} else {\n\t\tconsole.error(`${attr.name}=\"${attr.value}\"\" is not a valid MemberExpression or Identifier 'x.y.z'`);\n\t}\n\n}\n\nexport function getPipelineNames(modelExpression: ExpressionNode): string[] | undefined {\n\tconst pipelineNames: string[] = [];\n\texpressionVisitor.visit(modelExpression, (expression, type, control) => {\n\t\tif (type === 'PipelineExpression') {\n\t\t\tconst pipelineName = (expression as PipelineExpression).getRight();\n\t\t\tif (pipelineName instanceof Identifier) {\n\t\t\t\tpipelineNames.push(pipelineName.getName() as string);\n\t\t\t}\n\t\t}\n\t});\n\treturn pipelineNames.length ? pipelineNames : undefined;\n}\n\nfunction parseLiveAttributeUpdateElement(attr: LiveAttribute) {\n\tconst elementSource = attr.name.startsWith('data-')\n\t\t? `this.dataset.${convertToMemberAccessStyle(attr.name.substring(5))}`\n\t\t: `this${escapeMemberExpression(attr.name)}`;\n\tconst elementExpression = JavaScriptParser.parseScript(elementSource);\n\tconst modelExpression = JavaScriptParser.parseScript(checkAndValidateObjectSyntax(attr.value));\n\tif (elementExpression instanceof MemberExpression) {\n\t\tattr.expression = new OneWayAssignmentExpression(elementExpression, modelExpression);\n\t} else {\n\t\tconsole.error(`[${attr.name}] is not a valid MemberExpression 'x.y.z'`);\n\t}\n\tattr.pipelineNames = getPipelineNames(modelExpression);\n}\n\nfunction parseOutputExpression(attr: ElementAttribute<string, string>) {\n\tattr.expression = JavaScriptParser.parseScript(attr.value);\n}\n\nfunction parseAttributeDirectives(directive: DomAttributeDirectiveNode) {\n\tdirective.inputs?.forEach(parseLiveAttributeUpdateElement);\n\tdirective.outputs?.forEach(parseOutputExpression);\n\tdirective.twoWayBinding?.forEach(parseLiveAttribute);\n\tdirective.templateAttrs?.forEach(parseLiveAttributeUpdateElement);\n}\n\nfunction parseBaseNode(base: BaseNode) {\n\tbase.inputs?.forEach(parseLiveAttributeUpdateElement);\n\tbase.outputs?.forEach(parseOutputExpression);\n\tbase.twoWayBinding?.forEach(parseLiveAttribute);\n\tbase.templateAttrs?.forEach(parseLiveAttributeUpdateElement);\n\tbase.attributeDirectives?.forEach(parseAttributeDirectives);\n}\n\nfunction parseChild(child: DomNode) {\n\tif (child instanceof DomElementNode) {\n\t\t// DomElementNode\n\t\tparseBaseNode(child);\n\t\tparseDomParentNode(child);\n\t} else if (child instanceof DomStructuralDirectiveNode) {\n\t\tconst expressions: ExpressionNode[] = [];\n\t\t(child as DomStructuralDirectiveNodeUpgrade).templateExpressions = expressions;\n\t\tif (child.value) {\n\t\t\t// use shorthand syntax, possible mixed with input and outputs\n\t\t\tconst info = DirectiveExpressionParser.parse(child.name.substring(1), child.value);\n\t\t\texpressions.push(...info.templateExpressions.map(template => JavaScriptParser.parseScript(template)));\n\t\t\t// <div let-i=\"index\">{{item}}</div>\n\n\t\t\tsearchForLetAttributes(child, expressions);\n\n\t\t\tif (info.directiveInputs.size > 0) {\n\t\t\t\tconst ref = classRegistryProvider.getDirectiveRef(child.name);\n\t\t\t\tif (!ref?.inputs?.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tchild.inputs ??= [];\n\t\t\t\tinfo.directiveInputs.forEach((expression, input) => {\n\t\t\t\t\tconst modelName = ref?.inputs.find(i => i.viewAttribute === input)?.modelProperty ?? input;\n\t\t\t\t\tconst attr: LiveAttribute = createLiveAttribute(modelName, expression);\n\t\t\t\t\t(child.inputs ??= []).push(attr);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tsearchForLetAttributes(child, expressions);\n\t\t}\n\t\t// DomDirectiveNode\n\t\t// in case if add input/output support need to handle that here.\n\t\tparseChild(child.node);\n\t\tparseBaseNode(child);\n\t\tif (child.successor) {\n\t\t\tparseChild(child.successor);\n\t\t}\n\t} else if (isLiveTextContent(child)) {\n\t\tparseLiveText(child);\n\t} else if (child instanceof DomFragmentNode) {\n\t\tparseDomParentNode(child);\n\t}\n}\n\nfunction searchForLetAttributes(child: DomStructuralDirectiveNode, expressions: ExpressionNode[]) {\n\tconst templateExpressionsFromInput = child.attributes?.filter(attr => attr.name.startsWith('let-'));\n\ttemplateExpressionsFromInput?.forEach(attr => {\n\t\tchild.attributes!.splice(child.attributes!.indexOf(attr), 1);\n\t\tconst attrName = convertToMemberAccessStyle(attr.name.split('-').slice(1));\n\t\tconst expression = `let ${attrName} = ${(typeof attr.value == 'string') ? attr.value : '$implicit'}`;\n\t\texpressions.push(JavaScriptParser.parseScript(expression));\n\t});\n}\n\nfunction parseDomParentNode(parent: DomParentNode) {\n\tparent.children?.forEach(parseChild);\n}\n\nexport function buildExpressionNodes(node: DomNode) {\n\tif (node instanceof DomFragmentNode) {\n\t\tparseDomParentNode(node);\n\t} else {\n\t\tparseChild(node);\n\t}\n}\n\n/**\n * function to skip node checking\n * @param modelClass \n */\nexport function registerDirective(modelClass: Record<string, any>) {\n\tclassRegistryProvider.registerDirective(modelClass as any);\n}\n"]}
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/core/html/expression.ts"],"names":[],"mappings":"AAAA,OAAO,EACI,mBAAmB,EAC7B,0BAA0B,EAAE,cAAc,EAC1C,eAAe,EACf,iBAAiB,EAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACU,iBAAiB,EAAE,UAAU,EAC7C,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,0BAA0B,EAC1B,0BAA0B,EAC1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,eAAe,GAAG,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,CAAqB,CAAC;AAC7F,SAAS,aAAa,CAAC,IAAqB;IAC3C,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,GAAG,IAAI,0BAA0B,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAClF,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CAAC,MAAyB;IAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAgB,CAAC;IACzB,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,MAAyB;IACxD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,4BAA4B,CAAC,MAAc;IACnD,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,MAAM,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AACD,SAAS,kBAAkB,CAAC,IAAmB;IAC9C,MAAM,aAAa,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACjE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,gBAAgB,CAAC,WAAW,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,IAAI,iBAAiB,YAAY,gBAAgB;WAC7C,CAAC,eAAe,YAAY,gBAAgB,IAAI,eAAe,YAAY,UAAU,CAAC,EAAE,CAAC;QAC5F,IAAI,CAAC,UAAU,GAAG,IAAI,0BAA0B,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,0DAA0D,CAAC,CAAC;IACtG,CAAC;AAEF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,eAA+B;IAC/D,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,iBAAiB,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACtE,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACnC,MAAM,YAAY,GAAI,UAAiC,CAAC,QAAQ,EAAE,CAAC;YACnE,IAAI,YAAY,YAAY,UAAU,EAAE,CAAC;gBACxC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAY,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,+BAA+B,CAAC,IAAmB;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAClD,CAAC,CAAC,gBAAgB,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACtE,CAAC,CAAC,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,gBAAgB,CAAC,WAAW,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,IAAI,iBAAiB,YAAY,gBAAgB,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,0BAA0B,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,2CAA2C,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAsC;IACpE,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAoC;IACrE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC3D,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClD,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACpC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChD,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC7D,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACrC,iBAAiB;QACjB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;SAAM,IAAI,KAAK,YAAY,0BAA0B,EAAE,CAAC;QACxD,MAAM,WAAW,GAAqB,EAAE,CAAC;QACxC,KAA2C,CAAC,mBAAmB,GAAG,WAAW,CAAC;QAC/E,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,8DAA8D;YAC9D,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACnF,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtG,oCAAoC;YAEpC,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,qBAAqB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;oBAC1B,OAAO;gBACR,CAAC;gBACD,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;oBAClD,MAAM,SAAS,GAAG,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,EAAE,aAAa,IAAI,KAAK,CAAC;oBAC3F,MAAM,IAAI,GAAkB,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBACvE,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;aAAM,CAAC;YACP,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5C,CAAC;QACD,mBAAmB;QACnB,gEAAgE;QAChE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;SAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QAC7C,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAiC,EAAE,WAA6B;IAC/F,MAAM,4BAA4B,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpG,4BAA4B,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;QAC5C,KAAK,CAAC,UAAW,CAAC,MAAM,CAAC,KAAK,CAAC,UAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,OAAO,QAAQ,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrG,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAqB;IAChD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAa;IACjD,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;QACrC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACP,UAAU,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA+B;IAC/D,qBAAqB,CAAC,iBAAiB,CAAC,UAAiB,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC/C,qBAAqB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC","sourcesContent":["import {\n\tBaseNode, createLiveAttribute,\n\tDomStructuralDirectiveNode, DomElementNode, DomNode,\n\tDomFragmentNode, DomParentNode, ElementAttribute,\n\tisLiveTextContent, LiveAttribute, LiveTextContent,\n\tDomStructuralDirectiveNodeUpgrade, DomAttributeDirectiveNode\n} from '@ibyar/elements/node.js';\nimport {\n\tExpressionNode, expressionVisitor, Identifier,\n\tJavaScriptParser, MemberExpression, PipelineExpression\n} from '@ibyar/expressions';\nimport {\n\tOneWayAssignmentExpression,\n\tTwoWayAssignmentExpression\n} from '../binding/binding.expressions.js';\nimport { DirectiveExpressionParser } from '../directive/parser.js';\nimport { classRegistryProvider } from '../providers/provider.js';\n\nconst ThisTextContent = JavaScriptParser.parseScript('this.textContent') as MemberExpression;\nfunction parseLiveText(text: LiveTextContent) {\n\tconst textExpression = JavaScriptParser.parseScript(text.value);\n\ttext.expression = new OneWayAssignmentExpression(ThisTextContent, textExpression);\n\ttext.pipelineNames = getPipelineNames(textExpression);\n}\n\n/**\n * user-name ==> userName\n * \n * @param source \n * @returns \n */\nfunction convertToMemberAccessStyle(source: string | string[]): string {\n\tconst dashSplits = Array.isArray(source) ? source : source.split('-');\n\tif (dashSplits.length === 1) {\n\t\treturn source as string;\n\t}\n\treturn dashSplits[0] + dashSplits.splice(1).map(s => (s[0].toUpperCase() + s.substring(1))).join('');\n}\n\nfunction getAccessNotation(property: string) {\n\tif (property.includes('-')) {\n\t\treturn [`['`, property, `']`];\n\t} else if (Number.isInteger(property.at(0))) {\n\t\treturn ['[', property, ']'];\n\t}\n\treturn ['.', property];\n}\n\n/**\n * user.tel-number ==> user['tel-number']\n * \n * @param source \n * @returns \n */\nfunction escapeMemberExpression(source: string | string[]): string {\n\tconst dashSplits = Array.isArray(source) ? source : source.split('.');\n\treturn dashSplits.flatMap(property => getAccessNotation(property)).join('');\n}\n\n/**\n * warp js code with `()` if necessary\n * \n * `{name: 'alex'}` will be `({name: 'alex'})`\n * \n * @param params \n */\nfunction checkAndValidateObjectSyntax(source: string) {\n\tif (source.startsWith('{')) {\n\t\treturn `(${source})`;\n\t}\n\treturn source;\n}\nfunction parseLiveAttribute(attr: LiveAttribute) {\n\tconst elementSource = `this${escapeMemberExpression(attr.name)}`;\n\tconst elementExpression = JavaScriptParser.parseScript(elementSource);\n\tconst modelExpression = JavaScriptParser.parseScript(checkAndValidateObjectSyntax(attr.value));\n\tif (elementExpression instanceof MemberExpression\n\t\t&& (modelExpression instanceof MemberExpression || modelExpression instanceof Identifier)) {\n\t\tattr.expression = new TwoWayAssignmentExpression(elementExpression, modelExpression);\n\t} else {\n\t\tconsole.error(`${attr.name}=\"${attr.value}\"\" is not a valid MemberExpression or Identifier 'x.y.z'`);\n\t}\n\n}\n\nexport function getPipelineNames(modelExpression: ExpressionNode): string[] | undefined {\n\tconst pipelineNames: string[] = [];\n\texpressionVisitor.visit(modelExpression, (expression, type, control) => {\n\t\tif (type === 'PipelineExpression') {\n\t\t\tconst pipelineName = (expression as PipelineExpression).getRight();\n\t\t\tif (pipelineName instanceof Identifier) {\n\t\t\t\tpipelineNames.push(pipelineName.getName() as string);\n\t\t\t}\n\t\t}\n\t});\n\treturn pipelineNames.length ? pipelineNames : undefined;\n}\n\nfunction parseLiveAttributeUpdateElement(attr: LiveAttribute) {\n\tconst elementSource = attr.name.startsWith('data-')\n\t\t? `this.dataset.${convertToMemberAccessStyle(attr.name.substring(5))}`\n\t\t: `this${escapeMemberExpression(attr.name)}`;\n\tconst elementExpression = JavaScriptParser.parseScript(elementSource);\n\tconst modelExpression = JavaScriptParser.parseScript(checkAndValidateObjectSyntax(attr.value));\n\tif (elementExpression instanceof MemberExpression) {\n\t\tattr.expression = new OneWayAssignmentExpression(elementExpression, modelExpression);\n\t} else {\n\t\tconsole.error(`[${attr.name}] is not a valid MemberExpression 'x.y.z'`);\n\t}\n\tattr.pipelineNames = getPipelineNames(modelExpression);\n}\n\nfunction parseOutputExpression(attr: ElementAttribute<string, string>) {\n\tattr.expression = JavaScriptParser.parseScript(attr.value);\n}\n\nfunction parseAttributeDirectives(directive: DomAttributeDirectiveNode) {\n\tdirective.inputs?.forEach(parseLiveAttributeUpdateElement);\n\tdirective.outputs?.forEach(parseOutputExpression);\n\tdirective.twoWayBinding?.forEach(parseLiveAttribute);\n\tdirective.templateAttrs?.forEach(parseLiveAttributeUpdateElement);\n}\n\nfunction parseBaseNode(base: BaseNode) {\n\tbase.inputs?.forEach(parseLiveAttributeUpdateElement);\n\tbase.outputs?.forEach(parseOutputExpression);\n\tbase.twoWayBinding?.forEach(parseLiveAttribute);\n\tbase.templateAttrs?.forEach(parseLiveAttributeUpdateElement);\n\tbase.attributeDirectives?.forEach(parseAttributeDirectives);\n}\n\nfunction parseChild(child: DomNode) {\n\tif (child instanceof DomElementNode) {\n\t\t// DomElementNode\n\t\tparseBaseNode(child);\n\t\tparseDomParentNode(child);\n\t} else if (child instanceof DomStructuralDirectiveNode) {\n\t\tconst expressions: ExpressionNode[] = [];\n\t\t(child as DomStructuralDirectiveNodeUpgrade).templateExpressions = expressions;\n\t\tif (child.value) {\n\t\t\t// use shorthand syntax, possible mixed with input and outputs\n\t\t\tconst info = DirectiveExpressionParser.parse(child.name.substring(1), child.value);\n\t\t\texpressions.push(...info.templateExpressions.map(template => JavaScriptParser.parseScript(template)));\n\t\t\t// <div let-i=\"index\">{{item}}</div>\n\n\t\t\tsearchForLetAttributes(child, expressions);\n\n\t\t\tif (info.directiveInputs.size > 0) {\n\t\t\t\tconst ref = classRegistryProvider.getDirectiveRef(child.name);\n\t\t\t\tif (!ref?.inputs?.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tchild.inputs ??= [];\n\t\t\t\tinfo.directiveInputs.forEach((expression, input) => {\n\t\t\t\t\tconst modelName = ref?.inputs.find(i => i.viewAttribute === input)?.modelProperty ?? input;\n\t\t\t\t\tconst attr: LiveAttribute = createLiveAttribute(modelName, expression);\n\t\t\t\t\t(child.inputs ??= []).push(attr);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tsearchForLetAttributes(child, expressions);\n\t\t}\n\t\t// DomDirectiveNode\n\t\t// in case if add input/output support need to handle that here.\n\t\tparseChild(child.node);\n\t\tparseBaseNode(child);\n\t\tif (child.successor) {\n\t\t\tparseChild(child.successor);\n\t\t}\n\t} else if (isLiveTextContent(child)) {\n\t\tparseLiveText(child);\n\t} else if (child instanceof DomFragmentNode) {\n\t\tparseDomParentNode(child);\n\t}\n}\n\nfunction searchForLetAttributes(child: DomStructuralDirectiveNode, expressions: ExpressionNode[]) {\n\tconst templateExpressionsFromInput = child.attributes?.filter(attr => attr.name.startsWith('let-'));\n\ttemplateExpressionsFromInput?.forEach(attr => {\n\t\tchild.attributes!.splice(child.attributes!.indexOf(attr), 1);\n\t\tconst attrName = convertToMemberAccessStyle(attr.name.split('-').slice(1));\n\t\tconst expression = `let ${attrName} = ${(typeof attr.value == 'string') ? attr.value : '$implicit'}`;\n\t\texpressions.push(JavaScriptParser.parseScript(expression));\n\t});\n}\n\nfunction parseDomParentNode(parent: DomParentNode) {\n\tparent.children?.forEach(parseChild);\n}\n\nexport function buildExpressionNodes(node: DomNode) {\n\tif (node instanceof DomFragmentNode) {\n\t\tparseDomParentNode(node);\n\t} else {\n\t\tparseChild(node);\n\t}\n}\n\n/**\n * function to skip node checking\n * @param modelClass \n */\nexport function provideDirective(modelClass: Record<string, any>) {\n\tclassRegistryProvider.registerDirective(modelClass as any);\n}\n\nexport function deleteDirective(selector: string) {\n\tclassRegistryProvider.deleteDirective(selector);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibyar/core",
3
- "version": "2.2.1",
3
+ "version": "2.3.0",
4
4
  "description": "Ibyar core, Implements Aurora's core functionality, low-level services, and utilities",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ibyar/aurora/tree/dev/packages/core",
@@ -35,9 +35,9 @@
35
35
  "access": "public"
36
36
  },
37
37
  "dependencies": {
38
- "@ibyar/decorators": "^2.2.1",
39
- "@ibyar/elements": "^2.2.1",
40
- "@ibyar/expressions": "^2.2.1",
38
+ "@ibyar/decorators": "^2.3.0",
39
+ "@ibyar/elements": "^2.3.0",
40
+ "@ibyar/expressions": "^2.3.0",
41
41
  "tslib": "^2.6.3"
42
42
  },
43
43
  "peerDependencies": {
@@ -78,5 +78,5 @@
78
78
  "typescript",
79
79
  "front-end"
80
80
  ],
81
- "gitHead": "6c3b1c8d19faf00022c58ba2b893f4bb56147600"
81
+ "gitHead": "5bf90bcb6f9139753886e2e38272399af4c7153b"
82
82
  }
@@ -1,5 +1,5 @@
1
1
  import type { MetadataClass } from '@ibyar/decorators';
2
- import type { ComponentRef, DirectiveRef, PipeRef, ServiceRef } from '../component/component.js';
2
+ import type { ComponentRef, DirectiveRef, PipeRef } from '../component/component.js';
3
3
  import { type PropertyRef } from '../component/reflect.js';
4
4
  export type ProviderType = 'component' | 'service' | 'directive' | 'pipe' | 'self';
5
5
  export declare class ClassRegistry {
@@ -20,10 +20,14 @@ export declare class ClassRegistry {
20
20
  hasOutput<T>(model: Object, eventName: string): PropertyRef | false;
21
21
  hasInput<T>(model: Object, eventName: string): PropertyRef | false;
22
22
  hasDirective<T>(selector: string): boolean;
23
+ hasInjectable<T>(name: string): boolean;
23
24
  directiveHasInput<T>(input: string, directiveType?: 'attributes' | 'structural'): boolean;
24
25
  getDirectiveRef<T>(selector: string): DirectiveRef<T> | undefined;
25
26
  getPipe<T>(pipeName: string): PipeRef<T> | undefined;
26
- getService<T>(serviceName: string): ServiceRef<T> | undefined;
27
+ deleteComponent<T>(selector: string): void;
28
+ deleteDirective<T>(selector: string): void;
29
+ deleteInjectable<T>(name: string): void;
30
+ deletePipe<T>(name: string): void;
27
31
  }
28
32
  export declare const classRegistryProvider: ClassRegistry;
29
33
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/core/providers/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACX,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAC/C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC9E,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnF,qBAAa,aAAa;IACzB,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IACxC,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IAC7C,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IAC9C,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IAC7C,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IAExC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAG3C,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAGhD,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAGjD,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAGhD,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI3C,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAS1C,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAUjE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM;IAUhC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAIjC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK;IAanE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK;IAclE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAU1C,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,GAAE,YAAY,GAAG,YAA2B,GAAG,OAAO;IAavG,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAWjE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS;IAUpD,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS;CAS7D;AAED,eAAO,MAAM,qBAAqB,eAAsB,CAAC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/core/providers/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACX,YAAY,EAAE,YAAY,EAAE,OAAO,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC9E,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnF,qBAAa,aAAa;IACzB,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IACxC,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IAC7C,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IAC9C,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IAC7C,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAa;IAExC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAG3C,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAGhD,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAGjD,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAGhD,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI3C,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAU1C,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAUjE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM;IAUhC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAIjC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK;IAcnE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK;IAclE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAU1C,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAUvC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,GAAE,YAAY,GAAG,YAA2B,GAAG,OAAO;IAavG,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAWjE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS;IAUpD,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM;IAUnC,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAU1C,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM;IAUhC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM;CAU1B;AAED,eAAO,MAAM,qBAAqB,eAAsB,CAAC"}
@@ -85,6 +85,15 @@ export class ClassRegistry {
85
85
  }
86
86
  return false;
87
87
  }
88
+ hasInjectable(name) {
89
+ for (const modelClass of this.injectableSet) {
90
+ const componentRef = ReflectComponents.getMetaDate(modelClass);
91
+ if (componentRef.name === name) {
92
+ return true;
93
+ }
94
+ }
95
+ return false;
96
+ }
88
97
  directiveHasInput(input, directiveType = 'attributes') {
89
98
  for (const directiveClass of this.directiveSet) {
90
99
  const directiveRef = ReflectComponents.getMetaDate(directiveClass);
@@ -115,14 +124,41 @@ export class ClassRegistry {
115
124
  }
116
125
  return undefined;
117
126
  }
118
- getService(serviceName) {
119
- for (const serviceClass of this.injectableSet) {
120
- const serviceRef = ReflectComponents.getMetaDate(serviceClass);
121
- if (serviceRef.name === serviceName) {
122
- return serviceRef;
127
+ deleteComponent(selector) {
128
+ for (const modelClass of this.componentSet) {
129
+ const componentRef = ReflectComponents.getMetaDate(modelClass);
130
+ if (componentRef?.selector === selector) {
131
+ this.componentSet.delete(modelClass);
132
+ break;
133
+ }
134
+ }
135
+ }
136
+ deleteDirective(selector) {
137
+ for (const modelClass of this.directiveSet) {
138
+ const directiveRef = ReflectComponents.getMetaDate(modelClass);
139
+ if (directiveRef?.selector === selector) {
140
+ this.injectableSet.delete(modelClass);
141
+ break;
142
+ }
143
+ }
144
+ }
145
+ deleteInjectable(name) {
146
+ for (const modelClass of this.injectableSet) {
147
+ const componentRef = ReflectComponents.getMetaDate(modelClass);
148
+ if (componentRef.name === name) {
149
+ this.injectableSet.delete(modelClass);
150
+ break;
151
+ }
152
+ }
153
+ }
154
+ deletePipe(name) {
155
+ for (const modelClass of this.pipeSet) {
156
+ const pipeRef = ReflectComponents.getMetaDate(modelClass);
157
+ if (pipeRef.name === name) {
158
+ this.pipeSet.delete(modelClass);
159
+ break;
123
160
  }
124
161
  }
125
- return undefined;
126
162
  }
127
163
  }
128
164
  export const classRegistryProvider = new ClassRegistry();
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/core/providers/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MetadataClass } from '@ibyar/decorators';\nimport type {\n\tComponentRef, DirectiveRef, PipeRef, ServiceRef\n} from '../component/component.js';\nimport { ReflectComponents, type PropertyRef } from '../component/reflect.js';\nexport type ProviderType = 'component' | 'service' | 'directive' | 'pipe' | 'self';\n\nexport class ClassRegistry {\n\tviewSet: Set<MetadataClass> = new Set();\n\tcomponentSet: Set<MetadataClass> = new Set();\n\tinjectableSet: Set<MetadataClass> = new Set();\n\tdirectiveSet: Set<MetadataClass> = new Set();\n\tpipeSet: Set<MetadataClass> = new Set();\n\n\tregisterView(classRef: MetadataClass): void {\n\t\tthis.viewSet.add(classRef);\n\t}\n\tregisterComponent(classRef: MetadataClass): void {\n\t\tthis.componentSet.add(classRef);\n\t}\n\tregisterInjectable(classRef: MetadataClass): void {\n\t\tthis.injectableSet.add(classRef);\n\t}\n\tregisterDirective(classRef: MetadataClass): void {\n\t\tthis.directiveSet.add(classRef);\n\t}\n\tregisterPipe(classRef: MetadataClass): void {\n\t\tthis.pipeSet.add(classRef);\n\t}\n\n\thasComponent<T>(selector: string): boolean {\n\t\tfor (const modelClass of this.componentSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as ComponentRef<T>;\n\t\t\tif (componentRef.selector === selector) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tgetComponentRef<T>(selector: string): ComponentRef<T> | undefined {\n\t\tfor (const modelClass of this.componentSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as ComponentRef<T>;\n\t\t\tif (componentRef.selector === selector) {\n\t\t\t\treturn componentRef;\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tgetComponent<T>(selector: string) {\n\t\tfor (const modelClass of this.componentSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as ComponentRef<T>;\n\t\t\tif (componentRef.selector === selector) {\n\t\t\t\treturn modelClass;\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tgetComponentView(selector: string) {\n\t\treturn this.getComponentRef(selector)?.viewClass;\n\t}\n\n\thasOutput<T>(model: Object, eventName: string): PropertyRef | false {\n\t\tif (Reflect.has(model, 'bootstrap')) {\n\t\t\tconst componentRef: ComponentRef<T> = Reflect.get(model, 'bootstrap');\n\t\t\tif (componentRef.outputs) {\n\t\t\t\tfor (const out of componentRef.outputs) {\n\t\t\t\t\tif (out.viewAttribute === eventName) {\n\t\t\t\t\t\treturn out;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\thasInput<T>(model: Object, eventName: string): PropertyRef | false {\n\t\tif (Reflect.has(model, 'bootstrap')) {\n\t\t\tconst componentRef: ComponentRef<T> = Reflect.get(model, 'bootstrap');\n\t\t\tif (componentRef.inputs) {\n\t\t\t\tfor (const input of componentRef.inputs) {\n\t\t\t\t\tif (input.viewAttribute === eventName) {\n\t\t\t\t\t\treturn input;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\thasDirective<T>(selector: string): boolean {\n\t\tfor (const directiveClass of this.directiveSet) {\n\t\t\tconst directiveRef = ReflectComponents.getMetaDate(directiveClass) as DirectiveRef<T>;\n\t\t\tif (directiveRef.selector === selector) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tdirectiveHasInput<T>(input: string, directiveType: 'attributes' | 'structural' = 'attributes'): boolean {\n\t\tfor (const directiveClass of this.directiveSet) {\n\t\t\tconst directiveRef = ReflectComponents.getMetaDate(directiveClass) as DirectiveRef<T>;\n\t\t\tif ((directiveType === 'attributes' && !directiveRef.selector.startsWith('*'))\n\t\t\t\t|| (directiveType === 'structural' && directiveRef.selector.startsWith('*'))) {\n\t\t\t\tif (directiveRef.inputs?.filter(ref => ref.viewAttribute === input).length > 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetDirectiveRef<T>(selector: string): DirectiveRef<T> | undefined {\n\t\tfor (const directiveClass of this.directiveSet) {\n\t\t\tconst directiveRef = ReflectComponents.getMetaDate(directiveClass) as DirectiveRef<T>;\n\t\t\tif (directiveRef?.selector === selector) {\n\t\t\t\treturn directiveRef;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\n\tgetPipe<T>(pipeName: string): PipeRef<T> | undefined {\n\t\tfor (const pipeClass of this.pipeSet) {\n\t\t\tconst pipeRef = ReflectComponents.getMetaDate(pipeClass) as PipeRef<T>;\n\t\t\tif (pipeRef.name === pipeName) {\n\t\t\t\treturn pipeRef;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tgetService<T>(serviceName: string): ServiceRef<T> | undefined {\n\t\tfor (const serviceClass of this.injectableSet) {\n\t\t\tconst serviceRef = ReflectComponents.getMetaDate(serviceClass) as ServiceRef<T>;\n\t\t\tif (serviceRef.name === serviceName) {\n\t\t\t\treturn serviceRef;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport const classRegistryProvider = new ClassRegistry();\n"]}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/core/providers/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MetadataClass } from '@ibyar/decorators';\nimport type {\n\tComponentRef, DirectiveRef, PipeRef, InjectableRef\n} from '../component/component.js';\nimport { ReflectComponents, type PropertyRef } from '../component/reflect.js';\nexport type ProviderType = 'component' | 'service' | 'directive' | 'pipe' | 'self';\n\nexport class ClassRegistry {\n\tviewSet: Set<MetadataClass> = new Set();\n\tcomponentSet: Set<MetadataClass> = new Set();\n\tinjectableSet: Set<MetadataClass> = new Set();\n\tdirectiveSet: Set<MetadataClass> = new Set();\n\tpipeSet: Set<MetadataClass> = new Set();\n\n\tregisterView(classRef: MetadataClass): void {\n\t\tthis.viewSet.add(classRef);\n\t}\n\tregisterComponent(classRef: MetadataClass): void {\n\t\tthis.componentSet.add(classRef);\n\t}\n\tregisterInjectable(classRef: MetadataClass): void {\n\t\tthis.injectableSet.add(classRef);\n\t}\n\tregisterDirective(classRef: MetadataClass): void {\n\t\tthis.directiveSet.add(classRef);\n\t}\n\tregisterPipe(classRef: MetadataClass): void {\n\t\tthis.pipeSet.add(classRef);\n\t}\n\n\thasComponent<T>(selector: string): boolean {\n\t\tfor (const modelClass of this.componentSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as ComponentRef<T>;\n\t\t\tif (componentRef.selector === selector) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetComponentRef<T>(selector: string): ComponentRef<T> | undefined {\n\t\tfor (const modelClass of this.componentSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as ComponentRef<T>;\n\t\t\tif (componentRef.selector === selector) {\n\t\t\t\treturn componentRef;\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tgetComponent<T>(selector: string) {\n\t\tfor (const modelClass of this.componentSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as ComponentRef<T>;\n\t\t\tif (componentRef.selector === selector) {\n\t\t\t\treturn modelClass;\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tgetComponentView(selector: string) {\n\t\treturn this.getComponentRef(selector)?.viewClass;\n\t}\n\n\thasOutput<T>(model: Object, eventName: string): PropertyRef | false {\n\t\tif (Reflect.has(model, 'bootstrap')) {\n\t\t\tconst componentRef: ComponentRef<T> = Reflect.get(model, 'bootstrap');\n\t\t\tif (componentRef.outputs) {\n\t\t\t\tfor (const out of componentRef.outputs) {\n\t\t\t\t\tif (out.viewAttribute === eventName) {\n\t\t\t\t\t\treturn out;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\thasInput<T>(model: Object, eventName: string): PropertyRef | false {\n\t\tif (Reflect.has(model, 'bootstrap')) {\n\t\t\tconst componentRef: ComponentRef<T> = Reflect.get(model, 'bootstrap');\n\t\t\tif (componentRef.inputs) {\n\t\t\t\tfor (const input of componentRef.inputs) {\n\t\t\t\t\tif (input.viewAttribute === eventName) {\n\t\t\t\t\t\treturn input;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\thasDirective<T>(selector: string): boolean {\n\t\tfor (const directiveClass of this.directiveSet) {\n\t\t\tconst directiveRef = ReflectComponents.getMetaDate(directiveClass) as DirectiveRef<T>;\n\t\t\tif (directiveRef.selector === selector) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\thasInjectable<T>(name: string): boolean {\n\t\tfor (const modelClass of this.injectableSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as InjectableRef<T>;\n\t\t\tif (componentRef.name === name) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tdirectiveHasInput<T>(input: string, directiveType: 'attributes' | 'structural' = 'attributes'): boolean {\n\t\tfor (const directiveClass of this.directiveSet) {\n\t\t\tconst directiveRef = ReflectComponents.getMetaDate(directiveClass) as DirectiveRef<T>;\n\t\t\tif ((directiveType === 'attributes' && !directiveRef.selector.startsWith('*'))\n\t\t\t\t|| (directiveType === 'structural' && directiveRef.selector.startsWith('*'))) {\n\t\t\t\tif (directiveRef.inputs?.filter(ref => ref.viewAttribute === input).length > 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetDirectiveRef<T>(selector: string): DirectiveRef<T> | undefined {\n\t\tfor (const directiveClass of this.directiveSet) {\n\t\t\tconst directiveRef = ReflectComponents.getMetaDate(directiveClass) as DirectiveRef<T>;\n\t\t\tif (directiveRef?.selector === selector) {\n\t\t\t\treturn directiveRef;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\n\tgetPipe<T>(pipeName: string): PipeRef<T> | undefined {\n\t\tfor (const pipeClass of this.pipeSet) {\n\t\t\tconst pipeRef = ReflectComponents.getMetaDate(pipeClass) as PipeRef<T>;\n\t\t\tif (pipeRef.name === pipeName) {\n\t\t\t\treturn pipeRef;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tdeleteComponent<T>(selector: string) {\n\t\tfor (const modelClass of this.componentSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as ComponentRef<T>;\n\t\t\tif (componentRef?.selector === selector) {\n\t\t\t\tthis.componentSet.delete(modelClass);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tdeleteDirective<T>(selector: string): void {\n\t\tfor (const modelClass of this.directiveSet) {\n\t\t\tconst directiveRef = ReflectComponents.getMetaDate(modelClass) as DirectiveRef<T>;\n\t\t\tif (directiveRef?.selector === selector) {\n\t\t\t\tthis.injectableSet.delete(modelClass);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tdeleteInjectable<T>(name: string) {\n\t\tfor (const modelClass of this.injectableSet) {\n\t\t\tconst componentRef = ReflectComponents.getMetaDate(modelClass) as InjectableRef<T>;\n\t\t\tif (componentRef.name === name) {\n\t\t\t\tthis.injectableSet.delete(modelClass);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tdeletePipe<T>(name: string) {\n\t\tfor (const modelClass of this.pipeSet) {\n\t\t\tconst pipeRef = ReflectComponents.getMetaDate(modelClass) as PipeRef<T>;\n\t\t\tif (pipeRef.name === name) {\n\t\t\t\tthis.pipeSet.delete(modelClass);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nexport const classRegistryProvider = new ClassRegistry();\n"]}
package/di/token.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export declare class InjectionToken<T> {
2
- private token;
3
- constructor(token: string);
4
- toString(): string;
5
- }
6
- export declare const LOCALE_ID: InjectionToken<string>;
7
- //# sourceMappingURL=token.d.ts.map
package/di/token.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/core/di/token.ts"],"names":[],"mappings":"AACA,qBAAa,cAAc,CAAC,CAAC;IAChB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IACjC,QAAQ,IAAI,MAAM;CAGlB;AAED,eAAO,MAAM,SAAS,wBAA0C,CAAC"}
package/di/token.js DELETED
@@ -1,11 +0,0 @@
1
- export class InjectionToken {
2
- token;
3
- constructor(token) {
4
- this.token = token;
5
- }
6
- toString() {
7
- return this.token;
8
- }
9
- }
10
- export const LOCALE_ID = new InjectionToken('LOCALE_ID');
11
- //# sourceMappingURL=token.js.map
package/di/token.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/core/di/token.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,cAAc;IACN;IAApB,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAI,CAAC;IACtC,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;CACD;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,cAAc,CAAS,WAAW,CAAC,CAAC","sourcesContent":["\nexport class InjectionToken<T> {\n\tconstructor(private token: string) { }\n\ttoString(): string {\n\t\treturn this.token;\n\t}\n}\n\nexport const LOCALE_ID = new InjectionToken<string>('LOCALE_ID');\n"]}
package/di/types.d.ts DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.d.ts.map
package/di/types.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/di/types.ts"],"names":[],"mappings":""}
package/di/types.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=types.js.map
package/di/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/di/types.ts"],"names":[],"mappings":"","sourcesContent":[""]}
package/html/binding.d.ts DELETED
@@ -1,16 +0,0 @@
1
- import { DomElementNode } from '@ibyar/elements/node';
2
- import { HostBindingRef, ListenerRef } from '../component/reflect.js';
3
- export type ViewBindingOption = {
4
- prototype: Record<PropertyKey, any>;
5
- hostBindings?: HostBindingRef[];
6
- hostListeners?: ListenerRef[];
7
- selector?: string;
8
- };
9
- export type HostNode = {
10
- host?: DomElementNode;
11
- window?: DomElementNode;
12
- template?: DomElementNode[];
13
- };
14
- export declare function createOutputs(Listeners?: ListenerRef[]): string;
15
- export declare function parseHostNode(option: ViewBindingOption): HostNode;
16
- //# sourceMappingURL=binding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../../src/core/html/binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA+B,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtE,MAAM,MAAM,iBAAiB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,UAItD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,QAAQ,CAsDjE"}
package/html/binding.js DELETED
@@ -1,58 +0,0 @@
1
- import { DomElementNode, DomFragmentNode, htmlParser } from '@ibyar/elements/node';
2
- import { ListenerRef } from '../component/reflect.js';
3
- import { buildExpressionNodes } from './expression.js';
4
- export function createOutputs(Listeners) {
5
- return Listeners?.map(listener => `(${listener.eventName})="${listener.modelCallbackName}(${listener.args.join(', ')})"`).join(' ') ?? '';
6
- }
7
- export function parseHostNode(option) {
8
- const inputs = option.hostBindings?.map(binding => {
9
- const descriptor = Object.getOwnPropertyDescriptor(option.prototype, binding.modelPropertyName);
10
- if (typeof descriptor?.value === 'function') {
11
- return `[${binding.hostPropertyName}]="${binding.modelPropertyName}()"`;
12
- }
13
- return `[${binding.hostPropertyName}]="${binding.modelPropertyName}"`;
14
- }).join(' ') ?? '';
15
- const hostListeners = [];
16
- const windowListeners = [];
17
- const templateListeners = {};
18
- option.hostListeners?.forEach(listener => {
19
- const [host, event] = listener.eventName.split(':', 2);
20
- if (event === undefined) {
21
- hostListeners.push(listener);
22
- }
23
- else if ('window' === host.toLowerCase()) {
24
- windowListeners.push(new ListenerRef(event, listener.args, listener.modelCallbackName));
25
- }
26
- else {
27
- (templateListeners[host] ??= []).push(new ListenerRef(event, listener.args, listener.modelCallbackName));
28
- }
29
- });
30
- const result = {};
31
- if (hostListeners.length) {
32
- const hostOutputs = createOutputs(hostListeners);
33
- const selector = option.selector ?? 'div';
34
- const hostTemplate = `<${selector} ${inputs} ${hostOutputs}></${selector}>`;
35
- result.host = htmlParser.toDomRootNode(hostTemplate);
36
- buildExpressionNodes(result.host);
37
- }
38
- if (windowListeners.length) {
39
- const windowOutputs = createOutputs(windowListeners);
40
- const windowTemplate = `<window ${windowOutputs}></window>`;
41
- result.window = htmlParser.toDomRootNode(windowTemplate);
42
- buildExpressionNodes(result.window);
43
- }
44
- const templateHosts = Object.keys(templateListeners);
45
- if (templateHosts.length) {
46
- const template = templateHosts.map(host => {
47
- const hostOutputs = createOutputs(templateListeners[host]);
48
- return `<template #${host} ${hostOutputs}></template>`;
49
- }).join('');
50
- const templateNodes = htmlParser.toDomRootNode(template);
51
- buildExpressionNodes(templateNodes);
52
- result.template = templateNodes instanceof DomFragmentNode
53
- ? templateNodes.children?.filter(child => child instanceof DomElementNode) ?? []
54
- : [templateNodes];
55
- }
56
- return result;
57
- }
58
- //# sourceMappingURL=binding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binding.js","sourceRoot":"","sources":["../../../src/core/html/binding.ts"],"names":[],"mappings":"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","sourcesContent":["import { DomElementNode, DomFragmentNode, htmlParser } from '@ibyar/elements/node';\nimport { HostBindingRef, ListenerRef } from '../component/reflect.js';\nimport { buildExpressionNodes } from './expression.js';\n\nexport type ViewBindingOption = {\n\tprototype: Record<PropertyKey, any>;\n\thostBindings?: HostBindingRef[];\n\thostListeners?: ListenerRef[];\n\tselector?: string;\n};\n\nexport type HostNode = {\n\thost?: DomElementNode;\n\twindow?: DomElementNode;\n\ttemplate?: DomElementNode[];\n};\n\nexport function createOutputs(Listeners?: ListenerRef[]) {\n\treturn Listeners?.map(\n\t\tlistener => `(${listener.eventName})=\"${listener.modelCallbackName}(${listener.args.join(', ')})\"`\n\t).join(' ') ?? ''\n}\n\nexport function parseHostNode(option: ViewBindingOption): HostNode {\n\tconst inputs = option.hostBindings?.map(binding => {\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(option.prototype, binding.modelPropertyName);\n\t\tif (typeof descriptor?.value === 'function') {\n\t\t\treturn `[${binding.hostPropertyName}]=\"${binding.modelPropertyName}()\"`\n\t\t}\n\t\treturn `[${binding.hostPropertyName}]=\"${binding.modelPropertyName}\"`;\n\t}).join(' ') ?? '';\n\n\tconst hostListeners: ListenerRef[] = [];\n\tconst windowListeners: ListenerRef[] = [];\n\tconst templateListeners: Record<string, ListenerRef[]> = {};\n\n\toption.hostListeners?.forEach(listener => {\n\t\tconst [host, event] = listener.eventName.split(':', 2);\n\t\tif (event === undefined) {\n\t\t\thostListeners.push(listener);\n\t\t} else if ('window' === host.toLowerCase()) {\n\t\t\twindowListeners.push(new ListenerRef(event, listener.args, listener.modelCallbackName));\n\t\t} else {\n\t\t\t(templateListeners[host] ??= []).push(new ListenerRef(event, listener.args, listener.modelCallbackName));\n\t\t}\n\t});\n\n\tconst result: HostNode = {};\n\n\tif (hostListeners.length) {\n\t\tconst hostOutputs = createOutputs(hostListeners);\n\t\tconst selector = option.selector ?? 'div';\n\t\tconst hostTemplate = `<${selector} ${inputs} ${hostOutputs}></${selector}>`;\n\t\tresult.host = htmlParser.toDomRootNode(hostTemplate) as DomElementNode;\n\t\tbuildExpressionNodes(result.host);\n\t}\n\n\tif (windowListeners.length) {\n\t\tconst windowOutputs = createOutputs(windowListeners);\n\t\tconst windowTemplate = `<window ${windowOutputs}></window>`;\n\t\tresult.window = htmlParser.toDomRootNode(windowTemplate) as DomElementNode;\n\t\tbuildExpressionNodes(result.window);\n\t}\n\n\tconst templateHosts = Object.keys(templateListeners);\n\tif (templateHosts.length) {\n\t\tconst template = templateHosts.map(host => {\n\t\t\tconst hostOutputs = createOutputs(templateListeners[host]);\n\t\t\treturn `<template #${host} ${hostOutputs}></template>`;\n\t\t}).join('');\n\t\tconst templateNodes = htmlParser.toDomRootNode(template) as DomElementNode | DomFragmentNode;\n\t\tbuildExpressionNodes(templateNodes);\n\t\tresult.template = templateNodes instanceof DomFragmentNode\n\t\t\t? templateNodes.children?.filter(child => child instanceof DomElementNode) as DomElementNode[] ?? []\n\t\t\t: [templateNodes];\n\t}\n\treturn result;\n}\n"]}
package/scope/scope.d.ts DELETED
@@ -1,29 +0,0 @@
1
- import { ReactiveScope } from '@ibyar/expressions';
2
- export declare class VariableScope extends ReactiveScope<Array<any>> {
3
- private state;
4
- constructor();
5
- createVariable<T>(initValue: T): WritableVariable<T>;
6
- createLazyComputed<T>(computation: () => T): LazyVariable<T>;
7
- createComputed<T>(computation: () => T): Variable<T>;
8
- watchState(): void;
9
- observeIndex(index: number): void;
10
- observeState(index: number, computation: () => any): void;
11
- restoreState(): void;
12
- }
13
- export declare class Variable<T> {
14
- protected scope: VariableScope;
15
- protected index: number;
16
- constructor(scope: VariableScope, index: number, initValue: T);
17
- get(): T;
18
- }
19
- export declare class LazyVariable<T> extends Variable<T> {
20
- protected computation: () => T;
21
- constructor(scope: VariableScope, index: number, computation: () => T);
22
- get(): T;
23
- }
24
- export declare class WritableVariable<T> extends Variable<T> {
25
- constructor(scope: VariableScope, index: number, initValue: T);
26
- set(value: T): void;
27
- update(mutFn: (value: T) => T): void;
28
- }
29
- //# sourceMappingURL=scope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/core/scope/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD,qBAAa,aAAc,SAAQ,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3D,OAAO,CAAC,KAAK,CAAkB;;IAM/B,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAIpD,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAI5D,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAUpD,UAAU;IAIV,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG;IAOlD,YAAY;CAIZ;AAED,qBAAa,QAAQ,CAAC,CAAC;IAEV,SAAS,CAAC,KAAK,EAAE,aAAa;IAAE,SAAS,CAAC,KAAK,EAAE,MAAM;gBAA7C,KAAK,EAAE,aAAa,EAAY,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAIjF,GAAG,IAAI,CAAC;CAKR;AAED,qBAAa,YAAY,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAEE,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;gBAAnE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAY,WAAW,EAAE,MAAM,CAAC;IAItE,GAAG,IAAI,CAAC;CAMjB;AAED,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;gBAEvC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAI7D,GAAG,CAAC,KAAK,EAAE,CAAC;IAIZ,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI;CAIpC"}
package/scope/scope.js DELETED
@@ -1,82 +0,0 @@
1
- import { ReactiveScope } from '@ibyar/expressions';
2
- function compute(computation) {
3
- try {
4
- return computation();
5
- }
6
- catch (error) {
7
- return error;
8
- }
9
- }
10
- export class VariableScope extends ReactiveScope {
11
- state = [];
12
- constructor() {
13
- super([]);
14
- }
15
- createVariable(initValue) {
16
- return new WritableVariable(this, this.getContext().length, initValue);
17
- }
18
- createLazyComputed(computation) {
19
- return new LazyVariable(this, this.getContext().length, computation);
20
- }
21
- createComputed(computation) {
22
- const index = this.getContext().length;
23
- this.watchState();
24
- const value = compute(computation);
25
- const variable = new Variable(this, index, value);
26
- this.observeState(index, computation);
27
- this.restoreState();
28
- return variable;
29
- }
30
- watchState() {
31
- this.state.push([]);
32
- }
33
- observeIndex(index) {
34
- this.state.at(-1)?.push(index);
35
- }
36
- observeState(index, computation) {
37
- this.unsubscribe(index);
38
- const update = () => this.set(index, compute(computation));
39
- const dependencies = this.state.at(-1);
40
- dependencies?.forEach(i => this.subscribe(i, update));
41
- }
42
- restoreState() {
43
- this.state.pop();
44
- }
45
- }
46
- export class Variable {
47
- scope;
48
- index;
49
- constructor(scope, index, initValue) {
50
- this.scope = scope;
51
- this.index = index;
52
- this.scope.set(index, initValue);
53
- }
54
- get() {
55
- this.scope.observeIndex(this.index);
56
- return this.scope.get(this.index);
57
- }
58
- }
59
- export class LazyVariable extends Variable {
60
- computation;
61
- constructor(scope, index, computation) {
62
- super(scope, index, compute(computation));
63
- this.computation = computation;
64
- }
65
- get() {
66
- const value = compute(this.computation);
67
- this.scope.set(this.index, value);
68
- return super.get();
69
- }
70
- }
71
- export class WritableVariable extends Variable {
72
- constructor(scope, index, initValue) {
73
- super(scope, index, initValue);
74
- }
75
- set(value) {
76
- this.scope.set(this.index, value);
77
- }
78
- update(mutFn) {
79
- this.set(mutFn(this.get()));
80
- }
81
- }
82
- //# sourceMappingURL=scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/core/scope/scope.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactiveScope } from '@ibyar/expressions';\n\nfunction compute<T>(computation: () => T): T | unknown {\n\ttry {\n\t\treturn computation();\n\t} catch (error) {\n\t\treturn error;\n\t}\n}\n\nexport class VariableScope extends ReactiveScope<Array<any>> {\n\n\tprivate state: number[][] = [];\n\n\tconstructor() {\n\t\tsuper([]);\n\t}\n\n\tcreateVariable<T>(initValue: T): WritableVariable<T> {\n\t\treturn new WritableVariable<T>(this, this.getContext().length, initValue);\n\t}\n\n\tcreateLazyComputed<T>(computation: () => T): LazyVariable<T> {\n\t\treturn new LazyVariable<T>(this, this.getContext().length, computation);\n\t}\n\n\tcreateComputed<T>(computation: () => T): Variable<T> {\n\t\tconst index = this.getContext().length;\n\t\tthis.watchState();\n\t\tconst value = compute(computation);\n\t\tconst variable = new Variable<T>(this, index, value as T);\n\t\tthis.observeState(index, computation);\n\t\tthis.restoreState();\n\t\treturn variable;\n\t}\n\n\twatchState() {\n\t\tthis.state.push([]);\n\t}\n\n\tobserveIndex(index: number) {\n\t\tthis.state.at(-1)?.push(index);\n\t}\n\n\tobserveState(index: number, computation: () => any) {\n\t\tthis.unsubscribe(index);\n\t\tconst update = () => this.set(index, compute(computation));\n\t\tconst dependencies = this.state.at(-1);\n\t\tdependencies?.forEach(i => this.subscribe(i, update));\n\t}\n\n\trestoreState() {\n\t\tthis.state.pop();\n\t}\n\n}\n\nexport class Variable<T> {\n\n\tconstructor(protected scope: VariableScope, protected index: number, initValue: T) {\n\t\tthis.scope.set(index, initValue);\n\t}\n\n\tget(): T {\n\t\tthis.scope.observeIndex(this.index);\n\t\treturn this.scope.get(this.index);\n\t}\n\n}\n\nexport class LazyVariable<T> extends Variable<T> {\n\n\tconstructor(scope: VariableScope, index: number, protected computation: () => T) {\n\t\tsuper(scope, index, compute(computation) as T);\n\t}\n\n\toverride get(): T {\n\t\tconst value = compute(this.computation);\n\t\tthis.scope.set(this.index, value);\n\t\treturn super.get();\n\t}\n\n}\n\nexport class WritableVariable<T> extends Variable<T>{\n\n\tconstructor(scope: VariableScope, index: number, initValue: T) {\n\t\tsuper(scope, index, initValue);\n\t}\n\n\tset(value: T) {\n\t\tthis.scope.set(this.index, value);\n\t}\n\n\tupdate(mutFn: (value: T) => T): void {\n\t\tthis.set(mutFn(this.get()));\n\t}\n\n}\n"]}
@@ -1,15 +0,0 @@
1
- export declare function signal<T>(initialValue: T): import("@ibyar/expressions").Signal<T>;
2
- export declare function computed<T>(computation: () => T): import("@ibyar/expressions").Computed<T>;
3
- export declare function lazy<T>(computation: () => T): import("@ibyar/expressions").Lazy<T>;
4
- export declare function signalFn<T>(initialValue: T): {
5
- (): T;
6
- set(value: T): void;
7
- update(updateFn: (value: T) => T): void;
8
- };
9
- export declare function computedFn<T>(computation: () => T): () => T;
10
- export declare function lazyFn<T>(computation: () => T): () => T;
11
- export declare function effect<T>(effectFn: (onCleanup?: (clean: () => void) => void) => void): {
12
- destroy(): void;
13
- };
14
- export declare function untracked<T>(nonReactiveReadsFn: () => T): T;
15
- //# sourceMappingURL=signals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../../src/core/scope/signals.ts"],"names":[],"mappings":"AAIA,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,0CAExC;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,4CAE/C;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,wCAE3C;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;;;;EAE1C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAEjD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAE7C;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI;;EAEpF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAK3D"}
package/scope/signals.js DELETED
@@ -1,49 +0,0 @@
1
- import { SignalScope } from '@ibyar/expressions';
2
- const watchScope = new SignalScope();
3
- export function signal(initialValue) {
4
- return watchScope.createSignal(initialValue);
5
- }
6
- export function computed(computation) {
7
- return watchScope.createComputed(computation);
8
- }
9
- export function lazy(computation) {
10
- return watchScope.createLazy(computation);
11
- }
12
- export function signalFn(initialValue) {
13
- return watchScope.createSignalFn(initialValue);
14
- }
15
- export function computedFn(computation) {
16
- return watchScope.createComputedFn(computation);
17
- }
18
- export function lazyFn(computation) {
19
- return watchScope.createLazyFn(computation);
20
- }
21
- export function effect(effectFn) {
22
- return watchScope.createEffect(effectFn);
23
- }
24
- export function untracked(nonReactiveReadsFn) {
25
- watchScope.untrack();
26
- const value = nonReactiveReadsFn();
27
- watchScope.track();
28
- return value;
29
- }
30
- Object.assign(window, { signal, computed, lazy, signalFn, computedFn, lazyFn, effect, untracked, watchScope });
31
- const x = signal(6);
32
- const y = signal(4);
33
- const z = signal(20);
34
- const a = signal(true);
35
- const g = computed(() => {
36
- if (a.get()) {
37
- return x.get() + y.get();
38
- }
39
- return x.get() + z.get();
40
- });
41
- const h = computedFn(() => g.get());
42
- console.log('g = ', g.get());
43
- untracked(() => x.get() + y.get() + y.get());
44
- const e = effect(() => {
45
- console.log('x', x.get(), 'y', y.get(), 'z', z.get());
46
- console.log('a', a.get(), 'g', untracked(g.get), 'h', untracked(h));
47
- });
48
- Object.assign(window, { x, y, z, a, g, h, e });
49
- //# sourceMappingURL=signals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../src/core/scope/signals.ts"],"names":[],"mappings":"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","sourcesContent":["import { SignalScope } from '@ibyar/expressions';\n\nconst watchScope = new SignalScope();\n\nexport function signal<T>(initialValue: T) {\n\treturn watchScope.createSignal(initialValue);\n}\n\nexport function computed<T>(computation: () => T) {\n\treturn watchScope.createComputed(computation);\n}\n\nexport function lazy<T>(computation: () => T) {\n\treturn watchScope.createLazy(computation);\n}\n\n\nexport function signalFn<T>(initialValue: T) {\n\treturn watchScope.createSignalFn(initialValue);\n}\n\nexport function computedFn<T>(computation: () => T) {\n\treturn watchScope.createComputedFn(computation);\n}\n\nexport function lazyFn<T>(computation: () => T) {\n\treturn watchScope.createLazyFn(computation);\n}\n\nexport function effect<T>(effectFn: (onCleanup?: (clean: () => void) => void) => void) {\n\treturn watchScope.createEffect(effectFn);\n}\n\nexport function untracked<T>(nonReactiveReadsFn: () => T): T {\n\twatchScope.untrack();\n\tconst value = nonReactiveReadsFn();\n\twatchScope.track();\n\treturn value;\n}\n\nObject.assign(window, { signal, computed, lazy, signalFn, computedFn, lazyFn, effect, untracked, watchScope });\n\nconst x = signal(6);\nconst y = signal(4);\nconst z = signal(20);\nconst a = signal(true);\n\nconst g = computed(() => {\n\tif (a.get()) {\n\t\treturn x.get() + y.get();\n\t}\n\treturn x.get() + z.get();\n});\n\nconst h = computedFn(() => g.get());\n\nconsole.log('g = ', g.get());\n\nuntracked(() => x.get() + y.get() + y.get());\n\nconst e = effect(() => {\n\tconsole.log('x', x.get(), 'y', y.get(), 'z', z.get());\n\tconsole.log('a', a.get(), 'g', untracked(g.get), 'h', untracked(h));\n});\n\n\nObject.assign(window, { x, y, z, a, g, h, e });\n\n"]}
package/scope/stream.d.ts DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=stream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/core/scope/stream.ts"],"names":[],"mappings":""}
package/scope/stream.js DELETED
@@ -1,8 +0,0 @@
1
- "use strict";
2
- // map
3
- // filter
4
- // tap
5
- // other operators
6
- // operation
7
- // create/delete/change/update
8
- //# sourceMappingURL=stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/core/scope/stream.ts"],"names":[],"mappings":";AACA,MAAM;AACN,SAAS;AACT,MAAM;AACN,kBAAkB;AAClB,YAAY;AACZ,8BAA8B","sourcesContent":["\n// map\n// filter\n// tap\n// other operators\n// operation\n// create/delete/change/update"]}
@@ -1,19 +0,0 @@
1
- import { Context, ReactiveScope } from '@ibyar/expressions';
2
- export interface ScopeVariable<T> {
3
- readonly name: string;
4
- get(): T | undefined;
5
- set(value: T | undefined): void;
6
- }
7
- export declare class ScopeVariable<T> implements ScopeVariable<T> {
8
- readonly name: string;
9
- private scope;
10
- constructor(name: string, scope: ReactiveScope<Context>, value?: T);
11
- }
12
- export declare class ScopeEdit {
13
- private scopes;
14
- getScope<T extends Context>(): ReactiveScope<T>;
15
- pushScope<T extends Context>(scope: ReactiveScope<T>): void;
16
- popScope<T extends Context>(): ReactiveScope<T> | undefined;
17
- }
18
- export declare function input<T>(name: string, value?: T): ScopeVariable<T>;
19
- //# sourceMappingURL=variables.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/core/scope/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACrB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CAChC;AAED,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAE5C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,OAAO,CAAC,KAAK;gBAA3B,IAAI,EAAE,MAAM,EAAU,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAYnF;AAED,qBAAa,SAAS;IAErB,OAAO,CAAC,MAAM,CAAgC;IAE9C,QAAQ,CAAC,CAAC,SAAS,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC;IAS/C,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAIpD,QAAQ,CAAC,CAAC,SAAS,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;CAI3D;AAID,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAElE"}
@@ -1,38 +0,0 @@
1
- import { ReactiveScope } from '@ibyar/expressions';
2
- export class ScopeVariable {
3
- name;
4
- scope;
5
- constructor(name, scope, value) {
6
- this.name = name;
7
- this.scope = scope;
8
- this.scope.set(name, value);
9
- }
10
- get() {
11
- return this.scope.get(this.name);
12
- }
13
- set(value) {
14
- this.scope.set(this.name, value);
15
- }
16
- }
17
- export class ScopeEdit {
18
- scopes = [];
19
- getScope() {
20
- if (this.scopes.length == 0) {
21
- const scope = ReactiveScope.blockScope();
22
- this.scopes.push(scope);
23
- return scope;
24
- }
25
- return this.scopes.at(-1);
26
- }
27
- pushScope(scope) {
28
- this.scopes.push(scope);
29
- }
30
- popScope() {
31
- return this.scopes.pop();
32
- }
33
- }
34
- let scopeEditor = new ScopeEdit();
35
- export function input(name, value) {
36
- return new ScopeVariable(name, scopeEditor.getScope(), value);
37
- }
38
- //# sourceMappingURL=variables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/core/scope/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQ5D,MAAM,OAAO,aAAa;IAEJ;IAAsB;IAA3C,YAAqB,IAAY,EAAU,KAA6B,EAAE,KAAS;QAA9D,SAAI,GAAJ,IAAI,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAwB;QACvE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,KAAoB;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;CAED;AAED,MAAM,OAAO,SAAS;IAEb,MAAM,GAA6B,EAAE,CAAC;IAE9C,QAAQ;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAK,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAqB,CAAC;IAC/C,CAAC;IAED,SAAS,CAAoB,KAAuB;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;CAED;AAED,IAAI,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;AAElC,MAAM,UAAU,KAAK,CAAI,IAAY,EAAE,KAAS;IAC/C,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { Context, ReactiveScope } from '@ibyar/expressions';\n\nexport interface ScopeVariable<T> {\n\treadonly name: string;\n\tget(): T | undefined;\n\tset(value: T | undefined): void;\n}\n\nexport class ScopeVariable<T> implements ScopeVariable<T> {\n\n\tconstructor(readonly name: string, private scope: ReactiveScope<Context>, value?: T) {\n\t\tthis.scope.set(name, value);\n\t}\n\n\tget(): T | undefined {\n\t\treturn this.scope.get(this.name);\n\t}\n\n\tset(value: T | undefined): void {\n\t\tthis.scope.set(this.name, value);\n\t}\n\n}\n\nexport class ScopeEdit {\n\n\tprivate scopes: ReactiveScope<Context>[] = [];\n\n\tgetScope<T extends Context>(): ReactiveScope<T> {\n\t\tif (this.scopes.length == 0) {\n\t\t\tconst scope = ReactiveScope.blockScope<T>();\n\t\t\tthis.scopes.push(scope);\n\t\t\treturn scope;\n\t\t}\n\t\treturn this.scopes.at(-1) as ReactiveScope<T>;\n\t}\n\n\tpushScope<T extends Context>(scope: ReactiveScope<T>) {\n\t\tthis.scopes.push(scope);\n\t}\n\n\tpopScope<T extends Context>(): ReactiveScope<T> | undefined {\n\t\treturn this.scopes.pop();\n\t}\n\n}\n\nlet scopeEditor = new ScopeEdit();\n\nexport function input<T>(name: string, value?: T): ScopeVariable<T> {\n\treturn new ScopeVariable(name, scopeEditor.getScope(), value);\n}\n"]}
@@ -1,4 +0,0 @@
1
- import { Context, Scope } from '@ibyar/expressions';
2
- export interface WebScope<T extends Context> extends Scope<T> {
3
- }
4
- //# sourceMappingURL=web-scope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-scope.d.ts","sourceRoot":"","sources":["../../../src/core/scope/web-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;CAE5D"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=web-scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-scope.js","sourceRoot":"","sources":["../../../src/core/scope/web-scope.ts"],"names":[],"mappings":"","sourcesContent":["import { Context, Scope } from '@ibyar/expressions';\n\n\nexport interface WebScope<T extends Context> extends Scope<T> {\n\n}\n\n"]}
@@ -1,4 +0,0 @@
1
- import { ReactiveScope } from '@ibyar/expressions';
2
- import { Signal } from 'signal-polyfill';
3
- export declare function setupScopesForSignal(signal: Signal.State<any> | Signal.Computed<any>, parent: ReactiveScope<any>, name: string): ReactiveScope<Signal.State<any> | Signal.Computed<any>>;
4
- //# sourceMappingURL=proposal-signals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal-signals.d.ts","sourceRoot":"","sources":["../../../src/core/signals/proposal-signals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,2DAU9H"}
@@ -1,11 +0,0 @@
1
- import { ReactiveScope } from '@ibyar/expressions';
2
- export function setupScopesForSignal(signal, parent, name) {
3
- const symbols = Object.getOwnPropertySymbols(signal);
4
- const scope = new ReactiveScope(signal, symbols, name, parent);
5
- parent.setInnerScope(name, scope);
6
- const symbol = symbols[0];
7
- const contextScope = new ReactiveScope(signal, ['value', 'version'], symbol, scope);
8
- scope.setInnerScope(symbol, contextScope);
9
- return scope;
10
- }
11
- //# sourceMappingURL=proposal-signals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal-signals.js","sourceRoot":"","sources":["../../../src/core/signals/proposal-signals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,MAAM,UAAU,oBAAoB,CAAC,MAAgD,EAAE,MAA0B,EAAE,IAAY;IAC9H,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,OAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,YAAY,GAAG,IAAI,aAAa,CAAC,MAAqB,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACnG,KAAK,CAAC,aAAa,CAAC,MAAa,EAAE,YAAY,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["import { ReactiveScope } from '@ibyar/expressions';\nimport { Signal } from 'signal-polyfill';\n\n\nexport function setupScopesForSignal(signal: Signal.State<any> | Signal.Computed<any>, parent: ReactiveScope<any>, name: string) {\n\tconst symbols = Object.getOwnPropertySymbols(signal);\n\tconst scope = new ReactiveScope(signal, symbols as any, name, parent);\n\tparent.setInnerScope(name, scope);\n\n\tconst symbol = symbols[0];\n\tconst contextScope = new ReactiveScope(signal as any[symbol], ['value', 'version'], symbol, scope);\n\tscope.setInnerScope(symbol as any, contextScope);\n\n\treturn scope;\n}\n"]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=proposal-sugnal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal-sugnal.d.ts","sourceRoot":"","sources":["../../../src/core/signals/proposal-sugnal.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=proposal-sugnal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal-sugnal.js","sourceRoot":"","sources":["../../../src/core/signals/proposal-sugnal.ts"],"names":[],"mappings":"","sourcesContent":[""]}
package/zone/task.d.ts DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/core/zone/task.ts"],"names":[],"mappings":""}
package/zone/task.js DELETED
@@ -1,128 +0,0 @@
1
- "use strict";
2
- // /// <reference types='zone.js' />
3
- // import { ReactiveScopeControl, Context, Stack } from '@ibyar/expressions';
4
- // const notScheduled: 'notScheduled' = 'notScheduled',
5
- // scheduling: 'scheduling' = 'scheduling',
6
- // scheduled: 'scheduled' = 'scheduled',
7
- // running: 'running' = 'running',
8
- // canceling: 'canceling' = 'canceling',
9
- // unknown: 'unknown' = 'unknown';
10
- // const microTask: 'microTask' = 'microTask',
11
- // macroTask: 'macroTask' = 'macroTask',
12
- // eventTask: 'eventTask' = 'eventTask';
13
- // export abstract class AbstractTask<T extends TaskType> implements Task {
14
- // public runCount: number = 0;
15
- // _zone: Zone | null = null;
16
- // _state: TaskState = 'notScheduled';
17
- // constructor(
18
- // public type: T,
19
- // public source: string,
20
- // public callback: Function,
21
- // public data?: TaskData,
22
- // public scheduleFn?: (task: Task) => void,
23
- // public cancelFn?: (task: Task) => void) {
24
- // if (!callback) {
25
- // throw new Error('callback is not defined');
26
- // }
27
- // }
28
- // get zone(): Zone {
29
- // return this._zone!;
30
- // }
31
- // get state(): TaskState {
32
- // return this._state;
33
- // }
34
- // public cancelScheduleRequest() {
35
- // this._transitionTo(notScheduled, scheduling);
36
- // }
37
- // _transitionTo(toState: TaskState, fromState1: TaskState, fromState2?: TaskState) {
38
- // if (this._state === fromState1 || this._state === fromState2) {
39
- // this._state = toState;
40
- // } else {
41
- // throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \'' + fromState2 + '\'' : ''}, was '${this._state}'.`);
42
- // }
43
- // }
44
- // public toString() {
45
- // if (this.data && typeof this.data.handleId !== 'undefined') {
46
- // return this.data.handleId.toString();
47
- // } else {
48
- // return Object.prototype.toString.call(this);
49
- // }
50
- // }
51
- // public toJSON() {
52
- // return {
53
- // type: this.type,
54
- // state: this.state,
55
- // source: this.source,
56
- // zone: this.zone.name,
57
- // runCount: this.runCount
58
- // };
59
- // }
60
- // abstract invoke(task: any, target: any, args: any): any;
61
- // }
62
- // export class ScopeTask<T extends TaskType> extends AbstractTask<T> {
63
- // static microTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void) {
64
- // return new ScopeTask(scope, microTask, source, callback, data, customSchedule, undefined);
65
- // }
66
- // static macroTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {
67
- // return new ScopeTask(scope, macroTask, source, callback, data, customSchedule, customCancel);
68
- // }
69
- // static eventTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {
70
- // return new ScopeTask(scope, eventTask, source, callback, data, customSchedule, customCancel);
71
- // }
72
- // constructor(
73
- // public scope: ReactiveScopeControl<any>,
74
- // type: T,
75
- // source: string,
76
- // callback: Function,
77
- // data?: TaskData,
78
- // scheduleFn?: (task: Task) => void,
79
- // cancelFn?: (task: Task) => void) {
80
- // super(type, source, callback, data, scheduleFn, cancelFn);
81
- // }
82
- // invoke(task: any, target: any, args: any) {
83
- // try {
84
- // this.runCount++;
85
- // this.scope.detach();
86
- // return this.zone.runTask(task, target, args);
87
- // } finally {
88
- // this.scope.reattach();
89
- // }
90
- // }
91
- // public toJSON() {
92
- // return Object.assign(super.toJSON(), { scope: this.scope });
93
- // }
94
- // }
95
- // export class StackTask<T extends TaskType> extends AbstractTask<T> {
96
- // static microTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void) {
97
- // return new StackTask(stack, microTask, source, callback, data, customSchedule, undefined);
98
- // }
99
- // static macroTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {
100
- // return new StackTask(stack, macroTask, source, callback, data, customSchedule, customCancel);
101
- // }
102
- // static eventTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {
103
- // return new StackTask(stack, eventTask, source, callback, data, customSchedule, customCancel);
104
- // }
105
- // constructor(
106
- // public stack: Stack,
107
- // type: T,
108
- // source: string,
109
- // callback: Function,
110
- // data: TaskData | undefined,
111
- // scheduleFn: ((task: Task) => void) | undefined,
112
- // cancelFn: ((task: Task) => void) | undefined) {
113
- // super(type, source, callback, data, scheduleFn, cancelFn);
114
- // }
115
- // invoke(task: any, target: any, args: any) {
116
- // try {
117
- // this.runCount++;
118
- // this.stack.detach();
119
- // return this.zone.runTask(task, target, args);
120
- // } finally {
121
- // this.stack.reattach();
122
- // }
123
- // }
124
- // public toJSON() {
125
- // return Object.assign(super.toJSON(), { stack: this.stack });
126
- // }
127
- // }
128
- //# sourceMappingURL=task.js.map
package/zone/task.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/core/zone/task.ts"],"names":[],"mappings":";AAAA,oCAAoC;AACpC,6EAA6E;AAE7E,uDAAuD;AACvD,4CAA4C;AAC5C,yCAAyC;AACzC,mCAAmC;AACnC,yCAAyC;AACzC,mCAAmC;AAEnC,8CAA8C;AAC9C,yCAAyC;AACzC,yCAAyC;AAEzC,2EAA2E;AAE3E,gCAAgC;AAChC,8BAA8B;AAC9B,uCAAuC;AAEvC,gBAAgB;AAChB,oBAAoB;AACpB,2BAA2B;AAC3B,+BAA+B;AAC/B,4BAA4B;AAC5B,8CAA8C;AAC9C,8CAA8C;AAC9C,qBAAqB;AACrB,iDAAiD;AACjD,MAAM;AACN,KAAK;AAEL,sBAAsB;AACtB,wBAAwB;AACxB,KAAK;AAEL,4BAA4B;AAC5B,wBAAwB;AACxB,KAAK;AAEL,oCAAoC;AACpC,kDAAkD;AAClD,KAAK;AAEL,sFAAsF;AACtF,oEAAoE;AACpE,4BAA4B;AAC5B,aAAa;AACb,oMAAoM;AACpM,MAAM;AACN,KAAK;AAEL,uBAAuB;AACvB,kEAAkE;AAClE,2CAA2C;AAC3C,aAAa;AACb,kDAAkD;AAClD,MAAM;AACN,KAAK;AACL,qBAAqB;AACrB,aAAa;AACb,sBAAsB;AACtB,wBAAwB;AACxB,0BAA0B;AAC1B,2BAA2B;AAC3B,6BAA6B;AAC7B,OAAO;AACP,KAAK;AAEL,4DAA4D;AAC5D,IAAI;AAEJ,uEAAuE;AACvE,oJAAoJ;AACpJ,+FAA+F;AAC/F,KAAK;AACL,yLAAyL;AACzL,kGAAkG;AAClG,KAAK;AACL,yLAAyL;AACzL,kGAAkG;AAClG,KAAK;AAEL,gBAAgB;AAChB,6CAA6C;AAC7C,aAAa;AACb,oBAAoB;AACpB,wBAAwB;AACxB,qBAAqB;AACrB,uCAAuC;AACvC,uCAAuC;AACvC,+DAA+D;AAC/D,KAAK;AACL,+CAA+C;AAC/C,UAAU;AACV,sBAAsB;AACtB,0BAA0B;AAC1B,mDAAmD;AACnD,gBAAgB;AAChB,4BAA4B;AAC5B,MAAM;AACN,KAAK;AACL,qBAAqB;AACrB,iEAAiE;AACjE,KAAK;AACL,IAAI;AAEJ,uEAAuE;AAEvE,gIAAgI;AAChI,+FAA+F;AAC/F,KAAK;AACL,qKAAqK;AACrK,kGAAkG;AAClG,KAAK;AACL,qKAAqK;AACrK,kGAAkG;AAClG,KAAK;AAEL,gBAAgB;AAChB,yBAAyB;AACzB,aAAa;AACb,oBAAoB;AACpB,wBAAwB;AACxB,gCAAgC;AAChC,oDAAoD;AACpD,oDAAoD;AACpD,+DAA+D;AAC/D,KAAK;AACL,+CAA+C;AAC/C,UAAU;AACV,sBAAsB;AACtB,0BAA0B;AAC1B,mDAAmD;AACnD,gBAAgB;AAChB,4BAA4B;AAC5B,MAAM;AACN,KAAK;AACL,qBAAqB;AACrB,iEAAiE;AACjE,KAAK;AACL,IAAI","sourcesContent":["// /// <reference types='zone.js' />\n// import { ReactiveScopeControl, Context, Stack } from '@ibyar/expressions';\n\n// const notScheduled: 'notScheduled' = 'notScheduled',\n// \tscheduling: 'scheduling' = 'scheduling',\n// \tscheduled: 'scheduled' = 'scheduled',\n// \trunning: 'running' = 'running',\n// \tcanceling: 'canceling' = 'canceling',\n// \tunknown: 'unknown' = 'unknown';\n\n// const microTask: 'microTask' = 'microTask',\n// \tmacroTask: 'macroTask' = 'macroTask',\n// \teventTask: 'eventTask' = 'eventTask';\n\n// export abstract class AbstractTask<T extends TaskType> implements Task {\n\n// \tpublic runCount: number = 0;\n// \t_zone: Zone | null = null;\n// \t_state: TaskState = 'notScheduled';\n\n// \tconstructor(\n// \t\tpublic type: T,\n// \t\tpublic source: string,\n// \t\tpublic callback: Function,\n// \t\tpublic data?: TaskData,\n// \t\tpublic scheduleFn?: (task: Task) => void,\n// \t\tpublic cancelFn?: (task: Task) => void) {\n// \t\tif (!callback) {\n// \t\t\tthrow new Error('callback is not defined');\n// \t\t}\n// \t}\n\n// \tget zone(): Zone {\n// \t\treturn this._zone!;\n// \t}\n\n// \tget state(): TaskState {\n// \t\treturn this._state;\n// \t}\n\n// \tpublic cancelScheduleRequest() {\n// \t\tthis._transitionTo(notScheduled, scheduling);\n// \t}\n\n// \t_transitionTo(toState: TaskState, fromState1: TaskState, fromState2?: TaskState) {\n// \t\tif (this._state === fromState1 || this._state === fromState2) {\n// \t\t\tthis._state = toState;\n// \t\t} else {\n// \t\t\tthrow new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \\'' + fromState2 + '\\'' : ''}, was '${this._state}'.`);\n// \t\t}\n// \t}\n\n// \tpublic toString() {\n// \t\tif (this.data && typeof this.data.handleId !== 'undefined') {\n// \t\t\treturn this.data.handleId.toString();\n// \t\t} else {\n// \t\t\treturn Object.prototype.toString.call(this);\n// \t\t}\n// \t}\n// \tpublic toJSON() {\n// \t\treturn {\n// \t\t\ttype: this.type,\n// \t\t\tstate: this.state,\n// \t\t\tsource: this.source,\n// \t\t\tzone: this.zone.name,\n// \t\t\trunCount: this.runCount\n// \t\t};\n// \t}\n\n// \tabstract invoke(task: any, target: any, args: any): any;\n// }\n\n// export class ScopeTask<T extends TaskType> extends AbstractTask<T> {\n// \tstatic microTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void) {\n// \t\treturn new ScopeTask(scope, microTask, source, callback, data, customSchedule, undefined);\n// \t}\n// \tstatic macroTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {\n// \t\treturn new ScopeTask(scope, macroTask, source, callback, data, customSchedule, customCancel);\n// \t}\n// \tstatic eventTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {\n// \t\treturn new ScopeTask(scope, eventTask, source, callback, data, customSchedule, customCancel);\n// \t}\n\n// \tconstructor(\n// \t\tpublic scope: ReactiveScopeControl<any>,\n// \t\ttype: T,\n// \t\tsource: string,\n// \t\tcallback: Function,\n// \t\tdata?: TaskData,\n// \t\tscheduleFn?: (task: Task) => void,\n// \t\tcancelFn?: (task: Task) => void) {\n// \t\tsuper(type, source, callback, data, scheduleFn, cancelFn);\n// \t}\n// \tinvoke(task: any, target: any, args: any) {\n// \t\ttry {\n// \t\t\tthis.runCount++;\n// \t\t\tthis.scope.detach();\n// \t\t\treturn this.zone.runTask(task, target, args);\n// \t\t} finally {\n// \t\t\tthis.scope.reattach();\n// \t\t}\n// \t}\n// \tpublic toJSON() {\n// \t\treturn Object.assign(super.toJSON(), { scope: this.scope });\n// \t}\n// }\n\n// export class StackTask<T extends TaskType> extends AbstractTask<T> {\n\n// \tstatic microTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void) {\n// \t\treturn new StackTask(stack, microTask, source, callback, data, customSchedule, undefined);\n// \t}\n// \tstatic macroTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {\n// \t\treturn new StackTask(stack, macroTask, source, callback, data, customSchedule, customCancel);\n// \t}\n// \tstatic eventTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {\n// \t\treturn new StackTask(stack, eventTask, source, callback, data, customSchedule, customCancel);\n// \t}\n\n// \tconstructor(\n// \t\tpublic stack: Stack,\n// \t\ttype: T,\n// \t\tsource: string,\n// \t\tcallback: Function,\n// \t\tdata: TaskData | undefined,\n// \t\tscheduleFn: ((task: Task) => void) | undefined,\n// \t\tcancelFn: ((task: Task) => void) | undefined) {\n// \t\tsuper(type, source, callback, data, scheduleFn, cancelFn);\n// \t}\n// \tinvoke(task: any, target: any, args: any) {\n// \t\ttry {\n// \t\t\tthis.runCount++;\n// \t\t\tthis.stack.detach();\n// \t\t\treturn this.zone.runTask(task, target, args);\n// \t\t} finally {\n// \t\t\tthis.stack.reattach();\n// \t\t}\n// \t}\n// \tpublic toJSON() {\n// \t\treturn Object.assign(super.toJSON(), { stack: this.stack });\n// \t}\n// }\n"]}