@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
@@ -0,0 +1,70 @@
1
+ import $run from "../../../../src/render/$run";
2
+ import $watch from "../../../../src/render/$watch";
3
+ import { type SlotRender } from "../../../../src/types/SlotRender";
4
+ import t_add_fragment from "../../../../src/render/addFragment";
5
+ import t_anchor from "../../../../src/render/nodeAnchor";
6
+ import t_child from "../../../../src/render/nodeChild";
7
+ import t_event from "../../../../src/render/addEvent";
8
+ import t_fmt from "../../../../src/render/formatText";
9
+ import t_fragment from "../../../../src/render/getFragment";
10
+ import t_next from "../../../../src/render/nodeNext";
11
+ import t_root from "../../../../src/render/nodeRoot";
12
+
13
+ export default function Reactive(
14
+ $parent: ParentNode,
15
+ $anchor: Node | null,
16
+ $props: any,
17
+ // @ts-ignore
18
+ $context?: Record<PropertyKey, any>,
19
+ // @ts-ignore
20
+ $slots?: Record<string, SlotRender>
21
+ ) {
22
+
23
+ let $state = $watch({ text: "before" })
24
+
25
+ /* User interface */
26
+ const t_fragments: DocumentFragment[] = [];
27
+
28
+ const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div> <button>Update text</button> <!> </div>`);
29
+ // @ts-ignore
30
+ const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
31
+ const t_button_1 = t_next(t_child(t_div_1)) as HTMLElement;
32
+ const t_comp_anchor_1 = t_anchor(t_next(t_button_1, 2)) as HTMLElement;
33
+
34
+ /* @component */
35
+ const t_props_1: any = $watch({});
36
+ $run(function setProp() {
37
+ t_props_1["text"] = $state.text;
38
+ });
39
+ Child(t_div_1, t_comp_anchor_1, t_props_1, $context);
40
+ t_event(t_button_1, "click", () => $state.text = "after");
41
+ t_add_fragment(t_fragment_0, $parent, $anchor);
42
+ t_next(t_div_1);
43
+
44
+ }
45
+
46
+ function Child(
47
+ $parent: ParentNode,
48
+ $anchor: Node | null,
49
+ $props: any,
50
+ // @ts-ignore
51
+ $context?: Record<PropertyKey, any>,
52
+ // @ts-ignore
53
+ $slots?: Record<string, SlotRender>
54
+ ) {
55
+ $props ??= $watch({});
56
+
57
+ /* User interface */
58
+ const t_fragments: DocumentFragment[] = [];
59
+
60
+ const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<p>#</p>`);
61
+ // @ts-ignore
62
+ const t_p_1 = t_root(t_fragment_0) as HTMLElement;
63
+ const t_text_1 = t_child(t_p_1);
64
+ $run(function setTextContent() {
65
+ t_text_1.textContent = ` ${t_fmt($props.text)} `;
66
+ });
67
+ t_add_fragment(t_fragment_0, $parent, $anchor);
68
+ t_next(t_p_1);
69
+
70
+ }
@@ -0,0 +1,40 @@
1
+ import $watch from "../../../../src/render/$serverWatch";
2
+ import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
3
+ import t_fmt from "../../../../src/render/formatText";
4
+
5
+ export default function Reactive(
6
+ $props: any,
7
+ // @ts-ignore
8
+ $context?: Record<PropertyKey, any>,
9
+ // @ts-ignore
10
+ $slots?: Record<string, ServerSlotRender>
11
+ ) {
12
+ let $state = $watch({ text: "before" })
13
+
14
+ /* User interface */
15
+ let $output = "";
16
+ $output += `<div> <button>Update text</button> `;
17
+ const t_props_1: any = {};
18
+ t_props_1["text"] = $state.text;
19
+
20
+ $output += Child(t_props_1, $context)
21
+ $output += ` </div>`;
22
+
23
+ return $output;
24
+ }
25
+
26
+ function Child(
27
+ $props: any,
28
+ // @ts-ignore
29
+ $context?: Record<PropertyKey, any>,
30
+ // @ts-ignore
31
+ $slots?: Record<string, ServerSlotRender>
32
+ ) {
33
+ $props ??= {};
34
+
35
+ /* User interface */
36
+ let $output = "";
37
+ $output += `<p> ${t_fmt($props.text)} </p>`;
38
+
39
+ return $output;
40
+ }
@@ -0,0 +1,70 @@
1
+ import $run from "../../../../src/render/$run";
2
+ import $watch from "../../../../src/render/$watch";
3
+ import { type SlotRender } from "../../../../src/types/SlotRender";
4
+ import t_add_fragment from "../../../../src/render/addFragment";
5
+ import t_anchor from "../../../../src/render/nodeAnchor";
6
+ import t_child from "../../../../src/render/nodeChild";
7
+ import t_event from "../../../../src/render/addEvent";
8
+ import t_fmt from "../../../../src/render/formatText";
9
+ import t_fragment from "../../../../src/render/getFragment";
10
+ import t_next from "../../../../src/render/nodeNext";
11
+ import t_root from "../../../../src/render/nodeRoot";
12
+
13
+ export default function Reactive(
14
+ $parent: ParentNode,
15
+ $anchor: Node | null,
16
+ $props: any,
17
+ // @ts-ignore
18
+ $context?: Record<PropertyKey, any>,
19
+ // @ts-ignore
20
+ $slots?: Record<string, SlotRender>
21
+ ) {
22
+
23
+ let $state = $watch({ text: "before" })
24
+
25
+ /* User interface */
26
+ const t_fragments: DocumentFragment[] = [];
27
+
28
+ const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<div> <button>Update text</button> <!> </div>`);
29
+ // @ts-ignore
30
+ const t_div_1 = t_root(t_fragment_0) as HTMLDivElement;
31
+ const t_button_1 = t_next(t_child(t_div_1)) as HTMLElement;
32
+ const t_comp_anchor_1 = t_anchor(t_next(t_button_1, 2)) as HTMLElement;
33
+
34
+ /* @component */
35
+ const t_props_1: any = $watch({});
36
+ $run(function setProp() {
37
+ t_props_1["text"] = $state.text;
38
+ });
39
+ Child(t_div_1, t_comp_anchor_1, t_props_1, $context);
40
+ t_event(t_button_1, "click", () => $state.text = "after");
41
+ t_add_fragment(t_fragment_0, $parent, $anchor);
42
+ t_next(t_div_1);
43
+
44
+ }
45
+
46
+ function Child(
47
+ $parent: ParentNode,
48
+ $anchor: Node | null,
49
+ $props: any,
50
+ // @ts-ignore
51
+ $context?: Record<PropertyKey, any>,
52
+ // @ts-ignore
53
+ $slots?: Record<string, SlotRender>
54
+ ) {
55
+ $props ??= $watch({});
56
+
57
+ /* User interface */
58
+ const t_fragments: DocumentFragment[] = [];
59
+
60
+ const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, `<p>#</p>`);
61
+ // @ts-ignore
62
+ const t_p_1 = t_root(t_fragment_0) as HTMLElement;
63
+ const t_text_1 = t_child(t_p_1);
64
+ $run(function setTextContent() {
65
+ t_text_1.textContent = ` ${t_fmt($props.text)} `;
66
+ });
67
+ t_add_fragment(t_fragment_0, $parent, $anchor);
68
+ t_next(t_p_1);
69
+
70
+ }
@@ -0,0 +1,40 @@
1
+ import $watch from "../../../../src/render/$serverWatch";
2
+ import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
3
+ import t_fmt from "../../../../src/render/formatText";
4
+
5
+ export default function Reactive(
6
+ $props: any,
7
+ // @ts-ignore
8
+ $context?: Record<PropertyKey, any>,
9
+ // @ts-ignore
10
+ $slots?: Record<string, ServerSlotRender>
11
+ ) {
12
+ let $state = $watch({ text: "before" })
13
+
14
+ /* User interface */
15
+ let $output = "";
16
+ $output += `<div> <button>Update text</button> `;
17
+ const t_props_1: any = {};
18
+ t_props_1["text"] = $state.text;
19
+
20
+ $output += Child(t_props_1, $context)
21
+ $output += ` </div>`;
22
+
23
+ return $output;
24
+ }
25
+
26
+ function Child(
27
+ $props: any,
28
+ // @ts-ignore
29
+ $context?: Record<PropertyKey, any>,
30
+ // @ts-ignore
31
+ $slots?: Record<string, ServerSlotRender>
32
+ ) {
33
+ $props ??= {};
34
+
35
+ /* User interface */
36
+ let $output = "";
37
+ $output += `<p> ${t_fmt($props.text)} </p>`;
38
+
39
+ return $output;
40
+ }
@@ -0,0 +1,51 @@
1
+ import { getByText, queryByText } from "@testing-library/dom";
2
+ import "@testing-library/jest-dom/vitest";
3
+ import userEvent from "@testing-library/user-event";
4
+ import { beforeAll, expect, test } from "vitest";
5
+ import { $watch } from "../../src";
6
+ import buildOutputFiles from "../buildOutputFiles";
7
+ import hydrateComponent from "../hydrateComponent";
8
+ import importComponent from "../importComponent";
9
+ import mountComponent from "../mountComponent";
10
+
11
+ const componentPath = "./test/props/components/Reactive";
12
+
13
+ beforeAll(() => {
14
+ buildOutputFiles(componentPath);
15
+ });
16
+
17
+ interface State {
18
+ text: string;
19
+ }
20
+
21
+ test("props reactive -- mounted", async () => {
22
+ let $state = $watch({ text: "before" });
23
+
24
+ const container = document.createElement("div");
25
+ const component = await importComponent(componentPath, "client");
26
+ mountComponent(container, component, $state);
27
+
28
+ check(container, $state);
29
+ });
30
+
31
+ test("props reactive -- hydrated", async () => {
32
+ let $state = $watch({ text: "before" });
33
+
34
+ const container = document.createElement("div");
35
+ const clientComponent = await importComponent(componentPath, "client");
36
+ const serverComponent = await importComponent(componentPath, "server");
37
+ hydrateComponent(container, clientComponent, serverComponent, $state);
38
+
39
+ check(container, $state);
40
+ });
41
+
42
+ async function check(container: HTMLElement, $state: State) {
43
+ expect(queryByText(container, "before")).toBeInTheDocument();
44
+
45
+ await userEvent.click(getByText(container, "Update text"));
46
+
47
+ $state.text = "after";
48
+
49
+ expect(queryByText(container, "before")).not.toBeInTheDocument();
50
+ expect(queryByText(container, "after")).toBeInTheDocument();
51
+ }
@@ -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_anchor from "../../../../src/render/nodeAnchor";
@@ -20,7 +21,7 @@ export default function Replace(
20
21
  // @ts-ignore
21
22
  $slots?: Record<string, SlotRender>
22
23
  ) {
23
- $props ??= {};
24
+ $props ??= $watch({});
24
25
 
25
26
  let counter = 0;
26
27
 
@@ -42,7 +43,7 @@ export default function Replace(
42
43
  const t_root_1 = t_root(t_fragment_1);
43
44
  const t_text_1 = t_child(t_next(t_root_1));
44
45
  // @ts-ignore
45
- const t_text_2 = t_next(t_next(t_root_1));
46
+ const t_text_2 = t_next(t_root_1, 2);
46
47
  $run(function setTextContent() {
47
48
  t_text_1.textContent = `The replace count is ${t_fmt(counter++)}.`;
48
49
  });
@@ -8,6 +8,7 @@ export default function Replace(
8
8
  // @ts-ignore
9
9
  $slots?: Record<string, ServerSlotRender>
10
10
  ) {
11
+ $props ??= {};
11
12
  let counter = 0;
12
13
 
13
14
  /* User interface */
@@ -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_anchor from "../../../../src/render/nodeAnchor";
@@ -20,7 +21,7 @@ export default function Replace(
20
21
  // @ts-ignore
21
22
  $slots?: Record<string, SlotRender>
22
23
  ) {
23
- $props ??= {};
24
+ $props ??= $watch({});
24
25
 
25
26
  let counter = 0;
26
27
 
@@ -42,7 +43,7 @@ export default function Replace(
42
43
  const t_root_1 = t_root(t_fragment_1);
43
44
  const t_text_1 = t_child(t_next(t_root_1));
44
45
  // @ts-ignore
45
- const t_text_2 = t_next(t_next(t_root_1));
46
+ const t_text_2 = t_next(t_root_1, 2);
46
47
  $run(function setTextContent() {
47
48
  t_text_1.textContent = `The replace count is ${t_fmt(counter++)}.`;
48
49
  });
@@ -8,6 +8,7 @@ export default function Replace(
8
8
  // @ts-ignore
9
9
  $slots?: Record<string, ServerSlotRender>
10
10
  ) {
11
+ $props ??= {};
11
12
  let counter = 0;
12
13
 
13
14
  /* User interface */
@@ -27,11 +27,11 @@ export default function Article(
27
27
  if ($slots && $slots["header"]) {
28
28
  $slots["header"](t_slot_parent_1, t_slot_anchor_1, undefined, $context)
29
29
  }
30
- const t_slot_anchor_2 = t_anchor(t_next(t_next(t_slot_parent_1))) as HTMLElement;
30
+ const t_slot_anchor_2 = t_anchor(t_next(t_slot_parent_1, 2)) as HTMLElement;
31
31
  if ($slots && $slots["_"]) {
32
32
  $slots["_"](t_section_1, t_slot_anchor_2, undefined, $context)
33
33
  }
34
- const t_slot_anchor_3 = t_anchor(t_next(t_next(t_slot_anchor_2))) as HTMLElement;
34
+ const t_slot_anchor_3 = t_anchor(t_next(t_slot_anchor_2, 2)) as HTMLElement;
35
35
  if ($slots && $slots["footer"]) {
36
36
  $slots["footer"](t_section_1, t_slot_anchor_3, undefined, $context)
37
37
  }
@@ -5,7 +5,7 @@ import t_fragment from "../../../../src/render/getFragment";
5
5
  import t_next from "../../../../src/render/nodeNext";
6
6
  import t_root from "../../../../src/render/nodeRoot";
7
7
 
8
- import Header from "./Header-client"
8
+ import Header from "../output/./Header-client"
9
9
 
10
10
  export default function Basic(
11
11
  $parent: ParentNode,
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import Header from "./Header-server"
3
+ import Header from "../output/./Header-server"
4
4
 
5
5
  export default function Basic(
6
6
  // @ts-ignore
@@ -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_anchor from "../../../../src/render/nodeAnchor";
@@ -7,7 +8,7 @@ import t_fragment from "../../../../src/render/getFragment";
7
8
  import t_next from "../../../../src/render/nodeNext";
8
9
  import t_root from "../../../../src/render/nodeRoot";
9
10
 
10
- import List from "./List-client"
11
+ import List from "../output/./List-client"
11
12
 
12
13
  export default function Let(
13
14
  $parent: ParentNode,
@@ -18,7 +19,7 @@ export default function Let(
18
19
  // @ts-ignore
19
20
  $slots?: Record<string, SlotRender>
20
21
  ) {
21
- $props ??= {};
22
+ $props ??= $watch({});
22
23
 
23
24
  /* User interface */
24
25
  const t_fragments: DocumentFragment[] = [];
@@ -29,7 +30,7 @@ export default function Let(
29
30
  const t_comp_anchor_1 = t_anchor(t_root_0) as HTMLElement;
30
31
 
31
32
  /* @component */
32
- const t_props_1: any = {};
33
+ const t_props_1: any = $watch({});
33
34
  $run(function setProp() {
34
35
  t_props_1["items"] = $props.items;
35
36
  });
@@ -1,7 +1,7 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
  import t_fmt from "../../../../src/render/formatText";
3
3
 
4
- import List from "./List-server"
4
+ import List from "../output/./List-server"
5
5
 
6
6
  export default function Let(
7
7
  $props: any,
@@ -10,6 +10,7 @@ export default function Let(
10
10
  // @ts-ignore
11
11
  $slots?: Record<string, ServerSlotRender>
12
12
  ) {
13
+ $props ??= {};
13
14
 
14
15
  /* User interface */
15
16
  let $output = "";
@@ -22,7 +22,7 @@ export default function List(
22
22
  $context?: Record<PropertyKey, any>,
23
23
  $slots?: Record<string, SlotRender>
24
24
  ) {
25
- $props ??= {};
25
+ $props ??= $watch({});
26
26
 
27
27
  /* User interface */
28
28
  const t_fragments: DocumentFragment[] = [];
@@ -6,6 +6,7 @@ export default function List(
6
6
  $context?: Record<PropertyKey, any>,
7
7
  $slots?: Record<string, ServerSlotRender>
8
8
  ) {
9
+ $props ??= {};
9
10
 
10
11
  /* User interface */
11
12
  let $output = "";
@@ -5,7 +5,7 @@ import t_fragment from "../../../../src/render/getFragment";
5
5
  import t_next from "../../../../src/render/nodeNext";
6
6
  import t_root from "../../../../src/render/nodeRoot";
7
7
 
8
- import Article from "./Article-client"
8
+ import Article from "../output/./Article-client"
9
9
 
10
10
  export default function Named(
11
11
  $parent: ParentNode,
@@ -40,7 +40,7 @@ export default function Named(
40
40
  // @ts-ignore
41
41
  const t_root_2 = t_root(t_fragment_2);
42
42
  // @ts-ignore
43
- const t_text_1 = t_next(t_next(t_root_2));
43
+ const t_text_1 = t_next(t_root_2, 2);
44
44
  t_add_fragment(t_fragment_2, $sparent, $sanchor);
45
45
  t_next(t_text_1);
46
46
  }
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import Article from "./Article-server"
3
+ import Article from "../output/./Article-server"
4
4
 
5
5
  export default function Named(
6
6
  // @ts-ignore
@@ -4,7 +4,7 @@ import t_anchor from "../../../../src/render/nodeAnchor";
4
4
  import t_fragment from "../../../../src/render/getFragment";
5
5
  import t_root from "../../../../src/render/nodeRoot";
6
6
 
7
- import Header from "./Header-client"
7
+ import Header from "../output/./Header-client"
8
8
 
9
9
  export default function Unused(
10
10
  $parent: ParentNode,
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import Header from "./Header-server"
3
+ import Header from "../output/./Header-server"
4
4
 
5
5
  export default function Unused(
6
6
  // @ts-ignore
@@ -27,11 +27,11 @@ export default function Article(
27
27
  if ($slots && $slots["header"]) {
28
28
  $slots["header"](t_slot_parent_1, t_slot_anchor_1, undefined, $context)
29
29
  }
30
- const t_slot_anchor_2 = t_anchor(t_next(t_next(t_slot_parent_1))) as HTMLElement;
30
+ const t_slot_anchor_2 = t_anchor(t_next(t_slot_parent_1, 2)) as HTMLElement;
31
31
  if ($slots && $slots["_"]) {
32
32
  $slots["_"](t_section_1, t_slot_anchor_2, undefined, $context)
33
33
  }
34
- const t_slot_anchor_3 = t_anchor(t_next(t_next(t_slot_anchor_2))) as HTMLElement;
34
+ const t_slot_anchor_3 = t_anchor(t_next(t_slot_anchor_2, 2)) as HTMLElement;
35
35
  if ($slots && $slots["footer"]) {
36
36
  $slots["footer"](t_section_1, t_slot_anchor_3, undefined, $context)
37
37
  }
@@ -5,7 +5,7 @@ import t_fragment from "../../../../src/render/getFragment";
5
5
  import t_next from "../../../../src/render/nodeNext";
6
6
  import t_root from "../../../../src/render/nodeRoot";
7
7
 
8
- import Header from "../output/Header-client"
8
+ import Header from "../output/./Header-client"
9
9
 
10
10
  export default function Basic(
11
11
  $parent: ParentNode,
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import Header from "../output/Header-server"
3
+ import Header from "../output/./Header-server"
4
4
 
5
5
  export default function Basic(
6
6
  // @ts-ignore
@@ -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_anchor from "../../../../src/render/nodeAnchor";
@@ -7,7 +8,7 @@ import t_fragment from "../../../../src/render/getFragment";
7
8
  import t_next from "../../../../src/render/nodeNext";
8
9
  import t_root from "../../../../src/render/nodeRoot";
9
10
 
10
- import List from "../output/List-client"
11
+ import List from "../output/./List-client"
11
12
 
12
13
  export default function Let(
13
14
  $parent: ParentNode,
@@ -18,7 +19,7 @@ export default function Let(
18
19
  // @ts-ignore
19
20
  $slots?: Record<string, SlotRender>
20
21
  ) {
21
- $props ??= {};
22
+ $props ??= $watch({});
22
23
 
23
24
  /* User interface */
24
25
  const t_fragments: DocumentFragment[] = [];
@@ -29,7 +30,7 @@ export default function Let(
29
30
  const t_comp_anchor_1 = t_anchor(t_root_0) as HTMLElement;
30
31
 
31
32
  /* @component */
32
- const t_props_1: any = {};
33
+ const t_props_1: any = $watch({});
33
34
  $run(function setProp() {
34
35
  t_props_1["items"] = $props.items;
35
36
  });
@@ -1,7 +1,7 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
  import t_fmt from "../../../../src/render/formatText";
3
3
 
4
- import List from "../output/List-server"
4
+ import List from "../output/./List-server"
5
5
 
6
6
  export default function Let(
7
7
  $props: any,
@@ -10,6 +10,7 @@ export default function Let(
10
10
  // @ts-ignore
11
11
  $slots?: Record<string, ServerSlotRender>
12
12
  ) {
13
+ $props ??= {};
13
14
 
14
15
  /* User interface */
15
16
  let $output = "";
@@ -22,7 +22,7 @@ export default function List(
22
22
  $context?: Record<PropertyKey, any>,
23
23
  $slots?: Record<string, SlotRender>
24
24
  ) {
25
- $props ??= {};
25
+ $props ??= $watch({});
26
26
 
27
27
  /* User interface */
28
28
  const t_fragments: DocumentFragment[] = [];
@@ -6,6 +6,7 @@ export default function List(
6
6
  $context?: Record<PropertyKey, any>,
7
7
  $slots?: Record<string, ServerSlotRender>
8
8
  ) {
9
+ $props ??= {};
9
10
 
10
11
  /* User interface */
11
12
  let $output = "";
@@ -5,7 +5,7 @@ import t_fragment from "../../../../src/render/getFragment";
5
5
  import t_next from "../../../../src/render/nodeNext";
6
6
  import t_root from "../../../../src/render/nodeRoot";
7
7
 
8
- import Article from "../output/Article-client"
8
+ import Article from "../output/./Article-client"
9
9
 
10
10
  export default function Named(
11
11
  $parent: ParentNode,
@@ -40,7 +40,7 @@ export default function Named(
40
40
  // @ts-ignore
41
41
  const t_root_2 = t_root(t_fragment_2);
42
42
  // @ts-ignore
43
- const t_text_1 = t_next(t_next(t_root_2));
43
+ const t_text_1 = t_next(t_root_2, 2);
44
44
  t_add_fragment(t_fragment_2, $sparent, $sanchor);
45
45
  t_next(t_text_1);
46
46
  }
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import Article from "../output/Article-server"
3
+ import Article from "../output/./Article-server"
4
4
 
5
5
  export default function Named(
6
6
  // @ts-ignore
@@ -4,7 +4,7 @@ import t_anchor from "../../../../src/render/nodeAnchor";
4
4
  import t_fragment from "../../../../src/render/getFragment";
5
5
  import t_root from "../../../../src/render/nodeRoot";
6
6
 
7
- import Header from "../output/Header-client"
7
+ import Header from "../output/./Header-client"
8
8
 
9
9
  export default function Unused(
10
10
  $parent: ParentNode,
@@ -1,6 +1,6 @@
1
1
  import { type ServerSlotRender } from "../../../../src/types/ServerSlotRender";
2
2
 
3
- import Header from "../output/Header-server"
3
+ import Header from "../output/./Header-server"
4
4
 
5
5
  export default function Unused(
6
6
  // @ts-ignore