@torpor/view 0.1.11 → 0.2.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 (315) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/{ServerSlotRender-t1sOutne.d.cts → ServerSlotRender-BMGG0yq3.d.cts} +4 -4
  4. package/dist/{ServerSlotRender-t1sOutne.d.ts → ServerSlotRender-BMGG0yq3.d.ts} +4 -4
  5. package/dist/chunk-XNO4YEJ3.js +64 -0
  6. package/dist/chunk-XNO4YEJ3.js.map +1 -0
  7. package/dist/compile.cjs +69 -60
  8. package/dist/compile.cjs.map +1 -1
  9. package/dist/compile.js +69 -60
  10. package/dist/compile.js.map +1 -1
  11. package/dist/index.cjs +77 -46
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.cts +6 -3
  14. package/dist/index.d.ts +6 -3
  15. package/dist/index.js +28 -16
  16. package/dist/index.js.map +1 -1
  17. package/dist/metafile-cjs.json +1 -1
  18. package/dist/metafile-esm.json +1 -1
  19. package/dist/ssr.cjs +44 -25
  20. package/dist/ssr.cjs.map +1 -1
  21. package/dist/ssr.d.cts +2 -2
  22. package/dist/ssr.d.ts +2 -2
  23. package/dist/ssr.js +6 -6
  24. package/package.json +5 -5
  25. package/src/compile/build/client/buildComponentNode.ts +13 -11
  26. package/src/compile/build/client/buildElementNode.ts +10 -13
  27. package/src/compile/build/server/buildServerAwaitNode.ts +2 -2
  28. package/src/compile/build/server/buildServerCode.ts +13 -4
  29. package/src/compile/build/server/buildServerComponentNode.ts +21 -16
  30. package/src/compile/build/server/buildServerControlNode.ts +2 -2
  31. package/src/compile/build/server/buildServerElementNode.ts +7 -4
  32. package/src/compile/build/server/buildServerForNode.ts +2 -2
  33. package/src/compile/build/server/buildServerIfNode.ts +2 -2
  34. package/src/compile/build/server/buildServerReplaceNode.ts +2 -2
  35. package/src/compile/build/server/buildServerSlotNode.ts +9 -5
  36. package/src/compile/build/server/buildServerSwitchNode.ts +2 -2
  37. package/src/compile/parse/scopeStyles.ts +1 -0
  38. package/src/debug/printNode.ts +8 -8
  39. package/src/index.ts +2 -2
  40. package/src/render/addFragment.ts +2 -1
  41. package/src/render/{getClasses.ts → buildClasses.ts} +13 -6
  42. package/src/render/buildStyles.ts +19 -0
  43. package/src/render/isCommentNode.ts +3 -0
  44. package/src/render/isFragmentNode.ts +3 -0
  45. package/src/render/isTextNode.ts +3 -0
  46. package/src/render/moveRange.ts +9 -0
  47. package/src/render/nodeAnchor.ts +3 -3
  48. package/src/render/nodeCheckHydrationBreak.ts +2 -2
  49. package/src/render/nodeNext.ts +2 -2
  50. package/src/render/nodeRoot.ts +11 -2
  51. package/src/ssr.ts +2 -2
  52. package/src/types/ServerComponent.ts +1 -1
  53. package/test/attributes/components/output/Attributes-server.ts +4 -3
  54. package/test/attributes/components/temp/{Attributes-server-80f9f58fd6cb30df11867386d4f0b15b44401ebe.ts → Attributes-server-f4c59f5e4757ce0113907389902499efc36cfe38.ts} +4 -3
  55. package/test/await/components/Await.torp +10 -12
  56. package/test/await/components/output/Await-client.ts +6 -7
  57. package/test/await/components/output/Await-server.ts +6 -5
  58. package/test/await/components/temp/{Await-client-9c30564ea39457e614e60c0cc0a71c431e8a1e76.ts → Await-client-17b0e7c682fbff8518a440831620c1024b8be23a.ts} +6 -7
  59. package/test/await/components/temp/{Await-server-f02f39af3bb3344ca6b18a1d64d60b21913fba31.ts → Await-server-eb8d79f8abc791dd8e87f9713534cebf0eb2c854.ts} +6 -5
  60. package/test/bench/components/Bench.torp +1 -1
  61. package/test/bench/components/output/Bench-client.ts +238 -32
  62. package/test/bench/components/output/Bench-server.ts +21 -9
  63. package/test/bench/components/temp/Bench-client-4e18421473e97bac7c24b17ba14751ce14dd187e.ts +414 -0
  64. package/test/bench/components/temp/{Bench-server-00cefa588803c01ca4f2741c595e4f045cdd101e.ts → Bench-server-4648921af9bc146718d55a7e9fc288b47a57dfda.ts} +18 -6
  65. package/test/bind/components/BindComponent.torp +3 -18
  66. package/test/bind/components/BindText.torp +8 -10
  67. package/test/bind/components/output/BindComponent-client.ts +19 -30
  68. package/test/bind/components/output/BindComponent-server.ts +14 -20
  69. package/test/bind/components/output/BindText-client.ts +3 -3
  70. package/test/bind/components/output/BindText-server.ts +4 -3
  71. package/test/bind/components/temp/{BindComponent-client-6f650efb818a185ef33e1b071cfd77415a803dd3.ts → BindComponent-client-a59ee6a598341c64c79be633ae7b22cb594dd0bc.ts} +19 -30
  72. package/test/bind/components/temp/{BindComponent-server-2e6caf0cbbb2831eb4bfbd7dcd6cf4d5c422d047.ts → BindComponent-server-96120f1e75c77e02ba11ab719c225005e168d25f.ts} +14 -20
  73. package/test/bind/components/temp/{BindText-client-134676d616abbad6b8a7ec48df0a2e38cbfe3b87.ts → BindText-client-dac614203e672e51675b22a246983168a7c173ea.ts} +3 -3
  74. package/test/bind/components/temp/{BindText-server-807a1ddcb68410b30429cb088d2e204ed6f585b2.ts → BindText-server-c713033ef787587f752fc8e6282e3a8faeee9a08.ts} +4 -3
  75. package/test/build-server/build-server.test.ts +1 -1
  76. package/test/build-server/components/IfNested.torp +11 -13
  77. package/test/buildHtml.ts +1 -1
  78. package/test/buildOutputFiles.ts +4 -4
  79. package/test/child-component/components/ParentChild.torp +1 -3
  80. package/test/child-component/components/output/ParentChild-client.ts +4 -5
  81. package/test/child-component/components/output/ParentChild-server.ts +12 -8
  82. package/test/child-component/components/temp/{ParentChild-client-50ca7e499599209c9d674f2561413ca14a282c22.ts → ParentChild-client-198e4ebc2ef5277ad7147f69d5879946fbe2d6ec.ts} +4 -5
  83. package/test/child-component/components/temp/{ParentChild-server-5e4a7fa5f4cd1c7dbe6866819025d2c03bfc62cb.ts → ParentChild-server-55e809830788ae740608136cf66664fc5434a9cd.ts} +12 -8
  84. package/test/class/components/Class.torp +22 -24
  85. package/test/class/components/output/Class-client.ts +7 -9
  86. package/test/class/components/output/Class-server.ts +13 -10
  87. package/test/class/components/temp/{Class-client-de2491c550647203bea08727fa8c88f30654db0a.ts → Class-client-7defac0b98d9c9f303670c0372e329e31823f163.ts} +7 -9
  88. package/test/class/components/temp/Class-server-46563e9c3bf56b642ac496b60179decfd0b4e952.ts +43 -0
  89. package/test/component/components/output/Component-server.ts +8 -5
  90. package/test/component/components/output/Header-server.ts +4 -3
  91. package/test/component/components/temp/{Component-server-57f59c74599572da6322a67cb97848cfbfcf6968.ts → Component-server-2d4aa317e6c385036e07f4c3946fc18ba848c00d.ts} +8 -5
  92. package/test/component/components/temp/{Header-server-6969d20782edd8f99d4b5c5b7b5563ce26e6dc2d.ts → Header-server-91088d2a5a543287bfdf1a24d92b66db6ccd294d.ts} +4 -3
  93. package/test/console/components/output/Console-server.ts +4 -3
  94. package/test/console/components/temp/{Console-server-cfb2208b130d5f15403df19ae8341aaa1c9ad33a.ts → Console-server-7bc7f568e9c3626dca1bdafcb23186c2dbc59199.ts} +4 -3
  95. package/test/const/components/Const.torp +4 -6
  96. package/test/const/components/output/Const-client.ts +2 -2
  97. package/test/const/components/output/Const-server.ts +5 -4
  98. package/test/const/components/temp/{Const-client-7dff2758c14bfbd208e301a702ae1781e6daba1b.ts → Const-client-b0293a037d9ed7b6ad4591c153723a3c26d46029.ts} +2 -2
  99. package/test/const/components/temp/{Const-server-1cf6ed84f72d3b15b318b80937b8de1f2c0f188c.ts → Const-server-5fd2444a9ae7a676b7c4480e01e28f7f89624fdc.ts} +5 -4
  100. package/test/dummy/components/temp/ProfilePreview-client-e57ca1ac502e0ddcb3ef376dd5ef27add70090d1.ts +327 -0
  101. package/test/dummy/components/temp/ProfilePreview-server-9d3d0f8b4f80f634db6ba97d037ab07de004b4d3.ts +56 -0
  102. package/test/effects/components/For.torp +3 -5
  103. package/test/effects/components/If.torp +5 -7
  104. package/test/effects/components/NestedIf.torp +6 -8
  105. package/test/effects/components/output/For-client.ts +5 -6
  106. package/test/effects/components/output/For-server.ts +6 -5
  107. package/test/effects/components/output/If-client.ts +5 -7
  108. package/test/effects/components/output/If-server.ts +7 -6
  109. package/test/effects/components/output/NestedIf-client.ts +4 -6
  110. package/test/effects/components/output/NestedIf-server.ts +9 -8
  111. package/test/effects/components/temp/{For-client-35bf9bea43f53d6c0cf807f9e31500765fa0b455.ts → For-client-268e69779d5b744377af9b30df256a453adaf183.ts} +5 -6
  112. package/test/effects/components/temp/{For-server-efe60939d185315f4c9b567b6867c6d5af14d9aa.ts → For-server-b15b01b4daaf50fd95de790102089eb930e84e9b.ts} +6 -5
  113. package/test/effects/components/temp/{If-client-efb994796596d9d08f59a0ab5ffdacc74bd04545.ts → If-client-4df0e6fc27a6f7d60ce056fd65df687213f3a2f9.ts} +5 -7
  114. package/test/effects/components/temp/{If-server-2424b7b812d350d7eb8ff9afb1146807217320cd.ts → If-server-0a213ea232e0225d5a8ecb012ad418136b86fbe7.ts} +7 -6
  115. package/test/effects/components/temp/{NestedIf-client-845b3789b8a938439bff758bc9b3731d769c8ff6.ts → NestedIf-client-bfd381672c51febbe2f101f19afd5f6ff570ce7e.ts} +4 -6
  116. package/test/effects/components/temp/{NestedIf-server-ab260586490cb5afed31377d2226bb5a1fc30e2d.ts → NestedIf-server-6089abc72d6208e64d1818ddb624ad5c3f236afa.ts} +9 -8
  117. package/test/events/components/Increment.torp +9 -11
  118. package/test/events/components/output/Increment-client.ts +3 -3
  119. package/test/events/components/output/Increment-server.ts +4 -3
  120. package/test/events/components/temp/{Increment-client-1b5f9e231c5c4fc059d77ca0da632719283e5ac4.ts → Increment-client-db2fd3376f12b186a4276eac470bf10b7bf2da19.ts} +3 -3
  121. package/test/events/components/temp/{Increment-server-b084f43082e2ec31dbe5f9edc1cb6e37e4c8df9d.ts → Increment-server-062b9757192b84e5a6e247aa44e1e7887129293d.ts} +4 -3
  122. package/test/for/components/output/For-server.ts +6 -5
  123. package/test/for/components/output/ForEscape-server.ts +6 -5
  124. package/test/for/components/output/ForIn-server.ts +6 -5
  125. package/test/for/components/output/ForOf-server.ts +6 -5
  126. package/test/for/components/temp/{For-server-3b6ead39728c79206203c519a215390d07d80f7e.ts → For-server-082c156a9f047995bc55f9477295d8e3262614f5.ts} +6 -5
  127. package/test/for/components/temp/{ForEscape-server-ed906c8cd593a0b467073ada415734de31dc38d9.ts → ForEscape-server-2db43ff8397ddbb114b5bff3d88a63728184a811.ts} +6 -5
  128. package/test/for/components/temp/{ForIn-server-c8f13304a2ba235e091685256909fbfa50bdd5fd.ts → ForIn-server-fda7a21cbb8a7ad69c48d2a8533cc13fa98d54b6.ts} +6 -5
  129. package/test/for/components/temp/{ForOf-server-8c2c33ca6595bf0a5e952ca9971e595e18446623.ts → ForOf-server-cd2b01507304e25c34030755b915f56785375de8.ts} +6 -5
  130. package/test/function/components/Function.torp +8 -10
  131. package/test/function/components/output/Function-client.ts +3 -3
  132. package/test/function/components/output/Function-server.ts +5 -4
  133. package/test/function/components/temp/{Function-client-4e2168306756eb927d5ed4b673334b357eecaa74.ts → Function-client-2068eb8ae35b3157b8eda79addde6afd9f4d7006.ts} +3 -3
  134. package/test/function/components/temp/{Function-server-2b19d0cd881c31dc67132107c6e322a18701c318.ts → Function-server-4b66a728f6f1b170d678313238bdc9158356511e.ts} +5 -4
  135. package/test/html/components/output/Html-server.ts +4 -3
  136. package/test/html/components/temp/{Html-server-d159b0ef04b1f65ae4f9e05a7b44b21e7aa14cf9.ts → Html-server-4f73a2b0c5cd9b82666a99ec6a217c758d435008.ts} +4 -3
  137. package/test/hydrateComponent.ts +2 -3
  138. package/test/if/components/output/IfAfterIf-server.ts +8 -7
  139. package/test/if/components/output/IfElse-server.ts +7 -6
  140. package/test/if/components/output/IfElseIf-server.ts +8 -7
  141. package/test/if/components/output/IfFalse-server.ts +6 -5
  142. package/test/if/components/output/IfNested-server.ts +10 -9
  143. package/test/if/components/temp/{IfAfterIf-server-a5005147e7902d1a5a048c9fe07feb9804eb6560.ts → IfAfterIf-server-3e6a3beab27821c3e53290ee72eca811814aad38.ts} +8 -7
  144. package/test/if/components/temp/{IfElse-server-80d93e5fc4ceba7a645f7081fa11b177dbe730d0.ts → IfElse-server-1b5006dfad695f257c7453a79bde3944898fbf6d.ts} +7 -6
  145. package/test/if/components/temp/{IfElseIf-server-ddc7348705d51b02538301e0aa704130748992cf.ts → IfElseIf-server-11c65065e9e5640ad65cd0c37af07f1e57c4f49c.ts} +8 -7
  146. package/test/if/components/temp/{IfFalse-server-e8385013cfdde584b43cc0d71311cbb417859116.ts → IfFalse-server-40d07bc07e5edffd7386fb6016cd025b98175219.ts} +6 -5
  147. package/test/if/components/temp/{IfNested-server-285a5d8e0e0fcc8ccf421df152fdc00811782835.ts → IfNested-server-061ea3d56576a352be8a9db8424fae0f1d74cd36.ts} +10 -9
  148. package/test/mount/components/output/Mount-server.ts +4 -3
  149. package/test/mount/components/temp/{Mount-server-62f94f276c2d6c9048765a77b575cb21146917f1.ts → Mount-server-8564e4e0886ea754dfedf9a4a5fd82f0484c1d83.ts} +4 -3
  150. package/test/on-mount/components/output/OnMount-server.ts +4 -3
  151. package/test/on-mount/components/temp/{OnMount-server-c531f718eb68754ea6c3001d5db9c07c511e434c.ts → OnMount-server-2ff035e067926fadc284030075aa5da69a05cf31.ts} +4 -3
  152. package/test/party/components/AnswerButton.torp +2 -5
  153. package/test/party/components/AnswerButtonApp.torp +3 -5
  154. package/test/party/components/ColorSelect.torp +8 -10
  155. package/test/party/components/Counter.torp +2 -4
  156. package/test/party/components/CssStyle.torp +2 -4
  157. package/test/party/components/FunnyButtonApp.torp +2 -4
  158. package/test/party/components/InputHello.torp +2 -4
  159. package/test/party/components/IsAvailable.torp +3 -5
  160. package/test/party/components/PickPill.torp +5 -7
  161. package/test/party/components/TrafficLight.torp +12 -14
  162. package/test/party/components/UserProfile.torp +4 -6
  163. package/test/party/components/UserProfileContext.torp +6 -8
  164. package/test/party/components/UserProfileContextApp.torp +2 -4
  165. package/test/party/components/output/AnswerButton-client.ts +3 -4
  166. package/test/party/components/output/AnswerButton-server.ts +4 -3
  167. package/test/party/components/output/AnswerButtonApp-client.ts +4 -5
  168. package/test/party/components/output/AnswerButtonApp-server.ts +8 -5
  169. package/test/party/components/output/ColorSelect-client.ts +4 -4
  170. package/test/party/components/output/ColorSelect-server.ts +6 -5
  171. package/test/party/components/output/Colors-server.ts +6 -5
  172. package/test/party/components/output/Counter-client.ts +4 -4
  173. package/test/party/components/output/Counter-server.ts +4 -3
  174. package/test/party/components/output/CssStyle-client.ts +2 -2
  175. package/test/party/components/output/CssStyle-server.ts +4 -3
  176. package/test/party/components/output/DoubleCount-server.ts +4 -3
  177. package/test/party/components/output/FunnyButton-server.ts +7 -6
  178. package/test/party/components/output/FunnyButtonApp-client.ts +5 -8
  179. package/test/party/components/output/FunnyButtonApp-server.ts +15 -10
  180. package/test/party/components/output/HelloWorld-server.ts +4 -3
  181. package/test/party/components/output/InputFocused-server.ts +4 -3
  182. package/test/party/components/output/InputHello-client.ts +4 -4
  183. package/test/party/components/output/InputHello-server.ts +4 -3
  184. package/test/party/components/output/IsAvailable-client.ts +4 -4
  185. package/test/party/components/output/IsAvailable-server.ts +4 -3
  186. package/test/party/components/output/Name-server.ts +4 -3
  187. package/test/party/components/output/NameUpdate-server.ts +4 -3
  188. package/test/party/components/output/PageTitle-server.ts +4 -3
  189. package/test/party/components/output/PickPill-client.ts +4 -4
  190. package/test/party/components/output/PickPill-server.ts +4 -3
  191. package/test/party/components/output/Time-server.ts +4 -3
  192. package/test/party/components/output/TrafficLight-client.ts +3 -3
  193. package/test/party/components/output/TrafficLight-server.ts +8 -7
  194. package/test/party/components/output/UserProfile-client.ts +6 -6
  195. package/test/party/components/output/UserProfile-server.ts +4 -3
  196. package/test/party/components/output/UserProfileApp-server.ts +8 -5
  197. package/test/party/components/output/UserProfileContext-client.ts +5 -5
  198. package/test/party/components/output/UserProfileContext-server.ts +4 -3
  199. package/test/party/components/output/UserProfileContextApp-client.ts +5 -6
  200. package/test/party/components/output/UserProfileContextApp-server.ts +8 -5
  201. package/test/party/components/temp/{AnswerButton-client-ad8f8db36b7aaa68d8de5898a324bacfbe9f20df.ts → AnswerButton-client-890e28879c132eea21260eb82af832afc6a48507.ts} +3 -4
  202. package/test/party/components/temp/{AnswerButton-server-928b5d447afa865fa09e0142c79bb1f2c1b86875.ts → AnswerButton-server-01ffab9f6f92073640df2cf2cb5473407d82b24f.ts} +4 -3
  203. package/test/party/components/temp/{AnswerButtonApp-client-5661f07868550612bcdeee268b82c473af6a2613.ts → AnswerButtonApp-client-295a835cadf7e7ccec608f84ed01865dd8c73954.ts} +4 -5
  204. package/test/party/components/temp/{AnswerButtonApp-server-e4ea88e0f4d65508950594437e5e34424bd28897.ts → AnswerButtonApp-server-b458692868307e6e08ad3deed9c2db542c28dee0.ts} +8 -5
  205. package/test/party/components/temp/{ColorSelect-client-70bf59d6399d63c0eed421b9d370a1e5c97a89ca.ts → ColorSelect-client-5f74d3b38193a0c9b22317598cdbf2f56754ca2b.ts} +4 -4
  206. package/test/party/components/temp/{ColorSelect-server-90f83722bd85155ebb2b8ccdaf053cd28d3152be.ts → ColorSelect-server-cf0b1b533948a558e1705d9a7cca3c0b6ae8d315.ts} +6 -5
  207. package/test/party/components/temp/{Colors-server-e13d49ba57f7b0dc6fb10a333ec872f5207e1ff0.ts → Colors-server-b050714bfe752b88a99f6498f1b5c13abe6b56a5.ts} +6 -5
  208. package/test/party/components/temp/{Counter-client-3b876c148f2b14da1766eff77eb6c494f7be6414.ts → Counter-client-006caeda8766cb17a161da0c6f58f006f8f16e8b.ts} +4 -4
  209. package/test/party/components/temp/{Counter-server-7adf9376b38d97f1fd4b9c14108e6814e81f14ea.ts → Counter-server-931d36d8e4bcd114047bbfec8aa5f2fac0c2ce1e.ts} +4 -3
  210. package/test/party/components/temp/{CssStyle-client-37465dd48d1479db1bae513eb0b92c4e9a15e9ea.ts → CssStyle-client-6ec06cbc4b34344234d289f6c4a9e427efff85a7.ts} +2 -2
  211. package/test/party/components/temp/{CssStyle-server-90a950501a20bfa5feac84ca6d97898c25bce2ed.ts → CssStyle-server-fa4bad3c82930632730e3b6b9f0e9193cab6f777.ts} +4 -3
  212. package/test/party/components/temp/{DoubleCount-server-62c94483ebe9661e5ecc4f489787e32448ddcafa.ts → DoubleCount-server-8c013a97a08562deb6ad0f35e6e337203b0ddde9.ts} +4 -3
  213. package/test/party/components/temp/{FunnyButton-server-e0adab2be2d283acb8a8b580479ade999dc918e9.ts → FunnyButton-server-3fd55a1e1dc71c183a6cea68e4c4693c988b7533.ts} +7 -6
  214. package/test/party/components/temp/{FunnyButtonApp-client-daa929c6d64f67e4a1a387b884317a4bb615b5d4.ts → FunnyButtonApp-client-1f2258b8488469d4704366bc49f5c171d8a854ae.ts} +5 -8
  215. package/test/party/components/temp/{FunnyButtonApp-server-80d85ede7da558154a5aa17cd602d6724bf1c9cb.ts → FunnyButtonApp-server-6463d1c57adf61450d1415f0d76da4561ca3e798.ts} +15 -10
  216. package/test/party/components/temp/{HelloWorld-server-e0ed80e7531f303952a4af30d646263ff2e4ead6.ts → HelloWorld-server-50dd4393d55ecd33d5b7684c4f9ed41dfa0ceb5d.ts} +4 -3
  217. package/test/party/components/temp/{InputFocused-server-ee70758a515227c04788be0e298a79c277994ccd.ts → InputFocused-server-7b062b0dd7686ccc389c3c1a17f37e9a9bb19da9.ts} +4 -3
  218. package/test/party/components/temp/{InputHello-client-2a4cbd980534fde14b9d3e8a2f8e4f59a4f15d64.ts → InputHello-client-496d26bdeb6a168c4242e45f35d22e6ecbd211b9.ts} +4 -4
  219. package/test/party/components/temp/{InputHello-server-1b9dd5442ded022abe92a9075ca5a4bb90486cbe.ts → InputHello-server-a5fb3e0d8766c19d177a1f4d43d421c7da1b92ab.ts} +4 -3
  220. package/test/party/components/temp/{IsAvailable-client-3949f85aea0e935c3b59ab1389baee836eff1866.ts → IsAvailable-client-491b92b5e21ebe1bbab47b2e422c35fb996b55e1.ts} +4 -4
  221. package/test/party/components/temp/{IsAvailable-server-123daa1ae56b77defe6666faddb44ba4252dd0fb.ts → IsAvailable-server-c0da3c019ef13617d2ab51353eb3360ddaae4189.ts} +4 -3
  222. package/test/party/components/temp/{Name-server-a402418f1ca2d8a0e6403596ec03ec47b5ff40ec.ts → Name-server-0306b0c622d71323eb79a6b466d900380a0944f3.ts} +4 -3
  223. package/test/party/components/temp/{NameUpdate-server-b7dcc875e894a5606544fcd78bda575ea07632ca.ts → NameUpdate-server-a54ea11dc6b8f0b55d29ad29163cf27b9aa6ec40.ts} +4 -3
  224. package/test/party/components/temp/{PageTitle-server-12dcb4e437aaef227c704a2ee8bbdee55ca323dc.ts → PageTitle-server-8b34f9af760ab39e20a60e10ee3185e70d92e42b.ts} +4 -3
  225. package/test/party/components/temp/{PickPill-client-0f13aa652cb1bd45f57d5a249f8364e80204441a.ts → PickPill-client-a1f48b5c28db87eb57f0ac1f6b4370e4b2952de7.ts} +4 -4
  226. package/test/party/components/temp/{PickPill-server-f10dae4708e36775a5e1a5ad10c6c0c309335009.ts → PickPill-server-9596fdb8ff254cb4e1b99b714f3c5e8ea8aaa308.ts} +4 -3
  227. package/test/party/components/temp/{Time-server-8e0278a4b16925903f3c4ceedbf1332cde4921fa.ts → Time-server-da1cafe72c0f9a6dbf15a04dfa7282ae5187c101.ts} +4 -3
  228. package/test/party/components/temp/{TrafficLight-client-4a90675ca6157ed7701aefa0d9141575960a1d47.ts → TrafficLight-client-d04c95686ec0ad8a9c54710773945e9904224d5e.ts} +3 -3
  229. package/test/party/components/temp/{TrafficLight-server-04bb3b2f11322ccc97a9a8a8fbb26c3c99843042.ts → TrafficLight-server-6c0f66cdabfc7239b99665c3f7087462ee302e8a.ts} +8 -7
  230. package/test/party/components/temp/{UserProfile-client-11c2a928de5a5ed4cab45186f08ca09f6161afb5.ts → UserProfile-client-a59466813b208664f35e6e394858c3d61e040644.ts} +6 -6
  231. package/test/party/components/temp/{UserProfile-server-a0576b8d9dd15b3fab6c11758984c686ddfe2f66.ts → UserProfile-server-b10ec192e03dc818fe66dbd4aad14200e817e596.ts} +4 -3
  232. package/test/party/components/temp/{UserProfileApp-server-86c204098fd0ffbeded50372354488768b255156.ts → UserProfileApp-server-4b308db466a80bcacd190aa71f86cf4d2b6f2873.ts} +8 -5
  233. package/test/party/components/temp/{UserProfileContext-client-c97c077254210061b3c9ba561f681c0cf4f6167f.ts → UserProfileContext-client-7ef27199bd35b55b3dadd876174a2ef4b602b63f.ts} +5 -5
  234. package/test/party/components/temp/{UserProfileContext-server-2d32476b00448bdec6c1c45aac5087a5152c2471.ts → UserProfileContext-server-df958e4fc2de2242c556ffa61ddb58aa395de50c.ts} +4 -3
  235. package/test/party/components/temp/{UserProfileContextApp-client-05ce216919de6ffde56d1c2c39299173d9b611b3.ts → UserProfileContextApp-client-b3ef357f481dfb940e1c726690d57567fde2dc23.ts} +5 -6
  236. package/test/party/components/temp/{UserProfileContextApp-server-c970abaa8326db9a5efc3a5c64741743ae0dd1ca.ts → UserProfileContextApp-server-f8fe2b88db3d0dfa4dafd300006b25123cb8e3fb.ts} +8 -5
  237. package/test/props/components/Reactive.torp +2 -4
  238. package/test/props/components/output/Reactive-client.ts +4 -5
  239. package/test/props/components/output/Reactive-server.ts +12 -8
  240. package/test/props/components/temp/{Reactive-client-cf6e602b2f74fce8e9451b6c41c6f8ff8eab63a3.ts → Reactive-client-21a24e3b0a76140567db8a01975317c9c0e0ad5a.ts} +4 -5
  241. package/test/props/components/temp/{Reactive-server-206bcc8984bad12c5712661b77d000216cdfe66d.ts → Reactive-server-b6e37b5d3488ea74a260ca972906bfab30dde486.ts} +12 -8
  242. package/test/replace/components/Replace.torp +3 -5
  243. package/test/replace/components/output/Replace-client.ts +4 -5
  244. package/test/replace/components/output/Replace-server.ts +6 -5
  245. package/test/replace/components/temp/{Replace-client-2a9ee3430708b469fa31bbc6989eed5b2f22984d.ts → Replace-client-aee34e2e40c6f4380b61e9c7c8df9af1897f06cc.ts} +4 -5
  246. package/test/replace/components/temp/{Replace-server-9519943d193b681e1d7894a0d7952affdfb0660c.ts → Replace-server-3521251fa687ce42af3128d22b129fe1ec6ed411.ts} +6 -5
  247. package/test/slots/components/output/Article-server.ts +10 -9
  248. package/test/slots/components/output/Basic-server.ts +11 -8
  249. package/test/slots/components/output/Header-server.ts +7 -6
  250. package/test/slots/components/output/Let-server.ts +11 -8
  251. package/test/slots/components/output/List-server.ts +8 -7
  252. package/test/slots/components/output/Named-server.ts +14 -11
  253. package/test/slots/components/output/Unused-server.ts +8 -5
  254. package/test/slots/components/temp/{Article-server-b84141b05064f5ea1e4b535faafe459df0d875fb.ts → Article-server-50fa458663f115c0e80a3a2846de4607d8748ecb.ts} +10 -9
  255. package/test/slots/components/temp/{Basic-server-6b37594c9bf74e0c86a05b20213f69651e2cc937.ts → Basic-server-593e0ecbc8abbc90e8b06198698d244d110d97e2.ts} +11 -8
  256. package/test/slots/components/temp/{Header-server-d8e8ccb129d84478f0c4f8dc8ad1d2091188cc7b.ts → Header-server-d0f27afc4db322e605491e8f508e83f625e8dc38.ts} +7 -6
  257. package/test/slots/components/temp/{Let-server-8cad3b1199bec801bc3a1f2f3dbc20f2ef1e9741.ts → Let-server-f3c026e37c11628914c495083752d8cf285b2e85.ts} +11 -8
  258. package/test/slots/components/temp/{List-server-f4f63df4d19e15311da347284935a1bb530a8df4.ts → List-server-8d9c174fc4b3b232f3a9fd2f59843481f023d913.ts} +8 -7
  259. package/test/slots/components/temp/{Named-server-2aac48bb8c7300d1a8858917fe81edc17c6372fa.ts → Named-server-ac8d47db82d9a387c8baeee59b975bb810bad168.ts} +14 -11
  260. package/test/slots/components/temp/{Unused-server-6e832928d7db6c43c556e7bda8af34ac37c0d4c1.ts → Unused-server-1da99efc50ef70be0d9a0e5499353a17dc666936.ts} +8 -5
  261. package/test/special-component/components/output/BigTitle-server.ts +6 -5
  262. package/test/special-component/components/output/Component-server.ts +13 -10
  263. package/test/special-component/components/output/SmallTitle-server.ts +6 -5
  264. package/test/special-component/components/temp/{BigTitle-server-d8919a4c975e022c936584bd668917cb89aa8e20.ts → BigTitle-server-34af54c15cf575163c1ff8e63978cf5257f2347c.ts} +6 -5
  265. package/test/special-component/components/temp/{Component-server-14cd9beb57d6e833f75ab8c6624eb9841444ef63.ts → Component-server-ca4a2192477db4a32ad12f1a6a14d673717b0f7b.ts} +13 -10
  266. package/test/special-component/components/temp/{SmallTitle-server-0a9b5098e4dda96f8c1da30294d71b39997dd118.ts → SmallTitle-server-6c9aabb9139356397e04612b4dd9d849f871a280.ts} +6 -5
  267. package/test/special-element/components/output/Element-server.ts +4 -3
  268. package/test/special-element/components/temp/{Element-server-166d672256ef4635168de0090e490e48b569c7d6.ts → Element-server-011a942cc147900d8e074c084297d8e81f05aa27.ts} +4 -3
  269. package/test/special-head/components/Head.torp +3 -5
  270. package/test/special-head/components/output/Head-client.ts +2 -6
  271. package/test/special-head/components/output/Head-server.ts +4 -3
  272. package/test/special-head/components/temp/{Head-client-18616689a7d6f83ca076c9d825606b049de9d3ef.ts → Head-client-967d6ea24d46308af586c7553f4658412d94716c.ts} +2 -6
  273. package/test/special-head/components/temp/{Head-server-c0956653b544ff632e36da15d5f7623fa285953a.ts → Head-server-7cf8212c95197ed6320b47483524d8b1b3e5ae68.ts} +4 -3
  274. package/test/special-self/components/Self.torp +4 -6
  275. package/test/special-self/components/output/Self-client.ts +5 -6
  276. package/test/special-self/components/output/Self-server.ts +10 -7
  277. package/test/special-self/components/temp/{Self-client-43a0a90fac58867c88bf32221883e8da342a0295.ts → Self-client-883ca81e0e44df56f2290698e8d6b9955434a2ad.ts} +5 -6
  278. package/test/special-self/components/temp/{Self-server-b857c30c279a16dd81ad29567fb8abb9b2a0c239.ts → Self-server-69dac409fc984db7db97df8a30c5de6794f25655.ts} +10 -7
  279. package/test/style/components/output/Style-client.ts +1 -1
  280. package/test/style/components/output/Style-server.ts +5 -4
  281. package/test/style/components/temp/{Style-client-bc13f8dbb5f754e4eebb2473fc63a139ebf1ba92.ts → Style-client-ea018338497095f270308b2e73cfe6344721c6eb.ts} +1 -1
  282. package/test/style/components/temp/{Style-server-85720cb43e20ab000f98bc632c29454a51ae92d9.ts → Style-server-99ff9867ee067760a463a8282773b2eb09aa14f7.ts} +5 -4
  283. package/test/svg/components/output/Shape-server.ts +7 -6
  284. package/test/svg/components/temp/Shape-server-4ef7e80f09d3d4c930055d0a25184c48507e51de.ts +25 -0
  285. package/test/switch/components/Switch.torp +16 -18
  286. package/test/switch/components/output/Switch-client.ts +6 -8
  287. package/test/switch/components/output/Switch-server.ts +8 -7
  288. package/test/switch/components/temp/{Switch-client-30113fadf131c72e7c24160fa62068b651716896.ts → Switch-client-1482e2da8fe144d3e867dfad4618e0f364b91b49.ts} +6 -8
  289. package/test/switch/components/temp/{Switch-server-c1b5e1c657438ee3d8afdbf2166c5295cafc5604.ts → Switch-server-d709eb7a418752dd4203a8f824b78c5f308c8f47.ts} +8 -7
  290. package/test/text/components/Text.torp +5 -7
  291. package/test/text/components/output/Text-client.ts +4 -4
  292. package/test/text/components/output/Text-server.ts +4 -3
  293. package/test/text/components/temp/{Text-client-e335aae6d8aef389dfdbb5bee14e3dd3d41e86bd.ts → Text-client-ca2d5402358fba0df1db2353eed304b0dedb7971.ts} +4 -4
  294. package/test/text/components/temp/{Text-server-e37d33aa182f36461927d8ce36040bfd05e2f227.ts → Text-server-9df4606b85f044ea2b38660e799988461edacb27.ts} +4 -3
  295. package/test/watch-array/components/output/Array-server.ts +6 -5
  296. package/test/watch-array/components/output/ArrayEntries-server.ts +6 -5
  297. package/test/watch-array/components/output/ArrayIndexes-server.ts +6 -5
  298. package/test/watch-array/components/output/ArrayUnkeyed-server.ts +6 -5
  299. package/test/watch-array/components/temp/{Array-server-c907209008ac6177f614b62931a2bb1f1c3a04e1.ts → Array-server-48864ed3b67cae2bcedb216865776e44cc3a1dc2.ts} +6 -5
  300. package/test/watch-array/components/temp/{ArrayEntries-server-57c1ab0045fa4a02de95f69a65de6f54efe9850c.ts → ArrayEntries-server-401a989fd5f3a093d5d1a8ef1d4fd9d5107a6be3.ts} +6 -5
  301. package/test/watch-array/components/temp/{ArrayIndexes-server-f093878b94a37617e2e697a786caa680f75630a7.ts → ArrayIndexes-server-35c31a8a4597da68d39cf20bd6b90137695514de.ts} +6 -5
  302. package/test/watch-array/components/temp/{ArrayUnkeyed-server-c893fa024be07e5e7fce608c3ae456bdf2279dbe.ts → ArrayUnkeyed-server-19f195f0cf00760c520ac4c55aef474c8eae4c41.ts} +6 -5
  303. package/test/watch-object/components/Watched.torp +5 -7
  304. package/test/watch-object/components/output/Watched-client.ts +2 -2
  305. package/test/watch-object/components/output/Watched-server.ts +4 -3
  306. package/test/watch-object/components/temp/{Watched-client-d26e846bbeb8271ec5dc2a1ceb75b362af44d3bd.ts → Watched-client-ddba353c5a94f5a874e19d6d4cc6271a04e915c0.ts} +2 -2
  307. package/test/watch-object/components/temp/{Watched-server-312fca1e769d7594fc5bb6295ccf55b544dd2f4d.ts → Watched-server-e8e8c15b9fb5dda4051a289e9cd75d71078b9e95.ts} +4 -3
  308. package/dist/chunk-T6JGCJ5T.js +0 -45
  309. package/dist/chunk-T6JGCJ5T.js.map +0 -1
  310. package/src/render/getStyles.ts +0 -7
  311. package/src/render/isComment.ts +0 -3
  312. package/src/render/isText.ts +0 -3
  313. package/test/bench/components/temp/Bench-client-fca94b485c6263778751927240ab3ca4048d7a10.ts +0 -208
  314. package/test/class/components/temp/Class-server-c24c01d0d3a98169172aba453c183c4152705be9.ts +0 -40
  315. package/test/svg/components/temp/Shape-server-9951ff1dcc7aa0827f28d3f8d970813767115ae3.ts +0 -24
