@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
package/dist/utils.js ADDED
@@ -0,0 +1,100 @@
1
+ import { PureComputed } from './computed.js';
2
+ import { isReadableSubscribable } from './subscribable.js';
3
+ import { options } from './options.js';
4
+ const MAX_NESTED_OBSERVABLE_DEPTH = 10;
5
+ export function unwrapObservable(value) {
6
+ for (let i = 0; isReadableSubscribable(value) && i < MAX_NESTED_OBSERVABLE_DEPTH; i++) {
7
+ value = value.get();
8
+ }
9
+ return value;
10
+ }
11
+ export function peekObservable(value) {
12
+ for (let i = 0; isReadableSubscribable(value) && i < MAX_NESTED_OBSERVABLE_DEPTH; i++) {
13
+ value = value.peek();
14
+ }
15
+ return value;
16
+ }
17
+ function canHaveProperties(obj) {
18
+ return (typeof obj === 'object' &&
19
+ obj !== null &&
20
+ !(obj instanceof RegExp) &&
21
+ !(obj instanceof Date) &&
22
+ !(obj instanceof String) &&
23
+ !(obj instanceof Number) &&
24
+ !(obj instanceof Boolean));
25
+ }
26
+ function mapJsObjectGraph(rootObject, visited) {
27
+ rootObject = peekObservable(rootObject);
28
+ if (!canHaveProperties(rootObject)) {
29
+ return rootObject;
30
+ }
31
+ const previouslyMapped = visited.get(rootObject);
32
+ if (previouslyMapped !== undefined) {
33
+ return previouslyMapped;
34
+ }
35
+ const isArray = Array.isArray(rootObject);
36
+ const output = isArray ? [] : {};
37
+ visited.set(rootObject, output);
38
+ if (isArray) {
39
+ const arr = rootObject;
40
+ const out = output;
41
+ for (let i = 0; i < arr.length; i++) {
42
+ const propertyValue = peekObservable(arr[i]);
43
+ out[i] = canHaveProperties(propertyValue)
44
+ ? (visited.get(propertyValue) ?? mapJsObjectGraph(propertyValue, visited))
45
+ : propertyValue;
46
+ }
47
+ }
48
+ else {
49
+ const out = output;
50
+ for (const key in rootObject) {
51
+ const propertyValue = peekObservable(rootObject[key]);
52
+ out[key] = canHaveProperties(propertyValue)
53
+ ? (visited.get(propertyValue) ?? mapJsObjectGraph(propertyValue, visited))
54
+ : propertyValue;
55
+ }
56
+ }
57
+ return output;
58
+ }
59
+ export function toJS(rootObject) {
60
+ return mapJsObjectGraph(rootObject, new Map());
61
+ }
62
+ export function toJSON(rootObject, replacer, space) {
63
+ const plainObject = toJS(rootObject);
64
+ return JSON.stringify(plainObject, replacer, space);
65
+ }
66
+ export function when(predicate, callback) {
67
+ function kowhen(resolve) {
68
+ const observable = new PureComputed(predicate);
69
+ observable.extend({ notify: 'always' });
70
+ const subscription = observable.subscribe((value) => {
71
+ if (value) {
72
+ subscription.dispose();
73
+ observable.dispose();
74
+ resolve(value);
75
+ }
76
+ });
77
+ observable.notifySubscribers(observable.peek());
78
+ return subscription;
79
+ }
80
+ if (!callback) {
81
+ return new Promise(kowhen);
82
+ }
83
+ else {
84
+ return kowhen(callback);
85
+ }
86
+ }
87
+ export function catchFunctionErrors(delegate) {
88
+ if (!options.onError)
89
+ return delegate;
90
+ return function (...args) {
91
+ try {
92
+ return delegate.apply(this, args);
93
+ }
94
+ catch (e) {
95
+ options.onError?.(e);
96
+ throw e;
97
+ }
98
+ };
99
+ }
100
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,2BAA2B,EAAE,CAAC,EAAE,EAAE,CAAC;QACtF,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,2BAA2B,EAAE,CAAC,EAAE,EAAE,CAAC;QACtF,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC;QACxB,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC;QACtB,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC;QACxB,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC;QACxB,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,UAAmB,EACnB,OAA6B;IAE7B,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAExC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAwC,OAAO,CAAC,CAAC,CAAC,EAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,UAAkC,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAmB,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,GAAG,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,aAAa,CAAC;gBACvC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAC,IAAI,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBACpF,CAAC,CAAC,aAAa,CAAC;QACpB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAiC,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACtD,GAAG,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,aAAa,CAAC;gBACzC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAC,IAAI,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBACpF,CAAC,CAAC,aAAa,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,IAAI,CAAI,UAAa;IACnC,OAAO,gBAAgB,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,UAAmB,EACnB,QAAmD,EACnD,KAAuB;IAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,QAAgD,EAAE,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,SAAwB,EACxB,QAAmC;IAEnC,SAAS,MAAM,CAAC,OAAiC;QAC/C,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/C,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,KAAc,EAAE,EAAE;YAC3D,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,OAAO,EAAE,CAAC;gBACvB,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAA0C,QAAW;IACtF,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IACtC,OAAO,UAAyB,GAAG,IAAmB;QACpD,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAiB,CAAC;AACpB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function cloneNodes(nodesArray: Node[], shouldCleanNodes?: boolean): Node[];
2
+ export declare function fixUpContinuousNodeArray(continuousNodeArray: Node[], parentNode: Node): Node[];
3
+ export declare function replaceDomNodes(nodeToReplaceOrNodeArray: Node | Node[], newNodesArray: Node[]): void;
4
+ export declare function moveCleanedNodesToContainerElement(nodes: ArrayLike<Node>): HTMLElement;
5
+ export declare function parseHtmlFragment(html: string, documentContext?: Document): Node[];
6
+ export declare function domNodeIsAttachedToDocument(node: Node): boolean;
7
+ export declare function anyDomNodeIsAttachedToDocument(nodes: Node[]): boolean;
8
+ //# sourceMappingURL=utilsDom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilsDom.d.ts","sourceRoot":"","sources":["../src/utilsDom.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,CAOjF;AAED,wBAAgB,wBAAwB,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,CA0B9F;AAED,wBAAgB,eAAe,CAAC,wBAAwB,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI,CAYpG;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,WAAW,CAQtF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,CAKlF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAS/D;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAKrE"}
@@ -0,0 +1,81 @@
1
+ import { cleanNode, removeNode } from './domNodeDisposal.js';
2
+ export function cloneNodes(nodesArray, shouldCleanNodes) {
3
+ const result = [];
4
+ for (let i = 0; i < nodesArray.length; i++) {
5
+ const cloned = nodesArray[i].cloneNode(true);
6
+ result.push(shouldCleanNodes ? cleanNode(cloned) : cloned);
7
+ }
8
+ return result;
9
+ }
10
+ export function fixUpContinuousNodeArray(continuousNodeArray, parentNode) {
11
+ if (continuousNodeArray.length) {
12
+ parentNode = (parentNode.nodeType === 8 && parentNode.parentNode) || parentNode;
13
+ // Rule [A]: Strip detached leading nodes
14
+ while (continuousNodeArray.length && continuousNodeArray[0].parentNode !== parentNode)
15
+ continuousNodeArray.splice(0, 1);
16
+ // Rule [B]: Strip detached trailing nodes
17
+ while (continuousNodeArray.length > 1 && continuousNodeArray[continuousNodeArray.length - 1].parentNode !== parentNode)
18
+ continuousNodeArray.length--;
19
+ // Rule [C]: Fill in to maintain continuity
20
+ if (continuousNodeArray.length > 1) {
21
+ const first = continuousNodeArray[0];
22
+ const last = continuousNodeArray[continuousNodeArray.length - 1];
23
+ continuousNodeArray.length = 0;
24
+ let current = first;
25
+ while (current !== last) {
26
+ continuousNodeArray.push(current);
27
+ current = current.nextSibling;
28
+ }
29
+ continuousNodeArray.push(last);
30
+ }
31
+ }
32
+ return continuousNodeArray;
33
+ }
34
+ export function replaceDomNodes(nodeToReplaceOrNodeArray, newNodesArray) {
35
+ const nodesToReplace = 'nodeType' in nodeToReplaceOrNodeArray
36
+ ? [nodeToReplaceOrNodeArray]
37
+ : nodeToReplaceOrNodeArray;
38
+ if (nodesToReplace.length > 0) {
39
+ const insertionPoint = nodesToReplace[0];
40
+ const parent = insertionPoint.parentNode;
41
+ for (let i = 0; i < newNodesArray.length; i++)
42
+ parent.insertBefore(newNodesArray[i], insertionPoint);
43
+ for (let i = 0; i < nodesToReplace.length; i++)
44
+ removeNode(nodesToReplace[i]);
45
+ }
46
+ }
47
+ export function moveCleanedNodesToContainerElement(nodes) {
48
+ const nodesArray = Array.from(nodes);
49
+ const doc = (nodesArray[0] && nodesArray[0].ownerDocument) || document;
50
+ const container = doc.createElement('div');
51
+ for (let i = 0; i < nodesArray.length; i++) {
52
+ container.appendChild(cleanNode(nodesArray[i]));
53
+ }
54
+ return container;
55
+ }
56
+ export function parseHtmlFragment(html, documentContext) {
57
+ const doc = documentContext || document;
58
+ const div = doc.createElement('div');
59
+ div.innerHTML = html;
60
+ return Array.from(div.childNodes);
61
+ }
62
+ export function domNodeIsAttachedToDocument(node) {
63
+ let current = node;
64
+ const root = node.ownerDocument?.documentElement;
65
+ if (!root)
66
+ return false;
67
+ while (current) {
68
+ if (current === root)
69
+ return true;
70
+ current = current.parentNode;
71
+ }
72
+ return false;
73
+ }
74
+ export function anyDomNodeIsAttachedToDocument(nodes) {
75
+ for (let i = 0; i < nodes.length; i++) {
76
+ if (domNodeIsAttachedToDocument(nodes[i]))
77
+ return true;
78
+ }
79
+ return false;
80
+ }
81
+ //# sourceMappingURL=utilsDom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilsDom.js","sourceRoot":"","sources":["../src/utilsDom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare const allowedVirtualElementBindings: Record<string, boolean>;
2
+ export declare function isStartComment(node: Node): boolean;
3
+ export declare function virtualChildNodes(node: Node): Node[] | NodeListOf<ChildNode>;
4
+ export declare function virtualEmptyNode(node: Node): void;
5
+ export declare function virtualSetChildren(node: Node, childNodes: Node[]): void;
6
+ export declare function virtualPrepend(containerNode: Node, nodeToPrepend: Node): void;
7
+ export declare function virtualInsertAfter(containerNode: Node, nodeToInsert: Node, insertAfterNode: Node | null): void;
8
+ export declare function virtualFirstChild(node: Node): Node | null;
9
+ export declare function virtualNextSibling(node: Node): Node | null;
10
+ export declare function hasBindingValue(node: Node): boolean;
11
+ export declare function virtualNodeBindingValue(node: Node): string | null;
12
+ //# sourceMappingURL=virtualElements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtualElements.d.ts","sourceRoot":"","sources":["../src/virtualElements.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,CAAC;AAEzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAElD;AAyCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAE5E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAWjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAevE;AAED,wBAAgB,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,GAAG,IAAI,CAiB7E;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAc9G;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAYzD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAQ1D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEnD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAGjE"}
@@ -0,0 +1,141 @@
1
+ import { domDataGet, domDataSet } from './domData.js';
2
+ import { removeNode } from './domNodeDisposal.js';
3
+ const startCommentRegex = /^\s*tap(?:\s+([\s\S]+))?\s*$/;
4
+ const endCommentRegex = /^\s*\/tap\s*$/;
5
+ const matchedEndCommentDataKey = '__tap_matchedEndComment__';
6
+ export const allowedVirtualElementBindings = {};
7
+ export function isStartComment(node) {
8
+ return node.nodeType === 8 && startCommentRegex.test(node.nodeValue || '');
9
+ }
10
+ function isEndComment(node) {
11
+ return node.nodeType === 8 && endCommentRegex.test(node.nodeValue || '');
12
+ }
13
+ function isUnmatchedEndComment(node) {
14
+ return isEndComment(node) && !domDataGet(node, matchedEndCommentDataKey);
15
+ }
16
+ function getVirtualChildren(startComment, allowUnbalanced) {
17
+ let currentNode = startComment.nextSibling;
18
+ let depth = 1;
19
+ const children = [];
20
+ while (currentNode) {
21
+ if (isEndComment(currentNode)) {
22
+ domDataSet(currentNode, matchedEndCommentDataKey, true);
23
+ depth--;
24
+ if (depth === 0)
25
+ return children;
26
+ }
27
+ children.push(currentNode);
28
+ if (isStartComment(currentNode))
29
+ depth++;
30
+ currentNode = currentNode.nextSibling;
31
+ }
32
+ if (!allowUnbalanced) {
33
+ throw new Error('Cannot find closing comment tag to match: ' + startComment.nodeValue);
34
+ }
35
+ return null;
36
+ }
37
+ function getMatchingEndComment(startComment, allowUnbalanced) {
38
+ const allVirtualChildren = getVirtualChildren(startComment, allowUnbalanced);
39
+ if (allVirtualChildren) {
40
+ if (allVirtualChildren.length > 0) {
41
+ return allVirtualChildren[allVirtualChildren.length - 1].nextSibling;
42
+ }
43
+ return startComment.nextSibling;
44
+ }
45
+ return null;
46
+ }
47
+ export function virtualChildNodes(node) {
48
+ return isStartComment(node) ? getVirtualChildren(node) : node.childNodes;
49
+ }
50
+ export function virtualEmptyNode(node) {
51
+ if (!isStartComment(node)) {
52
+ while (node.firstChild) {
53
+ removeNode(node.firstChild);
54
+ }
55
+ }
56
+ else {
57
+ const children = getVirtualChildren(node);
58
+ for (let i = 0; i < children.length; i++) {
59
+ removeNode(children[i]);
60
+ }
61
+ }
62
+ }
63
+ export function virtualSetChildren(node, childNodes) {
64
+ if (!isStartComment(node)) {
65
+ while (node.firstChild) {
66
+ removeNode(node.firstChild);
67
+ }
68
+ for (let i = 0; i < childNodes.length; i++) {
69
+ node.appendChild(childNodes[i]);
70
+ }
71
+ }
72
+ else {
73
+ virtualEmptyNode(node);
74
+ const endCommentNode = node.nextSibling;
75
+ for (let i = 0; i < childNodes.length; i++) {
76
+ endCommentNode.parentNode.insertBefore(childNodes[i], endCommentNode);
77
+ }
78
+ }
79
+ }
80
+ export function virtualPrepend(containerNode, nodeToPrepend) {
81
+ let insertBeforeNode;
82
+ let parent;
83
+ if (isStartComment(containerNode)) {
84
+ insertBeforeNode = containerNode.nextSibling;
85
+ parent = containerNode.parentNode;
86
+ }
87
+ else {
88
+ insertBeforeNode = containerNode.firstChild;
89
+ parent = containerNode;
90
+ }
91
+ if (!insertBeforeNode) {
92
+ parent.appendChild(nodeToPrepend);
93
+ }
94
+ else {
95
+ parent.insertBefore(nodeToPrepend, insertBeforeNode);
96
+ }
97
+ }
98
+ export function virtualInsertAfter(containerNode, nodeToInsert, insertAfterNode) {
99
+ if (!insertAfterNode) {
100
+ virtualPrepend(containerNode, nodeToInsert);
101
+ return;
102
+ }
103
+ const insertBeforeNode = insertAfterNode.nextSibling;
104
+ const parent = isStartComment(containerNode) ? containerNode.parentNode : containerNode;
105
+ if (!insertBeforeNode) {
106
+ parent.appendChild(nodeToInsert);
107
+ }
108
+ else {
109
+ parent.insertBefore(nodeToInsert, insertBeforeNode);
110
+ }
111
+ }
112
+ export function virtualFirstChild(node) {
113
+ if (!isStartComment(node)) {
114
+ const first = node.firstChild;
115
+ if (first && isEndComment(first)) {
116
+ return first.nextSibling;
117
+ }
118
+ return first;
119
+ }
120
+ if (!node.nextSibling || isEndComment(node.nextSibling)) {
121
+ return null;
122
+ }
123
+ return node.nextSibling;
124
+ }
125
+ export function virtualNextSibling(node) {
126
+ if (isStartComment(node)) {
127
+ node = getMatchingEndComment(node);
128
+ }
129
+ if (node.nextSibling && isEndComment(node.nextSibling)) {
130
+ return null;
131
+ }
132
+ return node.nextSibling;
133
+ }
134
+ export function hasBindingValue(node) {
135
+ return isStartComment(node);
136
+ }
137
+ export function virtualNodeBindingValue(node) {
138
+ const match = (node.nodeValue || '').match(startCommentRegex);
139
+ return match ? match[1]?.trim() ?? null : null;
140
+ }
141
+ //# sourceMappingURL=virtualElements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtualElements.js","sourceRoot":"","sources":["../src/virtualElements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Subscription } from './subscribable.js';
2
+ export interface WireParamsResult {
3
+ subscriptions: Subscription<unknown>[];
4
+ }
5
+ export declare function wireParams(instance: object, params: Record<string, unknown>, element?: Node): WireParamsResult;
6
+ //# sourceMappingURL=wireParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wireParams.d.ts","sourceRoot":"","sources":["../src/wireParams.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;CACxC;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,IAAI,GACb,gBAAgB,CA+BlB"}
@@ -0,0 +1,39 @@
1
+ import { Observable } from './observable.js';
2
+ import { Computed } from './computed.js';
3
+ import { isSubscribable } from './subscribable.js';
4
+ import { getObservable, replaceObservable } from './decorators.js';
5
+ import { addDisposeCallback } from './domNodeDisposal.js';
6
+ const SKIP_KEYS = new Set(['$raw']);
7
+ export function wireParams(instance, params, element) {
8
+ const subscriptions = [];
9
+ for (const key of Object.keys(params)) {
10
+ if (SKIP_KEYS.has(key))
11
+ continue;
12
+ const paramValue = params[key];
13
+ const childObs = getObservable(instance, key);
14
+ const childIsReactive = childObs !== undefined && isSubscribable(childObs);
15
+ if (paramValue instanceof Observable) {
16
+ if (childIsReactive) {
17
+ replaceObservable(instance, key, paramValue);
18
+ }
19
+ else {
20
+ instance[key] = paramValue.get();
21
+ }
22
+ }
23
+ else if (paramValue instanceof Computed) {
24
+ instance[key] = paramValue.get();
25
+ const sub = paramValue.subscribe((newValue) => {
26
+ instance[key] = newValue;
27
+ });
28
+ subscriptions.push(sub);
29
+ if (element) {
30
+ addDisposeCallback(element, () => sub.dispose());
31
+ }
32
+ }
33
+ else {
34
+ instance[key] = paramValue;
35
+ }
36
+ }
37
+ return { subscriptions };
38
+ }
39
+ //# sourceMappingURL=wireParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wireParams.js","sourceRoot":"","sources":["../src/wireParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAMpC,MAAM,UAAU,UAAU,CACxB,QAAgB,EAChB,MAA+B,EAC/B,OAAc;IAEd,MAAM,aAAa,GAA4B,EAAE,CAAC;IAElD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAEjC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE3E,IAAI,UAAU,YAAY,UAAU,EAAE,CAAC;YACrC,IAAI,eAAe,EAAE,CAAC;gBACpB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACL,QAAoC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,YAAY,QAAQ,EAAE,CAAC;YACzC,QAAoC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAiB,EAAE,EAAE;gBACpD,QAAoC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,OAAO,EAAE,CAAC;gBACZ,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YACL,QAAoC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,CAAC;AAC3B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@thomas-siegfried/tapout",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/thomas-siegfried/tapout"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "typescript": "./src/index.ts",
15
+ "import": {
16
+ "types": "./dist/index.d.ts",
17
+ "default": "./dist/index.js"
18
+ }
19
+ },
20
+ "./core": {
21
+ "typescript": "./src/core.ts",
22
+ "import": {
23
+ "types": "./dist/core.d.ts",
24
+ "default": "./dist/core.js"
25
+ }
26
+ }
27
+ },
28
+ "imports": {
29
+ "#src/*": "./src/*"
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "src"
34
+ ],
35
+ "scripts": {
36
+ "build": "tsc",
37
+ "dev": "tsc --watch",
38
+ "test": "node --import tsx/esm ./node_modules/jasmine/bin/jasmine.js",
39
+ "test:typecheck": "tsc --noEmit -p tsconfig.spec.json",
40
+ "test:e2e": "npx playwright test",
41
+ "prepublishOnly": "npm run build"
42
+ },
43
+ "keywords": [],
44
+ "author": "Thomas Siegfried",
45
+ "license": "MIT",
46
+ "devDependencies": {
47
+ "@playwright/test": "^1.58.2",
48
+ "@types/jasmine": "^6.0.0",
49
+ "@types/node": "^25.5.0",
50
+ "happy-dom": "^20.8.4",
51
+ "jasmine": "^6.1.0",
52
+ "tsx": "^4.21.0",
53
+ "typescript": "^5.9.3"
54
+ }
55
+ }