@ibyar/core 2.5.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/annotation/decorators.d.ts +2 -30
  2. package/annotation/decorators.d.ts.map +1 -1
  3. package/annotation/decorators.js +2 -89
  4. package/annotation/decorators.js.map +1 -1
  5. package/annotation/options.d.ts +11 -6
  6. package/annotation/options.d.ts.map +1 -1
  7. package/annotation/options.js.map +1 -1
  8. package/binding/binding.expressions copy.d.ts +43 -0
  9. package/binding/binding.expressions copy.d.ts.map +1 -0
  10. package/binding/binding.expressions copy.js +161 -0
  11. package/binding/binding.expressions copy.js.map +1 -0
  12. package/binding/signal.expressions.d.ts +50 -0
  13. package/binding/signal.expressions.d.ts.map +1 -0
  14. package/binding/signal.expressions.js +182 -0
  15. package/binding/signal.expressions.js.map +1 -0
  16. package/component/component.d.ts +1 -1
  17. package/component/component.d.ts.map +1 -1
  18. package/component/component.js +5 -8
  19. package/component/component.js.map +1 -1
  20. package/component/custom-element.d.ts +4 -15
  21. package/component/custom-element.d.ts.map +1 -1
  22. package/component/custom-element.js +1 -2
  23. package/component/custom-element.js.map +1 -1
  24. package/component/initializer.d.ts +39 -27
  25. package/component/initializer.d.ts.map +1 -1
  26. package/component/initializer.js +47 -29
  27. package/component/initializer.js.map +1 -1
  28. package/component/reflect.d.ts.map +1 -1
  29. package/component/reflect.js +8 -2
  30. package/component/reflect.js.map +1 -1
  31. package/di/provider.d.ts +1 -0
  32. package/di/provider.d.ts.map +1 -1
  33. package/di/provider.js +11 -0
  34. package/di/provider.js.map +1 -1
  35. package/directive/directive.d.ts +21 -12
  36. package/directive/directive.d.ts.map +1 -1
  37. package/directive/directive.js +76 -27
  38. package/directive/directive.js.map +1 -1
  39. package/html/deserialize.d.ts.map +1 -1
  40. package/html/deserialize.js +7 -0
  41. package/html/deserialize.js.map +1 -1
  42. package/html/expression.d.ts.map +1 -1
  43. package/html/expression.js +41 -8
  44. package/html/expression.js.map +1 -1
  45. package/linker/change-detector-ref.d.ts +3 -3
  46. package/linker/change-detector-ref.js.map +1 -1
  47. package/linker/template-ref.js +3 -3
  48. package/linker/template-ref.js.map +1 -1
  49. package/linker/view-container-ref.d.ts.map +1 -1
  50. package/linker/view-container-ref.js +4 -4
  51. package/linker/view-container-ref.js.map +1 -1
  52. package/linker/view-ref.d.ts +2 -2
  53. package/linker/view-ref.js.map +1 -1
  54. package/package.json +7 -7
  55. package/pipe/pipe.d.ts +2 -2
  56. package/pipe/pipe.js +2 -2
  57. package/pipe/pipe.js.map +1 -1
  58. package/signals/factory.d.ts +3 -7
  59. package/signals/factory.d.ts.map +1 -1
  60. package/signals/factory.js +6 -12
  61. package/signals/factory.js.map +1 -1
  62. package/signals/runtime.d.ts +6 -6
  63. package/signals/runtime.d.ts.map +1 -1
  64. package/signals/runtime.js +29 -18
  65. package/signals/runtime.js.map +1 -1
  66. package/signals/scopes.d.ts +4 -0
  67. package/signals/scopes.d.ts.map +1 -0
  68. package/signals/scopes.js +4 -0
  69. package/signals/scopes.js.map +1 -0
  70. package/signals/signals.d.ts +2 -7
  71. package/signals/signals.d.ts.map +1 -1
  72. package/signals/signals.js +0 -9
  73. package/signals/signals.js.map +1 -1
  74. package/utils/elements-util.d.ts +0 -1
  75. package/utils/elements-util.d.ts.map +1 -1
  76. package/utils/elements-util.js +0 -9
  77. package/utils/elements-util.js.map +1 -1
  78. package/view/base-view.d.ts.map +1 -1
  79. package/view/base-view.js +38 -84
  80. package/view/base-view.js.map +1 -1
  81. package/view/render.d.ts +5 -3
  82. package/view/render.d.ts.map +1 -1
  83. package/view/render.js +64 -30
  84. package/view/render.js.map +1 -1
  85. package/view/view.d.ts.map +1 -1
  86. package/view/view.js +3 -16
  87. package/view/view.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"initializer.d.ts","sourceRoot":"","sources":["../../../src/core/component/initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initializer.d.ts","sourceRoot":"","sources":["../../../src/core/component/initializer.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,52 @@
1
- import { getReactiveNode, Signal } from '@ibyar/expressions';
1
+ import { Signal } from '@ibyar/expressions';
2
2
  import { signalScopeFactory } from '../signals/factory.js';
3
3
  import { InjectionToken } from '../di/provider.js';
4
4
  import { inject } from '../di/inject.js';
5
- export function input(initialValue, opts) {
6
- const signal = signalScopeFactory.signal(initialValue);
7
- if (opts?.transform) {
8
- const setOriginal = signal.set;
9
- signal.set = (value) => setOriginal(opts.transform(value));
5
+ export class InputSignal extends Signal {
6
+ options;
7
+ constructor(scope, index, initValue, options) {
8
+ super(scope, index, initValue);
9
+ this.options = options;
10
+ }
11
+ set(value) {
12
+ if (this.options?.transform) {
13
+ value = this.options.transform(value);
14
+ }
15
+ super.set(value);
10
16
  }
11
- ;
12
- return signal;
13
17
  }
14
- function requiredInput(opts) {
15
- return input(undefined, opts);
18
+ export function isInputSignal(signal) {
19
+ return signal instanceof InputSignal;
20
+ }
21
+ export function input(initValue, options) {
22
+ options = Object.assign(options ?? {}, { required: false });
23
+ return signalScopeFactory.factory((scope, index) => new InputSignal(scope, index, initValue, options));
24
+ }
25
+ function requiredInput(options) {
26
+ options = Object.assign(options ?? {}, { required: true });
27
+ return signalScopeFactory.factory((scope, index) => new InputSignal(scope, index, undefined, options));
16
28
  }
17
29
  input.required = requiredInput;
30
+ export class FormValueSignal extends Signal {
31
+ options;
32
+ constructor(scope, index, initValue, options) {
33
+ super(scope, index, initValue);
34
+ this.options = options;
35
+ }
36
+ }
37
+ export function formValue(initValue) {
38
+ return signalScopeFactory.factory((scope, index) => new FormValueSignal(scope, index, initValue, { required: false }));
39
+ }
40
+ function requiredFormValue() {
41
+ return signalScopeFactory.factory((scope, index) => new FormValueSignal(scope, index, undefined, { required: true }));
42
+ }
43
+ formValue.required = requiredFormValue;
18
44
  export class OutputSignal extends Signal {
19
45
  options;
46
+ constructor(scope, index, options) {
47
+ super(scope, index);
48
+ this.options = options;
49
+ }
20
50
  emit(value) {
21
51
  this.scope.set(this.index, value);
22
52
  }
@@ -24,36 +54,24 @@ export class OutputSignal extends Signal {
24
54
  export function isOutputSignal(signal) {
25
55
  return signal instanceof OutputSignal;
26
56
  }
27
- export function output(opts) {
28
- const signal = signalScopeFactory.signal(undefined, OutputSignal);
29
- signal.options = opts;
30
- return signal;
57
+ export function output(options) {
58
+ return signalScopeFactory.factory((scope, index) => new OutputSignal(scope, index, options));
31
59
  }
32
- export function model(opts) {
33
- const signal = signalScopeFactory.signalFn(undefined);
34
- const node = getReactiveNode(signal);
35
- if (node) {
36
- signal.subscribe = node.subscribe.bind(signal);
37
- }
38
- return signal;
39
- }
40
- function requiredModel(opts) {
41
- return model(opts);
42
- }
43
- model.required = requiredModel;
44
60
  export const VIEW_TOKEN = new InjectionToken('VIEW');
45
61
  export function view() {
46
62
  return inject(VIEW_TOKEN);
47
63
  }
48
64
  export class ViewChildSignal extends Signal {
49
65
  selector;
66
+ constructor(scope, index, selector) {
67
+ super(scope, index);
68
+ this.selector = selector;
69
+ }
50
70
  }
51
71
  export function isViewChildSignal(signal) {
52
72
  return signal instanceof ViewChildSignal;
53
73
  }
54
74
  export function viewChild(selector) {
55
- const signal = signalScopeFactory.signal(undefined, ViewChildSignal);
56
- signal.selector = selector;
57
- return signal;
75
+ return signalScopeFactory.factory((scope, index) => new ViewChildSignal(scope, index, selector));
58
76
  }
59
77
  //# sourceMappingURL=initializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initializer.js","sourceRoot":"","sources":["../../../src/core/component/initializer.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EAEf,MAAM,EACN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA2BzC,MAAM,UAAU,KAAK,CAAoB,YAAgB,EAAE,IAAkC;IAC5F,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,KAAQ,EAAQ,EAAE,CAAC,WAAW,CAAC,IAAK,CAAC,SAAU,CAAC,KAA0B,CAAC,CAAC,CAAC;IAC5F,CAAC;IAAA,CAAC;IACF,OAAO,MAAoC,CAAC;AAC7C,CAAC;AAKD,SAAS,aAAa,CAAoB,IAAkC;IAC3E,OAAO,KAAK,CAAC,SAAc,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;AAY/B,MAAM,OAAO,YAAgB,SAAQ,MAAS;IACtC,OAAO,CAAgB;IAE9B,IAAI,CAAC,KAAQ;QACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;CACD;AAGD,MAAM,UAAU,cAAc,CAAU,MAAW;IAClD,OAAO,MAAM,YAAY,YAAY,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,IAAmB;IAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAoB,CAAC;IACrF,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,OAAO,MAAM,CAAC;AACf,CAAC;AAYD,MAAM,UAAU,KAAK,CAAI,IAAmB;IAC3C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAmB,CAAC;IACxE,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAGD,SAAS,aAAa,CAAI,IAAmB;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;AAG/B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,cAAc,CAAc,MAAM,CAAC,CAAC;AAOlE,MAAM,UAAU,IAAI;IACnB,OAAO,MAAM,CAAC,UAAU,CAAE,CAAC;AAC5B,CAAC;AAGD,MAAM,OAAO,eAAmB,SAAQ,MAAS;IACzC,QAAQ,CAA+D;CAC9E;AAED,MAAM,UAAU,iBAAiB,CAAU,MAAW;IACrD,OAAO,MAAM,YAAY,eAAe,CAAC;AAC1C,CAAC;AAMD,MAAM,UAAU,SAAS,CAAI,QAAsE;IAClG,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAuB,CAAC;IAC3F,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,OAAO,MAAM,CAAC;AACf,CAAC","sourcesContent":["import {\n\tgetReactiveNode,\n\tScopeSubscription,\n\tSignal, WritableSignal\n} from '@ibyar/expressions';\nimport { signalScopeFactory } from '../signals/factory.js';\nimport { InjectionToken } from '../di/provider.js';\nimport { inject } from '../di/inject.js';\nimport { Type } from '../utils/typeof.js';\nimport { HTMLComponent } from './custom-element.js';\nimport { OutputEventInit } from '../annotation/options.js';\n\n\nexport interface InputOptions<T, TransformT> {\n\talias?: string;\n\ttransform?: (v: TransformT) => T;\n}\n\nexport type InputOptionsWithoutTransform<T> = Omit<InputOptions<T, T>, 'transform'> & { transform?: undefined }\n\nexport type InputOptionsWithTransform<T, TransformT> = Required<Pick<InputOptions<T, TransformT>, 'transform'>> & InputOptions<T, TransformT>;\n\nexport interface InputSignalWithTransform<T, TransformT> extends Signal<T> {\n\n}\n\nexport interface InputSignal<T, TransformT = T> extends InputSignalWithTransform<T, TransformT> {\n\n}\n\nexport function input<T>(): InputSignal<T>;\nexport function input<T>(initialValue: T, opts?: InputOptionsWithoutTransform<T>): InputSignal<T>;\nexport function input<T, TransformT = T>(initialValue: T, opts: InputOptionsWithTransform<T, TransformT>): InputSignalWithTransform<T, TransformT>;\nexport function input<T, TransformT = T>(initialValue?: T, opts?: InputOptions<T, TransformT>): InputSignal<T, TransformT>;\nexport function input<T, TransformT = T>(initialValue?: T, opts?: InputOptions<T, TransformT>): InputSignal<T, TransformT> {\n\tconst signal = signalScopeFactory.signal(initialValue);\n\tif (opts?.transform) {\n\t\tconst setOriginal = signal.set;\n\t\tsignal.set = (value: T): void => setOriginal(opts!.transform!(value as any as TransformT));\n\t};\n\treturn signal as InputSignal<T, TransformT>;\n}\n\nfunction requiredInput<T>(): InputSignal<T>;\nfunction requiredInput<T>(opts?: InputOptionsWithoutTransform<T>): InputSignal<T>;\nfunction requiredInput<T, TransformT = T>(opts: InputOptionsWithTransform<T, TransformT>): InputSignalWithTransform<T, TransformT>;\nfunction requiredInput<T, TransformT = T>(opts?: InputOptions<T, TransformT>): InputSignal<T, TransformT> {\n\treturn input(undefined as T, opts);\n}\n\ninput.required = requiredInput;\n\n\ntype OutputOption = OutputEventInit & { alias?: string };\n\n\n\nexport interface OutputSignal<T> extends Signal<T> {\n\tset: never;\n\tupdate: never;\n}\n\nexport class OutputSignal<T> extends Signal<T> {\n\tpublic options?: OutputOption;\n\n\temit(value: T) {\n\t\tthis.scope.set(this.index, value);\n\t}\n}\n\n\nexport function isOutputSignal<T = any>(signal: any): signal is OutputSignal<T> {\n\treturn signal instanceof OutputSignal;\n}\n\nexport function output<T>(opts?: OutputOption): OutputSignal<T> {\n\tconst signal = signalScopeFactory.signal(undefined, OutputSignal) as OutputSignal<T>;\n\tsignal.options = opts;\n\treturn signal;\n}\n\ninterface ModelOptions {\n\talias?: string;\n}\n\nexport interface ModelSignal<T> extends WritableSignal<T> {\n\tsubscribe(callback: (value: T) => void): ScopeSubscription<T>;\n}\n\nexport function model<T>(): ModelSignal<T>;\nexport function model<T>(opts?: ModelOptions): ModelSignal<T>;\nexport function model<T>(opts?: ModelOptions): ModelSignal<T> {\n\tconst signal = signalScopeFactory.signalFn(undefined) as ModelSignal<T>;\n\tconst node = getReactiveNode(signal);\n\tif (node) {\n\t\tsignal.subscribe = node.subscribe.bind(signal);\n\t}\n\treturn signal;\n}\n\nfunction requiredModel<T>(): ModelSignal<T>;\nfunction requiredModel<T>(opts?: ModelOptions): ModelSignal<T> {\n\treturn model(opts);\n}\n\nmodel.required = requiredModel;\n\n\nexport const VIEW_TOKEN = new InjectionToken<HTMLElement>('VIEW');\n\n\nexport function view(): HTMLElement;\nexport function view<T extends keyof HTMLElementTagNameMap>(extend: T): HTMLElementTagNameMap[T];\nexport function view<T>(type: Type<T>): HTMLComponent<T>;\nexport function view<T, V extends keyof HTMLElementTagNameMap>(type: Type<T>, extend: V): HTMLComponent<T> & HTMLElementTagNameMap[V];\nexport function view(): any {\n\treturn inject(VIEW_TOKEN)!;\n}\n\n\nexport class ViewChildSignal<T> extends Signal<T> {\n\tpublic selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap;\n}\n\nexport function isViewChildSignal<T = any>(signal: any): signal is ViewChildSignal<T> {\n\treturn signal instanceof ViewChildSignal;\n}\n\nexport function viewChild<T extends HTMLElement>(selector: Type<T>): Signal<T>;\nexport function viewChild<T>(selector: Type<T>): Signal<HTMLComponent<T>>;\nexport function viewChild<T extends keyof HTMLElementTagNameMap>(selector: T): Signal<HTMLElementTagNameMap[T]>;\nexport function viewChild<T extends HTMLElement>(selector: string): Signal<T>;\nexport function viewChild<T>(selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap): Signal<T> {\n\tconst signal = signalScopeFactory.signal(undefined, ViewChildSignal) as ViewChildSignal<T>;\n\tsignal.selector = selector;\n\treturn signal;\n}\n"]}
1
+ {"version":3,"file":"initializer.js","sourceRoot":"","sources":["../../../src/core/component/initializer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Signal, SignalScope } from '@ibyar/expressions';\nimport { signalScopeFactory } from '../signals/factory.js';\nimport { InjectionToken } from '../di/provider.js';\nimport { inject } from '../di/inject.js';\nimport { Type } from '../utils/typeof.js';\nimport { HTMLComponent } from './custom-element.js';\nimport { OutputEventInit } from '../annotation/options.js';\n\n\nexport interface InputOptions<T, TransformT> {\n\talias?: string;\n\ttransform?: (v: TransformT) => T;\n}\n\nexport type InputOptionsWithoutTransform<T> = Omit<InputOptions<T, T>, 'transform'>;\n\nexport type InputOptionsWithTransform<T, TransformT> = Required<Pick<InputOptions<T, TransformT>, 'transform'>> & InputOptions<T, TransformT>;\n\nexport interface InputWithTransform<T, TransformT = T> extends Signal<T> {\n\toptions?: InputOptions<T, TransformT>;\n}\n\nexport interface InputWithoutTransform<T> extends InputWithTransform<T, T> {\n\toptions?: InputOptionsWithoutTransform<T>;\n}\n\nexport class InputSignal<T, TransformT = T> extends Signal<T> implements InputWithoutTransform<T> {\n\n\n\tconstructor(scope: SignalScope, index: number, initValue?: T, public options?: InputOptions<T, TransformT> & { required?: boolean }) {\n\t\tsuper(scope, index, initValue);\n\t}\n\n\toverride set(value: T): void;\n\toverride set(value: TransformT): void;\n\toverride set(value: T | TransformT): void {\n\t\tif (this.options?.transform) {\n\t\t\tvalue = this.options.transform(value as TransformT);\n\t\t}\n\t\tsuper.set(value as T);\n\t}\n}\n\nexport function isInputSignal<T = any>(signal: any): signal is InputSignal<T> {\n\treturn signal instanceof InputSignal;\n}\n\nexport function input<T>(): InputWithoutTransform<T>;\nexport function input<T, TransformT = T>(initValue: T, options: InputOptionsWithTransform<T, TransformT>): InputWithTransform<T, TransformT>;\nexport function input<T>(initValue: T, options?: InputOptionsWithoutTransform<T>): InputWithoutTransform<T>;\nexport function input<T, TransformT = T>(initValue?: T, options?: InputOptions<T, TransformT>): InputWithTransform<T, TransformT>;\nexport function input<T, TransformT = T>(initValue?: T, options?: InputOptions<T, TransformT>): InputWithTransform<T, TransformT> {\n\toptions = Object.assign(options ?? {}, { required: false });\n\treturn signalScopeFactory.factory((scope, index) => new InputSignal<T, TransformT>(scope, index, initValue, options));\n}\n\nfunction requiredInput<T, TransformT = T>(options?: InputOptions<T, TransformT>): InputWithTransform<T, TransformT> {\n\toptions = Object.assign(options ?? {}, { required: true });\n\treturn signalScopeFactory.factory((scope, index) => new InputSignal<T, TransformT>(scope, index, undefined, options));\n}\n\ninput.required = requiredInput;\n\nexport class FormValueSignal<T> extends Signal<T> {\n\n\tconstructor(scope: SignalScope, index: number, initValue?: T, public options?: { required?: boolean }) {\n\t\tsuper(scope, index, initValue);\n\t}\n\n}\n\nexport function formValue<T>(initValue?: T): FormValueSignal<T> {\n\treturn signalScopeFactory.factory((scope, index) => new FormValueSignal<T>(scope, index, initValue, { required: false }));\n}\n\nfunction requiredFormValue<T>(): FormValueSignal<T> {\n\treturn signalScopeFactory.factory((scope, index) => new FormValueSignal<T>(scope, index, undefined, { required: true }));\n}\n\nformValue.required = requiredFormValue;\n\ntype OutputOption = OutputEventInit & { alias?: string };\n\nexport interface OutputSignal<T> extends Signal<T> {\n\tset: never;\n\tupdate: never;\n}\n\nexport class OutputSignal<T> extends Signal<T> {\n\n\tconstructor(scope: SignalScope, index: number, public options?: OutputOption) {\n\t\tsuper(scope, index);\n\t}\n\n\temit(value: T) {\n\t\tthis.scope.set(this.index, value);\n\t}\n}\n\nexport function isOutputSignal<T = any>(signal: any): signal is OutputSignal<T> {\n\treturn signal instanceof OutputSignal;\n}\n\nexport function output<T>(options?: OutputOption): OutputSignal<T> {\n\treturn signalScopeFactory.factory((scope, index) => new OutputSignal<T>(scope, index, options));\n}\n\nexport const VIEW_TOKEN = new InjectionToken<HTMLElement>('VIEW');\n\nexport function view(): HTMLElement;\nexport function view<T extends keyof HTMLElementTagNameMap>(extend: T): HTMLElementTagNameMap[T];\nexport function view<T>(type: Type<T>): HTMLComponent<T>;\nexport function view<T, V extends keyof HTMLElementTagNameMap>(type: Type<T>, extend: V): HTMLComponent<T> & HTMLElementTagNameMap[V];\nexport function view(): any {\n\treturn inject(VIEW_TOKEN)!;\n}\n\nexport class ViewChildSignal<T> extends Signal<T> {\n\n\tconstructor(scope: SignalScope, index: number, public selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap) {\n\t\tsuper(scope, index);\n\t}\n}\n\nexport function isViewChildSignal<T = any>(signal: any): signal is ViewChildSignal<T> {\n\treturn signal instanceof ViewChildSignal;\n}\n\nexport function viewChild<T extends HTMLElement>(selector: Type<T>): Signal<T>;\nexport function viewChild<T>(selector: Type<T>): Signal<HTMLComponent<T>>;\nexport function viewChild<T extends keyof HTMLElementTagNameMap>(selector: T): Signal<HTMLElementTagNameMap[T]>;\nexport function viewChild<T extends HTMLElement>(selector: string): Signal<T>;\nexport function viewChild<T>(selector: string | Type<T> | HTMLElement | keyof HTMLElementTagNameMap): Signal<T> {\n\treturn signalScopeFactory.factory((scope, index) => new ViewChildSignal<T>(scope, index, selector));\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../../src/core/component/reflect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE9E,qBAAa,WAAW;IACJ,aAAa,EAAE,MAAM;IAAE,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM;gBAAnD,aAAa,EAAE,MAAM,EAAY,SAAS,CAAC,EAAE,MAAM,YAAA;IACtE,IAAI,aAAa,IAAI,MAAM,CAE1B;CACD;AAED,qBAAa,gBAAiB,SAAQ,WAAW;CAEhD;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IACY,OAAO,CAAC,EAAE,eAAe;gBAA1E,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAS,OAAO,CAAC,EAAE,eAAe,YAAA;CAGtF;AAED,qBAAa,QAAQ;IAEZ,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM,GAAG;QAAE,QAAO,WAAW,CAAC;QAAC,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,wBAAwB;IAC5F,YAAY,CAAC,EAAE,YAAY;gBAF3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG;QAAE,QAAO,WAAW,CAAC;QAAC,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,wBAAwB,EAC5F,YAAY,CAAC,EAAE,YAAY,YAAA;CAEnC;AAED,qBAAa,WAAW;IACJ,SAAS,EAAE,MAAM;IAAS,IAAI,EAAE,MAAM,EAAE;IAAS,iBAAiB,EAAE,MAAM;gBAA1E,SAAS,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM,EAAE,EAAS,iBAAiB,EAAE,MAAM;CAC7F;AAED,qBAAa,cAAc;IACP,iBAAiB,EAAE,MAAM;IAAS,gBAAgB,EAAE,MAAM;gBAA1D,iBAAiB,EAAE,MAAM,EAAS,gBAAgB,EAAE,MAAM;CAC7E;AAED,MAAM,WAAW,iBAAiB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AAGD,qBAAa,iBAAiB;IAE7B,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa;IAI7C,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAI9E,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;IAIzG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM;IAIpE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,WAAW,GAAG,wBAAwB,EAAE,YAAY,CAAC,EAAE,YAAY;IAI/J,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,WAAW,GAAG,wBAAwB;IAIrI,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAIxG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;CAG9F"}
1
+ {"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../../src/core/component/reflect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE9E,qBAAa,WAAW;IACJ,aAAa,EAAE,MAAM;IAAE,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM;gBAAnD,aAAa,EAAE,MAAM,EAAY,SAAS,CAAC,EAAE,MAAM,YAAA;IACtE,IAAI,aAAa,IAAI,MAAM,CAE1B;CACD;AAED,qBAAa,gBAAiB,SAAQ,WAAW;CAEhD;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IACY,OAAO,CAAC,EAAE,eAAe;gBAA1E,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAS,OAAO,CAAC,EAAE,eAAe,YAAA;CAGtF;AAED,qBAAa,QAAQ;IAEZ,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM,GAAG;QAAE,QAAO,WAAW,CAAC;QAAC,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,wBAAwB;IAC5F,YAAY,CAAC,EAAE,YAAY;gBAF3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG;QAAE,QAAO,WAAW,CAAC;QAAC,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,wBAAwB,EAC5F,YAAY,CAAC,EAAE,YAAY,YAAA;CAEnC;AAED,qBAAa,WAAW;IACJ,SAAS,EAAE,MAAM;IAAS,IAAI,EAAE,MAAM,EAAE;IAAS,iBAAiB,EAAE,MAAM;gBAA1E,SAAS,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM,EAAE,EAAS,iBAAiB,EAAE,MAAM;CAC7F;AAED,qBAAa,cAAc;IACP,iBAAiB,EAAE,MAAM;IAAS,gBAAgB,EAAE,MAAM;gBAA1D,iBAAiB,EAAE,MAAM,EAAS,gBAAgB,EAAE,MAAM;CAC7E;AAED,MAAM,WAAW,iBAAiB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AAGD,qBAAa,iBAAiB;IAE7B,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa;IAI7C,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAO9E,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;IAOzG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM;IAIpE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,WAAW,GAAG,wBAAwB,EAAE,YAAY,CAAC,EAAE,YAAY;IAI/J,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,WAAW,GAAG,wBAAwB;IAIrI,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAIxG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;CAG9F"}
@@ -52,10 +52,16 @@ export class ReflectComponents {
52
52
  return metadataHoler.get(constructor[Symbol.metadata]);
53
53
  }
54
54
  static addInput(metadata, modelName, viewName) {
55
- (metadata.inputs ??= []).push(new InputPropertyRef(modelName, viewName));
55
+ let inputs = (metadata.inputs ?? []);
56
+ inputs = inputs.filter(i => i.modelProperty !== modelName);
57
+ inputs.push(new InputPropertyRef(modelName, viewName));
58
+ metadata.inputs = inputs;
56
59
  }
57
60
  static addOutput(metadata, modelName, viewName, options) {
58
- (metadata.outputs ??= []).push(new OutputPropertyRef(modelName, viewName, options));
61
+ let outputs = (metadata.outputs ?? []);
62
+ outputs = outputs.filter(i => i.modelProperty !== modelName);
63
+ outputs.push(new OutputPropertyRef(modelName, viewName, options));
64
+ metadata.outputs = outputs;
59
65
  }
60
66
  static setComponentView(metadata, modelName) {
61
67
  metadata.view = modelName;
@@ -1 +1 @@
1
- {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../../src/core/component/reflect.ts"],"names":[],"mappings":"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","sourcesContent":["import { metadataHoler, type MetadataClass, type MetadataContext } from '@ibyar/decorators';\nimport type { ChildOptions, OutputEventInit } from '../annotation/options.js';\n\nexport class PropertyRef {\n\tconstructor(public modelProperty: string, protected _viewName?: string) { }\n\tget viewAttribute(): string {\n\t\treturn this._viewName || this.modelProperty;\n\t}\n}\n\nexport class InputPropertyRef extends PropertyRef {\n\n}\n\nexport class OutputPropertyRef extends PropertyRef {\n\tconstructor(modelProperty: string, viewName?: string, public options?: OutputEventInit) {\n\t\tsuper(modelProperty, viewName);\n\t}\n}\n\nexport class ChildRef {\n\tconstructor(\n\t\tpublic modelName: string,\n\t\tpublic selector: string | { new(): HTMLElement; prototype: HTMLElement } | CustomElementConstructor,\n\t\tpublic childOptions?: ChildOptions\n\t) { }\n}\n\nexport class ListenerRef {\n\tconstructor(public eventName: string, public args: string[], public modelCallbackName: string) { }\n}\n\nexport class HostBindingRef {\n\tconstructor(public modelPropertyName: string, public hostPropertyName: string) { }\n}\n\nexport interface BootstrapMetadata {\n\t[key: string]: any;\n}\n\n\nexport class ReflectComponents {\n\n\tstatic getMetaDate(constructor: MetadataClass) {\n\t\treturn metadataHoler.get(constructor[Symbol.metadata]);\n\t}\n\n\tstatic addInput(metadata: MetadataContext, modelName: string, viewName: string) {\n\t\t(metadata.inputs ??= []).push(new InputPropertyRef(modelName, viewName));\n\t}\n\n\tstatic addOutput(metadata: MetadataContext, modelName: string, viewName: string, options: OutputEventInit) {\n\t\t(metadata.outputs ??= []).push(new OutputPropertyRef(modelName, viewName, options));\n\t}\n\n\tstatic setComponentView(metadata: MetadataContext, modelName: string) {\n\t\tmetadata.view = modelName;\n\t}\n\n\tstatic addViewChild(metadata: MetadataContext, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor, childOptions?: ChildOptions) {\n\t\t(metadata.viewChild ??= []).push(new ChildRef(modelName, selector, childOptions));\n\t}\n\n\tstatic addViewChildren(metadata: MetadataContext, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor) {\n\t\t(metadata.ViewChildren ??= []).push(new ChildRef(modelName, selector));\n\t}\n\n\tstatic addHostListener(metadata: MetadataContext, propertyKey: string, eventName: string, args: string[]) {\n\t\t(metadata.hostListeners ??= []).push(new ListenerRef(eventName, args, propertyKey));\n\t}\n\n\tstatic addHostBinding(metadata: MetadataContext, propertyKey: string, hostPropertyName: string) {\n\t\t(metadata.hostBindings ??= []).push(new HostBindingRef(propertyKey, hostPropertyName));\n\t}\n}\n"]}
1
+ {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../../src/core/component/reflect.ts"],"names":[],"mappings":"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","sourcesContent":["import { metadataHoler, type MetadataClass, type MetadataContext } from '@ibyar/decorators';\nimport type { ChildOptions, OutputEventInit } from '../annotation/options.js';\n\nexport class PropertyRef {\n\tconstructor(public modelProperty: string, protected _viewName?: string) { }\n\tget viewAttribute(): string {\n\t\treturn this._viewName || this.modelProperty;\n\t}\n}\n\nexport class InputPropertyRef extends PropertyRef {\n\n}\n\nexport class OutputPropertyRef extends PropertyRef {\n\tconstructor(modelProperty: string, viewName?: string, public options?: OutputEventInit) {\n\t\tsuper(modelProperty, viewName);\n\t}\n}\n\nexport class ChildRef {\n\tconstructor(\n\t\tpublic modelName: string,\n\t\tpublic selector: string | { new(): HTMLElement; prototype: HTMLElement } | CustomElementConstructor,\n\t\tpublic childOptions?: ChildOptions\n\t) { }\n}\n\nexport class ListenerRef {\n\tconstructor(public eventName: string, public args: string[], public modelCallbackName: string) { }\n}\n\nexport class HostBindingRef {\n\tconstructor(public modelPropertyName: string, public hostPropertyName: string) { }\n}\n\nexport interface BootstrapMetadata {\n\t[key: string]: any;\n}\n\n\nexport class ReflectComponents {\n\n\tstatic getMetaDate(constructor: MetadataClass) {\n\t\treturn metadataHoler.get(constructor[Symbol.metadata]);\n\t}\n\n\tstatic addInput(metadata: MetadataContext, modelName: string, viewName: string) {\n\t\tlet inputs = (metadata.inputs ?? []) as InputPropertyRef[];\n\t\tinputs = inputs.filter(i => i.modelProperty !== modelName);\n\t\tinputs.push(new InputPropertyRef(modelName, viewName));\n\t\tmetadata.inputs = inputs;\n\t}\n\n\tstatic addOutput(metadata: MetadataContext, modelName: string, viewName: string, options: OutputEventInit) {\n\t\tlet outputs = (metadata.outputs ?? []) as OutputPropertyRef[];\n\t\toutputs = outputs.filter(i => i.modelProperty !== modelName);\n\t\toutputs.push(new OutputPropertyRef(modelName, viewName, options));\n\t\tmetadata.outputs = outputs;\n\t}\n\n\tstatic setComponentView(metadata: MetadataContext, modelName: string) {\n\t\tmetadata.view = modelName;\n\t}\n\n\tstatic addViewChild(metadata: MetadataContext, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor, childOptions?: ChildOptions) {\n\t\t(metadata.viewChild ??= []).push(new ChildRef(modelName, selector, childOptions));\n\t}\n\n\tstatic addViewChildren(metadata: MetadataContext, modelName: string, selector: string | typeof HTMLElement | CustomElementConstructor) {\n\t\t(metadata.ViewChildren ??= []).push(new ChildRef(modelName, selector));\n\t}\n\n\tstatic addHostListener(metadata: MetadataContext, propertyKey: string, eventName: string, args: string[]) {\n\t\t(metadata.hostListeners ??= []).push(new ListenerRef(eventName, args, propertyKey));\n\t}\n\n\tstatic addHostBinding(metadata: MetadataContext, propertyKey: string, hostPropertyName: string) {\n\t\t(metadata.hostBindings ??= []).push(new HostBindingRef(propertyKey, hostPropertyName));\n\t}\n}\n"]}
package/di/provider.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { AbstractType, Type } from '../utils/typeof.js';
2
2
  export declare class InjectionToken<T> {
3
3
  token: string;
4
4
  constructor(token: string);
5
+ withType<V>(): InjectionToken<V>;
5
6
  }
6
7
  export type Provider<T> = Type<T> | AbstractType<T> | InjectionToken<T>;
7
8
  export declare class InjectionProvider {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/core/di/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG7D,qBAAa,cAAc,CAAC,CAAC;IACT,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAChC;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAIxE,qBAAa,iBAAiB;IAKjB,OAAO,CAAC,MAAM,CAAC;IAH3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiD;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAE1C,MAAM,CAAC,EAAE,iBAAiB,YAAA;IAE9C,IAAI,IAAI,iBAAiB;IAIzB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,KAAK;IAIhE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,iBAAiB,GAAG,KAAK;IAI1E,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAQpD,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;IAWtD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAIhE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIrD,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAQ9C,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAOlD,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;CAUxC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/core/di/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG7D,qBAAa,cAAc,CAAC,CAAC;IACT,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;IAEhC,QAAQ,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;CAGhC;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAIxE,qBAAa,iBAAiB;IAKjB,OAAO,CAAC,MAAM,CAAC;IAH3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiD;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAE1C,MAAM,CAAC,EAAE,iBAAiB,YAAA;IAE9C,IAAI,IAAI,iBAAiB;IAIzB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,KAAK;IAIhE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,iBAAiB,GAAG,KAAK;IAI1E,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAQpD,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;IAmBtD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAIhE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIrD,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAQ9C,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAOlD,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;CAUxC"}
package/di/provider.js CHANGED
@@ -3,6 +3,9 @@ export class InjectionToken {
3
3
  constructor(token) {
4
4
  this.token = token;
5
5
  }
6
+ withType() {
7
+ return this;
8
+ }
6
9
  }
7
10
  const REQUIRE_INIT = Symbol('REQUIRE_INIT');
8
11
  export class InjectionProvider {
@@ -30,6 +33,14 @@ export class InjectionProvider {
30
33
  }
31
34
  getInstance(type) {
32
35
  let instance = this.types.get(type);
36
+ if (instance === undefined) {
37
+ for (const providerType of this.types.keys()) {
38
+ if (type.prototype instanceof providerType) {
39
+ instance = this.types.get(providerType);
40
+ break;
41
+ }
42
+ }
43
+ }
33
44
  if (instance === REQUIRE_INIT) {
34
45
  instance = new type();
35
46
  this.types.set(type, instance);
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/core/di/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractType, Type } from '../utils/typeof.js';\n\n\nexport class InjectionToken<T> {\n\tconstructor(public token: string) { }\n}\n\nexport type Provider<T> = Type<T> | AbstractType<T> | InjectionToken<T>;\n\nconst REQUIRE_INIT = Symbol('REQUIRE_INIT');\n\nexport class InjectionProvider {\n\n\tprivate readonly types = new Map<Type<any> | AbstractType<any>, any>();\n\tprivate readonly tokens = new Map<InjectionToken<any>, any>();\n\n\tconstructor(private parent?: InjectionProvider) { }\n\n\tfork(): InjectionProvider {\n\t\treturn new InjectionProvider(this);\n\t}\n\n\thasToken<T>(token: InjectionToken<T>): InjectionProvider | false {\n\t\treturn this.tokens.has(token) ? this : false;\n\t}\n\n\thasType<T>(type: Type<any> | AbstractType<any>): InjectionProvider | false {\n\t\treturn this.types.has(type) ? this : false;\n\t}\n\n\tgetToken<T>(token: InjectionToken<T>): T | undefined {\n\t\tlet value = this.tokens.get(token);\n\t\tif (value === undefined && this.parent) {\n\t\t\tvalue = this.parent.getToken(token);\n\t\t}\n\t\treturn value;\n\t}\n\n\tgetInstance<T>(type: Type<any> | AbstractType<any>): T {\n\t\tlet instance = this.types.get(type);\n\t\tif (instance === REQUIRE_INIT) {\n\t\t\tinstance = new (type as Type<any>)();\n\t\t\tthis.types.set(type, instance);\n\t\t} else if (instance === undefined && this.parent) {\n\t\t\tinstance = this.parent.getInstance(type);\n\t\t}\n\t\treturn instance;\n\t}\n\n\tsetType<T>(type: Type<any> | AbstractType<any>, value?: T): void {\n\t\tthis.types.set(type, value ?? REQUIRE_INIT);\n\t}\n\n\tsetToken<T>(token: InjectionToken<T>, value: T): void {\n\t\tthis.tokens.set(token, value);\n\t}\n\n\tprovide<T>(typeOrToken: Provider<T>, value?: T) {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\tthis.setToken(typeOrToken, value);\n\t\t} else {\n\t\t\tthis.setType(typeOrToken, value ?? REQUIRE_INIT as unknown as T);\n\t\t}\n\t}\n\n\tinject<T>(typeOrToken: Provider<T>): T | undefined {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\treturn this.getToken(typeOrToken);\n\t\t}\n\t\treturn this.getInstance(typeOrToken);\n\t}\n\n\tclear<T>(typeOrToken: Provider<T>): void {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\tconst provider = this.parent?.hasToken(typeOrToken) || this;\n\t\t\tprovider.tokens.delete(typeOrToken);\n\t\t} else {\n\t\t\tconst provider = this.parent?.hasType(typeOrToken) || this;\n\t\t\tprovider.types.delete(typeOrToken);\n\t\t}\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/core/di/provider.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IACP;IAAnB,YAAmB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAI,CAAC;IAErC,QAAQ;QACP,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AAID,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE5C,MAAM,OAAO,iBAAiB;IAKT;IAHH,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAC;IACtD,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE9D,YAAoB,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAI,CAAC;IAEnD,IAAI;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAI,KAAwB;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,OAAO,CAAI,IAAmC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;IAED,QAAQ,CAAI,KAAwB;QACnC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,WAAW,CAAI,IAAmC;QACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC9C,IAAI,IAAI,CAAC,SAAS,YAAY,YAAY,EAAE,CAAC;oBAC5C,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACxC,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC/B,QAAQ,GAAG,IAAK,IAAkB,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,OAAO,CAAI,IAAmC,EAAE,KAAS;QACxD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,QAAQ,CAAI,KAAwB,EAAE,KAAQ;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAI,WAAwB,EAAE,KAAS;QAC7C,IAAI,WAAW,YAAY,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,YAA4B,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IAED,MAAM,CAAI,WAAwB;QACjC,IAAI,WAAW,YAAY,cAAc,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAI,WAAwB;QAChC,IAAI,WAAW,YAAY,cAAc,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;YAC5D,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACP,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;YAC3D,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;CAED","sourcesContent":["import type { AbstractType, Type } from '../utils/typeof.js';\n\n\nexport class InjectionToken<T> {\n\tconstructor(public token: string) { }\n\n\twithType<V>(): InjectionToken<V> {\n\t\treturn this;\n\t}\n}\n\nexport type Provider<T> = Type<T> | AbstractType<T> | InjectionToken<T>;\n\nconst REQUIRE_INIT = Symbol('REQUIRE_INIT');\n\nexport class InjectionProvider {\n\n\tprivate readonly types = new Map<Type<any> | AbstractType<any>, any>();\n\tprivate readonly tokens = new Map<InjectionToken<any>, any>();\n\n\tconstructor(private parent?: InjectionProvider) { }\n\n\tfork(): InjectionProvider {\n\t\treturn new InjectionProvider(this);\n\t}\n\n\thasToken<T>(token: InjectionToken<T>): InjectionProvider | false {\n\t\treturn this.tokens.has(token) ? this : false;\n\t}\n\n\thasType<T>(type: Type<any> | AbstractType<any>): InjectionProvider | false {\n\t\treturn this.types.has(type) ? this : false;\n\t}\n\n\tgetToken<T>(token: InjectionToken<T>): T | undefined {\n\t\tlet value = this.tokens.get(token);\n\t\tif (value === undefined && this.parent) {\n\t\t\tvalue = this.parent.getToken(token);\n\t\t}\n\t\treturn value;\n\t}\n\n\tgetInstance<T>(type: Type<any> | AbstractType<any>): T {\n\t\tlet instance = this.types.get(type);\n\t\tif (instance === undefined) {\n\t\t\tfor (const providerType of this.types.keys()) {\n\t\t\t\tif (type.prototype instanceof providerType) {\n\t\t\t\t\tinstance = this.types.get(providerType);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (instance === REQUIRE_INIT) {\n\t\t\tinstance = new (type as Type<any>)();\n\t\t\tthis.types.set(type, instance);\n\t\t} else if (instance === undefined && this.parent) {\n\t\t\tinstance = this.parent.getInstance(type);\n\t\t}\n\t\treturn instance;\n\t}\n\n\tsetType<T>(type: Type<any> | AbstractType<any>, value?: T): void {\n\t\tthis.types.set(type, value ?? REQUIRE_INIT);\n\t}\n\n\tsetToken<T>(token: InjectionToken<T>, value: T): void {\n\t\tthis.tokens.set(token, value);\n\t}\n\n\tprovide<T>(typeOrToken: Provider<T>, value?: T) {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\tthis.setToken(typeOrToken, value);\n\t\t} else {\n\t\t\tthis.setType(typeOrToken, value ?? REQUIRE_INIT as unknown as T);\n\t\t}\n\t}\n\n\tinject<T>(typeOrToken: Provider<T>): T | undefined {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\treturn this.getToken(typeOrToken);\n\t\t}\n\t\treturn this.getInstance(typeOrToken);\n\t}\n\n\tclear<T>(typeOrToken: Provider<T>): void {\n\t\tif (typeOrToken instanceof InjectionToken) {\n\t\t\tconst provider = this.parent?.hasToken(typeOrToken) || this;\n\t\t\tprovider.tokens.delete(typeOrToken);\n\t\t} else {\n\t\t\tconst provider = this.parent?.hasType(typeOrToken) || this;\n\t\t\tprovider.types.delete(typeOrToken);\n\t\t}\n\t}\n\n}\n"]}
@@ -1,17 +1,21 @@
1
+ import { Context, ReactiveScope, ReadOnlyScope, Scope, ScopeSubscription, ValueChangedCallback } from '@ibyar/expressions';
1
2
  import { HTMLComponent } from '../component/custom-element.js';
3
+ import { InjectionToken } from '../di/provider.js';
2
4
  import { TemplateRef } from '../linker/template-ref.js';
3
5
  import { ViewContainerRef } from '../linker/view-container-ref.js';
4
6
  import { AuroraZone } from '../zone/zone.js';
7
+ export declare const NATIVE_HOST_TOKEN: InjectionToken<HTMLElement>;
8
+ export declare const DIRECTIVE_HOST_TOKEN: InjectionToken<HTMLComponent<any> | StructuralDirective>;
9
+ export declare const SUCCESSORS_TOKEN: InjectionToken<Record<string, TemplateRef>>;
5
10
  /**
6
11
  * A structural directive selector as '*if' '*for'
7
12
  */
8
13
  export declare class StructuralDirective {
14
+ protected zone: AuroraZone;
9
15
  protected templateRef: TemplateRef;
10
- protected viewContainerRef: ViewContainerRef;
11
16
  protected host: HTMLComponent<any> | StructuralDirective;
12
- protected _zone: AuroraZone;
13
17
  private successors;
14
- constructor(templateRef: TemplateRef, viewContainerRef: ViewContainerRef, host: HTMLComponent<any> | StructuralDirective, _zone: AuroraZone, successors: Record<string, TemplateRef>);
18
+ protected viewContainerRef: ViewContainerRef;
15
19
  getSuccessor(name: string): TemplateRef | undefined;
16
20
  }
17
21
  /**
@@ -19,15 +23,20 @@ export declare class StructuralDirective {
19
23
  */
20
24
  export declare class AttributeDirective {
21
25
  protected el: HTMLElement;
22
- protected _zone: AuroraZone;
23
- constructor(el: HTMLElement, _zone: AuroraZone);
26
+ protected zone: AuroraZone;
24
27
  }
25
- /**
26
- * An attributes directive on structural directive
27
- */
28
- export declare class AttributeOnStructuralDirective {
29
- protected directive: StructuralDirective;
30
- protected _zone: AuroraZone;
31
- constructor(directive: StructuralDirective, _zone: AuroraZone);
28
+ export declare class ReactiveSignalScope<T extends Context> extends ReactiveScope<T> {
29
+ static for<T extends Context>(context: T, propertyKeys?: (keyof T)[]): ReactiveSignalScope<T>;
30
+ static blockScope<T extends Context>(propertyKeys?: (keyof T)[]): ReactiveSignalScope<T>;
31
+ static scopeForThis<T extends Context>(ctx: T, propertyKeys?: (keyof T)[]): Scope<{
32
+ this: T;
33
+ }>;
34
+ static readOnlyScopeForThis<T extends Context>(ctx: T, propertyKeys?: (keyof T)[]): ReadOnlyScope<{
35
+ this: T;
36
+ }>;
37
+ get(propertyKey: keyof T): any;
38
+ set(propertyKey: keyof T, newValue: any, receiver?: any): boolean;
39
+ subscribe(propertyKey: keyof T, callback: ValueChangedCallback): ScopeSubscription<T>;
40
+ unsubscribe(propertyKey?: keyof T | undefined, subscription?: ScopeSubscription<T> | undefined): void;
32
41
  }
33
42
  //# sourceMappingURL=directive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../../src/core/directive/directive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,qBAAa,mBAAmB;IAE9B,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB;IAC5C,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,mBAAmB;IACxD,SAAS,CAAC,KAAK,EAAE,UAAU;IAC3B,OAAO,CAAC,UAAU;gBAJR,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,mBAAmB,EAC9C,KAAK,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAGhD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAInD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAClB,SAAS,CAAC,EAAE,EAAE,WAAW;IAAE,SAAS,CAAC,KAAK,EAAE,UAAU;gBAA5C,EAAE,EAAE,WAAW,EAAY,KAAK,EAAE,UAAU;CAClE;AAED;;GAEG;AACH,qBAAa,8BAA8B;IAC9B,SAAS,CAAC,SAAS,EAAE,mBAAmB;IAAE,SAAS,CAAC,KAAK,EAAE,UAAU;gBAA3D,SAAS,EAAE,mBAAmB,EAAY,KAAK,EAAE,UAAU;CACjF"}
1
+ {"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../../src/core/directive/directive.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EACP,aAAa,EAAE,aAAa,EAAE,KAAK,EACnC,iBAAiB,EAAE,oBAAoB,EACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,eAAO,MAAM,iBAAiB,6BAAiD,CAAC;AAChF,eAAO,MAAM,oBAAoB,0DAAiF,CAAC;AACnH,eAAO,MAAM,gBAAgB,6CAAsE,CAAC;AAEpG;;GAEG;AACH,qBAAa,mBAAmB;IAC/B,SAAS,CAAC,IAAI,aAAsB;IACpC,SAAS,CAAC,WAAW,cAAuB;IAC5C,SAAS,CAAC,IAAI,2CAAiC;IAC/C,OAAO,CAAC,UAAU,CAA6B;IAC/C,SAAS,CAAC,gBAAgB,mBAA4B;IAEtD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAInD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC9B,SAAS,CAAC,EAAE,cAA8B;IAC1C,SAAS,CAAC,IAAI,aAAsB;CACpC;AAGD,qBAAa,mBAAmB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAE3E,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;IAIpE,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;IAI/D,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;;;IAUzE,MAAM,CAAC,oBAAoB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;;;IAUxE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;IAQxB,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO;IAUjE,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,oBAAoB,GAAG,iBAAiB,CAAC,CAAC,CAAC;IASrF,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;CAW9G"}
@@ -1,19 +1,21 @@
1
+ import { isReactive, isSignal, ReactiveScope, ReadOnlyScope, Scope } from '@ibyar/expressions';
2
+ import { inject } from '../di/inject.js';
3
+ import { InjectionToken } from '../di/provider.js';
4
+ import { TemplateRef } from '../linker/template-ref.js';
5
+ import { ViewContainerRef } from '../linker/view-container-ref.js';
6
+ import { AuroraZone } from '../zone/zone.js';
7
+ export const NATIVE_HOST_TOKEN = new InjectionToken('NATIVE_HOST');
8
+ export const DIRECTIVE_HOST_TOKEN = new InjectionToken('DIRECTIVE_HOST');
9
+ export const SUCCESSORS_TOKEN = new InjectionToken('SUCCESSORS_TOKEN');
1
10
  /**
2
11
  * A structural directive selector as '*if' '*for'
3
12
  */
4
13
  export class StructuralDirective {
5
- templateRef;
6
- viewContainerRef;
7
- host;
8
- _zone;
9
- successors;
10
- constructor(templateRef, viewContainerRef, host, _zone, successors) {
11
- this.templateRef = templateRef;
12
- this.viewContainerRef = viewContainerRef;
13
- this.host = host;
14
- this._zone = _zone;
15
- this.successors = successors;
16
- }
14
+ zone = inject(AuroraZone);
15
+ templateRef = inject(TemplateRef);
16
+ host = inject(DIRECTIVE_HOST_TOKEN);
17
+ successors = inject(SUCCESSORS_TOKEN);
18
+ viewContainerRef = inject(ViewContainerRef);
17
19
  getSuccessor(name) {
18
20
  return this.successors[name];
19
21
  }
@@ -22,22 +24,69 @@ export class StructuralDirective {
22
24
  * An attributes directive selector as '[class] [style]'
23
25
  */
24
26
  export class AttributeDirective {
25
- el;
26
- _zone;
27
- constructor(el, _zone) {
28
- this.el = el;
29
- this._zone = _zone;
30
- }
27
+ el = inject(NATIVE_HOST_TOKEN);
28
+ zone = inject(AuroraZone);
31
29
  }
32
- /**
33
- * An attributes directive on structural directive
34
- */
35
- export class AttributeOnStructuralDirective {
36
- directive;
37
- _zone;
38
- constructor(directive, _zone) {
39
- this.directive = directive;
40
- this._zone = _zone;
30
+ export class ReactiveSignalScope extends ReactiveScope {
31
+ static for(context, propertyKeys) {
32
+ return new ReactiveSignalScope(context, propertyKeys);
33
+ }
34
+ static blockScope(propertyKeys) {
35
+ return new ReactiveSignalScope({}, propertyKeys);
36
+ }
37
+ static scopeForThis(ctx, propertyKeys) {
38
+ const thisScope = ReactiveSignalScope.for(ctx, propertyKeys);
39
+ const thisCtx = {
40
+ 'this': ctx,
41
+ };
42
+ const rootScope = Scope.for(thisCtx, ['this']);
43
+ rootScope.setInnerScope('this', thisScope);
44
+ return rootScope;
45
+ }
46
+ static readOnlyScopeForThis(ctx, propertyKeys) {
47
+ const thisScope = ReactiveSignalScope.for(ctx, propertyKeys);
48
+ const thisCtx = {
49
+ 'this': ctx,
50
+ };
51
+ const rootScope = ReadOnlyScope.for(thisCtx, ['this']);
52
+ rootScope.setInnerScope('this', thisScope);
53
+ return rootScope;
54
+ }
55
+ get(propertyKey) {
56
+ const value = super.get(propertyKey);
57
+ if (isReactive(value)) {
58
+ return value.get();
59
+ }
60
+ return value;
61
+ }
62
+ set(propertyKey, newValue, receiver) {
63
+ const value = Reflect.get(this._ctx, propertyKey);
64
+ if (isSignal(value)) {
65
+ value.set(newValue);
66
+ return true;
67
+ }
68
+ else {
69
+ return super.set(propertyKey, newValue, receiver);
70
+ }
71
+ }
72
+ subscribe(propertyKey, callback) {
73
+ const value = Reflect.get(this._ctx, propertyKey);
74
+ if (isReactive(value)) {
75
+ return value.subscribe(callback);
76
+ }
77
+ else {
78
+ return super.subscribe(propertyKey, callback);
79
+ }
80
+ }
81
+ unsubscribe(propertyKey, subscription) {
82
+ if (propertyKey) {
83
+ const value = Reflect.get(this._ctx, propertyKey);
84
+ if (isReactive(value)) {
85
+ value.getScope().unsubscribe(value.getIndex(), subscription);
86
+ return;
87
+ }
88
+ }
89
+ super.unsubscribe(propertyKey, subscription);
41
90
  }
42
91
  }
43
92
  //# sourceMappingURL=directive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../../src/core/directive/directive.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAEpB;IACA;IACA;IACA;IACF;IALT,YACW,WAAwB,EACxB,gBAAkC,EAClC,IAA8C,EAC9C,KAAiB,EACnB,UAAuC;QAJrC,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,SAAI,GAAJ,IAAI,CAA0C;QAC9C,UAAK,GAAL,KAAK,CAAY;QACnB,eAAU,GAAV,UAAU,CAA6B;IAC5C,CAAC;IAEL,YAAY,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CAED;AAED;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACR;IAA2B;IAAjD,YAAsB,EAAe,EAAY,KAAiB;QAA5C,OAAE,GAAF,EAAE,CAAa;QAAY,UAAK,GAAL,KAAK,CAAY;IAAI,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,OAAO,8BAA8B;IACpB;IAA0C;IAAhE,YAAsB,SAA8B,EAAY,KAAiB;QAA3D,cAAS,GAAT,SAAS,CAAqB;QAAY,UAAK,GAAL,KAAK,CAAY;IAAI,CAAC;CACtF","sourcesContent":["\nimport { HTMLComponent } from '../component/custom-element.js';\nimport { TemplateRef } from '../linker/template-ref.js';\nimport { ViewContainerRef } from '../linker/view-container-ref.js';\nimport { AuroraZone } from '../zone/zone.js';\n\n/**\n * A structural directive selector as '*if' '*for'\n */\nexport class StructuralDirective {\n\tconstructor(\n\t\tprotected templateRef: TemplateRef,\n\t\tprotected viewContainerRef: ViewContainerRef,\n\t\tprotected host: HTMLComponent<any> | StructuralDirective,\n\t\tprotected _zone: AuroraZone,\n\t\tprivate successors: Record<string, TemplateRef>,\n\t) { }\n\n\tgetSuccessor(name: string): TemplateRef | undefined {\n\t\treturn this.successors[name];\n\t}\n\n}\n\n/**\n * An attributes directive selector as '[class] [style]'\n */\nexport class AttributeDirective {\n\tconstructor(protected el: HTMLElement, protected _zone: AuroraZone) { }\n}\n\n/**\n * An attributes directive on structural directive\n */\nexport class AttributeOnStructuralDirective {\n\tconstructor(protected directive: StructuralDirective, protected _zone: AuroraZone) { }\n}\n"]}
1
+ {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../../src/core/directive/directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tContext, isReactive, isSignal,\n\tReactiveScope, ReadOnlyScope, Scope,\n\tScopeSubscription, ValueChangedCallback\n} from '@ibyar/expressions';\nimport { HTMLComponent } from '../component/custom-element.js';\nimport { inject } from '../di/inject.js';\nimport { InjectionToken } from '../di/provider.js';\nimport { TemplateRef } from '../linker/template-ref.js';\nimport { ViewContainerRef } from '../linker/view-container-ref.js';\nimport { AuroraZone } from '../zone/zone.js';\n\nexport const NATIVE_HOST_TOKEN = new InjectionToken<HTMLElement>('NATIVE_HOST');\nexport const DIRECTIVE_HOST_TOKEN = new InjectionToken<HTMLComponent<any> | StructuralDirective>('DIRECTIVE_HOST');\nexport const SUCCESSORS_TOKEN = new InjectionToken<Record<string, TemplateRef>>('SUCCESSORS_TOKEN');\n\n/**\n * A structural directive selector as '*if' '*for'\n */\nexport class StructuralDirective {\n\tprotected zone = inject(AuroraZone);\n\tprotected templateRef = inject(TemplateRef);\n\tprotected host = inject(DIRECTIVE_HOST_TOKEN)!;\n\tprivate successors = inject(SUCCESSORS_TOKEN)!;\n\tprotected viewContainerRef = inject(ViewContainerRef);\n\n\tgetSuccessor(name: string): TemplateRef | undefined {\n\t\treturn this.successors[name];\n\t}\n\n}\n\n/**\n * An attributes directive selector as '[class] [style]'\n */\nexport class AttributeDirective {\n\tprotected el = inject(NATIVE_HOST_TOKEN)!;\n\tprotected zone = inject(AuroraZone);\n}\n\n\nexport class ReactiveSignalScope<T extends Context> extends ReactiveScope<T> {\n\n\tstatic for<T extends Context>(context: T, propertyKeys?: (keyof T)[]) {\n\t\treturn new ReactiveSignalScope(context, propertyKeys);\n\t}\n\n\tstatic blockScope<T extends Context>(propertyKeys?: (keyof T)[]) {\n\t\treturn new ReactiveSignalScope({} as T, propertyKeys);\n\t}\n\n\tstatic scopeForThis<T extends Context>(ctx: T, propertyKeys?: (keyof T)[]) {\n\t\tconst thisScope = ReactiveSignalScope.for(ctx, propertyKeys);\n\t\tconst thisCtx = {\n\t\t\t'this': ctx,\n\t\t};\n\t\tconst rootScope = Scope.for(thisCtx, ['this']);\n\t\trootScope.setInnerScope('this', thisScope);\n\t\treturn rootScope;\n\t}\n\n\tstatic readOnlyScopeForThis<T extends Context>(ctx: T, propertyKeys?: (keyof T)[]) {\n\t\tconst thisScope = ReactiveSignalScope.for(ctx, propertyKeys);\n\t\tconst thisCtx = {\n\t\t\t'this': ctx,\n\t\t};\n\t\tconst rootScope = ReadOnlyScope.for(thisCtx, ['this']);\n\t\trootScope.setInnerScope('this', thisScope);\n\t\treturn rootScope;\n\t}\n\n\toverride get(propertyKey: keyof T) {\n\t\tconst value = super.get(propertyKey);\n\t\tif (isReactive(value)) {\n\t\t\treturn value.get();\n\t\t}\n\t\treturn value;\n\t}\n\n\toverride set(propertyKey: keyof T, newValue: any, receiver?: any): boolean {\n\t\tconst value = Reflect.get(this._ctx, propertyKey) as any;\n\t\tif (isSignal(value)) {\n\t\t\tvalue.set(newValue);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn super.set(propertyKey, newValue, receiver);\n\t\t}\n\t}\n\n\toverride subscribe(propertyKey: keyof T, callback: ValueChangedCallback): ScopeSubscription<T> {\n\t\tconst value = Reflect.get(this._ctx, propertyKey) as any;\n\t\tif (isReactive(value)) {\n\t\t\treturn value.subscribe(callback);\n\t\t} else {\n\t\t\treturn super.subscribe(propertyKey, callback);\n\t\t}\n\t}\n\n\toverride unsubscribe(propertyKey?: keyof T | undefined, subscription?: ScopeSubscription<T> | undefined): void {\n\t\tif (propertyKey) {\n\t\t\tconst value = Reflect.get(this._ctx, propertyKey) as any;\n\t\t\tif (isReactive(value)) {\n\t\t\t\tvalue.getScope().unsubscribe(value.getIndex(), subscription);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tsuper.unsubscribe(propertyKey, subscription);\n\t}\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../../src/core/html/deserialize.ts"],"names":[],"mappings":"AAAA,OAAO,EACgD,OAAO,EAI7D,MAAM,iBAAiB,CAAC;AA6EzB,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,QAMvD"}
1
+ {"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../../src/core/html/deserialize.ts"],"names":[],"mappings":"AAAA,OAAO,EACgD,OAAO,EAI7D,MAAM,iBAAiB,CAAC;AAqFzB,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,QAMvD"}
@@ -18,6 +18,11 @@ function deserializeLiveAttribute(attr) {
18
18
  attr.expression = deserialize(attr.expression);
19
19
  }
20
20
  }
21
+ function deserializeAssignmentAttributeUpdateElement(attr) {
22
+ if (attr.expression) {
23
+ attr.expression = deserialize(attr.expression);
24
+ }
25
+ }
21
26
  function deserializeLiveAttributeUpdateElement(attr) {
22
27
  if (attr.expression) {
23
28
  attr.expression = deserialize(attr.expression);
@@ -34,6 +39,7 @@ function deserializeAttributeDirectives(directive) {
34
39
  directive.outputs?.forEach(deserializeOutputExpression);
35
40
  directive.twoWayBinding?.forEach(deserializeLiveAttribute);
36
41
  directive.templateAttrs?.forEach(deserializeLiveAttributeUpdateElement);
42
+ directive.attributes?.forEach(deserializeAssignmentAttributeUpdateElement);
37
43
  }
38
44
  function deserializeBaseNode(base) {
39
45
  base.inputs?.forEach(deserializeLiveAttributeUpdateElement);
@@ -41,6 +47,7 @@ function deserializeBaseNode(base) {
41
47
  base.twoWayBinding?.forEach(deserializeLiveAttribute);
42
48
  base.templateAttrs?.forEach(deserializeLiveAttributeUpdateElement);
43
49
  base.attributeDirectives?.forEach(deserializeAttributeDirectives);
50
+ base.attributes?.forEach(deserializeAssignmentAttributeUpdateElement);
44
51
  }
45
52
  function deserializeChild(child) {
46
53
  if (child instanceof DomElementNode) {
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../../src/core/html/deserialize.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tBaseNode, DomStructuralDirectiveNode, DomElementNode, DomNode,\n\tDomFragmentNode, DomParentNode, ElementAttribute,\n\tisLiveTextContent, LiveAttribute, LiveTextContent,\n\tDomAttributeDirectiveNode, LocalTemplateVariables\n} from '@ibyar/elements';\n\nimport type { DomStructuralDirectiveNodeUpgrade } from '@ibyar/elements/node.js';\nimport { deserialize } from '@ibyar/expressions';\nimport { getPipelineNames } from './expression.js';\n\nfunction deserializeLiveText(text: LiveTextContent) {\n\tif (text.expression) {\n\t\ttext.expression = deserialize(text.expression) as typeof text.expression;\n\t\ttext.pipelineNames = getPipelineNames(text.expression.getRight());\n\t}\n}\n\nfunction deserializeLocalTemplateVariables(local: LocalTemplateVariables) {\n\tlocal.variables?.forEach(variable => {\n\t\tvariable.expression = deserialize(variable.expression) as typeof variable.expression;\n\t\tvariable.pipelineNames = getPipelineNames(variable.expression.getRight());\n\t});\n}\n\nfunction deserializeLiveAttribute(attr: LiveAttribute) {\n\tif (attr.expression) {\n\t\tattr.expression = deserialize(attr.expression) as typeof attr.expression;\n\t}\n}\n\nfunction deserializeLiveAttributeUpdateElement(attr: LiveAttribute) {\n\tif (attr.expression) {\n\t\tattr.expression = deserialize(attr.expression) as typeof attr.expression;\n\t\tattr.pipelineNames = getPipelineNames(attr.expression.getRight());\n\t}\n}\n\nfunction deserializeOutputExpression(attr: ElementAttribute<string, string>) {\n\tif (attr.expression) {\n\t\tattr.expression = deserialize(attr.expression) as typeof attr.expression;\n\t}\n}\n\nfunction deserializeAttributeDirectives(directive: DomAttributeDirectiveNode) {\n\tdirective.inputs?.forEach(deserializeLiveAttributeUpdateElement);\n\tdirective.outputs?.forEach(deserializeOutputExpression);\n\tdirective.twoWayBinding?.forEach(deserializeLiveAttribute);\n\tdirective.templateAttrs?.forEach(deserializeLiveAttributeUpdateElement);\n}\n\nfunction deserializeBaseNode(base: BaseNode) {\n\tbase.inputs?.forEach(deserializeLiveAttributeUpdateElement);\n\tbase.outputs?.forEach(deserializeOutputExpression);\n\tbase.twoWayBinding?.forEach(deserializeLiveAttribute);\n\tbase.templateAttrs?.forEach(deserializeLiveAttributeUpdateElement);\n\tbase.attributeDirectives?.forEach(deserializeAttributeDirectives);\n}\n\nfunction deserializeChild(child: DomNode) {\n\tif (child instanceof DomElementNode) {\n\t\t// DomElementNode\n\t\tdeserializeBaseNode(child);\n\t\tdeserializeDomParentNode(child);\n\t} else if (child instanceof DomStructuralDirectiveNode) {\n\t\t(child as DomStructuralDirectiveNodeUpgrade).templateExpressions = (child as DomStructuralDirectiveNodeUpgrade).templateExpressions?.map(deserialize) ?? [];\n\t\tdeserializeChild(child.node);\n\t\tdeserializeBaseNode(child);\n\t\tchild.successors?.forEach(deserializeChild);\n\t} else if (isLiveTextContent(child)) {\n\t\tdeserializeLiveText(child);\n\t} else if (child instanceof DomFragmentNode) {\n\t\tdeserializeDomParentNode(child);\n\t} else if (child instanceof LocalTemplateVariables) {\n\t\tdeserializeLocalTemplateVariables(child);\n\t}\n}\n\nfunction deserializeDomParentNode(parent: DomParentNode) {\n\tparent.children?.forEach(deserializeChild);\n}\n\nexport function deserializeExpressionNodes(node: DomNode) {\n\tif (node instanceof DomFragmentNode) {\n\t\tdeserializeDomParentNode(node);\n\t} else {\n\t\tdeserializeChild(node);\n\t}\n}\n"]}
1
+ {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../../src/core/html/deserialize.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tBaseNode, DomStructuralDirectiveNode, DomElementNode, DomNode,\n\tDomFragmentNode, DomParentNode, ElementAttribute,\n\tisLiveTextContent, LiveAttribute, LiveTextContent,\n\tDomAttributeDirectiveNode, LocalTemplateVariables\n} from '@ibyar/elements';\n\nimport type { DomStructuralDirectiveNodeUpgrade } from '@ibyar/elements/node.js';\nimport { deserialize } from '@ibyar/expressions';\nimport { getPipelineNames } from './expression.js';\n\nfunction deserializeLiveText(text: LiveTextContent) {\n\tif (text.expression) {\n\t\ttext.expression = deserialize(text.expression) as typeof text.expression;\n\t\ttext.pipelineNames = getPipelineNames(text.expression.getRight());\n\t}\n}\n\nfunction deserializeLocalTemplateVariables(local: LocalTemplateVariables) {\n\tlocal.variables?.forEach(variable => {\n\t\tvariable.expression = deserialize(variable.expression) as typeof variable.expression;\n\t\tvariable.pipelineNames = getPipelineNames(variable.expression.getRight());\n\t});\n}\n\nfunction deserializeLiveAttribute(attr: LiveAttribute) {\n\tif (attr.expression) {\n\t\tattr.expression = deserialize(attr.expression) as typeof attr.expression;\n\t}\n}\n\nfunction deserializeAssignmentAttributeUpdateElement(attr: ElementAttribute<string, string | number | boolean | object>) {\n\tif (attr.expression) {\n\t\tattr.expression = deserialize(attr.expression) as typeof attr.expression;\n\t}\n}\n\nfunction deserializeLiveAttributeUpdateElement(attr: LiveAttribute) {\n\tif (attr.expression) {\n\t\tattr.expression = deserialize(attr.expression) as typeof attr.expression;\n\t\tattr.pipelineNames = getPipelineNames(attr.expression.getRight());\n\t}\n}\n\nfunction deserializeOutputExpression(attr: ElementAttribute<string, string>) {\n\tif (attr.expression) {\n\t\tattr.expression = deserialize(attr.expression) as typeof attr.expression;\n\t}\n}\n\nfunction deserializeAttributeDirectives(directive: DomAttributeDirectiveNode) {\n\tdirective.inputs?.forEach(deserializeLiveAttributeUpdateElement);\n\tdirective.outputs?.forEach(deserializeOutputExpression);\n\tdirective.twoWayBinding?.forEach(deserializeLiveAttribute);\n\tdirective.templateAttrs?.forEach(deserializeLiveAttributeUpdateElement);\n\tdirective.attributes?.forEach(deserializeAssignmentAttributeUpdateElement);\n}\n\nfunction deserializeBaseNode(base: BaseNode) {\n\tbase.inputs?.forEach(deserializeLiveAttributeUpdateElement);\n\tbase.outputs?.forEach(deserializeOutputExpression);\n\tbase.twoWayBinding?.forEach(deserializeLiveAttribute);\n\tbase.templateAttrs?.forEach(deserializeLiveAttributeUpdateElement);\n\tbase.attributeDirectives?.forEach(deserializeAttributeDirectives);\n\tbase.attributes?.forEach(deserializeAssignmentAttributeUpdateElement);\n}\n\nfunction deserializeChild(child: DomNode) {\n\tif (child instanceof DomElementNode) {\n\t\t// DomElementNode\n\t\tdeserializeBaseNode(child);\n\t\tdeserializeDomParentNode(child);\n\t} else if (child instanceof DomStructuralDirectiveNode) {\n\t\t(child as DomStructuralDirectiveNodeUpgrade).templateExpressions = (child as DomStructuralDirectiveNodeUpgrade).templateExpressions?.map(deserialize) ?? [];\n\t\tdeserializeChild(child.node);\n\t\tdeserializeBaseNode(child);\n\t\tchild.successors?.forEach(deserializeChild);\n\t} else if (isLiveTextContent(child)) {\n\t\tdeserializeLiveText(child);\n\t} else if (child instanceof DomFragmentNode) {\n\t\tdeserializeDomParentNode(child);\n\t} else if (child instanceof LocalTemplateVariables) {\n\t\tdeserializeLocalTemplateVariables(child);\n\t}\n}\n\nfunction deserializeDomParentNode(parent: DomParentNode) {\n\tparent.children?.forEach(deserializeChild);\n}\n\nexport function deserializeExpressionNodes(node: DomNode) {\n\tif (node instanceof DomFragmentNode) {\n\t\tdeserializeDomParentNode(node);\n\t} else {\n\t\tdeserializeChild(node);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/core/html/expression.ts"],"names":[],"mappings":"AAAA,OAAO,EAEsC,OAAO,EAKnD,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEN,cAAc,EAMd,MAAM,oBAAoB,CAAC;AAoF5B,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"}
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/core/html/expression.ts"],"names":[],"mappings":"AAAA,OAAO,EAEsC,OAAO,EAKnD,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEN,cAAc,EAMd,MAAM,oBAAoB,CAAC;AAoF5B,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,cAAc,GAAG,MAAM,EAAE,GAAG,SAAS,CAWtF;AA8HD,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"}