@torpor/view 0.1.4 → 0.1.6

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 (359) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/compile.cjs +324 -270
  3. package/dist/compile.cjs.map +1 -1
  4. package/dist/compile.js +324 -270
  5. package/dist/compile.js.map +1 -1
  6. package/dist/index.cjs +145 -97
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.cts +72 -29
  9. package/dist/index.d.ts +72 -29
  10. package/dist/index.js +142 -97
  11. package/dist/index.js.map +1 -1
  12. package/dist/metafile-cjs.json +1 -1
  13. package/dist/metafile-esm.json +1 -1
  14. package/package.json +3 -3
  15. package/src/compile/build/client/buildAddFragment.ts +5 -1
  16. package/src/compile/build/client/buildCode.ts +2 -0
  17. package/src/compile/build/client/buildComponentNode.ts +1 -0
  18. package/src/compile/build/client/buildControlNode.ts +2 -1
  19. package/src/compile/build/client/buildFragment.ts +47 -21
  20. package/src/compile/build/client/buildRootNode.ts +5 -1
  21. package/src/compile/build/client/buildStyles.ts +18 -14
  22. package/src/compile/build/server/buildServerComponentNode.ts +2 -4
  23. package/src/compile/build/server/buildServerControlNode.ts +2 -1
  24. package/src/compile/build/server/buildServerForNode.ts +2 -2
  25. package/src/compile/build/server/buildServerIfNode.ts +4 -0
  26. package/src/compile/build/server/buildServerRootNode.ts +3 -1
  27. package/src/compile/build/server/buildServerSwitchNode.ts +4 -0
  28. package/src/compile/parse/ParseStatus.ts +2 -1
  29. package/src/compile/parse/parseCode.ts +5 -8
  30. package/src/compile/parse/parseControl.ts +19 -6
  31. package/src/compile/parse/parseMarkup.ts +15 -8
  32. package/src/compile/types/comments.ts +2 -2
  33. package/src/compile/types/nodes/OperationType.ts +2 -1
  34. package/src/debug/printNode.ts +54 -36
  35. package/src/index.ts +5 -1
  36. package/src/render/addFragment.ts +5 -4
  37. package/src/render/clearLayoutSlot.ts +6 -0
  38. package/src/render/clearRange.ts +1 -1
  39. package/src/render/hydrationMarkers.ts +2 -2
  40. package/src/render/isComment.ts +2 -2
  41. package/src/render/isText.ts +3 -0
  42. package/src/render/nodeAnchor.ts +62 -27
  43. package/src/render/nodeCheckHydrationBreak.ts +25 -0
  44. package/src/render/nodeChild.ts +12 -7
  45. package/src/render/nodeNext.ts +16 -25
  46. package/src/render/nodeRoot.ts +26 -9
  47. package/src/render/nodeSkip.ts +20 -0
  48. package/src/render/runLayoutSlot.ts +26 -0
  49. package/test/attributes/components/output/Attributes-client.ts +7 -4
  50. package/test/attributes/components/output/Attributes-server.ts +1 -1
  51. package/test/attributes/components/temp/{Attributes-client-7b8f7b9996208e8d2d0a12d4f4a40a73df63d9d8.ts → Attributes-client-4620a40099e57a7fdaab895b204d85881f6dbfb7.ts} +7 -4
  52. package/test/attributes/components/temp/{Attributes-server-a1289434a5a801be1d63bfc85b621579e06452f0.ts → Attributes-server-80f9f58fd6cb30df11867386d4f0b15b44401ebe.ts} +1 -1
  53. package/test/await/components/output/Await-client.ts +18 -15
  54. package/test/await/components/output/Await-server.ts +2 -2
  55. package/test/await/components/temp/{Await-client-a7bf000bf2b59a3d5251a0fa18ec79890a52a547.ts → Await-client-5d753441145fbac078393af24cccadb208453d69.ts} +18 -15
  56. package/test/await/components/temp/{Await-server-06cd2a3d8c7eb5bef026ffe2fb11793becf547c2.ts → Await-server-f02f39af3bb3344ca6b18a1d64d60b21913fba31.ts} +2 -2
  57. package/test/bind/components/output/BindComponent-client.ts +18 -12
  58. package/test/bind/components/output/BindComponent-server.ts +3 -3
  59. package/test/bind/components/output/BindText-client.ts +10 -8
  60. package/test/bind/components/output/BindText-server.ts +1 -1
  61. package/test/bind/components/temp/{BindComponent-client-a645474748485a878871c062ad69e6bcf35e6550.ts → BindComponent-client-aaeb489ce72b664c6372f8764f7e665994a751a7.ts} +18 -12
  62. package/test/bind/components/temp/{BindComponent-server-c557e7aa944517ab87415b8bb35b41b0034254e7.ts → BindComponent-server-c630dee0bee6cea49d5eb8bea04979a737bb8f5e.ts} +3 -3
  63. package/test/bind/components/temp/{BindText-client-d5f7d721df55020ef337f660e5d278eb80fcc330.ts → BindText-client-134676d616abbad6b8a7ec48df0a2e38cbfe3b87.ts} +10 -8
  64. package/test/bind/components/temp/{BindText-server-4b94cdf60d9c9a2088306c4407e2ae30785169b0.ts → BindText-server-807a1ddcb68410b30429cb088d2e204ed6f585b2.ts} +1 -1
  65. package/test/buildHtml.ts +1 -1
  66. package/test/buildOutputFiles.ts +8 -1
  67. package/test/child-component/components/output/ParentChild-client.ts +17 -11
  68. package/test/child-component/components/output/ParentChild-server.ts +3 -3
  69. package/test/child-component/components/temp/{ParentChild-client-eaefb0cbfd251badab3c57ae2037d973f785a1b8.ts → ParentChild-client-6cf4d156ea46338815270faf67f56472f1a4ccd4.ts} +17 -11
  70. package/test/child-component/components/temp/{ParentChild-server-8f2fc556f87867e6e3393e2e9e6d696cda107b69.ts → ParentChild-server-a34a8b5acf1c00d1990f8ab7433599506265a45a.ts} +3 -3
  71. package/test/class/class.test.ts +1 -1
  72. package/test/class/components/output/Class-client.ts +27 -20
  73. package/test/class/components/output/Class-server.ts +4 -4
  74. package/test/class/components/temp/{Class-client-12f09850a5f8c27de6cf94c23a2b17aadbf66f01.ts → Class-client-0405eff591f854c04e5728df0479014ef91efc61.ts} +27 -20
  75. package/test/class/components/temp/Class-server-daf30ffb1bacf9877e3385dc9a3eede61c972329.ts +40 -0
  76. package/test/component/components/output/Component-client.ts +9 -4
  77. package/test/component/components/output/Component-server.ts +2 -0
  78. package/test/component/components/output/Header-client.ts +7 -5
  79. package/test/component/components/output/Header-server.ts +1 -1
  80. package/test/component/components/temp/{Component-client-a2fb6f30fc340bac909b64cb4f5ac68cde376de3.ts → Component-client-355b42e5f7411c399e2f50fba3580f4f7c3fa943.ts} +9 -4
  81. package/test/component/components/temp/{Component-server-40be12cd528ccf768f1ad40ef2a435ad2b2a2d71.ts → Component-server-81012827b18e82d787d194a0a1a9d4e07311a336.ts} +2 -0
  82. package/test/component/components/temp/{Header-client-75cb4aa868295ac168c16ba7b275fbb5ab9256f9.ts → Header-client-903877003b220272b0cb5bfd62d7d748ad46c477.ts} +7 -5
  83. package/test/component/components/temp/{Header-server-f73307874bec34a95dcd152d7f83a3ad13a0f4ac.ts → Header-server-6969d20782edd8f99d4b5c5b7b5563ce26e6dc2d.ts} +1 -1
  84. package/test/console/components/output/Console-client.ts +6 -4
  85. package/test/console/components/output/Console-server.ts +1 -1
  86. package/test/console/components/temp/{Console-client-2f206752ce59e59fba9bb91263b4102fd515951e.ts → Console-client-4fa3b3679cee88bf6151185438e36d14010944b7.ts} +6 -4
  87. package/test/console/components/temp/{Console-server-b4b15f7a0d1d2b50d87bad4870e1b8d368707c04.ts → Console-server-cfb2208b130d5f15403df19ae8341aaa1c9ad33a.ts} +1 -1
  88. package/test/const/components/output/Const-client.ts +7 -5
  89. package/test/const/components/output/Const-server.ts +2 -2
  90. package/test/const/components/temp/{Const-client-536e8fdf18d6f4f7f23b2789de2330ecf62d7865.ts → Const-client-7dff2758c14bfbd208e301a702ae1781e6daba1b.ts} +7 -5
  91. package/test/const/components/temp/{Const-server-8f84096c03a19296425aee5d243af0734b70ca61.ts → Const-server-1cf6ed84f72d3b15b318b80937b8de1f2c0f188c.ts} +2 -2
  92. package/test/effects/components/output/For-client.ts +12 -9
  93. package/test/effects/components/output/For-server.ts +2 -2
  94. package/test/effects/components/output/If-client.ts +14 -11
  95. package/test/effects/components/output/If-server.ts +4 -4
  96. package/test/effects/components/output/NestedIf-client.ts +17 -14
  97. package/test/effects/components/output/NestedIf-server.ts +5 -5
  98. package/test/effects/components/temp/{For-client-d8d4e4424ec3238fe9f79cc907d673612b63bcdf.ts → For-client-fbe876286c0f99b8391ff0c06c92b58bf580218f.ts} +12 -9
  99. package/test/effects/components/temp/{For-server-1f853c161bea31a1a5b11b00d7a021b70c778066.ts → For-server-efe60939d185315f4c9b567b6867c6d5af14d9aa.ts} +2 -2
  100. package/test/effects/components/temp/{If-client-bb06988422395321bf298a75bf5563c6f750f776.ts → If-client-420a093f13de6ce07d2d4bc94705901809096cd9.ts} +14 -11
  101. package/test/effects/components/temp/{If-server-97e3cbe059306fc607985dcd1b187df3a278d979.ts → If-server-2424b7b812d350d7eb8ff9afb1146807217320cd.ts} +4 -4
  102. package/test/effects/components/temp/{NestedIf-client-dc880c1ec92e716ec730dfa0bac0e3d9265bdf27.ts → NestedIf-client-af88ec303b1a4184263bb370ef5b1f1e8aca8efc.ts} +17 -14
  103. package/test/effects/components/temp/{NestedIf-server-9f199a33bae5d5fe34920d6a419937537a2b18dc.ts → NestedIf-server-ab260586490cb5afed31377d2226bb5a1fc30e2d.ts} +5 -5
  104. package/test/events/components/output/Increment-client.ts +9 -7
  105. package/test/events/components/output/Increment-server.ts +1 -1
  106. package/test/events/components/temp/{Increment-client-41bd7bc91aac8c7a9bf73527c8f7ba1794b09ab3.ts → Increment-client-1b5f9e231c5c4fc059d77ca0da632719283e5ac4.ts} +9 -7
  107. package/test/events/components/temp/{Increment-server-bbf5ac93c4f73382c4262ae42f4cc836bcb8ac1b.ts → Increment-server-b084f43082e2ec31dbe5f9edc1cb6e37e4c8df9d.ts} +1 -1
  108. package/test/for/components/output/For-client.ts +12 -9
  109. package/test/for/components/output/For-server.ts +2 -2
  110. package/test/for/components/output/ForEscape-client.ts +16 -13
  111. package/test/for/components/output/ForEscape-server.ts +2 -2
  112. package/test/for/components/output/ForIn-client.ts +12 -9
  113. package/test/for/components/output/ForIn-server.ts +2 -2
  114. package/test/for/components/output/ForOf-client.ts +12 -9
  115. package/test/for/components/output/ForOf-server.ts +2 -2
  116. package/test/for/components/temp/{For-client-0be5994e98c07a3455cd8a18a2b1b8ef3605aba6.ts → For-client-421f2a6ca501d135c0aef9d1aaea25de0e1c00e4.ts} +12 -9
  117. package/test/for/components/temp/{For-server-8490f15d02ae76b218feb7fa266415f44b2a4ab9.ts → For-server-3b6ead39728c79206203c519a215390d07d80f7e.ts} +2 -2
  118. package/test/for/components/temp/{ForEscape-client-a973a145e28b32ca55fe3dca53d885fcf5e11c37.ts → ForEscape-client-72879c80f7544c2edfc224095740bdea20e1e12d.ts} +16 -13
  119. package/test/for/components/temp/{ForEscape-server-375744ca1e10e5c8ed7dd6420beef72107e55568.ts → ForEscape-server-ed906c8cd593a0b467073ada415734de31dc38d9.ts} +2 -2
  120. package/test/for/components/temp/{ForIn-client-5cc25a98e10826e8477fe6f931d5d2bbd0b13c9f.ts → ForIn-client-e12c45d7f53e50ea3ed456110138dfb95f6930e0.ts} +12 -9
  121. package/test/for/components/temp/{ForIn-server-d68e82c048f7e0f1525f74724b91e5cd01cdc6a6.ts → ForIn-server-c8f13304a2ba235e091685256909fbfa50bdd5fd.ts} +2 -2
  122. package/test/for/components/temp/{ForOf-client-70b0d59ff72f1cffe2e0ac8523dd7ccdca4ffe39.ts → ForOf-client-422d67d6c046f1d1de655719d061ea29f67d23f7.ts} +12 -9
  123. package/test/for/components/temp/{ForOf-server-ac08d98dd249a3e64a366b8488450e6ce0d18def.ts → ForOf-server-8c2c33ca6595bf0a5e952ca9971e595e18446623.ts} +2 -2
  124. package/test/function/components/output/Function-client.ts +8 -6
  125. package/test/function/components/output/Function-server.ts +2 -2
  126. package/test/function/components/temp/{Function-client-b3ff029a821d47e1a2249a52dfb681f4b2e96232.ts → Function-client-4e2168306756eb927d5ed4b673334b357eecaa74.ts} +8 -6
  127. package/test/function/components/temp/{Function-server-2d32fbe35260c0948a135f287f131c5520e8bce7.ts → Function-server-2b19d0cd881c31dc67132107c6e322a18701c318.ts} +2 -2
  128. package/test/html/components/output/Html-client.ts +9 -6
  129. package/test/html/components/output/Html-server.ts +1 -1
  130. package/test/html/components/temp/{Html-client-766ba4a63f28f929ca16cd7d1640fe92f9b30792.ts → Html-client-2f309b06c3304a952d249057dec058a514d52874.ts} +9 -6
  131. package/test/html/components/temp/{Html-server-0a41da8b81bf833f331f3becdbac14be7ddc6c8c.ts → Html-server-d159b0ef04b1f65ae4f9e05a7b44b21e7aa14cf9.ts} +1 -1
  132. package/test/hydrateComponent.ts +1 -0
  133. package/test/if/components/IfAfterIf.torp +10 -12
  134. package/test/if/components/IfElse.torp +12 -11
  135. package/test/if/components/IfElseIf.torp +13 -15
  136. package/test/if/components/IfFalse.torp +10 -0
  137. package/test/if/components/IfNested.torp +11 -13
  138. package/test/if/components/output/IfAfterIf-client.ts +14 -13
  139. package/test/if/components/output/IfAfterIf-server.ts +4 -4
  140. package/test/if/components/output/IfElse-client.ts +14 -13
  141. package/test/if/components/output/IfElse-server.ts +4 -4
  142. package/test/if/components/output/IfElseIf-client.ts +16 -15
  143. package/test/if/components/output/IfElseIf-server.ts +5 -5
  144. package/test/if/components/output/IfFalse-client.ts +56 -0
  145. package/test/if/components/output/IfFalse-server.ts +21 -0
  146. package/test/if/components/output/IfNested-client.ts +19 -18
  147. package/test/if/components/output/IfNested-server.ts +6 -6
  148. package/test/if/components/temp/{IfAfterIf-client-49b6b8c42b0a351561f9f5f22c2ae2e844bf3b58.ts → IfAfterIf-client-5ddfc6dc62ffbc9a518220458403008e88e69e6c.ts} +14 -13
  149. package/test/if/components/temp/{IfAfterIf-server-eb67cf1fcf6711882266219940a47bd4a66497f3.ts → IfAfterIf-server-a5005147e7902d1a5a048c9fe07feb9804eb6560.ts} +4 -4
  150. package/test/if/components/temp/{IfElse-client-e236d4a2e99262ff09675bc519c07e2826c0d70b.ts → IfElse-client-815057ffb2d9a1861bb316d445321947ddedbb65.ts} +14 -13
  151. package/test/if/components/temp/{IfElse-server-c077e0e30f4d2adec41ab779198362d21542d055.ts → IfElse-server-80d93e5fc4ceba7a645f7081fa11b177dbe730d0.ts} +4 -4
  152. package/test/if/components/temp/{IfElseIf-client-b92106861f0c7ec3d09e3a42bb93d8f5bd4e3bdf.ts → IfElseIf-client-a7b16a8af24fdd3caa7b9e8e56d4bdb6ad3ab855.ts} +16 -15
  153. package/test/if/components/temp/{IfElseIf-server-67991eee3f56dc687cda600511c31396438e0a77.ts → IfElseIf-server-ddc7348705d51b02538301e0aa704130748992cf.ts} +5 -5
  154. package/test/if/components/temp/IfFalse-client-6507ff8abd4842b78da27d8a9d4964abc1d9b727.ts +56 -0
  155. package/test/if/components/temp/IfFalse-server-e8385013cfdde584b43cc0d71311cbb417859116.ts +21 -0
  156. package/test/if/components/temp/{IfNested-client-f563ac1b16a2280e457557281c4925ed447a9cd7.ts → IfNested-client-e09f8af625b4e0b3e9eb210440f8edda720f0d53.ts} +19 -18
  157. package/test/if/components/temp/{IfNested-server-0a2a9643324ab73b02b310cad61ba87dab146ab2.ts → IfNested-server-285a5d8e0e0fcc8ccf421df152fdc00811782835.ts} +6 -6
  158. package/test/if/if-else-false.test.ts +54 -0
  159. package/test/if/{if-true.test.ts → if-else-true.test.ts} +5 -2
  160. package/test/if/if-false.test.ts +1 -4
  161. package/test/importComponent.ts +4 -0
  162. package/test/mount/components/output/Mount-client.ts +7 -4
  163. package/test/mount/components/output/Mount-server.ts +1 -1
  164. package/test/mount/components/temp/{Mount-client-36dbc95a61345a1b7dcf07e6b0c998af2afca691.ts → Mount-client-efa5c34fbfc7646e114a1a58f0814b6dff33e566.ts} +7 -4
  165. package/test/mount/components/temp/{Mount-server-8bef1924a731f3db63cb827be3938fec685e53af.ts → Mount-server-62f94f276c2d6c9048765a77b575cb21146917f1.ts} +1 -1
  166. package/test/on-mount/components/output/OnMount-client.ts +7 -4
  167. package/test/on-mount/components/output/OnMount-server.ts +1 -1
  168. package/test/on-mount/components/temp/{OnMount-client-21708a638d2939ee8b017f5dc819cee4748bde87.ts → OnMount-client-4bb62e8bf1fcd67798598fe03bf5455a57f0a6be.ts} +7 -4
  169. package/test/on-mount/components/temp/{OnMount-server-1758fe2b16972fca7d4b9bb49d9256fce99780eb.ts → OnMount-server-c531f718eb68754ea6c3001d5db9c07c511e434c.ts} +1 -1
  170. package/test/party/components/output/AnswerButton-client.ts +8 -6
  171. package/test/party/components/output/AnswerButton-server.ts +1 -1
  172. package/test/party/components/output/AnswerButtonApp-client.ts +11 -7
  173. package/test/party/components/output/AnswerButtonApp-server.ts +2 -2
  174. package/test/party/components/output/ColorSelect-client.ts +11 -9
  175. package/test/party/components/output/ColorSelect-server.ts +2 -2
  176. package/test/party/components/output/Colors-client.ts +12 -9
  177. package/test/party/components/output/Colors-server.ts +2 -2
  178. package/test/party/components/output/Counter-client.ts +8 -6
  179. package/test/party/components/output/Counter-server.ts +1 -1
  180. package/test/party/components/output/CssStyle-client.ts +6 -4
  181. package/test/party/components/output/CssStyle-server.ts +1 -1
  182. package/test/party/components/output/DoubleCount-client.ts +7 -5
  183. package/test/party/components/output/DoubleCount-server.ts +1 -1
  184. package/test/party/components/output/FunnyButton-client.ts +12 -9
  185. package/test/party/components/output/FunnyButton-server.ts +2 -2
  186. package/test/party/components/output/FunnyButtonApp-client.ts +15 -9
  187. package/test/party/components/output/FunnyButtonApp-server.ts +3 -3
  188. package/test/party/components/output/HelloWorld-client.ts +6 -4
  189. package/test/party/components/output/HelloWorld-server.ts +1 -1
  190. package/test/party/components/output/InputFocused-client.ts +7 -4
  191. package/test/party/components/output/InputFocused-server.ts +1 -1
  192. package/test/party/components/output/InputHello-client.ts +8 -6
  193. package/test/party/components/output/InputHello-server.ts +1 -1
  194. package/test/party/components/output/IsAvailable-client.ts +8 -6
  195. package/test/party/components/output/IsAvailable-server.ts +1 -1
  196. package/test/party/components/output/Name-client.ts +7 -5
  197. package/test/party/components/output/Name-server.ts +1 -1
  198. package/test/party/components/output/NameUpdate-client.ts +7 -5
  199. package/test/party/components/output/NameUpdate-server.ts +1 -1
  200. package/test/party/components/output/PageTitle-client.ts +7 -5
  201. package/test/party/components/output/PageTitle-server.ts +1 -1
  202. package/test/party/components/output/PickPill-client.ts +9 -7
  203. package/test/party/components/output/PickPill-server.ts +1 -1
  204. package/test/party/components/output/Time-client.ts +7 -5
  205. package/test/party/components/output/Time-server.ts +1 -1
  206. package/test/party/components/output/TrafficLight-client.ts +19 -17
  207. package/test/party/components/output/TrafficLight-server.ts +5 -5
  208. package/test/party/components/output/UserProfile-client.ts +10 -8
  209. package/test/party/components/output/UserProfile-server.ts +1 -1
  210. package/test/party/components/output/UserProfileApp-client.ts +9 -4
  211. package/test/party/components/output/UserProfileApp-server.ts +2 -0
  212. package/test/party/components/output/UserProfileContext-client.ts +9 -7
  213. package/test/party/components/output/UserProfileContext-server.ts +1 -1
  214. package/test/party/components/output/UserProfileContextApp-client.ts +11 -7
  215. package/test/party/components/output/UserProfileContextApp-server.ts +2 -2
  216. package/test/party/components/temp/{AnswerButton-client-c3dc7edbfff2db1ea111086002147d771ee12193.ts → AnswerButton-client-ad8f8db36b7aaa68d8de5898a324bacfbe9f20df.ts} +8 -6
  217. package/test/party/components/temp/{AnswerButton-server-427442fa8cfc0a18817c2d37f9cb5cbcb3a88a05.ts → AnswerButton-server-928b5d447afa865fa09e0142c79bb1f2c1b86875.ts} +1 -1
  218. package/test/party/components/temp/{AnswerButtonApp-client-3e0b63a6bbc1dee3e6cb715c0297cc2ce58d3e4e.ts → AnswerButtonApp-client-a2b16c738467742436b1a2ddaf2d767795a4d625.ts} +11 -7
  219. package/test/party/components/temp/{AnswerButtonApp-server-bbc8bb739d2060ccda77ce406aa6b15d8f90b91c.ts → AnswerButtonApp-server-16161f2c9062dd11b8b6b8c898f9f1249ae2400d.ts} +2 -2
  220. package/test/party/components/temp/{ColorSelect-client-5ffa6f9d77de967993088c9a01b9f976f3333176.ts → ColorSelect-client-4e848c296047911f4c0e3bc1447e5562ce06087c.ts} +11 -9
  221. package/test/party/components/temp/{ColorSelect-server-3ed19eff17bf10b31d03ec507974ff913932c97a.ts → ColorSelect-server-90f83722bd85155ebb2b8ccdaf053cd28d3152be.ts} +2 -2
  222. package/test/party/components/temp/{Colors-client-3dafffc5c2a72037f4419fc45d08963872a29958.ts → Colors-client-dde7bf60e2b16383ec981b08f8414b1ebeb349a5.ts} +12 -9
  223. package/test/party/components/temp/{Colors-server-f9b3037a5f25979f71b5f8f3e658140be7c27920.ts → Colors-server-e13d49ba57f7b0dc6fb10a333ec872f5207e1ff0.ts} +2 -2
  224. package/test/party/components/temp/{Counter-client-4d553521fcfc6c9a4e05dce89e70b2ecf8785c4e.ts → Counter-client-3b876c148f2b14da1766eff77eb6c494f7be6414.ts} +8 -6
  225. package/test/party/components/temp/{Counter-server-36d1137c519691f5b86a18a5c27b7cf615b7e37c.ts → Counter-server-7adf9376b38d97f1fd4b9c14108e6814e81f14ea.ts} +1 -1
  226. package/test/party/components/temp/{CssStyle-client-59c0f261f67bc04f2829a0371f655d146101cec6.ts → CssStyle-client-37465dd48d1479db1bae513eb0b92c4e9a15e9ea.ts} +6 -4
  227. package/test/party/components/temp/{CssStyle-server-3e58d7e2f5c381a251f593245d3d8bf4b50925ae.ts → CssStyle-server-90a950501a20bfa5feac84ca6d97898c25bce2ed.ts} +1 -1
  228. package/test/party/components/temp/{DoubleCount-client-0426f128507a8d4516ef7501cd180662112b6d1d.ts → DoubleCount-client-6d4cf1e54368e3c6082e37c1e04f9ecde90624f2.ts} +7 -5
  229. package/test/party/components/temp/{DoubleCount-server-40fc88156e52281b80fd6b12dd73d2469201fa29.ts → DoubleCount-server-62c94483ebe9661e5ecc4f489787e32448ddcafa.ts} +1 -1
  230. package/test/party/components/temp/{FunnyButton-client-45f2c5dd56f2cdb80102193a978df6b0cec822ab.ts → FunnyButton-client-61a1699da08e210375edff33f7b27d3cc0e99cc3.ts} +12 -9
  231. package/test/party/components/temp/{FunnyButton-server-e8ab55e47c735f7e42c55d2b7504dfa4190a1b40.ts → FunnyButton-server-e0adab2be2d283acb8a8b580479ade999dc918e9.ts} +2 -2
  232. package/test/party/components/temp/{FunnyButtonApp-client-ac7101af922dc6ba472b75a428f340caca6be74a.ts → FunnyButtonApp-client-cbce6a591bae38ab8b312551f8741d50ae6294bf.ts} +15 -9
  233. package/test/party/components/temp/{FunnyButtonApp-server-f1a98a946e0bb9d1bb76b01e26d6ead8f55d32bb.ts → FunnyButtonApp-server-48d37de0c755843a2be34d7c7cb5c730689dcc2f.ts} +3 -3
  234. package/test/party/components/temp/{HelloWorld-client-791e8b9a0bd4b01e87fbe70f2b28d4ac356e3624.ts → HelloWorld-client-7344e400b4adb975fa8263d3081a06de0a793e57.ts} +6 -4
  235. package/test/party/components/temp/{HelloWorld-server-3c4b9a995a78d652d9220a20124c9e0d18fc7101.ts → HelloWorld-server-e0ed80e7531f303952a4af30d646263ff2e4ead6.ts} +1 -1
  236. package/test/party/components/temp/{InputFocused-client-11a9cb08909b26945bbc2451ab4c1dac09e6d113.ts → InputFocused-client-20d755aea7dfaf1fd5e42dcade8fb7867f59ef28.ts} +7 -4
  237. package/test/party/components/temp/{InputFocused-server-82be1a63c80d1dd3f06efaf0bef349d58cf1d9af.ts → InputFocused-server-ee70758a515227c04788be0e298a79c277994ccd.ts} +1 -1
  238. package/test/party/components/temp/{InputHello-client-b0453caeae0d43dc1878039c6b49318d12624d48.ts → InputHello-client-2a4cbd980534fde14b9d3e8a2f8e4f59a4f15d64.ts} +8 -6
  239. package/test/party/components/temp/{InputHello-server-6c982438e58d3649ee3890efec636ca4590a5cdb.ts → InputHello-server-1b9dd5442ded022abe92a9075ca5a4bb90486cbe.ts} +1 -1
  240. package/test/party/components/temp/{IsAvailable-client-d789346a68b26fd3f5d9f7aebc4c7bd181c47cad.ts → IsAvailable-client-3949f85aea0e935c3b59ab1389baee836eff1866.ts} +8 -6
  241. package/test/party/components/temp/{IsAvailable-server-a35b7ec5f111472c76aa1b67c857b169fe363594.ts → IsAvailable-server-123daa1ae56b77defe6666faddb44ba4252dd0fb.ts} +1 -1
  242. package/test/party/components/temp/{Name-client-cb8bef7cfca1306386b65410a0bd7a8acfaed359.ts → Name-client-62f0dab96aff130e81882099d7c0a111ba99cebd.ts} +7 -5
  243. package/test/party/components/temp/{Name-server-9da0823f748e9751e017078f39717298be232636.ts → Name-server-a402418f1ca2d8a0e6403596ec03ec47b5ff40ec.ts} +1 -1
  244. package/test/party/components/temp/{NameUpdate-client-ebef69b0da12d640994099592ce06c7e4b5089d4.ts → NameUpdate-client-6ceb440637c99142bafcf8512eabf831c113b8c7.ts} +7 -5
  245. package/test/party/components/temp/{NameUpdate-server-1856bdb5e010f7d7e5e67f2a0d87ac3f92f4e0ee.ts → NameUpdate-server-b7dcc875e894a5606544fcd78bda575ea07632ca.ts} +1 -1
  246. package/test/party/components/temp/{PageTitle-client-403645e918294e5cdeea8cb3f602e0a2642b2650.ts → PageTitle-client-75fea3a37fb1213bc13f56160bb6779486b2e6e9.ts} +7 -5
  247. package/test/party/components/temp/{PageTitle-server-4d959183b7029b6817372abd1d60a7e996baeb15.ts → PageTitle-server-12dcb4e437aaef227c704a2ee8bbdee55ca323dc.ts} +1 -1
  248. package/test/party/components/temp/{PickPill-client-b47d371ae5f41d87c96b3cdeed0a8bc06fbfa9c7.ts → PickPill-client-0f13aa652cb1bd45f57d5a249f8364e80204441a.ts} +9 -7
  249. package/test/party/components/temp/{PickPill-server-49e033c5f97dd2f98e1498327e16eb9c8c9d2f66.ts → PickPill-server-f10dae4708e36775a5e1a5ad10c6c0c309335009.ts} +1 -1
  250. package/test/party/components/temp/{Time-client-7ba4ca9322af2cb88a873c812fc776760c337c64.ts → Time-client-2013f274e90b45be3138727f2298305e1951131f.ts} +7 -5
  251. package/test/party/components/temp/{Time-server-08f66c7f3f32b13de06d75fe679cf58b5727c473.ts → Time-server-8e0278a4b16925903f3c4ceedbf1332cde4921fa.ts} +1 -1
  252. package/test/party/components/temp/{TrafficLight-client-549f9fe3418c113fb240cfa17e09c42e1e7f346a.ts → TrafficLight-client-4010f51fde4c8c21e6c232eff974c86820dbad4f.ts} +19 -17
  253. package/test/party/components/temp/{TrafficLight-server-ed2a8640fd82cf381eee8f4fb83bb09d174a4557.ts → TrafficLight-server-04bb3b2f11322ccc97a9a8a8fbb26c3c99843042.ts} +5 -5
  254. package/test/party/components/temp/{UserProfile-client-2c13aac1ad915e51dc557f9af765669e636c0fea.ts → UserProfile-client-11c2a928de5a5ed4cab45186f08ca09f6161afb5.ts} +10 -8
  255. package/test/party/components/temp/{UserProfile-server-cc1162a4297f6163bfb86e7a8aeea08e8c0625c6.ts → UserProfile-server-a0576b8d9dd15b3fab6c11758984c686ddfe2f66.ts} +1 -1
  256. package/test/party/components/temp/{UserProfileApp-client-2be7a11319cca4d7bfa0f3d2205c441d7e203780.ts → UserProfileApp-client-32b5cc129b32af5cdd94f39c6fb09a2e4806b04e.ts} +9 -4
  257. package/test/party/components/temp/{UserProfileApp-server-ab9ff66f787f775aa8571314fee8bcbef85489ef.ts → UserProfileApp-server-97397c42aaac0ee3902218d02c0ce6884434cc5b.ts} +2 -0
  258. package/test/party/components/temp/{UserProfileContext-client-2aa36f436a5f20614d77f48963ec5ca442eebd90.ts → UserProfileContext-client-c97c077254210061b3c9ba561f681c0cf4f6167f.ts} +9 -7
  259. package/test/party/components/temp/{UserProfileContext-server-cf58767df1e2d1dde919f59de73cdd9764bbc006.ts → UserProfileContext-server-2d32476b00448bdec6c1c45aac5087a5152c2471.ts} +1 -1
  260. package/test/party/components/temp/{UserProfileContextApp-client-5099052fdcd8fb4c368c45090390947424a4e9b0.ts → UserProfileContextApp-client-c4b64ccf44069bcbf18acb585afa62ac9127aeb9.ts} +11 -7
  261. package/test/party/components/temp/{UserProfileContextApp-server-6be8dab2ed4f8911f26bef137e7dea164f2b894d.ts → UserProfileContextApp-server-95a4b12d30cef621db55d5de102a906ac7286fb2.ts} +2 -2
  262. package/test/props/components/output/Reactive-client.ts +18 -12
  263. package/test/props/components/output/Reactive-server.ts +3 -3
  264. package/test/props/components/temp/{Reactive-client-e3e5f6ee2f22c46337c6ab1df2f241133c7e2646.ts → Reactive-client-249382840865c9911857b89085bc85ff901b8e8f.ts} +18 -12
  265. package/test/props/components/temp/{Reactive-server-0914d91287a1bc6d32d7cc56d086624762dbfc04.ts → Reactive-server-770cd3df7c877c0c99e156b2ba6d1f8b35914027.ts} +3 -3
  266. package/test/replace/components/output/Replace-client.ts +11 -8
  267. package/test/replace/components/output/Replace-server.ts +2 -2
  268. package/test/replace/components/temp/{Replace-client-3fdab63871fa4bb792317caefd3539b1888325b1.ts → Replace-client-ef66f06bc0cfa91e800b185dbccbca6a98693c21.ts} +11 -8
  269. package/test/replace/components/temp/{Replace-server-857aca7a58deffc3a1c95ab9d31628b4051ca203.ts → Replace-server-9519943d193b681e1d7894a0d7952affdfb0660c.ts} +2 -2
  270. package/test/slots/components/output/Article-client.ts +13 -9
  271. package/test/slots/components/output/Article-server.ts +2 -2
  272. package/test/slots/components/output/Basic-client.ts +9 -5
  273. package/test/slots/components/output/Basic-server.ts +2 -0
  274. package/test/slots/components/output/Header-client.ts +10 -7
  275. package/test/slots/components/output/Header-server.ts +2 -2
  276. package/test/slots/components/output/Let-client.ts +9 -5
  277. package/test/slots/components/output/Let-server.ts +2 -0
  278. package/test/slots/components/output/List-client.ts +12 -9
  279. package/test/slots/components/output/List-server.ts +2 -2
  280. package/test/slots/components/output/Named-client.ts +12 -8
  281. package/test/slots/components/output/Named-server.ts +2 -0
  282. package/test/slots/components/output/Unused-client.ts +9 -4
  283. package/test/slots/components/output/Unused-server.ts +2 -0
  284. package/test/slots/components/temp/{Article-client-80848d6cadd8abac61865d14ddd35685844797e0.ts → Article-client-f7676836f5ded94222b11ef81e41dd675d1af04b.ts} +13 -9
  285. package/test/slots/components/temp/{Article-server-a6bd47a621cc213db4313eb775a52246541dd203.ts → Article-server-b84141b05064f5ea1e4b535faafe459df0d875fb.ts} +2 -2
  286. package/test/slots/components/temp/{Basic-client-97b18686412869e8c814fd4542dfe826b1f7669f.ts → Basic-client-e7650b8be5f6e50fa0f2f343a145f86edfe14ff4.ts} +9 -5
  287. package/test/slots/components/temp/{Basic-server-248392e2cd147b537cd44e9a5a71885ef20102e4.ts → Basic-server-aed46a5b459cce50e7ddb311c42a76b9e91c2dae.ts} +2 -0
  288. package/test/slots/components/temp/{Header-client-e2e1e7d60b48b0841cd0c20224f520330ca96458.ts → Header-client-127c27e6bfcd5b37cc871164cd665b740418dc82.ts} +10 -7
  289. package/test/slots/components/temp/{Header-server-1c195508a91c32822da22a08576c8a30c9070636.ts → Header-server-d8e8ccb129d84478f0c4f8dc8ad1d2091188cc7b.ts} +2 -2
  290. package/test/slots/components/temp/{Let-client-be69c1f5aa32faf16239050d7836db46cfdcba2f.ts → Let-client-c107eb0fe42f125996d2c9a83ab7b3c1916ca26d.ts} +9 -5
  291. package/test/slots/components/temp/{Let-server-c3293219ed27aec61a6af36d451ddf6609c40027.ts → Let-server-62727e5e2db3df405cdbe7a2d339a99113fc7f4a.ts} +2 -0
  292. package/test/slots/components/temp/{List-client-a829b33214de829de689a72d2e8703b2266ad7a4.ts → List-client-ca1d8f9a9cc8b513323de7c5531a4ec03898d920.ts} +12 -9
  293. package/test/slots/components/temp/{List-server-06503834c9bfae9b8c2b61742568b020a3de961c.ts → List-server-f4f63df4d19e15311da347284935a1bb530a8df4.ts} +2 -2
  294. package/test/slots/components/temp/{Named-client-2d9d88f5fdf74d81c3ed1d769a476f4ac36c8b99.ts → Named-client-636b6a18c25a27099f883cb9eeb04e182e248941.ts} +12 -8
  295. package/test/slots/components/temp/{Named-server-65a7bbf038111475c8f07dccb34040ab8c1392c4.ts → Named-server-829daa82c94fd7142a721cabac1b3402cca8fce6.ts} +2 -0
  296. package/test/slots/components/temp/{Unused-client-1b16491cb800bbbbd871d9fbf5966c7275244019.ts → Unused-client-0aefcc79e9ae050358fa049a35b7e8e0a6bc2d66.ts} +9 -4
  297. package/test/slots/components/temp/{Unused-server-e5d1e85116bebc7e1a2882cb8f2c9ae7975a1de7.ts → Unused-server-379b45ff313e82f8b2949385f50d8ea482094520.ts} +2 -0
  298. package/test/special-component/components/output/BigTitle-client.ts +9 -6
  299. package/test/special-component/components/output/BigTitle-server.ts +2 -2
  300. package/test/special-component/components/output/Component-client.ts +10 -4
  301. package/test/special-component/components/output/Component-server.ts +2 -2
  302. package/test/special-component/components/output/SmallTitle-client.ts +9 -6
  303. package/test/special-component/components/output/SmallTitle-server.ts +2 -2
  304. package/test/special-component/components/temp/{BigTitle-client-881a9f84876fb3f6d994736edb253b96e71de926.ts → BigTitle-client-04ca3c7b6aaf76b81baa5a3d3720fbd2a1760550.ts} +9 -6
  305. package/test/special-component/components/temp/{BigTitle-server-9efc738f5eb131a4b859c4a99a8e255d93834e9a.ts → BigTitle-server-d8919a4c975e022c936584bd668917cb89aa8e20.ts} +2 -2
  306. package/test/special-component/components/temp/{Component-client-22f7e1d0955fb3d90939e956a1f0f77118c259b6.ts → Component-client-24cd39596c4281ee2709e6aa482818d071825b4f.ts} +10 -4
  307. package/test/special-component/components/temp/{Component-server-ce596cd84dc11f67c9f0588060a5b672eddf9715.ts → Component-server-3564dfcef8d015cab4944a3c75cc6cf329f3fad6.ts} +2 -2
  308. package/test/special-component/components/temp/{SmallTitle-client-25b3097b7ae47848dd82967403faf7745fc43388.ts → SmallTitle-client-213b422377a30fe0b12f7256e654bf0313ac9cf9.ts} +9 -6
  309. package/test/special-component/components/temp/{SmallTitle-server-fc105db9a91b83644d67e049ce583a3d1a61f50c.ts → SmallTitle-server-0a9b5098e4dda96f8c1da30294d71b39997dd118.ts} +2 -2
  310. package/test/special-element/components/output/Element-client.ts +8 -6
  311. package/test/special-element/components/output/Element-server.ts +1 -1
  312. package/test/special-element/components/temp/{Element-client-21c92c04579b1d29e8813265a10897d069aad5c5.ts → Element-client-c5701ed44faa4ec8ae558505063684a84cada3f2.ts} +8 -6
  313. package/test/special-element/components/temp/{Element-server-4bed9653529f39e72754126147fe8618f328853a.ts → Element-server-166d672256ef4635168de0090e490e48b569c7d6.ts} +1 -1
  314. package/test/special-head/components/output/Head-client.ts +6 -4
  315. package/test/special-head/components/output/Head-server.ts +1 -1
  316. package/test/special-head/components/temp/{Head-client-07e8af6386d767a52667a4fdc978a335ec388302.ts → Head-client-18616689a7d6f83ca076c9d825606b049de9d3ef.ts} +6 -4
  317. package/test/special-head/components/temp/{Head-server-d80a0f1ee10e9942d9a631df35a24cb1cfb15555.ts → Head-server-c0956653b544ff632e36da15d5f7623fa285953a.ts} +1 -1
  318. package/test/special-self/components/output/Self-client.ts +12 -8
  319. package/test/special-self/components/output/Self-server.ts +4 -4
  320. package/test/special-self/components/temp/{Self-client-911c67194be1fdd997537310bcafe712161e8251.ts → Self-client-99b34229c85a477881299311f56f48686352c3b3.ts} +12 -8
  321. package/test/special-self/components/temp/{Self-server-49ba9be1f6255dd4daf490c640f5222a85960218.ts → Self-server-ee440757ca9772d7b4111451a9ee05a157302e7c.ts} +4 -4
  322. package/test/style/components/output/Style-client.ts +7 -4
  323. package/test/style/components/output/Style-server.ts +1 -1
  324. package/test/style/components/temp/{Style-client-cbfac1e255c33a867ccbd5f9d1484a855d91a2d7.ts → Style-client-bc13f8dbb5f754e4eebb2473fc63a139ebf1ba92.ts} +7 -4
  325. package/test/style/components/temp/{Style-server-763d82ee2296be3f7620814aed950b505329c04c.ts → Style-server-85720cb43e20ab000f98bc632c29454a51ae92d9.ts} +1 -1
  326. package/test/svg/components/output/Shape-client.ts +14 -11
  327. package/test/svg/components/output/Shape-server.ts +4 -4
  328. package/test/svg/components/temp/{Shape-client-cb98b36ab2a0d9f06b484a3c988fb43c3a71a4a0.ts → Shape-client-368789c592401c3e4c99ddcdb8fe6dded45eb34a.ts} +14 -11
  329. package/test/svg/components/temp/{Shape-server-500d7fe4556026234ce5379b8e90595ddd094edc.ts → Shape-server-9951ff1dcc7aa0827f28d3f8d970813767115ae3.ts} +4 -4
  330. package/test/switch/components/output/Switch-client.ts +17 -14
  331. package/test/switch/components/output/Switch-server.ts +5 -5
  332. package/test/switch/components/temp/{Switch-client-9980de45e3346b79525c445edec7cbc3b375e8a4.ts → Switch-client-5ef1937202adac7fd5aae866357d95beb4b5805f.ts} +17 -14
  333. package/test/switch/components/temp/{Switch-server-1c5690726f28008bb565966af69b6e4e019dea82.ts → Switch-server-c1b5e1c657438ee3d8afdbf2166c5295cafc5604.ts} +5 -5
  334. package/test/template/errors.test.ts +8 -6
  335. package/test/text/components/output/Text-client.ts +8 -6
  336. package/test/text/components/output/Text-server.ts +1 -1
  337. package/test/text/components/temp/{Text-client-63f1d3bf9b3bd145c7ce7058716640e27144055e.ts → Text-client-e335aae6d8aef389dfdbb5bee14e3dd3d41e86bd.ts} +8 -6
  338. package/test/text/components/temp/{Text-server-9d3dd6f51e893e63c1999ceafce19ca1697d76ea.ts → Text-server-e37d33aa182f36461927d8ce36040bfd05e2f227.ts} +1 -1
  339. package/test/watch-array/components/output/Array-client.ts +12 -9
  340. package/test/watch-array/components/output/Array-server.ts +2 -2
  341. package/test/watch-array/components/output/ArrayEntries-client.ts +12 -9
  342. package/test/watch-array/components/output/ArrayEntries-server.ts +2 -2
  343. package/test/watch-array/components/output/ArrayIndexes-client.ts +12 -9
  344. package/test/watch-array/components/output/ArrayIndexes-server.ts +2 -2
  345. package/test/watch-array/components/output/ArrayUnkeyed-client.ts +12 -9
  346. package/test/watch-array/components/output/ArrayUnkeyed-server.ts +2 -2
  347. package/test/watch-array/components/temp/{Array-client-ffd82188a45877d74053c82fb3616e4aed0fc2ad.ts → Array-client-24ccac431fa237432ec4875234773f36a9a5b120.ts} +12 -9
  348. package/test/watch-array/components/temp/{Array-server-3715e815af887e8487b214e7de324850fe99e312.ts → Array-server-c907209008ac6177f614b62931a2bb1f1c3a04e1.ts} +2 -2
  349. package/test/watch-array/components/temp/{ArrayEntries-client-b6e982660628576061dbb44539e970b9549bdcfa.ts → ArrayEntries-client-ebfb391a78325be4411f24a1ecfdc45ca3a6a621.ts} +12 -9
  350. package/test/watch-array/components/temp/{ArrayEntries-server-85cbe80fbb7f6885287825e2cc0dfc1cb9835d79.ts → ArrayEntries-server-57c1ab0045fa4a02de95f69a65de6f54efe9850c.ts} +2 -2
  351. package/test/watch-array/components/temp/{ArrayIndexes-client-39337aa43bd8c10a53db836c3be233d48dd39b91.ts → ArrayIndexes-client-0a4b3226862bb1de13fdbc7a14f689d9f7ade2a1.ts} +12 -9
  352. package/test/watch-array/components/temp/{ArrayIndexes-server-ec623c724af0c7212675d61ea68e9dee87f96caa.ts → ArrayIndexes-server-f093878b94a37617e2e697a786caa680f75630a7.ts} +2 -2
  353. package/test/watch-array/components/temp/{ArrayUnkeyed-client-7606f9a6a221c8cf6a8b51e4895d10a3d7bccc11.ts → ArrayUnkeyed-client-0966fa5ed460f4c627d8d619e493601098d6a33e.ts} +12 -9
  354. package/test/watch-array/components/temp/{ArrayUnkeyed-server-db21cd576a4c70973abe10f6c8ef5cecb3ead86c.ts → ArrayUnkeyed-server-c893fa024be07e5e7fce608c3ae456bdf2279dbe.ts} +2 -2
  355. package/test/watch-object/components/output/Watched-client.ts +7 -5
  356. package/test/watch-object/components/output/Watched-server.ts +1 -1
  357. package/test/watch-object/components/temp/{Watched-client-bbffbf2cede1a5c071b770670eb39c0f0be725af.ts → Watched-client-d26e846bbeb8271ec5dc2a1ceb75b362af44d3bd.ts} +7 -5
  358. package/test/watch-object/components/temp/{Watched-server-0252addaf92fb0f0c1e2937f42918a1c9f31d196.ts → Watched-server-312fca1e769d7594fc5bb6295ccf55b544dd2f4d.ts} +1 -1
  359. package/test/class/components/temp/Class-server-853a463d2ad1a1e3da4da5ad59ad1c75461d2431.ts +0 -40
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ import t_animate from "./render/addAnimation";
6
6
  import t_event from "./render/addEvent";