package/dist/compile.js CHANGED
@@ -930,16 +930,21 @@ function buildComponentNode(node, status, b, root = false) {
930
930
  value = value.substring(1, value.length - 1);
931
931
  buildRun("setProp", `${propsName}["${name}"] = ${value};`, status, b);
932
932
  buildRun("setBinding", `${value} = ${propsName}["${name}"];`, status, b);
933
- } else if (name === ":class" && value != null && isFullyReactive(value)) {
933
+ } else if ((name === "class" || name === ":class") && value != null) {
934
934
  status.imports.add("t_class");
935
- value = value.substring(1, value.length - 1);
935
+ if (isFullyReactive(value)) {
936
+ value = value.substring(1, value.length - 1);
937
+ }
938
+ const params = [value];
936
939
  if (node.scopeStyles) {
937
- value += `, "torp-${status.styleHash}"`;
940
+ params.push(`"torp-${status.styleHash}"`);
938
941
  }
939
- buildRun("setClasses", `${propsName}["class"] = t_class(${value});`, status, b);
940
- } else if (name === ":style" && value != null && isFullyReactive(value)) {
942
+ buildRun("setClasses", `${propsName}["class"] = t_class(${params.join(", ")});`, status, b);
943
+ } else if ((name === "style" || name === ":style") && value != null) {
941
944
  status.imports.add("t_style");
942
- value = value.substring(1, value.length - 1);
945
+ if (isFullyReactive(value)) {
946
+ value = value.substring(1, value.length - 1);
947
+ }
943
948
  buildRun("setStyles", `${propsName}["style"] = t_style(${value});`, status, b);
944
949
  } else if (value != null) {
945
950
  let fullyReactive = isFullyReactive(value);
@@ -949,9 +954,6 @@ function buildComponentNode(node, status, b, root = false) {
949
954
  } else if (partlyReactive) {
950
955
  value = `\`${trimQuotes(value).replaceAll("{", "${")}\``;
951
956
  }
952
- if (name === "class") {
953
- value = `"${trimQuotes(value)} torp-${status.styleHash}"`;
954
- }
955
957
  const setProp = `${propsName}["${name}"] = ${value};`;
956
958
  if (fullyReactive || partlyReactive) {
957
959
  buildRun("setProp", setProp, status, b);
@@ -1538,13 +1540,13 @@ function buildHeadNode(node, status, b) {
1538
1540
  status.imports.add("$run");
1539
1541
  b.append(`
1540
1542
  $run(function runHead() {
1541
- const t_head_el = document.createElement("${node.tagName}");
1542
- document.getElementsByTagName("head")[0].appendChild(t_head_el);`);
1543
+ const t_headel = document.createElement("${node.tagName}");
1544
+ document.getElementsByTagName("head")[0].appendChild(t_headel);`);
1543
1545
  for (let { name, value } of node.attributes) {
1544
1546
  if (name.startsWith("{") && name.endsWith("}")) {
1545
1547
  name = name.substring(1, name.length - 1);
1546
1548
  const propName = name.split(".").at(-1);
1547
- buildRun("setAttribute", `t_head_el.setAttribute("${propName}", ${name});`, status, b);
1549
+ buildRun("setAttribute", `t_headel.setAttribute("${propName}", ${name});`, status, b);
1548
1550
  } else if (value != null && isReactive(value)) {
1549
1551
  if (isFullyReactive(value)) {
1550
1552
  value = value.substring(1, value.length - 1);
@@ -1552,10 +1554,10 @@ function buildHeadNode(node, status, b) {
1552
1554
  value = `\`${trimQuotes(value).replaceAll("{", "${")}\``;
1553
1555
  }
1554
1556
  status.imports.add("t_attribute");
1555
- buildRun("setAttribute", `t_attribute(t_head_el, "${name}", ${value});`, status, b);
1557
+ buildRun("setAttribute", `t_attribute(t_headel, "${name}", ${value});`, status, b);
1556
1558
  } else if (value != null) {
1557
1559
  status.imports.add("t_attribute");
1558
- b.append(`t_attribute(t_head_el, "${name}", ${value});`);
1560
+ b.append(`t_attribute(t_headel, "${name}", ${value});`);
1559
1561
  }
1560
1562
  }
