@ibyar/core 0.8.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/annotation/context.d.ts +41 -0
  2. package/annotation/context.d.ts.map +1 -0
  3. package/annotation/context.js +79 -0
  4. package/annotation/context.js.map +1 -0
  5. package/annotation/decorators.d.ts +20 -285
  6. package/annotation/decorators.d.ts.map +1 -0
  7. package/annotation/decorators.js +92 -84
  8. package/annotation/decorators.js.map +1 -1
  9. package/annotation/options.d.ts +275 -0
  10. package/annotation/options.d.ts.map +1 -0
  11. package/annotation/options.js +2 -0
  12. package/annotation/options.js.map +1 -0
  13. package/binding/binding.expressions.d.ts +1 -0
  14. package/binding/binding.expressions.d.ts.map +1 -0
  15. package/binding/binding.expressions.js +138 -125
  16. package/binding/binding.expressions.js.map +1 -1
  17. package/component/component.d.ts +12 -11
  18. package/component/component.d.ts.map +1 -0
  19. package/component/component.js +37 -44
  20. package/component/component.js.map +1 -1
  21. package/component/custom-element.d.ts +1 -0
  22. package/component/custom-element.d.ts.map +1 -0
  23. package/component/events.d.ts +1 -0
  24. package/component/events.d.ts.map +1 -0
  25. package/component/events.js +4 -3
  26. package/component/events.js.map +1 -1
  27. package/component/lifecycle.d.ts +1 -0
  28. package/component/lifecycle.d.ts.map +1 -0
  29. package/component/reflect.d.ts +12 -15
  30. package/component/reflect.d.ts.map +1 -0
  31. package/component/reflect.js +27 -47
  32. package/component/reflect.js.map +1 -1
  33. package/context/stack.d.ts +1 -0
  34. package/context/stack.d.ts.map +1 -0
  35. package/context/subscription.d.ts +1 -0
  36. package/context/subscription.d.ts.map +1 -0
  37. package/directive/directive.d.ts +1 -0
  38. package/directive/directive.d.ts.map +1 -0
  39. package/directive/directive.js +8 -0
  40. package/directive/directive.js.map +1 -1
  41. package/directive/parser.d.ts +1 -0
  42. package/directive/parser.d.ts.map +1 -0
  43. package/directive/parser.js +9 -7
  44. package/directive/parser.js.map +1 -1
  45. package/directive/providers.d.ts +1 -0
  46. package/directive/providers.d.ts.map +1 -0
  47. package/directive/providers.js +2 -1
  48. package/directive/providers.js.map +1 -1
  49. package/html/deserialize.d.ts +1 -0
  50. package/html/deserialize.d.ts.map +1 -0
  51. package/html/expression.d.ts +1 -0
  52. package/html/expression.d.ts.map +1 -0
  53. package/html/expression.js +2 -2
  54. package/html/expression.js.map +1 -1
  55. package/html/types.d.ts +1 -0
  56. package/html/types.d.ts.map +1 -0
  57. package/index.d.ts +2 -2
  58. package/index.d.ts.map +1 -0
  59. package/index.js +1 -2
  60. package/index.js.map +1 -1
  61. package/linker/change-detector-ref.d.ts +1 -0
  62. package/linker/change-detector-ref.d.ts.map +1 -0
  63. package/linker/template-ref.d.ts +1 -0
  64. package/linker/template-ref.d.ts.map +1 -0
  65. package/linker/template-ref.js +5 -0
  66. package/linker/template-ref.js.map +1 -1
  67. package/linker/view-container-ref.d.ts +4 -2
  68. package/linker/view-container-ref.d.ts.map +1 -0
  69. package/linker/view-container-ref.js +8 -7
  70. package/linker/view-container-ref.js.map +1 -1
  71. package/linker/view-ref.d.ts +1 -0
  72. package/linker/view-ref.d.ts.map +1 -0
  73. package/linker/view-ref.js +5 -2
  74. package/linker/view-ref.js.map +1 -1
  75. package/node.d.ts +1 -0
  76. package/node.d.ts.map +1 -0
  77. package/package.json +6 -7
  78. package/pipe/pipe.d.ts +1 -0
  79. package/pipe/pipe.d.ts.map +1 -0
  80. package/pipe/pipe.js +2 -1
  81. package/pipe/pipe.js.map +1 -1
  82. package/providers/provider.d.ts +15 -13
  83. package/providers/provider.d.ts.map +1 -0
  84. package/providers/provider.js +13 -16
  85. package/providers/provider.js.map +1 -1
  86. package/utils/elements-util.d.ts +1 -0
  87. package/utils/elements-util.d.ts.map +1 -0
  88. package/utils/path.d.ts +1 -0
  89. package/utils/path.d.ts.map +1 -0
  90. package/utils/typeof.d.ts +3 -0
  91. package/utils/typeof.d.ts.map +1 -0
  92. package/utils/typeof.js.map +1 -1
  93. package/utils/utils.d.ts +1 -0
  94. package/utils/utils.d.ts.map +1 -0
  95. package/view/base-view.d.ts +1 -0
  96. package/view/base-view.d.ts.map +1 -0
  97. package/view/base-view.js +30 -16
  98. package/view/base-view.js.map +1 -1
  99. package/view/form-view.d.ts +1 -0
  100. package/view/form-view.d.ts.map +1 -0
  101. package/view/form-view.js +70 -67
  102. package/view/form-view.js.map +1 -1
  103. package/view/mutation.d.ts +1 -0
  104. package/view/mutation.d.ts.map +1 -0
  105. package/view/mutation.js +37 -36
  106. package/view/mutation.js.map +1 -1
  107. package/view/render.d.ts +1 -0
  108. package/view/render.d.ts.map +1 -0
  109. package/view/render.js +9 -8
  110. package/view/render.js.map +1 -1
  111. package/view/utils.d.ts +4 -3
  112. package/view/utils.d.ts.map +1 -0
  113. package/view/utils.js.map +1 -1
  114. package/view/view.d.ts +5 -4
  115. package/view/view.d.ts.map +1 -0
  116. package/view/view.js +19 -3
  117. package/view/view.js.map +1 -1
  118. package/zone/bootstrap.d.ts +1 -0
  119. package/zone/bootstrap.d.ts.map +1 -0
  120. package/zone/proxy.d.ts +1 -0
  121. package/zone/proxy.d.ts.map +1 -0
  122. package/zone/proxy.js +1 -0
  123. package/zone/proxy.js.map +1 -1
  124. package/zone/task.d.ts +1 -0
  125. package/zone/task.d.ts.map +1 -0
  126. package/zone/task.js +11 -3
  127. package/zone/task.js.map +1 -1
  128. package/zone/zone.d.ts +1 -0
  129. package/zone/zone.d.ts.map +1 -0
  130. package/zone/zone.js +8 -6
  131. package/zone/zone.js.map +1 -1
  132. package/providers/injector.d.ts +0 -10
  133. package/providers/injector.js +0 -27
  134. package/providers/injector.js.map +0 -1
