@torpor/view 0.0.14 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +5 -5
  3. package/dist/compile.cjs +69 -31
  4. package/dist/compile.cjs.map +1 -1
  5. package/dist/compile.js +69 -31
  6. package/dist/compile.js.map +1 -1
  7. package/dist/index.cjs +19 -12
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +2 -4
  10. package/dist/index.d.ts +2 -4
  11. package/dist/index.js +19 -11
  12. package/dist/index.js.map +1 -1
  13. package/dist/metafile-cjs.json +1 -1
  14. package/dist/metafile-esm.json +1 -1
  15. package/package.json +4 -4
  16. package/scripts/copyToRepl.ts +1 -1
  17. package/src/compile/build/client/buildCode.ts +2 -11
  18. package/src/compile/build/client/buildComponentNode.ts +21 -5
  19. package/src/compile/build/client/buildElementNode.ts +14 -8
  20. package/src/compile/build/client/buildFragment.ts +37 -1
  21. package/src/compile/build/client/buildHtmlNode.ts +1 -0
  22. package/src/compile/build/client/buildSlotNode.ts +4 -1
  23. package/src/compile/build/server/buildServerComponentNode.ts +4 -1
  24. package/src/compile/build/server/buildServerElementNode.ts +5 -2
  25. package/src/compile/build/server/buildServerSlotNode.ts +4 -1
  26. package/src/compile/parse/parseCode.ts +20 -12
  27. package/src/index.ts +0 -2
  28. package/src/render/$unwrap.ts +1 -1
  29. package/src/render/addFragment.ts +7 -2
  30. package/src/render/nodeNext.ts +14 -7
  31. package/src/render/runControlBranch.ts +11 -1
  32. package/src/render/runList.ts +8 -2
  33. package/test/attributes/attributes.test.ts +3 -0
  34. package/test/attributes/components/Attributes.torp +6 -1
  35. package/test/attributes/components/output/Attributes-client.ts +6 -2
  36. package/test/attributes/components/output/Attributes-server.ts +2 -1
  37. package/test/attributes/components/temp/{Attributes-client-c4812cb9307eac6ff44f90f3358a1811b52c7390.ts → Attributes-client-7b8f7b9996208e8d2d0a12d4f4a40a73df63d9d8.ts} +6 -2
  38. package/test/attributes/components/temp/{Attributes-server-a7ebed503f2169f7c900d4613531082f1023b086.ts → Attributes-server-a1289434a5a801be1d63bfc85b621579e06452f0.ts} +2 -1
  39. package/test/await/await.test.ts +2 -4
  40. package/test/await/components/output/Await-client.ts +4 -4
  41. package/test/await/components/temp/{Await-client-6ce3ac610ce79ae3b474c81964b715e6f3d966da.ts → Await-client-a7bf000bf2b59a3d5251a0fa18ec79890a52a547.ts} +4 -4
  42. package/test/bench/bench.bench.ts +5 -7
  43. package/test/bench/components/output/Bench-client.ts +208 -0
  44. package/test/bench/components/output/Bench-server.ts +130 -0
  45. package/test/bench/components/temp/{Bench-client-5fee290225ae4771aa847360006123671e8f17f1.ts → Bench-client-fca94b485c6263778751927240ab3ca4048d7a10.ts} +10 -10
  46. package/test/bind/bind.test.ts +3 -5
  47. package/test/bind/component.test.ts +45 -0
  48. package/test/bind/components/BindComponent.torp +29 -0
  49. package/test/bind/components/BindText.torp +2 -2
  50. package/test/bind/components/output/BindComponent-client.ts +87 -0
  51. package/test/bind/components/output/BindComponent-server.ts +52 -0
  52. package/test/bind/components/output/BindText-client.ts +3 -3
  53. package/test/bind/components/temp/BindComponent-client-a645474748485a878871c062ad69e6bcf35e6550.ts +87 -0
  54. package/test/bind/components/temp/BindComponent-server-c557e7aa944517ab87415b8bb35b41b0034254e7.ts +52 -0
  55. package/test/bind/components/temp/{BindText-client-9e2f542e13bcbf9a44eab2c5a79d67ddb128f928.ts → BindText-client-d5f7d721df55020ef337f660e5d278eb80fcc330.ts} +3 -3
  56. package/test/build-server/build-server-element-node.test.ts +1 -1
  57. package/test/buildOutputFiles.ts +6 -3
  58. package/test/child-component/components/output/ParentChild-client.ts +3 -2
  59. package/test/child-component/components/output/ParentChild-server.ts +1 -0
  60. package/test/child-component/components/temp/{ParentChild-client-8f00a3a31a7f666990765fc4755b62a39c855226.ts → ParentChild-client-eaefb0cbfd251badab3c57ae2037d973f785a1b8.ts} +3 -2
  61. package/test/child-component/components/temp/{ParentChild-server-9c791bdfa521c3f6549857a34a6cd414fa3c9e80.ts → ParentChild-server-8f2fc556f87867e6e3393e2e9e6d696cda107b69.ts} +1 -0
  62. package/test/class/components/output/Class-client.ts +7 -6
  63. package/test/class/components/output/Class-server.ts +1 -0
  64. package/test/class/components/temp/{Class-client-8bf02b6a0c85674d341617dfb755b285b1af89cf.ts → Class-client-dc885e1e391f38973bd9ea25b7475b07f7c23960.ts} +7 -6
  65. package/test/class/components/temp/{Class-server-dd71b6ec62f40231917a912819520fc614f017ae.ts → Class-server-d1a2463ba432e10c6f68bd59d1d31949c5a2044f.ts} +1 -0
  66. package/test/component/components/output/Component-client.ts +3 -2
  67. package/test/component/components/output/Component-server.ts +1 -1
  68. package/test/component/components/output/Header-client.ts +2 -1
  69. package/test/component/components/output/Header-server.ts +1 -0
  70. package/test/component/components/temp/{Component-client-32cd481f03e25d10b8e93947a2ff8773135b4975.ts → Component-client-a2fb6f30fc340bac909b64cb4f5ac68cde376de3.ts} +3 -2
  71. package/test/component/components/temp/{Component-server-11542f55405218c0b471172cac1d6a1a4edb5c09.ts → Component-server-40be12cd528ccf768f1ad40ef2a435ad2b2a2d71.ts} +1 -1
  72. package/test/component/components/temp/{Header-client-ac151eea86e3f6b058fab101661e13ae73864968.ts → Header-client-75cb4aa868295ac168c16ba7b275fbb5ab9256f9.ts} +2 -1
  73. package/test/component/components/temp/{Header-server-4f10f2332f3ca7a097517cfb938ab1e6f31d68ac.ts → Header-server-f73307874bec34a95dcd152d7f83a3ad13a0f4ac.ts} +1 -0
  74. package/test/effects/components/output/For-client.ts +3 -2
  75. package/test/effects/components/output/For-server.ts +1 -0
  76. package/test/effects/components/output/If-client.ts +4 -3
  77. package/test/effects/components/output/If-server.ts +1 -0
  78. package/test/effects/components/output/NestedIf-client.ts +4 -3
  79. package/test/effects/components/output/NestedIf-server.ts +1 -0
  80. package/test/effects/components/temp/{For-client-887b1758cf5c80f64708a47369e0e6ce44ffa20f.ts → For-client-d8d4e4424ec3238fe9f79cc907d673612b63bcdf.ts} +3 -2
  81. package/test/effects/components/temp/{For-server-8e1c7393b102c870167dd086cbee45c47e614dfa.ts → For-server-1f853c161bea31a1a5b11b00d7a021b70c778066.ts} +1 -0
  82. package/test/effects/components/temp/{If-client-bfc548ef699b91f33e604f066211ce6269cc9506.ts → If-client-bb06988422395321bf298a75bf5563c6f750f776.ts} +4 -3
  83. package/test/effects/components/temp/{If-server-8c213b1a82cd0a5c2bccfeb90ba8bf01fa4672d2.ts → If-server-97e3cbe059306fc607985dcd1b187df3a278d979.ts} +1 -0
  84. package/test/effects/components/temp/{NestedIf-client-9e9155398f240345af392194063adc6e42dda80c.ts → NestedIf-client-dc880c1ec92e716ec730dfa0bac0e3d9265bdf27.ts} +4 -3
  85. package/test/effects/components/temp/{NestedIf-server-5f11d075c2ff224ee5feb7f61aa41aea8af44313.ts → NestedIf-server-9f199a33bae5d5fe34920d6a419937537a2b18dc.ts} +1 -0
  86. package/test/events/components/output/Increment-client.ts +2 -2
  87. package/test/events/components/temp/{Increment-client-35c275d15e94e4aa7625af12c45210521995ead5.ts → Increment-client-41bd7bc91aac8c7a9bf73527c8f7ba1794b09ab3.ts} +2 -2
  88. package/test/events/events.test.ts +2 -3
  89. package/test/for/components/ForEscape.torp +1 -1
  90. package/test/for/components/output/For-client.ts +1 -1
  91. package/test/for/components/output/ForEscape-client.ts +4 -4
  92. package/test/for/components/output/ForIn-client.ts +3 -2
  93. package/test/for/components/output/ForIn-server.ts +1 -0
  94. package/test/for/components/output/ForOf-client.ts +3 -2
  95. package/test/for/components/output/ForOf-server.ts +1 -0
  96. package/test/for/components/temp/{For-client-1f6e475347f0474375f12a7c24b0b293e3942aa7.ts → For-client-0be5994e98c07a3455cd8a18a2b1b8ef3605aba6.ts} +1 -1
  97. package/test/for/components/temp/{ForEscape-client-80d3078cf15001f2ab37b0ec63cfce7267a8a166.ts → ForEscape-client-a973a145e28b32ca55fe3dca53d885fcf5e11c37.ts} +4 -4
  98. package/test/for/components/temp/{ForIn-client-c8a1ec4473d05475e11928d06d081ab671fd9f28.ts → ForIn-client-5cc25a98e10826e8477fe6f931d5d2bbd0b13c9f.ts} +3 -2
  99. package/test/for/components/temp/{ForIn-server-d92cf8d3c3e300b562308607caca2c9cab3cb30b.ts → ForIn-server-d68e82c048f7e0f1525f74724b91e5cd01cdc6a6.ts} +1 -0
  100. package/test/for/components/temp/{ForOf-client-069881d4d9e52bc091e7213154924f3e1626174a.ts → ForOf-client-70b0d59ff72f1cffe2e0ac8523dd7ccdca4ffe39.ts} +3 -2
  101. package/test/for/components/temp/{ForOf-server-3bfbb33bd589890d272bbcbea53d9598f53bfd70.ts → ForOf-server-ac08d98dd249a3e64a366b8488450e6ce0d18def.ts} +1 -0
  102. package/test/for/for-escape.test.ts +2 -3
  103. package/test/function/components/output/Function-client.ts +1 -1
  104. package/test/function/components/temp/{Function-client-b8931e51769f3f1e84d1491c6474f8551acf9f8d.ts → Function-client-b3ff029a821d47e1a2249a52dfb681f4b2e96232.ts} +1 -1
  105. package/test/function/function.test.ts +1 -2
  106. package/test/html/components/output/Html-client.ts +3 -1
  107. package/test/html/components/output/Html-server.ts +1 -0
  108. package/test/html/components/temp/{Html-client-5fc745d9980a42a70dcb3473b0fd976e69882c9e.ts → Html-client-766ba4a63f28f929ca16cd7d1640fe92f9b30792.ts} +3 -1
  109. package/test/html/components/temp/{Html-server-437ea390e58947213ede74755a012cdacceeebe7.ts → Html-server-0a41da8b81bf833f331f3becdbac14be7ddc6c8c.ts} +1 -0
  110. package/test/if/components/output/IfAfterIf-client.ts +5 -4
  111. package/test/if/components/output/IfAfterIf-server.ts +1 -0
  112. package/test/if/components/output/IfElse-client.ts +4 -3
  113. package/test/if/components/output/IfElse-server.ts +1 -0
  114. package/test/if/components/output/IfElseIf-client.ts +5 -4
  115. package/test/if/components/output/IfElseIf-server.ts +1 -0
  116. package/test/if/components/output/IfNested-client.ts +5 -4
  117. package/test/if/components/output/IfNested-server.ts +1 -0
  118. package/test/if/components/temp/{IfAfterIf-client-a489daa5b961ed9da71418fdbb1665b6ba39f1b7.ts → IfAfterIf-client-49b6b8c42b0a351561f9f5f22c2ae2e844bf3b58.ts} +5 -4
  119. package/test/if/components/temp/{IfAfterIf-server-243736e666e7d77d3f8553a1682734555f5ffd22.ts → IfAfterIf-server-eb67cf1fcf6711882266219940a47bd4a66497f3.ts} +1 -0
  120. package/test/if/components/temp/{IfElse-client-4c71642f412d5dd2f45729eafb7e974781dbe011.ts → IfElse-client-e236d4a2e99262ff09675bc519c07e2826c0d70b.ts} +4 -3
  121. package/test/if/components/temp/{IfElse-server-64c055182b327504ee71d1f1d44cfccf48be350d.ts → IfElse-server-c077e0e30f4d2adec41ab779198362d21542d055.ts} +1 -0
  122. package/test/if/components/temp/{IfElseIf-client-98d50d6f40c2385c4ef4fc02329f9d2e182c76c4.ts → IfElseIf-client-b92106861f0c7ec3d09e3a42bb93d8f5bd4e3bdf.ts} +5 -4
  123. package/test/if/components/temp/{IfElseIf-server-79788b13af905175f50bfa8658f2ff2af73db232.ts → IfElseIf-server-67991eee3f56dc687cda600511c31396438e0a77.ts} +1 -0
  124. package/test/{build-server/components/temp/IfNested-client-979db97eea5b4595550b9b46f297f3fbc31796d2.ts → if/components/temp/IfNested-client-f563ac1b16a2280e457557281c4925ed447a9cd7.ts} +5 -4
  125. package/test/{build-server/components/temp/IfNested-server-3c4e4b6f2162c0906cef685830219b9ea9ee985c.ts → if/components/temp/IfNested-server-0a2a9643324ab73b02b310cad61ba87dab146ab2.ts} +1 -0
  126. package/test/mount/components/Mount.torp +1 -1
  127. package/test/mount/components/output/Mount-client.ts +0 -2
  128. package/test/mount/components/output/Mount-server.ts +1 -1
  129. package/test/mount/components/temp/{Mount-client-49d8d6475336b5749fe8a17be847fd2b6cda5ccc.ts → Mount-client-36dbc95a61345a1b7dcf07e6b0c998af2afca691.ts} +0 -2
  130. package/test/mount/components/temp/{Mount-server-e3d689cf52a4477da9aa00e2c7604110710db991.ts → Mount-server-8bef1924a731f3db63cb827be3938fec685e53af.ts} +1 -1
  131. package/test/on-mount/components/output/OnMount-client.ts +0 -2
  132. package/test/on-mount/components/temp/{OnMount-client-b2dfd41a0aaeafb3b7af14793a03e0fc3bc43aaa.ts → OnMount-client-21708a638d2939ee8b017f5dc819cee4748bde87.ts} +0 -2
  133. package/test/party/13-emit-to-parent.test.ts +2 -3
  134. package/test/party/16-context.test.ts +1 -2
  135. package/test/party/17-input-text.test.ts +2 -3
  136. package/test/party/18-input-checkbox.test.ts +1 -2
  137. package/test/party/19-input-radio.test.ts +2 -3
  138. package/test/party/20-input-select.test.ts +3 -4
  139. package/test/party/7-event-click.test.ts +1 -3
  140. package/test/party/9-conditional.test.ts +2 -4
  141. package/test/party/components/ColorSelect.torp +1 -1
  142. package/test/party/components/InputFocused.torp +1 -1
  143. package/test/party/components/InputHello.torp +1 -1
  144. package/test/party/components/IsAvailable.torp +1 -1
  145. package/test/party/components/PickPill.torp +2 -2
  146. package/test/party/components/output/AnswerButton-client.ts +3 -2
  147. package/test/party/components/output/AnswerButton-server.ts +1 -0
  148. package/test/party/components/output/AnswerButtonApp-client.ts +4 -4
  149. package/test/party/components/output/AnswerButtonApp-server.ts +1 -1
  150. package/test/party/components/output/ColorSelect-client.ts +1 -1
  151. package/test/party/components/output/Colors-client.ts +1 -1
  152. package/test/party/components/output/Counter-client.ts +1 -1
  153. package/test/party/components/output/FunnyButton-client.ts +1 -1
  154. package/test/party/components/output/FunnyButtonApp-client.ts +2 -2
  155. package/test/party/components/output/FunnyButtonApp-server.ts +1 -1
  156. package/test/party/components/output/InputFocused-client.ts +0 -2
  157. package/test/party/components/output/InputFocused-server.ts +1 -1
  158. package/test/party/components/output/InputHello-client.ts +1 -1
  159. package/test/party/components/output/IsAvailable-client.ts +1 -1
  160. package/test/party/components/output/PickPill-client.ts +2 -2
  161. package/test/party/components/output/TrafficLight-client.ts +6 -6
  162. package/test/party/components/output/UserProfile-client.ts +5 -4
  163. package/test/party/components/output/UserProfile-server.ts +1 -0
  164. package/test/party/components/output/UserProfileApp-client.ts +3 -2
  165. package/test/party/components/output/UserProfileApp-server.ts +1 -1
  166. package/test/party/components/output/UserProfileContext-client.ts +3 -3
  167. package/test/party/components/output/UserProfileContextApp-client.ts +2 -2
  168. package/test/party/components/output/UserProfileContextApp-server.ts +1 -1
  169. package/test/party/components/temp/{AnswerButton-client-243454cd7bf84c648f244b3587e60d01a0401039.ts → AnswerButton-client-c3dc7edbfff2db1ea111086002147d771ee12193.ts} +3 -2
  170. package/test/party/components/temp/{AnswerButton-server-938e46c1d2510ea37454854ef527e4aa64eb8e52.ts → AnswerButton-server-427442fa8cfc0a18817c2d37f9cb5cbcb3a88a05.ts} +1 -0
  171. package/test/party/components/temp/{AnswerButtonApp-client-34311c2e7412807867fb6267af31a341f092bf31.ts → AnswerButtonApp-client-3e0b63a6bbc1dee3e6cb715c0297cc2ce58d3e4e.ts} +4 -4
  172. package/test/party/components/temp/{AnswerButtonApp-server-3f5071775abea24ee8830830072c6fe465fc4e56.ts → AnswerButtonApp-server-bbc8bb739d2060ccda77ce406aa6b15d8f90b91c.ts} +1 -1
  173. package/test/party/components/temp/{ColorSelect-client-f9fb9fa09f4729da3226d5aaf30e84cd3cd705b5.ts → ColorSelect-client-5ffa6f9d77de967993088c9a01b9f976f3333176.ts} +1 -1
  174. package/test/party/components/temp/{Colors-client-f124162d1dd8f0c3d37bf96c8e5f18599ae3a682.ts → Colors-client-3dafffc5c2a72037f4419fc45d08963872a29958.ts} +1 -1
  175. package/test/party/components/temp/{Counter-client-c349710110b4afbf9593f20cfc40c162ed836079.ts → Counter-client-4d553521fcfc6c9a4e05dce89e70b2ecf8785c4e.ts} +1 -1
  176. package/test/party/components/temp/{FunnyButton-client-2e6bec8259065b5bc9ae16d1ca93dd1bd0c56b7c.ts → FunnyButton-client-45f2c5dd56f2cdb80102193a978df6b0cec822ab.ts} +1 -1
  177. package/test/party/components/temp/{FunnyButtonApp-client-4ed0ebf5be13ddb62d9942bac7f4b8a885ec6c50.ts → FunnyButtonApp-client-ac7101af922dc6ba472b75a428f340caca6be74a.ts} +2 -2
  178. package/test/party/components/temp/{FunnyButtonApp-server-9748c9096848e643c91237c46ea09d23f1b3fa7c.ts → FunnyButtonApp-server-f1a98a946e0bb9d1bb76b01e26d6ead8f55d32bb.ts} +1 -1
  179. package/test/party/components/temp/{InputFocused-client-a543f82c8db205fb3e33c62de699cff43c668a68.ts → InputFocused-client-11a9cb08909b26945bbc2451ab4c1dac09e6d113.ts} +0 -2
  180. package/test/party/components/temp/{InputFocused-server-222f2fa7029d1cd6941a3777293a9b2d37b7295e.ts → InputFocused-server-82be1a63c80d1dd3f06efaf0bef349d58cf1d9af.ts} +1 -1
  181. package/test/party/components/temp/{InputHello-client-9953499de5778bb1d8aac7691129210a6098db07.ts → InputHello-client-b0453caeae0d43dc1878039c6b49318d12624d48.ts} +1 -1
  182. package/test/party/components/temp/{IsAvailable-client-929ed6c872e72b6c5243b882c6a9a0d13f6a7c47.ts → IsAvailable-client-d789346a68b26fd3f5d9f7aebc4c7bd181c47cad.ts} +1 -1
  183. package/test/party/components/temp/{PickPill-client-f9a50a75ce63ec2ee3ac34e378e20602b93629f7.ts → PickPill-client-b47d371ae5f41d87c96b3cdeed0a8bc06fbfa9c7.ts} +2 -2
  184. package/test/party/components/temp/{TrafficLight-client-81dd9bd9f3332533e01f6c9b271c15e5f76e1fdb.ts → TrafficLight-client-549f9fe3418c113fb240cfa17e09c42e1e7f346a.ts} +6 -6
  185. package/test/party/components/temp/{UserProfile-client-938bcef20a2555de22aca939022a32742ac5e729.ts → UserProfile-client-2c13aac1ad915e51dc557f9af765669e636c0fea.ts} +5 -4
  186. package/test/party/components/temp/{UserProfile-server-9df5c59b8797fa67c479bc76450104d45e6076f9.ts → UserProfile-server-cc1162a4297f6163bfb86e7a8aeea08e8c0625c6.ts} +1 -0
  187. package/test/party/components/temp/{UserProfileApp-client-af27173415d65647cab0f30a9a4967cef0307e25.ts → UserProfileApp-client-2be7a11319cca4d7bfa0f3d2205c441d7e203780.ts} +3 -2
  188. package/test/party/components/temp/{UserProfileApp-server-6a7dbe68ee8041785cef50fb15a9e5ba475e120f.ts → UserProfileApp-server-ab9ff66f787f775aa8571314fee8bcbef85489ef.ts} +1 -1
  189. package/test/party/components/temp/{UserProfileContext-client-93211cdba795b8baf926f60f5b17da90701743b3.ts → UserProfileContext-client-2aa36f436a5f20614d77f48963ec5ca442eebd90.ts} +3 -3
  190. package/test/party/components/temp/{UserProfileContextApp-client-7ea7d90a35894408757aef3e935d3a8badf93aea.ts → UserProfileContextApp-client-5099052fdcd8fb4c368c45090390947424a4e9b0.ts} +2 -2
  191. package/test/party/components/temp/{UserProfileContextApp-server-90290c770529d7211eabf29e7d0fe868aa856b52.ts → UserProfileContextApp-server-6be8dab2ed4f8911f26bef137e7dea164f2b894d.ts} +1 -1
  192. package/test/props/components/Reactive.torp +18 -0
  193. package/test/props/components/output/Reactive-client.ts +70 -0
  194. package/test/props/components/output/Reactive-server.ts +40 -0
  195. package/test/props/components/temp/Reactive-client-e3e5f6ee2f22c46337c6ab1df2f241133c7e2646.ts +70 -0
  196. package/test/props/components/temp/Reactive-server-0914d91287a1bc6d32d7cc56d086624762dbfc04.ts +40 -0
  197. package/test/props/reactive.test.ts +51 -0
  198. package/test/replace/components/output/Replace-client.ts +3 -2
  199. package/test/replace/components/output/Replace-server.ts +1 -0
  200. package/test/replace/components/temp/{Replace-client-ea4ddc73c71181fb6ef3c6f5bf61b0b9e017f00a.ts → Replace-client-3fdab63871fa4bb792317caefd3539b1888325b1.ts} +3 -2
  201. package/test/replace/components/temp/{Replace-server-30eb1ad796516fa4d310798a9c8a6811ec13cbd9.ts → Replace-server-857aca7a58deffc3a1c95ab9d31628b4051ca203.ts} +1 -0
  202. package/test/slots/components/output/Article-client.ts +2 -2
  203. package/test/slots/components/output/Basic-client.ts +1 -1
  204. package/test/slots/components/output/Basic-server.ts +1 -1
  205. package/test/slots/components/output/Let-client.ts +4 -3
  206. package/test/slots/components/output/Let-server.ts +2 -1
  207. package/test/slots/components/output/List-client.ts +1 -1
  208. package/test/slots/components/output/List-server.ts +1 -0
  209. package/test/slots/components/output/Named-client.ts +2 -2
  210. package/test/slots/components/output/Named-server.ts +1 -1
  211. package/test/slots/components/output/Unused-client.ts +1 -1
  212. package/test/slots/components/output/Unused-server.ts +1 -1
  213. package/test/slots/components/temp/{Article-client-741f94eab2e96655f4c9d69ccd7d9c7cc998f4ce.ts → Article-client-80848d6cadd8abac61865d14ddd35685844797e0.ts} +2 -2
  214. package/test/slots/components/temp/{Basic-client-c82bc3c5e10f2f2c1869347435262c8f3039e32f.ts → Basic-client-97b18686412869e8c814fd4542dfe826b1f7669f.ts} +1 -1
  215. package/test/slots/components/temp/{Basic-server-21fb4f8caa3bbcae219aaef388af8c26c46fa5ce.ts → Basic-server-248392e2cd147b537cd44e9a5a71885ef20102e4.ts} +1 -1
  216. package/test/slots/components/temp/{Let-client-c54696fd1b5b859a693744722957fa960f72fad6.ts → Let-client-be69c1f5aa32faf16239050d7836db46cfdcba2f.ts} +4 -3
  217. package/test/slots/components/temp/{Let-server-4d78ffc8741fa737f2cd915b36c0e6ec88a9146f.ts → Let-server-c3293219ed27aec61a6af36d451ddf6609c40027.ts} +2 -1
  218. package/test/slots/components/temp/{List-client-0659d999cfb48b865fe5b8aaaf2a4ddac3a8a8b6.ts → List-client-a829b33214de829de689a72d2e8703b2266ad7a4.ts} +1 -1
  219. package/test/slots/components/temp/{List-server-4b76485a259d054187edad8aa691d80ac918ad86.ts → List-server-06503834c9bfae9b8c2b61742568b020a3de961c.ts} +1 -0
  220. package/test/slots/components/temp/{Named-client-0626b2f0911f77f5edcfda82f9751bcbc37b7641.ts → Named-client-2d9d88f5fdf74d81c3ed1d769a476f4ac36c8b99.ts} +2 -2
  221. package/test/slots/components/temp/{Named-server-e802f901223d697c7fd0a1a234ce1930af1b4b3f.ts → Named-server-65a7bbf038111475c8f07dccb34040ab8c1392c4.ts} +1 -1
  222. package/test/slots/components/temp/{Unused-client-aa05465731e0d00e18189498f49c94f991e76f10.ts → Unused-client-1b16491cb800bbbbd871d9fbf5966c7275244019.ts} +1 -1
  223. package/test/slots/components/temp/{Unused-server-00b92d14665a565f0042b1f56231f28bc38a1252.ts → Unused-server-e5d1e85116bebc7e1a2882cb8f2c9ae7975a1de7.ts} +1 -1
  224. package/test/special-component/components/output/Component-client.ts +5 -4
  225. package/test/special-component/components/output/Component-server.ts +3 -2
  226. package/test/special-component/components/temp/{Component-client-3cc84b23def8830b8ef441bde0f03b3e9718196a.ts → Component-client-22f7e1d0955fb3d90939e956a1f0f77118c259b6.ts} +5 -4
  227. package/test/special-component/components/temp/{Component-server-5dc597784ea1fe45ac2cfb21305cf2187a3868e8.ts → Component-server-ce596cd84dc11f67c9f0588060a5b672eddf9715.ts} +3 -2
  228. package/test/special-element/components/output/Element-client.ts +2 -1
  229. package/test/special-element/components/output/Element-server.ts +1 -0
  230. package/test/special-element/components/temp/{Element-client-0ab8992a8e914c7e190cddac790585fef9be1c9f.ts → Element-client-21c92c04579b1d29e8813265a10897d069aad5c5.ts} +2 -1
  231. package/test/special-element/components/temp/{Element-server-ddb0170df4a3f369577ca7e9768e5fe799f14dfb.ts → Element-server-4bed9653529f39e72754126147fe8618f328853a.ts} +1 -0
  232. package/test/special-self/components/output/Self-client.ts +3 -2
  233. package/test/special-self/components/output/Self-server.ts +1 -0
  234. package/test/special-self/components/temp/{Self-client-3982f174954034643c4d17cfc66d7f10bf1d4df6.ts → Self-client-911c67194be1fdd997537310bcafe712161e8251.ts} +3 -2
  235. package/test/special-self/components/temp/{Self-server-97ffbdaae47f4463034e1d318a8073d078ff138f.ts → Self-server-49ba9be1f6255dd4daf490c640f5222a85960218.ts} +1 -0
  236. package/test/style/components/output/Style-client.ts +2 -1
  237. package/test/style/components/output/Style-server.ts +1 -0
  238. package/test/style/components/temp/{Style-client-085517e82bdd015c86f4c2577447c6a2791cf656.ts → Style-client-cbfac1e255c33a867ccbd5f9d1484a855d91a2d7.ts} +2 -1
  239. package/test/style/components/temp/{Style-server-b2615163fbafdcb2a5d4155120edf2f66ef3bba6.ts → Style-server-763d82ee2296be3f7620814aed950b505329c04c.ts} +1 -0
  240. package/test/svg/components/output/Shape-client.ts +4 -3
  241. package/test/svg/components/output/Shape-server.ts +1 -0
  242. package/test/svg/components/temp/{Shape-client-ea698ed1b7d0c3615adff35fa4956f22840f5fda.ts → Shape-client-cb98b36ab2a0d9f06b484a3c988fb43c3a71a4a0.ts} +4 -3
  243. package/test/svg/components/temp/{Shape-server-eb32049cfb7c058b2c4079c5f86ef00651ff6d69.ts → Shape-server-500d7fe4556026234ce5379b8e90595ddd094edc.ts} +1 -0
  244. package/test/switch/components/output/Switch-client.ts +5 -4
  245. package/test/switch/components/output/Switch-server.ts +1 -0
  246. package/test/switch/components/temp/{Switch-client-4c4adac7308795807517e66bc268a38f87df6bda.ts → Switch-client-9980de45e3346b79525c445edec7cbc3b375e8a4.ts} +5 -4
  247. package/test/switch/components/temp/{Switch-server-21fcac2b02c6071136bb0dc394babd27e454d2c9.ts → Switch-server-1c5690726f28008bb565966af69b6e4e019dea82.ts} +1 -0
  248. package/test/text/components/output/Text-client.ts +3 -2
  249. package/test/text/components/output/Text-server.ts +1 -0
  250. package/test/text/components/temp/{Text-client-9840092be1b4552ddce6e5efc2f1b395637a0a3d.ts → Text-client-63f1d3bf9b3bd145c7ce7058716640e27144055e.ts} +3 -2
  251. package/test/text/components/temp/{Text-server-6774aa9d4ccce941224ba0a8fb1d3e42eb31807e.ts → Text-server-9d3dd6f51e893e63c1999ceafce19ca1697d76ea.ts} +1 -0
  252. package/test/watch-array/components/output/Array-client.ts +4 -3
  253. package/test/watch-array/components/output/Array-server.ts +1 -0
  254. package/test/watch-array/components/output/ArrayEntries-client.ts +4 -3
  255. package/test/watch-array/components/output/ArrayEntries-server.ts +1 -0
  256. package/test/watch-array/components/output/ArrayIndexes-client.ts +4 -3
  257. package/test/watch-array/components/output/ArrayIndexes-server.ts +1 -0
  258. package/test/watch-array/components/output/ArrayUnkeyed-client.ts +4 -3
  259. package/test/watch-array/components/output/ArrayUnkeyed-server.ts +1 -0
  260. package/test/watch-array/components/temp/{Array-client-b29a42f88c2a2f37b3a86bdb9535e20a487887e1.ts → Array-client-ffd82188a45877d74053c82fb3616e4aed0fc2ad.ts} +4 -3
  261. package/test/watch-array/components/temp/{Array-server-ced54fc7e63196f9c24c2e55b27bfe6cf7821dcb.ts → Array-server-3715e815af887e8487b214e7de324850fe99e312.ts} +1 -0
  262. package/test/watch-array/components/temp/{ArrayEntries-client-6289890758b1f6b462a74417e0b9e2e46d946ccd.ts → ArrayEntries-client-b6e982660628576061dbb44539e970b9549bdcfa.ts} +4 -3
  263. package/test/watch-array/components/temp/{ArrayEntries-server-0429a18ffbe39afe87612889a3010c3fcaa601dc.ts → ArrayEntries-server-85cbe80fbb7f6885287825e2cc0dfc1cb9835d79.ts} +1 -0
  264. package/test/watch-array/components/temp/{ArrayIndexes-client-fe4b1c49f442b3e5411f331c52ae6c5ab38f2b2d.ts → ArrayIndexes-client-39337aa43bd8c10a53db836c3be233d48dd39b91.ts} +4 -3
  265. package/test/watch-array/components/temp/{ArrayIndexes-server-20c01f10832f035b007f85a423778934d51a703a.ts → ArrayIndexes-server-ec623c724af0c7212675d61ea68e9dee87f96caa.ts} +1 -0
  266. package/test/watch-array/components/temp/{ArrayUnkeyed-client-3fffe2ce749ee84e0730130bfd730d432e3c4e12.ts → ArrayUnkeyed-client-7606f9a6a221c8cf6a8b51e4895d10a3d7bccc11.ts} +4 -3
  267. package/test/watch-array/components/temp/{ArrayUnkeyed-server-0ab804a5e7bf5b47594d85adab79735e89a3939d.ts → ArrayUnkeyed-server-db21cd576a4c70973abe10f6c8ef5cecb3ead86c.ts} +1 -0
  268. package/test/watch-object/components/output/Watched-client.ts +2 -1
  269. package/test/watch-object/components/output/Watched-server.ts +1 -0
  270. package/test/watch-object/components/temp/{Watched-client-cb293038cd0a39043d05639c624a17d512419c25.ts → Watched-client-bbffbf2cede1a5c071b770670eb39c0f0be725af.ts} +2 -1
  271. package/test/watch-object/components/temp/{Watched-server-4884585cf4f50493a70631909f2230153531208e.ts → Watched-server-0252addaf92fb0f0c1e2937f42918a1c9f31d196.ts} +1 -0
  272. package/src/render/flushMountEffects.ts +0 -8
  273. package/test/if/components/temp/IfNested-client-979db97eea5b4595550b9b46f297f3fbc31796d2.ts +0 -90
  274. package/test/if/components/temp/IfNested-server-3c4e4b6f2162c0906cef685830219b9ea9ee985c.ts +0 -30