1561
1563
  b.append(`
@@ -1593,17 +1595,13 @@ function buildElementAttributes(node, varName, status, b) {
1593
1595
  buildEventAttribute(varName, name, value, status, b);
1594
1596
  } else if (name.startsWith(":transition")) {
1595
1597
  buildTransitionAttribute(node, varName, name, value, status, b);
1596
- } else if (name === "class") {
1597
- if (node.scopeStyles) {
1598
- value += `+ "torp-${status.styleHash}"`;
1599
- }
1600
- buildRun("setClassName", `${varName}.className = ${value};`, status, b);
1601
- } else if (name === ":class") {
1598
+ } else if (name === "class" || name === ":class") {
1602
1599
  status.imports.add("t_class");
1600
+ const params = [value];
1603
1601
  if (node.scopeStyles) {
1604
- value += `, "torp-${status.styleHash}"`;
1602
+ params.push(`"torp-${status.styleHash}"`);
1605
1603
  }
1606
- buildRun("setClasses", `${varName}.className = t_class(${value});`, status, b);
1604
+ buildRun("setClasses", `${varName}.className = t_class(${params.join(", ")});`, status, b);
1607
1605
  } else if (name === ":style") {
1608
1606
  status.imports.add("t_style");
1609
1607
  buildRun("setStyles", `${varName}.setAttribute("style", t_style(${value}));`, status, b);
@@ -2118,7 +2116,7 @@ function buildStyleAttribute(attribute, b) {
2118
2116
  function buildServerComponentNode(node, status, b) {
2119
2117
  status.output += HYDRATION_START_COMMENT;
2120
2118
  if (status.output) {
2121
- b.append(`$output += \`${status.output}\`;`);
2119
+ b.append(`t_body += \`${status.output}\`;`);
2122
2120
  status.output = "";
