marko 5.37.5 → 6.0.0-3.11

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 (648) hide show
  1. package/dist/common/attr-tag.d.ts +8 -0
  2. package/dist/common/compat-meta.d.ts +2 -0
  3. package/dist/common/for.d.ts +5 -0
  4. package/dist/common/helpers.d.ts +7 -0
  5. package/dist/common/meta.d.ts +2 -0
  6. package/dist/common/types.d.ts +105 -0
  7. package/dist/debug/dom.js +2111 -0
  8. package/dist/debug/dom.mjs +2088 -0
  9. package/dist/debug/html.js +2740 -0
  10. package/dist/debug/html.mjs +2663 -0
  11. package/dist/dom/abort-signal.d.ts +3 -0
  12. package/dist/dom/compat.d.ts +20 -0
  13. package/dist/dom/control-flow.d.ts +14 -0
  14. package/dist/dom/controllable.d.ts +12 -0
  15. package/dist/dom/dom.d.ts +19 -0
  16. package/dist/dom/event.d.ts +4 -0
  17. package/dist/dom/parse-html.d.ts +5 -0
  18. package/dist/dom/queue.d.ts +10 -0
  19. package/dist/dom/reconcile.d.ts +2 -0
  20. package/dist/dom/renderer.d.ts +21 -0
  21. package/dist/dom/resolve-cursor-position.d.ts +1 -0
  22. package/dist/dom/resume.d.ts +9 -0
  23. package/dist/dom/schedule.d.ts +2 -0
  24. package/dist/dom/scope.d.ts +7 -0
  25. package/dist/dom/signals.d.ts +39 -0
  26. package/dist/dom/template.d.ts +3 -0
  27. package/dist/dom/walker.d.ts +4 -0
  28. package/dist/dom.d.ts +15 -0
  29. package/dist/dom.js +1370 -0
  30. package/dist/dom.mjs +1350 -0
  31. package/dist/html/attrs.d.ts +14 -0
  32. package/dist/html/compat.d.ts +14 -0
  33. package/dist/html/content.d.ts +5 -0
  34. package/dist/html/dynamic-tag.d.ts +12 -0
  35. package/dist/html/for.d.ts +4 -0
  36. package/dist/html/inlined-runtimes.d.ts +2 -0
  37. package/dist/html/serializer.d.ts +14 -0
  38. package/dist/html/template.d.ts +3 -0
  39. package/dist/html/writer.d.ts +114 -0
  40. package/dist/html.d.ts +9 -0
  41. package/dist/html.js +1818 -0
  42. package/dist/html.mjs +1744 -0
  43. package/dist/translator/core/attrs.d.ts +3 -0
  44. package/dist/translator/core/client.d.ts +14 -0
  45. package/dist/translator/core/const.d.ts +3 -0
  46. package/dist/translator/core/debug.d.ts +3 -0
  47. package/dist/translator/core/define.d.ts +3 -0
  48. package/dist/translator/core/effect.d.ts +3 -0
  49. package/dist/translator/core/export.d.ts +3 -0
  50. package/dist/translator/core/for.d.ts +67 -0
  51. package/dist/translator/core/html-comment.d.ts +12 -0
  52. package/dist/translator/core/html-script.d.ts +9 -0
  53. package/dist/translator/core/html-style.d.ts +9 -0
  54. package/dist/translator/core/id.d.ts +3 -0
  55. package/dist/translator/core/if.d.ts +53 -0
  56. package/dist/translator/core/import.d.ts +3 -0
  57. package/dist/translator/core/index.d.ts +152 -0
  58. package/dist/translator/core/let.d.ts +8 -0
  59. package/dist/translator/core/lifecycle.d.ts +10 -0
  60. package/dist/translator/core/log.d.ts +3 -0
  61. package/dist/translator/core/return.d.ts +6 -0
  62. package/dist/translator/core/script.d.ts +3 -0
  63. package/dist/translator/core/server.d.ts +14 -0
  64. package/dist/translator/core/static.d.ts +14 -0
  65. package/dist/translator/core/style.d.ts +3 -0
  66. package/dist/translator/index.d.ts +201 -0
  67. package/dist/translator/index.js +9134 -490
  68. package/dist/translator/util/assert.d.ts +3 -0
  69. package/dist/translator/util/binding-has-downstream-expressions.d.ts +2 -0
  70. package/dist/translator/util/entry-builder.d.ts +19 -0
  71. package/dist/translator/util/evaluate.d.ts +11 -0
  72. package/dist/translator/util/for-each-identifier.d.ts +2 -0
  73. package/dist/translator/util/get-defined-binding-expression.d.ts +3 -0
  74. package/dist/translator/util/get-known-attr-values.d.ts +2 -0
  75. package/dist/translator/util/get-parent-tag.d.ts +2 -0
  76. package/dist/translator/util/get-root.d.ts +7 -0
  77. package/dist/translator/util/get-tag-name.d.ts +2 -0
  78. package/dist/translator/util/is-core-tag.d.ts +10 -0
  79. package/dist/translator/util/is-stateful.d.ts +3 -0
  80. package/dist/translator/util/is-static.d.ts +2 -0
  81. package/dist/translator/util/marko-config.d.ts +4 -0
  82. package/dist/translator/util/nested-attribute-tags.d.ts +17 -0
  83. package/dist/translator/util/normalize-string-expression.d.ts +3 -0
  84. package/dist/translator/util/optional.d.ts +20 -0
  85. package/dist/translator/util/plugin-hooks.d.ts +4 -0
  86. package/dist/translator/util/references.d.ts +84 -0
  87. package/dist/translator/util/runtime-info.d.ts +5 -0
  88. package/dist/translator/util/runtime.d.ts +15 -0
  89. package/dist/translator/util/scope-read.d.ts +6 -0
  90. package/dist/translator/util/sections.d.ts +51 -0
  91. package/dist/translator/util/signals.d.ts +61 -0
  92. package/dist/translator/util/simplify-fn.d.ts +5 -0
  93. package/dist/translator/util/state.d.ts +3 -0
  94. package/dist/translator/util/tag-name-type.d.ts +16 -0
  95. package/dist/translator/util/to-first-expression-or-block.d.ts +3 -0
  96. package/dist/translator/util/to-first-statement-or-block.d.ts +2 -0
  97. package/dist/translator/util/to-property-name.d.ts +7 -0
  98. package/dist/translator/util/translate-attrs.d.ts +12 -0
  99. package/dist/translator/util/translate-var.d.ts +2 -0
  100. package/dist/translator/util/traverse.d.ts +9 -0
  101. package/dist/translator/util/visitors.d.ts +11 -0
  102. package/dist/translator/util/walks.d.ts +15 -0
  103. package/dist/translator/util/with-previous-location.d.ts +2 -0
  104. package/dist/translator/util/writer.d.ts +13 -0
  105. package/dist/translator/visitors/cdata.d.ts +7 -0
  106. package/dist/translator/visitors/comment.d.ts +7 -0
  107. package/dist/translator/visitors/declaration.d.ts +7 -0
  108. package/dist/translator/visitors/document-type.d.ts +7 -0
  109. package/dist/translator/visitors/function.d.ts +19 -0
  110. package/dist/translator/visitors/import-declaration.d.ts +8 -0
  111. package/dist/translator/visitors/placeholder.d.ts +22 -0
  112. package/dist/translator/visitors/program/dom.d.ts +7 -0
  113. package/dist/translator/visitors/program/html.d.ts +8 -0
  114. package/dist/translator/visitors/program/index.d.ts +39 -0
  115. package/dist/translator/visitors/referenced-identifier.d.ts +7 -0
  116. package/dist/translator/visitors/scriptlet.d.ts +8 -0
  117. package/dist/translator/visitors/tag/attribute-tag.d.ts +11 -0
  118. package/dist/translator/visitors/tag/custom-tag.d.ts +19 -0
  119. package/dist/translator/visitors/tag/dynamic-tag.d.ts +18 -0
  120. package/dist/translator/visitors/tag/index.d.ts +15 -0
  121. package/dist/translator/visitors/tag/native-tag.d.ts +25 -0
  122. package/dist/translator/visitors/text.d.ts +7 -0
  123. package/package.json +34 -70
  124. package/tag-types/const.d.marko +7 -0
  125. package/tag-types/debug.d.marko +5 -0
  126. package/tag-types/define.d.marko +5 -0
  127. package/tag-types/do.d.marko +5 -0
  128. package/tag-types/effect.d.marko +5 -0
  129. package/tag-types/id.d.marko +3 -0
  130. package/tag-types/let.d.marko +8 -0
  131. package/tag-types/lifecycle.d.marko +7 -0
  132. package/tag-types/log.d.marko +5 -0
  133. package/tag-types/script.d.marko +5 -0
  134. package/README.md +0 -161
  135. package/bin/markoc +0 -2
  136. package/bin/markoc.js +0 -441
  137. package/browser-refresh.js +0 -5
  138. package/compiler-browser.marko +0 -15
  139. package/compiler.js +0 -7
  140. package/components-browser.marko +0 -15
  141. package/components.js +0 -7
  142. package/dist/build.json +0 -3
  143. package/dist/compiler/config.js +0 -45
  144. package/dist/compiler/index.js +0 -164
  145. package/dist/compiler/modules.js +0 -5
  146. package/dist/core-tags/components/init-components-tag.js +0 -54
  147. package/dist/core-tags/components/preferred-script-location-tag.js +0 -25
  148. package/dist/core-tags/components/preserve-tag.js +0 -1
  149. package/dist/core-tags/core/__flush_here_and_after__.js +0 -44
  150. package/dist/core-tags/core/await/AsyncValue.js +0 -121
  151. package/dist/core-tags/core/await/client-reorder-runtime.js +0 -51
  152. package/dist/core-tags/core/await/index.d.marko +0 -10
  153. package/dist/core-tags/core/await/renderer.js +0 -249
  154. package/dist/core-tags/core/await/reorderer-renderer.js +0 -156
  155. package/dist/index.js +0 -4
  156. package/dist/node-require/browser-refresh.js +0 -1
  157. package/dist/node-require/hot-reload.js +0 -45
  158. package/dist/node-require/index.js +0 -103
  159. package/dist/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  160. package/dist/node_modules/@internal/components-beginComponent/index.js +0 -84
  161. package/dist/node_modules/@internal/components-beginComponent/package.json +0 -11
  162. package/dist/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  163. package/dist/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  164. package/dist/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  165. package/dist/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  166. package/dist/node_modules/@internal/components-endComponent/index.js +0 -11
  167. package/dist/node_modules/@internal/components-endComponent/package.json +0 -11
  168. package/dist/node_modules/@internal/components-entry/index-browser.js +0 -11
  169. package/dist/node_modules/@internal/components-entry/index.js +0 -301
  170. package/dist/node_modules/@internal/components-entry/package.json +0 -11
  171. package/dist/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  172. package/dist/node_modules/@internal/components-entry-legacy/index.js +0 -16
  173. package/dist/node_modules/@internal/components-entry-legacy/package.json +0 -11
  174. package/dist/node_modules/@internal/components-registry/index-browser.js +0 -586
  175. package/dist/node_modules/@internal/components-registry/index.js +0 -44
  176. package/dist/node_modules/@internal/components-registry/package.json +0 -11
  177. package/dist/node_modules/@internal/components-util/index-browser.js +0 -152
  178. package/dist/node_modules/@internal/components-util/index.js +0 -71
  179. package/dist/node_modules/@internal/components-util/package.json +0 -11
  180. package/dist/node_modules/@internal/create-readable/index-browser.js +0 -30
  181. package/dist/node_modules/@internal/create-readable/index.js +0 -57
  182. package/dist/node_modules/@internal/create-readable/package.json +0 -11
  183. package/dist/node_modules/@internal/loader/fallback-node.js +0 -89
  184. package/dist/node_modules/@internal/loader/index-browser.js +0 -2
  185. package/dist/node_modules/@internal/loader/index.js +0 -23
  186. package/dist/node_modules/@internal/loader/package.json +0 -10
  187. package/dist/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  188. package/dist/node_modules/@internal/preserve-tag/index.js +0 -34
  189. package/dist/node_modules/@internal/preserve-tag/package.json +0 -11
  190. package/dist/node_modules/@internal/require/index-browser.js +0 -15
  191. package/dist/node_modules/@internal/require/index-legacy-browser.js +0 -20
  192. package/dist/node_modules/@internal/require/index-webpack.js +0 -16
  193. package/dist/node_modules/@internal/require/index.js +0 -15
  194. package/dist/node_modules/@internal/require/package.json +0 -11
  195. package/dist/node_modules/@internal/set-immediate/index-browser.js +0 -19
  196. package/dist/node_modules/@internal/set-immediate/index-worker.js +0 -31
  197. package/dist/node_modules/@internal/set-immediate/index.js +0 -3
  198. package/dist/node_modules/@internal/set-immediate/package.json +0 -11
  199. package/dist/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  200. package/dist/runtime/RenderResult.js +0 -112
  201. package/dist/runtime/components/Component.js +0 -663
  202. package/dist/runtime/components/ComponentDef.js +0 -169
  203. package/dist/runtime/components/ComponentsContext.js +0 -59
  204. package/dist/runtime/components/GlobalComponentsContext.js +0 -10
  205. package/dist/runtime/components/KeySequence.js +0 -16
  206. package/dist/runtime/components/ServerComponent.js +0 -73
  207. package/dist/runtime/components/State.js +0 -101
  208. package/dist/runtime/components/attach-detach.js +0 -60
  209. package/dist/runtime/components/defineComponent.js +0 -60
  210. package/dist/runtime/components/dom-data.js +0 -8
  211. package/dist/runtime/components/event-delegation.js +0 -144
  212. package/dist/runtime/components/index.js +0 -1
  213. package/dist/runtime/components/legacy/browser.json +0 -9
  214. package/dist/runtime/components/legacy/defineComponent-legacy.js +0 -27
  215. package/dist/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  216. package/dist/runtime/components/legacy/defineWidget-legacy.js +0 -1
  217. package/dist/runtime/components/legacy/dependencies/html.js +0 -3
  218. package/dist/runtime/components/legacy/dependencies/index.js +0 -177
  219. package/dist/runtime/components/legacy/dependencies/vdom.js +0 -3
  220. package/dist/runtime/components/legacy/index.js +0 -1
  221. package/dist/runtime/components/legacy/jquery.js +0 -52
  222. package/dist/runtime/components/legacy/ready.js +0 -152
  223. package/dist/runtime/components/legacy/renderer-legacy.js +0 -231
  224. package/dist/runtime/components/registry.js +0 -1
  225. package/dist/runtime/components/renderer.js +0 -236
  226. package/dist/runtime/components/update-manager.js +0 -94
  227. package/dist/runtime/createOut.js +0 -13
  228. package/dist/runtime/dom-insert.js +0 -77
  229. package/dist/runtime/events.js +0 -2
  230. package/dist/runtime/helpers/_change-case.js +0 -45
  231. package/dist/runtime/helpers/assign.js +0 -21
  232. package/dist/runtime/helpers/attr-tag.js +0 -43
  233. package/dist/runtime/helpers/class-value.js +0 -30
  234. package/dist/runtime/helpers/dynamic-tag.js +0 -181
  235. package/dist/runtime/helpers/empty-component.js +0 -1
  236. package/dist/runtime/helpers/merge.js +0 -13
  237. package/dist/runtime/helpers/of-fallback.js +0 -4
  238. package/dist/runtime/helpers/render-tag.js +0 -20
  239. package/dist/runtime/helpers/serialize-noop.js +0 -5
  240. package/dist/runtime/helpers/style-value.js +0 -45
  241. package/dist/runtime/helpers/tags-compat/dom-debug.js +0 -1
  242. package/dist/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  243. package/dist/runtime/helpers/tags-compat/dom.js +0 -1
  244. package/dist/runtime/helpers/tags-compat/dom.mjs +0 -4
  245. package/dist/runtime/helpers/tags-compat/html-debug.js +0 -3
  246. package/dist/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  247. package/dist/runtime/helpers/tags-compat/html.js +0 -3
  248. package/dist/runtime/helpers/tags-compat/html.mjs +0 -4
  249. package/dist/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  250. package/dist/runtime/helpers/tags-compat/runtime-html.js +0 -136
  251. package/dist/runtime/helpers/to-string.js +0 -5
  252. package/dist/runtime/html/AsyncStream.js +0 -805
  253. package/dist/runtime/html/BufferedWriter.js +0 -52
  254. package/dist/runtime/html/StringWriter.js +0 -73
  255. package/dist/runtime/html/helpers/_dynamic-attr.js +0 -35
  256. package/dist/runtime/html/helpers/attr.js +0 -80
  257. package/dist/runtime/html/helpers/attrs.js +0 -26
  258. package/dist/runtime/html/helpers/class-attr.js +0 -8
  259. package/dist/runtime/html/helpers/data-marko.js +0 -36
  260. package/dist/runtime/html/helpers/escape-quotes.js +0 -35
  261. package/dist/runtime/html/helpers/escape-script-placeholder.js +0 -24
  262. package/dist/runtime/html/helpers/escape-style-placeholder.js +0 -22
  263. package/dist/runtime/html/helpers/escape-xml.js +0 -21
  264. package/dist/runtime/html/helpers/merge-attrs.js +0 -55
  265. package/dist/runtime/html/helpers/props-script.js +0 -32
  266. package/dist/runtime/html/helpers/style-attr.js +0 -8
  267. package/dist/runtime/html/hot-reload.js +0 -26
  268. package/dist/runtime/html/index.js +0 -33
  269. package/dist/runtime/html/marko-namespace.js +0 -3
  270. package/dist/runtime/renderable.js +0 -194
  271. package/dist/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  272. package/dist/runtime/vdom/VComment.js +0 -24
  273. package/dist/runtime/vdom/VComponent.js +0 -17
  274. package/dist/runtime/vdom/VDocumentFragment.js +0 -34
  275. package/dist/runtime/vdom/VElement.js +0 -375
  276. package/dist/runtime/vdom/VFragment.js +0 -26
  277. package/dist/runtime/vdom/VNode.js +0 -100
  278. package/dist/runtime/vdom/VText.js +0 -25
  279. package/dist/runtime/vdom/helpers/attrs.js +0 -62
  280. package/dist/runtime/vdom/helpers/const-element.js +0 -25
  281. package/dist/runtime/vdom/helpers/merge-attrs.js +0 -16
  282. package/dist/runtime/vdom/hot-reload.js +0 -115
  283. package/dist/runtime/vdom/index.js +0 -30
  284. package/dist/runtime/vdom/is-text-only.js +0 -10
  285. package/dist/runtime/vdom/marko-namespace.js +0 -3
  286. package/dist/runtime/vdom/morphdom/fragment.js +0 -95
  287. package/dist/runtime/vdom/morphdom/helpers.js +0 -42
  288. package/dist/runtime/vdom/morphdom/index.js +0 -741
  289. package/dist/runtime/vdom/parse-html.js +0 -18
  290. package/dist/runtime/vdom/vdom.js +0 -88
  291. package/dist/taglib/index.js +0 -51
  292. package/dist/translator/cdata/index.js +0 -15
  293. package/dist/translator/cdata/index[html].js +0 -15
  294. package/dist/translator/cdata/index[vdom].js +0 -12
  295. package/dist/translator/class.js +0 -65
  296. package/dist/translator/comment/index.js +0 -15
  297. package/dist/translator/comment/index[html].js +0 -17
  298. package/dist/translator/comment/index[vdom].js +0 -3
  299. package/dist/translator/declaration/index.js +0 -15
  300. package/dist/translator/declaration/index[html].js +0 -12
  301. package/dist/translator/declaration/index[vdom].js +0 -3
  302. package/dist/translator/document-type/index.js +0 -15
  303. package/dist/translator/document-type/index[html].js +0 -12
  304. package/dist/translator/document-type/index[vdom].js +0 -3
  305. package/dist/translator/placeholder/index.js +0 -15
  306. package/dist/translator/placeholder/index[html].js +0 -93
  307. package/dist/translator/placeholder/index[vdom].js +0 -22
  308. package/dist/translator/scriptlet.js +0 -4
  309. package/dist/translator/tag/attribute/directives/class.js +0 -42
  310. package/dist/translator/tag/attribute/directives/index.js +0 -15
  311. package/dist/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  312. package/dist/translator/tag/attribute/directives/no-update-body.js +0 -10
  313. package/dist/translator/tag/attribute/directives/no-update-if.js +0 -12
  314. package/dist/translator/tag/attribute/directives/no-update.js +0 -48
  315. package/dist/translator/tag/attribute/directives/style.js +0 -42
  316. package/dist/translator/tag/attribute/index.js +0 -150
  317. package/dist/translator/tag/attribute/modifiers/index.js +0 -7
  318. package/dist/translator/tag/attribute/modifiers/no-update.js +0 -14
  319. package/dist/translator/tag/attribute/modifiers/scoped.js +0 -23
  320. package/dist/translator/tag/attribute-tag.js +0 -149
  321. package/dist/translator/tag/custom-tag.js +0 -146
  322. package/dist/translator/tag/dynamic-tag.js +0 -74
  323. package/dist/translator/tag/index.js +0 -287
  324. package/dist/translator/tag/macro-tag.js +0 -7
  325. package/dist/translator/tag/native-tag.js +0 -27
  326. package/dist/translator/tag/native-tag[html]/attributes.js +0 -151
  327. package/dist/translator/tag/native-tag[html]/index.js +0 -221
  328. package/dist/translator/tag/native-tag[vdom]/attributes.js +0 -105
  329. package/dist/translator/tag/native-tag[vdom]/index.js +0 -189
  330. package/dist/translator/tag/util.js +0 -246
  331. package/dist/translator/taglib/core/conditional/translate-else-if.js +0 -20
  332. package/dist/translator/taglib/core/conditional/translate-else.js +0 -20
  333. package/dist/translator/taglib/core/conditional/translate-if.js +0 -8
  334. package/dist/translator/taglib/core/conditional/util.js +0 -41
  335. package/dist/translator/taglib/core/index.js +0 -474
  336. package/dist/translator/taglib/core/macro/parse.js +0 -17
  337. package/dist/translator/taglib/core/macro/translate.js +0 -48
  338. package/dist/translator/taglib/core/parse-class.js +0 -79
  339. package/dist/translator/taglib/core/parse-export.js +0 -14
  340. package/dist/translator/taglib/core/parse-import.js +0 -14
  341. package/dist/translator/taglib/core/parse-module-code.js +0 -18
  342. package/dist/translator/taglib/core/parse-static.js +0 -18
  343. package/dist/translator/taglib/core/transform-style.js +0 -66
  344. package/dist/translator/taglib/core/translate-await.js +0 -41
  345. package/dist/translator/taglib/core/translate-body.js +0 -17
  346. package/dist/translator/taglib/core/translate-for.js +0 -156
  347. package/dist/translator/taglib/core/translate-html-comment.js +0 -52
  348. package/dist/translator/taglib/core/translate-include-content.js +0 -53
  349. package/dist/translator/taglib/core/translate-server-only.js +0 -5
  350. package/dist/translator/taglib/core/translate-while.js +0 -32
  351. package/dist/translator/taglib/index.js +0 -6
  352. package/dist/translator/taglib/migrate/all-templates.js +0 -46
  353. package/dist/translator/taglib/migrate/index.js +0 -5
  354. package/dist/translator/text/index.js +0 -10
  355. package/dist/translator/text/index[html].js +0 -12
  356. package/dist/translator/text/index[vdom].js +0 -20
  357. package/dist/translator/util/add-dependencies.js +0 -329
  358. package/dist/translator/util/escape-regexp.js +0 -4
  359. package/dist/translator/util/get-component-files.js +0 -86
  360. package/dist/translator/util/html-out-write.js +0 -15
  361. package/dist/translator/util/key-manager.js +0 -176
  362. package/dist/translator/util/optimize-html-writes.js +0 -52
  363. package/dist/translator/util/optimize-vdom-create.js +0 -164
  364. package/dist/translator/util/plugin-hooks.js +0 -22
  365. package/dist/translator/util/runtime-flags.js +0 -3
  366. package/dist/translator/util/vdom-out-write.js +0 -10
  367. package/dist/translator/util/with-previous-location.js +0 -6
  368. package/docs/10-awesome-marko-features.md +0 -291
  369. package/docs/body-content.md +0 -355
  370. package/docs/class-components.md +0 -1001
  371. package/docs/cloudflare-workers.md +0 -32
  372. package/docs/compiler-hooks.png +0 -0
  373. package/docs/compiler.md +0 -473
  374. package/docs/component-diagram.afdesign +0 -0
  375. package/docs/component-diagram.svg +0 -87
  376. package/docs/concise.md +0 -141
  377. package/docs/conditionals-and-lists.md +0 -72
  378. package/docs/core-tags.md +0 -325
  379. package/docs/custom-tags.md +0 -201
  380. package/docs/editor-plugins.md +0 -45
  381. package/docs/events.md +0 -131
  382. package/docs/express.md +0 -66
  383. package/docs/fastify.md +0 -65
  384. package/docs/getting-started.md +0 -95
  385. package/docs/http.md +0 -34
  386. package/docs/icons/js.svg +0 -4
  387. package/docs/icons/marko.svg +0 -1
  388. package/docs/icons/ts.svg +0 -1
  389. package/docs/installing.md +0 -51
  390. package/docs/koa.md +0 -35
  391. package/docs/lasso.md +0 -196
  392. package/docs/marko-5-upgrade.md +0 -59
  393. package/docs/marko-json.md +0 -248
  394. package/docs/marko-vs-react.md +0 -854
  395. package/docs/redux.md +0 -61
  396. package/docs/rendering.md +0 -268
  397. package/docs/rollup.md +0 -352
  398. package/docs/state.md +0 -105
  399. package/docs/structure.json +0 -49
  400. package/docs/styles.md +0 -29
  401. package/docs/syntax.md +0 -601
  402. package/docs/troubleshooting-streaming.md +0 -68
  403. package/docs/typescript.md +0 -406
  404. package/docs/vite.md +0 -86
  405. package/docs/webpack.md +0 -205
  406. package/docs/why-is-marko-fast.md +0 -239
  407. package/env.js +0 -7
  408. package/helpers/README.md +0 -3
  409. package/helpers/empty.js +0 -4
  410. package/helpers/notEmpty.js +0 -11
  411. package/index-browser.marko +0 -15
  412. package/index.d.ts +0 -375
  413. package/index.js +0 -7
  414. package/legacy-components-browser.marko +0 -15
  415. package/legacy-components.js +0 -7
  416. package/node-require.js +0 -8
  417. package/src/build.json +0 -3
  418. package/src/compiler/config.js +0 -45
  419. package/src/compiler/index.js +0 -164
  420. package/src/compiler/modules.js +0 -5
  421. package/src/core-tags/.eslintrc +0 -5
  422. package/src/core-tags/components/init-components-tag.js +0 -54
  423. package/src/core-tags/components/preferred-script-location-tag.js +0 -25
  424. package/src/core-tags/components/preserve-tag.js +0 -1
  425. package/src/core-tags/core/__flush_here_and_after__.js +0 -44
  426. package/src/core-tags/core/await/AsyncValue.js +0 -121
  427. package/src/core-tags/core/await/client-reorder-runtime.js +0 -51
  428. package/src/core-tags/core/await/index.d.marko +0 -10
  429. package/src/core-tags/core/await/renderer.js +0 -249
  430. package/src/core-tags/core/await/reorderer-renderer.js +0 -156
  431. package/src/index.js +0 -4
  432. package/src/node-require/browser-refresh.js +0 -18
  433. package/src/node-require/hot-reload.js +0 -45
  434. package/src/node-require/index.js +0 -103
  435. package/src/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  436. package/src/node_modules/@internal/components-beginComponent/index.js +0 -84
  437. package/src/node_modules/@internal/components-beginComponent/package.json +0 -11
  438. package/src/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  439. package/src/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  440. package/src/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  441. package/src/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  442. package/src/node_modules/@internal/components-endComponent/index.js +0 -11
  443. package/src/node_modules/@internal/components-endComponent/package.json +0 -11
  444. package/src/node_modules/@internal/components-entry/index-browser.js +0 -11
  445. package/src/node_modules/@internal/components-entry/index.js +0 -301
  446. package/src/node_modules/@internal/components-entry/package.json +0 -11
  447. package/src/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  448. package/src/node_modules/@internal/components-entry-legacy/index.js +0 -16
  449. package/src/node_modules/@internal/components-entry-legacy/package.json +0 -11
  450. package/src/node_modules/@internal/components-registry/index-browser.js +0 -586
  451. package/src/node_modules/@internal/components-registry/index.js +0 -44
  452. package/src/node_modules/@internal/components-registry/package.json +0 -11
  453. package/src/node_modules/@internal/components-util/index-browser.js +0 -152
  454. package/src/node_modules/@internal/components-util/index.js +0 -75
  455. package/src/node_modules/@internal/components-util/package.json +0 -11
  456. package/src/node_modules/@internal/create-readable/index-browser.js +0 -30
  457. package/src/node_modules/@internal/create-readable/index.js +0 -57
  458. package/src/node_modules/@internal/create-readable/package.json +0 -11
  459. package/src/node_modules/@internal/loader/fallback-node.js +0 -89
  460. package/src/node_modules/@internal/loader/index-browser.js +0 -2
  461. package/src/node_modules/@internal/loader/index.js +0 -23
  462. package/src/node_modules/@internal/loader/package.json +0 -10
  463. package/src/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  464. package/src/node_modules/@internal/preserve-tag/index.js +0 -34
  465. package/src/node_modules/@internal/preserve-tag/package.json +0 -11
  466. package/src/node_modules/@internal/require/index-browser.js +0 -15
  467. package/src/node_modules/@internal/require/index-legacy-browser.js +0 -20
  468. package/src/node_modules/@internal/require/index-webpack.js +0 -16
  469. package/src/node_modules/@internal/require/index.js +0 -15
  470. package/src/node_modules/@internal/require/package.json +0 -11
  471. package/src/node_modules/@internal/set-immediate/index-browser.js +0 -19
  472. package/src/node_modules/@internal/set-immediate/index-worker.js +0 -31
  473. package/src/node_modules/@internal/set-immediate/index.js +0 -3
  474. package/src/node_modules/@internal/set-immediate/package.json +0 -11
  475. package/src/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  476. package/src/runtime/.eslintrc +0 -5
  477. package/src/runtime/RenderResult.js +0 -112
  478. package/src/runtime/components/Component.js +0 -663
  479. package/src/runtime/components/ComponentDef.js +0 -169
  480. package/src/runtime/components/ComponentsContext.js +0 -59
  481. package/src/runtime/components/GlobalComponentsContext.js +0 -10
  482. package/src/runtime/components/KeySequence.js +0 -16
  483. package/src/runtime/components/ServerComponent.js +0 -73
  484. package/src/runtime/components/State.js +0 -101
  485. package/src/runtime/components/attach-detach.js +0 -60
  486. package/src/runtime/components/defineComponent.js +0 -60
  487. package/src/runtime/components/dom-data.js +0 -8
  488. package/src/runtime/components/event-delegation.js +0 -144
  489. package/src/runtime/components/index.js +0 -1
  490. package/src/runtime/components/legacy/browser.json +0 -9
  491. package/src/runtime/components/legacy/defineComponent-legacy.js +0 -27
  492. package/src/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  493. package/src/runtime/components/legacy/defineWidget-legacy.js +0 -1
  494. package/src/runtime/components/legacy/dependencies/html.js +0 -3
  495. package/src/runtime/components/legacy/dependencies/index.js +0 -177
  496. package/src/runtime/components/legacy/dependencies/vdom.js +0 -3
  497. package/src/runtime/components/legacy/index.js +0 -1
  498. package/src/runtime/components/legacy/jquery.js +0 -52
  499. package/src/runtime/components/legacy/ready.js +0 -152
  500. package/src/runtime/components/legacy/renderer-legacy.js +0 -231
  501. package/src/runtime/components/registry.js +0 -1
  502. package/src/runtime/components/renderer.js +0 -236
  503. package/src/runtime/components/update-manager.js +0 -94
  504. package/src/runtime/createOut.js +0 -13
  505. package/src/runtime/dom-insert.js +0 -77
  506. package/src/runtime/events.js +0 -2
  507. package/src/runtime/helpers/_change-case.js +0 -45
  508. package/src/runtime/helpers/assign.js +0 -21
  509. package/src/runtime/helpers/attr-tag.js +0 -43
  510. package/src/runtime/helpers/class-value.js +0 -30
  511. package/src/runtime/helpers/dynamic-tag.js +0 -181
  512. package/src/runtime/helpers/empty-component.js +0 -1
  513. package/src/runtime/helpers/merge.js +0 -13
  514. package/src/runtime/helpers/of-fallback.js +0 -4
  515. package/src/runtime/helpers/render-tag.js +0 -20
  516. package/src/runtime/helpers/serialize-noop.js +0 -5
  517. package/src/runtime/helpers/style-value.js +0 -45
  518. package/src/runtime/helpers/tags-compat/dom-debug.js +0 -1
  519. package/src/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  520. package/src/runtime/helpers/tags-compat/dom.js +0 -1
  521. package/src/runtime/helpers/tags-compat/dom.mjs +0 -4
  522. package/src/runtime/helpers/tags-compat/html-debug.js +0 -3
  523. package/src/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  524. package/src/runtime/helpers/tags-compat/html.js +0 -3
  525. package/src/runtime/helpers/tags-compat/html.mjs +0 -4
  526. package/src/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  527. package/src/runtime/helpers/tags-compat/runtime-html.js +0 -136
  528. package/src/runtime/helpers/to-string.js +0 -5
  529. package/src/runtime/html/AsyncStream.js +0 -805
  530. package/src/runtime/html/BufferedWriter.js +0 -52
  531. package/src/runtime/html/StringWriter.js +0 -73
  532. package/src/runtime/html/helpers/_dynamic-attr.js +0 -35
  533. package/src/runtime/html/helpers/attr.js +0 -80
  534. package/src/runtime/html/helpers/attrs.js +0 -26
  535. package/src/runtime/html/helpers/class-attr.js +0 -8
  536. package/src/runtime/html/helpers/data-marko.js +0 -36
  537. package/src/runtime/html/helpers/escape-quotes.js +0 -35
  538. package/src/runtime/html/helpers/escape-script-placeholder.js +0 -24
  539. package/src/runtime/html/helpers/escape-style-placeholder.js +0 -22
  540. package/src/runtime/html/helpers/escape-xml.js +0 -21
  541. package/src/runtime/html/helpers/merge-attrs.js +0 -55
  542. package/src/runtime/html/helpers/props-script.js +0 -32
  543. package/src/runtime/html/helpers/style-attr.js +0 -8
  544. package/src/runtime/html/hot-reload.js +0 -26
  545. package/src/runtime/html/index.js +0 -33
  546. package/src/runtime/html/marko-namespace.js +0 -3
  547. package/src/runtime/renderable.js +0 -194
  548. package/src/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  549. package/src/runtime/vdom/VComment.js +0 -24
  550. package/src/runtime/vdom/VComponent.js +0 -17
  551. package/src/runtime/vdom/VDocumentFragment.js +0 -34
  552. package/src/runtime/vdom/VElement.js +0 -375
  553. package/src/runtime/vdom/VFragment.js +0 -26
  554. package/src/runtime/vdom/VNode.js +0 -100
  555. package/src/runtime/vdom/VText.js +0 -25
  556. package/src/runtime/vdom/helpers/attrs.js +0 -62
  557. package/src/runtime/vdom/helpers/const-element.js +0 -25
  558. package/src/runtime/vdom/helpers/merge-attrs.js +0 -16
  559. package/src/runtime/vdom/hot-reload.js +0 -115
  560. package/src/runtime/vdom/index.js +0 -30
  561. package/src/runtime/vdom/is-text-only.js +0 -10
  562. package/src/runtime/vdom/marko-namespace.js +0 -3
  563. package/src/runtime/vdom/morphdom/fragment.js +0 -95
  564. package/src/runtime/vdom/morphdom/helpers.js +0 -42
  565. package/src/runtime/vdom/morphdom/index.js +0 -741
  566. package/src/runtime/vdom/parse-html.js +0 -18
  567. package/src/runtime/vdom/vdom.js +0 -88
  568. package/src/taglib/index.js +0 -51
  569. package/src/translator/cdata/index.js +0 -15
  570. package/src/translator/cdata/index[html].js +0 -15
  571. package/src/translator/cdata/index[vdom].js +0 -12
  572. package/src/translator/class.js +0 -65
  573. package/src/translator/comment/index.js +0 -15
  574. package/src/translator/comment/index[html].js +0 -17
  575. package/src/translator/comment/index[vdom].js +0 -3
  576. package/src/translator/declaration/index.js +0 -15
  577. package/src/translator/declaration/index[html].js +0 -12
  578. package/src/translator/declaration/index[vdom].js +0 -3
  579. package/src/translator/document-type/index.js +0 -15
  580. package/src/translator/document-type/index[html].js +0 -12
  581. package/src/translator/document-type/index[vdom].js +0 -3
  582. package/src/translator/index.js +0 -552
  583. package/src/translator/placeholder/index.js +0 -15
  584. package/src/translator/placeholder/index[html].js +0 -93
  585. package/src/translator/placeholder/index[vdom].js +0 -22
  586. package/src/translator/scriptlet.js +0 -4
  587. package/src/translator/tag/attribute/directives/class.js +0 -42
  588. package/src/translator/tag/attribute/directives/index.js +0 -15
  589. package/src/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  590. package/src/translator/tag/attribute/directives/no-update-body.js +0 -10
  591. package/src/translator/tag/attribute/directives/no-update-if.js +0 -12
  592. package/src/translator/tag/attribute/directives/no-update.js +0 -48
  593. package/src/translator/tag/attribute/directives/style.js +0 -42
  594. package/src/translator/tag/attribute/index.js +0 -150
  595. package/src/translator/tag/attribute/modifiers/index.js +0 -7
  596. package/src/translator/tag/attribute/modifiers/no-update.js +0 -14
  597. package/src/translator/tag/attribute/modifiers/scoped.js +0 -23
  598. package/src/translator/tag/attribute-tag.js +0 -149
  599. package/src/translator/tag/custom-tag.js +0 -146
  600. package/src/translator/tag/dynamic-tag.js +0 -74
  601. package/src/translator/tag/index.js +0 -287
  602. package/src/translator/tag/macro-tag.js +0 -7
  603. package/src/translator/tag/native-tag.js +0 -27
  604. package/src/translator/tag/native-tag[html]/attributes.js +0 -151
  605. package/src/translator/tag/native-tag[html]/index.js +0 -221
  606. package/src/translator/tag/native-tag[vdom]/attributes.js +0 -105
  607. package/src/translator/tag/native-tag[vdom]/index.js +0 -189
  608. package/src/translator/tag/util.js +0 -246
  609. package/src/translator/taglib/core/conditional/translate-else-if.js +0 -20
  610. package/src/translator/taglib/core/conditional/translate-else.js +0 -20
  611. package/src/translator/taglib/core/conditional/translate-if.js +0 -8
  612. package/src/translator/taglib/core/conditional/util.js +0 -41
  613. package/src/translator/taglib/core/index.js +0 -474
  614. package/src/translator/taglib/core/macro/parse.js +0 -17
  615. package/src/translator/taglib/core/macro/translate.js +0 -48
  616. package/src/translator/taglib/core/parse-class.js +0 -79
  617. package/src/translator/taglib/core/parse-export.js +0 -14
  618. package/src/translator/taglib/core/parse-import.js +0 -14
  619. package/src/translator/taglib/core/parse-module-code.js +0 -18
  620. package/src/translator/taglib/core/parse-static.js +0 -18
  621. package/src/translator/taglib/core/transform-style.js +0 -66
  622. package/src/translator/taglib/core/translate-await.js +0 -41
  623. package/src/translator/taglib/core/translate-body.js +0 -17
  624. package/src/translator/taglib/core/translate-for.js +0 -156
  625. package/src/translator/taglib/core/translate-html-comment.js +0 -52
  626. package/src/translator/taglib/core/translate-include-content.js +0 -53
  627. package/src/translator/taglib/core/translate-server-only.js +0 -5
  628. package/src/translator/taglib/core/translate-while.js +0 -32
  629. package/src/translator/taglib/index.js +0 -7
  630. package/src/translator/taglib/migrate/all-templates.js +0 -46
  631. package/src/translator/taglib/migrate/index.js +0 -5
  632. package/src/translator/text/index.js +0 -10
  633. package/src/translator/text/index[html].js +0 -12
  634. package/src/translator/text/index[vdom].js +0 -20
  635. package/src/translator/util/add-dependencies.js +0 -329
  636. package/src/translator/util/escape-regexp.js +0 -4
  637. package/src/translator/util/get-component-files.js +0 -86
  638. package/src/translator/util/html-out-write.js +0 -15
  639. package/src/translator/util/key-manager.js +0 -176
  640. package/src/translator/util/optimize-html-writes.js +0 -52
  641. package/src/translator/util/optimize-vdom-create.js +0 -164
  642. package/src/translator/util/plugin-hooks.js +0 -22
  643. package/src/translator/util/runtime-flags.js +0 -3
  644. package/src/translator/util/vdom-out-write.js +0 -10
  645. package/src/translator/util/with-previous-location.js +0 -6
  646. package/tags-html.d.ts +0 -3855
  647. package/translator/index.d.ts +0 -7
  648. package/translator/package.json +0 -5
