@torpor/view 0.1.11 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (807) hide show
  1. package/.oxlintrc.json +3 -0
  2. package/CHANGELOG.md +37 -0
  3. package/README.md +28 -27
  4. package/dist/Component-d19HOoEw.d.ts +11 -0
  5. package/dist/Component-d19HOoEw.d.ts.map +1 -0
  6. package/dist/ServerSlotRender-BiG4xB8e.d.ts +41 -0
  7. package/dist/ServerSlotRender-BiG4xB8e.d.ts.map +1 -0
  8. package/dist/compile.d.ts +202 -148
  9. package/dist/compile.d.ts.map +1 -0
  10. package/dist/compile.js +3380 -3747
  11. package/dist/compile.js.map +1 -1
  12. package/dist/formatText-B0FXBdFT.js +410 -0
  13. package/dist/formatText-B0FXBdFT.js.map +1 -0
  14. package/dist/index.d.ts +373 -170
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +826 -760
  17. package/dist/index.js.map +1 -1
  18. package/dist/ssr.d.ts +13 -8
  19. package/dist/ssr.d.ts.map +1 -0
  20. package/dist/ssr.js +18 -27
  21. package/dist/ssr.js.map +1 -1
  22. package/package.json +18 -22
  23. package/scripts/buildTestOutput.ts +1 -1
  24. package/scripts/copyToRepl.ts +9 -7
  25. package/src/ambient.d.ts +1 -0
  26. package/src/compile/build/client/BuildStatus.ts +6 -4
  27. package/src/compile/build/client/addMappedText.ts +25 -0
  28. package/src/compile/build/client/buildAddFragment.ts +26 -4
  29. package/src/compile/build/client/buildAwaitNode.ts +86 -54
  30. package/src/compile/build/client/buildCode.ts +91 -57
  31. package/src/compile/build/client/buildComponentNode.ts +23 -43
  32. package/src/compile/build/client/buildControlNode.ts +5 -4
  33. package/src/compile/build/client/buildElementNode.ts +70 -78
  34. package/src/compile/build/client/buildForNode.ts +24 -12
  35. package/src/compile/build/client/buildFragment.ts +29 -43
  36. package/src/compile/build/client/buildFragmentText.ts +27 -20
  37. package/src/compile/build/client/buildHtmlNode.ts +5 -3
  38. package/src/compile/build/client/buildIfNode.ts +44 -29
  39. package/src/compile/build/client/buildMount.ts +1 -1
  40. package/src/compile/build/client/buildNode.ts +8 -7
  41. package/src/compile/build/client/buildReplaceNode.ts +5 -3
  42. package/src/compile/build/client/buildRootNode.ts +2 -2
  43. package/src/compile/build/client/buildRun.ts +1 -1
  44. package/src/compile/build/client/buildScriptNode.ts +5 -3
  45. package/src/compile/build/client/buildSlotNode.ts +7 -23
  46. package/src/compile/build/client/buildSpecialNode.ts +10 -14
  47. package/src/compile/build/client/buildStyles.ts +53 -18
  48. package/src/compile/build/client/buildSwitchNode.ts +53 -32
  49. package/src/compile/build/client/buildTextNode.ts +31 -28
  50. package/src/compile/build/client/replaceForVarNames.ts +1 -1
  51. package/src/compile/build/client/stashRun.ts +22 -0
  52. package/src/compile/build/client/stashRunWithOffsets.ts +32 -0
  53. package/src/compile/build/server/BuildServerStatus.ts +3 -3
  54. package/src/compile/build/server/buildServerAwaitNode.ts +5 -5
  55. package/src/compile/build/server/buildServerCode.ts +60 -39
  56. package/src/compile/build/server/buildServerComponentNode.ts +21 -41
  57. package/src/compile/build/server/buildServerControlNode.ts +7 -4
  58. package/src/compile/build/server/buildServerElementNode.ts +18 -29
  59. package/src/compile/build/server/buildServerForNode.ts +5 -5
  60. package/src/compile/build/server/buildServerHtmlNode.ts +3 -3
  61. package/src/compile/build/server/buildServerIfNode.ts +5 -5
  62. package/src/compile/build/server/buildServerNode.ts +7 -6
  63. package/src/compile/build/server/buildServerReplaceNode.ts +5 -5
  64. package/src/compile/build/server/buildServerRootNode.ts +2 -2
  65. package/src/compile/build/server/buildServerScriptNode.ts +1 -1
  66. package/src/compile/build/server/buildServerSlotNode.ts +14 -26
  67. package/src/compile/build/server/buildServerSpecialNode.ts +10 -13
  68. package/src/compile/build/server/buildServerSwitchNode.ts +5 -5
  69. package/src/compile/build/server/buildServerTextNode.ts +9 -23
  70. package/src/compile/build/utils/nextVarName.ts +2 -2
  71. package/src/compile/build.ts +9 -4
  72. package/src/compile/buildType.ts +2 -2
  73. package/src/compile/parse/ParseComponentStatus.ts +24 -0
  74. package/src/compile/parse/ParseStatus.ts +6 -26
  75. package/src/compile/parse/addSpaceElement.ts +6 -5
  76. package/src/compile/parse/parseCode.ts +116 -60
  77. package/src/compile/parse/parseControl.ts +34 -32
  78. package/src/compile/parse/parseElement.ts +56 -121
  79. package/src/compile/parse/parseImports.ts +1 -1
  80. package/src/compile/parse/parseInlineScript.ts +12 -26
  81. package/src/compile/parse/parseMarkup.ts +9 -3
  82. package/src/compile/parse/parseStyles.ts +4 -4
  83. package/src/compile/parse/parseTag.ts +50 -8
  84. package/src/compile/parse/parseText.ts +96 -0
  85. package/src/compile/parse/scopeStyles.ts +9 -8
  86. package/src/compile/parse/slottifyChildNodes.ts +8 -7
  87. package/src/compile/parse/utils/accept.ts +1 -1
  88. package/src/compile/parse/utils/addError.ts +24 -6
  89. package/src/compile/parse/utils/consumeAlphaNumeric.ts +1 -1
  90. package/src/compile/parse/utils/consumeNonSpace.ts +1 -1
  91. package/src/compile/parse/utils/consumeSpace.ts +1 -1
  92. package/src/compile/parse/utils/consumeUntil.ts +1 -1
  93. package/src/compile/parse/utils/expect.ts +1 -1
  94. package/src/compile/parse.ts +1 -1
  95. package/src/compile/types/BuildResult.ts +5 -2
  96. package/src/compile/types/CompileError.ts +8 -5
  97. package/src/compile/types/Import.ts +2 -2
  98. package/src/compile/types/ParseResult.ts +4 -4
  99. package/src/compile/types/ScriptChunk.ts +6 -0
  100. package/src/compile/types/SourceMapping.ts +7 -0
  101. package/src/compile/types/SourceRange.ts +4 -0
  102. package/src/compile/types/nodes/Attribute.ts +7 -2
  103. package/src/compile/types/nodes/ControlNode.ts +8 -6
  104. package/src/compile/types/nodes/ElementNode.ts +11 -6
  105. package/src/compile/types/nodes/Fragment.ts +10 -2
  106. package/src/compile/types/nodes/NodeType.ts +3 -1
  107. package/src/compile/types/nodes/OperationType.ts +3 -1
  108. package/src/compile/types/nodes/ParentNode.ts +4 -4
  109. package/src/compile/types/nodes/RootNode.ts +5 -5
  110. package/src/compile/types/nodes/TemplateNode.ts +3 -3
  111. package/src/compile/types/nodes/TextNode.ts +5 -3
  112. package/src/compile/types/styles/Attribute.ts +2 -2
  113. package/src/compile/types/styles/Style.ts +3 -3
  114. package/src/compile/types/styles/StyleBlock.ts +3 -3
  115. package/src/compile/utils/Builder.ts +25 -11
  116. package/src/compile/utils/endOfString.ts +8 -0
  117. package/src/compile/utils/endOfTemplateString.ts +14 -0
  118. package/src/compile/{types/nodes → utils}/isComponentNode.ts +2 -2
  119. package/src/compile/utils/isControlNode.ts +6 -0
  120. package/src/compile/utils/isElementNode.ts +6 -0
  121. package/src/compile/utils/isParentNode.ts +6 -0
  122. package/src/compile/{types/nodes → utils}/isSpaceNode.ts +3 -3
  123. package/src/compile/utils/isSpecialNode.ts +6 -0
  124. package/src/compile/utils/isTextNode.ts +6 -0
  125. package/src/compile.ts +2 -2
  126. package/src/debug/printNode.ts +12 -8
  127. package/src/debug/printRanges.ts +74 -0
  128. package/src/debug/printSignalDiagram.ts +139 -0
  129. package/src/debug/printSimpleDiagram.ts +88 -0
  130. package/src/index.ts +15 -8
  131. package/src/render/$batch.ts +22 -0
  132. package/src/render/$cache.ts +34 -0
  133. package/src/render/$mount.ts +1 -1
  134. package/src/render/$peek.ts +14 -0
  135. package/src/render/$run.ts +16 -13
  136. package/src/render/$serverBatch.ts +3 -0
  137. package/src/render/$serverCache.ts +3 -0
  138. package/src/render/$serverMount.ts +1 -1
  139. package/src/render/$serverPeek.ts +3 -0
  140. package/src/render/$serverRun.ts +1 -1
  141. package/src/render/$unwrap.ts +3 -1
  142. package/src/render/$watch.ts +12 -13
  143. package/src/render/addAnimation.ts +1 -1
  144. package/src/render/addFragment.ts +16 -24
  145. package/src/render/applyProps.ts +1 -1
  146. package/src/render/buildClasses.ts +31 -0
  147. package/src/render/buildStyles.ts +19 -0
  148. package/src/render/clearLayoutSlot.ts +1 -1
  149. package/src/render/clearRange.ts +43 -50
  150. package/src/render/context.ts +19 -48
  151. package/src/render/fillLayoutSlot.ts +3 -3
  152. package/src/render/getFragment.ts +1 -1
  153. package/src/render/hydrate.ts +9 -2
  154. package/src/render/hydrateRoot.ts +2 -2
  155. package/src/render/isCommentNode.ts +3 -0
  156. package/src/render/isFragmentNode.ts +3 -0
  157. package/src/render/isTextNode.ts +3 -0
  158. package/src/render/mount.ts +12 -4
  159. package/src/render/moveRange.ts +5 -3
  160. package/src/render/newListItem.ts +4 -4
  161. package/src/render/newRange.ts +6 -5
  162. package/src/render/nodeAnchor.ts +6 -6
  163. package/src/render/nodeCheckHydrationBreak.ts +3 -3
  164. package/src/render/nodeChild.ts +2 -2
  165. package/src/render/nodeNext.ts +2 -2
  166. package/src/render/nodeRoot.ts +18 -4
  167. package/src/render/popRange.ts +2 -2
  168. package/src/render/pushRange.ts +12 -4
  169. package/src/render/runControl.ts +1 -5
  170. package/src/render/runControlBranch.ts +10 -24
  171. package/src/render/runList.ts +6 -5
  172. package/src/render/runListItems.ts +39 -39
  173. package/src/render/setAttribute.ts +1 -1
  174. package/src/render/setDynamicElement.ts +2 -2
  175. package/src/ssr.ts +7 -4
  176. package/src/types/Animation.ts +1 -1
  177. package/src/types/BuildOptions.ts +6 -2
  178. package/src/types/Cleanup.ts +3 -1
  179. package/src/types/Component.ts +4 -2
  180. package/src/types/Computed.ts +62 -0
  181. package/src/types/Context.ts +99 -0
  182. package/src/types/Effect.ts +45 -9
  183. package/src/types/ListItem.ts +3 -3
  184. package/src/types/ProxyData.ts +6 -4
  185. package/src/types/ProxySignal.ts +28 -0
  186. package/src/types/Range.ts +10 -16
  187. package/src/types/ServerComponent.ts +5 -3
  188. package/src/types/ServerSlotRender.ts +3 -1
  189. package/src/types/SlotRender.ts +4 -2
  190. package/src/types/Subscription.ts +57 -0
  191. package/src/types/Template.ts +6 -5
  192. package/src/types/TemplateComponent.ts +7 -5
  193. package/src/types/WatchOptions.ts +8 -2
  194. package/src/types/constants.ts +14 -0
  195. package/src/watch/batchEnd.ts +17 -0
  196. package/src/watch/batchStart.ts +5 -0
  197. package/src/watch/checkComputed.ts +46 -0
  198. package/src/watch/checkEffect.ts +30 -0
  199. package/src/watch/checkSources.ts +63 -0
  200. package/src/watch/clearSources.ts +39 -0
  201. package/src/watch/clearTargets.ts +28 -0
  202. package/src/watch/deactivateSources.ts +19 -0
  203. package/src/watch/proxyGet.ts +106 -51
  204. package/src/watch/proxySet.ts +17 -13
  205. package/src/watch/runCleanups.ts +40 -0
  206. package/src/watch/runComputed.ts +36 -0
  207. package/src/watch/runEffect.ts +38 -13
  208. package/src/watch/symbols.ts +3 -1
  209. package/src/watch/trackEffect.ts +63 -15
  210. package/src/watch/trackProxyEffect.ts +21 -0
  211. package/src/watch/transferEffects.ts +66 -62
  212. package/src/watch/triggerEffects.ts +55 -18
  213. package/src/watch/updateSignal.ts +102 -0
  214. package/src/wrappers/ReactiveDate.ts +68 -0
  215. package/test/attributes/attributes.test.ts +2 -2
  216. package/test/attributes/components/output/Attributes-client.ts +8 -20
  217. package/test/attributes/components/output/Attributes-server.ts +9 -11
  218. package/test/attributes/components/temp/{Attributes-client-4620a40099e57a7fdaab895b204d85881f6dbfb7.ts → Attributes-client-9b2935d7824ba501776fdc6c48861422c15b6a12.ts} +8 -20
  219. package/test/attributes/components/temp/Attributes-server-716db6e335e5a372a34dd931e5f358ee6d1869e5.ts +16 -0
  220. package/test/attributes/disappearing.test.ts +2 -2
  221. package/test/attributes/parse.test.ts +161 -248
  222. package/test/await/await.test.ts +2 -2
  223. package/test/await/components/Await.torp +11 -13
  224. package/test/await/components/output/Await-client.ts +31 -46
  225. package/test/await/components/output/Await-server.ts +13 -14
  226. package/test/await/components/temp/{Await-client-9c30564ea39457e614e60c0cc0a71c431e8a1e76.ts → Await-client-e969f4bd0712acf259ddfaa5a3b3448307201fd2.ts} +31 -46
  227. package/test/await/components/temp/{Await-server-f02f39af3bb3344ca6b18a1d64d60b21913fba31.ts → Await-server-614014fab69e234b8271088b10397cf0452d9a76.ts} +13 -14
  228. package/test/bench/components/Bench.torp +4 -4
  229. package/test/bench/components/output/Bench-client.ts +43 -46
  230. package/test/bench/components/output/Bench-server.ts +16 -17
  231. package/test/bench/components/temp/Bench-client-7f31596dafc8077370d8d90b1bb9b6e0208154e7.ts +205 -0
  232. package/test/bench/components/temp/{Bench-server-00cefa588803c01ca4f2741c595e4f045cdd101e.ts → Bench-server-341b20073668f4f2160cd2ba37847c7db15e1e0f.ts} +16 -17
  233. package/test/bind/bind.test.ts +2 -2
  234. package/test/bind/component.test.ts +2 -2
  235. package/test/bind/components/BindComponent.torp +3 -18
  236. package/test/bind/components/BindText.torp +8 -10
  237. package/test/bind/components/output/BindComponent-client.ts +26 -47
  238. package/test/bind/components/output/BindComponent-server.ts +25 -36
  239. package/test/bind/components/output/BindText-client.ts +9 -16
  240. package/test/bind/components/output/BindText-server.ts +10 -11
  241. package/test/bind/components/temp/BindComponent-client-22eccb5354a2b0267841e015f3a2a0baf534bf89.ts +72 -0
  242. package/test/bind/components/temp/BindComponent-server-0da6ba90a409468fd1f7358f8198e96b7595ff80.ts +41 -0
  243. package/test/bind/components/temp/{BindText-client-134676d616abbad6b8a7ec48df0a2e38cbfe3b87.ts → BindText-client-7692ae1570533cc17e2186e9c7d4768529e4a2fe.ts} +9 -16
  244. package/test/bind/components/temp/BindText-server-6801c5f8e66a65405b45061bc037a011620c0591.ts +20 -0
  245. package/test/build-server/build-server.test.ts +2 -1
  246. package/test/build-server/components/IfNested.torp +11 -13
  247. package/test/{if/components/temp/IfNested-client-f3045daba052e459add6e7f84e8d21ba7b0d81e4.ts → build-server/components/output/IfNested-client.ts} +23 -27
  248. package/test/build-server/components/output/IfNested-server.ts +29 -0
  249. package/test/build-server/components/temp/IfNested-client-eefdd449fa700b2e7326bc72df8b32ddcadf9d21.ts +88 -0
  250. package/test/build-server/components/temp/IfNested-server-7a53e4969b5dfe5073f05edbcb1b986f718bb939.ts +29 -0
  251. package/test/buildHtml.ts +3 -2
  252. package/test/buildOutputFiles.ts +7 -7
  253. package/test/child-component/child-component.test.ts +2 -2
  254. package/test/child-component/components/ParentChild.torp +1 -3
  255. package/test/child-component/components/output/ParentChild-client.ts +13 -24
  256. package/test/child-component/components/output/ParentChild-server.ts +20 -22
  257. package/test/child-component/components/temp/{ParentChild-client-50ca7e499599209c9d674f2561413ca14a282c22.ts → ParentChild-client-2dfd600f7d409630d429a1d2d18c038bd08b08da.ts} +13 -24
  258. package/test/child-component/components/temp/ParentChild-server-448d57c3229189c1d297d01dfb0f33646d280e90.ts +37 -0
  259. package/test/class/class.test.ts +2 -2
  260. package/test/class/components/Class.torp +22 -24
  261. package/test/class/components/output/Class-client.ts +17 -37
  262. package/test/class/components/output/Class-server.ts +25 -25
  263. package/test/class/components/temp/{Class-client-de2491c550647203bea08727fa8c88f30654db0a.ts → Class-client-5af6a50cd454ae019b2aa79457ba7ead83b8c056.ts} +17 -37
  264. package/test/class/components/temp/Class-server-eb70ff01fbc7d6d53e16c3593ba021a6bf0317f9.ts +40 -0
  265. package/test/comments/html-comments.test.ts +16 -24
  266. package/test/comments/js-block-comments.test.ts +16 -25
  267. package/test/comments/js-line-comments.test.ts +16 -25
  268. package/test/component/component.test.ts +2 -2
  269. package/test/component/components/Component.torp +1 -1
  270. package/test/component/components/output/Component-client.ts +5 -10
  271. package/test/component/components/output/Component-server.ts +13 -13
  272. package/test/component/components/output/Header-client.ts +6 -12
  273. package/test/component/components/output/Header-server.ts +9 -11
  274. package/test/component/components/temp/{Component-client-350d20784712c710929cc3ab34c6828b0ea338d8.ts → Component-client-fdc327499be0a01f987d0f2897baf022a247c77c.ts} +5 -10
  275. package/test/component/components/temp/Component-server-f53221ac7b1c922ef10de2d1fe8fb534d0169fe7.ts +24 -0
  276. package/test/component/components/temp/{Header-client-903877003b220272b0cb5bfd62d7d748ad46c477.ts → Header-client-6beb5770e68e6b19595e53e20bc906765fc6c260.ts} +6 -12
  277. package/test/component/components/temp/Header-server-940b0984f9b6c11f310db9200c9075ded385eda5.ts +16 -0
  278. package/test/console/components/output/Console-client.ts +5 -10
  279. package/test/console/components/output/Console-server.ts +9 -11
  280. package/test/console/components/temp/{Console-client-4fa3b3679cee88bf6151185438e36d14010944b7.ts → Console-client-2b58290ac407ebbe89a0613d64eb9cd141b99887.ts} +5 -10
  281. package/test/console/components/temp/Console-server-bde0121ce434f767435b1841fc4c24402becdba2.ts +15 -0
  282. package/test/console/console.test.ts +2 -2
  283. package/test/const/components/Const.torp +4 -6
  284. package/test/const/components/output/Const-client.ts +8 -13
  285. package/test/const/components/output/Const-server.ts +10 -12
  286. package/test/const/components/temp/{Const-client-7dff2758c14bfbd208e301a702ae1781e6daba1b.ts → Const-client-d1037557e7ef75a8fe06f56816e65883047e9421.ts} +8 -13
  287. package/test/const/components/temp/Const-server-32ddc3617afe2324f17a4cff6c0f086df6694778.ts +18 -0
  288. package/test/const/const.test.ts +2 -2
  289. package/test/context/components/ChildA.torp +10 -0
  290. package/test/context/components/ChildB.torp +8 -0
  291. package/test/context/components/Parent.torp +11 -0
  292. package/test/context/components/output/ChildA-client.ts +38 -0
  293. package/test/context/components/output/ChildA-server.ts +19 -0
  294. package/test/{party/components/temp/CssStyle-client-37465dd48d1479db1bae513eb0b92c4e9a15e9ea.ts → context/components/output/ChildB-client.ts} +10 -12
  295. package/test/context/components/output/ChildB-server.ts +18 -0
  296. package/test/context/components/output/Parent-server.ts +31 -0
  297. package/test/context/components/temp/ChildA-client-9dea3e29ffcb82ca1779f6ff671e19b1c106fc4a.ts +38 -0
  298. package/test/context/components/temp/ChildA-server-54024d23c8241c3f475068f4fe3a3a14fd1c5870.ts +19 -0
  299. package/test/{special-head/components/temp/Head-client-18616689a7d6f83ca076c9d825606b049de9d3ef.ts → context/components/temp/ChildB-client-4b801099936c8aa013a1220f291375f67eba1acb.ts} +10 -21
  300. package/test/context/components/temp/ChildB-server-f9b71341863bf869248bd406dbe8c7726a30ff90.ts +18 -0
  301. package/test/context/components/temp/Parent-client-9898b2e521527c86d69905053b6727ea8fd28166.ts +41 -0
  302. package/test/context/components/temp/Parent-server-b592ff0f516f4592e56d3a0bcb1f271ed28e812c.ts +31 -0
  303. package/test/context/context.test.ts +37 -0
  304. package/test/effects/components/For.torp +3 -5
  305. package/test/effects/components/If.torp +5 -7
  306. package/test/effects/components/NestedIf.torp +6 -8
  307. package/test/effects/components/output/For-client.ts +23 -25
  308. package/test/effects/components/output/For-server.ts +10 -12
  309. package/test/effects/components/output/If-client.ts +19 -25
  310. package/test/effects/components/output/If-server.ts +11 -13
  311. package/test/effects/components/output/NestedIf-client.ts +26 -31
  312. package/test/effects/components/output/NestedIf-server.ts +13 -15
  313. package/test/effects/components/temp/{For-client-35bf9bea43f53d6c0cf807f9e31500765fa0b455.ts → For-client-7c7d7c0dba2547f816b9bd9c6a95d6873ec00ffd.ts} +23 -25
  314. package/test/effects/components/temp/For-server-9e2de4efaff38ecf6c8a169c629d83c385489ca1.ts +20 -0
  315. package/test/effects/components/temp/{If-client-efb994796596d9d08f59a0ab5ffdacc74bd04545.ts → If-client-f0480a98f80b32612d12765c6838ff6db5982e82.ts} +19 -25
  316. package/test/effects/components/temp/If-server-ab409671b5d4c918047394a37b6e96b0e17063ca.ts +22 -0
  317. package/test/effects/components/temp/{NestedIf-client-845b3789b8a938439bff758bc9b3731d769c8ff6.ts → NestedIf-client-702deffd158f219c5da4199b563a62cd54385a7f.ts} +26 -31
  318. package/test/effects/components/temp/NestedIf-server-40f6bfd99a7e75fb4f9f874adab77e5eed97c629.ts +26 -0
  319. package/test/effects/for-effect.test.ts +15 -15
  320. package/test/effects/if-effect.test.ts +7 -7
  321. package/test/effects/nested-if-effect.test.ts +11 -11
  322. package/test/events/components/Increment.torp +10 -12
  323. package/test/events/components/output/Increment-client.ts +10 -15
  324. package/test/events/components/output/Increment-server.ts +11 -12
  325. package/test/events/components/temp/{Increment-client-1b5f9e231c5c4fc059d77ca0da632719283e5ac4.ts → Increment-client-84c09711baf098c82ee226598ba7a36913616b75.ts} +10 -15
  326. package/test/events/components/temp/Increment-server-e77c6b207023ac60e033ca542ee82473ef017f74.ts +23 -0
  327. package/test/events/events.test.ts +9 -15
  328. package/test/for/components/output/For-client.ts +19 -19
  329. package/test/for/components/output/For-server.ts +11 -13
  330. package/test/for/components/output/ForEscape-client.ts +23 -37
  331. package/test/for/components/output/ForEscape-server.ts +12 -13
  332. package/test/for/components/output/ForIn-client.ts +19 -20
  333. package/test/for/components/output/ForIn-server.ts +11 -13
  334. package/test/for/components/output/ForOf-client.ts +19 -20
  335. package/test/for/components/output/ForOf-server.ts +11 -13
  336. package/test/for/components/temp/{For-client-8ecb11a2f34c81f837bffdb88598da06d8c19158.ts → For-client-2f6b4b81670b0ba31b01176b4f61ebf321e945bb.ts} +19 -19
  337. package/test/for/components/temp/For-server-5144615e53d23da5062b7169e847e0777d068738.ts +20 -0
  338. package/test/for/components/temp/{ForEscape-client-14e7648415d967cdc57bf03d176eb6b6dddf0fb2.ts → ForEscape-client-8d0fcc940851e687173b6a9129c3d83e0fc771ef.ts} +23 -37
  339. package/test/for/components/temp/ForEscape-server-b359d8d3e12bac290855a1b27387ddd963562c08.ts +23 -0
  340. package/test/for/components/temp/{ForIn-client-25cd67f246a50fc6d926a8c66aa5e106f19578a8.ts → ForIn-client-fa0614a1c7b8aa6e8819ed91a518479fd80453ae.ts} +19 -20
  341. package/test/for/components/temp/ForIn-server-5fd472a7a5a5c00b384791780025a0c3bdc9c41b.ts +20 -0
  342. package/test/for/components/temp/{ForOf-client-8f6598ccd9dc7b79aff6167b90ccea94f3029c84.ts → ForOf-client-11006c4239d9018363e582dc5b54b50477d652e7.ts} +19 -20
  343. package/test/for/components/temp/ForOf-server-197b29abcb60412c6c8670b2d4a2e644b650faa3.ts +20 -0
  344. package/test/for/for-escape.test.ts +2 -2
  345. package/test/for/for-in.test.ts +4 -4
  346. package/test/for/for-of.test.ts +4 -4
  347. package/test/for/for-with-key.test.ts +28 -36
  348. package/test/for/for.test.ts +2 -2
  349. package/test/function/components/Function.torp +7 -10
  350. package/test/function/components/output/Function-client.ts +9 -15
  351. package/test/function/components/output/Function-server.ts +11 -13
  352. package/test/function/components/temp/{Function-client-4e2168306756eb927d5ed4b673334b357eecaa74.ts → Function-client-ec5fe7d599d6099bdfab78c2a0c8edf77a23cd9b.ts} +9 -15
  353. package/test/function/components/temp/Function-server-fee2402b0ef4ad4c3d2779afb190ce46dbedf737.ts +25 -0
  354. package/test/function/function.test.ts +7 -13
  355. package/test/helpers.ts +44 -9
  356. package/test/html/components/output/Html-client.ts +6 -12
  357. package/test/html/components/output/Html-server.ts +9 -11
  358. package/test/html/components/temp/{Html-client-93b0d666142c64cd651dc37f14f12884b2f30612.ts → Html-client-82ff34dcdcbdf4be1112bcb1baac8027cdc32de7.ts} +6 -12
  359. package/test/html/components/temp/Html-server-14fa484fc2a617bc0f24432a2e37e7a756f87a0f.ts +15 -0
  360. package/test/html/html.test.ts +2 -2
  361. package/test/hydrateComponent.ts +4 -5
  362. package/test/if/components/output/IfAfterIf-client.ts +21 -23
  363. package/test/if/components/output/IfAfterIf-server.ts +12 -14
  364. package/test/if/components/output/IfElse-client.ts +14 -18
  365. package/test/if/components/output/IfElse-server.ts +11 -13
  366. package/test/if/components/output/IfElseIf-client.ts +16 -22
  367. package/test/if/components/output/IfElseIf-server.ts +12 -14
  368. package/test/if/components/output/IfFalse-client.ts +13 -16
  369. package/test/if/components/output/IfFalse-server.ts +10 -12
  370. package/test/if/components/output/IfNested-client.ts +23 -27
  371. package/test/if/components/output/IfNested-server.ts +14 -16
  372. package/test/if/components/temp/{IfAfterIf-client-6b4833209a01cdad18d453839e9c8b5dad2a8510.ts → IfAfterIf-client-c1cfd21a6ace4945703ba8f46aada923a60265d9.ts} +21 -23
  373. package/test/if/components/temp/IfAfterIf-server-26c9a638e3933a53208bfe66f8f37067511a28aa.ts +23 -0
  374. package/test/if/components/temp/{IfElse-client-f7eb8e5fe5e62975a2442c4b0ff3344fa44cef69.ts → IfElse-client-06dfcacd3a5225dcb0947587bcd4fae9ec3d3c1e.ts} +14 -18
  375. package/test/if/components/temp/IfElse-server-146b3779f85ea02a281c6042dddefa5372945fb0.ts +22 -0
  376. package/test/if/components/temp/{IfElseIf-client-734f1b2d9133294573770c1ffc2b589273498532.ts → IfElseIf-client-26df9a728c9cb712d5ac0235b4c99885f25545b8.ts} +16 -22
  377. package/test/if/components/temp/IfElseIf-server-f094cdb45bc0fcd3144ca493346994b2445d2ff0.ts +25 -0
  378. package/test/if/components/temp/{IfFalse-client-8a388cb48b4a5879d491f57d1f2551834de1e72e.ts → IfFalse-client-de6fc8e9eb222153608490e6d172e9aae9000aa1.ts} +13 -16
  379. package/test/if/components/temp/IfFalse-server-b6d3446fd7d4219d5cb3c1009dec76870e73fa30.ts +19 -0
  380. package/test/if/components/temp/IfNested-client-eefdd449fa700b2e7326bc72df8b32ddcadf9d21.ts +88 -0
  381. package/test/if/components/temp/IfNested-server-7a53e4969b5dfe5073f05edbcb1b986f718bb939.ts +29 -0
  382. package/test/if/else-if-true.test.ts +4 -4
  383. package/test/if/else-true.test.ts +4 -4
  384. package/test/if/if-after-if.test.ts +4 -4
  385. package/test/if/if-else-false.test.ts +4 -4
  386. package/test/if/if-else-true.test.ts +4 -4
  387. package/test/if/if-false.test.ts +4 -4
  388. package/test/if/if-nested.test.ts +4 -4
  389. package/test/imports/commented-imports.ts +1 -1
  390. package/test/imports/imports.ts +1 -1
  391. package/test/imports/multiple-imports.ts +1 -1
  392. package/test/mount/components/Mount.torp +1 -1
  393. package/test/mount/components/output/Mount-client.ts +6 -11
  394. package/test/mount/components/output/Mount-server.ts +11 -13
  395. package/test/mount/components/temp/{Mount-client-efa5c34fbfc7646e114a1a58f0814b6dff33e566.ts → Mount-client-29896228d7d0ef3692a9d13065c1bbfbe3198cdc.ts} +6 -11
  396. package/test/mount/components/temp/Mount-server-1c5aef88b8cc25b8e02851c0aa7fedffea987224.ts +22 -0
  397. package/test/mount/mount.test.ts +4 -4
  398. package/test/mountComponent.ts +1 -1
  399. package/test/on-mount/components/OnMount.torp +1 -1
  400. package/test/on-mount/components/output/OnMount-client.ts +5 -10
  401. package/test/on-mount/components/output/OnMount-server.ts +9 -11
  402. package/test/on-mount/components/temp/{OnMount-client-4bb62e8bf1fcd67798598fe03bf5455a57f0a6be.ts → OnMount-client-038f8c6bbcf0278406909d6ba5394f311924fda9.ts} +5 -10
  403. package/test/on-mount/components/temp/OnMount-server-ff4afcd976fd907c539e763d7887b38c61737be7.ts +15 -0
  404. package/test/on-mount/on-mount.test.ts +6 -6
  405. package/test/party/1-declare-state.test.ts +2 -2
  406. package/test/party/10-on-mount.test.ts +2 -2
  407. package/test/party/12-props.test.ts +2 -2
  408. package/test/party/13-emit-to-parent.test.ts +2 -2
  409. package/test/party/14-slot.test.ts +2 -2
  410. package/test/party/15-slot-fallback.test.ts +2 -2
  411. package/test/party/16-context.test.ts +2 -2
  412. package/test/party/17-input-text.test.ts +2 -2
  413. package/test/party/18-input-checkbox.test.ts +2 -2
  414. package/test/party/19-input-radio.test.ts +2 -2
  415. package/test/party/2-update-state.test.ts +2 -2
  416. package/test/party/20-input-select.test.ts +2 -2
  417. package/test/party/3-computed-state.test.ts +2 -2
  418. package/test/party/4-minimal-template.test.ts +2 -2
  419. package/test/party/5-styling.test.ts +2 -2
  420. package/test/party/6-loop.test.ts +2 -2
  421. package/test/party/7-event-click.test.ts +2 -2
  422. package/test/party/8-dom-ref.test.ts +4 -4
  423. package/test/party/9-conditional.test.ts +2 -2
  424. package/test/party/components/AnswerButton.torp +2 -5
  425. package/test/party/components/AnswerButtonApp.torp +3 -5
  426. package/test/party/components/ColorSelect.torp +8 -10
  427. package/test/party/components/Counter.torp +2 -4
  428. package/test/party/components/CssStyle.torp +2 -4
  429. package/test/party/components/FunnyButton.torp +2 -2
  430. package/test/party/components/FunnyButtonApp.torp +2 -4
  431. package/test/party/components/InputFocused.torp +1 -1
  432. package/test/party/components/InputHello.torp +2 -4
  433. package/test/party/components/IsAvailable.torp +3 -5
  434. package/test/party/components/PickPill.torp +5 -7
  435. package/test/party/components/TrafficLight.torp +12 -14
  436. package/test/party/components/UserProfile.torp +4 -6
  437. package/test/party/components/UserProfileApp.torp +1 -1
  438. package/test/party/components/UserProfileContext.torp +6 -8
  439. package/test/party/components/UserProfileContextApp.torp +3 -5
  440. package/test/party/components/output/AnswerButton-client.ts +7 -14
  441. package/test/party/components/output/AnswerButton-server.ts +8 -10
  442. package/test/party/components/output/AnswerButtonApp-client.ts +10 -16
  443. package/test/party/components/output/AnswerButtonApp-server.ts +14 -13
  444. package/test/party/components/output/ColorSelect-client.ts +26 -30
  445. package/test/party/components/output/ColorSelect-server.ts +12 -13
  446. package/test/party/components/output/Colors-client.ts +19 -20
  447. package/test/party/components/output/Colors-server.ts +12 -13
  448. package/test/party/components/output/Counter-client.ts +11 -16
  449. package/test/party/components/output/Counter-server.ts +10 -11
  450. package/test/party/components/output/CssStyle-client.ts +7 -12
  451. package/test/party/components/output/CssStyle-server.ts +12 -11
  452. package/test/party/components/output/DoubleCount-client.ts +6 -11
  453. package/test/party/components/output/DoubleCount-server.ts +10 -11
  454. package/test/party/components/output/FunnyButton-client.ts +4 -10
  455. package/test/party/components/output/FunnyButton-server.ts +11 -12
  456. package/test/party/components/output/FunnyButtonApp-client.ts +12 -22
  457. package/test/party/components/output/FunnyButtonApp-server.ts +21 -20
  458. package/test/party/components/output/HelloWorld-client.ts +5 -10
  459. package/test/party/components/output/HelloWorld-server.ts +9 -11
  460. package/test/party/components/output/InputFocused-client.ts +6 -11
  461. package/test/party/components/output/InputFocused-server.ts +11 -13
  462. package/test/party/components/output/InputHello-client.ts +12 -17
  463. package/test/party/components/output/InputHello-server.ts +10 -11
  464. package/test/party/components/output/IsAvailable-client.ts +12 -17
  465. package/test/party/components/output/IsAvailable-server.ts +10 -11
  466. package/test/party/components/output/Name-client.ts +6 -11
  467. package/test/party/components/output/Name-server.ts +10 -11
  468. package/test/party/components/output/NameUpdate-client.ts +6 -11
  469. package/test/party/components/output/NameUpdate-server.ts +10 -11
  470. package/test/party/components/output/PageTitle-client.ts +6 -11
  471. package/test/party/components/output/PageTitle-server.ts +10 -11
  472. package/test/party/components/output/PickPill-client.ts +12 -17
  473. package/test/party/components/output/PickPill-server.ts +10 -11
  474. package/test/party/components/output/Time-client.ts +6 -11
  475. package/test/party/components/output/Time-server.ts +10 -11
  476. package/test/party/components/output/TrafficLight-client.ts +21 -29
  477. package/test/party/components/output/TrafficLight-server.ts +14 -15
  478. package/test/party/components/output/UserProfile-client.ts +12 -24
  479. package/test/party/components/output/UserProfile-server.ts +8 -10
  480. package/test/party/components/output/UserProfileApp-client.ts +6 -11
  481. package/test/party/components/output/UserProfileApp-server.ts +14 -14
  482. package/test/party/components/output/UserProfileContext-client.ts +12 -18
  483. package/test/party/components/output/UserProfileContext-server.ts +10 -10
  484. package/test/party/components/output/UserProfileContextApp-client.ts +12 -18
  485. package/test/party/components/output/UserProfileContextApp-server.ts +15 -14
  486. package/test/party/components/temp/{AnswerButton-client-ad8f8db36b7aaa68d8de5898a324bacfbe9f20df.ts → AnswerButton-client-df895c3e7a88fd7ede9f951fc9de2ed75c27a5cb.ts} +7 -14
  487. package/test/party/components/temp/AnswerButton-server-fa0e78b504a78d0e2dcd33a9a589f62e5b99c675.ts +15 -0
  488. package/test/party/components/temp/{AnswerButtonApp-client-5661f07868550612bcdeee268b82c473af6a2613.ts → AnswerButtonApp-client-4c05ef36b1c0e93370fb463643419928717fa701.ts} +10 -16
  489. package/test/party/components/temp/AnswerButtonApp-server-062042691dabfa1a20d4088030c0b5bee1cd0be2.ts +39 -0
  490. package/test/party/components/temp/{ColorSelect-client-70bf59d6399d63c0eed421b9d370a1e5c97a89ca.ts → ColorSelect-client-5db8d1b0924361fdb5efb867c14491402ec9668c.ts} +26 -30
  491. package/test/party/components/temp/ColorSelect-server-8722b440cb7266a18a71b35c166be6dd6566fcec.ts +33 -0
  492. package/test/party/components/temp/{Colors-client-806316cc5e01e8235c0b025cad34b1068addf5a5.ts → Colors-client-6d3ac693e85bdda50b8742282915997063a32769.ts} +19 -20
  493. package/test/party/components/temp/Colors-server-16572e26a55214c26683ce560b058b55d8c92685.ts +22 -0
  494. package/test/party/components/temp/{Counter-client-3b876c148f2b14da1766eff77eb6c494f7be6414.ts → Counter-client-0c604a107c5b84cdbf725f307dfe29d34f8a2cc8.ts} +11 -16
  495. package/test/party/components/temp/Counter-server-db18f030a6e02ab17708d6a17eb3e590965090e5.ts +25 -0
  496. package/test/party/components/temp/CssStyle-client-2a642d115ad52539f97c051c34687b8d6d12b324.ts +24 -0
  497. package/test/party/components/temp/CssStyle-server-0477c5497707dd9071105e5ec9045a3a7d1dd62d.ts +18 -0
  498. package/test/party/components/temp/{DoubleCount-client-6d4cf1e54368e3c6082e37c1e04f9ecde90624f2.ts → DoubleCount-client-8c85c3af12c471ea23bb702bbf5a3e240420f3ec.ts} +6 -11
  499. package/test/party/components/temp/DoubleCount-server-5b04bb31269f9c8de6c25be427f57ab6e3d4dc19.ts +24 -0
  500. package/test/party/components/temp/{FunnyButton-client-6d5662018a5a5529fd52ee82f7c88975b5c3355a.ts → FunnyButton-client-850dd3da0fa803c1bce5c53e88fcd2d48d279eb8.ts} +4 -10
  501. package/test/party/components/temp/{FunnyButton-server-e0adab2be2d283acb8a8b580479ade999dc918e9.ts → FunnyButton-server-3df0067ec21476e7525d1c3de7099431c976f73b.ts} +11 -12
  502. package/test/party/components/temp/{FunnyButtonApp-client-daa929c6d64f67e4a1a387b884317a4bb615b5d4.ts → FunnyButtonApp-client-00300846d11a3d0a5a620c2ade87b935b7f0ebf8.ts} +12 -22
  503. package/test/party/components/temp/FunnyButtonApp-server-4cd83d2c71615fe4c905920e5ea836df4ed66c5e.ts +37 -0
  504. package/test/party/components/temp/{HelloWorld-client-7344e400b4adb975fa8263d3081a06de0a793e57.ts → HelloWorld-client-890b311ad9a3919379acdc1d52807ea36cc9f489.ts} +5 -10
  505. package/test/party/components/temp/HelloWorld-server-e2c800d7f5cd3e772a9e5bbd7af58b00611b79d5.ts +15 -0
  506. package/test/party/components/temp/{InputFocused-client-20d755aea7dfaf1fd5e42dcade8fb7867f59ef28.ts → InputFocused-client-03527f9ceb52f66ac53887dbc884a0aa83bb7a23.ts} +6 -11
  507. package/test/party/components/temp/InputFocused-server-544a76ea64852474a3c7bf450b6fac36cbaf21c6.ts +23 -0
  508. package/test/party/components/temp/{InputHello-client-2a4cbd980534fde14b9d3e8a2f8e4f59a4f15d64.ts → InputHello-client-f65a477624975b68b7aaa3614fbf198d4476480f.ts} +12 -17
  509. package/test/party/components/temp/InputHello-server-102d293d6c0fff7feda50d64bbd607df7d09393a.ts +22 -0
  510. package/test/party/components/temp/{IsAvailable-client-3949f85aea0e935c3b59ab1389baee836eff1866.ts → IsAvailable-client-8767437fd92cf79713de5b00828e1502e38d79e3.ts} +12 -17
  511. package/test/party/components/temp/IsAvailable-server-2cf1e0d72df4bc194b5e00a1b415ba99f488525f.ts +21 -0
  512. package/test/party/components/temp/{Name-client-62f0dab96aff130e81882099d7c0a111ba99cebd.ts → Name-client-08903a8df8bdff5288170d3c89658192956587a9.ts} +6 -11
  513. package/test/party/components/temp/Name-server-7d95226078ef4cd13b0ac6c5365ccbe4b8b9c0a2.ts +21 -0
  514. package/test/party/components/temp/{NameUpdate-client-6ceb440637c99142bafcf8512eabf831c113b8c7.ts → NameUpdate-client-d65b2476c3721d2efddf9385a61433e2a2dd0d72.ts} +6 -11
  515. package/test/party/components/temp/NameUpdate-server-9c901f861eddfde14440c2591dfafb2b1fb1993d.ts +22 -0
  516. package/test/party/components/temp/{PageTitle-client-75fea3a37fb1213bc13f56160bb6779486b2e6e9.ts → PageTitle-client-c006df9a3e662488a1db089de53fd485c6b923e4.ts} +6 -11
  517. package/test/party/components/temp/PageTitle-server-f4676ec6feccaa03b89d52835c6635536eb885ef.ts +26 -0
  518. package/test/party/components/temp/{PickPill-client-0f13aa652cb1bd45f57d5a249f8364e80204441a.ts → PickPill-client-af8357daf3f6633c7f451d0bddd72fefe786d5c3.ts} +12 -17
  519. package/test/party/components/temp/PickPill-server-d8fb383bc25f7d26bb0153088a2ee19c765fc66b.ts +22 -0
  520. package/test/party/components/temp/{Time-client-2013f274e90b45be3138727f2298305e1951131f.ts → Time-client-94380d45de7275a5cec98e5f58c15b74b13e9c3e.ts} +6 -11
  521. package/test/party/components/temp/{Time-server-8e0278a4b16925903f3c4ceedbf1332cde4921fa.ts → Time-server-3f71a83b6fd357b57e85344281454ee793024e7b.ts} +10 -11
  522. package/test/party/components/temp/{TrafficLight-client-4a90675ca6157ed7701aefa0d9141575960a1d47.ts → TrafficLight-client-12b20962b4146ef08fe0c37597441533c7699408.ts} +21 -29
  523. package/test/party/components/temp/TrafficLight-server-625a774075633be88822f4d345e1421a77aba98a.ts +39 -0
  524. package/test/party/components/temp/{UserProfile-client-11c2a928de5a5ed4cab45186f08ca09f6161afb5.ts → UserProfile-client-e5330b2c96bd8b225cb6291bc8b1d9f35c93307e.ts} +12 -24
  525. package/test/party/components/temp/UserProfile-server-6e89fd7f8ade8e8d64630e5da8361d7a1fa2ff5a.ts +21 -0
  526. package/test/party/components/temp/{UserProfileApp-client-e0bfaa4ffed336c8be4b23dd81800501980c9938.ts → UserProfileApp-client-4c86e4f9a0d042f4f4811868f0146e872b17353c.ts} +6 -11
  527. package/test/party/components/temp/UserProfileApp-server-754d269451abf8fd04e519b8edde33d25c73ce28.ts +27 -0
  528. package/test/party/components/temp/{UserProfileContext-client-c97c077254210061b3c9ba561f681c0cf4f6167f.ts → UserProfileContext-client-424131db3cc89ae4babe127b9108ffc5696c9e1d.ts} +12 -18
  529. package/test/party/components/temp/UserProfileContext-server-e72e8ccee2703cce216f2368a1555d64acc2654c.ts +20 -0
  530. package/test/party/components/temp/{UserProfileContextApp-client-05ce216919de6ffde56d1c2c39299173d9b611b3.ts → UserProfileContextApp-client-5f94a7ccf3e4542ea40d8046ad75eeb21005c55f.ts} +12 -18
  531. package/test/party/components/temp/UserProfileContextApp-server-267ac147e0e59e53aeb6741a8cd0f3ef1216051f.ts +34 -0
  532. package/test/preact.test.ts +2560 -0
  533. package/test/props/components/Reactive.torp +2 -4
  534. package/test/props/components/output/Reactive-client.ts +12 -22
  535. package/test/props/components/output/Reactive-server.ts +20 -20
  536. package/test/props/components/temp/{Reactive-client-cf6e602b2f74fce8e9451b6c41c6f8ff8eab63a3.ts → Reactive-client-9bc3643675fc563f96efb00bc3c4b843ba4b7f2e.ts} +12 -22
  537. package/test/props/components/temp/Reactive-server-8a84d0fc1f375d91438d840ca9753e32d86366ac.ts +40 -0
  538. package/test/props/reactive.test.ts +2 -2
  539. package/test/replace/components/Replace.torp +3 -5
  540. package/test/replace/components/output/Replace-client.ts +10 -19
  541. package/test/replace/components/output/Replace-server.ts +11 -12
  542. package/test/replace/components/temp/{Replace-client-2a9ee3430708b469fa31bbc6989eed5b2f22984d.ts → Replace-client-6f21ff3eb303bd5488d211087dc35fcf998d4e2a.ts} +10 -19
  543. package/test/replace/components/temp/Replace-server-b536cf6d792ae73aaa7f5ea04cda6858a07479f9.ts +21 -0
  544. package/test/replace/replace.test.ts +2 -2
  545. package/test/script/script-with-comments.test.ts +14 -19
  546. package/test/script/script-with-strings.test.ts +14 -19
  547. package/test/script/script.test.ts +14 -19
  548. package/test/slots/basic-slot.test.ts +2 -2
  549. package/test/slots/components/Article.torp +3 -3
  550. package/test/slots/components/Basic.torp +1 -1
  551. package/test/slots/components/Header.torp +2 -2
  552. package/test/slots/components/Let.torp +3 -3
  553. package/test/slots/components/List.torp +1 -1
  554. package/test/slots/components/Named.torp +3 -3
  555. package/test/slots/components/Unused.torp +1 -1
  556. package/test/slots/components/output/Article-client.ts +4 -8
  557. package/test/slots/components/output/Article-server.ts +14 -15
  558. package/test/slots/components/output/Basic-client.ts +7 -14
  559. package/test/slots/components/output/Basic-server.ts +17 -18
  560. package/test/slots/components/output/Header-client.ts +4 -9
  561. package/test/slots/components/output/Header-server.ts +11 -12
  562. package/test/slots/components/output/Let-client.ts +7 -14
  563. package/test/slots/components/output/Let-server.ts +16 -17
  564. package/test/slots/components/output/List-client.ts +17 -16
  565. package/test/slots/components/output/List-server.ts +12 -13
  566. package/test/slots/components/output/Named-client.ts +9 -19
  567. package/test/slots/components/output/Named-server.ts +21 -23
  568. package/test/slots/components/output/Unused-client.ts +5 -10
  569. package/test/slots/components/output/Unused-server.ts +13 -13
  570. package/test/slots/components/temp/{Article-client-3f2da4b399f94ae8c329489e1ba0ba98196df9c5.ts → Article-client-0b674ee98ae7f85021bfb8b912f28e3c4b35e877.ts} +4 -8
  571. package/test/slots/components/temp/Article-server-3db1718b70b86b456514b54ae17a597d07cc0ca9.ts +27 -0
  572. package/test/slots/components/temp/{Basic-client-a2c4bf685d4b75d0395da427b7754c2a58374dd7.ts → Basic-client-196f7f0244dca0baeffb547eec55c089a108283d.ts} +7 -14
  573. package/test/slots/components/temp/Basic-server-a22e6ec236b84e09d4d59c7abc4f0b22bf60f22c.ts +32 -0
  574. package/test/slots/components/temp/{Header-client-d7418b71df5db36d58a73e909233863a6c03678b.ts → Header-client-e5c784d60469523803898ee4d8b85fb82a7b7c0b.ts} +4 -9
  575. package/test/slots/components/temp/Header-server-3182d735443d9cf6a0cc7891919cc2c08df2aa8f.ts +21 -0
  576. package/test/slots/components/temp/{Let-client-913f9dede92b68a3f4a13d1f56f99b3e08e01efe.ts → Let-client-645271fcd63cd500001c75740b22b1b387330657.ts} +7 -14
  577. package/test/slots/components/temp/Let-server-b6d6e2012155c7533a0eb4ee0aaf00157a7d4493.ts +35 -0
  578. package/test/slots/components/temp/{List-client-6bc2d267a8b2028a14b12b2c70feb7c6a47d6d64.ts → List-client-ee6047ac396dc0b6fce5e38af51c38093fae83a2.ts} +17 -16
  579. package/test/slots/components/temp/List-server-1ee246e864cdb31bb8f52cf4424b6ef0e9b41cf1.ts +25 -0
  580. package/test/slots/components/temp/{Named-client-f6e7a984759ce8f50bc52dcf56f6f06cab925a80.ts → Named-client-559988562c5de1ae6017d2ad6de063f4363064b6.ts} +9 -19
  581. package/test/slots/components/temp/Named-server-f2ce3d301e916ea38901a92185c25512b11d42d4.ts +41 -0
  582. package/test/slots/components/temp/{Unused-client-ea0a096aa7a1c958f3bf807f35340b96f8a025ee.ts → Unused-client-52d1828bd28ebf7046a2e948a369563c0ea83b98.ts} +5 -10
  583. package/test/slots/components/temp/Unused-server-f5248f5cd4616c65eaf27c67385f13ed671accad.ts +22 -0
  584. package/test/slots/let-slot.test.ts +4 -4
  585. package/test/slots/named-slot.test.ts +2 -2
  586. package/test/slots/unused-slot.test.ts +2 -2
  587. package/test/source-maps/components/Source.torp +19 -0
  588. package/test/source-maps/components/output/Source-client.ts +63 -0
  589. package/test/source-maps/components/output/Source-server.ts +26 -0
  590. package/test/source-maps/components/temp/Source-client-ae8c4811ff658c13ee8c9b9e0e53fff1b83b178b.ts +63 -0
  591. package/test/source-maps/components/temp/Source-server-70b20214c52b8820f450324943e8a1ffb0a72d5e.ts +26 -0
  592. package/test/source-maps/parse.test.ts +62 -0
  593. package/test/special-component/components/BigTitle.torp +1 -1
  594. package/test/special-component/components/Component.torp +2 -2
  595. package/test/special-component/components/SmallTitle.torp +1 -1
  596. package/test/special-component/components/output/BigTitle-client.ts +4 -8
  597. package/test/special-component/components/output/BigTitle-server.ts +10 -11
  598. package/test/special-component/components/output/Component-client.ts +7 -15
  599. package/test/special-component/components/output/Component-server.ts +19 -19
  600. package/test/special-component/components/output/SmallTitle-client.ts +4 -8
  601. package/test/special-component/components/output/SmallTitle-server.ts +10 -11
  602. package/test/special-component/components/temp/{BigTitle-client-c4bd66406d55ce83ab4491c4114d563055e1c275.ts → BigTitle-client-cb3055f809aaf17bd1fa82748d039ac3730a8d44.ts} +4 -8
  603. package/test/special-component/components/temp/BigTitle-server-fef9d1e1deacfde2be4469c2e63a801b2e518dff.ts +19 -0
  604. package/test/special-component/components/temp/{Component-client-c39c66cf5274445bb863fd759e0ef223613a9f3a.ts → Component-client-0eb9553b52acce2dfa564242295a4c57a38bd540.ts} +7 -15
  605. package/test/special-component/components/temp/Component-server-9d0fddeff790bfb2b6cfbcd2edf677837f5b8120.ts +43 -0
  606. package/test/special-component/components/temp/{SmallTitle-client-e4b3e51243ca4f1efca21ac0f957b81e8bc93167.ts → SmallTitle-client-5a65b233be29395e9650f57d9708a33de1279af3.ts} +4 -8
  607. package/test/special-component/components/temp/SmallTitle-server-11f8b6b3c613716d6a5371883a9b55434bb43ad5.ts +19 -0
  608. package/test/special-component/special-component.test.ts +2 -2
  609. package/test/special-element/components/Element.torp +2 -2
  610. package/test/special-element/components/output/Element-client.ts +5 -11
  611. package/test/special-element/components/output/Element-server.ts +9 -11
  612. package/test/special-element/components/temp/{Element-client-c5701ed44faa4ec8ae558505063684a84cada3f2.ts → Element-client-745e610fbd5c652d327c8ac349d49d5ee4c8d9ea.ts} +5 -11
  613. package/test/special-element/components/temp/Element-server-7aef6d0ed7369aa2418183519c8320e0409a5641.ts +15 -0
  614. package/test/special-element/special-element.test.ts +2 -2
  615. package/test/special-head/components/Head.torp +2 -6
  616. package/test/special-head/components/output/Head-client.ts +8 -27
  617. package/test/special-head/components/output/Head-server.ts +8 -13
  618. package/test/special-head/components/temp/Head-client-bbbb5e712247ee41ca65a7ffd457987de5e99b3e.ts +19 -0
  619. package/test/special-head/components/temp/Head-server-c3de2e6b56aabc095380370d8bf93ae3bc7c10d9.ts +12 -0
  620. package/test/special-head/special-head.test.ts +2 -2
  621. package/test/special-self/components/Self.torp +4 -6
  622. package/test/special-self/components/output/Self-client.ts +18 -23
  623. package/test/special-self/components/output/Self-server.ts +14 -14
  624. package/test/special-self/components/temp/{Self-client-43a0a90fac58867c88bf32221883e8da342a0295.ts → Self-client-dfe57df69e3677e94f7b5f3657c82602054ef19e.ts} +18 -23
  625. package/test/special-self/components/temp/Self-server-5d135dab2b6fd4ba7fe3f56768f0725607d36bd9.ts +27 -0
  626. package/test/special-self/special-self.test.ts +2 -2
  627. package/test/style/components/Style.torp +1 -1
  628. package/test/style/components/output/Style-client.ts +7 -13
  629. package/test/style/components/output/Style-server.ts +10 -12
  630. package/test/style/components/temp/{Style-client-bc13f8dbb5f754e4eebb2473fc63a139ebf1ba92.ts → Style-client-9491a5aff97f118df542f976d7f7a21e7cc88c62.ts} +7 -13
  631. package/test/style/components/temp/Style-server-8b8cbe1868cab30d9e34dda52921652768ada1db.ts +16 -0
  632. package/test/style/parse.test.ts +507 -193
  633. package/test/style/style.test.ts +2 -2
  634. package/test/svg/components/Shape.torp +1 -1
  635. package/test/svg/components/output/Shape-client.ts +23 -23
  636. package/test/svg/components/output/Shape-server.ts +12 -13
  637. package/test/svg/components/temp/{Shape-client-052ea7838de07222602834de58968a3f89e6ea56.ts → Shape-client-4cc148d8b70d3750d2982360aad76b74d194b60e.ts} +23 -23
  638. package/test/svg/components/temp/Shape-server-76aaef570e067031ff39635ffe37626364c2200a.ts +23 -0
  639. package/test/svg/svg.test.ts +4 -4
  640. package/test/switch/components/Switch.torp +16 -18
  641. package/test/switch/components/output/Switch-client.ts +22 -30
  642. package/test/switch/components/output/Switch-server.ts +12 -14
  643. package/test/switch/components/temp/{Switch-client-30113fadf131c72e7c24160fa62068b651716896.ts → Switch-client-5fc00f4d41300dc7587b113d8e53a102beca7558.ts} +22 -30
  644. package/test/switch/components/temp/Switch-server-440f7e852145b79656c0023ddc776e4d1d077d2a.ts +36 -0
  645. package/test/switch/switch-values.test.ts +4 -4
  646. package/test/template/basic-file.test.ts +61 -88
  647. package/test/template/empty-file.test.ts +7 -12
  648. package/test/template/errors.test.ts +64 -34
  649. package/test/text/components/Text.torp +5 -7
  650. package/test/text/components/output/Text-client.ts +9 -17
  651. package/test/text/components/output/Text-server.ts +8 -10
  652. package/test/text/components/temp/{Text-client-e335aae6d8aef389dfdbb5bee14e3dd3d41e86bd.ts → Text-client-6c3be8a1a31a13eff86ce8b5330829cd15b07fab.ts} +9 -17
  653. package/test/text/components/temp/Text-server-ac34d47e755aa39b2d89cb44f854450c3db1ddff.ts +22 -0
  654. package/test/text/text.test.ts +4 -4
  655. package/test/watch-array/ArrayState.ts +2 -2
  656. package/test/watch-array/array-all-functions-unkeyed.test.ts +16 -14
  657. package/test/watch-array/array-all-functions.test.ts +16 -14
  658. package/test/watch-array/array-empty.test.ts +8 -6
  659. package/test/watch-array/array-entries.test.ts +11 -9
  660. package/test/watch-array/array-indexes.test.ts +11 -9
  661. package/test/watch-array/array-pop.test.ts +10 -8
  662. package/test/watch-array/array-push.test.ts +10 -8
  663. package/test/watch-array/array-reassign.test.ts +11 -9
  664. package/test/watch-array/array-reverse.test.ts +10 -8
  665. package/test/watch-array/array-set-object.test.ts +10 -8
  666. package/test/watch-array/array-set-property.test.ts +10 -8
  667. package/test/watch-array/array-shift.test.ts +10 -8
  668. package/test/watch-array/array-sort.test.ts +11 -9
  669. package/test/watch-array/array-splice-add.test.ts +10 -8
  670. package/test/watch-array/array-splice-delete-all.test.ts +10 -8
  671. package/test/watch-array/array-splice-delete-and-add.test.ts +10 -8
  672. package/test/watch-array/array-splice-delete-end.test.ts +10 -8
  673. package/test/watch-array/array-splice-delete.test.ts +10 -8
  674. package/test/watch-array/array-swap.test.ts +10 -8
  675. package/test/watch-array/array-unshift.test.ts +10 -8
  676. package/test/watch-array/array-update-assignment.test.ts +10 -8
  677. package/test/watch-array/components/output/Array-client.ts +19 -21
  678. package/test/watch-array/components/output/Array-server.ts +11 -13
  679. package/test/watch-array/components/output/ArrayEntries-client.ts +21 -23
  680. package/test/watch-array/components/output/ArrayEntries-server.ts +11 -13
  681. package/test/watch-array/components/output/ArrayIndexes-client.ts +19 -21
  682. package/test/watch-array/components/output/ArrayIndexes-server.ts +11 -13
  683. package/test/watch-array/components/output/ArrayUnkeyed-client.ts +19 -20
  684. package/test/watch-array/components/output/ArrayUnkeyed-server.ts +11 -13
  685. package/test/watch-array/components/temp/{Array-client-d048f5c224a3f2e2729878dbb069ce15ca913e12.ts → Array-client-552f81452d33fe6dc715c9f6bb7986f06475d761.ts} +19 -21
  686. package/test/watch-array/components/temp/Array-server-16921ef3289ecba5881fcd59e3353fbfad60d4d3.ts +20 -0
  687. package/test/watch-array/components/temp/{ArrayEntries-client-741607b276718f5deb520e3b657dbf6abbb8081c.ts → ArrayEntries-client-736755fba2492e74812ff9c905202810de54e15a.ts} +21 -23
  688. package/test/watch-array/components/temp/ArrayEntries-server-ac150fc9fd18c1d9dab9b329f7703e190f5c2725.ts +20 -0
  689. package/test/watch-array/components/temp/{ArrayIndexes-client-8ab14b254ef67dafad5228c9ec1906eb3b3babef.ts → ArrayIndexes-client-a496328fa92ffca676ab8893013a0cfec1734ad1.ts} +19 -21
  690. package/test/watch-array/components/temp/ArrayIndexes-server-e8fc511c0d27796dc1733f8cc63377f7a4511f76.ts +20 -0
  691. package/test/watch-array/components/temp/{ArrayUnkeyed-client-9684aba82757748815b94c04bf3f8d1f98332535.ts → ArrayUnkeyed-client-5a2c5cb1fecba52653f7f35cfd07627682930c15.ts} +19 -20
  692. package/test/watch-array/components/temp/ArrayUnkeyed-server-916a5cdb7c36d95946cafdc69dca782291af24e4.ts +20 -0
  693. package/test/watch-object/components/Watched.torp +5 -7
  694. package/test/watch-object/components/output/Watched-client.ts +7 -13
  695. package/test/watch-object/components/output/Watched-server.ts +8 -10
  696. package/test/watch-object/components/temp/{Watched-client-d26e846bbeb8271ec5dc2a1ceb75b362af44d3bd.ts → Watched-client-1f0409aa6e2c425d0319a23caec7d10ad313d579.ts} +7 -13
  697. package/test/watch-object/components/temp/Watched-server-156afd257b562162d86417f2bbf5afe1bf57de06.ts +16 -0
  698. package/test/watch-object/watch-object.test.ts +11 -9
  699. package/{tsup.config.ts → tsdown.config.ts} +2 -4
  700. package/dist/Component-CysAnHpO.d.cts +0 -8
  701. package/dist/Component-CysAnHpO.d.ts +0 -8
  702. package/dist/ServerSlotRender-t1sOutne.d.cts +0 -15
  703. package/dist/ServerSlotRender-t1sOutne.d.ts +0 -15
  704. package/dist/chunk-EGRHWZRV.js +0 -1
  705. package/dist/chunk-EGRHWZRV.js.map +0 -1
  706. package/dist/chunk-T6JGCJ5T.js +0 -45
  707. package/dist/chunk-T6JGCJ5T.js.map +0 -1
  708. package/dist/compile.cjs +0 -4074
  709. package/dist/compile.cjs.map +0 -1
  710. package/dist/compile.d.cts +0 -156
  711. package/dist/index.cjs +0 -895
  712. package/dist/index.cjs.map +0 -1
  713. package/dist/index.d.cts +0 -208
  714. package/dist/metafile-cjs.json +0 -1
  715. package/dist/metafile-esm.json +0 -1
  716. package/dist/ssr.cjs +0 -106
  717. package/dist/ssr.cjs.map +0 -1
  718. package/dist/ssr.d.cts +0 -14
  719. package/src/compile/build/client/buildHeadNode.ts +0 -17
  720. package/src/compile/build/utils/isReactiveAttribute.ts +0 -16
  721. package/src/compile/types/nodes/isControlNode.ts +0 -6
  722. package/src/compile/types/nodes/isElementNode.ts +0 -6
  723. package/src/compile/types/nodes/isParentNode.ts +0 -6
  724. package/src/compile/types/nodes/isSpecialNode.ts +0 -6
  725. package/src/compile/types/nodes/isTextNode.ts +0 -6
  726. package/src/debug/printHtml.ts +0 -25
  727. package/src/render/getClasses.ts +0 -24
  728. package/src/render/getStyles.ts +0 -7
  729. package/src/render/isComment.ts +0 -3
  730. package/src/render/isText.ts +0 -3
  731. package/src/types/ProxyPropData.ts +0 -11
  732. package/src/watch/removeEffect.ts +0 -34
  733. package/test/attributes/components/temp/Attributes-server-80f9f58fd6cb30df11867386d4f0b15b44401ebe.ts +0 -18
  734. package/test/bench/components/temp/Bench-client-fca94b485c6263778751927240ab3ca4048d7a10.ts +0 -208
  735. package/test/bind/components/temp/BindComponent-client-6f650efb818a185ef33e1b071cfd77415a803dd3.ts +0 -93
  736. package/test/bind/components/temp/BindComponent-server-2e6caf0cbbb2831eb4bfbd7dcd6cf4d5c422d047.ts +0 -52
  737. package/test/bind/components/temp/BindText-server-807a1ddcb68410b30429cb088d2e204ed6f585b2.ts +0 -21
  738. package/test/child-component/components/temp/ParentChild-server-5e4a7fa5f4cd1c7dbe6866819025d2c03bfc62cb.ts +0 -39
  739. package/test/class/components/temp/Class-server-c24c01d0d3a98169172aba453c183c4152705be9.ts +0 -40
  740. package/test/component/components/temp/Component-server-57f59c74599572da6322a67cb97848cfbfcf6968.ts +0 -24
  741. package/test/component/components/temp/Header-server-6969d20782edd8f99d4b5c5b7b5563ce26e6dc2d.ts +0 -18
  742. package/test/console/components/temp/Console-server-cfb2208b130d5f15403df19ae8341aaa1c9ad33a.ts +0 -17
  743. package/test/const/components/temp/Const-server-1cf6ed84f72d3b15b318b80937b8de1f2c0f188c.ts +0 -20
  744. package/test/effects/components/temp/For-server-efe60939d185315f4c9b567b6867c6d5af14d9aa.ts +0 -22
  745. package/test/effects/components/temp/If-server-2424b7b812d350d7eb8ff9afb1146807217320cd.ts +0 -24
  746. package/test/effects/components/temp/NestedIf-server-ab260586490cb5afed31377d2226bb5a1fc30e2d.ts +0 -28
  747. package/test/events/components/temp/Increment-server-b084f43082e2ec31dbe5f9edc1cb6e37e4c8df9d.ts +0 -24
  748. package/test/for/components/temp/For-server-3b6ead39728c79206203c519a215390d07d80f7e.ts +0 -22
  749. package/test/for/components/temp/ForEscape-server-ed906c8cd593a0b467073ada415734de31dc38d9.ts +0 -24
  750. package/test/for/components/temp/ForIn-server-c8f13304a2ba235e091685256909fbfa50bdd5fd.ts +0 -22
  751. package/test/for/components/temp/ForOf-server-8c2c33ca6595bf0a5e952ca9971e595e18446623.ts +0 -22
  752. package/test/function/components/temp/Function-server-2b19d0cd881c31dc67132107c6e322a18701c318.ts +0 -27
  753. package/test/html/components/temp/Html-server-d159b0ef04b1f65ae4f9e05a7b44b21e7aa14cf9.ts +0 -17
  754. package/test/if/components/temp/IfAfterIf-server-a5005147e7902d1a5a048c9fe07feb9804eb6560.ts +0 -25
  755. package/test/if/components/temp/IfElse-server-80d93e5fc4ceba7a645f7081fa11b177dbe730d0.ts +0 -24
  756. package/test/if/components/temp/IfElseIf-server-ddc7348705d51b02538301e0aa704130748992cf.ts +0 -27
  757. package/test/if/components/temp/IfFalse-server-e8385013cfdde584b43cc0d71311cbb417859116.ts +0 -21
  758. package/test/if/components/temp/IfNested-server-285a5d8e0e0fcc8ccf421df152fdc00811782835.ts +0 -31
  759. package/test/mount/components/temp/Mount-server-62f94f276c2d6c9048765a77b575cb21146917f1.ts +0 -24
  760. package/test/on-mount/components/temp/OnMount-server-c531f718eb68754ea6c3001d5db9c07c511e434c.ts +0 -17
  761. package/test/party/components/temp/AnswerButton-server-928b5d447afa865fa09e0142c79bb1f2c1b86875.ts +0 -17
  762. package/test/party/components/temp/AnswerButtonApp-server-e4ea88e0f4d65508950594437e5e34424bd28897.ts +0 -38
  763. package/test/party/components/temp/ColorSelect-server-90f83722bd85155ebb2b8ccdaf053cd28d3152be.ts +0 -34
  764. package/test/party/components/temp/Colors-server-e13d49ba57f7b0dc6fb10a333ec872f5207e1ff0.ts +0 -23
  765. package/test/party/components/temp/Counter-server-7adf9376b38d97f1fd4b9c14108e6814e81f14ea.ts +0 -26
  766. package/test/party/components/temp/CssStyle-server-90a950501a20bfa5feac84ca6d97898c25bce2ed.ts +0 -17
  767. package/test/party/components/temp/DoubleCount-server-62c94483ebe9661e5ecc4f489787e32448ddcafa.ts +0 -25
  768. package/test/party/components/temp/FunnyButtonApp-server-80d85ede7da558154a5aa17cd602d6724bf1c9cb.ts +0 -36
  769. package/test/party/components/temp/HelloWorld-server-e0ed80e7531f303952a4af30d646263ff2e4ead6.ts +0 -17
  770. package/test/party/components/temp/InputFocused-server-ee70758a515227c04788be0e298a79c277994ccd.ts +0 -25
  771. package/test/party/components/temp/InputHello-server-1b9dd5442ded022abe92a9075ca5a4bb90486cbe.ts +0 -23
  772. package/test/party/components/temp/IsAvailable-server-123daa1ae56b77defe6666faddb44ba4252dd0fb.ts +0 -22
  773. package/test/party/components/temp/Name-server-a402418f1ca2d8a0e6403596ec03ec47b5ff40ec.ts +0 -22
  774. package/test/party/components/temp/NameUpdate-server-b7dcc875e894a5606544fcd78bda575ea07632ca.ts +0 -23
  775. package/test/party/components/temp/PageTitle-server-12dcb4e437aaef227c704a2ee8bbdee55ca323dc.ts +0 -27
  776. package/test/party/components/temp/PickPill-server-f10dae4708e36775a5e1a5ad10c6c0c309335009.ts +0 -23
  777. package/test/party/components/temp/TrafficLight-server-04bb3b2f11322ccc97a9a8a8fbb26c3c99843042.ts +0 -40
  778. package/test/party/components/temp/UserProfile-server-a0576b8d9dd15b3fab6c11758984c686ddfe2f66.ts +0 -23
  779. package/test/party/components/temp/UserProfileApp-server-86c204098fd0ffbeded50372354488768b255156.ts +0 -27
  780. package/test/party/components/temp/UserProfileContext-server-2d32476b00448bdec6c1c45aac5087a5152c2471.ts +0 -20
  781. package/test/party/components/temp/UserProfileContextApp-server-c970abaa8326db9a5efc3a5c64741743ae0dd1ca.ts +0 -33
  782. package/test/props/components/temp/Reactive-server-206bcc8984bad12c5712661b77d000216cdfe66d.ts +0 -40
  783. package/test/replace/components/temp/Replace-server-9519943d193b681e1d7894a0d7952affdfb0660c.ts +0 -22
  784. package/test/slots/components/temp/Article-server-b84141b05064f5ea1e4b535faafe459df0d875fb.ts +0 -28
  785. package/test/slots/components/temp/Basic-server-6b37594c9bf74e0c86a05b20213f69651e2cc937.ts +0 -33
  786. package/test/slots/components/temp/Header-server-d8e8ccb129d84478f0c4f8dc8ad1d2091188cc7b.ts +0 -22
  787. package/test/slots/components/temp/Let-server-8cad3b1199bec801bc3a1f2f3dbc20f2ef1e9741.ts +0 -36
  788. package/test/slots/components/temp/List-server-f4f63df4d19e15311da347284935a1bb530a8df4.ts +0 -26
  789. package/test/slots/components/temp/Named-server-2aac48bb8c7300d1a8858917fe81edc17c6372fa.ts +0 -43
  790. package/test/slots/components/temp/Unused-server-6e832928d7db6c43c556e7bda8af34ac37c0d4c1.ts +0 -22
  791. package/test/special-component/components/temp/BigTitle-server-d8919a4c975e022c936584bd668917cb89aa8e20.ts +0 -20
  792. package/test/special-component/components/temp/Component-server-14cd9beb57d6e833f75ab8c6624eb9841444ef63.ts +0 -43
  793. package/test/special-component/components/temp/SmallTitle-server-0a9b5098e4dda96f8c1da30294d71b39997dd118.ts +0 -20
  794. package/test/special-element/components/temp/Element-server-166d672256ef4635168de0090e490e48b569c7d6.ts +0 -17
  795. package/test/special-head/components/temp/Head-server-c0956653b544ff632e36da15d5f7623fa285953a.ts +0 -17
  796. package/test/special-self/components/temp/Self-server-b857c30c279a16dd81ad29567fb8abb9b2a0c239.ts +0 -27
  797. package/test/style/components/temp/Style-server-85720cb43e20ab000f98bc632c29454a51ae92d9.ts +0 -18
  798. package/test/svg/components/temp/Shape-server-9951ff1dcc7aa0827f28d3f8d970813767115ae3.ts +0 -24
  799. package/test/switch/components/temp/Switch-server-c1b5e1c657438ee3d8afdbf2166c5295cafc5604.ts +0 -38
  800. package/test/text/components/temp/Text-server-e37d33aa182f36461927d8ce36040bfd05e2f227.ts +0 -24
  801. package/test/watch-array/components/temp/Array-server-c907209008ac6177f614b62931a2bb1f1c3a04e1.ts +0 -22
  802. package/test/watch-array/components/temp/ArrayEntries-server-57c1ab0045fa4a02de95f69a65de6f54efe9850c.ts +0 -22
  803. package/test/watch-array/components/temp/ArrayIndexes-server-f093878b94a37617e2e697a786caa680f75630a7.ts +0 -22
  804. package/test/watch-array/components/temp/ArrayUnkeyed-server-c893fa024be07e5e7fce608c3ae456bdf2279dbe.ts +0 -22
  805. package/test/watch-object/components/temp/Watched-server-312fca1e769d7594fc5bb6295ccf55b544dd2f4d.ts +0 -18
  806. /package/src/compile/{build/utils → utils}/isFullyReactive.ts +0 -0
  807. /package/src/compile/{build/utils → utils}/isReactive.ts +0 -0