2123
2121
  }
2124
2122
  const componentHasProps = node.attributes.length;
@@ -2130,16 +2128,21 @@ function buildServerComponentNode(node, status, b) {
2130
2128
  name = name.substring(1, name.length - 1);
2131
2129
  const propName = name.split(".").at(-1);
2132
2130
  b.append(`${propsName}["${propName}"] = ${name};`);
2133
- } else if (name === ":class" && value != null && isFullyReactive(value)) {
2131
+ } else if ((name === "class" || name === ":class") && value != null) {
2134
2132
  status.imports.add("t_class");
2135
- value = value.substring(1, value.length - 1);
2133
+ if (isFullyReactive(value)) {
2134
+ value = value.substring(1, value.length - 1);
2135
+ }
2136
+ const params = [value];
2136
2137
  if (node.scopeStyles) {
2137
- value += `, "torp-${status.styleHash}"`;
2138
+ params.push(`"torp-${status.styleHash}"`);
2138
2139
  }
2139
- b.append(`${propsName}["class"] = t_class(${value});`);
2140
- } else if (name === ":style" && value != null && isFullyReactive(value)) {
2140
+ b.append(`${propsName}["class"] = t_class(${params.join(", ")});`);
2141
+ } else if ((name === "style" || name === ":style") && value != null) {
2141
2142
  status.imports.add("t_style");
2142
- value = value.substring(1, value.length - 1);
2143
+ if (isFullyReactive(value)) {
2144
+ value = value.substring(1, value.length - 1);
2145
+ }
2143
2146
  b.append(`${propsName}["style"] = t_style(${value});`);
2144
2147
  } else if (value != null) {
2145
2148
  let fullyReactive = isFullyReactive(value);
@@ -2149,9 +2152,6 @@ function buildServerComponentNode(node, status, b) {
2149
2152
  } else if (partlyReactive) {
2150
2153
  value = `\`${trimQuotes(value).replaceAll("{", "${")}\``;
2151
2154
  }
2152
- if (name === "class") {
2153
- b.append(`"${trimQuotes(value)} torp-${status.styleHash}"`);
2154
- }
2155
2155
  b.append(`${propsName}["${name}"] = ${value};`);
2156
2156
  } else {
2157
2157
  b.append(`${propsName}["${name}"] = true;`);
@@ -2173,15 +2173,15 @@ function buildServerComponentNode(node, status, b) {
2173
2173
  b.append(`${slotsName}["${slotName}"] = (
2174
2174
  ${slotParams.join(",\n")}
2175
2175
  ) => {`);
2176
- b.append(`let $output = "";`);
2176
+ b.append(`let t_body = "";`);
2177
2177
  for (let child of slot.children) {
2178
2178
  buildServerNode(child, status, b);
2179
2179
  }
2180
2180
  if (status.output) {
2181
- b.append(`$output += \`${status.output}\`;`);
2181
+ b.append(`t_body += \`${status.output}\`;`);
2182
2182
  status.output = "";
2183
2183
  }
2184
- b.append("return $output;");
2184
+ b.append("return t_body;");
2185
2185
  b.append(`}`);
2186
2186
  }
2187
2187
  }