7
7
  import t_add_fragment from "./render/addFragment";
8
8
  import t_apply_props from "./render/applyProps";
9
+ import clearLayoutSlot from "./render/clearLayoutSlot";
9
10
  import t_fmt from "./render/formatText";
10
11
  import t_class from "./render/getClasses";
11
12
  import t_fragment from "./render/getFragment";
@@ -18,10 +19,12 @@ import t_anchor from "./render/nodeAnchor";
18
19
  import t_child from "./render/nodeChild";
19
20
  import t_next from "./render/nodeNext";
20
21
  import t_root from "./render/nodeRoot";
22
+ import t_skip from "./render/nodeSkip";
21
23
  import t_pop_range from "./render/popRange";
22
24
  import t_push_range from "./render/pushRange";
23
25
  import t_run_control from "./render/runControl";
24
26
  import t_run_branch from "./render/runControlBranch";
27
+ import runLayoutSlot from "./render/runLayoutSlot";
25
28
  import t_run_list from "./render/runList";
26
29
  import t_attribute from "./render/setAttribute";
27
30
  import t_dynamic from "./render/setDynamicElement";
@@ -32,7 +35,7 @@ import { type ServerSlotRender } from "./types/ServerSlotRender";
32
35
  import { type SlotRender } from "./types/SlotRender";
