@torpor/view 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (728) hide show
  1. package/.oxlintrc.json +3 -0
  2. package/CHANGELOG.md +31 -0
  3. package/README.md +27 -26
  4. package/dist/Component-C6Y3UwGs.d.cts +11 -0
  5. package/dist/Component-C6Y3UwGs.d.cts.map +1 -0
  6. package/dist/Component-d19HOoEw.d.ts +11 -0
  7. package/dist/Component-d19HOoEw.d.ts.map +1 -0
  8. package/dist/ServerSlotRender-BiG4xB8e.d.ts +41 -0
  9. package/dist/ServerSlotRender-BiG4xB8e.d.ts.map +1 -0
  10. package/dist/ServerSlotRender-COS6H8Yk.d.cts +41 -0
  11. package/dist/ServerSlotRender-COS6H8Yk.d.cts.map +1 -0
  12. package/dist/compile.cjs +3383 -3783
  13. package/dist/compile.cjs.map +1 -1
  14. package/dist/compile.d.cts +202 -148
  15. package/dist/compile.d.cts.map +1 -0
  16. package/dist/compile.d.ts +202 -148
  17. package/dist/compile.d.ts.map +1 -0
  18. package/dist/compile.js +3378 -3754
  19. package/dist/compile.js.map +1 -1
  20. package/dist/formatText-B0FXBdFT.js +410 -0
  21. package/dist/formatText-B0FXBdFT.js.map +1 -0
  22. package/dist/formatText-DufG5l83.cjs +500 -0
  23. package/dist/formatText-DufG5l83.cjs.map +1 -0
  24. package/dist/index.cjs +853 -873
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +371 -171
  27. package/dist/index.d.cts.map +1 -0
  28. package/dist/index.d.ts +371 -171
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +819 -765
  31. package/dist/index.js.map +1 -1
  32. package/dist/ssr.cjs +29 -114
  33. package/dist/ssr.cjs.map +1 -1
  34. package/dist/ssr.d.cts +13 -8
  35. package/dist/ssr.d.cts.map +1 -0
  36. package/dist/ssr.d.ts +13 -8
  37. package/dist/ssr.d.ts.map +1 -0
  38. package/dist/ssr.js +18 -27
  39. package/dist/ssr.js.map +1 -1
  40. package/package.json +14 -15
  41. package/scripts/buildTestOutput.ts +1 -1
  42. package/scripts/copyToRepl.ts +9 -7
  43. package/src/ambient.d.ts +1 -0
  44. package/src/compile/build/client/BuildStatus.ts +6 -4
  45. package/src/compile/build/client/addMappedText.ts +25 -0
  46. package/src/compile/build/client/buildAddFragment.ts +26 -4
  47. package/src/compile/build/client/buildAwaitNode.ts +86 -54
  48. package/src/compile/build/client/buildCode.ts +91 -57
  49. package/src/compile/build/client/buildComponentNode.ts +20 -42
  50. package/src/compile/build/client/buildControlNode.ts +5 -4
  51. package/src/compile/build/client/buildElementNode.ts +66 -71
  52. package/src/compile/build/client/buildForNode.ts +24 -12
  53. package/src/compile/build/client/buildFragment.ts +29 -43
  54. package/src/compile/build/client/buildFragmentText.ts +27 -20
  55. package/src/compile/build/client/buildHtmlNode.ts +5 -3
  56. package/src/compile/build/client/buildIfNode.ts +44 -29
  57. package/src/compile/build/client/buildMount.ts +1 -1
  58. package/src/compile/build/client/buildNode.ts +8 -7
  59. package/src/compile/build/client/buildReplaceNode.ts +5 -3
  60. package/src/compile/build/client/buildRootNode.ts +2 -2
  61. package/src/compile/build/client/buildRun.ts +1 -1
  62. package/src/compile/build/client/buildScriptNode.ts +5 -3
  63. package/src/compile/build/client/buildSlotNode.ts +7 -23
  64. package/src/compile/build/client/buildSpecialNode.ts +10 -14
  65. package/src/compile/build/client/buildStyles.ts +53 -18
  66. package/src/compile/build/client/buildSwitchNode.ts +53 -32
  67. package/src/compile/build/client/buildTextNode.ts +31 -28
  68. package/src/compile/build/client/replaceForVarNames.ts +1 -1
  69. package/src/compile/build/client/stashRun.ts +22 -0
  70. package/src/compile/build/client/stashRunWithOffsets.ts +32 -0
  71. package/src/compile/build/server/BuildServerStatus.ts +3 -3
  72. package/src/compile/build/server/buildServerAwaitNode.ts +3 -3
  73. package/src/compile/build/server/buildServerCode.ts +57 -45
  74. package/src/compile/build/server/buildServerComponentNode.ts +10 -35
  75. package/src/compile/build/server/buildServerControlNode.ts +5 -2
  76. package/src/compile/build/server/buildServerElementNode.ts +15 -29
  77. package/src/compile/build/server/buildServerForNode.ts +3 -3
  78. package/src/compile/build/server/buildServerHtmlNode.ts +3 -3
  79. package/src/compile/build/server/buildServerIfNode.ts +3 -3
  80. package/src/compile/build/server/buildServerNode.ts +7 -6
  81. package/src/compile/build/server/buildServerReplaceNode.ts +3 -3
  82. package/src/compile/build/server/buildServerRootNode.ts +2 -2
  83. package/src/compile/build/server/buildServerScriptNode.ts +1 -1
  84. package/src/compile/build/server/buildServerSlotNode.ts +5 -21
  85. package/src/compile/build/server/buildServerSpecialNode.ts +10 -13
  86. package/src/compile/build/server/buildServerSwitchNode.ts +3 -3
  87. package/src/compile/build/server/buildServerTextNode.ts +9 -23
  88. package/src/compile/build/utils/nextVarName.ts +2 -2
  89. package/src/compile/build.ts +9 -4
  90. package/src/compile/buildType.ts +2 -2
  91. package/src/compile/parse/ParseComponentStatus.ts +24 -0
  92. package/src/compile/parse/ParseStatus.ts +6 -26
  93. package/src/compile/parse/addSpaceElement.ts +6 -5
  94. package/src/compile/parse/parseCode.ts +116 -60
  95. package/src/compile/parse/parseControl.ts +34 -32
  96. package/src/compile/parse/parseElement.ts +56 -121
  97. package/src/compile/parse/parseImports.ts +1 -1
  98. package/src/compile/parse/parseInlineScript.ts +12 -26
  99. package/src/compile/parse/parseMarkup.ts +9 -3
  100. package/src/compile/parse/parseStyles.ts +4 -4
  101. package/src/compile/parse/parseTag.ts +50 -8
  102. package/src/compile/parse/parseText.ts +96 -0
  103. package/src/compile/parse/scopeStyles.ts +9 -9
  104. package/src/compile/parse/slottifyChildNodes.ts +8 -7
  105. package/src/compile/parse/utils/accept.ts +1 -1
  106. package/src/compile/parse/utils/addError.ts +24 -6
  107. package/src/compile/parse/utils/consumeAlphaNumeric.ts +1 -1
  108. package/src/compile/parse/utils/consumeNonSpace.ts +1 -1
  109. package/src/compile/parse/utils/consumeSpace.ts +1 -1
  110. package/src/compile/parse/utils/consumeUntil.ts +1 -1
  111. package/src/compile/parse/utils/expect.ts +1 -1
  112. package/src/compile/parse.ts +1 -1
  113. package/src/compile/types/BuildResult.ts +5 -2
  114. package/src/compile/types/CompileError.ts +8 -5
  115. package/src/compile/types/Import.ts +2 -2
  116. package/src/compile/types/ParseResult.ts +4 -4
  117. package/src/compile/types/ScriptChunk.ts +6 -0
  118. package/src/compile/types/SourceMapping.ts +7 -0
  119. package/src/compile/types/SourceRange.ts +4 -0
  120. package/src/compile/types/nodes/Attribute.ts +7 -2
  121. package/src/compile/types/nodes/ControlNode.ts +8 -6
  122. package/src/compile/types/nodes/ElementNode.ts +11 -6
  123. package/src/compile/types/nodes/Fragment.ts +10 -2
  124. package/src/compile/types/nodes/NodeType.ts +3 -1
  125. package/src/compile/types/nodes/OperationType.ts +3 -1
  126. package/src/compile/types/nodes/ParentNode.ts +4 -4
  127. package/src/compile/types/nodes/RootNode.ts +5 -5
  128. package/src/compile/types/nodes/TemplateNode.ts +3 -3
  129. package/src/compile/types/nodes/TextNode.ts +5 -3
  130. package/src/compile/types/styles/Attribute.ts +2 -2
  131. package/src/compile/types/styles/Style.ts +3 -3
  132. package/src/compile/types/styles/StyleBlock.ts +3 -3
  133. package/src/compile/utils/Builder.ts +25 -11
  134. package/src/compile/utils/endOfString.ts +8 -0
  135. package/src/compile/utils/endOfTemplateString.ts +14 -0
  136. package/src/compile/{types/nodes → utils}/isComponentNode.ts +2 -2
  137. package/src/compile/utils/isControlNode.ts +6 -0
  138. package/src/compile/utils/isElementNode.ts +6 -0
  139. package/src/compile/utils/isParentNode.ts +6 -0
  140. package/src/compile/{types/nodes → utils}/isSpaceNode.ts +3 -3
  141. package/src/compile/utils/isSpecialNode.ts +6 -0
  142. package/src/compile/utils/isTextNode.ts +6 -0
  143. package/src/compile.ts +2 -2
  144. package/src/debug/printNode.ts +4 -0
  145. package/src/debug/printRanges.ts +74 -0
  146. package/src/debug/printSignalDiagram.ts +139 -0
  147. package/src/debug/printSimpleDiagram.ts +88 -0
  148. package/src/index.ts +13 -6
  149. package/src/render/$batch.ts +22 -0
  150. package/src/render/$cache.ts +34 -0
  151. package/src/render/$mount.ts +1 -1
  152. package/src/render/$peek.ts +14 -0
  153. package/src/render/$run.ts +16 -13
  154. package/src/render/$serverBatch.ts +3 -0
  155. package/src/render/$serverCache.ts +3 -0
  156. package/src/render/$serverMount.ts +1 -1
  157. package/src/render/$serverPeek.ts +3 -0
  158. package/src/render/$serverRun.ts +1 -1
  159. package/src/render/$unwrap.ts +3 -1
  160. package/src/render/$watch.ts +12 -13
  161. package/src/render/addAnimation.ts +1 -1
  162. package/src/render/addFragment.ts +15 -24
  163. package/src/render/applyProps.ts +1 -1
  164. package/src/render/buildClasses.ts +2 -2
  165. package/src/render/clearLayoutSlot.ts +1 -1
  166. package/src/render/clearRange.ts +43 -50
  167. package/src/render/context.ts +19 -48
  168. package/src/render/fillLayoutSlot.ts +3 -3
  169. package/src/render/getFragment.ts +1 -1
  170. package/src/render/hydrate.ts +9 -2
  171. package/src/render/hydrateRoot.ts +2 -2
  172. package/src/render/isCommentNode.ts +2 -2
  173. package/src/render/isFragmentNode.ts +2 -2
  174. package/src/render/isTextNode.ts +2 -2
  175. package/src/render/mount.ts +12 -4
  176. package/src/render/moveRange.ts +4 -11
  177. package/src/render/newListItem.ts +4 -4
  178. package/src/render/newRange.ts +6 -5
  179. package/src/render/nodeAnchor.ts +3 -3
  180. package/src/render/nodeCheckHydrationBreak.ts +2 -2
  181. package/src/render/nodeChild.ts +2 -2
  182. package/src/render/nodeNext.ts +1 -1
  183. package/src/render/nodeRoot.ts +8 -3
  184. package/src/render/popRange.ts +2 -2
  185. package/src/render/pushRange.ts +12 -4
  186. package/src/render/runControl.ts +1 -5
  187. package/src/render/runControlBranch.ts +10 -24
  188. package/src/render/runList.ts +6 -5
  189. package/src/render/runListItems.ts +39 -39
  190. package/src/render/setAttribute.ts +1 -1
  191. package/src/render/setDynamicElement.ts +2 -2
  192. package/src/ssr.ts +5 -2
  193. package/src/types/Animation.ts +1 -1
  194. package/src/types/BuildOptions.ts +6 -2
  195. package/src/types/Cleanup.ts +3 -1
  196. package/src/types/Component.ts +4 -2
  197. package/src/types/Computed.ts +62 -0
  198. package/src/types/Context.ts +99 -0
  199. package/src/types/Effect.ts +45 -9
  200. package/src/types/ListItem.ts +3 -3
  201. package/src/types/ProxyData.ts +6 -4
  202. package/src/types/ProxySignal.ts +28 -0
  203. package/src/types/Range.ts +10 -16
  204. package/src/types/ServerComponent.ts +4 -2
  205. package/src/types/ServerSlotRender.ts +3 -1
  206. package/src/types/SlotRender.ts +4 -2
  207. package/src/types/Subscription.ts +57 -0
  208. package/src/types/Template.ts +6 -5
  209. package/src/types/TemplateComponent.ts +7 -5
  210. package/src/types/WatchOptions.ts +8 -2
  211. package/src/types/constants.ts +14 -0
  212. package/src/watch/batchEnd.ts +17 -0
  213. package/src/watch/batchStart.ts +5 -0
  214. package/src/watch/checkComputed.ts +46 -0
  215. package/src/watch/checkEffect.ts +30 -0
  216. package/src/watch/checkSources.ts +63 -0
  217. package/src/watch/clearSources.ts +39 -0
  218. package/src/watch/clearTargets.ts +28 -0
  219. package/src/watch/deactivateSources.ts +19 -0
  220. package/src/watch/proxyGet.ts +106 -51
  221. package/src/watch/proxySet.ts +17 -13
  222. package/src/watch/runCleanups.ts +40 -0
  223. package/src/watch/runComputed.ts +36 -0
  224. package/src/watch/runEffect.ts +38 -13
  225. package/src/watch/symbols.ts +3 -1
  226. package/src/watch/trackEffect.ts +63 -15
  227. package/src/watch/trackProxyEffect.ts +21 -0
  228. package/src/watch/transferEffects.ts +66 -62
  229. package/src/watch/triggerEffects.ts +55 -18
  230. package/src/watch/updateSignal.ts +102 -0
  231. package/src/wrappers/ReactiveDate.ts +68 -0
  232. package/test/attributes/attributes.test.ts +2 -2
  233. package/test/attributes/components/output/Attributes-client.ts +8 -20
  234. package/test/attributes/components/output/Attributes-server.ts +8 -11
  235. package/test/attributes/components/temp/{Attributes-client-4620a40099e57a7fdaab895b204d85881f6dbfb7.ts → Attributes-client-9b2935d7824ba501776fdc6c48861422c15b6a12.ts} +8 -20
  236. package/test/attributes/components/temp/{Attributes-server-f4c59f5e4757ce0113907389902499efc36cfe38.ts → Attributes-server-716db6e335e5a372a34dd931e5f358ee6d1869e5.ts} +8 -11
  237. package/test/attributes/disappearing.test.ts +2 -2
  238. package/test/attributes/parse.test.ts +161 -248
  239. package/test/await/await.test.ts +2 -2
  240. package/test/await/components/Await.torp +2 -2
  241. package/test/await/components/output/Await-client.ts +25 -39
  242. package/test/await/components/output/Await-server.ts +9 -11
  243. package/test/await/components/temp/{Await-client-17b0e7c682fbff8518a440831620c1024b8be23a.ts → Await-client-e969f4bd0712acf259ddfaa5a3b3448307201fd2.ts} +25 -39
  244. package/test/await/components/temp/{Await-server-eb8d79f8abc791dd8e87f9713534cebf0eb2c854.ts → Await-server-614014fab69e234b8271088b10397cf0452d9a76.ts} +9 -11
  245. package/test/bench/components/Bench.torp +3 -3
  246. package/test/bench/components/output/Bench-client.ts +43 -252
  247. package/test/bench/components/output/Bench-server.ts +13 -26
  248. package/test/bench/components/temp/Bench-client-7f31596dafc8077370d8d90b1bb9b6e0208154e7.ts +205 -0
  249. package/test/bench/components/temp/Bench-server-341b20073668f4f2160cd2ba37847c7db15e1e0f.ts +129 -0
  250. package/test/bind/bind.test.ts +2 -2
  251. package/test/bind/component.test.ts +2 -2
  252. package/test/bind/components/output/BindComponent-client.ts +9 -19
  253. package/test/bind/components/output/BindComponent-server.ts +13 -18
  254. package/test/bind/components/output/BindText-client.ts +6 -13
  255. package/test/bind/components/output/BindText-server.ts +8 -10
  256. package/test/bind/components/temp/{BindComponent-client-a59ee6a598341c64c79be633ae7b22cb594dd0bc.ts → BindComponent-client-22eccb5354a2b0267841e015f3a2a0baf534bf89.ts} +9 -19
  257. package/test/bind/components/temp/{BindComponent-server-96120f1e75c77e02ba11ab719c225005e168d25f.ts → BindComponent-server-0da6ba90a409468fd1f7358f8198e96b7595ff80.ts} +13 -18
  258. package/test/bind/components/temp/{BindText-client-dac614203e672e51675b22a246983168a7c173ea.ts → BindText-client-7692ae1570533cc17e2186e9c7d4768529e4a2fe.ts} +6 -13
  259. package/test/bind/components/temp/{BindText-server-c713033ef787587f752fc8e6282e3a8faeee9a08.ts → BindText-server-6801c5f8e66a65405b45061bc037a011620c0591.ts} +8 -10
  260. package/test/build-server/build-server.test.ts +1 -0
  261. package/test/{if/components/temp/IfNested-client-f3045daba052e459add6e7f84e8d21ba7b0d81e4.ts → build-server/components/output/IfNested-client.ts} +23 -27
  262. package/test/{if/components/temp/IfNested-server-061ea3d56576a352be8a9db8424fae0f1d74cd36.ts → build-server/components/output/IfNested-server.ts} +6 -9
  263. package/test/build-server/components/temp/IfNested-client-eefdd449fa700b2e7326bc72df8b32ddcadf9d21.ts +88 -0
  264. package/test/build-server/components/temp/IfNested-server-7a53e4969b5dfe5073f05edbcb1b986f718bb939.ts +29 -0
  265. package/test/buildHtml.ts +2 -1
  266. package/test/buildOutputFiles.ts +3 -3
  267. package/test/child-component/child-component.test.ts +2 -2
  268. package/test/child-component/components/output/ParentChild-client.ts +9 -19
  269. package/test/child-component/components/output/ParentChild-server.ts +12 -18
  270. package/test/child-component/components/temp/{ParentChild-client-198e4ebc2ef5277ad7147f69d5879946fbe2d6ec.ts → ParentChild-client-2dfd600f7d409630d429a1d2d18c038bd08b08da.ts} +9 -19
  271. package/test/child-component/components/temp/{ParentChild-server-55e809830788ae740608136cf66664fc5434a9cd.ts → ParentChild-server-448d57c3229189c1d297d01dfb0f33646d280e90.ts} +12 -18
  272. package/test/class/class.test.ts +2 -2
  273. package/test/class/components/output/Class-client.ts +11 -29
  274. package/test/class/components/output/Class-server.ts +16 -19
  275. package/test/class/components/temp/{Class-client-7defac0b98d9c9f303670c0372e329e31823f163.ts → Class-client-5af6a50cd454ae019b2aa79457ba7ead83b8c056.ts} +11 -29
  276. package/test/class/components/temp/{Class-server-46563e9c3bf56b642ac496b60179decfd0b4e952.ts → Class-server-eb70ff01fbc7d6d53e16c3593ba021a6bf0317f9.ts} +16 -19
  277. package/test/comments/html-comments.test.ts +16 -24
  278. package/test/comments/js-block-comments.test.ts +16 -25
  279. package/test/comments/js-line-comments.test.ts +16 -25
  280. package/test/component/component.test.ts +2 -2
  281. package/test/component/components/Component.torp +1 -1
  282. package/test/component/components/output/Component-client.ts +5 -10
  283. package/test/component/components/output/Component-server.ts +7 -10
  284. package/test/component/components/output/Header-client.ts +6 -12
  285. package/test/component/components/output/Header-server.ts +7 -10
  286. package/test/component/components/temp/{Component-client-350d20784712c710929cc3ab34c6828b0ea338d8.ts → Component-client-fdc327499be0a01f987d0f2897baf022a247c77c.ts} +5 -10
  287. package/test/component/components/temp/{Component-server-2d4aa317e6c385036e07f4c3946fc18ba848c00d.ts → Component-server-f53221ac7b1c922ef10de2d1fe8fb534d0169fe7.ts} +7 -10
  288. package/test/component/components/temp/{Header-client-903877003b220272b0cb5bfd62d7d748ad46c477.ts → Header-client-6beb5770e68e6b19595e53e20bc906765fc6c260.ts} +6 -12
  289. package/test/component/components/temp/Header-server-940b0984f9b6c11f310db9200c9075ded385eda5.ts +16 -0
  290. package/test/console/components/output/Console-client.ts +5 -10
  291. package/test/console/components/output/Console-server.ts +7 -10
  292. package/test/console/components/temp/{Console-client-4fa3b3679cee88bf6151185438e36d14010944b7.ts → Console-client-2b58290ac407ebbe89a0613d64eb9cd141b99887.ts} +5 -10
  293. package/test/console/components/temp/Console-server-bde0121ce434f767435b1841fc4c24402becdba2.ts +15 -0
  294. package/test/console/console.test.ts +2 -2
  295. package/test/const/components/output/Const-client.ts +6 -11
  296. package/test/const/components/output/Const-server.ts +7 -10
  297. package/test/const/components/temp/{Const-client-b0293a037d9ed7b6ad4591c153723a3c26d46029.ts → Const-client-d1037557e7ef75a8fe06f56816e65883047e9421.ts} +6 -11
  298. package/test/const/components/temp/{Const-server-5fd2444a9ae7a676b7c4480e01e28f7f89624fdc.ts → Const-server-32ddc3617afe2324f17a4cff6c0f086df6694778.ts} +7 -10
  299. package/test/const/const.test.ts +2 -2
  300. package/test/context/components/ChildA.torp +10 -0
  301. package/test/context/components/ChildB.torp +8 -0
  302. package/test/context/components/Parent.torp +11 -0
  303. package/test/context/components/output/ChildA-client.ts +38 -0
  304. package/test/context/components/output/ChildA-server.ts +19 -0
  305. package/test/context/components/output/ChildB-client.ts +27 -0
  306. package/test/context/components/output/ChildB-server.ts +18 -0
  307. package/test/context/components/output/Parent-server.ts +31 -0
  308. package/test/context/components/temp/ChildA-client-9dea3e29ffcb82ca1779f6ff671e19b1c106fc4a.ts +38 -0
  309. package/test/context/components/temp/ChildA-server-54024d23c8241c3f475068f4fe3a3a14fd1c5870.ts +19 -0
  310. package/test/context/components/temp/ChildB-client-4b801099936c8aa013a1220f291375f67eba1acb.ts +27 -0
  311. package/test/context/components/temp/ChildB-server-f9b71341863bf869248bd406dbe8c7726a30ff90.ts +18 -0
  312. package/test/context/components/temp/Parent-client-9898b2e521527c86d69905053b6727ea8fd28166.ts +41 -0
  313. package/test/context/components/temp/Parent-server-b592ff0f516f4592e56d3a0bcb1f271ed28e812c.ts +31 -0
  314. package/test/context/context.test.ts +37 -0
  315. package/test/effects/components/output/For-client.ts +18 -19
  316. package/test/effects/components/output/For-server.ts +6 -9
  317. package/test/effects/components/output/If-client.ts +14 -18
  318. package/test/effects/components/output/If-server.ts +6 -9
  319. package/test/effects/components/output/NestedIf-client.ts +22 -25
  320. package/test/effects/components/output/NestedIf-server.ts +6 -9
  321. package/test/effects/components/temp/{For-client-268e69779d5b744377af9b30df256a453adaf183.ts → For-client-7c7d7c0dba2547f816b9bd9c6a95d6873ec00ffd.ts} +18 -19
  322. package/test/effects/components/temp/{For-server-b15b01b4daaf50fd95de790102089eb930e84e9b.ts → For-server-9e2de4efaff38ecf6c8a169c629d83c385489ca1.ts} +6 -9
  323. package/test/effects/components/temp/{If-client-4df0e6fc27a6f7d60ce056fd65df687213f3a2f9.ts → If-client-f0480a98f80b32612d12765c6838ff6db5982e82.ts} +14 -18
  324. package/test/effects/components/temp/{If-server-0a213ea232e0225d5a8ecb012ad418136b86fbe7.ts → If-server-ab409671b5d4c918047394a37b6e96b0e17063ca.ts} +6 -9
  325. package/test/effects/components/temp/{NestedIf-client-bfd381672c51febbe2f101f19afd5f6ff570ce7e.ts → NestedIf-client-702deffd158f219c5da4199b563a62cd54385a7f.ts} +22 -25
  326. package/test/effects/components/temp/{NestedIf-server-6089abc72d6208e64d1818ddb624ad5c3f236afa.ts → NestedIf-server-40f6bfd99a7e75fb4f9f874adab77e5eed97c629.ts} +6 -9
  327. package/test/effects/for-effect.test.ts +15 -15
  328. package/test/effects/if-effect.test.ts +7 -7
  329. package/test/effects/nested-if-effect.test.ts +11 -11
  330. package/test/events/components/Increment.torp +1 -1
  331. package/test/events/components/output/Increment-client.ts +7 -12
  332. package/test/events/components/output/Increment-server.ts +9 -11
  333. package/test/events/components/temp/{Increment-client-db2fd3376f12b186a4276eac470bf10b7bf2da19.ts → Increment-client-84c09711baf098c82ee226598ba7a36913616b75.ts} +7 -12
  334. package/test/events/components/temp/{Increment-server-062b9757192b84e5a6e247aa44e1e7887129293d.ts → Increment-server-e77c6b207023ac60e033ca542ee82473ef017f74.ts} +9 -11
  335. package/test/events/events.test.ts +9 -15
  336. package/test/for/components/output/For-client.ts +19 -19
  337. package/test/for/components/output/For-server.ts +7 -10
  338. package/test/for/components/output/ForEscape-client.ts +23 -37
  339. package/test/for/components/output/ForEscape-server.ts +8 -10
  340. package/test/for/components/output/ForIn-client.ts +19 -20
  341. package/test/for/components/output/ForIn-server.ts +7 -10
  342. package/test/for/components/output/ForOf-client.ts +19 -20
  343. package/test/for/components/output/ForOf-server.ts +7 -10
  344. package/test/for/components/temp/{For-client-8ecb11a2f34c81f837bffdb88598da06d8c19158.ts → For-client-2f6b4b81670b0ba31b01176b4f61ebf321e945bb.ts} +19 -19
  345. package/test/for/components/temp/{For-server-082c156a9f047995bc55f9477295d8e3262614f5.ts → For-server-5144615e53d23da5062b7169e847e0777d068738.ts} +7 -10
  346. package/test/for/components/temp/{ForEscape-client-14e7648415d967cdc57bf03d176eb6b6dddf0fb2.ts → ForEscape-client-8d0fcc940851e687173b6a9129c3d83e0fc771ef.ts} +23 -37
  347. package/test/for/components/temp/{ForEscape-server-2db43ff8397ddbb114b5bff3d88a63728184a811.ts → ForEscape-server-b359d8d3e12bac290855a1b27387ddd963562c08.ts} +8 -10
  348. package/test/for/components/temp/{ForIn-client-25cd67f246a50fc6d926a8c66aa5e106f19578a8.ts → ForIn-client-fa0614a1c7b8aa6e8819ed91a518479fd80453ae.ts} +19 -20
  349. package/test/for/components/temp/{ForIn-server-fda7a21cbb8a7ad69c48d2a8533cc13fa98d54b6.ts → ForIn-server-5fd472a7a5a5c00b384791780025a0c3bdc9c41b.ts} +7 -10
  350. package/test/for/components/temp/{ForOf-client-8f6598ccd9dc7b79aff6167b90ccea94f3029c84.ts → ForOf-client-11006c4239d9018363e582dc5b54b50477d652e7.ts} +19 -20
  351. package/test/for/components/temp/{ForOf-server-cd2b01507304e25c34030755b915f56785375de8.ts → ForOf-server-197b29abcb60412c6c8670b2d4a2e644b650faa3.ts} +7 -10
  352. package/test/for/for-escape.test.ts +2 -2
  353. package/test/for/for-in.test.ts +4 -4
  354. package/test/for/for-of.test.ts +4 -4
  355. package/test/for/for-with-key.test.ts +28 -36
  356. package/test/for/for.test.ts +2 -2
  357. package/test/function/components/Function.torp +0 -1
  358. package/test/function/components/output/Function-client.ts +6 -12
  359. package/test/function/components/output/Function-server.ts +8 -11
  360. package/test/function/components/temp/{Function-client-2068eb8ae35b3157b8eda79addde6afd9f4d7006.ts → Function-client-ec5fe7d599d6099bdfab78c2a0c8edf77a23cd9b.ts} +6 -12
  361. package/test/function/components/temp/{Function-server-4b66a728f6f1b170d678313238bdc9158356511e.ts → Function-server-fee2402b0ef4ad4c3d2779afb190ce46dbedf737.ts} +8 -11
  362. package/test/function/function.test.ts +7 -13
  363. package/test/helpers.ts +44 -9
  364. package/test/html/components/output/Html-client.ts +6 -12
  365. package/test/html/components/output/Html-server.ts +7 -10
  366. package/test/html/components/temp/{Html-client-93b0d666142c64cd651dc37f14f12884b2f30612.ts → Html-client-82ff34dcdcbdf4be1112bcb1baac8027cdc32de7.ts} +6 -12
  367. package/test/html/components/temp/Html-server-14fa484fc2a617bc0f24432a2e37e7a756f87a0f.ts +15 -0
  368. package/test/html/html.test.ts +2 -2
  369. package/test/hydrateComponent.ts +2 -2
  370. package/test/if/components/output/IfAfterIf-client.ts +21 -23
  371. package/test/if/components/output/IfAfterIf-server.ts +6 -9
  372. package/test/if/components/output/IfElse-client.ts +14 -18
  373. package/test/if/components/output/IfElse-server.ts +6 -9
  374. package/test/if/components/output/IfElseIf-client.ts +16 -22
  375. package/test/if/components/output/IfElseIf-server.ts +6 -9
  376. package/test/if/components/output/IfFalse-client.ts +13 -16
  377. package/test/if/components/output/IfFalse-server.ts +6 -9
  378. package/test/if/components/output/IfNested-client.ts +23 -27
  379. package/test/if/components/output/IfNested-server.ts +6 -9
  380. package/test/if/components/temp/{IfAfterIf-client-6b4833209a01cdad18d453839e9c8b5dad2a8510.ts → IfAfterIf-client-c1cfd21a6ace4945703ba8f46aada923a60265d9.ts} +21 -23
  381. package/test/if/components/temp/{IfAfterIf-server-3e6a3beab27821c3e53290ee72eca811814aad38.ts → IfAfterIf-server-26c9a638e3933a53208bfe66f8f37067511a28aa.ts} +6 -9
  382. package/test/if/components/temp/{IfElse-client-f7eb8e5fe5e62975a2442c4b0ff3344fa44cef69.ts → IfElse-client-06dfcacd3a5225dcb0947587bcd4fae9ec3d3c1e.ts} +14 -18
  383. package/test/if/components/temp/{IfElse-server-1b5006dfad695f257c7453a79bde3944898fbf6d.ts → IfElse-server-146b3779f85ea02a281c6042dddefa5372945fb0.ts} +6 -9
  384. package/test/if/components/temp/{IfElseIf-client-734f1b2d9133294573770c1ffc2b589273498532.ts → IfElseIf-client-26df9a728c9cb712d5ac0235b4c99885f25545b8.ts} +16 -22
  385. package/test/if/components/temp/{IfElseIf-server-11c65065e9e5640ad65cd0c37af07f1e57c4f49c.ts → IfElseIf-server-f094cdb45bc0fcd3144ca493346994b2445d2ff0.ts} +6 -9
  386. package/test/if/components/temp/{IfFalse-client-8a388cb48b4a5879d491f57d1f2551834de1e72e.ts → IfFalse-client-de6fc8e9eb222153608490e6d172e9aae9000aa1.ts} +13 -16
  387. package/test/if/components/temp/{IfFalse-server-40d07bc07e5edffd7386fb6016cd025b98175219.ts → IfFalse-server-b6d3446fd7d4219d5cb3c1009dec76870e73fa30.ts} +6 -9
  388. package/test/if/components/temp/IfNested-client-eefdd449fa700b2e7326bc72df8b32ddcadf9d21.ts +88 -0
  389. package/test/if/components/temp/IfNested-server-7a53e4969b5dfe5073f05edbcb1b986f718bb939.ts +29 -0
  390. package/test/if/else-if-true.test.ts +4 -4
  391. package/test/if/else-true.test.ts +4 -4
  392. package/test/if/if-after-if.test.ts +4 -4
  393. package/test/if/if-else-false.test.ts +4 -4
  394. package/test/if/if-else-true.test.ts +4 -4
  395. package/test/if/if-false.test.ts +4 -4
  396. package/test/if/if-nested.test.ts +4 -4
  397. package/test/imports/commented-imports.ts +1 -1
  398. package/test/imports/imports.ts +1 -1
  399. package/test/imports/multiple-imports.ts +1 -1
  400. package/test/mount/components/Mount.torp +1 -1
  401. package/test/mount/components/output/Mount-client.ts +6 -11
  402. package/test/mount/components/output/Mount-server.ts +10 -13
  403. package/test/mount/components/temp/{Mount-client-efa5c34fbfc7646e114a1a58f0814b6dff33e566.ts → Mount-client-29896228d7d0ef3692a9d13065c1bbfbe3198cdc.ts} +6 -11
  404. package/test/mount/components/temp/Mount-server-1c5aef88b8cc25b8e02851c0aa7fedffea987224.ts +22 -0
  405. package/test/mount/mount.test.ts +4 -4
  406. package/test/mountComponent.ts +1 -1
  407. package/test/on-mount/components/OnMount.torp +1 -1
  408. package/test/on-mount/components/output/OnMount-client.ts +5 -10
  409. package/test/on-mount/components/output/OnMount-server.ts +7 -10
  410. package/test/on-mount/components/temp/{OnMount-client-4bb62e8bf1fcd67798598fe03bf5455a57f0a6be.ts → OnMount-client-038f8c6bbcf0278406909d6ba5394f311924fda9.ts} +5 -10
  411. package/test/on-mount/components/temp/OnMount-server-ff4afcd976fd907c539e763d7887b38c61737be7.ts +15 -0
  412. package/test/on-mount/on-mount.test.ts +6 -6
  413. package/test/party/1-declare-state.test.ts +2 -2
  414. package/test/party/10-on-mount.test.ts +2 -2
  415. package/test/party/12-props.test.ts +2 -2
  416. package/test/party/13-emit-to-parent.test.ts +2 -2
  417. package/test/party/14-slot.test.ts +2 -2
  418. package/test/party/15-slot-fallback.test.ts +2 -2
  419. package/test/party/16-context.test.ts +2 -2
  420. package/test/party/17-input-text.test.ts +2 -2
  421. package/test/party/18-input-checkbox.test.ts +2 -2
  422. package/test/party/19-input-radio.test.ts +2 -2
  423. package/test/party/2-update-state.test.ts +2 -2
  424. package/test/party/20-input-select.test.ts +2 -2
  425. package/test/party/3-computed-state.test.ts +2 -2
  426. package/test/party/4-minimal-template.test.ts +2 -2
  427. package/test/party/5-styling.test.ts +2 -2
  428. package/test/party/6-loop.test.ts +2 -2
  429. package/test/party/7-event-click.test.ts +2 -2
  430. package/test/party/8-dom-ref.test.ts +4 -4
  431. package/test/party/9-conditional.test.ts +2 -2
  432. package/test/party/components/FunnyButton.torp +2 -2
  433. package/test/party/components/InputFocused.torp +1 -1
  434. package/test/party/components/UserProfile.torp +1 -1
  435. package/test/party/components/UserProfileApp.torp +1 -1
  436. package/test/party/components/UserProfileContextApp.torp +1 -1
  437. package/test/party/components/output/AnswerButton-client.ts +4 -10
  438. package/test/party/components/output/AnswerButton-server.ts +6 -9
  439. package/test/party/components/output/AnswerButtonApp-client.ts +6 -11
  440. package/test/party/components/output/AnswerButtonApp-server.ts +8 -10
  441. package/test/party/components/output/ColorSelect-client.ts +22 -26
  442. package/test/party/components/output/ColorSelect-server.ts +8 -10
  443. package/test/party/components/output/Colors-client.ts +19 -20
  444. package/test/party/components/output/Colors-server.ts +8 -10
  445. package/test/party/components/output/Counter-client.ts +7 -12
  446. package/test/party/components/output/Counter-server.ts +8 -10
  447. package/test/party/components/output/CssStyle-client.ts +5 -10
  448. package/test/party/components/output/CssStyle-server.ts +10 -10
  449. package/test/party/components/output/DoubleCount-client.ts +6 -11
  450. package/test/party/components/output/DoubleCount-server.ts +8 -10
  451. package/test/party/components/output/FunnyButton-client.ts +4 -10
  452. package/test/party/components/output/FunnyButton-server.ts +6 -8
  453. package/test/party/components/output/FunnyButtonApp-client.ts +7 -14
  454. package/test/party/components/output/FunnyButtonApp-server.ts +8 -12
  455. package/test/party/components/output/HelloWorld-client.ts +5 -10
  456. package/test/party/components/output/HelloWorld-server.ts +7 -10
  457. package/test/party/components/output/InputFocused-client.ts +6 -11
  458. package/test/party/components/output/InputFocused-server.ts +10 -13
  459. package/test/party/components/output/InputHello-client.ts +8 -13
  460. package/test/party/components/output/InputHello-server.ts +8 -10
  461. package/test/party/components/output/IsAvailable-client.ts +8 -13
  462. package/test/party/components/output/IsAvailable-server.ts +8 -10
  463. package/test/party/components/output/Name-client.ts +6 -11
  464. package/test/party/components/output/Name-server.ts +8 -10
  465. package/test/party/components/output/NameUpdate-client.ts +6 -11
  466. package/test/party/components/output/NameUpdate-server.ts +8 -10
  467. package/test/party/components/output/PageTitle-client.ts +6 -11
  468. package/test/party/components/output/PageTitle-server.ts +8 -10
  469. package/test/party/components/output/PickPill-client.ts +8 -13
  470. package/test/party/components/output/PickPill-server.ts +8 -10
  471. package/test/party/components/output/Time-client.ts +6 -11
  472. package/test/party/components/output/Time-server.ts +8 -10
  473. package/test/party/components/output/TrafficLight-client.ts +18 -26
  474. package/test/party/components/output/TrafficLight-server.ts +8 -10
  475. package/test/party/components/output/UserProfile-client.ts +6 -18
  476. package/test/party/components/output/UserProfile-server.ts +7 -10
  477. package/test/party/components/output/UserProfileApp-client.ts +6 -11
  478. package/test/party/components/output/UserProfileApp-server.ts +8 -11
  479. package/test/party/components/output/UserProfileContext-client.ts +7 -13
  480. package/test/party/components/output/UserProfileContext-server.ts +8 -9
  481. package/test/party/components/output/UserProfileContextApp-client.ts +7 -12
  482. package/test/party/components/output/UserProfileContextApp-server.ts +9 -11
  483. package/test/party/components/temp/{AnswerButton-client-890e28879c132eea21260eb82af832afc6a48507.ts → AnswerButton-client-df895c3e7a88fd7ede9f951fc9de2ed75c27a5cb.ts} +4 -10
  484. package/test/party/components/temp/{AnswerButton-server-01ffab9f6f92073640df2cf2cb5473407d82b24f.ts → AnswerButton-server-fa0e78b504a78d0e2dcd33a9a589f62e5b99c675.ts} +6 -9
  485. package/test/party/components/temp/{AnswerButtonApp-client-295a835cadf7e7ccec608f84ed01865dd8c73954.ts → AnswerButtonApp-client-4c05ef36b1c0e93370fb463643419928717fa701.ts} +6 -11
  486. package/test/party/components/temp/{AnswerButtonApp-server-b458692868307e6e08ad3deed9c2db542c28dee0.ts → AnswerButtonApp-server-062042691dabfa1a20d4088030c0b5bee1cd0be2.ts} +8 -10
  487. package/test/party/components/temp/{ColorSelect-client-5f74d3b38193a0c9b22317598cdbf2f56754ca2b.ts → ColorSelect-client-5db8d1b0924361fdb5efb867c14491402ec9668c.ts} +22 -26
  488. package/test/party/components/temp/{ColorSelect-server-cf0b1b533948a558e1705d9a7cca3c0b6ae8d315.ts → ColorSelect-server-8722b440cb7266a18a71b35c166be6dd6566fcec.ts} +8 -10
  489. package/test/party/components/temp/{Colors-client-806316cc5e01e8235c0b025cad34b1068addf5a5.ts → Colors-client-6d3ac693e85bdda50b8742282915997063a32769.ts} +19 -20
  490. package/test/party/components/temp/{Colors-server-b050714bfe752b88a99f6498f1b5c13abe6b56a5.ts → Colors-server-16572e26a55214c26683ce560b058b55d8c92685.ts} +8 -10
  491. package/test/party/components/temp/{Counter-client-006caeda8766cb17a161da0c6f58f006f8f16e8b.ts → Counter-client-0c604a107c5b84cdbf725f307dfe29d34f8a2cc8.ts} +7 -12
  492. package/test/party/components/temp/{Counter-server-931d36d8e4bcd114047bbfec8aa5f2fac0c2ce1e.ts → Counter-server-db18f030a6e02ab17708d6a17eb3e590965090e5.ts} +8 -10
  493. package/test/party/components/temp/{CssStyle-client-6ec06cbc4b34344234d289f6c4a9e427efff85a7.ts → CssStyle-client-2a642d115ad52539f97c051c34687b8d6d12b324.ts} +5 -10
  494. package/test/party/components/temp/CssStyle-server-0477c5497707dd9071105e5ec9045a3a7d1dd62d.ts +18 -0
  495. package/test/party/components/temp/{DoubleCount-client-6d4cf1e54368e3c6082e37c1e04f9ecde90624f2.ts → DoubleCount-client-8c85c3af12c471ea23bb702bbf5a3e240420f3ec.ts} +6 -11
  496. package/test/party/components/temp/{DoubleCount-server-8c013a97a08562deb6ad0f35e6e337203b0ddde9.ts → DoubleCount-server-5b04bb31269f9c8de6c25be427f57ab6e3d4dc19.ts} +8 -10
  497. package/test/party/components/temp/{FunnyButton-client-6d5662018a5a5529fd52ee82f7c88975b5c3355a.ts → FunnyButton-client-850dd3da0fa803c1bce5c53e88fcd2d48d279eb8.ts} +4 -10
  498. package/test/party/components/temp/{FunnyButton-server-3fd55a1e1dc71c183a6cea68e4c4693c988b7533.ts → FunnyButton-server-3df0067ec21476e7525d1c3de7099431c976f73b.ts} +6 -8
  499. package/test/party/components/temp/{FunnyButtonApp-client-1f2258b8488469d4704366bc49f5c171d8a854ae.ts → FunnyButtonApp-client-00300846d11a3d0a5a620c2ade87b935b7f0ebf8.ts} +7 -14
  500. package/test/party/components/temp/{FunnyButtonApp-server-6463d1c57adf61450d1415f0d76da4561ca3e798.ts → FunnyButtonApp-server-4cd83d2c71615fe4c905920e5ea836df4ed66c5e.ts} +8 -12
  501. package/test/party/components/temp/{HelloWorld-client-7344e400b4adb975fa8263d3081a06de0a793e57.ts → HelloWorld-client-890b311ad9a3919379acdc1d52807ea36cc9f489.ts} +5 -10
  502. package/test/party/components/temp/HelloWorld-server-e2c800d7f5cd3e772a9e5bbd7af58b00611b79d5.ts +15 -0
  503. package/test/party/components/temp/{InputFocused-client-20d755aea7dfaf1fd5e42dcade8fb7867f59ef28.ts → InputFocused-client-03527f9ceb52f66ac53887dbc884a0aa83bb7a23.ts} +6 -11
  504. package/test/party/components/temp/InputFocused-server-544a76ea64852474a3c7bf450b6fac36cbaf21c6.ts +23 -0
  505. package/test/party/components/temp/{InputHello-client-496d26bdeb6a168c4242e45f35d22e6ecbd211b9.ts → InputHello-client-f65a477624975b68b7aaa3614fbf198d4476480f.ts} +8 -13
  506. package/test/party/components/temp/{InputHello-server-a5fb3e0d8766c19d177a1f4d43d421c7da1b92ab.ts → InputHello-server-102d293d6c0fff7feda50d64bbd607df7d09393a.ts} +8 -10
  507. package/test/party/components/temp/{IsAvailable-client-491b92b5e21ebe1bbab47b2e422c35fb996b55e1.ts → IsAvailable-client-8767437fd92cf79713de5b00828e1502e38d79e3.ts} +8 -13
  508. package/test/party/components/temp/{IsAvailable-server-c0da3c019ef13617d2ab51353eb3360ddaae4189.ts → IsAvailable-server-2cf1e0d72df4bc194b5e00a1b415ba99f488525f.ts} +8 -10
  509. package/test/party/components/temp/{Name-client-62f0dab96aff130e81882099d7c0a111ba99cebd.ts → Name-client-08903a8df8bdff5288170d3c89658192956587a9.ts} +6 -11
  510. package/test/party/components/temp/{Name-server-0306b0c622d71323eb79a6b466d900380a0944f3.ts → Name-server-7d95226078ef4cd13b0ac6c5365ccbe4b8b9c0a2.ts} +8 -10
  511. package/test/party/components/temp/{NameUpdate-client-6ceb440637c99142bafcf8512eabf831c113b8c7.ts → NameUpdate-client-d65b2476c3721d2efddf9385a61433e2a2dd0d72.ts} +6 -11
  512. package/test/party/components/temp/{NameUpdate-server-a54ea11dc6b8f0b55d29ad29163cf27b9aa6ec40.ts → NameUpdate-server-9c901f861eddfde14440c2591dfafb2b1fb1993d.ts} +8 -10
  513. package/test/party/components/temp/{PageTitle-client-75fea3a37fb1213bc13f56160bb6779486b2e6e9.ts → PageTitle-client-c006df9a3e662488a1db089de53fd485c6b923e4.ts} +6 -11
  514. package/test/party/components/temp/{PageTitle-server-8b34f9af760ab39e20a60e10ee3185e70d92e42b.ts → PageTitle-server-f4676ec6feccaa03b89d52835c6635536eb885ef.ts} +8 -10
  515. package/test/party/components/temp/{PickPill-client-a1f48b5c28db87eb57f0ac1f6b4370e4b2952de7.ts → PickPill-client-af8357daf3f6633c7f451d0bddd72fefe786d5c3.ts} +8 -13
  516. package/test/party/components/temp/{PickPill-server-9596fdb8ff254cb4e1b99b714f3c5e8ea8aaa308.ts → PickPill-server-d8fb383bc25f7d26bb0153088a2ee19c765fc66b.ts} +8 -10
  517. package/test/party/components/temp/{Time-client-2013f274e90b45be3138727f2298305e1951131f.ts → Time-client-94380d45de7275a5cec98e5f58c15b74b13e9c3e.ts} +6 -11
  518. package/test/party/components/temp/{Time-server-da1cafe72c0f9a6dbf15a04dfa7282ae5187c101.ts → Time-server-3f71a83b6fd357b57e85344281454ee793024e7b.ts} +8 -10
  519. package/test/party/components/temp/{TrafficLight-client-d04c95686ec0ad8a9c54710773945e9904224d5e.ts → TrafficLight-client-12b20962b4146ef08fe0c37597441533c7699408.ts} +18 -26
  520. package/test/party/components/temp/{TrafficLight-server-6c0f66cdabfc7239b99665c3f7087462ee302e8a.ts → TrafficLight-server-625a774075633be88822f4d345e1421a77aba98a.ts} +8 -10
  521. package/test/party/components/temp/{UserProfile-client-a59466813b208664f35e6e394858c3d61e040644.ts → UserProfile-client-e5330b2c96bd8b225cb6291bc8b1d9f35c93307e.ts} +6 -18
  522. package/test/party/components/temp/{UserProfile-server-b10ec192e03dc818fe66dbd4aad14200e817e596.ts → UserProfile-server-6e89fd7f8ade8e8d64630e5da8361d7a1fa2ff5a.ts} +7 -10
  523. package/test/party/components/temp/{UserProfileApp-client-e0bfaa4ffed336c8be4b23dd81800501980c9938.ts → UserProfileApp-client-4c86e4f9a0d042f4f4811868f0146e872b17353c.ts} +6 -11
  524. package/test/party/components/temp/{UserProfileApp-server-4b308db466a80bcacd190aa71f86cf4d2b6f2873.ts → UserProfileApp-server-754d269451abf8fd04e519b8edde33d25c73ce28.ts} +8 -11
  525. package/test/party/components/temp/{UserProfileContext-client-7ef27199bd35b55b3dadd876174a2ef4b602b63f.ts → UserProfileContext-client-424131db3cc89ae4babe127b9108ffc5696c9e1d.ts} +7 -13
  526. package/test/party/components/temp/{UserProfileContext-server-df958e4fc2de2242c556ffa61ddb58aa395de50c.ts → UserProfileContext-server-e72e8ccee2703cce216f2368a1555d64acc2654c.ts} +8 -9
  527. package/test/party/components/temp/{UserProfileContextApp-client-b3ef357f481dfb940e1c726690d57567fde2dc23.ts → UserProfileContextApp-client-5f94a7ccf3e4542ea40d8046ad75eeb21005c55f.ts} +7 -12
  528. package/test/party/components/temp/{UserProfileContextApp-server-f8fe2b88db3d0dfa4dafd300006b25123cb8e3fb.ts → UserProfileContextApp-server-267ac147e0e59e53aeb6741a8cd0f3ef1216051f.ts} +9 -11
  529. package/test/preact.test.ts +2560 -0
  530. package/test/props/components/output/Reactive-client.ts +8 -17
  531. package/test/props/components/output/Reactive-server.ts +12 -16
  532. package/test/props/components/temp/{Reactive-client-21a24e3b0a76140567db8a01975317c9c0e0ad5a.ts → Reactive-client-9bc3643675fc563f96efb00bc3c4b843ba4b7f2e.ts} +8 -17
  533. package/test/props/components/temp/{Reactive-server-b6e37b5d3488ea74a260ca972906bfab30dde486.ts → Reactive-server-8a84d0fc1f375d91438d840ca9753e32d86366ac.ts} +12 -16
  534. package/test/props/reactive.test.ts +2 -2
  535. package/test/replace/components/output/Replace-client.ts +6 -14
  536. package/test/replace/components/output/Replace-server.ts +7 -9
  537. package/test/replace/components/temp/{Replace-client-aee34e2e40c6f4380b61e9c7c8df9af1897f06cc.ts → Replace-client-6f21ff3eb303bd5488d211087dc35fcf998d4e2a.ts} +6 -14
  538. package/test/replace/components/temp/{Replace-server-3521251fa687ce42af3128d22b129fe1ec6ed411.ts → Replace-server-b536cf6d792ae73aaa7f5ea04cda6858a07479f9.ts} +7 -9
  539. package/test/replace/replace.test.ts +2 -2
  540. package/test/script/script-with-comments.test.ts +14 -19
  541. package/test/script/script-with-strings.test.ts +14 -19
  542. package/test/script/script.test.ts +14 -19
  543. package/test/slots/basic-slot.test.ts +2 -2
  544. package/test/slots/components/Article.torp +3 -3
  545. package/test/slots/components/Basic.torp +1 -1
  546. package/test/slots/components/Header.torp +2 -2
  547. package/test/slots/components/Let.torp +3 -3
  548. package/test/slots/components/List.torp +1 -1
  549. package/test/slots/components/Named.torp +3 -3
  550. package/test/slots/components/Unused.torp +1 -1
  551. package/test/slots/components/output/Article-client.ts +4 -8
  552. package/test/slots/components/output/Article-server.ts +6 -8
  553. package/test/slots/components/output/Basic-client.ts +7 -14
  554. package/test/slots/components/output/Basic-server.ts +8 -12
  555. package/test/slots/components/output/Header-client.ts +4 -9
  556. package/test/slots/components/output/Header-server.ts +6 -8
  557. package/test/slots/components/output/Let-client.ts +7 -14
  558. package/test/slots/components/output/Let-server.ts +7 -11
  559. package/test/slots/components/output/List-client.ts +17 -16
  560. package/test/slots/components/output/List-server.ts +6 -8
  561. package/test/slots/components/output/Named-client.ts +9 -19
  562. package/test/slots/components/output/Named-server.ts +9 -14
  563. package/test/slots/components/output/Unused-client.ts +5 -10
  564. package/test/slots/components/output/Unused-server.ts +7 -10
  565. package/test/slots/components/temp/{Article-client-3f2da4b399f94ae8c329489e1ba0ba98196df9c5.ts → Article-client-0b674ee98ae7f85021bfb8b912f28e3c4b35e877.ts} +4 -8
  566. package/test/slots/components/temp/{Article-server-50fa458663f115c0e80a3a2846de4607d8748ecb.ts → Article-server-3db1718b70b86b456514b54ae17a597d07cc0ca9.ts} +6 -8
  567. package/test/slots/components/temp/{Basic-client-a2c4bf685d4b75d0395da427b7754c2a58374dd7.ts → Basic-client-196f7f0244dca0baeffb547eec55c089a108283d.ts} +7 -14
  568. package/test/slots/components/temp/{Basic-server-593e0ecbc8abbc90e8b06198698d244d110d97e2.ts → Basic-server-a22e6ec236b84e09d4d59c7abc4f0b22bf60f22c.ts} +8 -12
  569. package/test/slots/components/temp/{Header-client-d7418b71df5db36d58a73e909233863a6c03678b.ts → Header-client-e5c784d60469523803898ee4d8b85fb82a7b7c0b.ts} +4 -9
  570. package/test/slots/components/temp/{Header-server-d0f27afc4db322e605491e8f508e83f625e8dc38.ts → Header-server-3182d735443d9cf6a0cc7891919cc2c08df2aa8f.ts} +6 -8
  571. package/test/slots/components/temp/{Let-client-913f9dede92b68a3f4a13d1f56f99b3e08e01efe.ts → Let-client-645271fcd63cd500001c75740b22b1b387330657.ts} +7 -14
  572. package/test/slots/components/temp/{Let-server-f3c026e37c11628914c495083752d8cf285b2e85.ts → Let-server-b6d6e2012155c7533a0eb4ee0aaf00157a7d4493.ts} +7 -11
  573. package/test/slots/components/temp/{List-client-6bc2d267a8b2028a14b12b2c70feb7c6a47d6d64.ts → List-client-ee6047ac396dc0b6fce5e38af51c38093fae83a2.ts} +17 -16
  574. package/test/slots/components/temp/{List-server-8d9c174fc4b3b232f3a9fd2f59843481f023d913.ts → List-server-1ee246e864cdb31bb8f52cf4424b6ef0e9b41cf1.ts} +6 -8
  575. package/test/slots/components/temp/{Named-client-f6e7a984759ce8f50bc52dcf56f6f06cab925a80.ts → Named-client-559988562c5de1ae6017d2ad6de063f4363064b6.ts} +9 -19
  576. package/test/slots/components/temp/{Named-server-ac8d47db82d9a387c8baeee59b975bb810bad168.ts → Named-server-f2ce3d301e916ea38901a92185c25512b11d42d4.ts} +9 -14
  577. package/test/slots/components/temp/{Unused-client-ea0a096aa7a1c958f3bf807f35340b96f8a025ee.ts → Unused-client-52d1828bd28ebf7046a2e948a369563c0ea83b98.ts} +5 -10
  578. package/test/slots/components/temp/{Unused-server-1da99efc50ef70be0d9a0e5499353a17dc666936.ts → Unused-server-f5248f5cd4616c65eaf27c67385f13ed671accad.ts} +7 -10
  579. package/test/slots/let-slot.test.ts +4 -4
  580. package/test/slots/named-slot.test.ts +2 -2
  581. package/test/slots/unused-slot.test.ts +2 -2
  582. package/test/source-maps/components/Source.torp +19 -0
  583. package/test/source-maps/components/output/Source-client.ts +63 -0
  584. package/test/source-maps/components/output/Source-server.ts +26 -0
  585. package/test/source-maps/components/temp/Source-client-ae8c4811ff658c13ee8c9b9e0e53fff1b83b178b.ts +63 -0
  586. package/test/source-maps/components/temp/Source-server-70b20214c52b8820f450324943e8a1ffb0a72d5e.ts +26 -0
  587. package/test/source-maps/parse.test.ts +62 -0
  588. package/test/special-component/components/BigTitle.torp +1 -1
  589. package/test/special-component/components/Component.torp +2 -2
  590. package/test/special-component/components/SmallTitle.torp +1 -1
  591. package/test/special-component/components/output/BigTitle-client.ts +4 -8
  592. package/test/special-component/components/output/BigTitle-server.ts +6 -8
  593. package/test/special-component/components/output/Component-client.ts +7 -15
  594. package/test/special-component/components/output/Component-server.ts +8 -11
  595. package/test/special-component/components/output/SmallTitle-client.ts +4 -8
  596. package/test/special-component/components/output/SmallTitle-server.ts +6 -8
  597. package/test/special-component/components/temp/{BigTitle-client-c4bd66406d55ce83ab4491c4114d563055e1c275.ts → BigTitle-client-cb3055f809aaf17bd1fa82748d039ac3730a8d44.ts} +4 -8
  598. package/test/special-component/components/temp/{BigTitle-server-34af54c15cf575163c1ff8e63978cf5257f2347c.ts → BigTitle-server-fef9d1e1deacfde2be4469c2e63a801b2e518dff.ts} +6 -8
  599. package/test/special-component/components/temp/{Component-client-c39c66cf5274445bb863fd759e0ef223613a9f3a.ts → Component-client-0eb9553b52acce2dfa564242295a4c57a38bd540.ts} +7 -15
  600. package/test/special-component/components/temp/{Component-server-ca4a2192477db4a32ad12f1a6a14d673717b0f7b.ts → Component-server-9d0fddeff790bfb2b6cfbcd2edf677837f5b8120.ts} +8 -11
  601. package/test/special-component/components/temp/{SmallTitle-client-e4b3e51243ca4f1efca21ac0f957b81e8bc93167.ts → SmallTitle-client-5a65b233be29395e9650f57d9708a33de1279af3.ts} +4 -8
  602. package/test/special-component/components/temp/{SmallTitle-server-6c9aabb9139356397e04612b4dd9d849f871a280.ts → SmallTitle-server-11f8b6b3c613716d6a5371883a9b55434bb43ad5.ts} +6 -8
  603. package/test/special-component/special-component.test.ts +2 -2
  604. package/test/special-element/components/Element.torp +2 -2
  605. package/test/special-element/components/output/Element-client.ts +5 -11
  606. package/test/special-element/components/output/Element-server.ts +7 -10
  607. package/test/special-element/components/temp/{Element-client-c5701ed44faa4ec8ae558505063684a84cada3f2.ts → Element-client-745e610fbd5c652d327c8ac349d49d5ee4c8d9ea.ts} +5 -11
  608. package/test/special-element/components/temp/Element-server-7aef6d0ed7369aa2418183519c8320e0409a5641.ts +15 -0
  609. package/test/special-element/special-element.test.ts +2 -2
  610. package/test/special-head/components/Head.torp +2 -4
  611. package/test/special-head/components/output/Head-client.ts +8 -23
  612. package/test/special-head/components/output/Head-server.ts +5 -11
  613. package/test/special-head/components/temp/Head-client-bbbb5e712247ee41ca65a7ffd457987de5e99b3e.ts +19 -0
  614. package/test/special-head/components/temp/Head-server-c3de2e6b56aabc095380370d8bf93ae3bc7c10d9.ts +12 -0
  615. package/test/special-head/special-head.test.ts +2 -2
  616. package/test/special-self/components/output/Self-client.ts +13 -17
  617. package/test/special-self/components/output/Self-server.ts +6 -9
  618. package/test/special-self/components/temp/{Self-client-883ca81e0e44df56f2290698e8d6b9955434a2ad.ts → Self-client-dfe57df69e3677e94f7b5f3657c82602054ef19e.ts} +13 -17
  619. package/test/special-self/components/temp/{Self-server-69dac409fc984db7db97df8a30c5de6794f25655.ts → Self-server-5d135dab2b6fd4ba7fe3f56768f0725607d36bd9.ts} +6 -9
  620. package/test/special-self/special-self.test.ts +2 -2
  621. package/test/style/components/Style.torp +1 -1
  622. package/test/style/components/output/Style-client.ts +6 -12
  623. package/test/style/components/output/Style-server.ts +7 -10
  624. package/test/style/components/temp/{Style-client-ea018338497095f270308b2e73cfe6344721c6eb.ts → Style-client-9491a5aff97f118df542f976d7f7a21e7cc88c62.ts} +6 -12
  625. package/test/style/components/temp/{Style-server-99ff9867ee067760a463a8282773b2eb09aa14f7.ts → Style-server-8b8cbe1868cab30d9e34dda52921652768ada1db.ts} +7 -10
  626. package/test/style/parse.test.ts +507 -193
  627. package/test/style/style.test.ts +2 -2
  628. package/test/svg/components/Shape.torp +1 -1
  629. package/test/svg/components/output/Shape-client.ts +23 -23
  630. package/test/svg/components/output/Shape-server.ts +8 -10
  631. package/test/svg/components/temp/{Shape-client-052ea7838de07222602834de58968a3f89e6ea56.ts → Shape-client-4cc148d8b70d3750d2982360aad76b74d194b60e.ts} +23 -23
  632. package/test/svg/components/temp/Shape-server-76aaef570e067031ff39635ffe37626364c2200a.ts +23 -0
  633. package/test/svg/svg.test.ts +4 -4
  634. package/test/switch/components/output/Switch-client.ts +16 -22
  635. package/test/switch/components/output/Switch-server.ts +6 -9
  636. package/test/switch/components/temp/{Switch-client-1482e2da8fe144d3e867dfad4618e0f364b91b49.ts → Switch-client-5fc00f4d41300dc7587b113d8e53a102beca7558.ts} +16 -22
  637. package/test/switch/components/temp/{Switch-server-d709eb7a418752dd4203a8f824b78c5f308c8f47.ts → Switch-server-440f7e852145b79656c0023ddc776e4d1d077d2a.ts} +6 -9
  638. package/test/switch/switch-values.test.ts +4 -4
  639. package/test/template/basic-file.test.ts +61 -88
  640. package/test/template/empty-file.test.ts +7 -12
  641. package/test/template/errors.test.ts +64 -34
  642. package/test/text/components/output/Text-client.ts +5 -13
  643. package/test/text/components/output/Text-server.ts +6 -9
  644. package/test/text/components/temp/{Text-client-ca2d5402358fba0df1db2353eed304b0dedb7971.ts → Text-client-6c3be8a1a31a13eff86ce8b5330829cd15b07fab.ts} +5 -13
  645. package/test/text/components/temp/{Text-server-9df4606b85f044ea2b38660e799988461edacb27.ts → Text-server-ac34d47e755aa39b2d89cb44f854450c3db1ddff.ts} +6 -9
  646. package/test/text/text.test.ts +4 -4
  647. package/test/watch-array/ArrayState.ts +2 -2
  648. package/test/watch-array/array-all-functions-unkeyed.test.ts +16 -14
  649. package/test/watch-array/array-all-functions.test.ts +16 -14
  650. package/test/watch-array/array-empty.test.ts +8 -6
  651. package/test/watch-array/array-entries.test.ts +11 -9
  652. package/test/watch-array/array-indexes.test.ts +11 -9
  653. package/test/watch-array/array-pop.test.ts +10 -8
  654. package/test/watch-array/array-push.test.ts +10 -8
  655. package/test/watch-array/array-reassign.test.ts +11 -9
  656. package/test/watch-array/array-reverse.test.ts +10 -8
  657. package/test/watch-array/array-set-object.test.ts +10 -8
  658. package/test/watch-array/array-set-property.test.ts +10 -8
  659. package/test/watch-array/array-shift.test.ts +10 -8
  660. package/test/watch-array/array-sort.test.ts +11 -9
  661. package/test/watch-array/array-splice-add.test.ts +10 -8
  662. package/test/watch-array/array-splice-delete-all.test.ts +10 -8
  663. package/test/watch-array/array-splice-delete-and-add.test.ts +10 -8
  664. package/test/watch-array/array-splice-delete-end.test.ts +10 -8
  665. package/test/watch-array/array-splice-delete.test.ts +10 -8
  666. package/test/watch-array/array-swap.test.ts +10 -8
  667. package/test/watch-array/array-unshift.test.ts +10 -8
  668. package/test/watch-array/array-update-assignment.test.ts +10 -8
  669. package/test/watch-array/components/output/Array-client.ts +19 -21
  670. package/test/watch-array/components/output/Array-server.ts +7 -10
  671. package/test/watch-array/components/output/ArrayEntries-client.ts +21 -23
  672. package/test/watch-array/components/output/ArrayEntries-server.ts +7 -10
  673. package/test/watch-array/components/output/ArrayIndexes-client.ts +19 -21
  674. package/test/watch-array/components/output/ArrayIndexes-server.ts +7 -10
  675. package/test/watch-array/components/output/ArrayUnkeyed-client.ts +19 -20
  676. package/test/watch-array/components/output/ArrayUnkeyed-server.ts +7 -10
  677. package/test/watch-array/components/temp/{Array-client-d048f5c224a3f2e2729878dbb069ce15ca913e12.ts → Array-client-552f81452d33fe6dc715c9f6bb7986f06475d761.ts} +19 -21
  678. package/test/watch-array/components/temp/{Array-server-48864ed3b67cae2bcedb216865776e44cc3a1dc2.ts → Array-server-16921ef3289ecba5881fcd59e3353fbfad60d4d3.ts} +7 -10
  679. package/test/watch-array/components/temp/{ArrayEntries-client-741607b276718f5deb520e3b657dbf6abbb8081c.ts → ArrayEntries-client-736755fba2492e74812ff9c905202810de54e15a.ts} +21 -23
  680. package/test/watch-array/components/temp/{ArrayEntries-server-401a989fd5f3a093d5d1a8ef1d4fd9d5107a6be3.ts → ArrayEntries-server-ac150fc9fd18c1d9dab9b329f7703e190f5c2725.ts} +7 -10
  681. package/test/watch-array/components/temp/{ArrayIndexes-client-8ab14b254ef67dafad5228c9ec1906eb3b3babef.ts → ArrayIndexes-client-a496328fa92ffca676ab8893013a0cfec1734ad1.ts} +19 -21
  682. package/test/watch-array/components/temp/{ArrayIndexes-server-35c31a8a4597da68d39cf20bd6b90137695514de.ts → ArrayIndexes-server-e8fc511c0d27796dc1733f8cc63377f7a4511f76.ts} +7 -10
  683. package/test/watch-array/components/temp/{ArrayUnkeyed-client-9684aba82757748815b94c04bf3f8d1f98332535.ts → ArrayUnkeyed-client-5a2c5cb1fecba52653f7f35cfd07627682930c15.ts} +19 -20
  684. package/test/watch-array/components/temp/{ArrayUnkeyed-server-19f195f0cf00760c520ac4c55aef474c8eae4c41.ts → ArrayUnkeyed-server-916a5cdb7c36d95946cafdc69dca782291af24e4.ts} +7 -10
  685. package/test/watch-object/components/output/Watched-client.ts +5 -11
  686. package/test/watch-object/components/output/Watched-server.ts +6 -9
  687. package/test/watch-object/components/temp/{Watched-client-ddba353c5a94f5a874e19d6d4cc6271a04e915c0.ts → Watched-client-1f0409aa6e2c425d0319a23caec7d10ad313d579.ts} +5 -11
  688. package/test/watch-object/components/temp/{Watched-server-e8e8c15b9fb5dda4051a289e9cd75d71078b9e95.ts → Watched-server-156afd257b562162d86417f2bbf5afe1bf57de06.ts} +6 -9
  689. package/test/watch-object/watch-object.test.ts +11 -9
  690. package/{tsup.config.ts → tsdown.config.ts} +1 -3
  691. package/dist/Component-CysAnHpO.d.cts +0 -8
  692. package/dist/Component-CysAnHpO.d.ts +0 -8
  693. package/dist/ServerSlotRender-BMGG0yq3.d.cts +0 -15
  694. package/dist/ServerSlotRender-BMGG0yq3.d.ts +0 -15
  695. package/dist/chunk-EGRHWZRV.js +0 -1
  696. package/dist/chunk-EGRHWZRV.js.map +0 -1
  697. package/dist/chunk-XNO4YEJ3.js +0 -64
  698. package/dist/chunk-XNO4YEJ3.js.map +0 -1
  699. package/dist/metafile-cjs.json +0 -1
  700. package/dist/metafile-esm.json +0 -1
  701. package/src/compile/build/client/buildHeadNode.ts +0 -17
  702. package/src/compile/build/utils/isReactiveAttribute.ts +0 -16
  703. package/src/compile/types/nodes/isControlNode.ts +0 -6
  704. package/src/compile/types/nodes/isElementNode.ts +0 -6
  705. package/src/compile/types/nodes/isParentNode.ts +0 -6
  706. package/src/compile/types/nodes/isSpecialNode.ts +0 -6
  707. package/src/compile/types/nodes/isTextNode.ts +0 -6
  708. package/src/debug/printHtml.ts +0 -25
  709. package/src/types/ProxyPropData.ts +0 -11
  710. package/src/watch/removeEffect.ts +0 -34
  711. package/test/bench/components/temp/Bench-client-4e18421473e97bac7c24b17ba14751ce14dd187e.ts +0 -414
  712. package/test/bench/components/temp/Bench-server-4648921af9bc146718d55a7e9fc288b47a57dfda.ts +0 -142
  713. package/test/component/components/temp/Header-server-91088d2a5a543287bfdf1a24d92b66db6ccd294d.ts +0 -19
  714. package/test/console/components/temp/Console-server-7bc7f568e9c3626dca1bdafcb23186c2dbc59199.ts +0 -18
  715. package/test/dummy/components/temp/ProfilePreview-client-e57ca1ac502e0ddcb3ef376dd5ef27add70090d1.ts +0 -327
  716. package/test/dummy/components/temp/ProfilePreview-server-9d3d0f8b4f80f634db6ba97d037ab07de004b4d3.ts +0 -56
  717. package/test/html/components/temp/Html-server-4f73a2b0c5cd9b82666a99ec6a217c758d435008.ts +0 -18
  718. package/test/mount/components/temp/Mount-server-8564e4e0886ea754dfedf9a4a5fd82f0484c1d83.ts +0 -25
  719. package/test/on-mount/components/temp/OnMount-server-2ff035e067926fadc284030075aa5da69a05cf31.ts +0 -18
  720. package/test/party/components/temp/CssStyle-server-fa4bad3c82930632730e3b6b9f0e9193cab6f777.ts +0 -18
  721. package/test/party/components/temp/HelloWorld-server-50dd4393d55ecd33d5b7684c4f9ed41dfa0ceb5d.ts +0 -18
  722. package/test/party/components/temp/InputFocused-server-7b062b0dd7686ccc389c3c1a17f37e9a9bb19da9.ts +0 -26
  723. package/test/special-element/components/temp/Element-server-011a942cc147900d8e074c084297d8e81f05aa27.ts +0 -18
  724. package/test/special-head/components/temp/Head-client-967d6ea24d46308af586c7553f4658412d94716c.ts +0 -34
  725. package/test/special-head/components/temp/Head-server-7cf8212c95197ed6320b47483524d8b1b3e5ae68.ts +0 -18
  726. package/test/svg/components/temp/Shape-server-4ef7e80f09d3d4c930055d0a25184c48507e51de.ts +0 -25
  727. /package/src/compile/{build/utils → utils}/isFullyReactive.ts +0 -0
  728. /package/src/compile/{build/utils → utils}/isReactive.ts +0 -0
