@thomas-siegfried/tapout 0.0.1

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 (223) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1206 -0
  3. package/dist/applyBindings.d.ts +10 -0
  4. package/dist/applyBindings.d.ts.map +1 -0
  5. package/dist/applyBindings.js +261 -0
  6. package/dist/applyBindings.js.map +1 -0
  7. package/dist/arrayToDomMapping.d.ts +14 -0
  8. package/dist/arrayToDomMapping.d.ts.map +1 -0
  9. package/dist/arrayToDomMapping.js +219 -0
  10. package/dist/arrayToDomMapping.js.map +1 -0
  11. package/dist/attributeInterpolationMarkup.d.ts +6 -0
  12. package/dist/attributeInterpolationMarkup.d.ts.map +1 -0
  13. package/dist/attributeInterpolationMarkup.js +70 -0
  14. package/dist/attributeInterpolationMarkup.js.map +1 -0
  15. package/dist/bindingContext.d.ts +38 -0
  16. package/dist/bindingContext.d.ts.map +1 -0
  17. package/dist/bindingContext.js +138 -0
  18. package/dist/bindingContext.js.map +1 -0
  19. package/dist/bindingEvent.d.ts +33 -0
  20. package/dist/bindingEvent.d.ts.map +1 -0
  21. package/dist/bindingEvent.js +144 -0
  22. package/dist/bindingEvent.js.map +1 -0
  23. package/dist/bindingProvider.d.ts +38 -0
  24. package/dist/bindingProvider.d.ts.map +1 -0
  25. package/dist/bindingProvider.js +145 -0
  26. package/dist/bindingProvider.js.map +1 -0
  27. package/dist/bindings.d.ts +2 -0
  28. package/dist/bindings.d.ts.map +1 -0
  29. package/dist/bindings.js +862 -0
  30. package/dist/bindings.js.map +1 -0
  31. package/dist/compareArrays.d.ts +13 -0
  32. package/dist/compareArrays.d.ts.map +1 -0
  33. package/dist/compareArrays.js +91 -0
  34. package/dist/compareArrays.js.map +1 -0
  35. package/dist/componentBinding.d.ts +4 -0
  36. package/dist/componentBinding.d.ts.map +1 -0
  37. package/dist/componentBinding.js +240 -0
  38. package/dist/componentBinding.js.map +1 -0
  39. package/dist/componentDecorator.d.ts +22 -0
  40. package/dist/componentDecorator.d.ts.map +1 -0
  41. package/dist/componentDecorator.js +32 -0
  42. package/dist/componentDecorator.js.map +1 -0
  43. package/dist/components.d.ts +34 -0
  44. package/dist/components.d.ts.map +1 -0
  45. package/dist/components.js +256 -0
  46. package/dist/components.js.map +1 -0
  47. package/dist/computed.d.ts +54 -0
  48. package/dist/computed.d.ts.map +1 -0
  49. package/dist/computed.js +376 -0
  50. package/dist/computed.js.map +1 -0
  51. package/dist/configure.d.ts +4 -0
  52. package/dist/configure.d.ts.map +1 -0
  53. package/dist/configure.js +48 -0
  54. package/dist/configure.js.map +1 -0
  55. package/dist/controlFlowBindings.d.ts +2 -0
  56. package/dist/controlFlowBindings.d.ts.map +1 -0
  57. package/dist/controlFlowBindings.js +151 -0
  58. package/dist/controlFlowBindings.js.map +1 -0
  59. package/dist/core.d.ts +29 -0
  60. package/dist/core.d.ts.map +1 -0
  61. package/dist/core.js +27 -0
  62. package/dist/core.js.map +1 -0
  63. package/dist/decorators.d.ts +40 -0
  64. package/dist/decorators.d.ts.map +1 -0
  65. package/dist/decorators.js +276 -0
  66. package/dist/decorators.js.map +1 -0
  67. package/dist/dependencyDetection.d.ts +21 -0
  68. package/dist/dependencyDetection.d.ts.map +1 -0
  69. package/dist/dependencyDetection.js +53 -0
  70. package/dist/dependencyDetection.js.map +1 -0
  71. package/dist/disposable.d.ts +12 -0
  72. package/dist/disposable.d.ts.map +1 -0
  73. package/dist/disposable.js +29 -0
  74. package/dist/disposable.js.map +1 -0
  75. package/dist/domData.d.ts +6 -0
  76. package/dist/domData.d.ts.map +1 -0
  77. package/dist/domData.js +40 -0
  78. package/dist/domData.js.map +1 -0
  79. package/dist/domNodeDisposal.d.ts +7 -0
  80. package/dist/domNodeDisposal.d.ts.map +1 -0
  81. package/dist/domNodeDisposal.js +78 -0
  82. package/dist/domNodeDisposal.js.map +1 -0
  83. package/dist/effects.d.ts +13 -0
  84. package/dist/effects.d.ts.map +1 -0
  85. package/dist/effects.js +24 -0
  86. package/dist/effects.js.map +1 -0
  87. package/dist/event.d.ts +38 -0
  88. package/dist/event.d.ts.map +1 -0
  89. package/dist/event.js +138 -0
  90. package/dist/event.js.map +1 -0
  91. package/dist/expressionRewriting.d.ts +22 -0
  92. package/dist/expressionRewriting.d.ts.map +1 -0
  93. package/dist/expressionRewriting.js +169 -0
  94. package/dist/expressionRewriting.js.map +1 -0
  95. package/dist/extenders.d.ts +17 -0
  96. package/dist/extenders.d.ts.map +1 -0
  97. package/dist/extenders.js +75 -0
  98. package/dist/extenders.js.map +1 -0
  99. package/dist/filters.d.ts +5 -0
  100. package/dist/filters.d.ts.map +1 -0
  101. package/dist/filters.js +81 -0
  102. package/dist/filters.js.map +1 -0
  103. package/dist/index.d.ts +45 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +35 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/interpolationMarkup.d.ts +6 -0
  108. package/dist/interpolationMarkup.d.ts.map +1 -0
  109. package/dist/interpolationMarkup.js +110 -0
  110. package/dist/interpolationMarkup.js.map +1 -0
  111. package/dist/memoization.d.ts +7 -0
  112. package/dist/memoization.d.ts.map +1 -0
  113. package/dist/memoization.js +59 -0
  114. package/dist/memoization.js.map +1 -0
  115. package/dist/namespacedBindings.d.ts +7 -0
  116. package/dist/namespacedBindings.d.ts.map +1 -0
  117. package/dist/namespacedBindings.js +81 -0
  118. package/dist/namespacedBindings.js.map +1 -0
  119. package/dist/observable.d.ts +13 -0
  120. package/dist/observable.d.ts.map +1 -0
  121. package/dist/observable.js +39 -0
  122. package/dist/observable.js.map +1 -0
  123. package/dist/observableArray.d.ts +58 -0
  124. package/dist/observableArray.d.ts.map +1 -0
  125. package/dist/observableArray.js +328 -0
  126. package/dist/observableArray.js.map +1 -0
  127. package/dist/options.d.ts +14 -0
  128. package/dist/options.d.ts.map +1 -0
  129. package/dist/options.js +12 -0
  130. package/dist/options.js.map +1 -0
  131. package/dist/selectExtensions.d.ts +4 -0
  132. package/dist/selectExtensions.d.ts.map +1 -0
  133. package/dist/selectExtensions.js +67 -0
  134. package/dist/selectExtensions.js.map +1 -0
  135. package/dist/slotBinding.d.ts +2 -0
  136. package/dist/slotBinding.d.ts.map +1 -0
  137. package/dist/slotBinding.js +63 -0
  138. package/dist/slotBinding.js.map +1 -0
  139. package/dist/subscribable.d.ts +57 -0
  140. package/dist/subscribable.d.ts.map +1 -0
  141. package/dist/subscribable.js +211 -0
  142. package/dist/subscribable.js.map +1 -0
  143. package/dist/tasks.d.ts +8 -0
  144. package/dist/tasks.d.ts.map +1 -0
  145. package/dist/tasks.js +68 -0
  146. package/dist/tasks.js.map +1 -0
  147. package/dist/templateEngine.d.ts +37 -0
  148. package/dist/templateEngine.d.ts.map +1 -0
  149. package/dist/templateEngine.js +60 -0
  150. package/dist/templateEngine.js.map +1 -0
  151. package/dist/templateRendering.d.ts +8 -0
  152. package/dist/templateRendering.d.ts.map +1 -0
  153. package/dist/templateRendering.js +322 -0
  154. package/dist/templateRendering.js.map +1 -0
  155. package/dist/templateRewriting.d.ts +7 -0
  156. package/dist/templateRewriting.d.ts.map +1 -0
  157. package/dist/templateRewriting.js +63 -0
  158. package/dist/templateRewriting.js.map +1 -0
  159. package/dist/templateSources.d.ts +19 -0
  160. package/dist/templateSources.d.ts.map +1 -0
  161. package/dist/templateSources.js +110 -0
  162. package/dist/templateSources.js.map +1 -0
  163. package/dist/utils.d.ts +8 -0
  164. package/dist/utils.d.ts.map +1 -0
  165. package/dist/utils.js +100 -0
  166. package/dist/utils.js.map +1 -0
  167. package/dist/utilsDom.d.ts +8 -0
  168. package/dist/utilsDom.d.ts.map +1 -0
  169. package/dist/utilsDom.js +81 -0
  170. package/dist/utilsDom.js.map +1 -0
  171. package/dist/virtualElements.d.ts +12 -0
  172. package/dist/virtualElements.d.ts.map +1 -0
  173. package/dist/virtualElements.js +141 -0
  174. package/dist/virtualElements.js.map +1 -0
  175. package/dist/wireParams.d.ts +6 -0
  176. package/dist/wireParams.d.ts.map +1 -0
  177. package/dist/wireParams.js +39 -0
  178. package/dist/wireParams.js.map +1 -0
  179. package/package.json +55 -0
  180. package/src/applyBindings.ts +372 -0
  181. package/src/arrayToDomMapping.ts +300 -0
  182. package/src/attributeInterpolationMarkup.ts +91 -0
  183. package/src/bindingContext.ts +207 -0
  184. package/src/bindingEvent.ts +198 -0
  185. package/src/bindingProvider.ts +260 -0
  186. package/src/bindings.ts +963 -0
  187. package/src/compareArrays.ts +122 -0
  188. package/src/componentBinding.ts +318 -0
  189. package/src/componentDecorator.ts +62 -0
  190. package/src/components.ts +367 -0
  191. package/src/computed.ts +439 -0
  192. package/src/configure.ts +52 -0
  193. package/src/controlFlowBindings.ts +206 -0
  194. package/src/core.ts +60 -0
  195. package/src/decorators.ts +407 -0
  196. package/src/dependencyDetection.ts +76 -0
  197. package/src/disposable.ts +36 -0
  198. package/src/domData.ts +42 -0
  199. package/src/domNodeDisposal.ts +94 -0
  200. package/src/effects.ts +29 -0
  201. package/src/event.ts +173 -0
  202. package/src/expressionRewriting.ts +219 -0
  203. package/src/extenders.ts +102 -0
  204. package/src/filters.ts +91 -0
  205. package/src/index.ts +150 -0
  206. package/src/interpolationMarkup.ts +130 -0
  207. package/src/memoization.ts +71 -0
  208. package/src/namespacedBindings.ts +132 -0
  209. package/src/observable.ts +48 -0
  210. package/src/observableArray.ts +397 -0
  211. package/src/options.ts +25 -0
  212. package/src/selectExtensions.ts +68 -0
  213. package/src/slotBinding.ts +84 -0
  214. package/src/subscribable.ts +266 -0
  215. package/src/tasks.ts +79 -0
  216. package/src/templateEngine.ts +108 -0
  217. package/src/templateRendering.ts +399 -0
  218. package/src/templateRewriting.ts +94 -0
  219. package/src/templateSources.ts +134 -0
  220. package/src/utils.ts +123 -0
  221. package/src/utilsDom.ts +87 -0
  222. package/src/virtualElements.ts +153 -0
  223. package/src/wireParams.ts +49 -0
