@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
@@ -1,19 +1,19 @@
1
- import { type ElementNode } from "../../types/nodes/ElementNode";
2
- import { type TextNode } from "../../types/nodes/TextNode";
1
+ import type SourceRange from "../../types/SourceRange";
2
+ import type ElementNode from "../../types/nodes/ElementNode";
3
+ import type TextNode from "../../types/nodes/TextNode";
3
4
  import Builder from "../../utils/Builder";
4
5
  import trimEnd from "../../utils/trimEnd";
5
- import trimMatched from "../../utils/trimMatched";
6
6
  import trimQuotes from "../../utils/trimQuotes";
7
- import isFullyReactive from "../utils/isFullyReactive";
8
- import isReactive from "../utils/isReactive";
9
7
  import nextVarName from "../utils/nextVarName";
10
- import { type BuildStatus } from "./BuildStatus";
8
+ import type BuildStatus from "./BuildStatus";
9
+ import addMappedText from "./addMappedText";
11
10
  import buildAddFragment from "./buildAddFragment";
12
11
  import buildFragment from "./buildFragment";
13
12
  import buildMount from "./buildMount";
14
13
  import buildNode from "./buildNode";
15
14
  import buildRun from "./buildRun";
16
15
  import replaceForVarNames from "./replaceForVarNames";
16
+ import stashRun from "./stashRun";
17
17
 