@@ -2198,7 +2198,10 @@ ${slotParams.join(",\n")}
2198
2198
  renderParams += `, ${slotsName}`;
2199
2199
  }
2200
2200
  b.append("");
2201
- b.append(`$output += ${componentName}(${renderParams})`);
2201
+ const componentResult = nextVarName("comp", status);
2202
+ b.append(`const ${componentResult} = ${componentName}(${renderParams});`);
2203
+ b.append(`t_body += ${componentResult}.body;`);
2204
+ b.append(`t_head += ${componentResult}.head;`);
2202
2205
  status.output += HYDRATION_END_COMMENT;
2203
2206
  status.output += ANCHOR_COMMENT;
2204
2207
  }
@@ -2207,7 +2210,7 @@ ${slotParams.join(",\n")}
2207
2210
  function buildServerAwaitNode(node, status, b) {
2208
2211
  status.output += HYDRATION_START_COMMENT;
2209
2212
  if (status.output) {
2210
- b.append(`$output += \`${status.output}\`;`);
2213
+ b.append(`t_body += \`${status.output}\`;`);
2211
2214
  status.output = "";
2212
2215
  }
2213
2216
  for (let branch of node.children) {
@@ -2223,7 +2226,7 @@ function buildServerAwaitBranch(node, status, b) {
2223
2226
  buildServerNode(child, status, b);
2224
2227
  }
2225
2228
  if (status.output) {
2226
- b.append(`$output += \`${status.output}\`;`);
2229
+ b.append(`t_body += \`${status.output}\`;`);
2227
2230
  status.output = "";
2228
2231
  }
2229
2232
  }
@@ -2232,7 +2235,7 @@ function buildServerAwaitBranch(node, status, b) {
2232
2235
  function buildServerForNode(node, status, b) {
2233
2236
  status.output += HYDRATION_START_COMMENT;
2234
2237
  if (status.output) {
2235
- b.append(`$output += \`${status.output}\`;`);
2238
+ b.append(`t_body += \`${status.output}\`;`);
2236
2239
  status.output = "";
2237
2240
  }
2238
2241
  for (let branch of node.children) {
@@ -2250,7 +2253,7 @@ function buildServerForBranch(node, status, b) {
2250
2253
  buildServerNode(child, status, b);
2251
2254
  }
2252
2255
  if (status.output) {
2253
- b.append(`$output += \`${status.output}\`;`);
2256
+ b.append(`t_body += \`${status.output}\`;`);
2254
2257
  status.output = "";
2255
2258
  }
2256
2259
  b.append("}");
@@ -2272,7 +2275,7 @@ function buildServerHtmlNode(node, status) {
2272
2275
  function buildServerIfNode(node, status, b) {
2273
2276
  status.output += HYDRATION_START_COMMENT;
2274
2277
  if (status.output) {
2275
- b.append(`$output += \`${status.output}\`;`);
2278
+ b.append(`t_body += \`${status.output}\`;`);
2276
2279
  status.output = "";
2277
2280
  }
2278
2281
  for (let branch of node.children) {
@@ -2290,7 +2293,7 @@ function buildServerIfBranch(node, status, b) {
2290
2293
  buildServerNode(child, status, b);
2291
2294
  }
2292
2295
  if (status.output) {
2293
- b.append(`$output += \`${status.output}\`;`);
2296
+ b.append(`t_body += \`${status.output}\`;`);
2294
2297
  status.output = "";
2295
2298
  }
2296
2299
  b.append("}");
@@ -2300,7 +2303,7 @@ function buildServerIfBranch(node, status, b) {
2300
2303
  function buildServerReplaceNode(node, status, b) {
2301
2304
  status.output += HYDRATION_START_COMMENT;
2302
2305
  if (status.output) {
2303
- b.append(`$output += \`${status.output}\`;`);
2306
+ b.append(`t_body += \`${status.output}\`;`);
2304
2307
  status.output = "";
2305
2308
  }
2306
2309
  for (let branch of node.children) {
@@ -2317,7 +2320,7 @@ function buildServerReplaceBranch(node, status, b) {
2317
2320
  buildServerNode(child, status, b);
2318
2321
  }
2319
2322
  if (status.output) {
2320
- b.append(`$output += \`${status.output}\`;`);
2323
+ b.append(`t_body += \`${status.output}\`;`);
2321
2324
  status.output = "";
2322
2325
  }
2323
2326
  }
@@ -2337,7 +2340,7 @@ function maybeAppend2(text, end) {
2337
2340
  function buildServerSwitchNode(node, status, b) {
2338
2341
  status.output += HYDRATION_START_COMMENT;
2339
2342
  if (status.output) {
2340
- b.append(`$output += \`${status.output}\`;`);
2343
+ b.append(`t_body += \`${status.output}\`;`);
2341
2344
  status.output = "";
2342
2345
  }
2343
2346
  b.append(`${node.statement} {`);
@@ -2357,7 +2360,7 @@ function buildServerSwitchBranch(node, status, b) {
2357
2360
  buildServerNode(child, status, b);
2358
2361
  }
2359
2362
  if (status.output) {
2360
- b.append(`$output += \`${status.output}\`;`);
2363
+ b.append(`t_body += \`${status.output}\`;`);
2361
2364
  status.output = "";
2362
2365
  }
2363
2366
  b.append("break;");
@@ -2417,7 +2420,7 @@ function buildServerControlNode(node, status, b) {
2417
2420
  }
2418
2421
  case "@const": {
2419
2422
  if (status.output) {
2420
- b.append(`$output += \`${status.output}\`;`);
2423
+ b.append(`t_body += \`${status.output}\`;`);
2421
2424
  status.output = "";
2422
2425
  }
2423
2426
  buildServerScriptNode(node, b);
@@ -2426,7 +2429,7 @@ function buildServerControlNode(node, status, b) {
2426
2429
  case "@function":
2427
2430
  case "@async function": {
2428
2431
  if (status.output) {
2429
- b.append(`$output += \`${status.output}\`;`);
2432
+ b.append(`t_body += \`${status.output}\`;`);
2430
2433
  status.output = "";
2431
2434
  }
2432
2435
  b.append("");
@@ -2534,14 +2537,15 @@ function buildElementAttributes2(node, status) {
2534
2537
  let valueOrDefault = `${value} || ${defaultValue}`;
2535
2538
  const propName = name.substring(1);
2536
2539
  attributes.push(`${propName}="\${${valueOrDefault}}"`);
2537
- } else if (name === ":class") {
2540
+ } else if (name === "class" || name === ":class") {
2538
2541
  status.imports.add("t_class");
2542
+ let params = [value];
2539
2543
  if (node.scopeStyles) {
2540
- value += `, "torp-${status.styleHash}"`;
2544
+ params.push(`"torp-${status.styleHash}"`);
2541
2545
  needsClass = false;
2542
2546
  }
2543
- attributes.push(`class="\${t_class(${value})}"`);
2544
- } else if (name === ":style") {
2547
+ attributes.push(`class="\${t_class(${params.join(", ")})}"`);
2548
+ } else if (name === "style" || name === ":style") {
2545
2549
  status.imports.add("t_style");
2546
2550
  attributes.push(`style="\${t_style(${value})}"`);
2547
2551
  } else {
@@ -2580,7 +2584,7 @@ function buildServerRootNode(node, status, b) {
2580
2584
  function buildServerSlotNode(node, status, b) {
2581
2585
  status.output += HYDRATION_START_COMMENT;
2582
2586
  if (status.output) {
2583
- b.append(`$output += \`${status.output}\`;`);
2587
+ b.append(`t_body += \`${status.output}\`;`);
2584
2588
  status.output = "";
2585
2589
  }
2586
2590
  let slotName = node.attributes.find((a) => a.name === "name")?.value;
@@ -2610,9 +2614,7 @@ function buildServerSlotNode(node, status, b) {
2610
2614
  }
2611
2615
  }
2612
2616
  b.append(`if ($slots && $slots["${slotName}"]) {`);
2613
- b.append(
2614
- `$output += $slots["${slotName}"](${slotHasProps ? propsName : "undefined"}, $context);`
2615
- );
2617
+ b.append(`t_body += $slots["${slotName}"](${slotHasProps ? propsName : "undefined"}, $context);`);
2616
2618
  const fill = node.children.find((c) => isSpecialNode(c) && c.tagName === ":fill");
2617
2619
  if (fill && isSpecialNode(fill) && fill.children.length) {
2618
2620
  b.append(`} else {`);
@@ -2620,7 +2622,7 @@ function buildServerSlotNode(node, status, b) {
2620
2622
  buildServerNode(child, status, b);
2621
2623
  }
2622
2624
  if (status.output) {
2623
- b.append(`$output += \`${status.output}\`;`);
2625
+ b.append(`t_body += \`${status.output}\`;`);
2624
2626
  status.output = "";
2625
2627
  }
2626
2628
  }
@@ -2825,17 +2827,24 @@ function buildServerTemplate(template, imports, b, options) {
2825
2827
  };
2826
2828
  b.append("");
2827
2829
  b.append("/* User interface */");
2828
- b.append(`let $output = "";`);
2830
+ b.append(`let t_body = "";`);
2831
+ if (current.style) {
2832
+ const styles = buildStyles(current.style, current.style.hash).replaceAll('"', '\\"').replaceAll(/\s+/g, " ");
2833
+ b.append(`let t_head = "<style id='${current.style.hash}'>${styles}</style>";
2834
+ `);
2835
+ } else {
2836
+ b.append(`let t_head = "";`);
2837
+ }
2829
2838
  buildServerNode(current.markup, status, b);
2830
2839
  if (status.output) {
2831
- b.append(`$output += \`${status.output}\`;`);
2840
+ b.append(`t_body += \`${status.output}\`;`);
2832
2841
  status.output = "";
2833
2842
  }
2834
2843
  }
2835
2844
  marker = i + "/* @render */".length;
2836
2845
  } else if (script.substring(i, i + "/* @end */".length) === "/* @end */") {
2837
2846
  b.append(script.substring(marker, i));
2838
- b.append("return $output;");
2847
+ b.append(`return { body: t_body, head: t_head };`);
2839
2848
  currentIndex += 1;
2840
2849
  current = template.components[currentIndex];
2841
2850
  marker = i + "/* @end */".length;