33
36
 
34
37
  // Mount and hydrate
35
- export { mount, hydrate };
38
+ export { mount, hydrate, runLayoutSlot, clearLayoutSlot };
36
39
 
37
40
  // Functions for the user that can be called from components
38
41
  export { $watch, $unwrap, $run, $mount };
@@ -52,6 +55,7 @@ export {
52
55
  t_child,
53
56
  t_next,
54
57
  t_root,
58
+ t_skip,
55
59
  t_pop_range,
56
60
  t_push_range,
57
61
  t_run_control,
@@ -6,9 +6,10 @@ export default function addFragment(
6
6
  fragment: DocumentFragment,
7
7
  parent: ParentNode,
8
8
  before: Node | null,
9
+ endNode?: ChildNode,
9
10
  ): void {
10
- //console.log(`adding fragment '${fragment.textContent}' to ${printNode(parent)}`);
11
- //console.log("before", printNode(before));
11
+ //console.log(`adding fragment '${fragment.textContent}' to `, parent);
12
+ //console.log("before", before);
12
13
 
13
14
  const range = context.activeRange;
14
15
  const hydrationNode = context.hydrationNode;
@@ -16,7 +17,7 @@ export default function addFragment(
16
17
  // Set the active range's end node to the last node in the fragment
17
18
  if (range) {
18
19
  if (hydrationNode) {
19
- range.endNode = hydrationNode;
20
+ range.endNode = endNode ?? hydrationNode;
20
21
  } else {
21
22
  range.startNode = fragment.firstChild;
22
23
  range.endNode = fragment.lastChild;
@@ -45,7 +46,7 @@ export default function addFragment(
45
46
  if (!parentIsFragment) {
46
47
  // Only run $mount effects if not hydrating (if hydrating, they will get
47
48
  // run at the end when everything is hooked up)
48
- if (!context.hydrationNode) {
49
+ if (!hydrationNode) {
49
50
  for (let effect of context.mountEffects) {
50
51
  $run(effect);
51
52
  }
@@ -0,0 +1,6 @@
1
+ import type { Range } from "../types/Range";
2
+ import clearRange from "./clearRange";
3
+
4
+ export default function clearLayoutSlot(range: Range): void {
5
+ clearRange(range);
6
+ }
@@ -3,7 +3,7 @@ import removeEffect from "../watch/removeEffect";
3
3
  import context from "./context";
4
4
 
5
5
  export default function clearRange(range: Range): void {
6
- //console.log(`clearing range ${printNode(range.startNode)} to ${printNode(range.endNode)}`);
6
+ //console.log("clearing range", range.startNode, "to", range.endNode);
7
7
 
8
8
  // Clear effects and collect animations that take place within this range and its children
9
9
  let animations: Animation[] = [];
@@ -1,5 +1,5 @@
1
1
  const HYDRATION_START = "[";
2
2
  const HYDRATION_END = "]";
3
- const HYDRATION_BRANCH = "^";
3
+ const HYDRATION_BREAK = "^";
4
4
 
5
- export { HYDRATION_START, HYDRATION_END, HYDRATION_BRANCH };
5
+ export { HYDRATION_START, HYDRATION_END, HYDRATION_BREAK };
@@ -1,3 +1,3 @@
1
- export default function isComment(node: Node): node is Comment {
2
- return node.nodeType === 8;
1
+ export default function isComment(node: Node | null | undefined): node is Comment {
2
+ return node?.nodeType === 8;
3
3
  }
@@ -0,0 +1,3 @@
1
+ export default function isText(node: Node | null | undefined): node is Text {
2
+ return node?.nodeType === 3;
3
+ }
@@ -3,37 +3,72 @@ import { HYDRATION_END, HYDRATION_START } from "./hydrationMarkers";
3
3
  import isComment from "./isComment";
4
4
  import nodeNext from "./nodeNext";
5
5
 
6
- export default function nodeAnchor(node: Node): Node {
7
- // If we are hydrating, the anchor will be at the end of the paired <![> and
8
- // <!]> comments
9
- if (context.hydrationNode && isComment(node) && node.data === HYDRATION_START) {
10
- // Skip and remove the start node
11
- let currentNode = nodeNext(node);
12
- node.remove();
6
+ /**
7
+ * Gets the anchor node for a control statement or component.
8
+ *
9
+ * When mounting, this just returns the anchor node parameter (because it was
10
+ * created).
11
+ *
12
+ * When hydrating, there should be matched <![> and <!]> comments in the HTML,
13
+ * and the anchor node should be after the end comment. The matched comment
14
+ * nodes will be deleted, and the hydration node set to the first node inside
15
+ * the matched comments.
16
+ *
17
+ * @param node The potential anchor node.
18
+ * @param subsequent Whether this is the second time the anchor is being retrieved.
19
+ * @returns The anchor node.
20
+ */
21
+ export default function nodeAnchor(node: ChildNode, subsequent = false): ChildNode {
22
+ if (context.hydrationNode) {
23
+ // The first time we get a node anchor during hydration, the hydration
24
+ // node gets set to the first node in the statement, and then we work
25
+ // through the nodes until we get to the anchor node itself. So, the
26
+ // second time we get the anchor node, the hydration node should have
27
+ // been set to it. I'm not sure this is going to always be the case...
28
+ if (subsequent) {
29
+ return context.hydrationNode;
30
+ }
13
31
 
14
- // Go through siblings until we get to the end
15
- let level = 1;
16
- while (currentNode) {
17
- if (isComment(currentNode)) {
18
- if (currentNode.data === HYDRATION_START) {
19
- level += 1;
20
- } else if (currentNode.data === HYDRATION_END) {
21
- level -= 1;
22
- }
23
- if (level === 0) {
24
- // Remove the end node and return the next one
25
- const endNode = currentNode.nextSibling;
26
- currentNode.remove();
27
- // NOTE: We know this is not null as it is being called from
28
- // generated code
29
- return endNode!;
32
+ if (isComment(node) && node.data === HYDRATION_START) {
33
+ // Skip and remove the start node, setting the hydration node in
34
+ // nodeNext
35
+ let currentNode = nodeNext(node);
36
+ node.remove();
37
+
38
+ // Go through siblings until we get to the end
39
+ let level = 1;
40
+ while (currentNode) {
41
+ if (isComment(currentNode)) {
42
+ if (currentNode.data === HYDRATION_START) {
43
+ level += 1;
44
+ } else if (currentNode.data === HYDRATION_END) {
45
+ level -= 1;
46
+ if (level === 0) {
47
+ // Remove the end node and return the next one
48
+ const endNode = currentNode.nextSibling;
49
+ currentNode.remove();
50
+
51
+ // If the statement is empty (i.e. the end comment
52
+ // immediately follows the start comment), move the
53
+ // hydration node past the removed end comment to
54
+ // the anchor, so that we can continue to the next
55
+ // nodes
56
+ if (context.hydrationNode === currentNode) {
57
+ context.hydrationNode = endNode;
58
+ }
59
+
60
+ // NOTE: We know this is not null as it is being
61
+ // called from generated code
62
+ return endNode!;
63
+ }
64
+ }
30
65
  }
66
+ currentNode = currentNode.nextSibling!;
31
67
  }
32
- currentNode = currentNode.nextSibling!;
33
- }
34
68
 
35
- if (!currentNode) {
36
- throw new Error("End hydration comment not found");
69
+ if (!currentNode) {
70
+ throw new Error("End hydration comment not found");
71
+ }
37
72
  }
38
73
  }
39
74
 
@@ -0,0 +1,25 @@
1
+ import context from "./context";
2
+ import { HYDRATION_BREAK } from "./hydrationMarkers";
3
+ import isComment from "./isComment";
4
+
5
+ // TODO: It would be good to remove this, if possible
6
+
7
+ /**
8
+ * When hydrating, removes and skips hydration comments that are inserted at the
9
+ * start of branches and used to split up text nodes that would otherwise be
10
+ * joined in HTML.
11
+ *
12
+ * @param node The node to check and maybe skip.
13
+ * @returns The next node.
14
+ */
15
+ export default function nodeCheckHydrationBreak(node: ChildNode | null): ChildNode | null {
16
+ if (context.hydrationNode) {
17
+ if (node && isComment(node) && node.data === HYDRATION_BREAK) {
18
+ let comment = node;
19
+ node = node.nextSibling;
20
+ comment.remove();
21
+ }
22
+ context.hydrationNode = node;
23
+ }
24
+ return node;
25
+ }
@@ -1,18 +1,23 @@
1
1
  import context from "./context";
2
2
 
3
3
  /**
4
- * Gets the first child of a node
4
+ * Gets the first child of a node.
5
+ *
6
+ * Sets the hydration node.
7
+ *
8
+ * @param parent The parent node.
5
9
  */
6
- export default function nodeChild(parent: Node): Node {
7
- let child = parent.firstChild;
10
+ export default function nodeChild(parent: Node): ChildNode {
11
+ let childNode = parent.firstChild;
8
12
  if (context.hydrationNode) {
9
13
  // The child may be null when hydrating the sole text child of an
10
14
  // element with no text
11
- if (!child) {
12
- child = parent.appendChild(parent.ownerDocument!.createTextNode(""));
15
+ if (!childNode) {
16
+ childNode = parent.appendChild(parent.ownerDocument!.createTextNode(""));
13
17
  }
14
- context.hydrationNode = child;
18
+ context.hydrationNode = childNode;
15
19
  }
20
+
16
21
  // NOTE: We know this is not null as it is being called from generated code
17
- return child!;
22
+ return childNode!;
18
23
  }
@@ -1,33 +1,24 @@
1
1
  import context from "./context";
2
- import { HYDRATION_BRANCH } from "./hydrationMarkers";
3
- import isComment from "./isComment";
2
+ import isText from "./isText";
3
+ import nodeCheckHydrationBreak from "./nodeCheckHydrationBreak";
4
4
 
5
5
  /**
6
- * Gets the next sibling of a node
6
+ * Gets the next sibling of a node.
7
+ *
8
+ * When hydrating, sets the hydration node.
9
+ *
10
+ * @param node The node.
11
+ * @param text Whether we require a text node.
7
12
  */
8
- export default function nodeNext(node: Node, count?: number): Node {
9
- let nextNode = checkHydrationNode(node.nextSibling);
10
-
11
- if (count) {
12
- for (let i = 1; i < count; i++) {
13
- nextNode = checkHydrationNode(nextNode!.nextSibling);
14
- }
13
+ export default function nodeNext(node: ChildNode, text = false): ChildNode {
14
+ // If the required node is a text node, and we already have one, just use
15
+ // it. This is caused by text nodes being merged in HTML
16
+ if (context.hydrationNode && text && isText(node)) {
17
+ return node;
15
18
  }
16
19
 
17
- // NOTE: We know nextNode is not null as it is being called from generated code
18
- return nextNode!;
19
- }
20
+ let nextNode = nodeCheckHydrationBreak(node.nextSibling);
20
21
 
21
- function checkHydrationNode(nextNode: ChildNode | null) {
22
- if (context.hydrationNode) {
23
- // Remove hydration comments that are inserted at the start of branches
24
- // They are just used to split up text nodes that would otherwise be joined in HTML
25
- if (nextNode && isComment(nextNode) && nextNode.data === HYDRATION_BRANCH) {
26
- let comment = nextNode;
27
- nextNode = nextNode.nextSibling;
28
- comment.remove();
29
- }
30
- context.hydrationNode = nextNode;
31
- }
32
- return nextNode;
22
+ // NOTE: We know this is not null as it is being called from generated code
23
+ return nextNode!;
33
24
  }
@@ -1,19 +1,36 @@
1
1
  import context from "./context";
2
+ import isText from "./isText";
2
3
 
3
4
  /**
4
- * Gets the first child in a fragment
5
- * */
6
- export default function nodeRoot(parent: Node): Node {
7
- const hydrationNode = context.hydrationNode;
8
- if (hydrationNode) {
9
- // If hydrating, set the active range's start node, while we have it
5
+ * Gets the first child in a fragment.
6
+ *
7
+ * When hydrating, also sets the active range's start node, while we have it.
8
+ *
9
+ * @param parent The parent of the fragment.
10
+ * @param text Whether we require a text node.
11
+ */
12
+ export default function nodeRoot(parent: Node, text = false): ChildNode {
13
+ if (context.hydrationNode) {
14
+ let rootNode = context.hydrationNode;
15
+
16
+ // If the root node we need is a text node, and the hydration node is
17
+ // not a text node but the previous node is, use the previous node. This
18
+ // is caused by text nodes being merged in HTML
19
+ if (text && !isText(rootNode) && isText(rootNode.previousSibling)) {
20
+ rootNode = rootNode.previousSibling;
21
+ context.hydrationNode = rootNode;
22
+ }
23
+
24
+ // If hydrating, set the active range's start node
10
25
  const range = context.activeRange;
11
26
  if (range && !range.startNode) {
12
- range.startNode = hydrationNode;
27
+ range.startNode = rootNode;
13
28
  }
14
- return hydrationNode;
29
+
30
+ return rootNode;
15
31
  } else {
16
- // NOTE: We know this is not null as it is being called from generated code
32
+ // NOTE: We know this is not null as it is being called from generated
33
+ // code
17
34
  return parent.firstChild!;
18
35
  }
19
36
  }
@@ -0,0 +1,20 @@
1
+ import nodeCheckHydrationBreak from "./nodeCheckHydrationBreak";
2
+
3
+ /**
4
+ * Gets the sibling of a node, x nodes after it.
5
+ *
6
+ * When hydrating, sets the hydration node.
7
+ *
8
+ * @param node The node.
9
+ * @param count The number of nodes to skip.
10
+ */
11
+ export default function nodeSkip(node: ChildNode, count: number): ChildNode {
12
+ let nextNode = node;
13
+
14
+ for (let i = 0; i < count; i++) {
15
+ nextNode = nodeCheckHydrationBreak(nextNode.nextSibling)!;
16
+ }
17
+
18
+ // NOTE: We know this is not null as it is being called from generated code
19
+ return nextNode!;
20
+ }
@@ -0,0 +1,26 @@
1
+ import type { Component } from "../types/Component";
2
+ import type { Range } from "../types/Range";
3
+ import type { SlotRender } from "../types/SlotRender";
4
+ import newRange from "./newRange";
5
+ import popRange from "./popRange";
6
+ import pushRange from "./pushRange";
7
+
8
+ export default function runLayoutSlot(
9
+ component: Component,
10
+ slot: SlotRender,
11
+ parent: ParentNode,
12
+ anchor: Node | null,
13
+ $props: Record<string, string>,
14
+ $context?: Record<PropertyKey, any>,
15
+ ): Range {
16
+ const range = newRange();
17
+ const oldRange = pushRange(range, true);
18
+
19
+ component(parent, anchor, $props, $context, {
20
+ _: slot,
21
+ });
22
+
23
+ popRange(oldRange);
24
+
25
+ return range;
26
+ }
@@ -21,9 +21,12 @@ export default function Attributes(
21
21
  /* User interface */
22
22
  const t_fragments: DocumentFragment[] = [];
23
23
 
24
- const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div data-thing="" {$props.attr}> Hello! </div>`);
24
+ const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div data-thing="" {$props.attr}> Hello! </div> `);
25
25
  // @ts-ignore
26
- const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
26
+ const t_root_0 = t_root(t_fragment_0, true);
27
+ const t_div_1 = t_next(t_root_0) as HTMLDivElement;
28
+ // @ts-ignore
29
+ const t_text_1 = t_next(t_div_1, true);
27
30
  $run(function setAttribute() {
28
31
  t_attribute(t_div_1, "thing", $props.thing);
29
32
  });
@@ -36,7 +39,7 @@ export default function Attributes(
36
39
  $run(function setAttribute() {
37
40
  t_div_1.setAttribute("attr", $props.attr);
38
41
  });
39
- t_add_fragment(t_fragment_0, $parent, $anchor);
40
- t_next(t_div_1);
42
+ t_add_fragment(t_fragment_0, $parent, $anchor, t_text_1);
43
+ t_next(t_text_1);
41
44
 
42
45
  }
@@ -12,7 +12,7 @@ export default function Attributes(
12
12
 
13
13
  /* User interface */
14
14
  let $output = "";
15
- $output += `<div ${$props.thing ? `thing="${t_attr($props.thing)}"` : ''} ${$props.dataThing ? `data-thing="${t_attr($props.dataThing)}"` : ''} caption="this attribute is for ${t_attr($props.description)}" attr="${t_attr($props.attr)}"> Hello! </div>`;
15
+ $output += ` <div ${$props.thing ? `thing="${t_attr($props.thing)}"` : ''} ${$props.dataThing ? `data-thing="${t_attr($props.dataThing)}"` : ''} caption="this attribute is for ${t_attr($props.description)}" attr="${t_attr($props.attr)}"> Hello! </div> `;
16
16
 
17
17
  return $output;
18
18
  }
@@ -21,9 +21,12 @@ export default function Attributes(
21
21
  /* User interface */
22
22
  const t_fragments: DocumentFragment[] = [];
23
23
 
24
- const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div data-thing="" {$props.attr}> Hello! </div>`);
24
+ const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div data-thing="" {$props.attr}> Hello! </div> `);
25
25
  // @ts-ignore
26
- const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
26
+ const t_root_0 = t_root(t_fragment_0, true);
27
+ const t_div_1 = t_next(t_root_0) as HTMLDivElement;
28
+ // @ts-ignore
29
+ const t_text_1 = t_next(t_div_1, true);
27
30
  $run(function setAttribute() {
28
31
  t_attribute(t_div_1, "thing", $props.thing);
29
32
  });
@@ -36,7 +39,7 @@ export default function Attributes(
36
39
  $run(function setAttribute() {
37
40
  t_div_1.setAttribute("attr", $props.attr);
38
41
  });
39
- t_add_fragment(t_fragment_0, $parent, $anchor);
40
- t_next(t_div_1);
42
+ t_add_fragment(t_fragment_0, $parent, $anchor, t_text_1);
43
+ t_next(t_text_1);
41
44
 
42
45
  }
@@ -12,7 +12,7 @@ export default function Attributes(
12
12
 
13
13
  /* User interface */
14
14
  let $output = "";
15
- $output += `<div ${$props.thing ? `thing="${t_attr($props.thing)}"` : ''} ${$props.dataThing ? `data-thing="${t_attr($props.dataThing)}"` : ''} caption="this attribute is for ${t_attr($props.description)}" attr="${t_attr($props.attr)}"> Hello! </div>`;
15
+ $output += ` <div ${$props.thing ? `thing="${t_attr($props.thing)}"` : ''} ${$props.dataThing ? `data-thing="${t_attr($props.dataThing)}"` : ''} caption="this attribute is for ${t_attr($props.description)}" attr="${t_attr($props.attr)}"> Hello! </div> `;
16
16
 
17
17
  return $output;
18
18
  }
@@ -46,10 +46,11 @@ export default function Await(
46
46
  /* User interface */
47
47
  const t_fragments: DocumentFragment[] = [];
48
48
 
49
- const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div> <!> <button> Guess again </button> </div>`);
49
+ const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div> <!> <button> Guess again </button> </div> `);
50
50
  // @ts-ignore
51
- const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
52
- const t_await_anchor_1 = t_anchor(t_next(t_child(t_div_1))) as HTMLElement;
51
+ const t_root_0 = t_root(t_fragment_0, true);
52
+ const t_await_parent_1 = t_next(t_root_0) as HTMLElement;
53
+ const t_await_anchor_1 = t_anchor(t_next(t_child(t_await_parent_1))) as HTMLElement;
53
54
 
54
55
  /* @await */
55
56
  const t_await_range_1 = t_range();
@@ -60,10 +61,10 @@ export default function Await(
60
61
  t_run_branch(t_await_range_1, 0, () => {
61
62
  const t_fragment_1 = t_fragment($parent.ownerDocument!, t_fragments, 1, ` <p>Hmm...</p> `);
62
63
  // @ts-ignore
63
- const t_root_1 = t_root(t_fragment_1);
64
+ const t_root_1 = t_root(t_fragment_1, true);
64
65
  // @ts-ignore
65
- const t_text_1 = t_next(t_root_1, 2);
66
- t_add_fragment(t_fragment_1, t_div_1, t_before);
66
+ const t_text_1 = t_next(t_next(t_root_1), true);
67
+ t_add_fragment(t_fragment_1, t_await_parent_1, t_before, t_text_1);
67
68
  t_next(t_text_1);
68
69
  });
69
70
  ((token) => {
@@ -74,10 +75,10 @@ export default function Await(
74
75
  t_run_branch(t_await_range_1, 1, () => {
75
76
  const t_fragment_2 = t_fragment($parent.ownerDocument!, t_fragments, 2, ` <p>Is it a number?</p> `);
76
77
  // @ts-ignore
77
- const t_root_2 = t_root(t_fragment_2);
78
+ const t_root_2 = t_root(t_fragment_2, true);
78
79
  // @ts-ignore
79
- const t_text_2 = t_next(t_root_2, 2);
80
- t_add_fragment(t_fragment_2, t_div_1, t_before);
80
+ const t_text_2 = t_next(t_next(t_root_2), true);
81
+ t_add_fragment(t_fragment_2, t_await_parent_1, t_before, t_text_2);
81
82
  t_next(t_text_2);
82
83
  });
83
84
  t_pop_range(t_old_range_1);
@@ -89,14 +90,14 @@ export default function Await(
89
90
  t_run_branch(t_await_range_1, 2, () => {
90
91
  const t_fragment_3 = t_fragment($parent.ownerDocument!, t_fragments, 3, ` <p class="error">#</p> `);
91
92
  // @ts-ignore
92
- const t_root_3 = t_root(t_fragment_3);
93
+ const t_root_3 = t_root(t_fragment_3, true);
93
94
  const t_text_3 = t_child(t_next(t_root_3));
94
95
  // @ts-ignore
95
- const t_text_4 = t_next(t_root_3, 2);
96
+ const t_text_4 = t_next(t_next(t_root_3), true);
96
97
  $run(function setTextContent() {
97
98
  t_text_3.textContent = `Something went wrong: ${t_fmt(ex)}!`;
98
99
  });
99
- t_add_fragment(t_fragment_3, t_div_1, t_before);
100
+ t_add_fragment(t_fragment_3, t_await_parent_1, t_before, t_text_4);
100
101
  t_next(t_text_4);
101
102
  });
102
103
  t_pop_range(t_old_range_1);
@@ -105,9 +106,11 @@ export default function Await(
105
106
  })(t_await_token_1);
106
107
  });
107
108
 
108
- const t_button_1 = t_next(t_await_anchor_1, 2) as HTMLElement;
109
+ const t_button_1 = t_next(t_next(t_anchor(t_await_anchor_1, true), true)) as HTMLElement;
110
+ // @ts-ignore
111
+ const t_text_5 = t_next(t_await_parent_1, true);
109
112
  t_event(t_button_1, "click", () => $state.guesser = guessNumber(100));
110
- t_add_fragment(t_fragment_0, $parent, $anchor);
111
- t_next(t_div_1);
113
+ t_add_fragment(t_fragment_0, $parent, $anchor, t_text_5);
114
+ t_next(t_text_5);
112
115
 
113
116
  }
@@ -28,9 +28,9 @@ export default function Await(
28
28
 
29
29
  /* User interface */
30
30
  let $output = "";
31
- $output += `<div> <![>`;
31
+ $output += ` <div> <![>`;
32
32
  $output += ` <p>Hmm...</p> `;
33
- $output += `<!]><!> <button> Guess again </button> </div>`;
33
+ $output += `<!]><!> <button> Guess again </button> </div> `;
34
34
 
35
35
  return $output;
36
36
  }
@@ -46,10 +46,11 @@ export default function Await(
46
46
  /* User interface */
47
47
  const t_fragments: DocumentFragment[] = [];
48
48
 
49
- const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div> <!> <button> Guess again </button> </div>`);
49
+ const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div> <!> <button> Guess again </button> </div> `);
50
50
  // @ts-ignore
51
- const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
52
- const t_await_anchor_1 = t_anchor(t_next(t_child(t_div_1))) as HTMLElement;
51
+ const t_root_0 = t_root(t_fragment_0, true);
52
+ const t_await_parent_1 = t_next(t_root_0) as HTMLElement;
53
+ const t_await_anchor_1 = t_anchor(t_next(t_child(t_await_parent_1))) as HTMLElement;
53
54
 
54
55
  /* @await */
55
56
  const t_await_range_1 = t_range();
@@ -60,10 +61,10 @@ export default function Await(
60
61
  t_run_branch(t_await_range_1, 0, () => {
61
62
  const t_fragment_1 = t_fragment($parent.ownerDocument!, t_fragments, 1, ` <p>Hmm...</p> `);
62
63
  // @ts-ignore
63
- const t_root_1 = t_root(t_fragment_1);
64
+ const t_root_1 = t_root(t_fragment_1, true);
64
65
  // @ts-ignore
65
- const t_text_1 = t_next(t_root_1, 2);
66
- t_add_fragment(t_fragment_1, t_div_1, t_before);
66
+ const t_text_1 = t_next(t_next(t_root_1), true);
67
+ t_add_fragment(t_fragment_1, t_await_parent_1, t_before, t_text_1);
67
68
  t_next(t_text_1);
68
69
  });
69
70
  ((token) => {
@@ -74,10 +75,10 @@ export default function Await(
74
75
  t_run_branch(t_await_range_1, 1, () => {
75
76
  const t_fragment_2 = t_fragment($parent.ownerDocument!, t_fragments, 2, ` <p>Is it a number?</p> `);
76
77
  // @ts-ignore
77
- const t_root_2 = t_root(t_fragment_2);
78
+ const t_root_2 = t_root(t_fragment_2, true);
78
79
  // @ts-ignore
79
- const t_text_2 = t_next(t_root_2, 2);
80
- t_add_fragment(t_fragment_2, t_div_1, t_before);
80
+ const t_text_2 = t_next(t_next(t_root_2), true);
81
+ t_add_fragment(t_fragment_2, t_await_parent_1, t_before, t_text_2);
81
82
  t_next(t_text_2);
82
83
  });
83
84
  t_pop_range(t_old_range_1);
@@ -89,14 +90,14 @@ export default function Await(
89
90
  t_run_branch(t_await_range_1, 2, () => {
90
91
  const t_fragment_3 = t_fragment($parent.ownerDocument!, t_fragments, 3, ` <p class="error">#</p> `);
91
92
  // @ts-ignore
92
- const t_root_3 = t_root(t_fragment_3);
93
+ const t_root_3 = t_root(t_fragment_3, true);
93
94
  const t_text_3 = t_child(t_next(t_root_3));
94
95
  // @ts-ignore
95
- const t_text_4 = t_next(t_root_3, 2);
96
+ const t_text_4 = t_next(t_next(t_root_3), true);
96
97
  $run(function setTextContent() {
97
98
  t_text_3.textContent = `Something went wrong: ${t_fmt(ex)}!`;
98
99
  });
99
- t_add_fragment(t_fragment_3, t_div_1, t_before);
100
+ t_add_fragment(t_fragment_3, t_await_parent_1, t_before, t_text_4);
100
101
  t_next(t_text_4);
101
102
  });
102
103
  t_pop_range(t_old_range_1);
@@ -105,9 +106,11 @@ export default function Await(
105
106
  })(t_await_token_1);
106
107
  });
107
108
 
108
- const t_button_1 = t_next(t_await_anchor_1, 2) as HTMLElement;
109
+ const t_button_1 = t_next(t_next(t_anchor(t_await_anchor_1, true), true)) as HTMLElement;
110
+ // @ts-ignore
111
+ const t_text_5 = t_next(t_await_parent_1, true);
109
112
  t_event(t_button_1, "click", () => $state.guesser = guessNumber(100));
110
- t_add_fragment(t_fragment_0, $parent, $anchor);
111
- t_next(t_div_1);
113
+ t_add_fragment(t_fragment_0, $parent, $anchor, t_text_5);
114
+ t_next(t_text_5);
112
115
 
113
116
  }