@@ -0,0 +1,38 @@
1
+ import { PureComputed } from './computed.js';
2
+ import type { Computed } from './computed.js';
3
+ declare const SUBSCRIBABLE: unique symbol;
4
+ declare const ANCESTOR_BINDING_INFO: unique symbol;
5
+ declare const DATA_DEPENDENCY: unique symbol;
6
+ export { SUBSCRIBABLE, ANCESTOR_BINDING_INFO, DATA_DEPENDENCY };
7
+ export interface BindingContextOptions {
8
+ exportDependencies?: boolean;
9
+ dataDependency?: Computed<unknown>;
10
+ }
11
+ export interface CreateChildContextOptions {
12
+ as?: string;
13
+ extend?: (context: BindingContext) => void;
14
+ noChildContext?: boolean;
15
+ exportDependencies?: boolean;
16
+ dataDependency?: Computed<unknown>;
17
+ }
18
+ export type ExtendCallback = (self: BindingContext, parentContext: BindingContext | undefined, dataItem: unknown) => void;
19
+ export declare class BindingContext {
20
+ $data: unknown;
21
+ $rawData: unknown;
22
+ $root: unknown;
23
+ $parent?: unknown;
24
+ $parentContext?: BindingContext;
25
+ $parents: unknown[];
26
+ [SUBSCRIBABLE]?: PureComputed<unknown>;
27
+ [ANCESTOR_BINDING_INFO]?: unknown;
28
+ [DATA_DEPENDENCY]?: Computed<unknown>;
29
+ [key: string | symbol]: unknown;
30
+ constructor(dataItemOrAccessor: unknown, parentContext?: BindingContext, dataItemAlias?: string | null, extendCallback?: ExtendCallback, options?: BindingContextOptions);
31
+ createChildContext(dataItemOrAccessor: unknown, aliasOrOptions?: string | CreateChildContextOptions, extendCallback?: (context: BindingContext) => void, options?: BindingContextOptions): BindingContext;
32
+ extend(properties: Record<string, unknown> | ((self: BindingContext) => Record<string, unknown>) | null, options?: BindingContextOptions): BindingContext;
33
+ }
34
+ export declare const BINDING_INFO_KEY = "__tapout_bindingInfo";
35
+ export declare function storedBindingContextForNode(node: Node): BindingContext | undefined;
36
+ export declare function contextFor(node: Node): BindingContext | undefined;
37
+ export declare function dataFor(node: Node): unknown;
38
+ //# sourceMappingURL=bindingContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindingContext.d.ts","sourceRoot":"","sources":["../src/bindingContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAS9C,QAAA,MAAM,YAAY,eAAyB,CAAC;AAC5C,QAAA,MAAM,qBAAqB,eAAgC,CAAC;AAC5D,QAAA,MAAM,eAAe,eAA2B,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,QAAQ,EAAE,OAAO,KACd,IAAI,CAAC;AAEV,qBAAa,cAAc;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAEzB,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAGtC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;gBAG9B,kBAAkB,EAAE,OAAO,EAC3B,aAAa,CAAC,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAC7B,cAAc,CAAC,EAAE,cAAc,EAC/B,OAAO,CAAC,EAAE,qBAAqB;IAyEjC,kBAAkB,CAChB,kBAAkB,EAAE,OAAO,EAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,yBAAyB,EACnD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,EAClD,OAAO,CAAC,EAAE,qBAAqB,GAC9B,cAAc;IAkCjB,MAAM,CACJ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,EAChG,OAAO,CAAC,EAAE,qBAAqB,GAC9B,cAAc;CAUlB;AAGD,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAOvD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,SAAS,CAGlF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,SAAS,CAKjE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAG3C"}
@@ -0,0 +1,138 @@
1
+ import { PureComputed } from './computed.js';
2
+ import { isReadableSubscribable } from './subscribable.js';
3
+ import { domDataGet } from './domData.js';
4
+ function unwrapObservable(value) {
5
+ return isReadableSubscribable(value) ? value.get() : value;
6
+ }
7
+ const SUBSCRIBABLE = Symbol('subscribable');
8
+ const ANCESTOR_BINDING_INFO = Symbol('ancestorBindingInfo');
9
+ const DATA_DEPENDENCY = Symbol('dataDependency');
10
+ const INHERIT = Symbol('inheritParentVm');
11
+ export { SUBSCRIBABLE, ANCESTOR_BINDING_INFO, DATA_DEPENDENCY };
12
+ export class BindingContext {
13
+ $data;
14
+ $rawData;
15
+ $root;
16
+ $parent;
17
+ $parentContext;
18
+ $parents = [];
19
+ [SUBSCRIBABLE];
20
+ [ANCESTOR_BINDING_INFO];
21
+ [DATA_DEPENDENCY];
22
+ constructor(dataItemOrAccessor, parentContext, dataItemAlias, extendCallback, options) {
23
+ const self = this;
24
+ const shouldInheritData = dataItemOrAccessor === INHERIT;
25
+ const realDataItemOrAccessor = shouldInheritData ? undefined : dataItemOrAccessor;
26
+ const isFunc = typeof realDataItemOrAccessor === 'function' && !isReadableSubscribable(realDataItemOrAccessor);
27
+ const dataDependency = options?.dataDependency;
28
+ function updateContext() {
29
+ const dataItemOrObservable = isFunc
30
+ ? realDataItemOrAccessor()
31
+ : realDataItemOrAccessor;
32
+ const dataItem = unwrapObservable(dataItemOrObservable);
33
+ if (parentContext) {
34
+ Object.assign(self, parentContext);
35
+ if (ANCESTOR_BINDING_INFO in parentContext) {
36
+ self[ANCESTOR_BINDING_INFO] = parentContext[ANCESTOR_BINDING_INFO];
37
+ }
38
+ }
39
+ else {
40
+ self.$parents = [];
41
+ self.$root = dataItem;
42
+ }
43
+ self[SUBSCRIBABLE] = subscribable;
44
+ if (shouldInheritData) {
45
+ // $data is already set from parent via Object.assign
46
+ }
47
+ else {
48
+ self.$rawData = dataItemOrObservable;
49
+ self.$data = dataItem;
50
+ }
51
+ if (dataItemAlias) {
52
+ self[dataItemAlias] = dataItem;
53
+ }
54
+ if (extendCallback) {
55
+ extendCallback(self, parentContext, dataItem);
56
+ }
57
+ // Ensure child depends on parent context's data dependencies.
58
+ // Reading the parent subscribable registers it as a dependency of
59
+ // the current PureComputed. Dependency deduplication makes this safe
60
+ // even if updateContext already transitively depends on it.
61
+ if (parentContext?.[SUBSCRIBABLE]) {
62
+ parentContext[SUBSCRIBABLE].get();
63
+ }
64
+ if (dataDependency) {
65
+ self[DATA_DEPENDENCY] = dataDependency;
66
+ }
67
+ return self.$data;
68
+ }
69
+ let subscribable;
70
+ if (options?.exportDependencies) {
71
+ updateContext();
72
+ }
73
+ else {
74
+ subscribable = new PureComputed(updateContext);
75
+ subscribable.peek();
76
+ if (subscribable.isActive()) {
77
+ subscribable.equalityComparer = undefined;
78
+ }
79
+ else {
80
+ self[SUBSCRIBABLE] = undefined;
81
+ }
82
+ }
83
+ }
84
+ createChildContext(dataItemOrAccessor, aliasOrOptions, extendCallback, options) {
85
+ let dataItemAlias;
86
+ if (!options && aliasOrOptions && typeof aliasOrOptions === 'object') {
87
+ options = aliasOrOptions;
88
+ dataItemAlias = aliasOrOptions.as;
89
+ extendCallback = aliasOrOptions.extend;
90
+ }
91
+ else if (typeof aliasOrOptions === 'string') {
92
+ dataItemAlias = aliasOrOptions;
93
+ }
94
+ const childOptions = options;
95
+ if (dataItemAlias && childOptions?.noChildContext) {
96
+ const isFunc = typeof dataItemOrAccessor === 'function' && !isReadableSubscribable(dataItemOrAccessor);
97
+ return new BindingContext(INHERIT, this, null, (self) => {
98
+ if (extendCallback) {
99
+ extendCallback(self);
100
+ }
101
+ self[dataItemAlias] = isFunc ? dataItemOrAccessor() : dataItemOrAccessor;
102
+ }, options);
103
+ }
104
+ return new BindingContext(dataItemOrAccessor, this, dataItemAlias, (self, parentCtx) => {
105
+ self.$parentContext = parentCtx;
106
+ self.$parent = parentCtx?.$data;
107
+ self.$parents = (parentCtx?.$parents || []).slice(0);
108
+ self.$parents.unshift(self.$parent);
109
+ if (extendCallback) {
110
+ extendCallback(self);
111
+ }
112
+ }, options);
113
+ }
114
+ extend(properties, options) {
115
+ return new BindingContext(INHERIT, this, null, (self) => {
116
+ if (properties) {
117
+ Object.assign(self, typeof properties === 'function' ? properties(self) : properties);
118
+ }
119
+ }, options);
120
+ }
121
+ }
122
+ // DOM data key for storing binding info on nodes (shared with applyBindings)
123
+ export const BINDING_INFO_KEY = '__tapout_bindingInfo';
124
+ export function storedBindingContextForNode(node) {
125
+ const info = domDataGet(node, BINDING_INFO_KEY);
126
+ return info?.context;
127
+ }
128
+ export function contextFor(node) {
129
+ if (node && (node.nodeType === 1 || node.nodeType === 8)) {
130
+ return storedBindingContextForNode(node);
131
+ }
132
+ return undefined;
133
+ }
134
+ export function dataFor(node) {
135
+ const context = contextFor(node);
136
+ return context ? context.$data : undefined;
137
+ }
138
+ //# sourceMappingURL=bindingContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindingContext.js","sourceRoot":"","sources":["../src/bindingContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { Subscribable, Subscription } from './subscribable.js';
2
+ import { BindingContext } from './bindingContext.js';
3
+ export interface BindingInfo {
4
+ alreadyBound?: boolean;
5
+ context?: BindingContext;
6
+ eventSubscribable?: Subscribable;
7
+ notifiedEvents?: Record<string, boolean>;
8
+ asyncContext?: AsyncCompleteContext | null;
9
+ }
10
+ export declare function getBindingInfoForNode(node: Node): BindingInfo;
11
+ declare class AsyncCompleteContext {
12
+ node: Node;
13
+ bindingInfo: BindingInfo;
14
+ asyncDescendants: Node[];
15
+ childrenComplete: boolean;
16
+ ancestorBindingInfo?: BindingInfo;
17
+ constructor(node: Node, bindingInfo: BindingInfo, ancestorBindingInfo?: BindingInfo);
18
+ notifyAncestor(): void;
19
+ descendantComplete(node: Node): void;
20
+ completeChildren(): void;
21
+ }
22
+ export declare const bindingEvent: {
23
+ childrenComplete: "childrenComplete";
24
+ descendantsComplete: "descendantsComplete";
25
+ subscribe(node: Node, event: string, callback: (value: unknown) => void, context?: unknown, options?: {
26
+ notifyImmediately?: boolean;
27
+ }): Subscription<unknown>;
28
+ notify(node: Node, event: string): void;
29
+ startPossiblyAsyncContentBinding(node: Node, bindingContext: BindingContext): BindingContext;
30
+ };
31
+ export declare function subscribeToBindingEvent(node: Node, bindings: Record<string, any>, bindingContext: BindingContext, evaluateValueAccessor: (v: unknown) => unknown): BindingContext;
32
+ export {};
33
+ //# sourceMappingURL=bindingEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindingEvent.d.ts","sourceRoot":"","sources":["../src/bindingEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAA2C,MAAM,qBAAqB,CAAC;AAQ9F,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,YAAY,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC5C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAE7D;AAaD,cAAM,oBAAoB;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,IAAI,EAAE,CAAM;IAC9B,gBAAgB,UAAS;IACzB,mBAAmB,CAAC,EAAE,WAAW,CAAC;gBAEtB,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAAE,WAAW;IAcnF,cAAc,IAAI,IAAI;IAMtB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAUpC,gBAAgB,IAAI,IAAI;CASzB;AAID,eAAO,MAAM,YAAY;;;oBAKf,IAAI,SACH,MAAM,YACH,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,YACxB,OAAO,YACP;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GACxC,YAAY,CAAC,OAAO,CAAC;iBAcX,IAAI,SAAS,MAAM,GAAG,IAAI;2CAyBA,IAAI,kBAAkB,cAAc,GAAG,cAAc;CAoB7F,CAAC;AAIF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EAEV,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,GAC7C,cAAc,CA6BhB"}
@@ -0,0 +1,144 @@
1
+ import { Subscribable } from './subscribable.js';
2
+ import { ANCESTOR_BINDING_INFO, BINDING_INFO_KEY } from './bindingContext.js';
3
+ import { domDataGet, domDataGetOrSet } from './domData.js';
4
+ import { addDisposeCallback, removeDisposeCallback } from './domNodeDisposal.js';
5
+ import { ignore } from './dependencyDetection.js';
6
+ import { virtualChildNodes, virtualFirstChild } from './virtualElements.js';
7
+ export function getBindingInfoForNode(node) {
8
+ return domDataGetOrSet(node, BINDING_INFO_KEY, {});
9
+ }
10
+ // ---- AsyncCompleteContext ----
11
+ function asyncContextDispose(node) {
12
+ const info = domDataGet(node, BINDING_INFO_KEY);
13
+ const asyncContext = info?.asyncContext;
14
+ if (asyncContext) {
15
+ info.asyncContext = null;
16
+ asyncContext.notifyAncestor();
17
+ }
18
+ }
19
+ class AsyncCompleteContext {
20
+ node;
21
+ bindingInfo;
22
+ asyncDescendants = [];
23
+ childrenComplete = false;
24
+ ancestorBindingInfo;
25
+ constructor(node, bindingInfo, ancestorBindingInfo) {
26
+ this.node = node;
27
+ this.bindingInfo = bindingInfo;
28
+ if (!bindingInfo.asyncContext) {
29
+ addDisposeCallback(node, asyncContextDispose);
30
+ }
31
+ if (ancestorBindingInfo?.asyncContext) {
32
+ ancestorBindingInfo.asyncContext.asyncDescendants.push(node);
33
+ this.ancestorBindingInfo = ancestorBindingInfo;
34
+ }
35
+ }
36
+ notifyAncestor() {
37
+ if (this.ancestorBindingInfo?.asyncContext) {
38
+ this.ancestorBindingInfo.asyncContext.descendantComplete(this.node);
39
+ }
40
+ }
41
+ descendantComplete(node) {
42
+ const idx = this.asyncDescendants.indexOf(node);
43
+ if (idx !== -1) {
44
+ this.asyncDescendants.splice(idx, 1);
45
+ }
46
+ if (this.asyncDescendants.length === 0 && this.childrenComplete) {
47
+ this.completeChildren();
48
+ }
49
+ }
50
+ completeChildren() {
51
+ this.childrenComplete = true;
52
+ if (this.bindingInfo.asyncContext && this.asyncDescendants.length === 0) {
53
+ this.bindingInfo.asyncContext = null;
54
+ removeDisposeCallback(this.node, asyncContextDispose);
55
+ bindingEvent.notify(this.node, bindingEvent.descendantsComplete);
56
+ this.notifyAncestor();
57
+ }
58
+ }
59
+ }
60
+ // ---- Binding Event API ----
61
+ export const bindingEvent = {
62
+ childrenComplete: 'childrenComplete',
63
+ descendantsComplete: 'descendantsComplete',
64
+ subscribe(node, event, callback, context, options) {
65
+ const bindingInfo = getBindingInfoForNode(node);
66
+ if (!bindingInfo.eventSubscribable) {
67
+ bindingInfo.eventSubscribable = new Subscribable();
68
+ }
69
+ if (options?.notifyImmediately && bindingInfo.notifiedEvents?.[event]) {
70
+ ignore(() => callback.call(context, node));
71
+ }
72
+ const boundCallback = context ? (v) => callback.call(context, v) : callback;
73
+ return bindingInfo.eventSubscribable.subscribe(boundCallback, event);
74
+ },
75
+ notify(node, event) {
76
+ const bindingInfo = domDataGet(node, BINDING_INFO_KEY);
77
+ if (bindingInfo) {
78
+ if (!bindingInfo.notifiedEvents) {
79
+ bindingInfo.notifiedEvents = {};
80
+ }
81
+ bindingInfo.notifiedEvents[event] = true;
82
+ if (bindingInfo.eventSubscribable) {
83
+ bindingInfo.eventSubscribable.notifySubscribers(node, event);
84
+ }
85
+ if (event === bindingEvent.childrenComplete) {
86
+ if (bindingInfo.asyncContext) {
87
+ bindingInfo.asyncContext.completeChildren();
88
+ }
89
+ else if (bindingInfo.asyncContext === undefined &&
90
+ bindingInfo.eventSubscribable?.hasSubscriptionsForEvent(bindingEvent.descendantsComplete)) {
91
+ throw new Error('descendantsComplete event not supported for bindings on this node');
92
+ }
93
+ }
94
+ }
95
+ },
96
+ startPossiblyAsyncContentBinding(node, bindingContext) {
97
+ const bindingInfo = getBindingInfoForNode(node);
98
+ if (!bindingInfo.asyncContext) {
99
+ bindingInfo.asyncContext = new AsyncCompleteContext(node, bindingInfo, bindingContext[ANCESTOR_BINDING_INFO]);
100
+ }
101
+ if (bindingContext[ANCESTOR_BINDING_INFO] === bindingInfo) {
102
+ return bindingContext;
103
+ }
104
+ return bindingContext.extend((ctx) => {
105
+ ctx[ANCESTOR_BINDING_INFO] = bindingInfo;
106
+ return {};
107
+ });
108
+ },
109
+ };
110
+ // ---- Helpers for applyBindings integration ----
111
+ export function subscribeToBindingEvent(node,
112
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
+ bindings, bindingContext, evaluateValueAccessor) {
114
+ let contextToExtend = bindingContext;
115
+ if (bindingEvent.childrenComplete in bindings) {
116
+ bindingEvent.subscribe(node, bindingEvent.childrenComplete, () => {
117
+ const callback = evaluateValueAccessor(bindings[bindingEvent.childrenComplete]);
118
+ if (callback) {
119
+ const nodes = virtualChildNodes(node);
120
+ if (nodes.length) {
121
+ callback(nodes, dataForFirstChild(node));
122
+ }
123
+ }
124
+ });
125
+ }
126
+ if (bindingEvent.descendantsComplete in bindings) {
127
+ contextToExtend = bindingEvent.startPossiblyAsyncContentBinding(node, bindingContext);
128
+ bindingEvent.subscribe(node, bindingEvent.descendantsComplete, () => {
129
+ const callback = evaluateValueAccessor(bindings[bindingEvent.descendantsComplete]);
130
+ if (callback && virtualFirstChild(node)) {
131
+ callback(node);
132
+ }
133
+ });
134
+ }
135
+ return contextToExtend;
136
+ }
137
+ function dataForFirstChild(node) {
138
+ const first = virtualFirstChild(node);
139
+ if (!first)
140
+ return undefined;
141
+ const info = domDataGet(first, BINDING_INFO_KEY);
142
+ return info?.context?.$data;
143
+ }
144
+ //# sourceMappingURL=bindingEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindingEvent.js","sourceRoot":"","sources":["../src/bindingEvent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { BindingContext } from './bindingContext.js';
2
+ import type { AllBindingsAccessor } from './expressionRewriting.js';
3
+ export type { AllBindingsAccessor } from './expressionRewriting.js';
4
+ export interface BindingHandler {
5
+ init?(node: Node, valueAccessor: () => unknown, allBindings: AllBindingsAccessor, viewModel: unknown, bindingContext: BindingContext): void | {
6
+ controlsDescendantBindings: boolean;
7
+ };
8
+ update?(node: Node, valueAccessor: () => unknown, allBindings: AllBindingsAccessor, viewModel: unknown, bindingContext: BindingContext): void;
9
+ preprocess?(value: string, key: string, addBinding: (key: string, val: string) => void): string | void;
10
+ after?: string[];
11
+ getNamespacedHandler?(name: string, namespace: string, namespacedName: string): BindingHandler;
12
+ }
13
+ export declare const bindingHandlers: Record<string, BindingHandler>;
14
+ export declare function getBindingHandler(key: string): BindingHandler | undefined;
15
+ export type PreprocessFn = (value: string, key: string, addBinding: (key: string, val: string) => void) => string | void;
16
+ export type NodePreprocessFn = (node: Node) => Node[] | void;
17
+ export declare function chainPreprocessor(handler: BindingHandler, fn: PreprocessFn): BindingHandler;
18
+ export declare function addBindingPreprocessor(bindingKeyOrHandler: string | BindingHandler, preprocessFn: PreprocessFn): BindingHandler;
19
+ export declare function addNodePreprocessor(preprocessFn: NodePreprocessFn): void;
20
+ export declare function addBindingHandlerCreator(matchRegex: RegExp, callbackFn: (match: RegExpMatchArray, bindingKey: string) => BindingHandler | undefined): void;
21
+ export declare function setFiltersRegistry(filters: Record<string, Function>): void;
22
+ type BindingEvaluator = (context: BindingContext, element: Node) => Record<string, unknown> | null;
23
+ export type GetComponentNameForNodeFn = (node: Node) => string | undefined;
24
+ export type AddBindingsForCustomElementFn = (allBindings: Record<string, unknown> | null, node: Node, bindingContext: BindingContext, valueAccessors?: boolean) => Record<string, unknown> | null;
25
+ export declare function setCustomElementHooks(getComponentNameForNode: GetComponentNameForNodeFn, addBindingsForCustomElement: AddBindingsForCustomElementFn): void;
26
+ export declare class BindingProvider {
27
+ bindingCache: Record<string, BindingEvaluator>;
28
+ preprocessNode?: NodePreprocessFn;
29
+ nodeHasBindings(node: Node): boolean;
30
+ getBindingsString(node: Node): string | null;
31
+ getBindingAccessors(node: Node, bindingContext: BindingContext): Record<string, () => unknown> | null;
32
+ getBindings(node: Node, bindingContext: BindingContext): Record<string, unknown> | null;
33
+ parseBindingsString(bindingsString: string, bindingContext: BindingContext, node: Node, options?: {
34
+ valueAccessors?: boolean;
35
+ }): Record<string, unknown> | null;
36
+ }
37
+ export declare const instance: BindingProvider;
38
+ //# sourceMappingURL=bindingProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindingProvider.d.ts","sourceRoot":"","sources":["../src/bindingProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import { preProcessBindings } from './expressionRewriting.js';
2
+ import { hasBindingValue, virtualNodeBindingValue } from './virtualElements.js';
3
+ import { unwrapObservable } from './utils.js';
4
+ const DATA_BIND_ATTR = 'data-bind';
5
+ // ---- Binding Handler Registry ----
6
+ export const bindingHandlers = {};
7
+ let _getBindingHandlerImpl = (key) => bindingHandlers[key];
8
+ export function getBindingHandler(key) {
9
+ return _getBindingHandlerImpl(key);
10
+ }
11
+ function getOrCreateHandler(bindingKeyOrHandler) {
12
+ if (typeof bindingKeyOrHandler === 'object')
13
+ return bindingKeyOrHandler;
14
+ return getBindingHandler(bindingKeyOrHandler) || (bindingHandlers[bindingKeyOrHandler] = {});
15
+ }
16
+ export function chainPreprocessor(handler, fn) {
17
+ const previous = handler.preprocess;
18
+ if (previous) {
19
+ handler.preprocess = function (value, key, addBinding) {
20
+ const result = previous(value, key, addBinding);
21
+ if (result !== undefined) {
22
+ return fn(result, key, addBinding);
23
+ }
24
+ };
25
+ }
26
+ else {
27
+ handler.preprocess = fn;
28
+ }
29
+ return handler;
30
+ }
31
+ export function addBindingPreprocessor(bindingKeyOrHandler, preprocessFn) {
32
+ return chainPreprocessor(getOrCreateHandler(bindingKeyOrHandler), preprocessFn);
33
+ }
34
+ export function addNodePreprocessor(preprocessFn) {
35
+ const provider = instance;
36
+ const previous = provider.preprocessNode;
37
+ if (previous) {
38
+ provider.preprocessNode = function (node) {
39
+ const newNodes = previous.call(this, node);
40
+ if (!newNodes) {
41
+ return preprocessFn.call(this, node);
42
+ }
43
+ return newNodes;
44
+ };
45
+ }
46
+ else {
47
+ provider.preprocessNode = preprocessFn;
48
+ }
49
+ }
50
+ export function addBindingHandlerCreator(matchRegex, callbackFn) {
51
+ const previousImpl = _getBindingHandlerImpl;
52
+ _getBindingHandlerImpl = (key) => {
53
+ const existing = previousImpl(key);
54
+ if (existing)
55
+ return existing;
56
+ const match = key.match(matchRegex);
57
+ return match ? callbackFn(match, key) : undefined;
58
+ };
59
+ }
60
+ // ---- Filters Registry (injected by filters module) ----
61
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
62
+ let _filters = {};
63
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
64
+ export function setFiltersRegistry(filters) {
65
+ _filters = filters;
66
+ }
67
+ function createBindingsStringEvaluator(bindingsString, options) {
68
+ const rewrittenBindings = preProcessBindings(bindingsString, {
69
+ valueAccessors: options?.valueAccessors,
70
+ getBindingHandler,
71
+ });
72
+ const functionBody = "with($context){with($data||{}){return{" + rewrittenBindings + "}}}";
73
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
74
+ const innerFn = new Function("$context", "$element", "$unwrap", "$filters", functionBody);
75
+ return (context, element) => innerFn(context, element, unwrapObservable, _filters);
76
+ }
77
+ function createBindingsStringEvaluatorViaCache(bindingsString, cache, options) {
78
+ const cacheKey = bindingsString + (options?.valueAccessors ? 'true' : '');
79
+ return cache[cacheKey] || (cache[cacheKey] = createBindingsStringEvaluator(bindingsString, options));
80
+ }
81
+ let _getComponentNameForNode;
82
+ let _addBindingsForCustomElement;
83
+ export function setCustomElementHooks(getComponentNameForNode, addBindingsForCustomElement) {
84
+ _getComponentNameForNode = getComponentNameForNode;
85
+ _addBindingsForCustomElement = addBindingsForCustomElement;
86
+ }
87
+ // ---- Binding Provider ----
88
+ export class BindingProvider {
89
+ bindingCache = {};
90
+ preprocessNode;
91
+ nodeHasBindings(node) {
92
+ switch (node.nodeType) {
93
+ case 1: // Element
94
+ return node.getAttribute(DATA_BIND_ATTR) != null
95
+ || !!(_getComponentNameForNode && _getComponentNameForNode(node));
96
+ case 8: // Comment
97
+ return hasBindingValue(node);
98
+ default:
99
+ return false;
100
+ }
101
+ }
102
+ getBindingsString(node) {
103
+ switch (node.nodeType) {
104
+ case 1: // Element
105
+ return node.getAttribute(DATA_BIND_ATTR);
106
+ case 8: // Comment
107
+ return virtualNodeBindingValue(node);
108
+ default:
109
+ return null;
110
+ }
111
+ }
112
+ getBindingAccessors(node, bindingContext) {
113
+ const bindingsString = this.getBindingsString(node);
114
+ let result = bindingsString
115
+ ? this.parseBindingsString(bindingsString, bindingContext, node, { valueAccessors: true })
116
+ : null;
117
+ if (_addBindingsForCustomElement) {
118
+ result = _addBindingsForCustomElement(result, node, bindingContext, true);
119
+ }
120
+ return result;
121
+ }
122
+ getBindings(node, bindingContext) {
123
+ const bindingsString = this.getBindingsString(node);
124
+ let result = bindingsString
125
+ ? this.parseBindingsString(bindingsString, bindingContext, node)
126
+ : null;
127
+ if (_addBindingsForCustomElement) {
128
+ result = _addBindingsForCustomElement(result, node, bindingContext, false);
129
+ }
130
+ return result;
131
+ }
132
+ parseBindingsString(bindingsString, bindingContext, node, options) {
133
+ try {
134
+ const bindingFunction = createBindingsStringEvaluatorViaCache(bindingsString, this.bindingCache, options);
135
+ return bindingFunction(bindingContext, node);
136
+ }
137
+ catch (ex) {
138
+ const err = ex;
139
+ err.message = "Unable to parse bindings.\nBindings value: " + bindingsString + "\nMessage: " + err.message;
140
+ throw err;
141
+ }
142
+ }
143
+ }
144
+ export const instance = new BindingProvider();
145
+ //# sourceMappingURL=bindingProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindingProvider.js","sourceRoot":"","sources":["../src/bindingProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":""}