@@ -0,0 +1,31 @@
1
+ export default function buildClasses(value: unknown, styleHash?: string): string {
2
+ if (typeof value === "string") {
3
+ if (styleHash !== undefined) {
4
+ value += " " + styleHash;
5
+ }
6
+ return value;
7
+ } else {
8
+ let classes: string[] = [];
9
+ gatherNames("", value, classes);
10
+ if (styleHash !== undefined) {
11
+ classes.push(styleHash);
12
+ }
13
+ return classes.join(" ");
14
+ }
15
+ }
16
+
17
+ function gatherNames(name: unknown, value: unknown, classes: string[]) {
18
+ if (value) {
19
+ if (Array.isArray(value)) {
20
+ for (let v of value) {
21
+ gatherNames(v, v, classes);
22
+ }
23
+ } else if (typeof value === "object") {
24
+ for (let [n, v] of Object.entries(value)) {
25
+ gatherNames(n, v, classes);
26
+ }
27
+ } else {
28
+ classes.push(name as string);
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,19 @@
1
+ export default function buildStyles(value: unknown): string {
2
+ if (typeof value === "string") {
3
+ return value;
4
+ } else {
5
+ let styles: string[] = [];
6
+ if (value) {
7
+ if (Array.isArray(value)) {
8
+ for (let v of value) {
9
+ styles.push(v);
10
+ }
11
+ } else if (typeof value === "object") {
12
+ for (let [n, v] of Object.entries(value)) {
13
+ styles.push(`${n}: ${v}`);
14
+ }
15
+ }
16
+ }
17
+ return styles.join("; ");
18
+ }
19
+ }
@@ -1,4 +1,4 @@
1
- import type { Range } from "../types/Range";
1
+ import type Range from "../types/Range";
2
2
  import clearRange from "./clearRange";
3
3
 
4
4
  export default function clearLayoutSlot(range: Range): void {
@@ -1,70 +1,63 @@
1
- import { type Range } from "../types/Range";
2
- import removeEffect from "../watch/removeEffect";
3
- import context from "./context";
1
+ import type Range from "../types/Range";
4
2
 
5
3
  export default function clearRange(range: Range): void {
6
- //console.log("clearing range", range.startNode, "to", range.endNode);
4
+ //console.log("clearing range", range.name, "from", range.startNode, "to", range.endNode);
5
+
6
+ // Clear child ranges and collect animations that take place within this
7
+ // range and its children
8
+ let animations: Animation[] | undefined =
9
+ range.animations !== null ? Array.from(range.animations) : undefined;
10
+ let childRange = range.nextRange;
11
+ while (childRange !== null && childRange.depth > range.depth) {
12
+ if (childRange.animations !== null) {
13
+ animations ??= [];
14
+ animations.push(...childRange.animations);
15
+ }
16
+ releaseRange(childRange);
17
+ // HACK: see runControlBranch
18
+ childRange.depth = -2;
19
+ childRange = childRange.nextRange;
20
+ }
21
+ range.nextRange = childRange;
7
22
 
8
- // Clear effects and collect animations that take place within this range and its children
9
- let animations: Animation[] = [];
10
- clearEffects(range, animations);
23
+ if (range.previousRange !== null) {
24
+ range.previousRange.nextRange = range.nextRange;
25
+ }
26
+ if (range.nextRange !== null) {
27
+ range.nextRange.previousRange = range.previousRange;
28
+ }
11
29
 
12
30
  // Wait for animations, if any, then clear the range's nodes
13
- if (animations.length) {
31
+ if (animations !== undefined) {
32
+ // eslint-disable-next-line no-floating-promises
14
33
  Promise.all(animations.map((a) => a.finished)).then(() => clearNodes(range));
15
34
  } else {
16
35
  clearNodes(range);
17
36
  }
18
37
  }
19
38
 
20
- function clearEffects(range: Range, animations: Animation[]) {
21
- // Delete the effects for this range
22
- if (range.effects) {
23
- // Set the active range to collect exit animations
24
- // We could instead have seperate entry and exit animation collections?
25
- const oldRange = context.activeRange;
26
- context.activeRange = range;
27
-
28
- for (let effect of range.effects) {
29
- removeEffect(effect);
30
- }
31
-
32
- context.activeRange = oldRange;
33
- }
34
-
35
- // Collect any running animations, including ones from the effect cleanups
36
- if (range.animations) {
37
- for (let animation of range.animations) {
38
- animations.push(animation);
39
- }
40
- }
41
-
42
- // Recurse through the children
43
- if (range.children) {
44
- for (let child of range.children) {
45
- clearEffects(child, animations);
46
- }
47
- range.children.length = 0;
48
- }
49
- }
50
-
51
39
  function clearNodes(range: Range) {
52
40
  // Clear the nodes for this range
53
- if (range.startNode) {
54
- let currentNode = range.endNode || range.startNode;
41
+ if (range.startNode !== null && range.endNode !== null) {
42
+ let currentNode = range.endNode;
55
43
  // DEBUG:
56
- if (range.startNode.parentNode !== currentNode.parentNode) {
57
- throw new Error("range nodes have different parents");
58
- }
44
+ //if (range.startNode.parentNode !== currentNode.parentNode) {
45
+ // throw new Error("range nodes have different parents");
46
+ //}
59
47
  while (currentNode !== range.startNode) {
60
- let nextNode = currentNode.previousSibling;
48
+ let previousNode = currentNode.previousSibling;
61
49
  currentNode.remove();
62
- currentNode = nextNode!;
50
+ currentNode = previousNode!;
63
51
  }
64
52
  currentNode.remove();
65
-
66
- // Release the nodes
67
- range.startNode = null;
68
- range.endNode = null;
69
53
  }
54
+ releaseRange(range);
55
+ }
56
+
57
+ function releaseRange(range: Range) {
58
+ range.startNode = null;
59
+ range.endNode = null;
60
+ range.previousRange = null;
61
+ range.nextRange = null;
62
+ range.animations = null;
70
63
  }
@@ -1,57 +1,28 @@
1
- import { type Animation } from "../types/Animation";
2
- import { type Cleanup } from "../types/Cleanup";
3
- import { type Effect } from "../types/Effect";
4
- import { type Range } from "../types/Range";
5
-
6
- /**
7
- * The global context for setting up effects and updating subscriptions.
8
- */
9
- interface Context {
10
- /** The effect that is currently being run. */
11
- activeEffect: Effect | null;
12
-
13
- /** The range that is currently being created. */
14
- activeRange: Range | null;
15
-
16
- /**
17
- * Functions that were run via $mount, which should be collected and flushed
18
- * when the component has been mounted in the DOM
19
- */
20
- mountEffects: (() => Cleanup | void)[];
21
-
22
- /**
23
- * Events which should be added when their element has been mounted in the
24
- * DOM
25
- */
26
- stashedEvents: {
27
- range: Range | null;
28
- el: Element;
29
- type: string;
30
- listener: (this: Element, ev: any) => any;
31
- }[];
32
-
33
- /**
34
- * Animations which should be added when their element has been mounted in
35
- * the DOM
36
- */
37
- stashedAnimations: {
38
- range: Range | null;
39
- el: HTMLElement;
40
- in?: Animation;
41
- out?: Animation;
42
- }[];
43
-
44
- /** The node that is actively being hydrated. */
45
- hydrationNode: ChildNode | null;
46
- //hn: ChildNode | null;
47
- }
1
+ import type Context from "../types/Context";
48
2
 
49
3
  const context: Context = {
50
- activeEffect: null,
4
+ activeTarget: null,
5
+ previousEffect: null,
6
+ extent: 0,
7
+ batch: 0,
8
+ batchOperation: 0,
9
+ registerComputed: null,
10
+
11
+ firstEffectToRun: null,
12
+ firstSignalToUpdate: null,
13
+
14
+ // These will definitely be set, in mount or render
15
+ // @ts-ignore
51
16
  activeRange: null,
17
+ // @ts-ignore
18
+ previousRange: null,
19
+ // @ts-ignore
20
+ rootRange: null,
21
+
52
22
  mountEffects: [],
53
23
  stashedEvents: [],
54
24
  stashedAnimations: [],
25
+
55
26
  hydrationNode: null,
56
27
  //hn: null,
57
28
  //get hydrationNode() {
@@ -1,6 +1,6 @@
1
- import type { Component } from "../types/Component";
2
- import type { Range } from "../types/Range";
3
- import type { SlotRender } from "../types/SlotRender";
1
+ import type Component from "../types/Component";
2
+ import type Range from "../types/Range";
3
+ import type SlotRender from "../types/SlotRender";
4
4
  import newRange from "./newRange";
5
5
  import popRange from "./popRange";
6
6
  import pushRange from "./pushRange";
@@ -8,7 +8,7 @@ export default function getFragment(
8
8
  // Create the fragment in the array if it hasn't yet been used
9
9
  if (array[index] === undefined) {
10
10
  // TODO: Should pass a string for the ns, when we support other element types
11
- if (ns) {
11
+ if (ns === true) {
12
12
  const template = document.createElementNS("http://www.w3.org/2000/svg", "template");
13
13
  template.innerHTML = html;
14
14
  const fragment = new DocumentFragment();
@@ -1,7 +1,9 @@
1
- import { type Component } from "../types/Component";
2
- import { type SlotRender } from "../types/SlotRender";
1
+ import type Component from "../types/Component";
2
+ import type SlotRender from "../types/SlotRender";
3
3
  import $run from "./$run";
4
4
  import context from "./context";
5
+ import newRange from "./newRange";
6
+ import pushRange from "./pushRange";
5
7
 
6
8
  /**
7
9
  * Hydrates a component into an existing DOM tree
@@ -19,6 +21,11 @@ export default function hydrate(
19
21
  // the hydration node to the first child node
20
22
  context.hydrationNode = parent.firstChild;
21
23
 
24
+ // Create and push the root range
25
+ context.rootRange = newRange();
26
+ context.previousRange = context.rootRange;
27
+ pushRange(context.rootRange);
28
+
22
29
  // Call the component's render function
23
30
  component(parent, null, props, undefined, slots);
24
31
 
@@ -1,5 +1,5 @@
1
- import { type Component } from "../types/Component";
2
- import { type SlotRender } from "../types/SlotRender";
1
+ import type Component from "../types/Component";
2
+ import type SlotRender from "../types/SlotRender";
3
3
  import context from "./context";
4
4
 
5
5
  /**
@@ -0,0 +1,3 @@
1
+ export default function isCommentNode(node: Node): node is Comment {
2
+ return node.nodeType === 8;
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function isFragmentNode(node: Node): node is DocumentFragment {
2
+ return node.nodeType === 11;
3
+ }
@@ -0,0 +1,3 @@
1
+ export default function isTextNode(node: Node): node is Text {
2
+ return node.nodeType === 3;
3
+ }
@@ -1,5 +1,8 @@
1
- import { type Component } from "../types/Component";
2
- import { type SlotRender } from "../types/SlotRender";
1
+ import type Component from "../types/Component";
2
+ import type SlotRender from "../types/SlotRender";
3
+ import context from "./context";
4
+ import newRange from "./newRange";
5
+ import pushRange from "./pushRange";
3
6
 
4
7
  /**
5
8
  * Mounts a component into a DOM node
@@ -16,15 +19,20 @@ export default function mount(
16
19
  ): void {
17
20
  // The parent node must have no child elements, so that we can hydrate
18
21
  // without worrying about where to start
19
- if (parent.childElementCount) {
22
+ if (parent.childElementCount > 0) {
20
23
  throw new Error("The parent node must have no child elements");
21
24
  }
22
25
 
23
26
  // Remove all text, commments, etc
24
- while (parent.firstChild) {
27
+ while (parent.firstChild !== null) {
25
28
  parent.firstChild.remove();
26
29
  }
27
30
 
31
+ // Create and push the root range
32
+ context.rootRange = newRange();
33
+ context.previousRange = context.rootRange;
34
+ pushRange(context.rootRange);
35
+
28
36
  // Call the component's render function
29
37
  component(parent, null, props, undefined, slots);
30
38
  }
@@ -1,9 +1,11 @@
1
- import { type Range } from "../types/Range";
1
+ import type Range from "../types/Range";
2
2
 
3
3
  export default function moveRange(parent: Node, range: Range, before: ChildNode | null): void {
4
- const endNode = range.endNode || range.startNode;
4
+ parent = before?.parentNode ?? parent;
5
+ const endNode = range.endNode ?? range.startNode;
5
6
  let currentNode = range.startNode;
6
- while (currentNode) {
7
+
8
+ while (currentNode !== null) {
7
9
  const nextNode = currentNode.nextSibling;
8
10
  parent.insertBefore(currentNode, before);
9
11
  if (currentNode === endNode) break;
@@ -1,12 +1,12 @@
1
- import { type ListItem } from "../types/ListItem";
1
+ import type ListItem from "../types/ListItem";
2
2
 
3
3
  export default function newListItem(data: Record<PropertyKey, any>, key?: any): ListItem {
4
4
  return {
5
5
  startNode: null,
6
6
  endNode: null,
7
- children: null,
8
- index: 0,
9
- effects: null,
7
+ previousRange: null,
8
+ nextRange: null,
9
+ depth: -1,
10
10
  animations: null,
11
11
  data,
12
12
  key,
@@ -1,12 +1,13 @@
1
- import { type Range } from "../types/Range";
1
+ import type Range from "../types/Range";
2
2
 
3
- export default function newRange(): Range {
3
+ export default function newRange(name?: string): Range {
4
4
  return {
5
5
  startNode: null,
6
6
  endNode: null,
7
- children: null,
8
- index: 0,
9
- effects: null,
7
+ previousRange: null,
8
+ nextRange: null,
9
+ depth: -1,
10
10
  animations: null,
11
+ name,
11
12
  };
12
13
  }
@@ -1,6 +1,6 @@
1
1
  import context from "./context";
2
2
  import { HYDRATION_END, HYDRATION_START } from "./hydrationMarkers";
3
- import isComment from "./isComment";
3
+ import isCommentNode from "./isCommentNode";
4
4
  import nodeNext from "./nodeNext";
5
5
 
6
6
  /**
@@ -18,8 +18,8 @@ import nodeNext from "./nodeNext";
18
18
  * @returns The anchor node.
19
19
  */
20
20
  export default function nodeAnchor(node: ChildNode): ChildNode {
21
- if (context.hydrationNode) {
22
- if (isComment(node) && node.data === HYDRATION_START) {
21
+ if (context.hydrationNode !== null) {
22
+ if (isCommentNode(node) && node.data === HYDRATION_START) {
23
23
  // Skip and remove the start node, setting the hydration node in
24
24
  // nodeNext
25
25
  let currentNode = nodeNext(node);
@@ -27,8 +27,8 @@ export default function nodeAnchor(node: ChildNode): ChildNode {
27
27
 
28
28
  // Go through siblings until we get to the end
29
29
  let level = 1;
30
- while (currentNode) {
31
- if (isComment(currentNode)) {
30
+ while (currentNode !== null) {
31
+ if (isCommentNode(currentNode)) {
32
32
  if (currentNode.data === HYDRATION_START) {
33
33
  level += 1;
34
34
  } else if (currentNode.data === HYDRATION_END) {
@@ -56,7 +56,7 @@ export default function nodeAnchor(node: ChildNode): ChildNode {
56
56
  currentNode = currentNode.nextSibling!;
57
57
  }
58
58
 
59
- if (!currentNode) {
59
+ if (currentNode === null) {
60
60
  throw new Error("End hydration comment not found");
61
61
  }
62
62
  }
@@ -1,6 +1,6 @@
1
1
  import context from "./context";
2
2
  import { HYDRATION_BREAK } from "./hydrationMarkers";
3
- import isComment from "./isComment";
3
+ import isCommentNode from "./isCommentNode";
4
4
 
5
5
  // TODO: It would be good to remove this, if possible
6
6
 
@@ -13,8 +13,8 @@ import isComment from "./isComment";
13
13
  * @returns The next node.
14
14
  */
15
15
  export default function nodeCheckHydrationBreak(node: ChildNode | null): ChildNode | null {
16
- if (context.hydrationNode) {
17
- if (node && isComment(node) && node.data === HYDRATION_BREAK) {
16
+ if (context.hydrationNode !== null) {
17
+ if (node !== null && isCommentNode(node) && node.data === HYDRATION_BREAK) {
18
18
  let comment = node;
19
19
  node = node.nextSibling;
20
20
  comment.remove();
@@ -9,10 +9,10 @@ import context from "./context";
9
9
  */
10
10
  export default function nodeChild(parent: Node): ChildNode {
11
11
  let childNode = parent.firstChild;
12
- if (context.hydrationNode) {
12
+ if (context.hydrationNode !== null) {
13
13
  // The child may be null when hydrating the sole text child of an
14
14
  // element with no text
15
- if (!childNode) {
15
+ if (childNode === null) {
16
16
  childNode = parent.appendChild(parent.ownerDocument!.createTextNode(""));
17
17
  }
18
18
  context.hydrationNode = childNode;
@@ -1,5 +1,5 @@
1
1
  import context from "./context";
2
- import isText from "./isText";
2
+ import isTextNode from "./isTextNode";
3
3
  import nodeCheckHydrationBreak from "./nodeCheckHydrationBreak";
4
4
 
5
5
  /**
@@ -13,7 +13,7 @@ import nodeCheckHydrationBreak from "./nodeCheckHydrationBreak";
13
13
  export default function nodeNext(node: ChildNode, text = false): ChildNode {
14
14
  // If the required node is a text node, and we already have one, just use
15
15
  // it. This is caused by text nodes being merged in HTML
16
- if (context.hydrationNode && text && isText(node)) {
16
+ if (context.hydrationNode !== null && text && isTextNode(node)) {
17
17
  return node;
18
18
  }
19
19
 
@@ -1,5 +1,7 @@
1
1
  import context from "./context";
2
- import isText from "./isText";
2
+ import { HYDRATION_START } from "./hydrationMarkers";
3
+ import isCommentNode from "./isCommentNode";
4
+ import isTextNode from "./isTextNode";
3
5
 
4
6
  /**
5
7
  * Gets the first child in a fragment.
@@ -10,20 +12,32 @@ import isText from "./isText";
10
12
  * @param text Whether we require a text node.
11
13
  */
12
14
  export default function nodeRoot(parent: Node, text = false): ChildNode {
13
- if (context.hydrationNode) {
15
+ if (context.hydrationNode !== null) {
14
16
  let rootNode = context.hydrationNode;
15
17
 
16
18
  // If the root node we need is a text node, and the hydration node is
17
19
  // not a text node but the previous node is, use the previous node. This
18
20
  // is caused by text nodes being merged in HTML
19
- if (text && !isText(rootNode) && isText(rootNode.previousSibling)) {
21
+ if (
22
+ text &&
23
+ !isTextNode(rootNode) &&
24
+ rootNode.previousSibling !== null &&
25
+ isTextNode(rootNode.previousSibling)
26
+ ) {
20
27
  rootNode = rootNode.previousSibling;
21
28
  context.hydrationNode = rootNode;
22
29
  }
23
30
 
31
+ // HACK: If the root node is a hydration start comment node, get the
32
+ // next one instead
33
+ if (isCommentNode(rootNode) && rootNode.data === HYDRATION_START) {
34
+ rootNode = rootNode.nextSibling!;
35
+ context.hydrationNode = rootNode;
36
+ }
37
+
24
38
  // If hydrating, set the active range's start node
25
39
  const range = context.activeRange;
26
- if (range && !range.startNode) {
40
+ if (range.startNode === null) {
27
41
  range.startNode = rootNode;
28
42
  }
29
43
 
@@ -1,6 +1,6 @@
1
- import { type Range } from "../types/Range";
1
+ import type Range from "../types/Range";
2
2
  import context from "./context";
3
3
 
4
- export default function popRange(oldRange: Range | null): void {
4
+ export default function popRange(oldRange: Range): void {
5
5
  context.activeRange = oldRange;
6
6
  }
@@ -1,17 +1,25 @@
1
- import { type Range } from "../types/Range";
1
+ import type Range from "../types/Range";
2
2
  import context from "./context";
3
3
 
4
- export default function pushRange(range: Range, toParent = false): Range | null {
4
+ export default function pushRange(range: Range, toParent = false): Range {
5
5
  const activeRange = context.activeRange;
6
6
 
7
7
  // Add the new range to the currently active range's children, so that we
8
8
  // can delete the children with the parent
9
- if (toParent && activeRange) {
10
- (activeRange.children ??= []).push(range);
9
+ if (toParent) {
10
+ const previousRange = context.previousRange;
11
+ range.previousRange = previousRange;
12
+
13
+ const nextRange = previousRange.nextRange;
14
+ previousRange.nextRange = range;
15
+ range.nextRange = nextRange;
16
+
17
+ range.depth = activeRange.depth + 1;
11
18
  }
12
19
 
13
20
  // Set the new active range
14
21
  context.activeRange = range;
22
+ context.previousRange = range;
15
23
 
16
24
  // Return the old active range, so that it can be reset when done
17
25
  return activeRange;
@@ -1,4 +1,4 @@
1
- import { type Range } from "../types/Range";
1
+ import type Range from "../types/Range";
2
2
  import $run from "./$run";
3
3
  import context from "./context";
4
4
  import popRange from "./popRange";
@@ -13,10 +13,6 @@ export default function runControl(
13
13
  anchor: Node | null,
14
14
  create: (anchor: Node | null) => void,
15
15
  ): void {
16
- // Store the index in the range so that it can be accessed by the statement's
17
- // branches
18
- range.index = -1;
19
-
20
16
  const oldRange = pushRange(range, true);
21
17
 
22
18
  // Run the control statement in an effect
@@ -1,38 +1,24 @@
1
- import { type Range } from "../types/Range";
1
+ import type Range from "../types/Range";
2
2
  import clearRange from "./clearRange";
3
- import context from "./context";
4
3
  import newRange from "./newRange";
5
4
  import popRange from "./popRange";
6
5
  import pushRange from "./pushRange";
7
6
 
8
- export default function runControlBranch(range: Range, index: number, create: () => void): void {
9
- // Only run the branch if it's not the current branch
10
- if (index >= 0 && range.index === index) {
11
- return;
12
- }
13
- if (range.children?.length) {
14
- // Branching ranges have exactly one child
15
- clearRange(range.children[0]);
16
- range.children.length = 0;
7
+ export default function runControlBranch(range: Range, create: () => void): void {
8
+ // HACK: This is bad -- it means that the parent range has been cleared,
9
+ // but that should have cleared the effect that runs this child range??
10
+ // TODO: Look into this further...
11
+ if (range.depth === -2) return;
12
+
13
+ // Branching ranges have exactly one child -- remove it if necessary
14
+ if (range.nextRange !== null && range.nextRange.depth > range.depth) {
15
+ clearRange(range.nextRange!);
17
16
  }
18
17
 
19
18
  const oldRange = pushRange(newRange(), true);
20
19
 
21
- // Do NOT re-run the entire control for properties accessed while updating
22
- // its branches. E.g. we want to re-run the control for `@if ($state.x > 5)`
23
- // (in runControl) but not for `<span>{$state.text}</span>` (in
24
- // runControlBranch)
25
- const oldEffect = context.activeEffect;
26
- context.activeEffect = null;
27
-
28
20
  // Run the create function
29
21
  create();
30
22
 
31
- // Set the active effect back for the next branch
32
- context.activeEffect = oldEffect;
33
-
34
23
  popRange(oldRange);
35
-
36
- // Set the index on the branching range
37
- range.index = index;
38
24
  }