marko 5.37.6 → 6.0.0-3.12

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