marko 5.37.0 → 6.0.0-3.4

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 (638) 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 +2112 -0
  8. package/dist/debug/dom.mjs +2089 -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 +9143 -489
  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 +33 -74
  124. package/README.md +0 -161
  125. package/bin/markoc +0 -2
  126. package/bin/markoc.js +0 -441
  127. package/browser-refresh.js +0 -5
  128. package/compiler-browser.marko +0 -15
  129. package/compiler.js +0 -7
  130. package/components-browser.marko +0 -15
  131. package/components.js +0 -7
  132. package/dist/build.json +0 -3
  133. package/dist/compiler/config.js +0 -45
  134. package/dist/compiler/index.js +0 -164
  135. package/dist/compiler/modules.js +0 -5
  136. package/dist/core-tags/components/init-components-tag.js +0 -54
  137. package/dist/core-tags/components/preferred-script-location-tag.js +0 -25
  138. package/dist/core-tags/components/preserve-tag.js +0 -1
  139. package/dist/core-tags/core/__flush_here_and_after__.js +0 -44
  140. package/dist/core-tags/core/await/AsyncValue.js +0 -121
  141. package/dist/core-tags/core/await/client-reorder-runtime.js +0 -51
  142. package/dist/core-tags/core/await/index.d.marko +0 -10
  143. package/dist/core-tags/core/await/renderer.js +0 -249
  144. package/dist/core-tags/core/await/reorderer-renderer.js +0 -156
  145. package/dist/index.js +0 -4
  146. package/dist/node-require/browser-refresh.js +0 -18
  147. package/dist/node-require/hot-reload.js +0 -45
  148. package/dist/node-require/index.js +0 -103
  149. package/dist/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  150. package/dist/node_modules/@internal/components-beginComponent/index.js +0 -84
  151. package/dist/node_modules/@internal/components-beginComponent/package.json +0 -11
  152. package/dist/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  153. package/dist/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  154. package/dist/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  155. package/dist/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  156. package/dist/node_modules/@internal/components-endComponent/index.js +0 -11
  157. package/dist/node_modules/@internal/components-endComponent/package.json +0 -11
  158. package/dist/node_modules/@internal/components-entry/index-browser.js +0 -11
  159. package/dist/node_modules/@internal/components-entry/index.js +0 -301
  160. package/dist/node_modules/@internal/components-entry/package.json +0 -11
  161. package/dist/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  162. package/dist/node_modules/@internal/components-entry-legacy/index.js +0 -16
  163. package/dist/node_modules/@internal/components-entry-legacy/package.json +0 -11
  164. package/dist/node_modules/@internal/components-registry/index-browser.js +0 -586
  165. package/dist/node_modules/@internal/components-registry/index.js +0 -44
  166. package/dist/node_modules/@internal/components-registry/package.json +0 -11
  167. package/dist/node_modules/@internal/components-util/index-browser.js +0 -152
  168. package/dist/node_modules/@internal/components-util/index.js +0 -75
  169. package/dist/node_modules/@internal/components-util/package.json +0 -11
  170. package/dist/node_modules/@internal/create-readable/index-browser.js +0 -30
  171. package/dist/node_modules/@internal/create-readable/index.js +0 -57
  172. package/dist/node_modules/@internal/create-readable/package.json +0 -11
  173. package/dist/node_modules/@internal/loader/fallback-node.js +0 -89
  174. package/dist/node_modules/@internal/loader/index-browser.js +0 -2
  175. package/dist/node_modules/@internal/loader/index.js +0 -23
  176. package/dist/node_modules/@internal/loader/package.json +0 -10
  177. package/dist/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  178. package/dist/node_modules/@internal/preserve-tag/index.js +0 -34
  179. package/dist/node_modules/@internal/preserve-tag/package.json +0 -11
  180. package/dist/node_modules/@internal/require/index-browser.js +0 -15
  181. package/dist/node_modules/@internal/require/index-legacy-browser.js +0 -20
  182. package/dist/node_modules/@internal/require/index-webpack.js +0 -16
  183. package/dist/node_modules/@internal/require/index.js +0 -15
  184. package/dist/node_modules/@internal/require/package.json +0 -11
  185. package/dist/node_modules/@internal/set-immediate/index-browser.js +0 -19
  186. package/dist/node_modules/@internal/set-immediate/index-worker.js +0 -31
  187. package/dist/node_modules/@internal/set-immediate/index.js +0 -3
  188. package/dist/node_modules/@internal/set-immediate/package.json +0 -11
  189. package/dist/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  190. package/dist/runtime/RenderResult.js +0 -112
  191. package/dist/runtime/components/Component.js +0 -663
  192. package/dist/runtime/components/ComponentDef.js +0 -169
  193. package/dist/runtime/components/ComponentsContext.js +0 -59
  194. package/dist/runtime/components/GlobalComponentsContext.js +0 -10
  195. package/dist/runtime/components/KeySequence.js +0 -16
  196. package/dist/runtime/components/ServerComponent.js +0 -73
  197. package/dist/runtime/components/State.js +0 -101
  198. package/dist/runtime/components/attach-detach.js +0 -60
  199. package/dist/runtime/components/defineComponent.js +0 -60
  200. package/dist/runtime/components/dom-data.js +0 -8
  201. package/dist/runtime/components/event-delegation.js +0 -144
  202. package/dist/runtime/components/index.js +0 -1
  203. package/dist/runtime/components/legacy/browser.json +0 -9
  204. package/dist/runtime/components/legacy/defineComponent-legacy.js +0 -27
  205. package/dist/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  206. package/dist/runtime/components/legacy/defineWidget-legacy.js +0 -1
  207. package/dist/runtime/components/legacy/dependencies/html.js +0 -3
  208. package/dist/runtime/components/legacy/dependencies/index.js +0 -177
  209. package/dist/runtime/components/legacy/dependencies/vdom.js +0 -3
  210. package/dist/runtime/components/legacy/index.js +0 -1
  211. package/dist/runtime/components/legacy/jquery.js +0 -52
  212. package/dist/runtime/components/legacy/ready.js +0 -152
  213. package/dist/runtime/components/legacy/renderer-legacy.js +0 -231
  214. package/dist/runtime/components/registry.js +0 -1
  215. package/dist/runtime/components/renderer.js +0 -236
  216. package/dist/runtime/components/update-manager.js +0 -94
  217. package/dist/runtime/createOut.js +0 -13
  218. package/dist/runtime/dom-insert.js +0 -77
  219. package/dist/runtime/events.js +0 -2
  220. package/dist/runtime/helpers/_change-case.js +0 -45
  221. package/dist/runtime/helpers/assign.js +0 -21
  222. package/dist/runtime/helpers/attr-tag.js +0 -43
  223. package/dist/runtime/helpers/class-value.js +0 -30
  224. package/dist/runtime/helpers/dynamic-tag.js +0 -181
  225. package/dist/runtime/helpers/empty-component.js +0 -1
  226. package/dist/runtime/helpers/merge.js +0 -13
  227. package/dist/runtime/helpers/of-fallback.js +0 -4
  228. package/dist/runtime/helpers/render-tag.js +0 -20
  229. package/dist/runtime/helpers/serialize-noop.js +0 -5
  230. package/dist/runtime/helpers/style-value.js +0 -45
  231. package/dist/runtime/helpers/tags-compat/dom-debug.js +0 -1
  232. package/dist/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  233. package/dist/runtime/helpers/tags-compat/dom.js +0 -1
  234. package/dist/runtime/helpers/tags-compat/dom.mjs +0 -4
  235. package/dist/runtime/helpers/tags-compat/html-debug.js +0 -3
  236. package/dist/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  237. package/dist/runtime/helpers/tags-compat/html.js +0 -3
  238. package/dist/runtime/helpers/tags-compat/html.mjs +0 -4
  239. package/dist/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  240. package/dist/runtime/helpers/tags-compat/runtime-html.js +0 -136
  241. package/dist/runtime/helpers/to-string.js +0 -5
  242. package/dist/runtime/html/AsyncStream.js +0 -805
  243. package/dist/runtime/html/BufferedWriter.js +0 -52
  244. package/dist/runtime/html/StringWriter.js +0 -73
  245. package/dist/runtime/html/helpers/_dynamic-attr.js +0 -35
  246. package/dist/runtime/html/helpers/attr.js +0 -80
  247. package/dist/runtime/html/helpers/attrs.js +0 -26
  248. package/dist/runtime/html/helpers/class-attr.js +0 -8
  249. package/dist/runtime/html/helpers/data-marko.js +0 -36
  250. package/dist/runtime/html/helpers/escape-quotes.js +0 -35
  251. package/dist/runtime/html/helpers/escape-script-placeholder.js +0 -24
  252. package/dist/runtime/html/helpers/escape-style-placeholder.js +0 -22
  253. package/dist/runtime/html/helpers/escape-xml.js +0 -21
  254. package/dist/runtime/html/helpers/merge-attrs.js +0 -55
  255. package/dist/runtime/html/helpers/props-script.js +0 -32
  256. package/dist/runtime/html/helpers/style-attr.js +0 -8
  257. package/dist/runtime/html/hot-reload.js +0 -26
  258. package/dist/runtime/html/index.js +0 -33
  259. package/dist/runtime/html/marko-namespace.js +0 -3
  260. package/dist/runtime/renderable.js +0 -194
  261. package/dist/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  262. package/dist/runtime/vdom/VComment.js +0 -24
  263. package/dist/runtime/vdom/VComponent.js +0 -17
  264. package/dist/runtime/vdom/VDocumentFragment.js +0 -34
  265. package/dist/runtime/vdom/VElement.js +0 -375
  266. package/dist/runtime/vdom/VFragment.js +0 -26
  267. package/dist/runtime/vdom/VNode.js +0 -100
  268. package/dist/runtime/vdom/VText.js +0 -25
  269. package/dist/runtime/vdom/helpers/attrs.js +0 -62
  270. package/dist/runtime/vdom/helpers/const-element.js +0 -25
  271. package/dist/runtime/vdom/helpers/merge-attrs.js +0 -16
  272. package/dist/runtime/vdom/hot-reload.js +0 -115
  273. package/dist/runtime/vdom/index.js +0 -30
  274. package/dist/runtime/vdom/is-text-only.js +0 -10
  275. package/dist/runtime/vdom/marko-namespace.js +0 -3
  276. package/dist/runtime/vdom/morphdom/fragment.js +0 -95
  277. package/dist/runtime/vdom/morphdom/helpers.js +0 -42
  278. package/dist/runtime/vdom/morphdom/index.js +0 -741
  279. package/dist/runtime/vdom/parse-html.js +0 -18
  280. package/dist/runtime/vdom/vdom.js +0 -88
  281. package/dist/taglib/index.js +0 -51
  282. package/dist/translator/cdata/index.js +0 -15
  283. package/dist/translator/cdata/index[html].js +0 -15
  284. package/dist/translator/cdata/index[vdom].js +0 -12
  285. package/dist/translator/class.js +0 -65
  286. package/dist/translator/comment/index.js +0 -15
  287. package/dist/translator/comment/index[html].js +0 -17
  288. package/dist/translator/comment/index[vdom].js +0 -3
  289. package/dist/translator/declaration/index.js +0 -15
  290. package/dist/translator/declaration/index[html].js +0 -12
  291. package/dist/translator/declaration/index[vdom].js +0 -3
  292. package/dist/translator/document-type/index.js +0 -15
  293. package/dist/translator/document-type/index[html].js +0 -12
  294. package/dist/translator/document-type/index[vdom].js +0 -3
  295. package/dist/translator/placeholder/index.js +0 -15
  296. package/dist/translator/placeholder/index[html].js +0 -93
  297. package/dist/translator/placeholder/index[vdom].js +0 -22
  298. package/dist/translator/scriptlet.js +0 -4
  299. package/dist/translator/tag/attribute/directives/class.js +0 -42
  300. package/dist/translator/tag/attribute/directives/index.js +0 -15
  301. package/dist/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  302. package/dist/translator/tag/attribute/directives/no-update-body.js +0 -10
  303. package/dist/translator/tag/attribute/directives/no-update-if.js +0 -12
  304. package/dist/translator/tag/attribute/directives/no-update.js +0 -48
  305. package/dist/translator/tag/attribute/directives/style.js +0 -42
  306. package/dist/translator/tag/attribute/index.js +0 -150
  307. package/dist/translator/tag/attribute/modifiers/index.js +0 -7
  308. package/dist/translator/tag/attribute/modifiers/no-update.js +0 -14
  309. package/dist/translator/tag/attribute/modifiers/scoped.js +0 -23
  310. package/dist/translator/tag/attribute-tag.js +0 -149
  311. package/dist/translator/tag/custom-tag.js +0 -146
  312. package/dist/translator/tag/dynamic-tag.js +0 -74
  313. package/dist/translator/tag/index.js +0 -287
  314. package/dist/translator/tag/macro-tag.js +0 -7
  315. package/dist/translator/tag/native-tag.js +0 -27
  316. package/dist/translator/tag/native-tag[html]/attributes.js +0 -151
  317. package/dist/translator/tag/native-tag[html]/index.js +0 -221
  318. package/dist/translator/tag/native-tag[vdom]/attributes.js +0 -105
  319. package/dist/translator/tag/native-tag[vdom]/index.js +0 -189
  320. package/dist/translator/tag/util.js +0 -246
  321. package/dist/translator/taglib/core/conditional/translate-else-if.js +0 -20
  322. package/dist/translator/taglib/core/conditional/translate-else.js +0 -20
  323. package/dist/translator/taglib/core/conditional/translate-if.js +0 -8
  324. package/dist/translator/taglib/core/conditional/util.js +0 -41
  325. package/dist/translator/taglib/core/index.js +0 -474
  326. package/dist/translator/taglib/core/macro/parse.js +0 -17
  327. package/dist/translator/taglib/core/macro/translate.js +0 -48
  328. package/dist/translator/taglib/core/parse-class.js +0 -79
  329. package/dist/translator/taglib/core/parse-export.js +0 -14
  330. package/dist/translator/taglib/core/parse-import.js +0 -14
  331. package/dist/translator/taglib/core/parse-module-code.js +0 -18
  332. package/dist/translator/taglib/core/parse-static.js +0 -18
  333. package/dist/translator/taglib/core/transform-style.js +0 -66
  334. package/dist/translator/taglib/core/translate-await.js +0 -41
  335. package/dist/translator/taglib/core/translate-body.js +0 -17
  336. package/dist/translator/taglib/core/translate-for.js +0 -156
  337. package/dist/translator/taglib/core/translate-html-comment.js +0 -52
  338. package/dist/translator/taglib/core/translate-include-content.js +0 -53
  339. package/dist/translator/taglib/core/translate-server-only.js +0 -5
  340. package/dist/translator/taglib/core/translate-while.js +0 -32
  341. package/dist/translator/taglib/index.js +0 -6
  342. package/dist/translator/taglib/migrate/all-templates.js +0 -46
  343. package/dist/translator/taglib/migrate/index.js +0 -5
  344. package/dist/translator/text/index.js +0 -10
  345. package/dist/translator/text/index[html].js +0 -12
  346. package/dist/translator/text/index[vdom].js +0 -20
  347. package/dist/translator/util/add-dependencies.js +0 -329
  348. package/dist/translator/util/escape-regexp.js +0 -4
  349. package/dist/translator/util/get-component-files.js +0 -86
  350. package/dist/translator/util/html-out-write.js +0 -15
  351. package/dist/translator/util/key-manager.js +0 -176
  352. package/dist/translator/util/optimize-html-writes.js +0 -52
  353. package/dist/translator/util/optimize-vdom-create.js +0 -164
  354. package/dist/translator/util/plugin-hooks.js +0 -22
  355. package/dist/translator/util/runtime-flags.js +0 -3
  356. package/dist/translator/util/vdom-out-write.js +0 -10
  357. package/dist/translator/util/with-previous-location.js +0 -6
  358. package/docs/10-awesome-marko-features.md +0 -291
  359. package/docs/body-content.md +0 -355
  360. package/docs/class-components.md +0 -1001
  361. package/docs/cloudflare-workers.md +0 -32
  362. package/docs/compiler-hooks.png +0 -0
  363. package/docs/compiler.md +0 -473
  364. package/docs/component-diagram.afdesign +0 -0
  365. package/docs/component-diagram.svg +0 -87
  366. package/docs/concise.md +0 -141
  367. package/docs/conditionals-and-lists.md +0 -72
  368. package/docs/core-tags.md +0 -325
  369. package/docs/custom-tags.md +0 -201
  370. package/docs/editor-plugins.md +0 -45
  371. package/docs/events.md +0 -131
  372. package/docs/express.md +0 -66
  373. package/docs/fastify.md +0 -65
  374. package/docs/getting-started.md +0 -95
  375. package/docs/http.md +0 -34
  376. package/docs/icons/js.svg +0 -4
  377. package/docs/icons/marko.svg +0 -1
  378. package/docs/icons/ts.svg +0 -1
  379. package/docs/installing.md +0 -51
  380. package/docs/koa.md +0 -35
  381. package/docs/lasso.md +0 -196
  382. package/docs/marko-5-upgrade.md +0 -59
  383. package/docs/marko-json.md +0 -248
  384. package/docs/marko-vs-react.md +0 -854
  385. package/docs/redux.md +0 -61
  386. package/docs/rendering.md +0 -268
  387. package/docs/rollup.md +0 -352
  388. package/docs/state.md +0 -105
  389. package/docs/structure.json +0 -49
  390. package/docs/styles.md +0 -29
  391. package/docs/syntax.md +0 -601
  392. package/docs/troubleshooting-streaming.md +0 -68
  393. package/docs/typescript.md +0 -406
  394. package/docs/vite.md +0 -86
  395. package/docs/webpack.md +0 -205
  396. package/docs/why-is-marko-fast.md +0 -239
  397. package/env.js +0 -7
  398. package/helpers/README.md +0 -3
  399. package/helpers/empty.js +0 -4
  400. package/helpers/notEmpty.js +0 -11
  401. package/index-browser.marko +0 -15
  402. package/index.d.ts +0 -375
  403. package/index.js +0 -7
  404. package/legacy-components-browser.marko +0 -15
  405. package/legacy-components.js +0 -7
  406. package/node-require.js +0 -8
  407. package/src/build.json +0 -3
  408. package/src/compiler/config.js +0 -45
  409. package/src/compiler/index.js +0 -164
  410. package/src/compiler/modules.js +0 -5
  411. package/src/core-tags/.eslintrc +0 -5
  412. package/src/core-tags/components/init-components-tag.js +0 -54
  413. package/src/core-tags/components/preferred-script-location-tag.js +0 -25
  414. package/src/core-tags/components/preserve-tag.js +0 -1
  415. package/src/core-tags/core/__flush_here_and_after__.js +0 -44
  416. package/src/core-tags/core/await/AsyncValue.js +0 -121
  417. package/src/core-tags/core/await/client-reorder-runtime.js +0 -51
  418. package/src/core-tags/core/await/index.d.marko +0 -10
  419. package/src/core-tags/core/await/renderer.js +0 -249
  420. package/src/core-tags/core/await/reorderer-renderer.js +0 -156
  421. package/src/index.js +0 -4
  422. package/src/node-require/browser-refresh.js +0 -18
  423. package/src/node-require/hot-reload.js +0 -45
  424. package/src/node-require/index.js +0 -103
  425. package/src/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  426. package/src/node_modules/@internal/components-beginComponent/index.js +0 -84
  427. package/src/node_modules/@internal/components-beginComponent/package.json +0 -11
  428. package/src/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  429. package/src/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  430. package/src/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  431. package/src/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  432. package/src/node_modules/@internal/components-endComponent/index.js +0 -11
  433. package/src/node_modules/@internal/components-endComponent/package.json +0 -11
  434. package/src/node_modules/@internal/components-entry/index-browser.js +0 -11
  435. package/src/node_modules/@internal/components-entry/index.js +0 -301
  436. package/src/node_modules/@internal/components-entry/package.json +0 -11
  437. package/src/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  438. package/src/node_modules/@internal/components-entry-legacy/index.js +0 -16
  439. package/src/node_modules/@internal/components-entry-legacy/package.json +0 -11
  440. package/src/node_modules/@internal/components-registry/index-browser.js +0 -586
  441. package/src/node_modules/@internal/components-registry/index.js +0 -44
  442. package/src/node_modules/@internal/components-registry/package.json +0 -11
  443. package/src/node_modules/@internal/components-util/index-browser.js +0 -152
  444. package/src/node_modules/@internal/components-util/index.js +0 -75
  445. package/src/node_modules/@internal/components-util/package.json +0 -11
  446. package/src/node_modules/@internal/create-readable/index-browser.js +0 -30
  447. package/src/node_modules/@internal/create-readable/index.js +0 -57
  448. package/src/node_modules/@internal/create-readable/package.json +0 -11
  449. package/src/node_modules/@internal/loader/fallback-node.js +0 -89
  450. package/src/node_modules/@internal/loader/index-browser.js +0 -2
  451. package/src/node_modules/@internal/loader/index.js +0 -23
  452. package/src/node_modules/@internal/loader/package.json +0 -10
  453. package/src/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  454. package/src/node_modules/@internal/preserve-tag/index.js +0 -34
  455. package/src/node_modules/@internal/preserve-tag/package.json +0 -11
  456. package/src/node_modules/@internal/require/index-browser.js +0 -15
  457. package/src/node_modules/@internal/require/index-legacy-browser.js +0 -20
  458. package/src/node_modules/@internal/require/index-webpack.js +0 -16
  459. package/src/node_modules/@internal/require/index.js +0 -15
  460. package/src/node_modules/@internal/require/package.json +0 -11
  461. package/src/node_modules/@internal/set-immediate/index-browser.js +0 -19
  462. package/src/node_modules/@internal/set-immediate/index-worker.js +0 -31
  463. package/src/node_modules/@internal/set-immediate/index.js +0 -3
  464. package/src/node_modules/@internal/set-immediate/package.json +0 -11
  465. package/src/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  466. package/src/runtime/.eslintrc +0 -5
  467. package/src/runtime/RenderResult.js +0 -112
  468. package/src/runtime/components/Component.js +0 -663
  469. package/src/runtime/components/ComponentDef.js +0 -169
  470. package/src/runtime/components/ComponentsContext.js +0 -59
  471. package/src/runtime/components/GlobalComponentsContext.js +0 -10
  472. package/src/runtime/components/KeySequence.js +0 -16
  473. package/src/runtime/components/ServerComponent.js +0 -73
  474. package/src/runtime/components/State.js +0 -101
  475. package/src/runtime/components/attach-detach.js +0 -60
  476. package/src/runtime/components/defineComponent.js +0 -60
  477. package/src/runtime/components/dom-data.js +0 -8
  478. package/src/runtime/components/event-delegation.js +0 -144
  479. package/src/runtime/components/index.js +0 -1
  480. package/src/runtime/components/legacy/browser.json +0 -9
  481. package/src/runtime/components/legacy/defineComponent-legacy.js +0 -27
  482. package/src/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  483. package/src/runtime/components/legacy/defineWidget-legacy.js +0 -1
  484. package/src/runtime/components/legacy/dependencies/html.js +0 -3
  485. package/src/runtime/components/legacy/dependencies/index.js +0 -177
  486. package/src/runtime/components/legacy/dependencies/vdom.js +0 -3
  487. package/src/runtime/components/legacy/index.js +0 -1
  488. package/src/runtime/components/legacy/jquery.js +0 -52
  489. package/src/runtime/components/legacy/ready.js +0 -152
  490. package/src/runtime/components/legacy/renderer-legacy.js +0 -231
  491. package/src/runtime/components/registry.js +0 -1
  492. package/src/runtime/components/renderer.js +0 -236
  493. package/src/runtime/components/update-manager.js +0 -94
  494. package/src/runtime/createOut.js +0 -13
  495. package/src/runtime/dom-insert.js +0 -77
  496. package/src/runtime/events.js +0 -2
  497. package/src/runtime/helpers/_change-case.js +0 -45
  498. package/src/runtime/helpers/assign.js +0 -21
  499. package/src/runtime/helpers/attr-tag.js +0 -43
  500. package/src/runtime/helpers/class-value.js +0 -30
  501. package/src/runtime/helpers/dynamic-tag.js +0 -181
  502. package/src/runtime/helpers/empty-component.js +0 -1
  503. package/src/runtime/helpers/merge.js +0 -13
  504. package/src/runtime/helpers/of-fallback.js +0 -4
  505. package/src/runtime/helpers/render-tag.js +0 -20
  506. package/src/runtime/helpers/serialize-noop.js +0 -5
  507. package/src/runtime/helpers/style-value.js +0 -45
  508. package/src/runtime/helpers/tags-compat/dom-debug.js +0 -1
  509. package/src/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  510. package/src/runtime/helpers/tags-compat/dom.js +0 -1
  511. package/src/runtime/helpers/tags-compat/dom.mjs +0 -4
  512. package/src/runtime/helpers/tags-compat/html-debug.js +0 -3
  513. package/src/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  514. package/src/runtime/helpers/tags-compat/html.js +0 -3
  515. package/src/runtime/helpers/tags-compat/html.mjs +0 -4
  516. package/src/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  517. package/src/runtime/helpers/tags-compat/runtime-html.js +0 -136
  518. package/src/runtime/helpers/to-string.js +0 -5
  519. package/src/runtime/html/AsyncStream.js +0 -805
  520. package/src/runtime/html/BufferedWriter.js +0 -52
  521. package/src/runtime/html/StringWriter.js +0 -73
  522. package/src/runtime/html/helpers/_dynamic-attr.js +0 -35
  523. package/src/runtime/html/helpers/attr.js +0 -80
  524. package/src/runtime/html/helpers/attrs.js +0 -26
  525. package/src/runtime/html/helpers/class-attr.js +0 -8
  526. package/src/runtime/html/helpers/data-marko.js +0 -36
  527. package/src/runtime/html/helpers/escape-quotes.js +0 -35
  528. package/src/runtime/html/helpers/escape-script-placeholder.js +0 -24
  529. package/src/runtime/html/helpers/escape-style-placeholder.js +0 -22
  530. package/src/runtime/html/helpers/escape-xml.js +0 -21
  531. package/src/runtime/html/helpers/merge-attrs.js +0 -55
  532. package/src/runtime/html/helpers/props-script.js +0 -32
  533. package/src/runtime/html/helpers/style-attr.js +0 -8
  534. package/src/runtime/html/hot-reload.js +0 -26
  535. package/src/runtime/html/index.js +0 -33
  536. package/src/runtime/html/marko-namespace.js +0 -3
  537. package/src/runtime/renderable.js +0 -194
  538. package/src/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  539. package/src/runtime/vdom/VComment.js +0 -24
  540. package/src/runtime/vdom/VComponent.js +0 -17
  541. package/src/runtime/vdom/VDocumentFragment.js +0 -34
  542. package/src/runtime/vdom/VElement.js +0 -375
  543. package/src/runtime/vdom/VFragment.js +0 -26
  544. package/src/runtime/vdom/VNode.js +0 -100
  545. package/src/runtime/vdom/VText.js +0 -25
  546. package/src/runtime/vdom/helpers/attrs.js +0 -62
  547. package/src/runtime/vdom/helpers/const-element.js +0 -25
  548. package/src/runtime/vdom/helpers/merge-attrs.js +0 -16
  549. package/src/runtime/vdom/hot-reload.js +0 -115
  550. package/src/runtime/vdom/index.js +0 -30
  551. package/src/runtime/vdom/is-text-only.js +0 -10
  552. package/src/runtime/vdom/marko-namespace.js +0 -3
  553. package/src/runtime/vdom/morphdom/fragment.js +0 -95
  554. package/src/runtime/vdom/morphdom/helpers.js +0 -42
  555. package/src/runtime/vdom/morphdom/index.js +0 -741
  556. package/src/runtime/vdom/parse-html.js +0 -18
  557. package/src/runtime/vdom/vdom.js +0 -88
  558. package/src/taglib/index.js +0 -51
  559. package/src/translator/cdata/index.js +0 -15
  560. package/src/translator/cdata/index[html].js +0 -15
  561. package/src/translator/cdata/index[vdom].js +0 -12
  562. package/src/translator/class.js +0 -65
  563. package/src/translator/comment/index.js +0 -15
  564. package/src/translator/comment/index[html].js +0 -17
  565. package/src/translator/comment/index[vdom].js +0 -3
  566. package/src/translator/declaration/index.js +0 -15
  567. package/src/translator/declaration/index[html].js +0 -12
  568. package/src/translator/declaration/index[vdom].js +0 -3
  569. package/src/translator/document-type/index.js +0 -15
  570. package/src/translator/document-type/index[html].js +0 -12
  571. package/src/translator/document-type/index[vdom].js +0 -3
  572. package/src/translator/index.js +0 -551
  573. package/src/translator/placeholder/index.js +0 -15
  574. package/src/translator/placeholder/index[html].js +0 -93
  575. package/src/translator/placeholder/index[vdom].js +0 -22
  576. package/src/translator/scriptlet.js +0 -4
  577. package/src/translator/tag/attribute/directives/class.js +0 -42
  578. package/src/translator/tag/attribute/directives/index.js +0 -15
  579. package/src/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  580. package/src/translator/tag/attribute/directives/no-update-body.js +0 -10
  581. package/src/translator/tag/attribute/directives/no-update-if.js +0 -12
  582. package/src/translator/tag/attribute/directives/no-update.js +0 -48
  583. package/src/translator/tag/attribute/directives/style.js +0 -42
  584. package/src/translator/tag/attribute/index.js +0 -150
  585. package/src/translator/tag/attribute/modifiers/index.js +0 -7
  586. package/src/translator/tag/attribute/modifiers/no-update.js +0 -14
  587. package/src/translator/tag/attribute/modifiers/scoped.js +0 -23
  588. package/src/translator/tag/attribute-tag.js +0 -149
  589. package/src/translator/tag/custom-tag.js +0 -146
  590. package/src/translator/tag/dynamic-tag.js +0 -74
  591. package/src/translator/tag/index.js +0 -287
  592. package/src/translator/tag/macro-tag.js +0 -7
  593. package/src/translator/tag/native-tag.js +0 -27
  594. package/src/translator/tag/native-tag[html]/attributes.js +0 -151
  595. package/src/translator/tag/native-tag[html]/index.js +0 -221
  596. package/src/translator/tag/native-tag[vdom]/attributes.js +0 -105
  597. package/src/translator/tag/native-tag[vdom]/index.js +0 -189
  598. package/src/translator/tag/util.js +0 -246
  599. package/src/translator/taglib/core/conditional/translate-else-if.js +0 -20
  600. package/src/translator/taglib/core/conditional/translate-else.js +0 -20
  601. package/src/translator/taglib/core/conditional/translate-if.js +0 -8
  602. package/src/translator/taglib/core/conditional/util.js +0 -41
  603. package/src/translator/taglib/core/index.js +0 -474
  604. package/src/translator/taglib/core/macro/parse.js +0 -17
  605. package/src/translator/taglib/core/macro/translate.js +0 -48
  606. package/src/translator/taglib/core/parse-class.js +0 -79
  607. package/src/translator/taglib/core/parse-export.js +0 -14
  608. package/src/translator/taglib/core/parse-import.js +0 -14
  609. package/src/translator/taglib/core/parse-module-code.js +0 -18
  610. package/src/translator/taglib/core/parse-static.js +0 -18
  611. package/src/translator/taglib/core/transform-style.js +0 -66
  612. package/src/translator/taglib/core/translate-await.js +0 -41
  613. package/src/translator/taglib/core/translate-body.js +0 -17
  614. package/src/translator/taglib/core/translate-for.js +0 -156
  615. package/src/translator/taglib/core/translate-html-comment.js +0 -52
  616. package/src/translator/taglib/core/translate-include-content.js +0 -53
  617. package/src/translator/taglib/core/translate-server-only.js +0 -5
  618. package/src/translator/taglib/core/translate-while.js +0 -32
  619. package/src/translator/taglib/index.js +0 -7
  620. package/src/translator/taglib/migrate/all-templates.js +0 -46
  621. package/src/translator/taglib/migrate/index.js +0 -5
  622. package/src/translator/text/index.js +0 -10
  623. package/src/translator/text/index[html].js +0 -12
  624. package/src/translator/text/index[vdom].js +0 -20
  625. package/src/translator/util/add-dependencies.js +0 -329
  626. package/src/translator/util/escape-regexp.js +0 -4
  627. package/src/translator/util/get-component-files.js +0 -86
  628. package/src/translator/util/html-out-write.js +0 -15
  629. package/src/translator/util/key-manager.js +0 -176
  630. package/src/translator/util/optimize-html-writes.js +0 -52
  631. package/src/translator/util/optimize-vdom-create.js +0 -164
  632. package/src/translator/util/plugin-hooks.js +0 -22
  633. package/src/translator/util/runtime-flags.js +0 -3
  634. package/src/translator/util/vdom-out-write.js +0 -10
  635. package/src/translator/util/with-previous-location.js +0 -6
  636. package/tags-html.d.ts +0 -3855
  637. package/translator/index.d.ts +0 -7
  638. 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];
648
+ syncControllable(
649
+ el,
650
+ el.tagName === "DIALOG" ? "close" : "toggle",
651
+ () => scope[nodeAccessor + ";" /* ControlledHandler */] && el.open !== scope[nodeAccessor + ":" /* ControlledValue */],
652
+ () => {
653
+ let openChange = scope[nodeAccessor + ";" /* ControlledHandler */];
654
+ openChange && (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
+ };