@@ -1,12 +1,10 @@
1
- import { type ElementNode } from "../../types/nodes/ElementNode";
2
- import isSpecialNode from "../../types/nodes/isSpecialNode";
1
+ import type ElementNode from "../../types/nodes/ElementNode";
3
2
  import Builder from "../../utils/Builder";
4
- import trimMatched from "../../utils/trimMatched";
3
+ import isSpecialNode from "../../utils/isSpecialNode";
5
4
  import trimQuotes from "../../utils/trimQuotes";
6
- import isFullyReactive from "../utils/isFullyReactive";
7
- import isReactive from "../utils/isReactive";
8
5
  import nextVarName from "../utils/nextVarName";
9
- import { type BuildStatus } from "./BuildStatus";
6
+ import type BuildStatus from "./BuildStatus";
7
+ import addMappedText from "./addMappedText";
10
8
  import buildAddFragment from "./buildAddFragment";
11
9
  import buildFragment from "./buildFragment";
12
10
  import buildNode from "./buildNode";
@@ -21,6 +19,8 @@ export default function buildComponentNode(
21
19
  b.append("");
22
20
  b.append("/* @component */");
23
21
 
22
+ // TODO: map params to props
23
+
24
24
  // Props
25
25
  const componentHasProps = node.attributes.length || root;
26
26
  const propsName = componentHasProps ? nextVarName("props", status) : "undefined";
@@ -32,54 +32,31 @@ export default function buildComponentNode(
32
32
  status.imports.add("$watch");
33
33
  b.append(`const ${propsName}: any = $watch({});`);
34
34
 
35
- for (let { name, value } of node.attributes) {
36
- if (name === "self" && node.tagName === ":component") {
35
+ for (let { name, value, reactive, fullyReactive } of node.attributes) {
36
+ if (name === "self" && node.tagName === "@component") {
37
37
  // Ignore this special attribute
38
- } else if (name.startsWith("{") && name.endsWith("}")) {
39
- // It's a shortcut attribute
40
- // It could be e.g. {width} or it could be {$state.width}, but
41
- // in either case we set the value of the width property
42
- name = name.substring(1, name.length - 1);
43
- const propName = name.split(".").at(-1);
44
- buildRun("setProp", `${propsName}["${propName}"] = ${name};`, status, b);
45
- } else if (name.startsWith("&") && value != null && isFullyReactive(value)) {
38
+ } else if (name.startsWith("&") && value != null && fullyReactive) {
46
39
  // It's a bound property
47
40
  // Add two $runs -- one to update the props, and one to update the value
48
41
  // The component author will need to make sure $props.x is updated
49
42
  // TODO: Maybe allow adding a Bindable<T> type to the $props interface??
50
43
  // e.g. Component($props: { text: Bindable<string> })
51
44
  name = name.substring(1);
52
- value = value.substring(1, value.length - 1);
53
45
  buildRun("setProp", `${propsName}["${name}"] = ${value};`, status, b);
54
46
  buildRun("setBinding", `${value} = ${propsName}["${name}"];`, status, b);
55
- } else if ((name === "class" || name === ":class") && value != null) {
56
- // NOTE: :class is obsolete, but let's keep it for a version or two
47
+ } else if (name === "class" && value != null) {
57
48
  status.imports.add("t_class");
58
- if (isFullyReactive(value)) {
59
- value = value.substring(1, value.length - 1);
60
- }
61
49
  const params = [value];
62
50
  if (node.scopeStyles) {
63
51
  params.push(`"torp-${status.styleHash}"`);
64
52
  }
65
53
  buildRun("setClasses", `${propsName}["class"] = t_class(${params.join(", ")});`, status, b);
66
- } else if ((name === "style" || name === ":style") && value != null) {
67
- // NOTE: :style is obsolete, but let's keep it for a version or two
54
+ } else if (name === "style" && value != null) {
68
55
  status.imports.add("t_style");
69
- if (isFullyReactive(value)) {
70
- value = value.substring(1, value.length - 1);
71
- }
72
56
  buildRun("setStyles", `${propsName}["style"] = t_style(${value});`, status, b);
73
57
  } else if (value != null) {
74
- let fullyReactive = isFullyReactive(value);
75
- let partlyReactive = isReactive(value);
76
- if (fullyReactive) {
77
- value = value.substring(1, value.length - 1);
78
- } else if (partlyReactive) {
79
- value = `\`${trimQuotes(value).replaceAll("{", "${")}\``;
80
- }
81
58
  const setProp = `${propsName}["${name}"] = ${value};`;
82
- if (fullyReactive || partlyReactive) {
59
+ if (reactive) {
83
60
  buildRun("setProp", setProp, status, b);
84
61
  } else {
85
62
  b.append(setProp);
@@ -109,14 +86,14 @@ export default function buildComponentNode(
109
86
  if (componentHasSlots) {
110
87
  b.append(`const ${slotsName}: Record<string, SlotRender> = {};`);
111
88
  for (let slot of node.children) {
112
- if (isSpecialNode(slot)) {
89
+ if (isSpecialNode(slot) && slot.tagName === "fill") {
113
90
  const nameAttribute = slot.attributes.find((a) => a.name === "name");
114
91
  const slotName = nameAttribute?.value ? trimQuotes(nameAttribute.value) : "_";
115
92
  const slotParams = [
116
93
  "$sparent: ParentNode",
117
94
  "$sanchor: Node | null",
118
- "//@ts-ignore\n$sprops?: Record<PropertyKey, any>",
119
- "//@ts-ignore\n$context?: Record<PropertyKey, any>",
95
+ `${slot.hasSlotProps ? "$sprops" : "_$sprops?"}: Record<PropertyKey, any>`,
96
+ "// @ts-ignore\n$context?: Record<PropertyKey, any>",
120
97
  ];
121
98
  b.append(`${slotsName}["${slotName}"] = (\n${slotParams.join(",\n")}\n) => {`);
122
99
 
@@ -147,13 +124,14 @@ export default function buildComponentNode(
147
124
  }
148
125
 
149
126
  let componentName = node.tagName;
150
- if (componentName === ":component") {
127
+ if (componentName === "@component") {
151
128
  let selfAttribute = node.attributes.find((a) => a.name === "self");
152
- if (selfAttribute && selfAttribute.value) {
153
- componentName = trimMatched(selfAttribute.value, "{", "}");
129
+ if (selfAttribute && selfAttribute.value && selfAttribute.fullyReactive) {
130
+ componentName = selfAttribute.value;
154
131
  }
155
132
  }
156
133
 
157
- b.append(`${componentName}(${renderParams});`);
134
+ addMappedText("", `${componentName}(${renderParams})`, ";", node.range, status, b);
135
+
158
136
  b.append("");
159
137
  }
@@ -1,6 +1,6 @@
1
- import { type ControlNode } from "../../types/nodes/ControlNode";
1
+ import type ControlNode from "../../types/nodes/ControlNode";
2
2
  import Builder from "../../utils/Builder";
3
- import { type BuildStatus } from "./BuildStatus";
3
+ import type BuildStatus from "./BuildStatus";
4
4
  import buildAwaitNode from "./buildAwaitNode";
5
5
  import buildForNode from "./buildForNode";
6
6
  import buildHtmlNode from "./buildHtmlNode";
@@ -68,17 +68,18 @@ export default function buildControlNode(node: ControlNode, status: BuildStatus,
68
68
  case "@const":
69
69
  case "@console":
70
70
  case "@debugger": {
71
- buildScriptNode(node, b);
71
+ buildScriptNode(node, status, b);
72
72
  break;
73
73
  }
74
74
  case "@function":
75
75
  case "@async function": {
76
76
  b.append("");
77
- buildScriptNode(node, b);
77
+ buildScriptNode(node, status, b);
78
78
  b.append("");
79
79
  break;
80
80
  }
81
81
  default: {
82
+ // eslint-disable-next-line restrict-template-expressions
82
83
  throw new Error(`Invalid operation: ${node.operation}`);
83
84
  }
84
85
  }
@@ -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
 
@@ -137,24 +146,7 @@ function buildHeadNode(node: ElementNode, status: BuildStatus, b: Builder) {
137
146
  const t_headel = document.createElement("${node.tagName}");
138
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_headel.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
-
155
- status.imports.add("t_attribute");
156
- buildRun("setAttribute", `t_attribute(t_headel, "${name}", ${value});`, status, b);
157
- } else if (value != null) {
149
+ if (value != null) {
158
150
  status.imports.add("t_attribute");
159
151
  b.append(`t_attribute(t_headel, "${name}", ${value});`);
160
152
  }
@@ -169,75 +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
- } else if (name === "class" || name === ":class") {
221
- // NOTE: :class is obsolete, but let's keep it for a version or two
199
+ } else if (name === "class") {
222
200
  status.imports.add("t_class");
223
201
  const params = [value];
224
202
  if (node.scopeStyles) {
225
203
  params.push(`"torp-${status.styleHash}"`);
226
204
  }
227
- buildRun("setClasses", `${varName}.className = t_class(${params.join(", ")});`, status, b);
228
- } 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") {
229
216
  status.imports.add("t_style");
230
- 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
+ );
231
225
  } else if (name.includes("-")) {
232
226
  // Handle data-, aria- etc
233
227
  status.imports.add("t_attribute");
234
- buildRun("setDataAttribute", `t_attribute(${varName}, "${name}", ${value});`, status, b);
228
+ stashRun(fragment, `t_attribute(${varName}, "${name}", `, value, ");", range, status);
235
229
  // NOTE: dataset seems to be a tiny bit slower?
236
230
  //const propName = name.substring(name.indexOf("-"));
237
231
  //buildRun("setDataAttribute", `${varName}.dataset.${propName} = ${value};`, status, b);
238
232
  } else {
239
233
  status.imports.add("t_attribute");
240
- buildRun("setAttribute", `t_attribute(${varName}, "${name}", ${value});`, status, b);
234
+ stashRun(fragment, `t_attribute(${varName}, "${name}", `, value, ");", range, status);
241
235
  }
242
236
  }
243
237
  }
@@ -319,6 +313,7 @@ function buildEventAttribute(
319
313
  varName: string,
320
314
  name: string,
321
315
  value: string,
316
+ range: SourceRange,
322
317
  status: BuildStatus,
323
318
  b: Builder,
324
319
  ) {
@@ -327,7 +322,7 @@ function buildEventAttribute(
327
322
  // Add an event listener, after the fragment has been added
328
323
  const eventName = name.substring(2);
329
324
  status.imports.add("t_event");
330
- b.append(`t_event(${varName}, "${eventName}", ${value});`);
325
+ addMappedText(`t_event(${varName}, "${eventName}", `, value, `);`, range, status, b);
331
326
  }
332
327
 
333
328
  function buildTransitionAttribute(
@@ -348,14 +343,14 @@ function buildTransitionAttribute(
348
343
  let entryVarName = nextVarName("trans_in", status);
349
344
  let exitVarName = nextVarName("trans_out", status);
350
345
 
351
- if (name === ":transition") {
346
+ if (name === "transition") {
352
347
  b.append(`const ${entryVarName} = ${getAnimationDetails(value)};`);
353
348
  b.append(`const ${exitVarName} = ${entryVarName};`);
354
349
  b.append(`t_animate(${varName}, ${entryVarName}, ${exitVarName});`);
355
- } else if (name === ":transition-in") {
356
- let outAttribute = node.attributes.find((a) => a.name === ":transition-out");
357
- if (outAttribute && outAttribute.value) {
358
- 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;
359
354
  b.append(`const ${entryVarName} = ${getAnimationDetails(value)};`);
360
355
  b.append(`const ${exitVarName} = ${getAnimationDetails(outValue)};`);
361
356
  b.append(`t_animate(${varName}, ${entryVarName}, ${exitVarName});`);
@@ -363,10 +358,10 @@ function buildTransitionAttribute(
363
358
  b.append(`const ${entryVarName} = ${getAnimationDetails(value)};`);
364
359
  b.append(`t_animate(${varName}, ${entryVarName});`);
365
360
  }
366
- } else if (name === ":transition-out") {
367
- 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");
368
363
  if (inAttribute) {
369
- // This has already been handled with :transition-in, above
364
+ // This has already been handled with transition-in, above
370
365
  return;
371
366
  } else {
372
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
  }