@torpor/view 0.0.13 → 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 (279) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +5 -5
  3. package/dist/compile.cjs +83 -31
  4. package/dist/compile.cjs.map +1 -1
  5. package/dist/compile.js +83 -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/buildFragmentText.ts +5 -0
  22. package/src/compile/build/client/buildHtmlNode.ts +1 -0
  23. package/src/compile/build/client/buildSlotNode.ts +4 -1
  24. package/src/compile/build/server/buildServerCode.ts +5 -0
  25. package/src/compile/build/server/buildServerComponentNode.ts +4 -1
  26. package/src/compile/build/server/buildServerElementNode.ts +11 -2
  27. package/src/compile/build/server/buildServerSlotNode.ts +4 -1
  28. package/src/compile/parse/parseCode.ts +20 -12
  29. package/src/index.ts +0 -2
  30. package/src/render/$unwrap.ts +1 -1
  31. package/src/render/addFragment.ts +7 -2
  32. package/src/render/nodeNext.ts +14 -7
  33. package/src/render/runControlBranch.ts +11 -1
  34. package/src/render/runList.ts +8 -2
  35. package/test/attributes/attributes.test.ts +3 -0
  36. package/test/attributes/components/Attributes.torp +6 -1
  37. package/test/attributes/components/output/Attributes-client.ts +6 -2
  38. package/test/attributes/components/output/Attributes-server.ts +2 -1
  39. package/test/attributes/components/temp/{Attributes-client-c4812cb9307eac6ff44f90f3358a1811b52c7390.ts → Attributes-client-7b8f7b9996208e8d2d0a12d4f4a40a73df63d9d8.ts} +6 -2
  40. package/test/attributes/components/temp/{Attributes-server-a7ebed503f2169f7c900d4613531082f1023b086.ts → Attributes-server-a1289434a5a801be1d63bfc85b621579e06452f0.ts} +2 -1
  41. package/test/await/await.test.ts +2 -4
  42. package/test/await/components/output/Await-client.ts +4 -4
  43. package/test/await/components/temp/{Await-client-6ce3ac610ce79ae3b474c81964b715e6f3d966da.ts → Await-client-a7bf000bf2b59a3d5251a0fa18ec79890a52a547.ts} +4 -4
  44. package/test/bench/bench.bench.ts +5 -7
  45. package/test/bench/components/output/Bench-client.ts +208 -0
  46. package/test/bench/components/output/Bench-server.ts +130 -0
  47. package/test/bench/components/temp/{Bench-client-5fee290225ae4771aa847360006123671e8f17f1.ts → Bench-client-fca94b485c6263778751927240ab3ca4048d7a10.ts} +10 -10
  48. package/test/bind/bind.test.ts +3 -5
  49. package/test/bind/component.test.ts +45 -0
  50. package/test/bind/components/BindComponent.torp +29 -0
  51. package/test/bind/components/BindText.torp +2 -2
  52. package/test/bind/components/output/BindComponent-client.ts +87 -0
  53. package/test/bind/components/output/BindComponent-server.ts +52 -0
  54. package/test/bind/components/output/BindText-client.ts +3 -3
  55. package/test/bind/components/temp/BindComponent-client-a645474748485a878871c062ad69e6bcf35e6550.ts +87 -0
  56. package/test/bind/components/temp/BindComponent-server-c557e7aa944517ab87415b8bb35b41b0034254e7.ts +52 -0
  57. package/test/bind/components/temp/{BindText-client-9e2f542e13bcbf9a44eab2c5a79d67ddb128f928.ts → BindText-client-d5f7d721df55020ef337f660e5d278eb80fcc330.ts} +3 -3
  58. package/test/build-server/build-server-element-node.test.ts +1 -1
  59. package/test/buildOutputFiles.ts +6 -3
  60. package/test/child-component/components/output/ParentChild-client.ts +3 -2
  61. package/test/child-component/components/output/ParentChild-server.ts +1 -0
  62. package/test/child-component/components/temp/{ParentChild-client-8f00a3a31a7f666990765fc4755b62a39c855226.ts → ParentChild-client-eaefb0cbfd251badab3c57ae2037d973f785a1b8.ts} +3 -2
  63. package/test/child-component/components/temp/{ParentChild-server-9c791bdfa521c3f6549857a34a6cd414fa3c9e80.ts → ParentChild-server-8f2fc556f87867e6e3393e2e9e6d696cda107b69.ts} +1 -0
  64. package/test/class/class.test.ts +6 -1
  65. package/test/class/components/Class.torp +5 -1
  66. package/test/class/components/output/Class-client.ts +8 -7
  67. package/test/class/components/output/Class-server.ts +2 -1
  68. package/test/class/components/temp/{Class-client-8c3f9e0257cc2b687e9bb7106cccbab94a4b5adf.ts → Class-client-dc885e1e391f38973bd9ea25b7475b07f7c23960.ts} +8 -7
  69. package/test/class/components/temp/Class-server-d1a2463ba432e10c6f68bd59d1d31949c5a2044f.ts +18 -0
  70. package/test/component/components/output/Component-client.ts +3 -2
  71. package/test/component/components/output/Component-server.ts +1 -1
  72. package/test/component/components/output/Header-client.ts +2 -1
  73. package/test/component/components/output/Header-server.ts +1 -0
  74. package/test/component/components/temp/{Component-client-32cd481f03e25d10b8e93947a2ff8773135b4975.ts → Component-client-a2fb6f30fc340bac909b64cb4f5ac68cde376de3.ts} +3 -2
  75. package/test/component/components/temp/{Component-server-11542f55405218c0b471172cac1d6a1a4edb5c09.ts → Component-server-40be12cd528ccf768f1ad40ef2a435ad2b2a2d71.ts} +1 -1
  76. package/test/component/components/temp/{Header-client-ac151eea86e3f6b058fab101661e13ae73864968.ts → Header-client-75cb4aa868295ac168c16ba7b275fbb5ab9256f9.ts} +2 -1
  77. package/test/component/components/temp/{Header-server-4f10f2332f3ca7a097517cfb938ab1e6f31d68ac.ts → Header-server-f73307874bec34a95dcd152d7f83a3ad13a0f4ac.ts} +1 -0
  78. package/test/effects/components/output/For-client.ts +3 -2
  79. package/test/effects/components/output/For-server.ts +1 -0
  80. package/test/effects/components/output/If-client.ts +4 -3
  81. package/test/effects/components/output/If-server.ts +1 -0
  82. package/test/effects/components/output/NestedIf-client.ts +4 -3
  83. package/test/effects/components/output/NestedIf-server.ts +1 -0
  84. package/test/effects/components/temp/{For-client-887b1758cf5c80f64708a47369e0e6ce44ffa20f.ts → For-client-d8d4e4424ec3238fe9f79cc907d673612b63bcdf.ts} +3 -2
  85. package/test/effects/components/temp/{For-server-8e1c7393b102c870167dd086cbee45c47e614dfa.ts → For-server-1f853c161bea31a1a5b11b00d7a021b70c778066.ts} +1 -0
  86. package/test/effects/components/temp/{If-client-bfc548ef699b91f33e604f066211ce6269cc9506.ts → If-client-bb06988422395321bf298a75bf5563c6f750f776.ts} +4 -3
  87. package/test/effects/components/temp/{If-server-8c213b1a82cd0a5c2bccfeb90ba8bf01fa4672d2.ts → If-server-97e3cbe059306fc607985dcd1b187df3a278d979.ts} +1 -0
  88. package/test/effects/components/temp/{NestedIf-client-9e9155398f240345af392194063adc6e42dda80c.ts → NestedIf-client-dc880c1ec92e716ec730dfa0bac0e3d9265bdf27.ts} +4 -3
  89. package/test/effects/components/temp/{NestedIf-server-5f11d075c2ff224ee5feb7f61aa41aea8af44313.ts → NestedIf-server-9f199a33bae5d5fe34920d6a419937537a2b18dc.ts} +1 -0
  90. package/test/events/components/output/Increment-client.ts +2 -2
  91. package/test/events/components/temp/{Increment-client-35c275d15e94e4aa7625af12c45210521995ead5.ts → Increment-client-41bd7bc91aac8c7a9bf73527c8f7ba1794b09ab3.ts} +2 -2
  92. package/test/events/events.test.ts +2 -3
  93. package/test/for/components/ForEscape.torp +1 -1
  94. package/test/for/components/output/For-client.ts +1 -1
  95. package/test/for/components/output/ForEscape-client.ts +4 -4
  96. package/test/for/components/output/ForIn-client.ts +3 -2
  97. package/test/for/components/output/ForIn-server.ts +1 -0
  98. package/test/for/components/output/ForOf-client.ts +3 -2
  99. package/test/for/components/output/ForOf-server.ts +1 -0
  100. package/test/for/components/temp/{For-client-1f6e475347f0474375f12a7c24b0b293e3942aa7.ts → For-client-0be5994e98c07a3455cd8a18a2b1b8ef3605aba6.ts} +1 -1
  101. package/test/for/components/temp/{ForEscape-client-80d3078cf15001f2ab37b0ec63cfce7267a8a166.ts → ForEscape-client-a973a145e28b32ca55fe3dca53d885fcf5e11c37.ts} +4 -4
  102. package/test/for/components/temp/{ForIn-client-c8a1ec4473d05475e11928d06d081ab671fd9f28.ts → ForIn-client-5cc25a98e10826e8477fe6f931d5d2bbd0b13c9f.ts} +3 -2
  103. package/test/for/components/temp/{ForIn-server-d92cf8d3c3e300b562308607caca2c9cab3cb30b.ts → ForIn-server-d68e82c048f7e0f1525f74724b91e5cd01cdc6a6.ts} +1 -0
  104. package/test/for/components/temp/{ForOf-client-069881d4d9e52bc091e7213154924f3e1626174a.ts → ForOf-client-70b0d59ff72f1cffe2e0ac8523dd7ccdca4ffe39.ts} +3 -2
  105. package/test/for/components/temp/{ForOf-server-3bfbb33bd589890d272bbcbea53d9598f53bfd70.ts → ForOf-server-ac08d98dd249a3e64a366b8488450e6ce0d18def.ts} +1 -0
  106. package/test/for/for-escape.test.ts +2 -3
  107. package/test/function/components/output/Function-client.ts +1 -1
  108. package/test/function/components/temp/{Function-client-b8931e51769f3f1e84d1491c6474f8551acf9f8d.ts → Function-client-b3ff029a821d47e1a2249a52dfb681f4b2e96232.ts} +1 -1
  109. package/test/function/function.test.ts +1 -2
  110. package/test/html/components/output/Html-client.ts +3 -1
  111. package/test/html/components/output/Html-server.ts +1 -0
  112. package/test/html/components/temp/{Html-client-5fc745d9980a42a70dcb3473b0fd976e69882c9e.ts → Html-client-766ba4a63f28f929ca16cd7d1640fe92f9b30792.ts} +3 -1
  113. package/test/html/components/temp/{Html-server-437ea390e58947213ede74755a012cdacceeebe7.ts → Html-server-0a41da8b81bf833f331f3becdbac14be7ddc6c8c.ts} +1 -0
  114. package/test/if/components/output/IfAfterIf-client.ts +5 -4
  115. package/test/if/components/output/IfAfterIf-server.ts +1 -0
  116. package/test/if/components/output/IfElse-client.ts +4 -3
  117. package/test/if/components/output/IfElse-server.ts +1 -0
  118. package/test/if/components/output/IfElseIf-client.ts +5 -4
  119. package/test/if/components/output/IfElseIf-server.ts +1 -0
  120. package/test/if/components/output/IfNested-client.ts +5 -4
  121. package/test/if/components/output/IfNested-server.ts +1 -0
  122. package/test/if/components/temp/{IfAfterIf-client-a489daa5b961ed9da71418fdbb1665b6ba39f1b7.ts → IfAfterIf-client-49b6b8c42b0a351561f9f5f22c2ae2e844bf3b58.ts} +5 -4
  123. package/test/if/components/temp/{IfAfterIf-server-243736e666e7d77d3f8553a1682734555f5ffd22.ts → IfAfterIf-server-eb67cf1fcf6711882266219940a47bd4a66497f3.ts} +1 -0
  124. package/test/if/components/temp/{IfElse-client-4c71642f412d5dd2f45729eafb7e974781dbe011.ts → IfElse-client-e236d4a2e99262ff09675bc519c07e2826c0d70b.ts} +4 -3
  125. package/test/if/components/temp/{IfElse-server-64c055182b327504ee71d1f1d44cfccf48be350d.ts → IfElse-server-c077e0e30f4d2adec41ab779198362d21542d055.ts} +1 -0
  126. package/test/if/components/temp/{IfElseIf-client-98d50d6f40c2385c4ef4fc02329f9d2e182c76c4.ts → IfElseIf-client-b92106861f0c7ec3d09e3a42bb93d8f5bd4e3bdf.ts} +5 -4
  127. package/test/if/components/temp/{IfElseIf-server-79788b13af905175f50bfa8658f2ff2af73db232.ts → IfElseIf-server-67991eee3f56dc687cda600511c31396438e0a77.ts} +1 -0
  128. package/test/{build-server/components/temp/IfNested-client-979db97eea5b4595550b9b46f297f3fbc31796d2.ts → if/components/temp/IfNested-client-f563ac1b16a2280e457557281c4925ed447a9cd7.ts} +5 -4
  129. package/test/{build-server/components/temp/IfNested-server-3c4e4b6f2162c0906cef685830219b9ea9ee985c.ts → if/components/temp/IfNested-server-0a2a9643324ab73b02b310cad61ba87dab146ab2.ts} +1 -0
  130. package/test/mount/components/Mount.torp +1 -1
  131. package/test/mount/components/output/Mount-client.ts +0 -2
  132. package/test/mount/components/output/Mount-server.ts +1 -1
  133. package/test/mount/components/temp/{Mount-client-49d8d6475336b5749fe8a17be847fd2b6cda5ccc.ts → Mount-client-36dbc95a61345a1b7dcf07e6b0c998af2afca691.ts} +0 -2
  134. package/test/mount/components/temp/{Mount-server-e3d689cf52a4477da9aa00e2c7604110710db991.ts → Mount-server-8bef1924a731f3db63cb827be3938fec685e53af.ts} +1 -1
  135. package/test/on-mount/components/output/OnMount-client.ts +0 -2
  136. package/test/on-mount/components/temp/{OnMount-client-b2dfd41a0aaeafb3b7af14793a03e0fc3bc43aaa.ts → OnMount-client-21708a638d2939ee8b017f5dc819cee4748bde87.ts} +0 -2
  137. package/test/party/13-emit-to-parent.test.ts +2 -3
  138. package/test/party/16-context.test.ts +1 -2
  139. package/test/party/17-input-text.test.ts +2 -3
  140. package/test/party/18-input-checkbox.test.ts +1 -2
  141. package/test/party/19-input-radio.test.ts +2 -3
  142. package/test/party/20-input-select.test.ts +3 -4
  143. package/test/party/7-event-click.test.ts +1 -3
  144. package/test/party/9-conditional.test.ts +2 -4
  145. package/test/party/components/ColorSelect.torp +1 -1
  146. package/test/party/components/InputFocused.torp +1 -1
  147. package/test/party/components/InputHello.torp +1 -1
  148. package/test/party/components/IsAvailable.torp +1 -1
  149. package/test/party/components/PickPill.torp +2 -2
  150. package/test/party/components/output/AnswerButton-client.ts +3 -2
  151. package/test/party/components/output/AnswerButton-server.ts +1 -0
  152. package/test/party/components/output/AnswerButtonApp-client.ts +4 -4
  153. package/test/party/components/output/AnswerButtonApp-server.ts +1 -1
  154. package/test/party/components/output/ColorSelect-client.ts +1 -1
  155. package/test/party/components/output/Colors-client.ts +1 -1
  156. package/test/party/components/output/Counter-client.ts +1 -1
  157. package/test/party/components/output/FunnyButton-client.ts +1 -1
  158. package/test/party/components/output/FunnyButtonApp-client.ts +2 -2
  159. package/test/party/components/output/FunnyButtonApp-server.ts +1 -1
  160. package/test/party/components/output/InputFocused-client.ts +0 -2
  161. package/test/party/components/output/InputFocused-server.ts +1 -1
  162. package/test/party/components/output/InputHello-client.ts +1 -1
  163. package/test/party/components/output/IsAvailable-client.ts +1 -1
  164. package/test/party/components/output/PickPill-client.ts +2 -2
  165. package/test/party/components/output/TrafficLight-client.ts +6 -6
  166. package/test/party/components/output/UserProfile-client.ts +5 -4
  167. package/test/party/components/output/UserProfile-server.ts +1 -0
  168. package/test/party/components/output/UserProfileApp-client.ts +3 -2
  169. package/test/party/components/output/UserProfileApp-server.ts +1 -1
  170. package/test/party/components/output/UserProfileContext-client.ts +3 -3
  171. package/test/party/components/output/UserProfileContextApp-client.ts +2 -2
  172. package/test/party/components/output/UserProfileContextApp-server.ts +1 -1
  173. package/test/party/components/temp/{AnswerButton-client-243454cd7bf84c648f244b3587e60d01a0401039.ts → AnswerButton-client-c3dc7edbfff2db1ea111086002147d771ee12193.ts} +3 -2
  174. package/test/party/components/temp/{AnswerButton-server-938e46c1d2510ea37454854ef527e4aa64eb8e52.ts → AnswerButton-server-427442fa8cfc0a18817c2d37f9cb5cbcb3a88a05.ts} +1 -0
  175. package/test/party/components/temp/{AnswerButtonApp-client-34311c2e7412807867fb6267af31a341f092bf31.ts → AnswerButtonApp-client-3e0b63a6bbc1dee3e6cb715c0297cc2ce58d3e4e.ts} +4 -4
  176. package/test/party/components/temp/{AnswerButtonApp-server-3f5071775abea24ee8830830072c6fe465fc4e56.ts → AnswerButtonApp-server-bbc8bb739d2060ccda77ce406aa6b15d8f90b91c.ts} +1 -1
  177. package/test/party/components/temp/{ColorSelect-client-f9fb9fa09f4729da3226d5aaf30e84cd3cd705b5.ts → ColorSelect-client-5ffa6f9d77de967993088c9a01b9f976f3333176.ts} +1 -1
  178. package/test/party/components/temp/{Colors-client-f124162d1dd8f0c3d37bf96c8e5f18599ae3a682.ts → Colors-client-3dafffc5c2a72037f4419fc45d08963872a29958.ts} +1 -1
  179. package/test/party/components/temp/{Counter-client-c349710110b4afbf9593f20cfc40c162ed836079.ts → Counter-client-4d553521fcfc6c9a4e05dce89e70b2ecf8785c4e.ts} +1 -1
  180. package/test/party/components/temp/{FunnyButton-client-2e6bec8259065b5bc9ae16d1ca93dd1bd0c56b7c.ts → FunnyButton-client-45f2c5dd56f2cdb80102193a978df6b0cec822ab.ts} +1 -1
  181. package/test/party/components/temp/{FunnyButtonApp-client-4ed0ebf5be13ddb62d9942bac7f4b8a885ec6c50.ts → FunnyButtonApp-client-ac7101af922dc6ba472b75a428f340caca6be74a.ts} +2 -2
  182. package/test/party/components/temp/{FunnyButtonApp-server-9748c9096848e643c91237c46ea09d23f1b3fa7c.ts → FunnyButtonApp-server-f1a98a946e0bb9d1bb76b01e26d6ead8f55d32bb.ts} +1 -1
  183. package/test/party/components/temp/{InputFocused-client-a543f82c8db205fb3e33c62de699cff43c668a68.ts → InputFocused-client-11a9cb08909b26945bbc2451ab4c1dac09e6d113.ts} +0 -2
  184. package/test/party/components/temp/{InputFocused-server-222f2fa7029d1cd6941a3777293a9b2d37b7295e.ts → InputFocused-server-82be1a63c80d1dd3f06efaf0bef349d58cf1d9af.ts} +1 -1
  185. package/test/party/components/temp/{InputHello-client-9953499de5778bb1d8aac7691129210a6098db07.ts → InputHello-client-b0453caeae0d43dc1878039c6b49318d12624d48.ts} +1 -1
  186. package/test/party/components/temp/{IsAvailable-client-929ed6c872e72b6c5243b882c6a9a0d13f6a7c47.ts → IsAvailable-client-d789346a68b26fd3f5d9f7aebc4c7bd181c47cad.ts} +1 -1
  187. package/test/party/components/temp/{PickPill-client-f9a50a75ce63ec2ee3ac34e378e20602b93629f7.ts → PickPill-client-b47d371ae5f41d87c96b3cdeed0a8bc06fbfa9c7.ts} +2 -2
  188. package/test/party/components/temp/{TrafficLight-client-81dd9bd9f3332533e01f6c9b271c15e5f76e1fdb.ts → TrafficLight-client-549f9fe3418c113fb240cfa17e09c42e1e7f346a.ts} +6 -6
  189. package/test/party/components/temp/{UserProfile-client-938bcef20a2555de22aca939022a32742ac5e729.ts → UserProfile-client-2c13aac1ad915e51dc557f9af765669e636c0fea.ts} +5 -4
  190. package/test/party/components/temp/{UserProfile-server-9df5c59b8797fa67c479bc76450104d45e6076f9.ts → UserProfile-server-cc1162a4297f6163bfb86e7a8aeea08e8c0625c6.ts} +1 -0
  191. package/test/party/components/temp/{UserProfileApp-client-af27173415d65647cab0f30a9a4967cef0307e25.ts → UserProfileApp-client-2be7a11319cca4d7bfa0f3d2205c441d7e203780.ts} +3 -2
  192. package/test/party/components/temp/{UserProfileApp-server-6a7dbe68ee8041785cef50fb15a9e5ba475e120f.ts → UserProfileApp-server-ab9ff66f787f775aa8571314fee8bcbef85489ef.ts} +1 -1
  193. package/test/party/components/temp/{UserProfileContext-client-93211cdba795b8baf926f60f5b17da90701743b3.ts → UserProfileContext-client-2aa36f436a5f20614d77f48963ec5ca442eebd90.ts} +3 -3
  194. package/test/party/components/temp/{UserProfileContextApp-client-7ea7d90a35894408757aef3e935d3a8badf93aea.ts → UserProfileContextApp-client-5099052fdcd8fb4c368c45090390947424a4e9b0.ts} +2 -2
  195. package/test/party/components/temp/{UserProfileContextApp-server-90290c770529d7211eabf29e7d0fe868aa856b52.ts → UserProfileContextApp-server-6be8dab2ed4f8911f26bef137e7dea164f2b894d.ts} +1 -1
  196. package/test/props/components/Reactive.torp +18 -0
  197. package/test/props/components/output/Reactive-client.ts +70 -0
  198. package/test/props/components/output/Reactive-server.ts +40 -0
  199. package/test/props/components/temp/Reactive-client-e3e5f6ee2f22c46337c6ab1df2f241133c7e2646.ts +70 -0
  200. package/test/props/components/temp/Reactive-server-0914d91287a1bc6d32d7cc56d086624762dbfc04.ts +40 -0
  201. package/test/props/reactive.test.ts +51 -0
  202. package/test/replace/components/output/Replace-client.ts +3 -2
  203. package/test/replace/components/output/Replace-server.ts +1 -0
  204. package/test/replace/components/temp/{Replace-client-ea4ddc73c71181fb6ef3c6f5bf61b0b9e017f00a.ts → Replace-client-3fdab63871fa4bb792317caefd3539b1888325b1.ts} +3 -2
  205. package/test/replace/components/temp/{Replace-server-30eb1ad796516fa4d310798a9c8a6811ec13cbd9.ts → Replace-server-857aca7a58deffc3a1c95ab9d31628b4051ca203.ts} +1 -0
  206. package/test/slots/components/output/Article-client.ts +2 -2
  207. package/test/slots/components/output/Basic-client.ts +1 -1
  208. package/test/slots/components/output/Basic-server.ts +1 -1
  209. package/test/slots/components/output/Let-client.ts +4 -3
  210. package/test/slots/components/output/Let-server.ts +2 -1
  211. package/test/slots/components/output/List-client.ts +1 -1
  212. package/test/slots/components/output/List-server.ts +1 -0
  213. package/test/slots/components/output/Named-client.ts +2 -2
  214. package/test/slots/components/output/Named-server.ts +1 -1
  215. package/test/slots/components/output/Unused-client.ts +1 -1
  216. package/test/slots/components/output/Unused-server.ts +1 -1
  217. package/test/slots/components/temp/{Article-client-741f94eab2e96655f4c9d69ccd7d9c7cc998f4ce.ts → Article-client-80848d6cadd8abac61865d14ddd35685844797e0.ts} +2 -2
  218. package/test/slots/components/temp/{Basic-client-c82bc3c5e10f2f2c1869347435262c8f3039e32f.ts → Basic-client-97b18686412869e8c814fd4542dfe826b1f7669f.ts} +1 -1
  219. package/test/slots/components/temp/{Basic-server-21fb4f8caa3bbcae219aaef388af8c26c46fa5ce.ts → Basic-server-248392e2cd147b537cd44e9a5a71885ef20102e4.ts} +1 -1
  220. package/test/slots/components/temp/{Let-client-c54696fd1b5b859a693744722957fa960f72fad6.ts → Let-client-be69c1f5aa32faf16239050d7836db46cfdcba2f.ts} +4 -3
  221. package/test/slots/components/temp/{Let-server-4d78ffc8741fa737f2cd915b36c0e6ec88a9146f.ts → Let-server-c3293219ed27aec61a6af36d451ddf6609c40027.ts} +2 -1
  222. package/test/slots/components/temp/{List-client-0659d999cfb48b865fe5b8aaaf2a4ddac3a8a8b6.ts → List-client-a829b33214de829de689a72d2e8703b2266ad7a4.ts} +1 -1
  223. package/test/slots/components/temp/{List-server-4b76485a259d054187edad8aa691d80ac918ad86.ts → List-server-06503834c9bfae9b8c2b61742568b020a3de961c.ts} +1 -0
  224. package/test/slots/components/temp/{Named-client-0626b2f0911f77f5edcfda82f9751bcbc37b7641.ts → Named-client-2d9d88f5fdf74d81c3ed1d769a476f4ac36c8b99.ts} +2 -2
  225. package/test/slots/components/temp/{Named-server-e802f901223d697c7fd0a1a234ce1930af1b4b3f.ts → Named-server-65a7bbf038111475c8f07dccb34040ab8c1392c4.ts} +1 -1
  226. package/test/slots/components/temp/{Unused-client-aa05465731e0d00e18189498f49c94f991e76f10.ts → Unused-client-1b16491cb800bbbbd871d9fbf5966c7275244019.ts} +1 -1
  227. package/test/slots/components/temp/{Unused-server-00b92d14665a565f0042b1f56231f28bc38a1252.ts → Unused-server-e5d1e85116bebc7e1a2882cb8f2c9ae7975a1de7.ts} +1 -1
  228. package/test/special-component/components/output/Component-client.ts +5 -4
  229. package/test/special-component/components/output/Component-server.ts +3 -2
  230. package/test/special-component/components/temp/{Component-client-3cc84b23def8830b8ef441bde0f03b3e9718196a.ts → Component-client-22f7e1d0955fb3d90939e956a1f0f77118c259b6.ts} +5 -4
  231. package/test/special-component/components/temp/{Component-server-5dc597784ea1fe45ac2cfb21305cf2187a3868e8.ts → Component-server-ce596cd84dc11f67c9f0588060a5b672eddf9715.ts} +3 -2
  232. package/test/special-element/components/output/Element-client.ts +2 -1
  233. package/test/special-element/components/output/Element-server.ts +1 -0
  234. package/test/special-element/components/temp/{Element-client-0ab8992a8e914c7e190cddac790585fef9be1c9f.ts → Element-client-21c92c04579b1d29e8813265a10897d069aad5c5.ts} +2 -1
  235. package/test/special-element/components/temp/{Element-server-ddb0170df4a3f369577ca7e9768e5fe799f14dfb.ts → Element-server-4bed9653529f39e72754126147fe8618f328853a.ts} +1 -0
  236. package/test/special-self/components/output/Self-client.ts +3 -2
  237. package/test/special-self/components/output/Self-server.ts +1 -0
  238. package/test/special-self/components/temp/{Self-client-3982f174954034643c4d17cfc66d7f10bf1d4df6.ts → Self-client-911c67194be1fdd997537310bcafe712161e8251.ts} +3 -2
  239. package/test/special-self/components/temp/{Self-server-97ffbdaae47f4463034e1d318a8073d078ff138f.ts → Self-server-49ba9be1f6255dd4daf490c640f5222a85960218.ts} +1 -0
  240. package/test/style/components/output/Style-client.ts +2 -1
  241. package/test/style/components/output/Style-server.ts +1 -0
  242. package/test/style/components/temp/{Style-client-085517e82bdd015c86f4c2577447c6a2791cf656.ts → Style-client-cbfac1e255c33a867ccbd5f9d1484a855d91a2d7.ts} +2 -1
  243. package/test/style/components/temp/{Style-server-b2615163fbafdcb2a5d4155120edf2f66ef3bba6.ts → Style-server-763d82ee2296be3f7620814aed950b505329c04c.ts} +1 -0
  244. package/test/svg/components/output/Shape-client.ts +4 -3
  245. package/test/svg/components/output/Shape-server.ts +1 -0
  246. package/test/svg/components/temp/{Shape-client-ea698ed1b7d0c3615adff35fa4956f22840f5fda.ts → Shape-client-cb98b36ab2a0d9f06b484a3c988fb43c3a71a4a0.ts} +4 -3
  247. package/test/svg/components/temp/{Shape-server-eb32049cfb7c058b2c4079c5f86ef00651ff6d69.ts → Shape-server-500d7fe4556026234ce5379b8e90595ddd094edc.ts} +1 -0
  248. package/test/switch/components/output/Switch-client.ts +5 -4
  249. package/test/switch/components/output/Switch-server.ts +1 -0
  250. package/test/switch/components/temp/{Switch-client-4c4adac7308795807517e66bc268a38f87df6bda.ts → Switch-client-9980de45e3346b79525c445edec7cbc3b375e8a4.ts} +5 -4
  251. package/test/switch/components/temp/{Switch-server-21fcac2b02c6071136bb0dc394babd27e454d2c9.ts → Switch-server-1c5690726f28008bb565966af69b6e4e019dea82.ts} +1 -0
  252. package/test/text/components/output/Text-client.ts +3 -2
  253. package/test/text/components/output/Text-server.ts +1 -0
  254. package/test/text/components/temp/{Text-client-9840092be1b4552ddce6e5efc2f1b395637a0a3d.ts → Text-client-63f1d3bf9b3bd145c7ce7058716640e27144055e.ts} +3 -2
  255. package/test/text/components/temp/{Text-server-6774aa9d4ccce941224ba0a8fb1d3e42eb31807e.ts → Text-server-9d3dd6f51e893e63c1999ceafce19ca1697d76ea.ts} +1 -0
  256. package/test/watch-array/components/output/Array-client.ts +4 -3
  257. package/test/watch-array/components/output/Array-server.ts +1 -0
  258. package/test/watch-array/components/output/ArrayEntries-client.ts +4 -3
  259. package/test/watch-array/components/output/ArrayEntries-server.ts +1 -0
  260. package/test/watch-array/components/output/ArrayIndexes-client.ts +4 -3
  261. package/test/watch-array/components/output/ArrayIndexes-server.ts +1 -0
  262. package/test/watch-array/components/output/ArrayUnkeyed-client.ts +4 -3
  263. package/test/watch-array/components/output/ArrayUnkeyed-server.ts +1 -0
  264. package/test/watch-array/components/temp/{Array-client-b29a42f88c2a2f37b3a86bdb9535e20a487887e1.ts → Array-client-ffd82188a45877d74053c82fb3616e4aed0fc2ad.ts} +4 -3
  265. package/test/watch-array/components/temp/{Array-server-ced54fc7e63196f9c24c2e55b27bfe6cf7821dcb.ts → Array-server-3715e815af887e8487b214e7de324850fe99e312.ts} +1 -0
  266. package/test/watch-array/components/temp/{ArrayEntries-client-6289890758b1f6b462a74417e0b9e2e46d946ccd.ts → ArrayEntries-client-b6e982660628576061dbb44539e970b9549bdcfa.ts} +4 -3
  267. package/test/watch-array/components/temp/{ArrayEntries-server-0429a18ffbe39afe87612889a3010c3fcaa601dc.ts → ArrayEntries-server-85cbe80fbb7f6885287825e2cc0dfc1cb9835d79.ts} +1 -0
  268. package/test/watch-array/components/temp/{ArrayIndexes-client-fe4b1c49f442b3e5411f331c52ae6c5ab38f2b2d.ts → ArrayIndexes-client-39337aa43bd8c10a53db836c3be233d48dd39b91.ts} +4 -3
  269. package/test/watch-array/components/temp/{ArrayIndexes-server-20c01f10832f035b007f85a423778934d51a703a.ts → ArrayIndexes-server-ec623c724af0c7212675d61ea68e9dee87f96caa.ts} +1 -0
  270. package/test/watch-array/components/temp/{ArrayUnkeyed-client-3fffe2ce749ee84e0730130bfd730d432e3c4e12.ts → ArrayUnkeyed-client-7606f9a6a221c8cf6a8b51e4895d10a3d7bccc11.ts} +4 -3
  271. package/test/watch-array/components/temp/{ArrayUnkeyed-server-0ab804a5e7bf5b47594d85adab79735e89a3939d.ts → ArrayUnkeyed-server-db21cd576a4c70973abe10f6c8ef5cecb3ead86c.ts} +1 -0
  272. package/test/watch-object/components/output/Watched-client.ts +2 -1
  273. package/test/watch-object/components/output/Watched-server.ts +1 -0
  274. package/test/watch-object/components/temp/{Watched-client-cb293038cd0a39043d05639c624a17d512419c25.ts → Watched-client-bbffbf2cede1a5c071b770670eb39c0f0be725af.ts} +2 -1
  275. package/test/watch-object/components/temp/{Watched-server-4884585cf4f50493a70631909f2230153531208e.ts → Watched-server-0252addaf92fb0f0c1e2937f42918a1c9f31d196.ts} +1 -0
  276. package/src/render/flushMountEffects.ts +0 -8
  277. package/test/class/components/temp/Class-server-2218c3284845fdab80d1a41ebace9a9e2ddd6fc1.ts +0 -17
  278. package/test/if/components/temp/IfNested-client-979db97eea5b4595550b9b46f297f3fbc31796d2.ts +0 -90
  279. package/test/if/components/temp/IfNested-server-3c4e4b6f2162c0906cef685830219b9ea9ee985c.ts +0 -30