@@ -30,7 +30,7 @@ export default function FunnyButton(
30
30
  // @ts-ignore
31
31
  const t_root_1 = t_root(t_fragment_1);
32
32
  // @ts-ignore
33
- const t_text_1 = t_next(t_next(t_root_1));
33
+ const t_text_1 = t_next(t_root_1, 2);
34
34
  t_add_fragment(t_fragment_1, t_button_1, t_slot_anchor_1);
35
35
  t_next(t_text_1);
36
36
  }
@@ -6,7 +6,7 @@ import t_fragment from "../../../../src/render/getFragment";
6
6
  import t_next from "../../../../src/render/nodeNext";
7
7
  import t_root from "../../../../src/render/nodeRoot";
8
8
 
9
- import FunnyButton from "./FunnyButton-client";
9
+ import FunnyButton from "../output/./FunnyButton-client";
10
10
 
11
11
  export default function FunnyButtonApp(
12
12
  $parent: ParentNode,
@@ -29,7 +29,7 @@ export default function FunnyButtonApp(
29
29
 
30
30
  /* @component */
31
31
  FunnyButton(t_div_1, t_comp_anchor_1, undefined, $context);
32
- const t_comp_anchor_2 = t_anchor(t_next(t_next(t_comp_anchor_1))) as HTMLElement;
32
+ const t_comp_anchor_2 = t_anchor(t_next(t_comp_anchor_1, 2)) as HTMLElement;
33
33
 
34
34
  /* @component */
35
35
  const t_slots_1: Record<string, SlotRender> = {};
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import FunnyButton from "./FunnyButton-server";
3
+ import FunnyButton from "../output/./FunnyButton-server";
4
4
 
5
5
  export default function FunnyButtonApp(
6
6
  // @ts-ignore
@@ -1,7 +1,6 @@
1
1
  import $mount from "../../../../src/render/$mount";
2
2
  import { type SlotRender } from "../../../../src/types/SlotRender";
3
3
  import t_add_fragment from "../../../../src/render/addFragment";
4
- import t_flush from "../../../../src/render/flushMountEffects";
5
4
  import t_fragment from "../../../../src/render/getFragment";
6
5
  import t_next from "../../../../src/render/nodeNext";
7
6
  import t_root from "../../../../src/render/nodeRoot";
@@ -34,5 +33,4 @@ export default function InputFocused(
34
33
  t_add_fragment(t_fragment_0, $parent, $anchor);
35
34
  t_next(t_input_1);
36
35
 
37
- t_flush();
38
36
  }
@@ -19,7 +19,7 @@ export default function InputFocused(
19
19
 
20
20
  /* User interface */
21
21
  let $output = "";
22
- $output += `<input self="${t_attr(inputElement) || ""}">`;
22
+ $output += `<input ref="${t_attr(inputElement) || ""}">`;
23
23
 
24
24
  return $output;
25
25
  }
@@ -31,7 +31,7 @@ export default function InputHello(
31
31
  // @ts-ignore
32
32
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
33
33
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
34
- const t_input_1 = t_next(t_next(t_next(t_child(t_div_1)))) as HTMLInputElement;
34
+ const t_input_1 = t_next(t_child(t_div_1), 3) as HTMLInputElement;
35
35
  $run(function setTextContent() {
36
36
  t_text_1.textContent = t_fmt($state.text);
37
37
  });
@@ -31,7 +31,7 @@ export default function IsAvailable(
31
31
  // @ts-ignore
32
32
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
33
33
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
34
- const t_input_1 = t_next(t_next(t_next(t_child(t_div_1)))) as HTMLInputElement;
34
+ const t_input_1 = t_next(t_child(t_div_1), 3) as HTMLInputElement;
35
35
  $run(function setTextContent() {
36
36
  t_text_1.textContent = t_fmt($state.isAvailable ? "Available" : "Not available");
37
37
  });
@@ -31,8 +31,8 @@ export default function PickPill(
31
31
  // @ts-ignore
32
32
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
33
33
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
34
- const t_input_1 = t_next(t_next(t_next(t_child(t_div_1)))) as HTMLInputElement;
35
- const t_input_2 = t_next(t_next(t_next(t_next(t_input_1)))) as HTMLInputElement;
34
+ const t_input_1 = t_next(t_child(t_div_1), 3) as HTMLInputElement;
35
+ const t_input_2 = t_next(t_input_1, 4) as HTMLInputElement;
36
36
  $run(function setTextContent() {
37
37
  t_text_1.textContent = `Picked: ${t_fmt($state.picked)}`;
38
38
  });
@@ -43,9 +43,9 @@ export default function TrafficLight(
43
43
  // @ts-ignore
44
44
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
45
45
  const t_button_1 = t_next(t_child(t_div_1)) as HTMLElement;
46
- const t_text_1 = t_child(t_next(t_next(t_button_1)));
47
- const t_if_parent_1 = t_next(t_next(t_next(t_next(t_button_1)))) as HTMLElement;
48
- const t_if_anchor_1 = t_anchor(t_next(t_child(t_if_parent_1))) as HTMLElement;
46
+ const t_text_1 = t_child(t_next(t_button_1, 2));
47
+ const t_if_parent_1 = t_next(t_button_1, 4) as HTMLElement;
48
+ const t_if_anchor_1 = t_anchor(t_next(t_child(t_next(t_button_1, 4)))) as HTMLElement;
49
49
 
50
50
  /* @if */
51
51
  const t_if_range_1 = t_range();
@@ -56,7 +56,7 @@ export default function TrafficLight(
56
56
  // @ts-ignore
57
57
  const t_root_1 = t_root(t_fragment_1);
58
58
  // @ts-ignore
59
- const t_text_2 = t_next(t_next(t_root_1));
59
+ const t_text_2 = t_next(t_root_1, 2);
60
60
  t_add_fragment(t_fragment_1, t_if_parent_1, t_before);
61
61
  t_next(t_text_2);
62
62
  });
@@ -67,7 +67,7 @@ export default function TrafficLight(
67
67
  // @ts-ignore
68
68
  const t_root_2 = t_root(t_fragment_2);
69
69
  // @ts-ignore
70
- const t_text_3 = t_next(t_next(t_root_2));
70
+ const t_text_3 = t_next(t_root_2, 2);
71
71
  t_add_fragment(t_fragment_2, t_if_parent_1, t_before);
72
72
  t_next(t_text_3);
73
73
  });
@@ -78,7 +78,7 @@ export default function TrafficLight(
78
78
  // @ts-ignore
79
79
  const t_root_3 = t_root(t_fragment_3);
80
80
  // @ts-ignore
81
- const t_text_4 = t_next(t_next(t_root_3));
81
+ const t_text_4 = t_next(t_root_3, 2);
82
82
  t_add_fragment(t_fragment_3, t_if_parent_1, t_before);
83
83
  t_next(t_text_4);
84
84
  });
@@ -1,4 +1,5 @@
1
1
  import $run from "../../../../src/render/$run";
2
+ import $watch from "../../../../src/render/$watch";
2
3
  import { type SlotRender } from "../../../../src/types/SlotRender";
3
4
  import t_add_fragment from "../../../../src/render/addFragment";
4
5
  import t_child from "../../../../src/render/nodeChild";
@@ -21,7 +22,7 @@ export default function UserProfile(
21
22
  // @ts-ignore
22
23
  $slots?: Record<string, SlotRender>
23
24
  ) {
24
- $props ??= {};
25
+ $props ??= $watch({});
25
26
 
26
27
  /* User interface */
27
28
  const t_fragments: DocumentFragment[] = [];
@@ -30,9 +31,9 @@ export default function UserProfile(
30
31
  // @ts-ignore
31
32
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
32
33
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
33
- const t_text_2 = t_child(t_next(t_next(t_next(t_child(t_div_1)))));
34
- const t_text_3 = t_child(t_next(t_next(t_next(t_next(t_next(t_child(t_div_1)))))));
35
- const t_text_4 = t_child(t_next(t_next(t_next(t_next(t_next(t_next(t_next(t_child(t_div_1)))))))));
34
+ const t_text_2 = t_child(t_next(t_child(t_div_1), 3));
35
+ const t_text_3 = t_child(t_next(t_child(t_div_1), 5));
36
+ const t_text_4 = t_child(t_next(t_child(t_div_1), 7));
36
37
  $run(function setTextContent() {
37
38
  t_text_1.textContent = `My name is ${t_fmt($props.name)}!`;
38
39
  });
@@ -13,6 +13,7 @@ export default function UserProfile(
13
13
  // @ts-ignore
14
14
  $slots?: Record<string, ServerSlotRender>
15
15
  ) {
16
+ $props ??= {};
16
17
 
17
18
  /* User interface */
18
19
  let $output = "";
@@ -1,11 +1,12 @@
1
1
  import $run from "../../../../src/render/$run";
2
+ import $watch from "../../../../src/render/$watch";
2
3
  import { type SlotRender } from "../../../../src/types/SlotRender";
3
4
  import t_add_fragment from "../../../../src/render/addFragment";
4
5
  import t_anchor from "../../../../src/render/nodeAnchor";
5
6
  import t_fragment from "../../../../src/render/getFragment";
6
7
  import t_root from "../../../../src/render/nodeRoot";
7
8
 
8
- import UserProfile from "./UserProfile-client";
9
+ import UserProfile from "../output/./UserProfile-client";
9
10
 
10
11
  export default function UserProfileApp(
11
12
  $parent: ParentNode,
@@ -27,7 +28,7 @@ export default function UserProfileApp(
27
28
  const t_comp_anchor_1 = t_anchor(t_root_0) as HTMLElement;
28
29
 
29
30
  /* @component */
30
- const t_props_1: any = {};
31
+ const t_props_1: any = $watch({});
31
32
  t_props_1["name"] = "John";
32
33
  $run(function setProp() {
33
34
  t_props_1["age"] = 20;
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import UserProfile from "./UserProfile-server";
3
+ import UserProfile from "../output/./UserProfile-server";
4
4
 
5
5
  export default function UserProfileApp(
6
6
  // @ts-ignore
@@ -28,9 +28,9 @@ export default function UserProfileContext(
28
28
  const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div> <h2>My Profile</h2> <p>#</p> <p>#</p> <button> Update username to Jane </button> </div>`);
29
29
  // @ts-ignore
30
30
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
31
- const t_text_1 = t_child(t_next(t_next(t_next(t_child(t_div_1)))));
32
- const t_text_2 = t_child(t_next(t_next(t_next(t_next(t_next(t_child(t_div_1)))))));
33
- const t_button_1 = t_next(t_next(t_next(t_next(t_next(t_next(t_next(t_child(t_div_1)))))))) as HTMLElement;
31
+ const t_text_1 = t_child(t_next(t_child(t_div_1), 3));
32
+ const t_text_2 = t_child(t_next(t_child(t_div_1), 5));
33
+ const t_button_1 = t_next(t_child(t_div_1), 7) as HTMLElement;
34
34
  $run(function setTextContent() {
35
35
  t_text_1.textContent = `Username: ${t_fmt($context.user.username)}`;
36
36
  });
@@ -10,7 +10,7 @@ import t_fragment from "../../../../src/render/getFragment";
10
10
  import t_next from "../../../../src/render/nodeNext";
11
11
  import t_root from "../../../../src/render/nodeRoot";
12
12
 
13
- import UserProfileContext from "./UserProfileContext-client";
13
+ import UserProfileContext from "../output/./UserProfileContext-client";
14
14
 
15
15
  export default function UserProfileContextApp(
16
16
  $parent: ParentNode,
@@ -39,7 +39,7 @@ export default function UserProfileContextApp(
39
39
  // @ts-ignore
40
40
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
41
41
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
42
- const t_comp_anchor_1 = t_anchor(t_next(t_next(t_next(t_child(t_div_1))))) as HTMLElement;
42
+ const t_comp_anchor_1 = t_anchor(t_next(t_child(t_div_1), 3)) as HTMLElement;
43
43
 
44
44
  /* @component */
45
45
  UserProfileContext(t_div_1, t_comp_anchor_1, undefined, $context);
@@ -3,7 +3,7 @@ import $watch from "../../../../src/render/$serverWatch";
3
3
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
4
4
  import t_fmt from "../../../../src/render/formatText";
5
5
 
6
- import UserProfileContext from "./UserProfileContext-server";
6
+ import UserProfileContext from "../output/./UserProfileContext-server";
7
7
 
8
8
  export default function UserProfileContextApp(
9
9
  // @ts-ignore
@@ -1,3 +1,4 @@
1
+ import $watch from "../../../../src/render/$watch";
1
2
  import { type SlotRender } from "../../../../src/types/SlotRender";
2
3
  import t_add_fragment from "../../../../src/render/addFragment";
3
4
  import t_child from "../../../../src/render/nodeChild";
@@ -15,7 +16,7 @@ export default function AnswerButton(
15
16
  // @ts-ignore
16
17
  $slots?: Record<string, SlotRender>
17
18
  ) {
18
- $props ??= {};
19
+ $props ??= $watch({});
19
20
 
20
21
  /* User interface */
21
22
  const t_fragments: DocumentFragment[] = [];
@@ -24,7 +25,7 @@ export default function AnswerButton(
24
25
  // @ts-ignore
25
26
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
26
27
  const t_button_1 = t_next(t_child(t_div_1)) as HTMLElement;
27
- const t_button_2 = t_next(t_next(t_button_1)) as HTMLElement;
28
+ const t_button_2 = t_next(t_button_1, 2) as HTMLElement;
28
29
  t_event(t_button_1, "click", $props.onYes);
29
30
  t_event(t_button_2, "click", $props.onNo);
30
31
  t_add_fragment(t_fragment_0, $parent, $anchor);
@@ -7,6 +7,7 @@ export default function AnswerButton(
7
7
  // @ts-ignore
8
8
  $slots?: Record<string, ServerSlotRender>
9
9
  ) {
10
+ $props ??= {};
10
11
 
11
12
  /* User interface */
12
13
  let $output = "";
@@ -9,7 +9,7 @@ import t_fragment from "../../../../src/render/getFragment";
9
9
  import t_next from "../../../../src/render/nodeNext";
10
10
  import t_root from "../../../../src/render/nodeRoot";
11
11
 
12
- import AnswerButton from "../output/AnswerButton-client";
12
+ import AnswerButton from "../output/./AnswerButton-client";
13
13
 
14
14
  export default function AnswerButtonApp(
15
15
  $parent: ParentNode,
@@ -40,10 +40,10 @@ export default function AnswerButtonApp(
40
40
  const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div> <p>Are you happy?</p> <!> <p style="font-size: 50px;">#</p> </div>`);
41
41
  // @ts-ignore
42
42
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
43
- const t_comp_anchor_1 = t_anchor(t_next(t_next(t_next(t_child(t_div_1))))) as HTMLElement;
43
+ const t_comp_anchor_1 = t_anchor(t_next(t_child(t_div_1), 3)) as HTMLElement;
44
44
 
45
45
  /* @component */
46
- const t_props_1: any = {};
46
+ const t_props_1: any = $watch({});
47
47
  $run(function setProp() {
48
48
  t_props_1["onYes"] = onAnswerYes;
49
49
  });
@@ -51,7 +51,7 @@ export default function AnswerButtonApp(
51
51
  t_props_1["onNo"] = onAnswerNo;
52
52
  });
53
53
  AnswerButton(t_div_1, t_comp_anchor_1, t_props_1, $context);
54
- const t_text_1 = t_child(t_next(t_next(t_comp_anchor_1)));
54
+ const t_text_1 = t_child(t_next(t_comp_anchor_1, 2));
55
55
  $run(function setTextContent() {
56
56
  t_text_1.textContent = t_fmt($state.isHappy ? "😀" : "😥");
57
57
  });
@@ -2,7 +2,7 @@ import $watch from "../../../../src/render/$serverWatch";
2
2
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
3
3
  import t_fmt from "../../../../src/render/formatText";
4
4
 
5
- import AnswerButton from "../output/AnswerButton-server";
5
+ import AnswerButton from "../output/./AnswerButton-server";
6
6
 
7
7
  export default function AnswerButtonApp(
8
8
  // @ts-ignore
@@ -46,7 +46,7 @@ export default function ColorSelect(
46
46
  // @ts-ignore
47
47
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
48
48
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
49
- const t_select_1 = t_next(t_next(t_next(t_child(t_div_1)))) as HTMLElement;
49
+ const t_select_1 = t_next(t_child(t_div_1), 3) as HTMLElement;
50
50
  const t_for_anchor_1 = t_anchor(t_next(t_child(t_select_1))) as HTMLElement;
51
51
 
52
52
  /* @for */
@@ -59,7 +59,7 @@ export default function Colors(
59
59
  const t_root_1 = t_root(t_fragment_1);
60
60
  const t_text_1 = t_child(t_next(t_root_1));
61
61
  // @ts-ignore
62
- const t_text_2 = t_next(t_next(t_root_1));
62
+ const t_text_2 = t_next(t_root_1, 2);
63
63
  $run(function setTextContent() {
64
64
  t_text_1.textContent = t_fmt(t_item.data.color);
65
65
  });
@@ -35,7 +35,7 @@ export default function Counter(
35
35
  // @ts-ignore
36
36
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
37
37
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
38
- const t_button_1 = t_next(t_next(t_next(t_child(t_div_1)))) as HTMLElement;
38
+ const t_button_1 = t_next(t_child(t_div_1), 3) as HTMLElement;
39
39
  $run(function setTextContent() {
40
40
  t_text_1.textContent = `Counter: ${t_fmt($state.count)}`;
41
41
  });
@@ -30,7 +30,7 @@ export default function FunnyButton(
30
30
  // @ts-ignore
31
31
  const t_root_1 = t_root(t_fragment_1);
32
32
  // @ts-ignore
33
- const t_text_1 = t_next(t_next(t_root_1));
33
+ const t_text_1 = t_next(t_root_1, 2);
34
34
  t_add_fragment(t_fragment_1, t_button_1, t_slot_anchor_1);
35
35
  t_next(t_text_1);
36
36
  }
@@ -6,7 +6,7 @@ import t_fragment from "../../../../src/render/getFragment";
6
6
  import t_next from "../../../../src/render/nodeNext";
7
7
  import t_root from "../../../../src/render/nodeRoot";
8
8
 
9
- import FunnyButton from "../output/FunnyButton-client";
9
+ import FunnyButton from "../output/./FunnyButton-client";
10
10
 
11
11
  export default function FunnyButtonApp(
12
12
  $parent: ParentNode,
@@ -29,7 +29,7 @@ export default function FunnyButtonApp(
29
29
 
30
30
  /* @component */
31
31
  FunnyButton(t_div_1, t_comp_anchor_1, undefined, $context);
32
- const t_comp_anchor_2 = t_anchor(t_next(t_next(t_comp_anchor_1))) as HTMLElement;
32
+ const t_comp_anchor_2 = t_anchor(t_next(t_comp_anchor_1, 2)) as HTMLElement;
33
33
 
34
34
  /* @component */
35
35
  const t_slots_1: Record<string, SlotRender> = {};
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import FunnyButton from "../output/FunnyButton-server";
3
+ import FunnyButton from "../output/./FunnyButton-server";
4
4
 
5
5
  export default function FunnyButtonApp(
6
6
  // @ts-ignore
@@ -1,7 +1,6 @@
1
1
  import $mount from "../../../../src/render/$mount";
2
2
  import { type SlotRender } from "../../../../src/types/SlotRender";
3
3
  import t_add_fragment from "../../../../src/render/addFragment";
4
- import t_flush from "../../../../src/render/flushMountEffects";
5
4
  import t_fragment from "../../../../src/render/getFragment";
6
5
  import t_next from "../../../../src/render/nodeNext";
7
6
  import t_root from "../../../../src/render/nodeRoot";
@@ -34,5 +33,4 @@ export default function InputFocused(
34
33
  t_add_fragment(t_fragment_0, $parent, $anchor);
35
34
  t_next(t_input_1);
36
35
 
37
- t_flush();
38
36
  }
@@ -19,7 +19,7 @@ export default function InputFocused(
19
19
 
20
20
  /* User interface */
21
21
  let $output = "";
22
- $output += `<input self="${t_attr(inputElement) || ""}">`;
22
+ $output += `<input ref="${t_attr(inputElement) || ""}">`;
23
23
 
24
24
  return $output;
25
25
  }
@@ -31,7 +31,7 @@ export default function InputHello(
31
31
  // @ts-ignore
32
32
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
33
33
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
34
- const t_input_1 = t_next(t_next(t_next(t_child(t_div_1)))) as HTMLInputElement;
34
+ const t_input_1 = t_next(t_child(t_div_1), 3) as HTMLInputElement;
35
35
  $run(function setTextContent() {
36
36
  t_text_1.textContent = t_fmt($state.text);
37
37
  });
@@ -31,7 +31,7 @@ export default function IsAvailable(
31
31
  // @ts-ignore
32
32
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
33
33
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
34
- const t_input_1 = t_next(t_next(t_next(t_child(t_div_1)))) as HTMLInputElement;
34
+ const t_input_1 = t_next(t_child(t_div_1), 3) as HTMLInputElement;
35
35
  $run(function setTextContent() {
36
36
  t_text_1.textContent = t_fmt($state.isAvailable ? "Available" : "Not available");
37
37
  });
@@ -31,8 +31,8 @@ export default function PickPill(
31
31
  // @ts-ignore
32
32
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
33
33
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
34
- const t_input_1 = t_next(t_next(t_next(t_child(t_div_1)))) as HTMLInputElement;
35
- const t_input_2 = t_next(t_next(t_next(t_next(t_input_1)))) as HTMLInputElement;
34
+ const t_input_1 = t_next(t_child(t_div_1), 3) as HTMLInputElement;
35
+ const t_input_2 = t_next(t_input_1, 4) as HTMLInputElement;
36
36
  $run(function setTextContent() {
37
37
  t_text_1.textContent = `Picked: ${t_fmt($state.picked)}`;
38
38
  });
@@ -43,9 +43,9 @@ export default function TrafficLight(
43
43
  // @ts-ignore
44
44
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
45
45
  const t_button_1 = t_next(t_child(t_div_1)) as HTMLElement;
46
- const t_text_1 = t_child(t_next(t_next(t_button_1)));
47
- const t_if_parent_1 = t_next(t_next(t_next(t_next(t_button_1)))) as HTMLElement;
48
- const t_if_anchor_1 = t_anchor(t_next(t_child(t_if_parent_1))) as HTMLElement;
46
+ const t_text_1 = t_child(t_next(t_button_1, 2));
47
+ const t_if_parent_1 = t_next(t_button_1, 4) as HTMLElement;
48
+ const t_if_anchor_1 = t_anchor(t_next(t_child(t_next(t_button_1, 4)))) as HTMLElement;
49
49
 
50
50
  /* @if */
51
51
  const t_if_range_1 = t_range();
@@ -56,7 +56,7 @@ export default function TrafficLight(
56
56
  // @ts-ignore
57
57
  const t_root_1 = t_root(t_fragment_1);
58
58
  // @ts-ignore
59
- const t_text_2 = t_next(t_next(t_root_1));
59
+ const t_text_2 = t_next(t_root_1, 2);
60
60
  t_add_fragment(t_fragment_1, t_if_parent_1, t_before);
61
61
  t_next(t_text_2);
62
62
  });
@@ -67,7 +67,7 @@ export default function TrafficLight(
67
67
  // @ts-ignore
68
68
  const t_root_2 = t_root(t_fragment_2);
69
69
  // @ts-ignore
70
- const t_text_3 = t_next(t_next(t_root_2));
70
+ const t_text_3 = t_next(t_root_2, 2);
71
71
  t_add_fragment(t_fragment_2, t_if_parent_1, t_before);
72
72
  t_next(t_text_3);
73
73
  });
@@ -78,7 +78,7 @@ export default function TrafficLight(
78
78
  // @ts-ignore
79
79
  const t_root_3 = t_root(t_fragment_3);
80
80
  // @ts-ignore
81
- const t_text_4 = t_next(t_next(t_root_3));
81
+ const t_text_4 = t_next(t_root_3, 2);
82
82
  t_add_fragment(t_fragment_3, t_if_parent_1, t_before);
83
83
  t_next(t_text_4);
84
84
  });
@@ -1,4 +1,5 @@
1
1
  import $run from "../../../../src/render/$run";
2
+ import $watch from "../../../../src/render/$watch";
2
3
  import { type SlotRender } from "../../../../src/types/SlotRender";
3
4
  import t_add_fragment from "../../../../src/render/addFragment";
4
5
  import t_child from "../../../../src/render/nodeChild";
@@ -21,7 +22,7 @@ export default function UserProfile(
21
22
  // @ts-ignore
22
23
  $slots?: Record<string, SlotRender>
23
24
  ) {
24
- $props ??= {};
25
+ $props ??= $watch({});
25
26
 
26
27
  /* User interface */
27
28
  const t_fragments: DocumentFragment[] = [];
@@ -30,9 +31,9 @@ export default function UserProfile(
30
31
  // @ts-ignore
31
32
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
32
33
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
33
- const t_text_2 = t_child(t_next(t_next(t_next(t_child(t_div_1)))));
34
- const t_text_3 = t_child(t_next(t_next(t_next(t_next(t_next(t_child(t_div_1)))))));
35
- const t_text_4 = t_child(t_next(t_next(t_next(t_next(t_next(t_next(t_next(t_child(t_div_1)))))))));
34
+ const t_text_2 = t_child(t_next(t_child(t_div_1), 3));
35
+ const t_text_3 = t_child(t_next(t_child(t_div_1), 5));
36
+ const t_text_4 = t_child(t_next(t_child(t_div_1), 7));
36
37
  $run(function setTextContent() {
37
38
  t_text_1.textContent = `My name is ${t_fmt($props.name)}!`;
38
39
  });
@@ -13,6 +13,7 @@ export default function UserProfile(
13
13
  // @ts-ignore
14
14
  $slots?: Record<string, ServerSlotRender>
15
15
  ) {
16
+ $props ??= {};
16
17
 
17
18
  /* User interface */
18
19
  let $output = "";
@@ -1,11 +1,12 @@
1
1
  import $run from "../../../../src/render/$run";
2
+ import $watch from "../../../../src/render/$watch";
2
3
  import { type SlotRender } from "../../../../src/types/SlotRender";
3
4
  import t_add_fragment from "../../../../src/render/addFragment";
4
5
  import t_anchor from "../../../../src/render/nodeAnchor";
5
6
  import t_fragment from "../../../../src/render/getFragment";
6
7
  import t_root from "../../../../src/render/nodeRoot";
7
8
 
8
- import UserProfile from "../output/UserProfile-client";
9
+ import UserProfile from "../output/./UserProfile-client";
9
10
 
10
11
  export default function UserProfileApp(
11
12
  $parent: ParentNode,
@@ -27,7 +28,7 @@ export default function UserProfileApp(
27
28
  const t_comp_anchor_1 = t_anchor(t_root_0) as HTMLElement;
28
29
 
29
30
  /* @component */
30
- const t_props_1: any = {};
31
+ const t_props_1: any = $watch({});
31
32
  t_props_1["name"] = "John";
32
33
  $run(function setProp() {
33
34
  t_props_1["age"] = 20;
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import UserProfile from "../output/UserProfile-server";
3
+ import UserProfile from "../output/./UserProfile-server";
4
4
 
5
5
  export default function UserProfileApp(
6
6
  // @ts-ignore
@@ -28,9 +28,9 @@ export default function UserProfileContext(
28
28
  const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div> <h2>My Profile</h2> <p>#</p> <p>#</p> <button> Update username to Jane </button> </div>`);
29
29
  // @ts-ignore
30
30
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
31
- const t_text_1 = t_child(t_next(t_next(t_next(t_child(t_div_1)))));
32
- const t_text_2 = t_child(t_next(t_next(t_next(t_next(t_next(t_child(t_div_1)))))));
33
- const t_button_1 = t_next(t_next(t_next(t_next(t_next(t_next(t_next(t_child(t_div_1)))))))) as HTMLElement;
31
+ const t_text_1 = t_child(t_next(t_child(t_div_1), 3));
32
+ const t_text_2 = t_child(t_next(t_child(t_div_1), 5));
33
+ const t_button_1 = t_next(t_child(t_div_1), 7) as HTMLElement;
34
34
  $run(function setTextContent() {
35
35
  t_text_1.textContent = `Username: ${t_fmt($context.user.username)}`;
36
36
  });
@@ -10,7 +10,7 @@ import t_fragment from "../../../../src/render/getFragment";
10
10
  import t_next from "../../../../src/render/nodeNext";
11
11
  import t_root from "../../../../src/render/nodeRoot";
12
12
 
13
- import UserProfileContext from "../output/UserProfileContext-client";
13
+ import UserProfileContext from "../output/./UserProfileContext-client";
14
14
 
15
15
  export default function UserProfileContextApp(
16
16
  $parent: ParentNode,
@@ -39,7 +39,7 @@ export default function UserProfileContextApp(
39
39
  // @ts-ignore
40
40
  const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
41
41
  const t_text_1 = t_child(t_next(t_child(t_div_1)));
42
- const t_comp_anchor_1 = t_anchor(t_next(t_next(t_next(t_child(t_div_1))))) as HTMLElement;
42
+ const t_comp_anchor_1 = t_anchor(t_next(t_child(t_div_1), 3)) as HTMLElement;
43
43
 
44
44
  /* @component */
45
45
  UserProfileContext(t_div_1, t_comp_anchor_1, undefined, $context);
@@ -3,7 +3,7 @@ import $watch from "../../../../src/render/$serverWatch";
3
3
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
4
4
  import t_fmt from "../../../../src/render/formatText";
5
5
 
6
- import UserProfileContext from "../output/UserProfileContext-server";
6
+ import UserProfileContext from "../output/./UserProfileContext-server";
7
7
 
8
8
  export default function UserProfileContextApp(
9
9
  // @ts-ignore
@@ -0,0 +1,18 @@
1
+ export default function Reactive($props: any) {
2
+ let $state = $watch({ text: "before" })
3
+
4
+ @render {
5
+ <div>
6
+ <button onclick={() => $state.text = "after"}>Update text</button>
7
+ <Child text={$state.text} />
8
+ </div>
9
+ }
10
+ }
11
+
12
+ function Child($props: any) {
13
+ @render {
14
+ <p>
15
+ {$props.text}
16
+ </p>
17
+ }
18
+ }