package/dist/dom.mjs ADDED
@@ -0,0 +1,1350 @@
1
+ // src/common/attr-tag.ts
2
+ var empty = [], rest = Symbol();
3
+ function attrTag(attrs2) {
4
+ return attrs2[Symbol.iterator] = attrTagIterator, attrs2[rest] = empty, attrs2;
5
+ }
6
+ function attrTags(first, attrs2) {
7
+ return first ? (first[rest] === empty ? first[rest] = [attrs2] : first[rest].push(attrs2), first) : attrTag(attrs2);
8
+ }
9
+ function* attrTagIterator() {
10
+ yield this, yield* this[rest];
11
+ }
12
+
13
+ // src/common/for.ts
14
+ function forIn(obj, cb) {
15
+ for (let key in obj)
16
+ cb(key, obj[key]);
17
+ }
18
+ function forOf(list, cb) {
19
+ if (list) {
20
+ let i = 0;
21
+ for (let item of list)
22
+ cb(item, i++);
23
+ }
24
+ }
25
+ function forTo(to, from, step, cb) {
26
+ let start = from || 0, delta = step || 1;
27
+ for (let steps = (to - start) / delta, i = 0; i <= steps; i++)
28
+ cb(start + i * delta);
29
+ }
30
+
31
+ // src/dom/schedule.ts
32
+ var port2 = /* @__PURE__ */ (() => {
33
+ let { port1, port2: port22 } = new MessageChannel();
34
+ return port1.onmessage = () => {
35
+ isScheduled = !1, run();
36
+ }, port22;
37
+ })(), isScheduled;
38
+ function schedule() {
39
+ isScheduled || (isScheduled = !0, queueMicrotask(flushAndWaitFrame));
40
+ }
41
+ function flushAndWaitFrame() {
42
+ run(), requestAnimationFrame(triggerMacroTask);
43
+ }
44
+ function triggerMacroTask() {
45
+ port2.postMessage(0);
46
+ }
47
+
48
+ // src/common/meta.ts
49
+ var DEFAULT_RUNTIME_ID = "M", DEFAULT_RENDER_ID = "_";
50
+
51
+ // src/dom/scope.ts
52
+ function createScope($global) {
53
+ return {
54
+ u: 1,
55
+ $global
56
+ };
57
+ }
58
+ var emptyScope = createScope({});
59
+ function getEmptyScope(marker) {
60
+ return emptyScope.a = emptyScope.b = marker, emptyScope;
61
+ }
62
+ function destroyScope(scope) {
63
+ _destroyScope(scope), scope.d?.h?.delete(scope);
64
+ let closureSignals = scope.x?.c;
65
+ if (closureSignals)
66
+ for (let signal of closureSignals)
67
+ signal.j?.(scope);
68
+ return scope;
69
+ }
70
+ function _destroyScope(scope) {
71
+ scope.h?.forEach(_destroyScope);
72
+ let controllers = scope.l;
73
+ if (controllers)
74
+ for (let ctrl of controllers.values())
75
+ ctrl.abort();
76
+ }
77
+ function onDestroy(scope) {
78
+ let parentScope = scope.d;
79
+ for (; parentScope && !parentScope.h?.has(scope); )
80
+ (parentScope.h ||= /* @__PURE__ */ new Set()).add(scope), scope = parentScope, parentScope = scope.d;
81
+ }
82
+ function removeAndDestroyScope(scope) {
83
+ destroyScope(scope);
84
+ let current = scope.a, stop = scope.b.nextSibling;
85
+ for (; current !== stop; ) {
86
+ let next = current.nextSibling;
87
+ current.remove(), current = next;
88
+ }
89
+ }
90
+ function insertBefore(scope, parent, nextSibling) {
91
+ let current = scope.a, stop = scope.b.nextSibling;
92
+ for (; current !== stop; ) {
93
+ let next = current.nextSibling;
94
+ parent.insertBefore(current, nextSibling), current = next;
95
+ }
96
+ }
97
+
98
+ // src/dom/resume.ts
99
+ var registeredValues = {}, Render = class {
100
+ m = [];
101
+ n = {};
102
+ y = {
103
+ _: registeredValues
104
+ };
105
+ constructor(renders, runtimeId, renderId) {
106
+ this.z = renders, this.A = runtimeId, this.o = renderId, this.p = renders[renderId], this.q();
107
+ }
108
+ w() {
109
+ this.p.w(), this.q();
110
+ }
111
+ q() {
112
+ let data2 = this.p, serializeContext = this.y, scopeLookup = this.n, visits = data2.v, cleanupOwners = /* @__PURE__ */ new Map();
113
+ if (visits.length) {
114
+ let commentPrefixLen = data2.i.length, cleanupMarkers = /* @__PURE__ */ new Map();
115
+ data2.v = [];
116
+ let sectionEnd = (visit, scopeId = this.f, curNode = visit) => {
117
+ let scope = scopeLookup[scopeId] ||= {}, endNode = curNode;
118
+ for (; (endNode = endNode.previousSibling).nodeType === 8; ) ;
119
+ scope.b = endNode;
120
+ let startNode = scope.a ||= endNode, len = cleanupMarkers.size;
121
+ for (let [markerScopeId, markerNode] of cleanupMarkers) {
122
+ if (!len--) break;
123
+ markerScopeId !== scopeId && startNode.compareDocumentPosition(markerNode) & 4 && curNode.compareDocumentPosition(markerNode) & 2 && (cleanupOwners.set("" + markerScopeId, scopeId), cleanupMarkers.delete(markerScopeId));
124
+ }
125
+ return cleanupMarkers.set(scopeId, visit), scope;
126
+ };
127
+ for (let visit of visits) {
128
+ let commentText = visit.data, token = commentText[commentPrefixLen], scopeId = parseInt(commentText.slice(commentPrefixLen + 1)), scope = scopeLookup[scopeId] ||= {}, dataIndex = commentText.indexOf(" ") + 1, data3 = dataIndex ? commentText.slice(dataIndex) : "";
129
+ if (token === "*" /* Node */)
130
+ scope[data3] = visit.previousSibling;
131
+ else if (token === "$" /* Cleanup */)
132
+ cleanupMarkers.set(scopeId, visit);
133
+ else if (token === "[" /* SectionStart */)
134
+ this.f && (data3 && sectionEnd(visit), this.m.push(this.f)), this.f = scopeId, scope.a = visit;
135
+ else if (token === "]" /* SectionEnd */) {
136
+ if (scope[data3] = visit, scopeId < this.f) {
137
+ let currParent = visit.parentNode, startNode = sectionEnd(visit).a;
138
+ currParent && currParent !== startNode.parentNode && currParent.prepend(startNode), this.f = this.m.pop();
139
+ }
140
+ } else if (token === "|" /* SectionSingleNodesEnd */) {
141
+ scope[parseInt(data3)] = visit;
142
+ let childScopeIds = JSON.parse(
143
+ "[" + data3.slice(data3.indexOf(" ") + 1) + "]"
144
+ ), curNode = visit;
145
+ for (let i = childScopeIds.length - 1; i >= 0; i--)
146
+ curNode = sectionEnd(visit, childScopeIds[i], curNode).b;
147
+ }
148
+ }
149
+ }
150
+ let resumes = data2.r;
151
+ if (resumes) {
152
+ data2.r = [];
153
+ let len = resumes.length, i = 0;
154
+ try {
155
+ for (isResuming = !0; i < len; ) {
156
+ let resumeData = resumes[i++];
157
+ if (typeof resumeData == "function") {
158
+ let scopes = resumeData(serializeContext), { $global } = scopeLookup;
159
+ $global || (scopeLookup.$global = $global = scopes.$ || {}, $global.runtimeId = this.A, $global.renderId = this.o);
160
+ for (let scopeId in scopes)
161
+ if (scopeId !== "$") {
162
+ let scope = scopes[scopeId], prevScope = scopeLookup[scopeId];
163
+ scope.$global = $global, prevScope !== scope && (scopeLookup[scopeId] = Object.assign(
164
+ scope,
165
+ prevScope
166
+ ));
167
+ let cleanupOwnerId = cleanupOwners.get(scopeId);
168
+ cleanupOwnerId && (scope.d = scopes[cleanupOwnerId], onDestroy(scope));
169
+ }
170
+ } else i === len || typeof resumes[i] != "string" ? delete this.z[this.o] : registeredValues[resumes[i++]](
171
+ scopeLookup[resumeData],
172
+ scopeLookup[resumeData]
173
+ );
174
+ }
175
+ } finally {
176
+ isResuming = !1;
177
+ }
178
+ }
179
+ }
180
+ }, isResuming = !1;
181
+ function register(id, obj) {
182
+ return registeredValues[id] = obj, obj;
183
+ }
184
+ function registerBoundSignal(id, signal) {
185
+ return registeredValues[id] = (scope) => (valueOrOp) => signal(scope, valueOrOp), signal;
186
+ }
187
+ function getRegisteredWithScope(id, scope) {
188
+ let val = registeredValues[id];
189
+ return scope ? val(scope) : val;
190
+ }
191
+ function init(runtimeId = DEFAULT_RUNTIME_ID) {
192
+ let resumeRender = (renderId) => resumeRender[renderId] = renders[renderId] = new Render(renders, runtimeId, renderId), renders;
193
+ window[runtimeId] ? setRenders(window[runtimeId]) : Object.defineProperty(window, runtimeId, {
194
+ configurable: !0,
195
+ set: setRenders
196
+ });
197
+ function setRenders(v) {
198
+ renders = v;
199
+ for (let renderId in v)
200
+ resumeRender(renderId);
201
+ Object.defineProperty(window, runtimeId, {
202
+ configurable: !0,
203
+ value: resumeRender
204
+ });
205
+ }
206
+ }
207
+ function registerSubscriber(id, signal) {
208
+ return register(id, signal.g), signal;
209
+ }
210
+ function nodeRef(id, key) {
211
+ return register(id, (scope) => () => scope[key]);
212
+ }
213
+
214
+ // src/dom/signals.ts
215
+ var MARK = {}, CLEAN = {}, DIRTY = {};
216
+ function state(valueAccessor, fn, getIntersection) {
217
+ let valueSignal = value(valueAccessor, fn, getIntersection), markAccessor = valueAccessor + "#" /* Mark */, valueChangeAccessor = valueAccessor + "@" /* TagVariableChange */;
218
+ return (scope, valueOrOp, valueChange) => (rendering ? valueSignal(
219
+ scope,
220
+ valueOrOp === MARK || valueOrOp === CLEAN || valueOrOp === DIRTY || (scope[valueChangeAccessor] = valueChange) || scope[markAccessor] === void 0 ? valueOrOp : CLEAN
221
+ ) : scope[valueChangeAccessor] ? scope[valueChangeAccessor](valueOrOp) : queueSource(scope, valueSignal, valueOrOp), valueOrOp);
222
+ }
223
+ function value(valueAccessor, fn, getIntersection) {
224
+ let markAccessor = valueAccessor + "#" /* Mark */, intersection2 = getIntersection && ((scope, op) => (intersection2 = getIntersection())(scope, op));
225
+ return (scope, valueOrOp) => {
226
+ if (valueOrOp === MARK)
227
+ (scope[markAccessor] = (scope[markAccessor] ?? 0) + 1) === 1 && intersection2?.(scope, MARK);
228
+ else if (valueOrOp !== DIRTY) {
229
+ let existing = scope[markAccessor] !== void 0;
230
+ (scope[markAccessor] ||= 1) === 1 && (valueOrOp === CLEAN || existing && scope[valueAccessor] === valueOrOp ? intersection2?.(scope, CLEAN) : (scope[valueAccessor] = valueOrOp, fn && fn(scope, valueOrOp), intersection2?.(scope, DIRTY))), scope[markAccessor]--;
231
+ }
232
+ };
233
+ }
234
+ var accessorId = 0;
235
+ function intersection(count, fn, getIntersection) {
236
+ let dirtyAccessor = "?" /* Dynamic */ + accessorId++, markAccessor = dirtyAccessor + "#" /* Mark */, intersection2 = getIntersection && ((scope, op) => (intersection2 = getIntersection())(scope, op));
237
+ return (scope, op) => {
238
+ op === MARK ? (scope[markAccessor] = (scope[markAccessor] ?? 0) + 1) === 1 && intersection2?.(scope, MARK) : scope[markAccessor] === void 0 ? (scope[markAccessor] = count - 1, scope[dirtyAccessor] = !0) : --scope[markAccessor] === 0 ? op === DIRTY || scope[dirtyAccessor] ? (scope[dirtyAccessor] = !1, fn(scope, 0), intersection2?.(scope, DIRTY)) : intersection2?.(scope, CLEAN) : scope[dirtyAccessor] ||= op === DIRTY;
239
+ };
240
+ }
241
+ var defaultGetOwnerScope = (scope) => scope._;
242
+ function closure(ownerValueAccessor, fn, getOwnerScope = defaultGetOwnerScope, getIntersection) {
243
+ let dirtyAccessor = "?" /* Dynamic */ + accessorId++, markAccessor = dirtyAccessor + 1, getOwnerValueAccessor = typeof ownerValueAccessor == "function" ? ownerValueAccessor : () => ownerValueAccessor, intersection2 = getIntersection && ((scope, op) => (intersection2 = getIntersection())(scope, op));
244
+ return (scope, op) => {
245
+ if (op === MARK)
246
+ (scope[markAccessor] = (scope[markAccessor] ?? 0) + 1) === 1 && intersection2?.(scope, MARK);
247
+ else {
248
+ let ownerScope, ownerValueAccessor2;
249
+ if (scope[markAccessor] === void 0) {
250
+ ownerScope = getOwnerScope(scope), ownerValueAccessor2 = getOwnerValueAccessor(scope);
251
+ let ownerMark = ownerScope[ownerValueAccessor2 + "#" /* Mark */], ownerHasRun = ownerMark === void 0 ? !ownerScope.u : ownerMark === 0;
252
+ scope[markAccessor] = ownerHasRun ? 1 : 2, op = DIRTY;
253
+ }
254
+ --scope[markAccessor] === 0 ? op === DIRTY || scope[dirtyAccessor] ? (scope[dirtyAccessor] = !1, ownerScope ||= getOwnerScope(scope), ownerValueAccessor2 ||= getOwnerValueAccessor(scope), fn && fn(scope, ownerScope[ownerValueAccessor2]), intersection2?.(scope, DIRTY)) : intersection2?.(scope, CLEAN) : scope[dirtyAccessor] ||= op === DIRTY;
255
+ }
256
+ };
257
+ }
258
+ function dynamicClosure(ownerValueAccessor, fn, getOwnerScope = defaultGetOwnerScope, getIntersection) {
259
+ let getOwnerValueAccessor = typeof ownerValueAccessor == "function" ? ownerValueAccessor : () => ownerValueAccessor, signalFn = closure(
260
+ getOwnerValueAccessor,
261
+ fn,
262
+ getOwnerScope,
263
+ getIntersection
264
+ ), subscribeFns = /* @__PURE__ */ new WeakMap();
265
+ return signalFn.g = (scope) => {
266
+ let subscribeFn = (value2) => signalFn(scope, value2), ownerScope = getOwnerScope(scope), providerSubscriptionsAccessor = getOwnerValueAccessor(scope) + "*" /* Subscribers */;
267
+ subscribeFns.set(scope, subscribeFn), (ownerScope[providerSubscriptionsAccessor] ||= /* @__PURE__ */ new Set()).add(subscribeFn);
268
+ }, signalFn.j = (scope) => {
269
+ let ownerScope = getOwnerScope(scope), providerSubscriptionsAccessor = getOwnerValueAccessor(scope) + "*" /* Subscribers */;
270
+ ownerScope[providerSubscriptionsAccessor]?.delete(subscribeFns.get(scope)), subscribeFns.delete(scope);
271
+ }, signalFn;
272
+ }
273
+ function childClosures(closureSignals, childAccessor) {
274
+ let signal = (scope, op) => {
275
+ let childScope = scope[childAccessor];
276
+ for (let closureSignal of closureSignals)
277
+ closureSignal(childScope, op);
278
+ };
279
+ return signal.g = (scope) => {
280
+ let childScope = scope[childAccessor];
281
+ for (let closureSignal of closureSignals)
282
+ closureSignal.g?.(childScope);
283
+ }, signal.j = (scope) => {
284
+ let childScope = scope[childAccessor];
285
+ for (let closureSignal of closureSignals)
286
+ closureSignal.j?.(childScope);
287
+ }, signal;
288
+ }
289
+ function dynamicSubscribers(valueAccessor) {
290
+ let subscribersAccessor = valueAccessor + "*" /* Subscribers */;
291
+ return (scope, op) => {
292
+ let subscribers = scope[subscribersAccessor];
293
+ if (subscribers)
294
+ for (let subscriber of subscribers)
295
+ subscriber(op);
296
+ };
297
+ }
298
+ function setTagVar(scope, childAccessor, tagVarSignal2) {
299
+ scope[childAccessor]["/" /* TagVariable */] = (valueOrOp) => tagVarSignal2(scope, valueOrOp);
300
+ }
301
+ var tagVarSignal = (scope, valueOrOp) => scope["/" /* TagVariable */]?.(valueOrOp);
302
+ function setTagVarChange(scope, changeHandler) {
303
+ scope["@" /* TagVariableChange */] = changeHandler;
304
+ }
305
+ var tagVarSignalChange = (scope, value2) => scope["@" /* TagVariableChange */]?.(value2), renderBodyClosures = (renderBody, childScope, op) => {
306
+ let signals = renderBody?.c;
307
+ if (signals)
308
+ for (let signal of signals)
309
+ signal(childScope, op);
310
+ };
311
+ var tagIdsByGlobal = /* @__PURE__ */ new WeakMap();
312
+ function nextTagId({ $global }) {
313
+ let id = tagIdsByGlobal.get($global) || 0;
314
+ return tagIdsByGlobal.set($global, id + 1), "c" + $global.runtimeId + $global.renderId + id.toString(36);
315
+ }
316
+ function inChild(childAccessor, signal) {
317
+ return (scope, valueOrOp) => {
318
+ signal(scope[childAccessor], valueOrOp);
319
+ };
320
+ }
321
+ function intersections(signals) {
322
+ return (scope, op) => {
323
+ for (let signal of signals)
324
+ signal(scope, op);
325
+ };
326
+ }
327
+ function effect(id, fn) {
328
+ return register(id, fn), (scope) => {
329
+ queueEffect(scope, fn);
330
+ };
331
+ }
332
+
333
+ // src/dom/queue.ts
334
+ var pendingSignals = [], pendingEffects = [], rendering = !1;
335
+ function queueSource(scope, signal, value2) {
336
+ return schedule(), rendering = !0, signal(scope, MARK), rendering = !1, pendingSignals.push(scope, signal, value2), value2;
337
+ }
338
+ function queueEffect(scope, fn) {
339
+ pendingEffects.push(scope, fn);
340
+ }
341
+ function run() {
342
+ let signals = pendingSignals, effects = pendingEffects;
343
+ try {
344
+ rendering = !0, pendingSignals = [], runSignals(signals);
345
+ } finally {
346
+ rendering = !1;
347
+ }
348
+ pendingEffects = [], runEffects(effects);
349
+ }
350
+ function prepareEffects(fn) {
351
+ let prevSignals = pendingSignals, prevEffects = pendingEffects, preparedEffects = pendingEffects = [], preparedSignals = pendingSignals = [];
352
+ try {
353
+ rendering = !0, fn(), pendingSignals = prevSignals, runSignals(preparedSignals);
354
+ } finally {
355
+ rendering = !1, pendingSignals = prevSignals, pendingEffects = prevEffects;
356
+ }
357
+ return preparedEffects;
358
+ }
359
+ function runEffects(effects = pendingEffects) {
360
+ for (let i = 0; i < effects.length; i += 2 /* Total */) {
361
+ let scope = effects[i], fn = effects[i + 1];
362
+ fn(scope, scope);
363
+ }
364
+ }
365
+ function runSignals(signals) {
366
+ for (let i = 0; i < signals.length; i += 3 /* Total */) {
367
+ let scope = signals[i + 0 /* Scope */], signal = signals[i + 1 /* Signal */], value2 = signals[i + 2 /* Value */];
368
+ signal(scope, value2);
369
+ }
370
+ }
371
+
372
+ // src/dom/abort-signal.ts
373
+ function resetAbortSignal(scope, id) {
374
+ let controllers = scope.l;
375
+ if (controllers) {
376
+ let ctrl = controllers.get(id);
377
+ ctrl && (queueEffect(null, () => ctrl.abort()), controllers.delete(id));
378
+ }
379
+ }
380
+ function getAbortSignal(scope, id) {
381
+ let controllers = scope.l ||= /* @__PURE__ */ new Map(), controller = controllers.get(id);
382
+ return controller || (onDestroy(scope), controllers.set(id, controller = new AbortController())), controller.signal;
383
+ }
384
+
385
+ // src/common/compat-meta.ts
386
+ var prefix = "$C_", RENDERER_REGISTER_ID = prefix + "r", SET_SCOPE_REGISTER_ID = prefix + "s";
387
+
388
+ // src/common/helpers.ts
389
+ function classValue(value2) {
390
+ return toDelimitedString(value2, " ", stringifyClassObject);
391
+ }
392
+ function stringifyClassObject(name, value2) {
393
+ return value2 ? name : "";
394
+ }
395
+ function styleValue(value2) {
396
+ return toDelimitedString(value2, ";", stringifyStyleObject);
397
+ }
398
+ var NON_DIMENSIONAL = /^(--|ta|or|li|z)|n-c|i(do|nk|m|t)|w$|we/;
399
+ function stringifyStyleObject(name, value2) {
400
+ return value2 || value2 === 0 ? `${name}:${typeof value2 == "number" && value2 && !NON_DIMENSIONAL.test(name) ? value2 + "px" : value2}` : "";
401
+ }
402
+ function toDelimitedString(val, delimiter, stringify) {
403
+ switch (typeof val) {
404
+ case "string":
405
+ return val;
406
+ case "object":
407
+ if (val !== null) {
408
+ let result = "", curDelimiter = "";
409
+ if (Array.isArray(val))
410
+ for (let v of val) {
411
+ let part = toDelimitedString(v, delimiter, stringify);
412
+ part !== "" && (result += curDelimiter + part, curDelimiter = delimiter);
413
+ }
414
+ else
415
+ for (let name in val) {
416
+ let v = val[name], part = stringify(name, v);
417
+ part !== "" && (result += curDelimiter + part, curDelimiter = delimiter);
418
+ }
419
+ return result;
420
+ }
421
+ }
422
+ return "";
423
+ }
424
+ function isEventHandler(name) {
425
+ return /^on[A-Z-]/.test(name);
426
+ }
427
+ function getEventHandlerName(name) {
428
+ return name[2] === "-" ? name.slice(3) : name.slice(2).toLowerCase();
429
+ }
430
+ function normalizeDynamicRenderer(value2) {
431
+ if (value2) return value2.renderBody || value2.default || value2;
432
+ }
433
+
434
+ // src/dom/reconcile.ts
435
+ var WRONG_POS = 2147483647;
436
+ function reconcile(parent, oldScopes, newScopes, afterReference) {
437
+ let oldStart = 0, newStart = 0, oldEnd = oldScopes.length - 1, newEnd = newScopes.length - 1, oldStartScope = oldScopes[oldStart], newStartScope = newScopes[newStart], oldEndScope = oldScopes[oldEnd], newEndScope = newScopes[newEnd], i, j, k, nextSibling, oldScope, newScope;
438
+ outer: {
439
+ for (; oldStartScope === newStartScope; ) {
440
+ if (++oldStart, ++newStart, oldStart > oldEnd || newStart > newEnd)
441
+ break outer;
442
+ oldStartScope = oldScopes[oldStart], newStartScope = newScopes[newStart];
443
+ }
444
+ for (; oldEndScope === newEndScope; ) {
445
+ if (--oldEnd, --newEnd, oldStart > oldEnd || newStart > newEnd)
446
+ break outer;
447
+ oldEndScope = oldScopes[oldEnd], newEndScope = newScopes[newEnd];
448
+ }
449
+ }
450
+ if (oldStart > oldEnd) {
451
+ if (newStart <= newEnd) {
452
+ k = newEnd + 1, nextSibling = k < newScopes.length ? newScopes[k].a : afterReference;
453
+ do
454
+ insertBefore(newScopes[newStart++], parent, nextSibling);
455
+ while (newStart <= newEnd);
456
+ }
457
+ } else if (newStart > newEnd)
458
+ do
459
+ removeAndDestroyScope(oldScopes[oldStart++]);
460
+ while (oldStart <= oldEnd);
461
+ else {
462
+ let oldLength = oldEnd - oldStart + 1, newLength = newEnd - newStart + 1, aNullable = oldScopes, sources = new Array(newLength);
463
+ for (i = 0; i < newLength; ++i)
464
+ sources[i] = -1;
465
+ let pos = 0, synced = 0, keyIndex = /* @__PURE__ */ new Map();
466
+ for (j = newStart; j <= newEnd; ++j)
467
+ keyIndex.set(newScopes[j], j);
468
+ for (i = oldStart; i <= oldEnd && synced < newLength; ++i)
469
+ oldScope = oldScopes[i], j = keyIndex.get(oldScope), j !== void 0 && (pos = pos > j ? WRONG_POS : j, ++synced, newScope = newScopes[j], sources[j - newStart] = i, aNullable[i] = null);
470
+ if (oldLength === oldScopes.length && synced === 0) {
471
+ for (; newStart < newLength; ++newStart)
472
+ insertBefore(newScopes[newStart], parent, afterReference);
473
+ for (; oldStart < oldLength; ++oldStart)
474
+ removeAndDestroyScope(oldScopes[oldStart]);
475
+ } else {
476
+ for (i = oldLength - synced; i > 0; )
477
+ oldScope = aNullable[oldStart++], oldScope !== null && (removeAndDestroyScope(oldScope), i--);
478
+ if (pos === WRONG_POS) {
479
+ let seq = longestIncreasingSubsequence(sources);
480
+ for (j = seq.length - 1, k = newScopes.length, i = newLength - 1; i >= 0; --i)
481
+ sources[i] === -1 ? (pos = i + newStart, newScope = newScopes[pos++], nextSibling = pos < k ? newScopes[pos].a : afterReference, insertBefore(newScope, parent, nextSibling)) : j < 0 || i !== seq[j] ? (pos = i + newStart, newScope = newScopes[pos++], nextSibling = pos < k ? newScopes[pos].a : afterReference, insertBefore(newScope, parent, nextSibling)) : --j;
482
+ } else if (synced !== newLength)
483
+ for (k = newScopes.length, i = newLength - 1; i >= 0; --i)
484
+ sources[i] === -1 && (pos = i + newStart, newScope = newScopes[pos++], nextSibling = pos < k ? newScopes[pos].a : afterReference, insertBefore(newScope, parent, nextSibling));
485
+ }
486
+ }
487
+ }
488
+ function longestIncreasingSubsequence(a) {
489
+ let p = a.slice(), result = [];
490
+ result.push(0);
491
+ let u, v;
492
+ for (let i = 0, il = a.length; i < il; ++i) {
493
+ if (a[i] === -1)
494
+ continue;
495
+ let j = result[result.length - 1];
496
+ if (a[j] < a[i]) {
497
+ p[i] = j, result.push(i);
498
+ continue;
499
+ }
500
+ for (u = 0, v = result.length - 1; u < v; ) {
501
+ let c = (u + v) / 2 | 0;
502
+ a[result[c]] < a[i] ? u = c + 1 : v = c;
503
+ }
504
+ a[i] < a[result[u]] && (u > 0 && (p[i] = result[u - 1]), result[u] = i);
505
+ }
506
+ for (u = result.length, v = result[u - 1]; u-- > 0; )
507
+ result[u] = v, v = p[v];
508
+ return result;
509
+ }
510
+
511
+ // src/dom/event.ts
512
+ var elementHandlersByEvent = /* @__PURE__ */ new Map(), defaultDelegator = createDelegator();
513
+ function on(element, type, handler) {
514
+ let handlersByElement = elementHandlersByEvent.get(type);
515
+ handlersByElement || elementHandlersByEvent.set(type, handlersByElement = /* @__PURE__ */ new WeakMap()), handlersByElement.has(element) || defaultDelegator(element, type, handleDelegated), handlersByElement.set(element, handler || void 0);
516
+ }
517
+ function createDelegator() {
518
+ let delegatedEventsByRoot = /* @__PURE__ */ new WeakMap();
519
+ return function(node, type, handler) {
520
+ let root = node.getRootNode(), delegatedEvents = delegatedEventsByRoot.get(root);
521
+ delegatedEvents || delegatedEventsByRoot.set(root, delegatedEvents = /* @__PURE__ */ new Set()), delegatedEvents.has(type) || (delegatedEvents.add(type), root.addEventListener(type, handler, !0));
522
+ };
523
+ }
524
+ function handleDelegated(ev) {
525
+ let target = ev.target;
526
+ if (target) {
527
+ let handlersByElement = elementHandlersByEvent.get(ev.type);
528
+ if (handlersByElement.get(target)?.(ev, target), ev.bubbles)
529
+ for (; (target = target.parentElement) && !ev.cancelBubble; )
530
+ handlersByElement.get(target)?.(ev, target);
531
+ }
532
+ }
533
+
534
+ // src/dom/resolve-cursor-position.ts
535
+ function resolveCursorPosition(updatedValue, initialValue, initialPosition, inputType2) {
536
+ if (initialPosition !== initialValue.length || // short regex to match input types that delete backwards
537
+ /kw/.test(inputType2)) {
538
+ let before = initialValue.slice(0, initialPosition), after = initialValue.slice(initialPosition);
539
+ if (updatedValue.startsWith(before))
540
+ return initialPosition;
541
+ if (updatedValue.endsWith(after))
542
+ return updatedValue.length - after.length;
543
+ {
544
+ let relevantChars = stripSpacesAndPunctuation(before).length, pos = 0, relevantIndex = 0;
545
+ for (; relevantIndex < relevantChars; )
546
+ stripSpacesAndPunctuation(updatedValue[pos]) && relevantIndex++, pos++;
547
+ return pos;
548
+ }
549
+ }
550
+ return -1;
551
+ }
552
+ function stripSpacesAndPunctuation(str) {
553
+ return str.replace(/[^\p{L}\p{N}]/gu, "");
554
+ }
555
+
556
+ // src/dom/controllable.ts
557
+ function controllable_input_checked(scope, nodeAccessor, checked, checkedChange) {
558
+ setCheckboxValue(
559
+ scope,
560
+ nodeAccessor,
561
+ 0 /* InputChecked */,
562
+ normalizeBoolProp(checked),
563
+ checkedChange
564
+ );
565
+ }
566
+ function controllable_input_checked_effect(scope, nodeAccessor) {
567
+ let el = scope[nodeAccessor];
568
+ syncControllable(el, "input", hasCheckboxChanged, () => {
569
+ let checkedChange = scope[nodeAccessor + ";" /* ControlledHandler */];
570
+ checkedChange && (scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, checkedChange(el.checked), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && (el.checked = !el.checked));
571
+ });
572
+ }
573
+ function controllable_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value2) {
574
+ scope[nodeAccessor + ":" /* ControlledValue */] = checkedValue, attr(scope[nodeAccessor], "value", value2), setCheckboxValue(
575
+ scope,
576
+ nodeAccessor,
577
+ 1 /* InputCheckedValue */,
578
+ Array.isArray(checkedValue) ? checkedValue.includes(value2) : checkedValue === value2,
579
+ checkedValueChange
580
+ );
581
+ }
582
+ function controllable_input_checkedValue_effect(scope, nodeAccessor) {
583
+ let el = scope[nodeAccessor];
584
+ syncControllable(el, "input", hasCheckboxChanged, () => {
585
+ let checkedValueChange = scope[nodeAccessor + ";" /* ControlledHandler */];
586
+ if (checkedValueChange) {
587
+ let oldValue = scope[nodeAccessor + ":" /* ControlledValue */];
588
+ scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, checkedValueChange(
589
+ Array.isArray(oldValue) ? updateList(oldValue, el.value, el.checked) : el.checked ? el.value : void 0
590
+ ), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && (el.checked = !el.checked);
591
+ }
592
+ });
593
+ }
594
+ function controllable_input_value(scope, nodeAccessor, value2, valueChange) {
595
+ let el = scope[nodeAccessor], normalizedValue = normalizeStrProp(value2);
596
+ scope[nodeAccessor + ";" /* ControlledHandler */] = valueChange, valueChange ? (scope[nodeAccessor + "=" /* ControlledType */] = 0 /* InputChecked */, scope[nodeAccessor + ":" /* ControlledValue */] = value2, el.isConnected ? setValueAndUpdateSelection(el, normalizedValue) : el.defaultValue = normalizedValue) : (scope[nodeAccessor + "=" /* ControlledType */] = 5 /* None */, el.defaultValue = normalizedValue);
597
+ }
598
+ function controllable_input_value_effect(scope, nodeAccessor) {
599
+ let el = scope[nodeAccessor];
600
+ isResuming && (scope[nodeAccessor + ":" /* ControlledValue */] = el.defaultValue), syncControllable(el, "input", hasValueChanged, (ev) => {
601
+ let valueChange = scope[nodeAccessor + ";" /* ControlledHandler */];
602
+ valueChange && (scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, ev && (inputType = ev.inputType), valueChange(el.value), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && setValueAndUpdateSelection(
603
+ el,
604
+ scope[nodeAccessor + ":" /* ControlledValue */]
605
+ ), inputType = "");
606
+ });
607
+ }
608
+ function controllable_select_value(scope, nodeAccessor, value2, valueChange) {
609
+ scope[nodeAccessor + ";" /* ControlledHandler */] = valueChange, valueChange ? (scope[nodeAccessor + "=" /* ControlledType */] = 3 /* SelectValue */, scope[nodeAccessor + ":" /* ControlledValue */] = value2) : scope[nodeAccessor + "=" /* ControlledType */] = 5 /* None */, setSelectOptions(
610
+ scope[nodeAccessor],
611
+ value2,
612
+ valueChange
613
+ );
614
+ }
615
+ function controllable_select_value_effect(scope, nodeAccessor) {
616
+ let el = scope[nodeAccessor];
617
+ syncControllable(el, "input", hasSelectChanged, () => {
618
+ let valueChange = scope[nodeAccessor + ";" /* ControlledHandler */];
619
+ valueChange && (scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, valueChange(
620
+ Array.isArray(scope[nodeAccessor + ":" /* ControlledValue */]) ? Array.from(el.selectedOptions, toValueProp) : el.value
621
+ ), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && setSelectOptions(
622
+ el,
623
+ scope[nodeAccessor + ":" /* ControlledValue */],
624
+ valueChange
625
+ ));
626
+ });
627
+ }
628
+ function setSelectOptions(el, value2, valueChange) {
629
+ if (Array.isArray(value2))
630
+ for (let opt of el.options) {
631
+ let selected = value2.includes(opt.value);
632
+ valueChange ? opt.selected = selected : opt.defaultSelected = selected;
633
+ }
634
+ else {
635
+ let normalizedValue = normalizeStrProp(value2);
636
+ if (valueChange)
637
+ el.value = normalizedValue;
638
+ else
639
+ for (let opt of el.options)
640
+ opt.defaultSelected = opt.value === normalizedValue;
641
+ }
642
+ }
643
+ function controllable_detailsOrDialog_open(scope, nodeAccessor, open, openChange) {
644
+ scope[nodeAccessor + ";" /* ControlledHandler */] = openChange, openChange ? scope[nodeAccessor + "=" /* ControlledType */] = 4 /* DetailsOrDialogOpen */ : scope[nodeAccessor + "=" /* ControlledType */] = 5 /* None */, scope[nodeAccessor].open = normalizeBoolProp(open);
645
+ }
646
+ function controllable_detailsOrDialog_open_effect(scope, nodeAccessor) {
647
+ let el = scope[nodeAccessor], hasChanged = () => el.open !== scope[nodeAccessor + ":" /* ControlledValue */];
648
+ syncControllable(
649
+ el,
650
+ el.tagName === "DIALOG" ? "close" : "toggle",
651
+ hasChanged,
652
+ () => {
653
+ let openChange = scope[nodeAccessor + ";" /* ControlledHandler */];
654
+ openChange && hasChanged() && (scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, openChange(el.open), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && (el.open = !el.open));
655
+ }
656
+ );
657
+ }
658
+ var inputType = "";
659
+ function setValueAndUpdateSelection(el, value2) {
660
+ let initialValue = el.value;
661
+ if (initialValue !== value2)
662
+ if (el.getRootNode().activeElement === el) {
663
+ let initialPosition = el.selectionStart;
664
+ el.value = value2;
665
+ let updatedPosition = resolveCursorPosition(
666
+ el.value,
667
+ initialValue,
668
+ initialPosition,
669
+ inputType
670
+ );
671
+ ~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);
672
+ } else
673
+ el.value = value2;
674
+ }
675
+ function setCheckboxValue(scope, nodeAccessor, type, checked, checkedChange) {
676
+ scope[nodeAccessor + ";" /* ControlledHandler */] = checkedChange, checkedChange ? (scope[nodeAccessor + "=" /* ControlledType */] = type, scope[nodeAccessor].checked = checked) : (scope[nodeAccessor + "=" /* ControlledType */] = 5 /* None */, scope[nodeAccessor].defaultChecked = checked);
677
+ }
678
+ var delegateFormControl = createDelegator(), formChangeHandlers = /* @__PURE__ */ new WeakMap();
679
+ function syncControllable(el, event, hasChanged, onChange) {
680
+ formChangeHandlers.set(el, onChange), delegateFormControl(el, event, onFormChange), el.form && delegateFormControl(el.form, "reset", onFormReset), isResuming && hasChanged(el) && queueMicrotask(onChange);
681
+ }
682
+ function onFormChange(ev) {
683
+ formChangeHandlers.get(ev.target)?.(ev);
684
+ }
685
+ function onFormReset(ev) {
686
+ let handlers = [];
687
+ for (let el of ev.target.elements) {
688
+ let handler = formChangeHandlers.get(el);
689
+ handler && hasFormElementChanged(el) && handlers.push(handler);
690
+ }
691
+ requestAnimationFrame(() => {
692
+ if (!ev.defaultPrevented)
693
+ for (let change of handlers)
694
+ change();
695
+ });
696
+ }
697
+ function hasValueChanged(el) {
698
+ return el.value !== el.defaultValue;
699
+ }
700
+ function hasCheckboxChanged(el) {
701
+ return el.checked !== el.defaultChecked;
702
+ }
703
+ function hasSelectChanged(el) {
704
+ for (let opt of el.options)
705
+ if (opt.selected !== opt.defaultSelected)
706
+ return !0;
707
+ }
708
+ function hasFormElementChanged(el) {
709
+ return el.options ? hasSelectChanged(el) : hasValueChanged(el) || hasCheckboxChanged(el);
710
+ }
711
+ function normalizeStrProp(value2) {
712
+ return normalizeAttrValue(value2) || "";
713
+ }
714
+ function normalizeBoolProp(value2) {
715
+ return value2 != null && value2 !== !1;
716
+ }
717
+ function updateList(arr, val, push) {
718
+ let index = arr.indexOf(val);
719
+ return (push ? !~index && [...arr, val] : ~index && arr.slice(0, index).concat(arr.slice(index + 1))) || arr;
720
+ }
721
+ function toValueProp(it) {
722
+ return it.value;
723
+ }
724
+
725
+ // src/dom/parse-html.ts
726
+ var fallback = document.createTextNode(""), parser = /* @__PURE__ */ new Range();
727
+ function parseHTML(html2) {
728
+ return parser.createContextualFragment(html2);
729
+ }
730
+ function parseHTMLOrSingleNode(html2) {
731
+ let content = parseHTML(html2);
732
+ return content.firstChild ? content.firstChild === content.lastChild && // If the firstChild is a comment it's possible its
733
+ // a single replaced node, in which case the walker can't replace
734
+ // the node itself.
735
+ content.firstChild.nodeType !== 8 ? content.firstChild : content : fallback;
736
+ }
737
+
738
+ // src/dom/dom.ts
739
+ function attr(element, name, value2) {
740
+ setAttribute(element, name, normalizeAttrValue(value2));
741
+ }
742
+ function setAttribute(element, name, value2) {
743
+ element.getAttribute(name) != value2 && (value2 === void 0 ? element.removeAttribute(name) : element.setAttribute(name, value2));
744
+ }
745
+ function classAttr(element, value2) {
746
+ setAttribute(element, "class", classValue(value2) || void 0);
747
+ }
748
+ function styleAttr(element, value2) {
749
+ setAttribute(element, "style", styleValue(value2) || void 0);
750
+ }
751
+ function data(node, value2) {
752
+ let normalizedValue = normalizeString(value2);
753
+ node.data !== normalizedValue && (node.data = normalizedValue);
754
+ }
755
+ function textContent(node, value2) {
756
+ let normalizedValue = normalizeString(value2);
757
+ node.textContent !== normalizedValue && (node.textContent = normalizedValue);
758
+ }
759
+ function attrs(scope, nodeAccessor, nextAttrs) {
760
+ let el = scope[nodeAccessor];
761
+ for (let { name } of el.attributes)
762
+ nextAttrs && (name in nextAttrs || hasAttrAlias(el, name, nextAttrs)) || el.removeAttribute(name);
763
+ attrsInternal(scope, nodeAccessor, nextAttrs);
764
+ }
765
+ function hasAttrAlias(element, attr2, nextAttrs) {
766
+ return attr2 === "checked" && element.tagName === "INPUT" && "checkedValue" in nextAttrs;
767
+ }
768
+ function partialAttrs(scope, nodeAccessor, nextAttrs, skip) {
769
+ let el = scope[nodeAccessor], partial = {};
770
+ for (let { name } of el.attributes)
771
+ !skip[name] && !(nextAttrs && name in nextAttrs) && el.removeAttribute(name);
772
+ for (let key in nextAttrs)
773
+ skip[key] || (partial[key] = nextAttrs[key]);
774
+ attrsInternal(scope, nodeAccessor, partial);
775
+ }
776
+ function attrsInternal(scope, nodeAccessor, nextAttrs) {
777
+ let el = scope[nodeAccessor], events, skip;
778
+ switch (el.tagName) {
779
+ case "INPUT":
780
+ if ("checked" in nextAttrs || "checkedChange" in nextAttrs)
781
+ controllable_input_checked(
782
+ scope,
783
+ nodeAccessor,
784
+ nextAttrs.checked,
785
+ nextAttrs.checkedChange
786
+ );
787
+ else if ("checkedValue" in nextAttrs || "checkedValueChange" in nextAttrs)
788
+ controllable_input_checkedValue(
789
+ scope,
790
+ nodeAccessor,
791
+ nextAttrs.checkedValue,
792
+ nextAttrs.checkedValueChange,
793
+ nextAttrs.value
794
+ );
795
+ else if ("value" in nextAttrs || "valueChange" in nextAttrs)
796
+ controllable_input_value(
797
+ scope,
798
+ nodeAccessor,
799
+ nextAttrs.value,
800
+ nextAttrs.valueChange
801
+ );
802
+ else
803
+ break;
804
+ skip = /^(?:value|checked(?:Value)?)(?:Change)?$/;
805
+ break;
806
+ case "SELECT":
807
+ ("value" in nextAttrs || "valueChange" in nextAttrs) && (controllable_select_value(
808
+ scope,
809
+ nodeAccessor,
810
+ nextAttrs.value,
811
+ nextAttrs.valueChange
812
+ ), skip = /^value(?:Change)?$/);
813
+ break;
814
+ case "TEXTAREA":
815
+ ("value" in nextAttrs || "valueChange" in nextAttrs) && (controllable_input_value(
816
+ scope,
817
+ nodeAccessor,
818
+ nextAttrs.value,
819
+ nextAttrs.valueChange
820
+ ), skip = /^value(?:Change)?$/);
821
+ break;
822
+ case "DETAILS":
823
+ case "DIALOG":
824
+ ("open" in nextAttrs || "openChange" in nextAttrs) && (controllable_detailsOrDialog_open(
825
+ scope,
826
+ nodeAccessor,
827
+ nextAttrs.open,
828
+ nextAttrs.openChange
829
+ ), skip = /^open(?:Change)?$/);
830
+ break;
831
+ }
832
+ for (let name in nextAttrs) {
833
+ let value2 = nextAttrs[name];
834
+ switch (name) {
835
+ case "class":
836
+ classAttr(el, value2);
837
+ break;
838
+ case "style":
839
+ styleAttr(el, value2);
840
+ break;
841
+ case "renderBody":
842
+ break;
843
+ default:
844
+ isEventHandler(name) ? (events ||= scope[nodeAccessor + "~" /* EventAttributes */] = {})[getEventHandlerName(name)] = value2 : skip?.test(name) || attr(el, name, value2);
845
+ }
846
+ }
847
+ }
848
+ function attrsEvents(scope, nodeAccessor) {
849
+ let el = scope[nodeAccessor], events = scope[nodeAccessor + "~" /* EventAttributes */];
850
+ switch (scope[nodeAccessor + "=" /* ControlledType */]) {
851
+ case 0 /* InputChecked */:
852
+ controllable_input_checked_effect(scope, nodeAccessor);
853
+ break;
854
+ case 1 /* InputCheckedValue */:
855
+ controllable_input_checkedValue_effect(scope, nodeAccessor);
856
+ break;
857
+ case 2 /* InputValue */:
858
+ controllable_input_value_effect(scope, nodeAccessor);
859
+ break;
860
+ case 3 /* SelectValue */:
861
+ controllable_select_value_effect(scope, nodeAccessor);
862
+ break;
863
+ case 4 /* DetailsOrDialogOpen */:
864
+ controllable_detailsOrDialog_open_effect(scope, nodeAccessor);
865
+ break;
866
+ }
867
+ for (let name in events)
868
+ on(el, name, events[name]);
869
+ }
870
+ function html(scope, value2, index) {
871
+ let firstChild = scope[index], lastChild = scope[index + "-"] || firstChild, parentNode = firstChild.parentNode, afterReference = lastChild.nextSibling, newContent = parseHTML(value2 || value2 === 0 ? value2 + "" : "<!>");
872
+ scope[index] = newContent.firstChild, scope[index + "-" /* DynamicPlaceholderLastChild */] = newContent.lastChild, parentNode.insertBefore(newContent, firstChild);
873
+ let current = firstChild;
874
+ for (; current !== afterReference; ) {
875
+ let next = current.nextSibling;
876
+ current.remove(), current = next;
877
+ }
878
+ }
879
+ function props(scope, nodeIndex, index) {
880
+ let nextProps = scope[index], prevProps = scope[index + "-"], node = scope[nodeIndex];
881
+ if (prevProps)
882
+ for (let name in prevProps)
883
+ name in nextProps || (node[name] = void 0);
884
+ for (let name in nextProps)
885
+ node[name] = nextProps[name];
886
+ scope[index + "-"] = nextProps;
887
+ }
888
+ function normalizeAttrValue(value2) {
889
+ if (value2 || value2 === 0)
890
+ return value2 === !0 ? "" : value2 + "";
891
+ }
892
+ function normalizeString(value2) {
893
+ return value2 || value2 === 0 ? value2 + "" : "\u200D";
894
+ }
895
+ function lifecycle(scope, index, thisObj) {
896
+ let instance = scope[index];
897
+ instance ? (Object.assign(instance, thisObj), instance.onUpdate?.()) : (scope[index] = thisObj, thisObj.onMount?.(), getAbortSignal(
898
+ scope,
899
+ "-" /* LifecycleAbortController */ + index
900
+ ).onabort = () => thisObj.onDestroy?.());
901
+ }
902
+
903
+ // src/dom/walker.ts
904
+ var walker = /* @__PURE__ */ document.createTreeWalker(document);
905
+ function trimWalkString(walkString) {
906
+ let end = walkString.length;
907
+ for (; walkString.charCodeAt(--end) > 47 /* BeginChild */; ) ;
908
+ return walkString.slice(0, end + 1);
909
+ }
910
+ function walk(startNode, walkCodes, scope) {
911
+ walker.currentNode = startNode, walkInternal(walkCodes, scope, scope, 0), walker.currentNode = document.documentElement;
912
+ }
913
+ function walkInternal(walkCodes, scope, cleanupOwnerScope, currentWalkIndex) {
914
+ let value2, storedMultiplier = 0, currentMultiplier = 0, currentScopeIndex = 0;
915
+ for (cleanupOwnerScope !== scope && (scope.d = cleanupOwnerScope); value2 = walkCodes.charCodeAt(currentWalkIndex++); )
916
+ if (currentMultiplier = storedMultiplier, storedMultiplier = 0, value2 >= 117 /* Multiplier */)
917
+ storedMultiplier = currentMultiplier * 10 /* Multiplier */ + value2 - 117 /* Multiplier */;
918
+ else if (value2 >= 107 /* Out */) {
919
+ for (value2 = 10 /* Out */ * currentMultiplier + value2 - 107 /* Out */; value2--; )
920
+ walker.parentNode();
921
+ walker.nextSibling();
922
+ } else if (value2 >= 97 /* Over */)
923
+ for (value2 = 10 /* Over */ * currentMultiplier + value2 - 97 /* Over */; value2--; )
924
+ walker.nextSibling();
925
+ else if (value2 >= 67 /* Next */)
926
+ for (value2 = 20 /* Next */ * currentMultiplier + value2 - 67 /* Next */; value2--; )
927
+ walker.nextNode();
928
+ else if (value2 === 47 /* BeginChild */)
929
+ currentWalkIndex = walkInternal(
930
+ walkCodes,
931
+ scope[currentScopeIndex++] = createScope(scope.$global),
932
+ cleanupOwnerScope,
933
+ currentWalkIndex
934
+ );
935
+ else {
936
+ if (value2 === 38 /* EndChild */)
937
+ return currentWalkIndex;
938
+ if (value2 === 32 /* Get */)
939
+ scope[currentScopeIndex++] = walker.currentNode;
940
+ else {
941
+ let newNode = scope[currentScopeIndex++] = document.createTextNode(""), current = walker.currentNode;
942
+ current.parentNode.replaceChild(newNode, current), walker.currentNode = newNode;
943
+ }
944
+ }
945
+ return currentWalkIndex;
946
+ }
947
+
948
+ // src/dom/renderer.ts
949
+ function createScopeWithRenderer(renderer, $global, ownerScope) {
950
+ let newScope = createScope($global);
951
+ if (newScope._ = newScope.d = renderer.B || ownerScope, newScope.x = renderer, initRenderer(renderer, newScope), renderer.c)
952
+ for (let signal of renderer.c)
953
+ signal.g?.(newScope);
954
+ return newScope;
955
+ }
956
+ function createScopeWithTagNameOrRenderer(tagNameOrRenderer, $global, ownerScope) {
957
+ if (typeof tagNameOrRenderer != "string")
958
+ return createScopeWithRenderer(tagNameOrRenderer, $global, ownerScope);
959
+ let newScope = createScope($global);
960
+ return newScope._ = newScope.d = ownerScope, newScope[0] = newScope.a = newScope.b = document.createElement(tagNameOrRenderer), newScope;
961
+ }
962
+ function initRenderer(renderer, scope) {
963
+ let dom = renderer.k();
964
+ return walk(
965
+ dom.nodeType === 11 /* DocumentFragment */ ? dom.firstChild : dom,
966
+ renderer.C,
967
+ scope
968
+ ), scope.a = dom.nodeType === 11 /* DocumentFragment */ ? dom.firstChild : dom, scope.b = dom.nodeType === 11 /* DocumentFragment */ ? dom.lastChild : dom, renderer.s && renderer.s(scope), dom;
969
+ }
970
+ function dynamicTagAttrs(nodeAccessor, getRenderBody, inputIsArgs) {
971
+ return (scope, attrsOrOp) => {
972
+ let renderer = scope[nodeAccessor + "(" /* ConditionalRenderer */];
973
+ if (!renderer || attrsOrOp === DIRTY)
974
+ return;
975
+ let childScope = scope[nodeAccessor + "!" /* ConditionalScope */];
976
+ if (attrsOrOp === MARK || attrsOrOp === CLEAN)
977
+ return renderer.e?.(childScope, attrsOrOp);
978
+ let renderBody = getRenderBody?.(scope);
979
+ if (typeof renderer == "string")
980
+ setConditionalRendererOnlyChild(childScope, 0, renderBody), attrs(childScope, 0, attrsOrOp());
981
+ else if (renderer.e) {
982
+ let attributes = attrsOrOp();
983
+ renderer.e(
984
+ childScope,
985
+ inputIsArgs ? attributes : [
986
+ renderBody ? {
987
+ ...attributes,
988
+ renderBody
989
+ } : attributes
990
+ ]
991
+ );
992
+ }
993
+ };
994
+ }
995
+ function createRendererWithOwner(template, rawWalks, setup, getClosureSignals, getArgs) {
996
+ let args, closureSignals, id = {}, walks = rawWalks ? /* @__PURE__ */ trimWalkString(rawWalks) : " ";
997
+ return (owner) => ({
998
+ t: id,
999
+ D: template,
1000
+ C: walks,
1001
+ s: setup,
1002
+ k: _clone,
1003
+ B: owner,
1004
+ E: void 0,
1005
+ get e() {
1006
+ return args ||= getArgs?.();
1007
+ },
1008
+ get c() {
1009
+ return closureSignals ||= new Set(getClosureSignals?.());
1010
+ }
1011
+ });
1012
+ }
1013
+ function createRenderer(template, walks, setup, getClosureSignals, getArgs) {
1014
+ return createRendererWithOwner(
1015
+ template,
1016
+ walks,
1017
+ setup,
1018
+ getClosureSignals,
1019
+ getArgs
1020
+ )();
1021
+ }
1022
+ function _clone() {
1023
+ return (this.E ||= parseHTMLOrSingleNode(
1024
+ this.D
1025
+ )).cloneNode(!0);
1026
+ }
1027
+
1028
+ // src/dom/control-flow.ts
1029
+ function patchConditionals(fn) {
1030
+ conditional = fn(conditional), conditionalOnlyChild = fn(conditionalOnlyChild);
1031
+ }
1032
+ var conditional = function(nodeAccessor, fn, getIntersection) {
1033
+ let rendererAccessor = nodeAccessor + "(" /* ConditionalRenderer */, childScopeAccessor = nodeAccessor + "!" /* ConditionalScope */, intersection2 = getIntersection && ((scope, op) => (intersection2 = getIntersection())(scope, op));
1034
+ return (scope, newRendererOrOp) => {
1035
+ if (newRendererOrOp === DIRTY) return;
1036
+ let currentRenderer = scope[rendererAccessor], op = newRendererOrOp;
1037
+ if (newRendererOrOp !== MARK && newRendererOrOp !== CLEAN) {
1038
+ let normalizedRenderer = normalizeDynamicRenderer(newRendererOrOp);
1039
+ isDifferentRenderer(normalizedRenderer, currentRenderer) ? (currentRenderer = scope[rendererAccessor] = normalizedRenderer, setConditionalRenderer(scope, nodeAccessor, normalizedRenderer), fn && fn(scope), op = DIRTY) : op = CLEAN;
1040
+ }
1041
+ intersection2?.(scope, op), renderBodyClosures(currentRenderer, scope[childScopeAccessor], op);
1042
+ };
1043
+ };
1044
+ function inConditionalScope(signal, nodeAccessor) {
1045
+ let scopeAccessor = nodeAccessor + "!" /* ConditionalScope */, rendererAccessor = nodeAccessor + "(" /* ConditionalRenderer */;
1046
+ return (scope, op) => {
1047
+ let conditionalScope = scope[scopeAccessor];
1048
+ if (conditionalScope) {
1049
+ let conditionalRenderer = scope[rendererAccessor];
1050
+ (!conditionalRenderer?.c || conditionalRenderer.c.has(signal)) && signal(conditionalScope, op);
1051
+ }
1052
+ };
1053
+ }
1054
+ function setConditionalRenderer(scope, nodeAccessor, newRenderer) {
1055
+ let newScope, prevScope = scope[nodeAccessor + "!" /* ConditionalScope */];
1056
+ newRenderer ? (newScope = scope[nodeAccessor + "!" /* ConditionalScope */] = createScopeWithTagNameOrRenderer(
1057
+ newRenderer,
1058
+ scope.$global,
1059
+ scope
1060
+ ), prevScope = prevScope || getEmptyScope(scope[nodeAccessor])) : (newScope = getEmptyScope(scope[nodeAccessor]), scope[nodeAccessor + "!" /* ConditionalScope */] = void 0), insertBefore(
1061
+ newScope,
1062
+ prevScope.a.parentNode,
1063
+ prevScope.a
1064
+ ), removeAndDestroyScope(prevScope);
1065
+ }
1066
+ var conditionalOnlyChild = function(nodeAccessor, fn, getIntersection) {
1067
+ let rendererAccessor = nodeAccessor + "(" /* ConditionalRenderer */, childScopeAccessor = nodeAccessor + "!" /* ConditionalScope */, intersection2 = getIntersection && ((scope, op) => (intersection2 = getIntersection())(scope, op));
1068
+ return (scope, newRendererOrOp) => {
1069
+ if (newRendererOrOp === DIRTY) return;
1070
+ let currentRenderer = scope[rendererAccessor], op = newRendererOrOp;
1071
+ if (newRendererOrOp !== MARK && newRendererOrOp !== CLEAN) {
1072
+ let normalizedRenderer = normalizeDynamicRenderer(newRendererOrOp);
1073
+ isDifferentRenderer(normalizedRenderer, currentRenderer) ? (currentRenderer = scope[rendererAccessor] = normalizedRenderer, setConditionalRendererOnlyChild(
1074
+ scope,
1075
+ nodeAccessor,
1076
+ normalizedRenderer
1077
+ ), fn && fn(scope), op = DIRTY) : op = CLEAN;
1078
+ }
1079
+ intersection2?.(scope, op), renderBodyClosures(currentRenderer, scope[childScopeAccessor], op);
1080
+ };
1081
+ };
1082
+ function setConditionalRendererOnlyChild(scope, nodeAccessor, newRenderer) {
1083
+ let prevScope = scope[nodeAccessor + "!" /* ConditionalScope */], referenceNode = scope[nodeAccessor];
1084
+ if (referenceNode.textContent = "", newRenderer) {
1085
+ let newScope = scope[nodeAccessor + "!" /* ConditionalScope */] = createScopeWithTagNameOrRenderer(newRenderer, scope.$global, scope);
1086
+ insertBefore(newScope, referenceNode, null);
1087
+ }
1088
+ prevScope && destroyScope(prevScope);
1089
+ }
1090
+ var emptyMarkerMap = /* @__PURE__ */ new Map([[Symbol(), getEmptyScope(void 0)]]), emptyMarkerArray = [
1091
+ /* @__PURE__ */ getEmptyScope(void 0)
1092
+ ], emptyMap = /* @__PURE__ */ new Map(), emptyArray = [];
1093
+ function loopOf(nodeAccessor, renderer) {
1094
+ return loop(
1095
+ nodeAccessor,
1096
+ renderer,
1097
+ ([all, by = bySecondArg], cb) => {
1098
+ typeof by == "string" ? forOf(
1099
+ all,
1100
+ (item, i) => cb(item[by], [item, i])
1101
+ ) : forOf(all, (item, i) => cb(by(item, i), [item, i]));
1102
+ }
1103
+ );
1104
+ }
1105
+ function loopIn(nodeAccessor, renderer) {
1106
+ return loop(
1107
+ nodeAccessor,
1108
+ renderer,
1109
+ ([obj, by = byFirstArg], cb) => forIn(obj, (key, value2) => cb(by(key, value2), [key, value2]))
1110
+ );
1111
+ }
1112
+ function loopTo(nodeAccessor, renderer) {
1113
+ return loop(
1114
+ nodeAccessor,
1115
+ renderer,
1116
+ ([to, from, step, by = byFirstArg], cb) => forTo(to, from, step, (v) => cb(by(v), [v]))
1117
+ );
1118
+ }
1119
+ function loop(nodeAccessor, renderer, forEach) {
1120
+ let loopScopeAccessor = nodeAccessor + "!" /* LoopScopeArray */, closureSignals = renderer.c, params = renderer.e;
1121
+ return (scope, valueOrOp) => {
1122
+ if (valueOrOp === DIRTY) return;
1123
+ if (valueOrOp === MARK || valueOrOp === CLEAN) {
1124
+ let loopScopes = scope[loopScopeAccessor] ?? scope[nodeAccessor + "(" /* LoopScopeMap */]?.values() ?? [];
1125
+ if (loopScopes !== emptyMarkerArray)
1126
+ for (let childScope of loopScopes) {
1127
+ params?.(childScope, valueOrOp);
1128
+ for (let signal of closureSignals)
1129
+ signal(childScope, valueOrOp);
1130
+ }
1131
+ return;
1132
+ }
1133
+ let referenceNode = scope[nodeAccessor], referenceIsMarker = referenceNode.nodeType === 8 || referenceNode.nodeType === 3, oldMap = scope[nodeAccessor + "(" /* LoopScopeMap */] || (referenceIsMarker ? emptyMarkerMap : emptyMap), oldArray = scope[nodeAccessor + "!" /* LoopScopeArray */] || Array.from(oldMap.values()), newMap, newArray, afterReference, parentNode, needsReconciliation = !0;
1134
+ if (forEach(valueOrOp, (key, args) => {
1135
+ let childScope = oldMap.get(key), closureOp = CLEAN;
1136
+ if (childScope || (childScope = createScopeWithRenderer(renderer, scope.$global, scope), closureOp = DIRTY), params && params(childScope, args), closureSignals)
1137
+ for (let signal of closureSignals)
1138
+ signal(childScope, closureOp);
1139
+ newMap ? (newMap.set(key, childScope), newArray.push(childScope)) : (newMap = /* @__PURE__ */ new Map([[key, childScope]]), newArray = [childScope]);
1140
+ }), newMap || (referenceIsMarker ? (newMap = emptyMarkerMap, newArray = emptyMarkerArray, getEmptyScope(referenceNode)) : (oldArray.forEach(destroyScope), referenceNode.textContent = "", newMap = emptyMap, newArray = emptyArray, needsReconciliation = !1)), needsReconciliation) {
1141
+ if (referenceIsMarker) {
1142
+ oldMap === emptyMarkerMap && getEmptyScope(referenceNode);
1143
+ let oldLastChild = oldArray[oldArray.length - 1];
1144
+ afterReference = oldLastChild.b.nextSibling, parentNode = oldLastChild.a.parentNode;
1145
+ } else
1146
+ afterReference = null, parentNode = referenceNode;
1147
+ reconcile(parentNode, oldArray, newArray, afterReference);
1148
+ }
1149
+ scope[nodeAccessor + "(" /* LoopScopeMap */] = newMap, scope[nodeAccessor + "!" /* LoopScopeArray */] = newArray;
1150
+ };
1151
+ }
1152
+ function inLoopScope(signal, loopNodeAccessor) {
1153
+ let loopScopeAccessor = loopNodeAccessor + "!" /* LoopScopeArray */;
1154
+ return (scope, op) => {
1155
+ let loopScopes = scope[loopScopeAccessor] ?? scope[loopNodeAccessor + "(" /* LoopScopeMap */]?.values() ?? [];
1156
+ if (loopScopes !== emptyMarkerArray)
1157
+ for (let scope2 of loopScopes)
1158
+ signal(scope2, op);
1159
+ };
1160
+ }
1161
+ function bySecondArg(_item, index) {
1162
+ return index;
1163
+ }
1164
+ function byFirstArg(name) {
1165
+ return name;
1166
+ }
1167
+ function isDifferentRenderer(a, b) {
1168
+ return a !== b && (a?.t || 0) !== b?.t;
1169
+ }
1170
+
1171
+ // src/dom/compat.ts
1172
+ var classIdToScope = /* @__PURE__ */ new Map(), compat = {
1173
+ patchConditionals,
1174
+ queueEffect,
1175
+ init() {
1176
+ register(SET_SCOPE_REGISTER_ID, (scope) => {
1177
+ classIdToScope.set(scope.m5c, scope);
1178
+ });
1179
+ },
1180
+ registerRenderer(fn) {
1181
+ register(RENDERER_REGISTER_ID, fn);
1182
+ },
1183
+ isOp(value2) {
1184
+ return value2 === MARK || value2 === CLEAN || value2 === DIRTY;
1185
+ },
1186
+ isRenderer(renderer) {
1187
+ return renderer.k !== void 0;
1188
+ },
1189
+ getStartNode(scope) {
1190
+ return scope.a;
1191
+ },
1192
+ setScopeNodes(scope, startNode, endNode) {
1193
+ scope.a = startNode, scope.b = endNode;
1194
+ },
1195
+ runComponentEffects() {
1196
+ runEffects(this.effects);
1197
+ },
1198
+ resolveRegistered(value2, {
1199
+ runtimeId,
1200
+ componentIdPrefix
1201
+ }) {
1202
+ return Array.isArray(value2) && typeof value2[0] == "string" ? getRegisteredWithScope(
1203
+ value2[0],
1204
+ value2.length === 2 && window[runtimeId]?.[componentIdPrefix === "s" ? "_" : componentIdPrefix]?.n[value2[1]]
1205
+ ) : value2;
1206
+ },
1207
+ createRenderer(setup, clone, args) {
1208
+ let renderer = createRenderer(
1209
+ "",
1210
+ void 0,
1211
+ setup,
1212
+ void 0,
1213
+ args && (() => args)
1214
+ );
1215
+ return renderer.k = clone, renderer;
1216
+ },
1217
+ render(out, component, renderer, input) {
1218
+ let scope = component.scope;
1219
+ scope || (scope = classIdToScope.get(component.id), scope && (component.scope = scope, classIdToScope.delete(component.id)));
1220
+ let args = renderer.e || noop, existing = !1;
1221
+ if (component.effects = prepareEffects(() => {
1222
+ if (scope)
1223
+ args(scope, MARK), existing = !0;
1224
+ else {
1225
+ scope = component.scope = createScopeWithRenderer(renderer, out.global);
1226
+ let closures = renderer.c;
1227
+ if (closures)
1228
+ for (let signal of closures)
1229
+ signal(component.scope, CLEAN);
1230
+ }
1231
+ args(scope, input);
1232
+ }), !existing)
1233
+ return scope.a === scope.b ? scope.a : scope.a.parentNode;
1234
+ }
1235
+ };
1236
+ function noop() {
1237
+ }
1238
+
1239
+ // src/dom/template.ts
1240
+ var createTemplate = (templateId, ...rendererArgs) => {
1241
+ let renderer = createRenderer(...rendererArgs);
1242
+ return renderer.mount = mount, renderer._ = renderer, register(templateId, renderer);
1243
+ };
1244
+ function mount(input = {}, reference, position) {
1245
+ let scope, dom, { $global } = input;
1246
+ $global ? ({ $global, ...input } = input, $global = {
1247
+ runtimeId: DEFAULT_RUNTIME_ID,
1248
+ renderId: DEFAULT_RENDER_ID,
1249
+ ...$global
1250
+ }) : $global = {
1251
+ runtimeId: DEFAULT_RUNTIME_ID,
1252
+ renderId: DEFAULT_RENDER_ID
1253
+ };
1254
+ let args = this.e, effects = prepareEffects(() => {
1255
+ scope = createScope($global), dom = initRenderer(this, scope), args && args(scope, [input]);
1256
+ });
1257
+ switch (position) {
1258
+ case "afterbegin":
1259
+ reference.insertBefore(dom, reference.firstChild);
1260
+ break;
1261
+ case "afterend":
1262
+ reference.parentElement.insertBefore(dom, reference.nextSibling);
1263
+ break;
1264
+ case "beforebegin":
1265
+ reference.parentElement.insertBefore(dom, reference);
1266
+ break;
1267
+ default:
1268
+ reference.appendChild(dom);
1269
+ break;
1270
+ }
1271
+ return runEffects(effects), {
1272
+ update: (newInput) => {
1273
+ args && runEffects(
1274
+ prepareEffects(() => {
1275
+ args(scope, MARK), args(scope, [newInput]);
1276
+ })
1277
+ );
1278
+ },
1279
+ destroy: () => {
1280
+ removeAndDestroyScope(scope);
1281
+ }
1282
+ };
1283
+ }
1284
+ export {
1285
+ attr,
1286
+ attrTag,
1287
+ attrTags,
1288
+ attrs,
1289
+ attrsEvents,
1290
+ childClosures,
1291
+ classAttr,
1292
+ closure,
1293
+ compat,
1294
+ conditional,
1295
+ conditionalOnlyChild,
1296
+ controllable_detailsOrDialog_open,
1297
+ controllable_detailsOrDialog_open_effect,
1298
+ controllable_input_checked,
1299
+ controllable_input_checkedValue,
1300
+ controllable_input_checkedValue_effect,
1301
+ controllable_input_checked_effect,
1302
+ controllable_input_value,
1303
+ controllable_input_value_effect,
1304
+ controllable_select_value,
1305
+ controllable_select_value_effect,
1306
+ controllable_input_value as controllable_textarea_value,
1307
+ controllable_input_value_effect as controllable_textarea_value_effect,
1308
+ createRenderer,
1309
+ createRendererWithOwner,
1310
+ createScope,
1311
+ createTemplate,
1312
+ data,
1313
+ dynamicClosure,
1314
+ dynamicSubscribers,
1315
+ dynamicTagAttrs,
1316
+ effect,
1317
+ forIn,
1318
+ forOf,
1319
+ forTo,
1320
+ getAbortSignal,
1321
+ html,
1322
+ inChild,
1323
+ inConditionalScope,
1324
+ inLoopScope,
1325
+ init,
1326
+ intersection,
1327
+ intersections,
1328
+ lifecycle,
1329
+ loopIn,
1330
+ loopOf,
1331
+ loopTo,
1332
+ nextTagId,
1333
+ nodeRef,
1334
+ on,
1335
+ partialAttrs,
1336
+ props,
1337
+ register,
1338
+ registerBoundSignal,
1339
+ registerSubscriber,
1340
+ resetAbortSignal,
1341
+ run,
1342
+ setTagVar,
1343
+ setTagVarChange,
1344
+ state,
1345
+ styleAttr,
1346
+ tagVarSignal,
1347
+ tagVarSignalChange,
1348
+ textContent,
1349
+ value
1350
+ };