package/dist/compile.js CHANGED
@@ -177,6 +177,7 @@ function buildComponentFragmentText(node, status, fragments, currentFragment) {
177
177
  }
178
178
  }
179
179
  function buildElementFragmentText(node, status, fragments, currentFragment) {
180
+ let needsClass = node.scopeStyles;
180
181
  currentFragment.text += `<${node.tagName}`;
181
182
  let attributesText = node.attributes.filter((a) => !a.name.startsWith("on") && !a.name.includes(":")).map((a) => {
182
183
  if (a.value && isReactive(a.value) && !a.name.includes(":")) {
@@ -184,6 +185,7 @@ function buildElementFragmentText(node, status, fragments, currentFragment) {
184
185
  return `${a.name}=""`;
185
186
  }
186
187
  } else if (a.name === "class" && node.scopeStyles) {
188
+ needsClass = false;
187
189
  let value = a.value ? `"${trimQuotes(a.value)} torp-${status.styleHash}"` : `"torp-${status.styleHash}"`;
188
190
  return `${a.name}=${value}`;
189
191
  } else {
@@ -193,6 +195,9 @@ function buildElementFragmentText(node, status, fragments, currentFragment) {
193
195
  if (attributesText) {
194
196
  currentFragment.text += " " + attributesText;
195
197
  }
198
+ if (needsClass) {
199
+ currentFragment.text += ` class="torp-${status.styleHash}"`;
200
+ }
196
201
  currentFragment.text += ">";
197
202
  for (let child of node.children) {
198
203
  buildNodeFragmentText(child, status, fragments, currentFragment);
@@ -814,6 +819,29 @@ function getFragmentVarPath(fragment, status, name, path, varPaths) {
814
819
  varPaths.set(varPath, name);
815
820
  varPaths.set(name, name);
816
821
  }
822
+ while (varPath.includes("t_next(t_next(")) {
823
+ const match = varPath.match(/(t_next\(){2,}/)[0];
824
+ const count = match.length / "t_next(".length;
825
+ const pos = varPath.indexOf("t_next(t_next(");
826
+ const head = varPath.substring(0, pos);
827
+ let level = 0;
828
+ let end = 0;
829
+ for (let i = pos + match.length; i < varPath.length; i++) {
830
+ if (varPath[i] === "(") {
831
+ level++;
832
+ } else if (varPath[i] === ")") {
833
+ if (level === 0) {
834
+ end = i;
835
+ break;
836
+ } else {
837
+ level--;
838
+ }
839
+ }
840
+ }
841
+ const tail = varPath.substring(end + count);
842
+ const param = varPath.substring(pos + match.length, end);
843
+ varPath = `${head}t_next(${param}, ${count})${tail}`;
844
+ }
817
845
  return varPath;
818
846
  }
819
847
  function getFragmentVarPathPart(path, varPath, status, root = false) {
@@ -863,12 +891,19 @@ function buildComponentNode(node, status, b, root = false) {
863
891
  const componentHasProps = node.attributes.length || root;
864
892
  const propsName = componentHasProps ? nextVarName("props", status) : "undefined";
865
893
  if (componentHasProps) {
866
- b.append(`const ${propsName}: any = {};`);
894
+ status.imports.add("$watch");
895
+ b.append(`const ${propsName}: any = $watch({});`);
867
896
  for (let { name, value } of node.attributes) {
868
897
  if (name === "self" && node.tagName === ":component") {
869
898
  } else if (name.startsWith("{") && name.endsWith("}")) {
870
899
  name = name.substring(1, name.length - 1);
871
- buildRun("setProp", `${propsName}["${name}"] = ${name};`, status, b);
900
+ const propName = name.split(".").at(-1);
901
+ buildRun("setProp", `${propsName}["${propName}"] = ${name};`, status, b);
902
+ } else if (name.startsWith("&") && value != null && isFullyReactive(value)) {
903
+ name = name.substring(1);
904
+ value = value.substring(1, value.length - 1);
905
+ buildRun("setProp", `${propsName}["${name}"] = ${value};`, status, b);
906
+ buildRun("setBinding", `${value} = ${propsName}["${name}"];`, status, b);
872
907
  } else if (value != null) {
873
908
  let fullyReactive = isFullyReactive(value);
874
909
  let partlyReactive = isReactive(value);
@@ -1148,6 +1183,7 @@ function buildHtmlNode(node, status, b) {
1148
1183
  }
1149
1184
  function buildHtmlBranch(node, status, b, parentName, rangeName) {
1150
1185
  status.imports.add("t_run_branch");
1186
+ b.append(`${node.statement};`);
1151
1187
  b.append(`t_run_branch(${rangeName}, -1, () => {`);
1152
1188
  const templateName = nextVarName("template", status);
1153
1189
  const fragmentName = `t_fragment_${node.fragment.number}`;
@@ -1468,7 +1504,8 @@ function buildHeadNode(node, status, b) {
1468
1504
  for (let { name, value } of node.attributes) {
1469
1505
  if (name.startsWith("{") && name.endsWith("}")) {
1470
1506
  name = name.substring(1, name.length - 1);
1471
- buildRun("setAttribute", `t_head_el.setAttribute("${name}", ${name});`, status, b);
1507
+ const propName = name.split(".").at(-1);
1508
+ buildRun("setAttribute", `t_head_el.setAttribute("${propName}", ${name});`, status, b);
1472
1509
  } else if (value != null && isReactive(value)) {
1473
1510
  if (isFullyReactive(value)) {
1474
1511
  value = value.substring(1, value.length - 1);
@@ -1491,18 +1528,19 @@ function buildElementAttributes(node, varName, status, b) {
1491
1528
  if (name === "self" && node.tagName === ":element") {
1492
1529
  } else if (name.startsWith("{") && name.endsWith("}")) {
1493
1530
  name = name.substring(1, name.length - 1);
1494
- buildRun("setAttribute", `${varName}.setAttribute("${name}", ${name});`, status, b);
1531
+ const propName = name.split(".").at(-1);
1532
+ buildRun("setAttribute", `${varName}.setAttribute("${propName}", ${name});`, status, b);
1495
1533
  } else if (value != null && isReactive(value)) {
1496
1534
  if (isFullyReactive(value)) {
1497
1535
  value = value.substring(1, value.length - 1);
1498
1536
  } else {
1499
1537
  value = `\`${trimQuotes(value).replaceAll("{", "${")}\``;
1500
1538
  }
1501
- if (name === ":self") {
1539
+ if (name === "&ref") {
1502
1540
  b.append(`${value} = ${varName};`);
1503
- } else if (name === ":group") {
1541
+ } else if (name === "&group") {
1504
1542
  buildBindGroupAttribute(node, varName, value, status, b);
1505
- } else if (name === ":value" || name === ":checked") {
1543
+ } else if (name === "&value" || name === "&checked") {
1506
1544
  buildBindAttribute(node, varName, name, value, status, b);
1507
1545
  } else if (name === ":onmount") {
1508
1546
  buildMount("elMount", `return (${trimEnd(value.trim(), ";")})(${varName});`, status, b);
@@ -1691,7 +1729,8 @@ function buildSlotNode(node, status, b) {
1691
1729
  for (let { name, value } of slotAttributes) {
1692
1730
  if (name.startsWith("{") && name.endsWith("}")) {
1693
1731
  name = name.substring(1, name.length - 1);
1694
- buildRun("setProp", `${propsName}["${name}"] = ${name};`, status, b);
1732
+ const propName = name.split(".").at(-1);
1733
+ buildRun("setProp", `${propsName}["${propName}"] = ${name};`, status, b);
1695
1734
  } else if (value != null) {
1696
1735
  let fullyReactive = isFullyReactive(value);
1697
1736
  let partlyReactive = isReactive(value);
@@ -1884,7 +1923,6 @@ var importsMap = {
1884
1923
  $unwrap: 'import { $unwrap } from "${folder}";',
1885
1924
  $run: 'import { $run } from "${folder}";',
1886
1925
  $mount: 'import { $mount } from "${folder}";',
1887
- t_flush: 'import { t_flush } from "${folder}";',
1888
1926
  t_range: 'import { t_range } from "${folder}";',
1889
1927
  t_push_range: 'import { t_push_range } from "${folder}";',
1890
1928
  t_pop_range: 'import { t_pop_range } from "${folder}";',
@@ -1951,7 +1989,8 @@ function buildTemplate(template, imports, b) {
1951
1989
  } else if (script.substring(i, i + "/* @start */".length) === "/* @start */") {
1952
1990
  b.append(script.substring(marker, i));
1953
1991
  if (current.props?.length) {
1954
- b.append(`$props ??= {};`);
1992
+ imports.add("$watch");
1993
+ b.append(`$props ??= $watch({});`);
1955
1994
  }
1956
1995
  if (current.contextProps?.length) {
1957
1996
  b.append(`$context = Object.assign({}, $context);`);
@@ -1984,11 +2023,6 @@ function buildTemplate(template, imports, b) {
1984
2023
  b.append(script.substring(marker, i));
1985
2024
  currentIndex += 1;
1986
2025
  current = template.components[currentIndex];
1987
- if (imports.has("$mount")) {
1988
- imports.add("t_flush");
1989
- b.append("");
1990
- b.append("t_flush();");
1991
- }
1992
2026
  marker = i + "/* @end */".length;
1993
2027
  }
1994
2028
  }
@@ -2040,7 +2074,8 @@ function buildServerComponentNode(node, status, b) {
2040
2074
  for (let { name, value } of node.attributes) {
2041
2075
  if (name.startsWith("{") && name.endsWith("}")) {
2042
2076
  name = name.substring(1, name.length - 1);
2043
- b.append(`${propsName}["${name}"] = ${name};`);
2077
+ const propName = name.split(".").at(-1);
2078
+ b.append(`${propsName}["${propName}"] = ${name};`);
2044
2079
  } else if (value != null) {
2045
2080
  let fullyReactive = isFullyReactive(value);
2046
2081
  let partlyReactive = isReactive(value);
@@ -2386,6 +2421,7 @@ function buildServerElementNode(node, status, b) {
2386
2421
  }
2387
2422
  }
2388
2423
  function buildElementAttributes2(node, status) {
2424
+ let needsClass = node.scopeStyles;
2389
2425
  let attributes = [];
2390
2426
  for (let { name, value } of node.attributes) {
2391
2427
  if (name === "self" && node.tagName === ":element") {
@@ -2403,11 +2439,12 @@ function buildElementAttributes2(node, status) {
2403
2439
  );
2404
2440
  } else if (name.startsWith("{") && name.endsWith("}")) {
2405
2441
  name = name.substring(1, name.length - 1);
2442
+ const propName = name.split(".").at(-1);
2406
2443
  status.imports.add("t_attr");
2407
- attributes.push(`${name}="\${t_attr(${name})}"`);
2444
+ attributes.push(`${propName}="\${t_attr(${name})}"`);
2408
2445
  } else if (value != null && isFullyReactive(value)) {
2409
2446
  value = value.substring(1, value.length - 1);
2410
- if (name === ":self" || name === ":value" || name === ":checked" || name === ":group") {
2447
+ if (name === "&ref" || name === "&value" || name === "&checked" || name === "&group") {
2411
2448
  let defaultValue = "";
2412
2449
  let typeAttribute = node.attributes.find((a) => a.name === "type");
2413
2450
  if (typeAttribute && typeAttribute.value) {
@@ -2434,6 +2471,7 @@ function buildElementAttributes2(node, status) {
2434
2471
  status.imports.add("t_class");
2435
2472
  if (node.scopeStyles) {
2436
2473
  value += `, "torp-${status.styleHash}"`;
2474
+ needsClass = false;
2437
2475
  }
2438
2476
  attributes.push(`class="\${t_class(${value})}"`);
2439
2477
  } else if (name === ":style") {
@@ -2451,12 +2489,16 @@ function buildElementAttributes2(node, status) {
2451
2489
  } else if (name === "class" && node.scopeStyles) {
2452
2490
  value = value ? `"${trimQuotes(value)} torp-${status.styleHash}"` : `"torp-${status.styleHash}"`;
2453
2491
  attributes.push(`${name}="${trimQuotes(value).replaceAll('"', "&quot;")}"`);
2492
+ needsClass = false;
2454
2493
  } else if (value != null) {
2455
2494
  attributes.push(`${name}="${trimQuotes(value).replaceAll('"', "&quot;")}"`);
2456
2495
  } else {
2457
2496
  attributes.push(`${name}`);
2458
2497
  }
2459
2498
  }
2499
+ if (needsClass) {
2500
+ attributes.push(`class="torp-${status.styleHash}"`);
2501
+ }
2460
2502
  return attributes.join(" ");
2461
2503
  }
2462
2504
 
@@ -2482,7 +2524,8 @@ function buildServerSlotNode(node, status, b) {
2482
2524
  for (let { name, value } of slotAttributes) {
2483
2525
  if (name.startsWith("{") && name.endsWith("}")) {
2484
2526
  name = name.substring(1, name.length - 1);
2485
- b.append(`${propsName}["${name}"] = ${name};`);
2527
+ const propName = name.split(".").at(-1);
2528
+ b.append(`${propsName}["${propName}"] = ${name};`);
2486
2529
  } else if (value != null) {
2487
2530
  let fullyReactive = isFullyReactive(value);
2488
2531
  let partlyReactive = isReactive(value);
@@ -2693,6 +2736,9 @@ function buildServerTemplate(template, imports, b, options) {
2693
2736
  marker = i + "/* @params */".length;
2694
2737
  } else if (script.substring(i, i + "/* @start */".length) === "/* @start */") {
2695
2738
  b.append(script.substring(marker, i));
2739
+ if (current.props?.length) {
2740
+ b.append(`$props ??= {};`);
2741
+ }
2696
2742
  if (current.contextProps?.length) {
2697
2743
  b.append(`$context = Object.assign({}, $context);`);
2698
2744
  }
@@ -3635,22 +3681,28 @@ function parseCode(source) {
3635
3681
  parseComponentEnd(status);
3636
3682
  }
3637
3683
  } else if (accept("function", status)) {
3638
- consumeSpace(status);
3639
- if (/[A-Z]/.test(source[status.i])) {
3640
- parseComponentStart(status);
3684
+ if (consumeSpace(status)) {
3685
+ if (/[A-Z]/.test(source[status.i])) {
3686
+ parseComponentStart(status);
3687
+ } else {
3688
+ status.i--;
3689
+ }
3641
3690
  }
3642
3691
  } else if (accept("const", status)) {
3643
- consumeSpace(status);
3644
- if (/[A-Z]/.test(source[status.i])) {
3645
- const start = status.i;
3646
- consumeAlphaNumeric(status);
3647
- consumeSpace(status);
3648
- if (accept("=", status)) {
3692
+ if (consumeSpace(status)) {
3693
+ if (/[A-Z]/.test(source[status.i])) {
3694
+ const start = status.i;
3695
+ consumeAlphaNumeric(status);
3649
3696
  consumeSpace(status);
3650
- if (accept("(", status, false)) {
3651
- status.i = start;
3652
- parseComponentStart(status);
3697
+ if (accept("=", status)) {
3698
+ consumeSpace(status);
3699
+ if (accept("(", status, false)) {
3700
+ status.i = start;
3701
+ parseComponentStart(status);
3702
+ }
3653
3703
  }
3704
+ } else {
3705
+ status.i--;
3654
3706
  }
3655
3707
  }
3656
3708
  } else if (accept("export", status)) {