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/docs/concise.md DELETED
@@ -1,141 +0,0 @@
1
- # Concise syntax
2
-
3
- Marko's concise syntax is very similar to the HTML syntax, except it's more... concise. Essentially, you take an HTML tag, remove the angle brackets (`<>`) and use indentation rather than a closing tag:
4
-
5
- _input.marko_
6
-
7
- ```marko
8
- div class="thumbnail"
9
- img src="https://example.com/thumb.png"
10
- ```
11
-
12
- _output.html_
13
-
14
- ```html
15
- <div class="thumbnail"><img src="https://example.com/thumb.png" /></div>
16
- ```
17
-
18
- ## Shorthand attributes
19
-
20
- Marko provides a shorthand for declaring classes and ids on an element:
21
-
22
- _input.marko_
23
-
24
- ```marko
25
- div.my-class
26
- span#my-id
27
- button#submit.primary.large
28
- ```
29
-
30
- Yields this HTML:
31
-
32
- _output.html_
33
-
34
- ```html
35
- <div class="my-class"></div>
36
- <span id="my-id"></span> <button id="submit" class="primary large"></button>
37
- ```
38
-
39
- > **ProTip:** These shorthand attributes are available within the HTML syntax as well
40
-
41
- ## Attributes on multiple lines
42
-
43
- If a component has lots of attributes, you can spread them across multiple lines by surrounding them with square brackets
44
-
45
- _input.marko_
46
-
47
- ```marko
48
- div [
49
- id="hello"
50
- class=["class1", "class2", "class3"]
51
- style={ border: "1px solid red" }
52
- ] -- hello
53
- ```
54
-
55
- _output.html_
56
-
57
- ```html
58
- <div id="hello" class="class1 class2 class3" style="border:1px solid red">
59
- hello
60
- </div>
61
- ```
62
-
63
- ## Text
64
-
65
- Text in concise mode is denoted by two or more dashes (`--`).
66
-
67
- If there is text on the same line following `--`, it is single-line text:
68
-
69
- _single-line-text.marko_
70
-
71
- ```marko
72
- -- Hello world
73
- ```
74
-
75
- The dashes can also follow an element to give it a single text node as a child
76
-
77
- _single-line-text.marko_
78
-
79
- ```marko
80
- div -- Hello world
81
- ```
82
-
83
- If there is a line break immediately following `--`, everything following the `--` at the current indentation is parsed as multi-line line text.
84
-
85
- _multi-line-text.marko_
86
-
87
- ```marko
88
- div
89
- --
90
- Hello world
91
- this text
92
- is multi-line
93
-
94
- div
95
- --
96
- this is more
97
- text
98
- ```
99
-
100
- A multi-line text block can be ended by the same number of dashes that opened it. This allows it to have siblings:
101
-
102
- _multi-line-text.marko_
103
-
104
- ```marko
105
- div
106
- img src="https://example.com/photo.png"
107
- --
108
- Hello world
109
- this text
110
- is multi-line
111
- --
112
- span -- text after
113
- ```
114
-
115
- ### Root level text
116
-
117
- There is one "gotcha" that you need to be aware of. The Marko parser starts out in the concise mode. Therefore, given the following template:
118
-
119
- _input.marko_
120
-
121
- ```marko
122
- Hello World
123
- Welcome to Marko
124
- ```
125
-
126
- The output would be the following:
127
-
128
- _output.html_
129
-
130
- ```html
131
- <Hello World></Hello> <Welcome to Marko></Welcome>
132
- ```
133
-
134
- Instead, prefix the lines with `--` so they are parsed as text:
135
-
136
- _input.marko_
137
-
138
- ```marko
139
- -- Hello World
140
- -- Welcome to Marko
141
- ```
@@ -1,72 +0,0 @@
1
- # Conditionals and Lists
2
-
3
- While HTML itself does not support conditionally displaying elements or repeating elements, it is a critical part of building any web application. In Marko, this functionality is provided by the `<if>` and `<for>` tags.
4
-
5
- ## Conditionals
6
-
7
- The `<if>` tag receives an [argument](./syntax.md#arguments) which is used to determine if its body content should be present.
8
-
9
- ```marko
10
- <if(user.loggedOut)>
11
- <a href="/login">Log in</a>
12
- </if>
13
- ```
14
-
15
- As you might expect, there are also `<else>` and `<else-if>` tags as well:
16
-
17
- ```marko
18
- <if(user.loggedOut)>
19
- <a href="/login">Log in</a>
20
- </if>
21
- <else-if(!user.trappedForever)>
22
- <a href="/logout">Log out</a>
23
- </else-if>
24
- <else>
25
- Hey ${user.name}!
26
- </else>
27
- ```
28
-
29
- ## Lists
30
-
31
- If you have a list of data and need to represent it in the UI, the `<for>` tag is probably what you're looking for. The `<for>` tag passes each item and its index to its body as [parameters](./syntax.md#parameters).
32
-
33
- ```marko
34
- <ul>
35
- <for|color, index| of=colors>
36
- <li>${index}: ${color}</li>
37
- </for>
38
- </ul>
39
- ```
40
-
41
- The `<for>` tag actually support 3 different flavors:
42
-
43
- - [`<for|item, index, array| of=array>`](./core-tags.md#iterating-over-a-list) renders its body for each item of an array. It's similar to the JavaScript [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) loop.
44
- - [`<for|key, value| in=object>`](./core-tags.md#iterating-over-an-objects-properties) renders its body for each property in an object. It's similar to the JavaScript [`for...in`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in) loop.
45
- - [`<for|value| from=first to=last step=increment>`](./core-tags.md#iterating-between-a-range-of-numbers) renders its body for each value in between and including `from` and `to`.
46
-
47
- ### Always set a `key`
48
-
49
- Marko automatically keeps your UI in sync with the state behind it, but one place where it needs a little extra help is repeated content. Specifying keys gives Marko a way to identify items in a list and keep track of which items have been changed, added, or removed.
50
-
51
- A key should be a string or number that uniquely identifies an item in the list and differentiates it from its siblings. The same key value should never be used twice! Often, you will use something like an `id` property.
52
-
53
- ```marko
54
- <for|user| of=users>
55
- <user-card key=user.id data=user/>
56
- </for>
57
- ```
58
-
59
- > **ProTip:** If you have multiple tags underneath `<for>`, you can key only the first tag and that is enough to properly identify its siblings as well
60
- >
61
- > ```marko
62
- > <dl>
63
- > <for|entry| of=entries>
64
- > <!-- only the first tag needs a key -->
65
- > <dt key=entry.id>${entry.word}</dt>
66
- > <!-- This key can be omitted -->
67
- > <dd>${entry.definition}</dd>
68
- > </for>
69
- > </dl>
70
- > ```
71
-
72
- > **Note:** If a key is not set, Marko will use the index of an item as its key. However this only works perfectly if items are only ever added or removed at the end of a list. Here's an example where things break down: if we have a list of `["A", "B", "C"]` and reverse the order, index keys would cause "A" to be transformed into "C" (and "C" into "A"), rather than just swapping them. Additionally if these components contained state, the new "C" would contain the state from the old "A" (and vice-versa). Be aware, stateful components include tags like the native `<input>` element. For this reason **it is always recommended to set a `key` on tags in a `<for>`.**
package/docs/core-tags.md DELETED
@@ -1,325 +0,0 @@
1
- # Core tags and attributes
2
-
3
- Much like [HTML has its own native tags](https://developer.mozilla.org/en-US/docs/Web/HTML/Element), Marko includes **core tags** and **global attributes** for declaratively building modern applications.
4
-
5
- ## `<if>`, `<else-if>`, `<else>`
6
-
7
- Like the [equivalent JavaScript statements](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else), these tags render [conditional content](./conditionals-and-lists.md#conditionals):
8
-
9
- ```marko
10
- <if(arriving)>
11
- Hey there
12
- </if>
13
- <else-if(leaving)>
14
- Bye now
15
- </else-if>
16
- <else>
17
- What’s up?
18
- </else>
19
- ```
20
-
21
- They support any JavaScript expression in their [tag arguments](./syntax.md#arguments):
22
-
23
- ```marko
24
- <if(Math.random() > 0.5)>
25
- <p>50% chance to see this</p>
26
- </if>
27
- ```
28
-
29
- ## `<for>`
30
-
31
- The `<for>` tag iterates over [arrays/array-likes](#iterating-over-a-list), [object properties](#iterating-over-an-objects-properties), and [ranges of numbers](#iterating-between-a-range-of-numbers).
32
-
33
- ### Iterating over a list
34
-
35
- Like the [JavaScript `for...of` loop statement](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of), giving `<for>`’s `of` attribute a value will loop over that value as an array or iterable.
36
-
37
- The current **item**, **index**, and the **iterating list** are provided as [tag parameters](./syntax.md#parameters):
38
-
39
- ```marko
40
- $ const colors = ["red", "green", "blue"];
41
- <ol>
42
- <for|color, index, colorList| of=colors>
43
- <li value=index>${color}</li>
44
- </for>
45
- </ol>
46
- ```
47
-
48
- The output HTML would be:
49
-
50
- ```html
51
- <ol>
52
- <li value="0">red</li>
53
- <li value="1">green</li>
54
- <li value="2">blue</li>
55
- </ol>
56
- ```
57
-
58
- > **Pro Tip**: `<for>`’s `of` attribute can loop over any iterable, just like JavaScript’s [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of). This includes strings, `NodeList`s, `Set`s… any object with zero-indexed numeric properties and a `.length`, basically.
59
-
60
- ### Iterating over an object’s properties
61
-
62
- Like [JavaScript’s `for...in` loop statement](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in), giving `<for>` an object as its `in` attribute will loop over that object’s properties.
63
-
64
- The current **property name** and **property value** are provided as [tag parameters](./syntax.md#parameters):
65
-
66
- ```marko
67
- $ const settings = {
68
- "Dark Mode": false,
69
- "Fullscreen": true
70
- };
71
-
72
- <dl>
73
- <for|name, enabled| in=settings>
74
- <dt>${name}:</dt>
75
- <dd>${enabled ? "on" : "off"}</dd>
76
- </for>
77
- </dl>
78
- ```
79
-
80
- The output HTML would be:
81
-
82
- ```html
83
- <dl>
84
- <dt>Dark Mode:</dt>
85
- <dd>off</dd>
86
- <dt>Fullscreen:</dt>
87
- <dd>on</dd>
88
- </dl>
89
- ```
90
-
91
- ### Iterating between a range of numbers
92
-
93
- The final `<for>` variant loops between two numbers, by providing `from` and `to` attributes. The current number in the range will be provided as a [tag parameter](./syntax.md#parameters):
94
-
95
- ```marko
96
- <ol type="I">
97
- <for|i| from=0 to=10>
98
- <li value=i>${i}</li>
99
- </for>
100
- </ol>
101
- ```
102
-
103
- You can also pass an optional `step` attribute, which defaults to 1 otherwise. `step` lets you increment by a specific amount:
104
-
105
- ```marko
106
- <ol type="I">
107
- <for|i| from=0 to=10 step=2>
108
- <li value=i>${i}</li>
109
- </for>
110
- </ol>
111
- ```
112
-
113
- …becomes:
114
-
115
- ```marko
116
- <ol type="I">
117
- <li value="0">0</li>
118
- <li value="2">2</li>
119
- <li value="4">4</li>
120
- <li value="6">6</li>
121
- <li value="8">8</li>
122
- <li value="10">10</li>
123
- </ol>
124
- ```
125
-
126
- > **ProTip:** This syntax is for generating numbers from nothing. Don’t use it to iterate over an object, like so:
127
- >
128
- > ```marko
129
- > <!-- Inefficient code, do not copy -->
130
- > <ul>
131
- > <for|i| from=0 to=(myArray.length - 1)>
132
- > <li>${myArray[i]}</li>
133
- > </for>
134
- > </ul>
135
- > ```
136
- >
137
- > Use [`<for of>`](#iterating-over-a-list) instead.
138
-
139
- ## `<while>`
140
-
141
- > **Warning:** Using `<while>` is not recommended. Instead, replicate it with [an iterable and `<for>`](#iterating-over-a-list).
142
- >
143
- > In the future, Marko may restrict value mutation during rendering, for runtime optimizations.
144
-
145
- You can repeat a chunk of markup _until a condition is met_ with the `while` tag:
146
-
147
- ```marko
148
- $ let n = 0;
149
-
150
- <while(n < 4)>
151
- <p>${n++}</p>
152
- </while>
153
- ```
154
-
155
- …becomes:
156
-
157
- ```html
158
- <p>0</p>
159
- <p>1</p>
160
- <p>2</p>
161
- <p>3</p>
162
- ```
163
-
164
- ## `<macro>`
165
-
166
- Macros create reusable markup fragments for later use in the same template they were defined in.
167
-
168
- The `<macro>` tag defines a macro as a tag via the `name` attribute. For example, the following macro is registered as the `<greeting>` tag:
169
-
170
- ```marko
171
- <macro name="greeting">
172
- <p>Welcome!</p>
173
- </macro>
174
-
175
- <greeting/>
176
- <greeting/>
177
- ```
178
-
179
- …the output HTML would be:
180
-
181
- ```html
182
- <p>Welcome!</p>
183
- <p>Welcome!</p>
184
- ```
185
-
186
- Macros become more useful with [tag parameters](./syntax.md#parameters), allowing complex templates. In this next example, `<greeting>` can now receive `firstName` and `count` parameters from its parent:
187
-
188
- ```marko
189
- <macro|{ firstName, count }| name="greeting">
190
- <p>Hello ${firstName}!
191
- <output>You have ${count} new messages.</output>
192
- </p>
193
- </macro>
194
-
195
- <greeting firstName="Frank" count=20/>
196
- ```
197
-
198
- …the output HTML would be:
199
-
200
- ```html
201
- <p>
202
- Hello Frank!
203
- <output>You have 20 new messages.</output>
204
- </p>
205
- ```
206
-
207
- Macros receive input like components do, including [a `renderBody` for provided body content](./body-content.md):
208
-
209
- ```marko
210
- <macro|{ renderBody }| name="special-heading">
211
- <h1>
212
- <${renderBody}/>!
213
- </h1>
214
- </macro>
215
-
216
- <special-heading>
217
- Hello
218
- </special-heading>
219
- ```
220
-
221
- …the output HTML would be:
222
-
223
- ```html
224
- <h1>Hello!</h1>
225
- ```
226
-
227
- > **ProTip:** You can use a macro inside itself for recursive layouts, like displaying directory contents.
228
-
229
- ## `<await>`
230
-
231
- The `<await>` tag **renders markup asynchronously using a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)**.
232
-
233
- - Its `<@then>` [attribute tag](./syntax.md#attribute-tag) displays when the Promise _resolves_, optionally receiving the resolved value as a [tag parameter](./syntax.md#parameters).
234
- - Its `<@catch>` attribute tag displays when the Promise _rejects_, optionally receiving the rejected value as a tag parameter.
235
- - Its optional `<@placeholder>` attribute tag displays while the Promise is pending.
236
-
237
- ```marko
238
- $ const personPromise = new Promise((resolve, reject) => {
239
- setTimeout(() => resolve({ name: 'Frank' }), 1000);
240
- });
241
-
242
- <await(personPromise) client-reorder=true>
243
- <@placeholder>
244
- <!-- Displays while promise is pending -->
245
- <label>Loading…
246
- <progress></progress>
247
- </label>
248
- </@placeholder>
249
-
250
- <@then|person|>
251
- <!-- Displays if promise resolves -->
252
- <p>Hello ${person.name}!</p>
253
- </@then>
254
-
255
- <@catch|err|>
256
- <!-- Displays if promise rejects -->
257
- ${err.name} error: ${err.message}
258
- </@catch>
259
- </await>
260
- ```
261
-
262
- Optional attributes for `<await>`:
263
-
264
- | Attribute | Type | Description |
265
- | ---------------: | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
266
- | `timeout` | integer | An optional timeout. If reached, rejects the promise with a `TimeoutError`. |
267
- | `name` | string | Improves debugging and ensures ordering with the `show-after` attribute. |
268
- | `show-after` | string | Another `<await>` tag’s `name`. Use with `client-reorder` to ensure that the current `<await>` will always render alongside or after the named `<await>`. |
269
- | `client-reorder` | boolean | If true, anything after this `<await>` will be server-rendered before the Promise completes, then the fulfilled Promise’s result will be updated with client-side JavaScript. |
270
-
271
- Regardless of these attributes, the promise is executed as eagerly as possible. The attributes control how to coordinate rendering with the rest of the page:
272
-
273
- - `client-reorder` prevents `<await>` blocks from delaying the HTTP stream, at the expense of making their rendering rely on client-side JS. Useful for making non-critical page sections not block HTML streaming of important content.
274
-
275
- - Using `show-after` with `client-reorder` ensures that the current `<await>` block will always render simultaneously with or after the named `<await>`. Useful for cutting down on [layout shift](https://web.dev/debug-layout-shifts/). `<@placeholder>`s can help fine-tune the user experience while loading.
276
-
277
- - `timeout` is useful for limiting non-critical content from slowing down the rest of the page too much.
278
-
279
- > **Pro Tip**: When using `timeout`, you can distinguish between `TimeoutError`s and promise rejections by checking the error’s `name`:
280
- >
281
- > ```marko
282
- > <await(slowPromise) timeout=5000>
283
- > <@then>Done</@then>
284
- > <@catch|err|>
285
- > <if(err.name === "TimeoutError")>
286
- > Took too long to fetch the data!
287
- > </if>
288
- > <else>
289
- > Promise failed with ${err.message}.
290
- > </else>
291
- > </@catch>
292
- > </await>
293
- > ```
294
-
295
- ## `<include-text>`
296
-
297
- `<include-text>` inlines text files into a template, escaping HTML syntax characters (`<`, `"`, etc.).
298
-
299
- ```marko
300
- <include-text('./foo.txt')/>
301
- ```
302
-
303
- If you do not want escaping, use [`<include-html>`](#include-html) instead.
304
-
305
- ## `<include-html>`
306
-
307
- Like `<include-text>`, `<include-html>` inlines the contents of a file. However, this tag **does _not_ escape** special HTML characters.
308
-
309
- ```marko
310
- <include-html('./foo.html')/>
311
- ```
312
-
313
- ## `<html-comment>`
314
-
315
- Marko removes HTML comment tags from its output. But if you need comments in the output, that’s what `<html-comment>` is for:
316
-
317
- ```marko
318
- <html-comment>[if IE]><script src="html-shiv.js"></script><![endif]</html-comment>
319
- ```
320
-
321
- …becomes:
322
-
323
- ```html
324
- <!--[if IE]><script src="html-shiv.js"></script><![endif]-->
325
- ```