18
18
  export default function buildElementNode(
19
19
  node: ElementNode,
@@ -25,16 +25,21 @@ export default function buildElementNode(
25
25
  if (status.inHead) {
26
26
  if (node.tagName === "title") {
27
27
  buildTitleNode(node, status, b);
28
- return;
29
28
  } else {
30
29
  buildHeadNode(node, status, b);
31
- return;
32
30
  }
31
+ return;
32
+ }
33
+
34
+ const svgElement = node.tagName === "svg";
35
+ const oldns = status.ns;
36
+ if (svgElement) {
37
+ status.ns = true;
33
38
  }
34
39
 
35
40
  const varName = node.varName;
36
41
  if (varName) {
37
- if (node.tagName === ":element") {
42
+ if (node.tagName === "@element") {
38
43
  buildDynamicElementNode(node, status, b);
39
44
  }
40
45
 
@@ -52,19 +57,23 @@ export default function buildElementNode(
52
57
  }
53
58
 
54
59
  const oldPreserveWhitespace = status.preserveWhitespace;
55
- status.preserveWhitespace = ["code", "pre"].includes(node.tagName);
60
+ status.preserveWhitespace = node.tagName === "code" || node.tagName === "pre";
56
61
  for (let child of node.children) {
57
62
  buildNode(child, status, b, parentName, "null");
58
63
  }
59
64
  status.preserveWhitespace = oldPreserveWhitespace;
65
+
66
+ if (svgElement) {
67
+ status.ns = oldns;
68
+ }
60
69
  }
61
70
 
62
71
  function buildDynamicElementNode(node: ElementNode, status: BuildStatus, b: Builder) {
63
72
  let selfAttribute = node.attributes.find((a) => a.name === "self");
64
- if (selfAttribute && selfAttribute.value) {
73
+ if (selfAttribute && selfAttribute.value && selfAttribute.fullyReactive) {
65
74
  status.imports.add("$run");
66
75
  status.imports.add("t_dynamic");
67
- let selfValue = trimMatched(selfAttribute.value, "{", "}");
76
+ let selfValue = selfAttribute.value;
68
77
  b.append(`$run(function setDynamic() {`);
69
78
  b.append(`${node.varName} = t_dynamic(${node.varName}, ${selfValue});`);
70
79
 
@@ -134,29 +143,12 @@ function buildHeadNode(node: ElementNode, status: BuildStatus, b: Builder) {
134
143
  // TODO: dedupe e.g. <meta name="x"> or on special key
135
144
  b.append(`
136
145
  $run(function runHead() {
137
- const t_head_el = document.createElement("${node.tagName}");
138
- document.getElementsByTagName("head")[0].appendChild(t_head_el);`);
146
+ const t_headel = document.createElement("${node.tagName}");
147
+ document.getElementsByTagName("head")[0].appendChild(t_headel);`);
139
148
  for (let { name, value } of node.attributes) {
140
- if (name.startsWith("{") && name.endsWith("}")) {
141
- // It's a shortcut attribute
142
- // It could be e.g. {width} or it could be {$state.width}, but
143
- // in either case we set the value of the width property
144
- name = name.substring(1, name.length - 1);
145
- const propName = name.split(".").at(-1);
146
- buildRun("setAttribute", `t_head_el.setAttribute("${propName}", ${name});`, status, b);
147
- } else if (value != null && isReactive(value)) {
148
- // It's a reactive attribute
149
- if (isFullyReactive(value)) {
150
- value = value.substring(1, value.length - 1);
151
- } else {
152
- value = `\`${trimQuotes(value).replaceAll("{", "${")}\``;
153
- }
154
-
149
+ if (value != null) {
155
150
  status.imports.add("t_attribute");
156
- buildRun("setAttribute", `t_attribute(t_head_el, "${name}", ${value});`, status, b);
157
- } else if (value != null) {
158
- status.imports.add("t_attribute");
159
- b.append(`t_attribute(t_head_el, "${name}", ${value});`);
151
+ b.append(`t_attribute(t_headel, "${name}", ${value});`);
160
152
  }
161
153
  }
162
154
  b.append(`
@@ -169,78 +161,77 @@ function buildElementAttributes(
169
161
  status: BuildStatus,
170
162
  b: Builder,
171
163
  ) {
172
- // TODO: Flatten this out
164
+ let fragment = status.fragmentStack.at(-1)?.fragment;
165
+ if (!fragment) throw new Error("No fragment on stack");
166
+
173
167
  // TODO: Add an error if any reactive attributes are used non-reactively
174
168
 
175
169
  // Do &ref first, just in case any other attributes depend on it being set
176
170
  // e.g. if you have a `style` attribute that depends on the element's size
177
171
  const refAttribute = node.attributes.find((a) => a.name === "&ref");
178
172
  if (refAttribute) {
179
- let value = refAttribute.value;
180
- if (value != null && isFullyReactive(value)) {
173
+ let { value, fullyReactive } = refAttribute;
174
+ if (value != null && fullyReactive) {
181
175
  // Bind the DOM element to a user-defined variable
182
- value = value.substring(1, value.length - 1);
183
176
  b.append(`${value} = ${varName};`);
184
177
  }
185
178
  }
186
179
 
187
- for (let { name, value } of node.attributes) {
188
- if (name === "self" && node.tagName === ":element") {
180
+ for (let { name, value, reactive, range } of node.attributes) {
181
+ if (name === "self" && node.tagName === "@element") {
189
182
  // Ignore this special attribute
190
183
  } else if (name === "&ref") {
191
184
  // Ignore this one, it should have been done already, above
192
- } else if (name.startsWith("{") && name.endsWith("}")) {
193
- // It's a shortcut attribute
194
- // It could be e.g. {width} or it could be {$state.width}, but
195
- // in either case we set the value of the width property
196
- name = name.substring(1, name.length - 1);
197
- const propName = name.split(".").at(-1);
198
- buildRun("setAttribute", `${varName}.setAttribute("${propName}", ${name});`, status, b);
199
- } else if (value != null && isReactive(value)) {
200
- // It's a reactive attribute
201
- if (isFullyReactive(value)) {
202
- value = value.substring(1, value.length - 1);
203
- } else {
204
- value = `\`${trimQuotes(value).replaceAll("{", "${")}\``;
205
- }
206
-
185
+ } else if (value != null && reactive) {
207
186
  if (name === "&group") {
208
187
  buildBindGroupAttribute(node, varName, value, status, b);
209
188
  } else if (name === "&value" || name === "&checked") {
210
189
  buildBindAttribute(node, varName, name, value, status, b);
211
- } else if (name === ":onmount") {
212
- // The :onmount event is faked by us by creating a $mount. This
190
+ } else if (name === "onmount") {
191
+ // The onmount event is faked by us by creating a $mount. This
213
192
  // also means that you can have unmount functionality by
214
193
  // returning a cleanup function
215
194
  buildMount("elMount", `return (${trimEnd(value.trim(), ";")})(${varName});`, status, b);
216
195
  } else if (name.startsWith("on")) {
217
- buildEventAttribute(varName, name, value, status, b);
218
- } else if (name.startsWith(":transition")) {
196
+ buildEventAttribute(varName, name, value, range, status, b);
197
+ } else if (name.startsWith("transition")) {
219
198
  buildTransitionAttribute(node, varName, name, value, status, b);
220
199
  } else if (name === "class") {
221
- if (node.scopeStyles) {
222
- value += `+ "torp-${status.styleHash}"`;
223
- }
224
- buildRun("setClassName", `${varName}.className = ${value};`, status, b);
225
- } else if (name === ":class") {
226
200
  status.imports.add("t_class");
201
+ const params = [value];
227
202
  if (node.scopeStyles) {
228
- value += `, "torp-${status.styleHash}"`;
203
+ params.push(`"torp-${status.styleHash}"`);
229
204
  }
230
- buildRun("setClasses", `${varName}.className = t_class(${value});`, status, b);
231
- } else if (name === ":style") {
205
+ // SVGs have a different className
206
+ const propName = status.ns ? "className.baseVal" : "className";
207
+ stashRun(
208
+ fragment,
209
+ `${varName}.${propName} = t_class(`,
210
+ params.join(", "),
211
+ ");",
212
+ range,
213
+ status,
214
+ );
215
+ } else if (name === "style") {
232
216
  status.imports.add("t_style");
233
- buildRun("setStyles", `${varName}.setAttribute("style", t_style(${value}));`, status, b);
217
+ stashRun(
218
+ fragment,
219
+ `${varName}.setAttribute("style", t_style(`,
220
+ value,
221
+ "));",
222
+ range,
223
+ status,
224
+ );
234
225
  } else if (name.includes("-")) {
235
226
  // Handle data-, aria- etc
236
227
  status.imports.add("t_attribute");
237
- buildRun("setDataAttribute", `t_attribute(${varName}, "${name}", ${value});`, status, b);
228
+ stashRun(fragment, `t_attribute(${varName}, "${name}", `, value, ");", range, status);
238
229
  // NOTE: dataset seems to be a tiny bit slower?
239
230
  //const propName = name.substring(name.indexOf("-"));
240
231
  //buildRun("setDataAttribute", `${varName}.dataset.${propName} = ${value};`, status, b);
241
232
  } else {
242
233
  status.imports.add("t_attribute");
243
- buildRun("setAttribute", `t_attribute(${varName}, "${name}", ${value});`, status, b);
234
+ stashRun(fragment, `t_attribute(${varName}, "${name}", `, value, ");", range, status);
244
235
  }
245
236
  }
246
237
  }
@@ -322,6 +313,7 @@ function buildEventAttribute(
322
313
  varName: string,
323
314
  name: string,
324
315
  value: string,
316
+ range: SourceRange,
325
317
  status: BuildStatus,
326
318
  b: Builder,
327
319
  ) {
@@ -330,7 +322,7 @@ function buildEventAttribute(
330
322
  // Add an event listener, after the fragment has been added
331
323
  const eventName = name.substring(2);
332
324
  status.imports.add("t_event");
333
- b.append(`t_event(${varName}, "${eventName}", ${value});`);
325
+ addMappedText(`t_event(${varName}, "${eventName}", `, value, `);`, range, status, b);
334
326
  }
335
327
 
336
328
  function buildTransitionAttribute(
@@ -351,14 +343,14 @@ function buildTransitionAttribute(
351
343
  let entryVarName = nextVarName("trans_in", status);
352
344
  let exitVarName = nextVarName("trans_out", status);
353
345
 
354
- if (name === ":transition") {
346
+ if (name === "transition") {
355
347
  b.append(`const ${entryVarName} = ${getAnimationDetails(value)};`);
356
348
  b.append(`const ${exitVarName} = ${entryVarName};`);
357
349
  b.append(`t_animate(${varName}, ${entryVarName}, ${exitVarName});`);
358
- } else if (name === ":transition-in") {
359
- let outAttribute = node.attributes.find((a) => a.name === ":transition-out");
360
- if (outAttribute && outAttribute.value) {
361
- let outValue = trimMatched(outAttribute.value, "{", "}");
350
+ } else if (name === "transition-in") {
351
+ let outAttribute = node.attributes.find((a) => a.name === "transition-out");
352
+ if (outAttribute && outAttribute.value && outAttribute.fullyReactive) {
353
+ let outValue = outAttribute.value;
362
354
  b.append(`const ${entryVarName} = ${getAnimationDetails(value)};`);
363
355
  b.append(`const ${exitVarName} = ${getAnimationDetails(outValue)};`);
364
356
  b.append(`t_animate(${varName}, ${entryVarName}, ${exitVarName});`);
@@ -366,10 +358,10 @@ function buildTransitionAttribute(
366
358
  b.append(`const ${entryVarName} = ${getAnimationDetails(value)};`);
367
359
  b.append(`t_animate(${varName}, ${entryVarName});`);
368
360
  }
369
- } else if (name === ":transition-out") {
370
- let inAttribute = node.attributes.find((a) => a.name === ":transition-in");
361
+ } else if (name === "transition-out") {
362
+ let inAttribute = node.attributes.find((a) => a.name === "transition-in");
371
363
  if (inAttribute) {
372
- // This has already been handled with :transition-in, above
364
+ // This has already been handled with transition-in, above
373
365
  return;
374
366
  } else {
375
367
  b.append(`const ${exitVarName} = ${getAnimationDetails(value)};`);
@@ -1,10 +1,11 @@
1
- import { type ControlNode } from "../../types/nodes/ControlNode";
2
- import isControlNode from "../../types/nodes/isControlNode";
1
+ import type ControlNode from "../../types/nodes/ControlNode";
3
2
  import Builder from "../../utils/Builder";
3
+ import isControlNode from "../../utils/isControlNode";
4
4
  import trimEnd from "../../utils/trimEnd";
5
5
  import trimMatched from "../../utils/trimMatched";
6
6
  import nextVarName from "../utils/nextVarName";
7
- import { type BuildStatus } from "./BuildStatus";
7
+ import type BuildStatus from "./BuildStatus";
8
+ import addMappedText from "./addMappedText";
8
9
  import buildAddFragment from "./buildAddFragment";
9
10
  import buildFragment from "./buildFragment";
10
11
  import buildNode from "./buildNode";
@@ -74,13 +75,19 @@ export default function buildForNode(node: ControlNode, status: BuildStatus, b:
74
75
  ${forAnchorName},
75
76
  function createNewItems() {
76
77
  let t_new_items: ListItem[] = [];
77
- ${node.statement} {
78
- t_new_items.push(t_list_item({ ${forVarNames.join(",\n")} }${keyStatement ? `, ${keyStatement}` : ""}));
79
- /*t_new_items.push({
80
- ${keyStatement ? `key: ${keyStatement},` : ";"}
81
- data: { ${forVarNames.join(",\n")} }
82
- });*/
78
+ let t_previous_item = ${forRangeName};
79
+ let t_next_item = ${forRangeName}.nextRange;`);
80
+
81
+ addMappedText("", `${node.statement}`, " {", node.range, status, b);
82
+
83
+ b.append(`
84
+ let t_new_item = t_list_item({ ${forVarNames.join(",\n")} }${keyStatement ? `, ${keyStatement}` : ""});
85
+ t_new_item.previousRange = t_previous_item;
86
+ t_previous_item.nextRange = t_new_item;
87
+ t_previous_item = t_new_item;
88
+ t_new_items.push(t_new_item);
83
89
  }
90
+ ${forRangeName}.nextRange = t_next_item;
84
91
  return t_new_items;
85
92
  },
86
93
  function createListItem(t_item, t_before) {`);
@@ -89,8 +96,13 @@ export default function buildForNode(node: ControlNode, status: BuildStatus, b:
89
96
  buildForItem(node, status, b, forParentName);
90
97
  status.forVarNames = [];
91
98
 
92
- b.append(`}`);
93
- b.append(`);`);
99
+ b.append(`},
100
+ function updateListItem(t_old_item, t_new_item) {`);
101
+ for (let varName of forVarNames) {
102
+ b.append(`t_old_item.data.${varName} = t_new_item.data.${varName};`);
103
+ }
104
+ b.append(`}
105
+ );`);
94
106
  b.append("");
95
107
  }
96
108
 
@@ -98,7 +110,7 @@ function buildForItem(node: ControlNode, status: BuildStatus, b: Builder, parent
98
110
  const oldRangeName = nextVarName("old_range", status);
99
111
 
100
112
  status.imports.add("t_push_range");
101
- b.append(`let ${oldRangeName} = t_push_range(t_item, true);`);
113
+ b.append(`let ${oldRangeName} = t_push_range(t_item);`);
102
114
 
103
115
  buildFragment(node, status, b, parentName, "t_before");
104
116
 
@@ -1,19 +1,19 @@
1
1
  import isSpace from "../../parse/utils/isSpace";
2
- import { type ControlNode } from "../../types/nodes/ControlNode";
3
- import { type ElementNode } from "../../types/nodes/ElementNode";
4
- import { type Fragment } from "../../types/nodes/Fragment";
5
- import { type RootNode } from "../../types/nodes/RootNode";
6
- import { type TemplateNode } from "../../types/nodes/TemplateNode";
7
- import { type TextNode } from "../../types/nodes/TextNode";
8
- import isControlNode from "../../types/nodes/isControlNode";
9
- import isElementNode from "../../types/nodes/isElementNode";
10
- import isTextNode from "../../types/nodes/isTextNode";
2
+ import type ControlNode from "../../types/nodes/ControlNode";
3
+ import type ElementNode from "../../types/nodes/ElementNode";
4
+ import type Fragment from "../../types/nodes/Fragment";
5
+ import type RootNode from "../../types/nodes/RootNode";
6
+ import type TemplateNode from "../../types/nodes/TemplateNode";
7
+ import type TextNode from "../../types/nodes/TextNode";
11
8
  import Builder from "../../utils/Builder";
9
+ import isControlNode from "../../utils/isControlNode";
10
+ import isElementNode from "../../utils/isElementNode";
11
+ import isReactive from "../../utils/isReactive";
12
+ import isSpecialNode from "../../utils/isSpecialNode";
13
+ import isTextNode from "../../utils/isTextNode";
12
14
  import trimQuotes from "../../utils/trimQuotes";
13
- import isReactive from "../utils/isReactive";
14
- import isReactiveAttribute from "../utils/isReactiveAttribute";
15
15
  import nextVarName from "../utils/nextVarName";
16
- import { type BuildStatus } from "./BuildStatus";
16
+ import type BuildStatus from "./BuildStatus";
17
17
  import buildNode from "./buildNode";
18
18
 
19
19
  interface VariablePath {
@@ -124,10 +124,6 @@ function maybeAddRootNodeDeclaration(
124
124
  params.push("true");
125
125
  }
126
126
  const rootPath = `t_root(${params.join(", ")})`;
127
- // HACK: We don't know whether this variable will be used by other child
128
- // nodes, so we have to create it regardless and ignore the error if
129
- // it's not used -- maybe we could be smarter about this
130
- b.append("// @ts-ignore");
131
127
  b.append(`const ${rootName} = ${rootPath};`);
132
128
  // HACK: pretend we don't have the text param, so that subsequent t_root
133
129
  // uses will be shortened, even if we don't know they are text nodes
@@ -236,6 +232,7 @@ function declareFragmentVars(
236
232
  break;
237
233
  }
238
234
  default: {
235
+ // eslint-disable-next-line restrict-template-expressions
239
236
  throw new Error(`Invalid node type: ${node.type}`);
240
237
  }
241
238
  }
@@ -370,7 +367,7 @@ function declareElementFragmentVars(
370
367
  lastChild: boolean,
371
368
  declare: boolean,
372
369
  ) {
373
- const tagName = node.tagName === ":element" ? "element" : node.tagName;
370
+ const tagName = node.tagName === "@element" ? "element" : node.tagName;
374
371
 
375
372
  let elementPath = { parent: path, type: tagName, children: [] };
376
373
  path.children.push(elementPath);
@@ -388,15 +385,10 @@ function declareElementFragmentVars(
388
385
  if (status.options?.useCreateElement) {
389
386
  b.append(`let ${node.varName};`);
390
387
  } else {
391
- if (node.tagName === ":element") {
388
+ if (node.tagName === "@element") {
392
389
  b.append(`let ${node.varName} = ${varPath} as ${elementTypeName(node)};`);
393
390
  } else {
394
- // HACK: Not great
395
- if (topLevel && lastChild) {
396
- b.append("// @ts-ignore");
397
- }
398
391
  b.append(`const ${node.varName} = ${varPath} as ${elementTypeName(node)};`);
399
-
400
392
  printDebug(node.varName, status, b);
401
393
  }
402
394
  }
@@ -410,9 +402,9 @@ function declareElementFragmentVars(
410
402
 
411
403
  if (!declare) {
412
404
  let attributes = node.attributes
413
- .filter((a) => !a.name.startsWith("on") && !a.name.includes(":"))
405
+ .filter((a) => !a.name.startsWith("on"))
414
406
  .map((a) => {
415
- if (a.value && isReactive(a.value)) {
407
+ if (a.value && a.reactive) {
416
408
  // Adding a placeholder for reactive attributes seems to speed things
417
409
  // up, especially in the case of data attributes
418
410
  return `"${a.name}": "#"`;
@@ -461,11 +453,9 @@ function declareElementFragmentVars(
461
453
  }
462
454
 
463
455
  function elementNodeNeedsDeclaration(node: ElementNode, topLevel: boolean, lastChild: boolean) {
464
- const hasReactiveAttribute = node.attributes.some(
465
- (a) => a.value && isReactiveAttribute(a.name, a.value),
466
- );
456
+ const hasReactiveAttribute = node.attributes.some((a) => a.value && a.reactive);
467
457
  const isDynamicElement =
468
- node.tagName === ":element" && node.attributes.find((a) => a.name === "self");
458
+ node.tagName === "@element" && node.attributes.find((a) => a.name === "self");
469
459
  return hasReactiveAttribute || isDynamicElement || (topLevel && lastChild);
470
460
  }
471
461
 
@@ -503,12 +493,7 @@ function declareTextFragmentVars(
503
493
  if (status.options?.useCreateElement) {
504
494
  b.append(`let ${node.varName};`);
505
495
  } else {
506
- // HACK: Not great
507
- if (topLevel && lastChild) {
508
- b.append("// @ts-ignore");
509
- }
510
496
  b.append(`const ${node.varName} = ${varPath};`);
511
-
512
497
  printDebug(node.varName, status, b);
513
498
  }
514
499
  }
@@ -538,7 +523,7 @@ function declareSpecialFragmentVars(
538
523
  lastChild: boolean,
539
524
  declare: boolean,
540
525
  ) {
541
- if (node.tagName === ":slot") {
526
+ if (node.tagName === "slot") {
542
527
  declareParentAndAnchorFragmentVars(
543
528
  fragment,
544
529
  node,
@@ -554,9 +539,13 @@ function declareSpecialFragmentVars(
554
539
  }
555
540
 
556
541
  switch (node.tagName) {
557
- case ":slot":
558
- case ":fill": {
542
+ case "slot":
543
+ case "fill": {
559
544
  for (let [i, child] of node.children.entries()) {
545
+ // Don't build the fill node twice
546
+ if (node.tagName === "slot" && isSpecialNode(child) && child.tagName === "fill") {
547
+ continue;
548
+ }
560
549
  declareFragmentVars(
561
550
  fragment,
562
551
  child,
@@ -572,7 +561,7 @@ function declareSpecialFragmentVars(
572
561
  }
573
562
  break;
574
563
  }
575
- case ":element": {
564
+ case "@element": {
576
565
  declareElementFragmentVars(
577
566
  fragment,
578
567
  node,
@@ -587,7 +576,7 @@ function declareSpecialFragmentVars(
587
576
  );
588
577
  break;
589
578
  }
590
- case ":component": {
579
+ case "@component": {
591
580
  declareComponentFragmentVars(
592
581
  fragment,
593
582
  node,
@@ -601,11 +590,8 @@ function declareSpecialFragmentVars(
601
590
  );
602
591
  break;
603
592
  }
604
- case ":head": {
605
- // Don't need to do anything here
606
- break;
607
- }
608
593
  default: {
594
+ // eslint-disable-next-line restrict-template-expressions
609
595
  throw new Error(`Invalid special node: ${node.tagName}`);
610
596
  }
611
597
  }
@@ -1,14 +1,14 @@
1
1
  import { ANCHOR_COMMENT } from "../../types/comments";
2
- import { type ControlNode } from "../../types/nodes/ControlNode";
3
- import { type ElementNode } from "../../types/nodes/ElementNode";
4
- import { type Fragment } from "../../types/nodes/Fragment";
5
- import { type RootNode } from "../../types/nodes/RootNode";
6
- import { type TemplateNode } from "../../types/nodes/TemplateNode";
7
- import { type TextNode } from "../../types/nodes/TextNode";
2
+ import type ControlNode from "../../types/nodes/ControlNode";
3
+ import type ElementNode from "../../types/nodes/ElementNode";
4
+ import type Fragment from "../../types/nodes/Fragment";
5
+ import type RootNode from "../../types/nodes/RootNode";
6
+ import type TemplateNode from "../../types/nodes/TemplateNode";
7
+ import type TextNode from "../../types/nodes/TextNode";
8
8
  import Builder from "../../utils/Builder";
9
+ import isReactive from "../../utils/isReactive";
9
10
  import trimQuotes from "../../utils/trimQuotes";
10
- import isReactive from "../utils/isReactive";
11
- import { type BuildStatus } from "./BuildStatus";
11
+ import type BuildStatus from "./BuildStatus";
12
12
 
13
13
  /**
14
14
  * Builds the HTML template text for all of the fragments in a component
@@ -68,7 +68,14 @@ function buildNodeFragmentText(
68
68
  }
69
69
 
70
70
  function buildRootFragmentText(node: RootNode, status: BuildStatus, fragments: Fragment[]) {
71
- node.fragment = { number: fragments.length, text: "", ns: status.ns, events: [], animations: [] };
71
+ node.fragment = {
72
+ number: fragments.length,
73
+ text: "",
74
+ ns: status.ns,
75
+ effects: [],
76
+ events: [],
77
+ animations: [],
78
+ };
72
79
  fragments.push(node.fragment);
73
80
  for (let child of node.children) {
74
81
  buildNodeFragmentText(child, status, fragments, node.fragment);
@@ -103,6 +110,7 @@ function buildControlFragmentText(
103
110
  number: fragments.length,
104
111
  text: "",
105
112
  ns: status.ns,
113
+ effects: [],
106
114
  events: [],
107
115
  animations: [],
108
116
  };
@@ -129,12 +137,13 @@ function buildComponentFragmentText(
129
137
  number: fragments.length,
130
138
  text: "",
131
139
  ns: status.ns,
140
+ effects: [],
132
141
  events: [],
133
142
  animations: [],
134
143
  };
135
144
  fragments.push(node.fragment);
136
145
  for (let child of node.children) {
137
- // TODO: Make sure it's not a :fill node
146
+ // TODO: Make sure it's not a fill node
138
147
  buildNodeFragmentText(child, status, fragments, node.fragment);
139
148
  }
140
149
  }
@@ -149,9 +158,9 @@ function buildElementFragmentText(
149
158
  let needsClass = node.scopeStyles;
150
159
  currentFragment.text += `<${node.tagName}`;
151
160
  let attributesText = node.attributes
152
- .filter((a) => !a.name.startsWith("on") && !a.name.includes(":"))
161
+ .filter((a) => !a.name.startsWith("on"))
153
162
  .map((a) => {
154
- if (a.value && isReactive(a.value) && !a.name.includes(":")) {
163
+ if (a.value && a.reactive) {
155
164
  // Adding a placeholder for reactive attributes seems to speed things
156
165
  // up, especially in the case of data attributes. Otherwise don't set it
157
166
  if (a.name.startsWith("data-")) {
@@ -189,7 +198,7 @@ function buildSpecialFragmentText(
189
198
  currentFragment: Fragment,
190
199
  ) {
191
200
  switch (node.tagName) {
192
- case ":slot": {
201
+ case "slot": {
193
202
  // Add an anchor for the slot
194
203
  currentFragment.text += ANCHOR_COMMENT;
195
204
  for (let child of node.children) {
@@ -197,12 +206,13 @@ function buildSpecialFragmentText(
197
206
  }
198
207
  break;
199
208
  }
200
- case ":fill": {
209
+ case "fill": {
201
210
  // Add a new fragment for filled slot content
202
211
  node.fragment = {
203
212
  number: fragments.length,
204
213
  text: "",
205
214
  ns: status.ns,
215
+ effects: [],
206
216
  events: [],
207
217
  animations: [],
208
218
  };
@@ -212,20 +222,17 @@ function buildSpecialFragmentText(
212
222
  }
213
223
  break;
214
224
  }
215
- case ":element": {
225
+ case "@element": {
216
226
  // HACK: Just treat it as a component node as that does what we need for now
217
227
  buildComponentFragmentText(node, status, fragments, currentFragment);
218
228
  break;
219
229
  }
220
- case ":component": {
230
+ case "@component": {
221
231
  buildComponentFragmentText(node, status, fragments, currentFragment);
222
232
  break;
223
233
  }
224
- case ":head": {
225
- // Don't need to do anything here
226
- break;
227
- }
228
234
  default: {
235
+ // eslint-disable-next-line restrict-template-expressions
229
236
  throw new Error(`Invalid special node: ${node.tagName}`);
230
237
  }
231
238
  }
@@ -1,9 +1,11 @@
1
- import { type ControlNode } from "../../types/nodes/ControlNode";
1
+ import type ControlNode from "../../types/nodes/ControlNode";
2
2
  import Builder from "../../utils/Builder";
3
3
  import nextVarName from "../utils/nextVarName";
4
- import { type BuildStatus } from "./BuildStatus";
4
+ import type BuildStatus from "./BuildStatus";
5
5
  import buildAddFragment from "./buildAddFragment";
6
6
 
7
+ // TODO: type checking
8
+
7
9
  export default function buildHtmlNode(node: ControlNode, status: BuildStatus, b: Builder): void {
8
10
  const htmlAnchorName = node.varName!;
9
11
  const htmlParentName = node.parentName || htmlAnchorName + ".parentNode";
@@ -37,7 +39,7 @@ function buildHtmlBranch(
37
39
  status.imports.add("t_run_branch");
38
40
 
39
41
  b.append(`${node.statement};`);
40
- b.append(`t_run_branch(${rangeName}, -1, () => {`);
42
+ b.append(`t_run_branch(${rangeName}, () => {`);
41
43
 
42
44
  const templateName = nextVarName("template", status);
43
45
  const fragmentName = `t_fragment_${node.fragment!.number}`;