@@ -1,136 +1,149 @@
1
- var OneWayAssignmentExpression_1, TwoWayAssignmentExpression_1;
2
- import { __decorate, __metadata } from "tslib";
3
- import { InfixExpressionNode, findReactiveScopeByEventMap, Scope, MemberExpression, Deserializer } from '@ibyar/expressions';
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { InfixExpressionNode, findReactiveScopeByEventMap, Scope, Deserializer } from '@ibyar/expressions';
4
3
  import { createSubscriptionDestroyer } from '../context/subscription.js';
5
4
  import { isOnDestroy } from '../component/lifecycle.js';
6
5
  import { AsyncPipeProvider, AsyncPipeScope, PipeProvider } from '../pipe/pipe.js';
7
- let OneWayAssignmentExpression = OneWayAssignmentExpression_1 = class OneWayAssignmentExpression extends InfixExpressionNode {
8
- static fromJSON(node, deserializer) {
9
- return new OneWayAssignmentExpression_1(deserializer(node.left), deserializer(node.right));
10
- }
11
- static visit(node, visitNode) {
12
- visitNode(node.left);
13
- visitNode(node.right);
14
- }
15
- constructor(left, right) {
16
- super('=:', left, right);
17
- this.rightEvents = this.right.events();
18
- }
19
- set(stack, value) {
20
- return this.left.set(stack, value);
21
- }
22
- get(stack) {
23
- const rv = this.right.get(stack);
24
- this.set(stack, rv);
25
- return rv;
26
- }
27
- subscribe(stack, pipelineNames) {
28
- const subscriptions = [];
29
- if (pipelineNames?.length) {
30
- const syncPipeScope = Scope.blockScope();
31
- const asyncPipeScope = AsyncPipeScope.blockScope();
32
- let hasAsync = false, hasSync = false;
33
- pipelineNames.forEach(pipelineName => {
34
- const scope = stack.findScope(pipelineName);
35
- const pipe = scope.get(pipelineName);
36
- if (scope instanceof AsyncPipeProvider) {
37
- hasAsync = true;
38
- asyncPipeScope.set(pipelineName, pipe);
39
- if (isOnDestroy(pipe.prototype)) {
40
- subscriptions.push(createSubscriptionDestroyer(() => asyncPipeScope.unsubscribe(pipelineName)));
6
+ export let OneWayAssignmentExpression = (() => {
7
+ let _classDecorators = [Deserializer('OneWayAssignment')];
8
+ let _classDescriptor;
9
+ let _classExtraInitializers = [];
10
+ let _classThis;
11
+ var OneWayAssignmentExpression = class extends InfixExpressionNode {
12
+ static {
13
+ __esDecorate(null, _classDescriptor = { value: this }, _classDecorators, { kind: "class", name: this.name }, null, _classExtraInitializers);
14
+ OneWayAssignmentExpression = _classThis = _classDescriptor.value;
15
+ __runInitializers(_classThis, _classExtraInitializers);
16
+ }
17
+ static fromJSON(node, deserializer) {
18
+ return new OneWayAssignmentExpression(deserializer(node.left), deserializer(node.right));
19
+ }
20
+ static visit(node, visitNode) {
21
+ visitNode(node.left);
22
+ visitNode(node.right);
23
+ }
24
+ rightEvents = this.right.events();
25
+ constructor(left, right) {
26
+ super('=:', left, right);
27
+ }
28
+ set(stack, value) {
29
+ return this.left.set(stack, value);
30
+ }
31
+ get(stack) {
32
+ const rv = this.right.get(stack);
33
+ this.set(stack, rv);
34
+ return rv;
35
+ }
36
+ subscribe(stack, pipelineNames) {
37
+ const subscriptions = [];
38
+ if (pipelineNames?.length) {
39
+ const syncPipeScope = Scope.blockScope();
40
+ const asyncPipeScope = AsyncPipeScope.blockScope();
41
+ let hasAsync = false, hasSync = false;
42
+ pipelineNames.forEach(pipelineName => {
43
+ const scope = stack.findScope(pipelineName);
44
+ const pipe = scope.get(pipelineName);
45
+ if (scope instanceof AsyncPipeProvider) {
46
+ hasAsync = true;
47
+ asyncPipeScope.set(pipelineName, pipe);
48
+ if (isOnDestroy(pipe.prototype)) {
49
+ subscriptions.push(createSubscriptionDestroyer(() => asyncPipeScope.unsubscribe(pipelineName)));
50
+ }
41
51
  }
42
- }
43
- else if (scope instanceof PipeProvider) {
44
- hasSync = true;
45
- syncPipeScope.set(pipelineName, pipe);
46
- }
52
+ else if (scope instanceof PipeProvider) {
53
+ hasSync = true;
54
+ syncPipeScope.set(pipelineName, pipe);
55
+ }
56
+ });
57
+ hasSync && stack.pushScope(syncPipeScope);
58
+ hasAsync && stack.pushScope(asyncPipeScope);
59
+ }
60
+ const tuples = findReactiveScopeByEventMap(this.rightEvents, stack);
61
+ const callback = () => this.get(stack);
62
+ tuples.forEach(tuple => {
63
+ const subscription = tuple[1].subscribe(tuple[0], callback);
64
+ subscriptions.push(subscription);
47
65
  });
48
- hasSync && stack.pushScope(syncPipeScope);
49
- hasAsync && stack.pushScope(asyncPipeScope);
50
- }
51
- const tuples = findReactiveScopeByEventMap(this.rightEvents, stack);
52
- const callback = () => this.get(stack);
53
- tuples.forEach(tuple => {
54
- const subscription = tuple[1].subscribe(tuple[0], callback);
55
- subscriptions.push(subscription);
56
- });
57
- return subscriptions;
58
- }
59
- };
60
- OneWayAssignmentExpression = OneWayAssignmentExpression_1 = __decorate([
61
- Deserializer('OneWayAssignment'),
62
- __metadata("design:paramtypes", [MemberExpression, Object])
63
- ], OneWayAssignmentExpression);
64
- export { OneWayAssignmentExpression };
66
+ return subscriptions;
67
+ }
68
+ };
69
+ return OneWayAssignmentExpression = _classThis;
70
+ })();
65
71
  /**
66
72
  * the default behavior is assign the right hand side to the left hand side.
67
73
  *
68
74
  *
69
75
  */
70
- let TwoWayAssignmentExpression = TwoWayAssignmentExpression_1 = class TwoWayAssignmentExpression extends InfixExpressionNode {
71
- static fromJSON(node, deserializer) {
72
- return new TwoWayAssignmentExpression_1(deserializer(node.left), deserializer(node.right));
73
- }
74
- static visit(node, visitNode) {
75
- visitNode(node.left);
76
- visitNode(node.right);
77
- }
78
- constructor(left, right) {
79
- super('=::', left, right);
80
- this.rightEvents = this.right.events();
81
- this.leftEvents = this.left.events();
82
- }
83
- set(stack, value) {
84
- return this.setRTL(stack, value);
85
- }
86
- get(stack) {
87
- return this.getRTL(stack);
88
- }
89
- setRTL(stack, value) {
90
- return this.left.set(stack, value);
91
- }
92
- getRTL(stack) {
93
- const rv = this.right.get(stack);
94
- this.setRTL(stack, rv);
95
- return rv;
96
- }
97
- actionRTL(stack) {
98
- return () => this.getRTL(stack);
99
- }
100
- setLTR(stack, value) {
101
- return this.right.set(stack, value);
102
- }
103
- getLTR(stack) {
104
- const lv = this.left.get(stack);
105
- this.setLTR(stack, lv);
106
- return lv;
107
- }
108
- actionLTR(stack) {
109
- return () => this.getLTR(stack);
110
- }
111
- subscribeToEvents(stack, tuples, actionCallback) {
112
- const subscriptions = [];
113
- tuples.forEach(tuple => {
114
- const subscription = tuple[1].subscribe(tuple[0], actionCallback);
115
- subscriptions.push(subscription);
116
- });
117
- return subscriptions;
118
- }
119
- subscribe(stack) {
120
- // right to left
121
- const rightTuples = findReactiveScopeByEventMap(this.rightEvents, stack);
122
- const rtlAction = this.actionRTL(stack);
123
- const rtlSubscriptions = this.subscribeToEvents(stack, rightTuples, rtlAction);
124
- // left to right
125
- const leftTuples = findReactiveScopeByEventMap(this.leftEvents, stack);
126
- const ltrAction = this.actionLTR(stack);
127
- const ltrSubscriptions = this.subscribeToEvents(stack, leftTuples, ltrAction);
128
- return rtlSubscriptions.concat(ltrSubscriptions);
129
- }
130
- };
131
- TwoWayAssignmentExpression = TwoWayAssignmentExpression_1 = __decorate([
132
- Deserializer('TwoWayAssignment'),
133
- __metadata("design:paramtypes", [MemberExpression, Object])
134
- ], TwoWayAssignmentExpression);
135
- export { TwoWayAssignmentExpression };
76
+ export let TwoWayAssignmentExpression = (() => {
77
+ let _classDecorators_1 = [Deserializer('TwoWayAssignment')];
78
+ let _classDescriptor_1;
79
+ let _classExtraInitializers_1 = [];
80
+ let _classThis_1;
81
+ var TwoWayAssignmentExpression = class extends InfixExpressionNode {
82
+ static {
83
+ __esDecorate(null, _classDescriptor_1 = { value: this }, _classDecorators_1, { kind: "class", name: this.name }, null, _classExtraInitializers_1);
84
+ TwoWayAssignmentExpression = _classThis_1 = _classDescriptor_1.value;
85
+ __runInitializers(_classThis_1, _classExtraInitializers_1);
86
+ }
87
+ static fromJSON(node, deserializer) {
88
+ return new TwoWayAssignmentExpression(deserializer(node.left), deserializer(node.right));
89
+ }
90
+ static visit(node, visitNode) {
91
+ visitNode(node.left);
92
+ visitNode(node.right);
93
+ }
94
+ rightEvents = this.right.events();
95
+ leftEvents = this.left.events();
96
+ constructor(left, right) {
97
+ super('=::', left, right);
98
+ }
99
+ set(stack, value) {
100
+ return this.setRTL(stack, value);
101
+ }
102
+ get(stack) {
103
+ return this.getRTL(stack);
104
+ }
105
+ setRTL(stack, value) {
106
+ return this.left.set(stack, value);
107
+ }
108
+ getRTL(stack) {
109
+ const rv = this.right.get(stack);
110
+ this.setRTL(stack, rv);
111
+ return rv;
112
+ }
113
+ actionRTL(stack) {
114
+ return () => this.getRTL(stack);
115
+ }
116
+ setLTR(stack, value) {
117
+ return this.right.set(stack, value);
118
+ }
119
+ getLTR(stack) {
120
+ const lv = this.left.get(stack);
121
+ this.setLTR(stack, lv);
122
+ return lv;
123
+ }
124
+ actionLTR(stack) {
125
+ return () => this.getLTR(stack);
126
+ }
127
+ subscribeToEvents(stack, tuples, actionCallback) {
128
+ const subscriptions = [];
129
+ tuples.forEach(tuple => {
130
+ const subscription = tuple[1].subscribe(tuple[0], actionCallback);
131
+ subscriptions.push(subscription);
132
+ });
133
+ return subscriptions;
134
+ }
135
+ subscribe(stack) {
136
+ // right to left
137
+ const rightTuples = findReactiveScopeByEventMap(this.rightEvents, stack);
138
+ const rtlAction = this.actionRTL(stack);
139
+ const rtlSubscriptions = this.subscribeToEvents(stack, rightTuples, rtlAction);
140
+ // left to right
141
+ const leftTuples = findReactiveScopeByEventMap(this.leftEvents, stack);
142
+ const ltrAction = this.actionLTR(stack);
143
+ const ltrSubscriptions = this.subscribeToEvents(stack, leftTuples, ltrAction);
144
+ return rtlSubscriptions.concat(ltrSubscriptions);
145
+ }
146
+ };
147
+ return TwoWayAssignmentExpression = _classThis_1;
148
+ })();
136
149
  //# sourceMappingURL=binding.expressions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binding.expressions.js","sourceRoot":"","sources":["../../../src/core/binding/binding.expressions.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tExpressionNode, InfixExpressionNode, ScopeSubscription,\n\tStack, findReactiveScopeByEventMap, ReactiveScope,\n\tContext, ValueChangedCallback, Scope,\n\tMemberExpression, Identifier, Deserializer,\n\tVisitNodeType, NodeDeserializer\n} from '@ibyar/expressions';\nimport { createSubscriptionDestroyer } from '../context/subscription.js';\nimport { isOnDestroy } from '../component/lifecycle.js';\nimport { AsyncPipeProvider, AsyncPipeScope, PipeProvider } from '../pipe/pipe.js';\n\ntype OneWayOperator = '=:';\ntype TwoWayOperator = '=::';\ntype BindingOperators = OneWayOperator | TwoWayOperator;\n\nexport interface BindingAssignment extends InfixExpressionNode<BindingOperators> {\n\tsubscribe(stack: Stack, pipelineNames?: string[]): ScopeSubscription<Context>[];\n}\n\n\n@Deserializer('OneWayAssignment')\nexport class OneWayAssignmentExpression extends InfixExpressionNode<OneWayOperator> implements BindingAssignment {\n\tstatic fromJSON(node: OneWayAssignmentExpression, deserializer: NodeDeserializer): OneWayAssignmentExpression {\n\t\treturn new OneWayAssignmentExpression(\n\t\t\tdeserializer(node.left) as MemberExpression,\n\t\t\tdeserializer(node.right)\n\t\t);\n\t}\n\tstatic visit(node: OneWayAssignmentExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\n\tdeclare protected left: MemberExpression;\n\tprivate rightEvents = this.right.events();\n\tconstructor(left: MemberExpression, right: ExpressionNode) {\n\t\tsuper('=:', left, right);\n\t}\n\tset(stack: Stack, value: any) {\n\t\treturn this.left.set(stack, value);\n\t}\n\tget(stack: Stack): any {\n\t\tconst rv = this.right.get(stack);\n\t\tthis.set(stack, rv);\n\t\treturn rv;\n\t}\n\tsubscribe(stack: Stack, pipelineNames?: string[]): ScopeSubscription<Context>[] {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\t\tif (pipelineNames?.length) {\n\t\t\tconst syncPipeScope = Scope.blockScope();\n\t\t\tconst asyncPipeScope = AsyncPipeScope.blockScope();\n\t\t\tlet hasAsync = false, hasSync = false;\n\t\t\tpipelineNames.forEach(pipelineName => {\n\t\t\t\tconst scope = stack.findScope(pipelineName);\n\t\t\t\tconst pipe = scope.get(pipelineName)!;\n\t\t\t\tif (scope instanceof AsyncPipeProvider) {\n\t\t\t\t\thasAsync = true;\n\t\t\t\t\tasyncPipeScope.set(pipelineName, pipe);\n\t\t\t\t\tif (isOnDestroy(pipe.prototype)) {\n\t\t\t\t\t\tsubscriptions.push(createSubscriptionDestroyer(() => asyncPipeScope.unsubscribe(pipelineName)));\n\t\t\t\t\t}\n\t\t\t\t} else if (scope instanceof PipeProvider) {\n\t\t\t\t\thasSync = true;\n\t\t\t\t\tsyncPipeScope.set(pipelineName, pipe);\n\t\t\t\t}\n\t\t\t});\n\t\t\thasSync && stack.pushScope(syncPipeScope);\n\t\t\thasAsync && stack.pushScope(asyncPipeScope);\n\t\t}\n\t\tconst tuples = findReactiveScopeByEventMap(this.rightEvents, stack);\n\t\tconst callback: ValueChangedCallback = () => this.get(stack);\n\t\ttuples.forEach(tuple => {\n\t\t\tconst subscription = tuple[1].subscribe(tuple[0], callback);\n\t\t\tsubscriptions.push(subscription);\n\t\t});\n\t\treturn subscriptions;\n\t}\n}\n\n\n/**\n * the default behavior is assign the right hand side to the left hand side.\n * \n * \n */\n@Deserializer('TwoWayAssignment')\nexport class TwoWayAssignmentExpression extends InfixExpressionNode<TwoWayOperator> implements BindingAssignment {\n\tstatic fromJSON(node: TwoWayAssignmentExpression, deserializer: NodeDeserializer): TwoWayAssignmentExpression {\n\t\treturn new TwoWayAssignmentExpression(\n\t\t\tdeserializer(node.left) as MemberExpression,\n\t\t\tdeserializer(node.right) as MemberExpression | Identifier\n\t\t);\n\t}\n\tstatic visit(node: TwoWayAssignmentExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\n\tdeclare protected left: MemberExpression;\n\tdeclare protected right: MemberExpression | Identifier;\n\n\tprivate rightEvents = this.right.events();\n\tprivate leftEvents = this.left.events();\n\tconstructor(left: MemberExpression, right: MemberExpression | Identifier) {\n\t\tsuper('=::', left, right);\n\t}\n\n\tset(stack: Stack, value: any) {\n\t\treturn this.setRTL(stack, value);\n\t}\n\tget(stack: Stack): any {\n\t\treturn this.getRTL(stack);\n\t}\n\n\tprivate setRTL(stack: Stack, value: any) {\n\t\treturn this.left.set(stack, value);\n\t}\n\tprivate getRTL(stack: Stack): any {\n\t\tconst rv = this.right.get(stack);\n\t\tthis.setRTL(stack, rv);\n\t\treturn rv;\n\t}\n\tprivate actionRTL(stack: Stack): ValueChangedCallback {\n\t\treturn () => this.getRTL(stack);\n\t}\n\n\tprivate setLTR(stack: Stack, value: any) {\n\t\treturn this.right.set(stack, value);\n\t}\n\tprivate getLTR(stack: Stack): any {\n\t\tconst lv = this.left.get(stack);\n\t\tthis.setLTR(stack, lv);\n\t\treturn lv;\n\t}\n\tprivate actionLTR(stack: Stack): ValueChangedCallback {\n\t\treturn () => this.getLTR(stack);\n\t}\n\n\tprivate subscribeToEvents(stack: Stack, tuples: [string, ReactiveScope<Context>][], actionCallback: ValueChangedCallback) {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\t\ttuples.forEach(tuple => {\n\t\t\tconst subscription = tuple[1].subscribe(tuple[0], actionCallback);\n\t\t\tsubscriptions.push(subscription);\n\t\t});\n\t\treturn subscriptions;\n\t}\n\n\tsubscribe(stack: Stack): ScopeSubscription<Context>[] {\n\n\t\t// right to left\n\t\tconst rightTuples = findReactiveScopeByEventMap(this.rightEvents, stack);\n\t\tconst rtlAction = this.actionRTL(stack);\n\t\tconst rtlSubscriptions = this.subscribeToEvents(stack, rightTuples, rtlAction);\n\n\t\t// left to right \n\t\tconst leftTuples = findReactiveScopeByEventMap(this.leftEvents, stack);\n\t\tconst ltrAction = this.actionLTR(stack);\n\t\tconst ltrSubscriptions = this.subscribeToEvents(stack, leftTuples, ltrAction);\n\n\t\treturn rtlSubscriptions.concat(ltrSubscriptions);\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"binding.expressions.js","sourceRoot":"","sources":["../../../src/core/binding/binding.expressions.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tExpressionNode, InfixExpressionNode, ScopeSubscription,\n\tStack, findReactiveScopeByEventMap, ReactiveScope,\n\tContext, ValueChangedCallback, Scope,\n\tMemberExpression, Identifier, Deserializer,\n\tVisitNodeType, NodeDeserializer\n} from '@ibyar/expressions';\nimport { createSubscriptionDestroyer } from '../context/subscription.js';\nimport { isOnDestroy } from '../component/lifecycle.js';\nimport { AsyncPipeProvider, AsyncPipeScope, PipeProvider } from '../pipe/pipe.js';\n\ntype OneWayOperator = '=:';\ntype TwoWayOperator = '=::';\ntype BindingOperators = OneWayOperator | TwoWayOperator;\n\nexport interface BindingAssignment extends InfixExpressionNode<BindingOperators> {\n\tsubscribe(stack: Stack, pipelineNames?: string[]): ScopeSubscription<Context>[];\n}\n\n\n@Deserializer('OneWayAssignment')\nexport class OneWayAssignmentExpression extends InfixExpressionNode<OneWayOperator> implements BindingAssignment {\n\tstatic fromJSON(node: OneWayAssignmentExpression, deserializer: NodeDeserializer): OneWayAssignmentExpression {\n\t\treturn new OneWayAssignmentExpression(\n\t\t\tdeserializer(node.left) as MemberExpression,\n\t\t\tdeserializer(node.right)\n\t\t);\n\t}\n\tstatic visit(node: OneWayAssignmentExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\n\tdeclare protected left: MemberExpression;\n\tprivate rightEvents = this.right.events();\n\tconstructor(left: MemberExpression, right: ExpressionNode) {\n\t\tsuper('=:', left, right);\n\t}\n\tset(stack: Stack, value: any) {\n\t\treturn this.left.set(stack, value);\n\t}\n\tget(stack: Stack): any {\n\t\tconst rv = this.right.get(stack);\n\t\tthis.set(stack, rv);\n\t\treturn rv;\n\t}\n\tsubscribe(stack: Stack, pipelineNames?: string[]): ScopeSubscription<Context>[] {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\t\tif (pipelineNames?.length) {\n\t\t\tconst syncPipeScope = Scope.blockScope();\n\t\t\tconst asyncPipeScope = AsyncPipeScope.blockScope();\n\t\t\tlet hasAsync = false, hasSync = false;\n\t\t\tpipelineNames.forEach(pipelineName => {\n\t\t\t\tconst scope = stack.findScope(pipelineName);\n\t\t\t\tconst pipe = scope.get(pipelineName)!;\n\t\t\t\tif (scope instanceof AsyncPipeProvider) {\n\t\t\t\t\thasAsync = true;\n\t\t\t\t\tasyncPipeScope.set(pipelineName, pipe);\n\t\t\t\t\tif (isOnDestroy(pipe.prototype)) {\n\t\t\t\t\t\tsubscriptions.push(createSubscriptionDestroyer(() => asyncPipeScope.unsubscribe(pipelineName)));\n\t\t\t\t\t}\n\t\t\t\t} else if (scope instanceof PipeProvider) {\n\t\t\t\t\thasSync = true;\n\t\t\t\t\tsyncPipeScope.set(pipelineName, pipe);\n\t\t\t\t}\n\t\t\t});\n\t\t\thasSync && stack.pushScope(syncPipeScope);\n\t\t\thasAsync && stack.pushScope(asyncPipeScope);\n\t\t}\n\t\tconst tuples = findReactiveScopeByEventMap(this.rightEvents, stack);\n\t\tconst callback: ValueChangedCallback = () => this.get(stack);\n\t\ttuples.forEach(tuple => {\n\t\t\tconst subscription = tuple[1].subscribe(tuple[0], callback);\n\t\t\tsubscriptions.push(subscription);\n\t\t});\n\t\treturn subscriptions;\n\t}\n}\n\n\n/**\n * the default behavior is assign the right hand side to the left hand side.\n * \n * \n */\n@Deserializer('TwoWayAssignment')\nexport class TwoWayAssignmentExpression extends InfixExpressionNode<TwoWayOperator> implements BindingAssignment {\n\tstatic fromJSON(node: TwoWayAssignmentExpression, deserializer: NodeDeserializer): TwoWayAssignmentExpression {\n\t\treturn new TwoWayAssignmentExpression(\n\t\t\tdeserializer(node.left) as MemberExpression,\n\t\t\tdeserializer(node.right) as MemberExpression | Identifier\n\t\t);\n\t}\n\tstatic visit(node: TwoWayAssignmentExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\n\tdeclare protected left: MemberExpression;\n\tdeclare protected right: MemberExpression | Identifier;\n\n\tprivate rightEvents = this.right.events();\n\tprivate leftEvents = this.left.events();\n\tconstructor(left: MemberExpression, right: MemberExpression | Identifier) {\n\t\tsuper('=::', left, right);\n\t}\n\n\tset(stack: Stack, value: any) {\n\t\treturn this.setRTL(stack, value);\n\t}\n\tget(stack: Stack): any {\n\t\treturn this.getRTL(stack);\n\t}\n\n\tprivate setRTL(stack: Stack, value: any) {\n\t\treturn this.left.set(stack, value);\n\t}\n\tprivate getRTL(stack: Stack): any {\n\t\tconst rv = this.right.get(stack);\n\t\tthis.setRTL(stack, rv);\n\t\treturn rv;\n\t}\n\tprivate actionRTL(stack: Stack): ValueChangedCallback {\n\t\treturn () => this.getRTL(stack);\n\t}\n\n\tprivate setLTR(stack: Stack, value: any) {\n\t\treturn this.right.set(stack, value);\n\t}\n\tprivate getLTR(stack: Stack): any {\n\t\tconst lv = this.left.get(stack);\n\t\tthis.setLTR(stack, lv);\n\t\treturn lv;\n\t}\n\tprivate actionLTR(stack: Stack): ValueChangedCallback {\n\t\treturn () => this.getLTR(stack);\n\t}\n\n\tprivate subscribeToEvents(stack: Stack, tuples: [string, ReactiveScope<Context>][], actionCallback: ValueChangedCallback) {\n\t\tconst subscriptions: ScopeSubscription<Context>[] = [];\n\t\ttuples.forEach(tuple => {\n\t\t\tconst subscription = tuple[1].subscribe(tuple[0], actionCallback);\n\t\t\tsubscriptions.push(subscription);\n\t\t});\n\t\treturn subscriptions;\n\t}\n\n\tsubscribe(stack: Stack): ScopeSubscription<Context>[] {\n\n\t\t// right to left\n\t\tconst rightTuples = findReactiveScopeByEventMap(this.rightEvents, stack);\n\t\tconst rtlAction = this.actionRTL(stack);\n\t\tconst rtlSubscriptions = this.subscribeToEvents(stack, rightTuples, rtlAction);\n\n\t\t// left to right \n\t\tconst leftTuples = findReactiveScopeByEventMap(this.leftEvents, stack);\n\t\tconst ltrAction = this.actionLTR(stack);\n\t\tconst ltrSubscriptions = this.subscribeToEvents(stack, leftTuples, ltrAction);\n\n\t\treturn rtlSubscriptions.concat(ltrSubscriptions);\n\t}\n\n}\n"]}
@@ -1,9 +1,10 @@
1
- import type { TypeOf } from '../utils/typeof.js';
1
+ import type { MetadataClass, MetadataContext } from '@ibyar/decorators';
2
+ import type { Class, TypeOf } from '../utils/typeof.js';
2
3
  import type { ZoneType } from '../zone/bootstrap.js';
3
4
  import { Tag, DomNode, DomRenderNode, DomElementNode } from '@ibyar/elements';
4
5
  import { HTMLComponent, ValueControl } from './custom-element.js';
5
6
  import { AttributeDirective, StructuralDirective } from '../directive/directive.js';
6
- import { ComponentOptions, PipeOptions, ServiceOptions, DirectiveOptions } from '../annotation/decorators.js';
7
+ import { ComponentOptions, PipeOptions, ServiceOptions, DirectiveOptions } from '../annotation/options.js';
7
8
  import { ChildRef, HostBindingRef, InputPropertyRef, ListenerRef, OutputPropertyRef, PropertyRef } from './reflect.js';
8
9
  export interface ServiceRef<T> {
9
10
  provideIn: TypeOf<CustomElementConstructor> | 'root' | 'platform' | 'any';
@@ -34,7 +35,7 @@ export interface ComponentRef<T> {
34
35
  compiledTemplate?: DomNode;
35
36
  styles: string;
36
37
  extend: Tag;
37
- viewClass: TypeOf<HTMLComponent<T>> & CustomElementConstructor;
38
+ viewClass: MetadataClass<HTMLComponent<T>> & CustomElementConstructor;
38
39
  modelClass: TypeOf<T>;
39
40
  inputs: InputPropertyRef[];
40
41
  outputs: OutputPropertyRef[];
@@ -45,10 +46,9 @@ export interface ComponentRef<T> {
45
46
  hostListeners: ListenerRef[];
46
47
  viewBindings?: DomElementNode;
47
48
  windowBindings?: DomElementNode;
48
- encapsulation: 'custom' | 'shadow-dom' | 'template' | 'shadow-dom-template';
49
+ encapsulation: 'custom' | 'shadow-dom' | 'template' | 'shadow-dom-template' | 'shadow-slot';
49
50
  isShadowDom: boolean;
50
- shadowDomMode: ShadowRootMode;
51
- shadowDomDelegatesFocus: boolean;
51
+ shadowRootInit: ShadowRootInit;
52
52
  formAssociated: boolean | TypeOf<ValueControl<any>>;
53
53
  zone?: ZoneType;
54
54
  }
@@ -58,11 +58,12 @@ export declare class Components {
58
58
  private static patchTemplate;
59
59
  private static createOutputs;
60
60
  private static parseHostNode;
61
- static defineDirective(modelClass: Function, opts: DirectiveOptions): void;
62
- static definePipe(modelClass: Function, opts: PipeOptions): void;
63
- static defineService(modelClass: Function, opts: ServiceOptions): void;
64
- static defineComponent<T extends Object>(modelClass: TypeOf<T>, opts: ComponentOptions<T>): void;
65
- static defineView<T extends HTMLElement>(viewClass: TypeOf<T>, opt: {
61
+ static defineDirective(modelClass: MetadataClass, opts: DirectiveOptions, metadata: MetadataContext): void;
62
+ static definePipe<T extends Class>(modelClass: MetadataClass<T>, opts: PipeOptions, metadata: MetadataContext): void;
63
+ static defineService<T extends Class>(modelClass: MetadataClass<T>, opts: ServiceOptions, metadata: MetadataContext): void;
64
+ static defineComponent<T extends Class>(modelClass: MetadataClass<T>, opts: ComponentOptions<T>, metadata: MetadataContext): void;
65
+ static defineView<T extends HTMLElement>(viewClass: MetadataClass<T>, opt: {
66
66
  selector: string;
67
67
  } & ElementDefinitionOptions): void;
68
68
  }
69
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/core/component/component.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,11 @@ import { findByTagName, htmlParser, templateParser, canAttachShadow, directiveRe
2
2
  import { ClassRegistryProvider } from '../providers/provider.js';
3
3
  import { initCustomElementView } from '../view/view.js';
4
4
  import { buildExpressionNodes } from '../html/expression.js';
5
- import { ListenerRef, ReflectComponents } from './reflect.js';
5
+ import { ListenerRef } from './reflect.js';
6
6
  import { deserializeExpressionNodes } from '../html/deserialize.js';
7
- export class Components {
7
+ const DEFAULT_SHADOW_ROOT_INIT = { mode: 'open', delegatesFocus: false, slotAssignment: 'named' };
8
+ class Components {
9
+ static EMPTY_LIST = Object.freeze([]);
8
10
  static emptyList() {
9
11
  return Components.EMPTY_LIST;
10
12
  }
@@ -12,7 +14,7 @@ export class Components {
12
14
  if (child instanceof DomElementNode && child.templateRefName?.name) {
13
15
  const ref = templates.find(node => child.templateRefName?.name === node.templateRefName?.name);
14
16
  if (ref?.outputs) {
15
- (child.outputs ?? (child.outputs = [])).push(...ref.outputs);
17
+ (child.outputs ??= []).push(...ref.outputs);
16
18
  }
17
19
  }
18
20
  if (child instanceof DomParentNode) {
@@ -42,7 +44,7 @@ export class Components {
42
44
  windowListeners.push(new ListenerRef(event, listener.args, listener.modelCallbackName));
43
45
  }
44
46
  else {
45
- (templateListeners[host] ?? (templateListeners[host] = [])).push(new ListenerRef(event, listener.args, listener.modelCallbackName));
47
+ (templateListeners[host] ??= []).push(new ListenerRef(event, listener.args, listener.modelCallbackName));
46
48
  }
47
49
  });
48
50
  const result = {};
@@ -73,44 +75,36 @@ export class Components {
73
75
  }
74
76
  return result;
75
77
  }
76
- static defineDirective(modelClass, opts) {
77
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelClass.prototype);
78
- Object.assign(bootstrap, opts);
79
- if (bootstrap.hostListeners?.length || bootstrap.hostBindings?.length) {
78
+ static defineDirective(modelClass, opts, metadata) {
79
+ Object.assign(metadata, opts);
80
+ if (metadata.hostListeners?.length || metadata.hostBindings?.length) {
80
81
  const hostNode = Components.parseHostNode({
81
82
  prototype: modelClass.prototype,
82
- hostBindings: bootstrap.hostBindings,
83
- hostListeners: bootstrap.hostListeners,
83
+ hostBindings: metadata.hostBindings,
84
+ hostListeners: metadata.hostListeners,
84
85
  });
85
- bootstrap.viewBindings = hostNode.host;
86
+ metadata.viewBindings = hostNode.host;
86
87
  }
87
- bootstrap.modelClass = modelClass;
88
+ metadata.modelClass = modelClass;
88
89
  ClassRegistryProvider.registerDirective(modelClass);
89
90
  directiveRegistry.register(opts.selector, {
90
- inputs: bootstrap.inputs?.map(input => input.viewAttribute),
91
- outputs: bootstrap.outputs?.map(output => output.viewAttribute),
91
+ inputs: metadata.inputs?.map(input => input.viewAttribute),
92
+ outputs: metadata.outputs?.map(output => output.viewAttribute),
92
93
  });
93
94
  }
94
- static definePipe(modelClass, opts) {
95
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelClass.prototype);
96
- for (const key in opts) {
97
- bootstrap[key] = Reflect.get(opts, key);
98
- }
99
- bootstrap.modelClass = modelClass;
95
+ static definePipe(modelClass, opts, metadata) {
96
+ Object.assign(metadata, opts);
97
+ metadata.modelClass = modelClass;
100
98
  ClassRegistryProvider.registerPipe(modelClass);
101
99
  }
102
- static defineService(modelClass, opts) {
103
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelClass.prototype);
104
- for (const key in opts) {
105
- bootstrap[key] = Reflect.get(opts, key);
106
- }
107
- bootstrap.modelClass = modelClass;
108
- bootstrap.name = modelClass.name;
100
+ static defineService(modelClass, opts, metadata) {
101
+ Object.assign(metadata, opts);
102
+ metadata.modelClass = modelClass;
103
+ metadata.name = modelClass.name;
109
104
  ClassRegistryProvider.registerService(modelClass);
110
105
  }
111
- static defineComponent(modelClass, opts) {
112
- const bootstrap = ReflectComponents.getOrCreateBootstrap(modelClass.prototype);
113
- const componentRef = Object.assign({}, opts, bootstrap);
106
+ static defineComponent(modelClass, opts, metadata) {
107
+ const componentRef = Object.assign(metadata, opts);
114
108
  componentRef.extend = findByTagName(opts.extend);
115
109
  if (typeof componentRef.template === 'string') {
116
110
  if (componentRef.styles) {
@@ -141,16 +135,17 @@ export class Components {
141
135
  // didn't find this template in 'index.html' document
142
136
  }
143
137
  }
144
- componentRef.inputs || (componentRef.inputs = Components.emptyList());
145
- componentRef.outputs || (componentRef.outputs = Components.emptyList());
146
- componentRef.viewChild || (componentRef.viewChild = Components.emptyList());
147
- componentRef.ViewChildren || (componentRef.ViewChildren = Components.emptyList());
148
- componentRef.hostBindings || (componentRef.hostBindings = Components.emptyList());
149
- componentRef.hostListeners || (componentRef.hostListeners = Components.emptyList());
150
- componentRef.encapsulation || (componentRef.encapsulation = 'custom');
151
- componentRef.isShadowDom = /shadow-dom/g.test(componentRef.encapsulation);
152
- componentRef.shadowDomMode || (componentRef.shadowDomMode = 'open');
153
- componentRef.shadowDomDelegatesFocus = componentRef.shadowDomDelegatesFocus === true || false;
138
+ componentRef.inputs ||= Components.emptyList();
139
+ componentRef.outputs ||= Components.emptyList();
140
+ componentRef.viewChild ||= Components.emptyList();
141
+ componentRef.ViewChildren ||= Components.emptyList();
142
+ componentRef.hostBindings ||= Components.emptyList();
143
+ componentRef.hostListeners ||= Components.emptyList();
144
+ componentRef.encapsulation ||= 'custom';
145
+ componentRef.isShadowDom = /shadow/g.test(componentRef.encapsulation);
146
+ if (componentRef.isShadowDom) {
147
+ componentRef.shadowRootInit = Object.assign({}, DEFAULT_SHADOW_ROOT_INIT, (componentRef.shadowRootInit ?? {}));
148
+ }
154
149
  if (componentRef.hostListeners.length || componentRef.hostBindings.length) {
155
150
  const hostNode = Components.parseHostNode({
156
151
  prototype: modelClass.prototype,
@@ -182,10 +177,8 @@ export class Components {
182
177
  }
183
178
  componentRef.modelClass = modelClass;
184
179
  componentRef.viewClass = initCustomElementView(modelClass, componentRef);
185
- ReflectComponents.setComponentRef(componentRef.modelClass, componentRef);
186
- ReflectComponents.setComponentRef(componentRef.viewClass, componentRef);
187
180
  ClassRegistryProvider.registerComponent(modelClass);
188
- ClassRegistryProvider.registerView(bootstrap.viewClass);
181
+ ClassRegistryProvider.registerView(componentRef.viewClass);
189
182
  const options = {};
190
183
  const parentTagName = componentRef.extend?.name;
191
184
  if (parentTagName) {
@@ -200,5 +193,5 @@ export class Components {
200
193
  customElements.define(opt.selector, viewClass, Object.assign({}, opt, { selector: undefined }));
201
194
  }
202
195
  }
203
- Components.EMPTY_LIST = Object.freeze([]);
196
+ export { Components };
204
197
  //# sourceMappingURL=component.js.map