marko 4.25.0 → 4.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/bin/markoc.js +18 -18
  2. package/dist/compiler/CompileContext.js +3 -8
  3. package/dist/core-tags/components/init-components-tag.js +1 -52
  4. package/dist/core-tags/components/package.json +1 -3
  5. package/dist/core-tags/components/preferred-script-location-tag.js +2 -2
  6. package/dist/core-tags/components/preserve-tag.js +1 -27
  7. package/dist/core-tags/core/await/AsyncValue.js +20 -20
  8. package/dist/core-tags/core/await/renderer.js +11 -12
  9. package/dist/core-tags/core/await/reorderer-renderer.js +11 -6
  10. package/dist/index.js +1 -39
  11. package/dist/node-require/index.js +11 -0
  12. package/dist/node_modules/@internal/components-beginComponent/index-browser.js +12 -0
  13. package/dist/{runtime/components/beginComponent.js → node_modules/@internal/components-beginComponent/index.js} +14 -14
  14. package/dist/node_modules/@internal/components-beginComponent/package.json +11 -0
  15. package/dist/{runtime/components/legacy/defineWidget-legacy-browser.js → node_modules/@internal/components-define-widget-legacy/index-browser.js} +47 -47
  16. package/dist/node_modules/@internal/components-define-widget-legacy/index.js +18 -0
  17. package/dist/node_modules/@internal/components-define-widget-legacy/package.json +11 -0
  18. package/dist/node_modules/@internal/components-endComponent/index.js +11 -0
  19. package/dist/node_modules/@internal/components-endComponent/package.json +11 -0
  20. package/dist/node_modules/@internal/components-entry/index-browser.js +9 -0
  21. package/dist/node_modules/@internal/components-entry/index.js +285 -0
  22. package/dist/node_modules/@internal/components-entry/package.json +11 -0
  23. package/dist/{runtime/components/legacy → node_modules/@internal/components-entry-legacy}/index-browser.js +14 -15
  24. package/dist/node_modules/@internal/components-entry-legacy/index.js +14 -0
  25. package/dist/node_modules/@internal/components-entry-legacy/package.json +11 -0
  26. package/dist/{runtime/components/init-components-browser.js → node_modules/@internal/components-registry/index-browser.js} +180 -79
  27. package/dist/node_modules/@internal/components-registry/index.js +34 -0
  28. package/dist/node_modules/@internal/components-registry/package.json +11 -0
  29. package/dist/{runtime/components/util-browser.js → node_modules/@internal/components-util/index-browser.js} +23 -24
  30. package/dist/{runtime/components/util.js → node_modules/@internal/components-util/index.js} +10 -12
  31. package/dist/node_modules/@internal/components-util/package.json +11 -0
  32. package/dist/node_modules/@internal/create-readable/index-browser.js +25 -0
  33. package/dist/node_modules/@internal/create-readable/index.js +52 -0
  34. package/dist/node_modules/@internal/create-readable/package.json +11 -0
  35. package/dist/node_modules/@internal/init-components-tag/index.js +52 -0
  36. package/dist/node_modules/@internal/init-components-tag/package.json +11 -0
  37. package/dist/{loader/index-default.js → node_modules/@internal/loader/index.js} +1 -1
  38. package/dist/node_modules/@internal/loader/package.json +11 -0
  39. package/dist/{core-tags/components/preserve-tag-browser.js → node_modules/@internal/preserve-tag/index-browser.js} +8 -8
  40. package/dist/node_modules/@internal/preserve-tag/index.js +27 -0
  41. package/dist/node_modules/@internal/preserve-tag/package.json +11 -0
  42. package/dist/node_modules/@internal/set-immediate/index-browser.js +17 -0
  43. package/dist/node_modules/@internal/set-immediate/index-worker.js +2 -0
  44. package/dist/node_modules/@internal/set-immediate/index.js +2 -0
  45. package/dist/node_modules/@internal/set-immediate/package.json +11 -0
  46. package/dist/runtime/RenderResult.js +24 -19
  47. package/dist/runtime/components/Component.js +154 -151
  48. package/dist/runtime/components/ComponentDef.js +28 -28
  49. package/dist/runtime/components/ComponentsContext.js +19 -19
  50. package/dist/runtime/components/GlobalComponentsContext.js +4 -4
  51. package/dist/runtime/components/KeySequence.js +3 -3
  52. package/dist/runtime/components/ServerComponent.js +13 -13
  53. package/dist/runtime/components/State.js +28 -28
  54. package/dist/runtime/components/attach-detach.js +9 -9
  55. package/dist/runtime/components/defineComponent.js +5 -5
  56. package/dist/runtime/components/dom-data.js +6 -6
  57. package/dist/runtime/components/event-delegation.js +15 -16
  58. package/dist/runtime/components/index.js +1 -285
  59. package/dist/runtime/components/legacy/browser.json +1 -1
  60. package/dist/runtime/components/legacy/defineComponent-legacy.js +1 -1
  61. package/dist/runtime/components/legacy/defineRenderer-legacy.js +18 -19
  62. package/dist/runtime/components/legacy/defineWidget-legacy.js +1 -18
  63. package/dist/runtime/components/legacy/dependencies/html.js +1 -1
  64. package/dist/runtime/components/legacy/dependencies/index.js +9 -9
  65. package/dist/runtime/components/legacy/helper-getWidgetFromOut.js +3 -3
  66. package/dist/runtime/components/legacy/index.js +1 -14
  67. package/dist/runtime/components/legacy/renderer-legacy.js +43 -43
  68. package/dist/runtime/components/registry.js +1 -34
  69. package/dist/runtime/components/renderer.js +38 -38
  70. package/dist/runtime/components/update-manager.js +10 -10
  71. package/dist/runtime/createOut.js +1 -1
  72. package/dist/runtime/dom-insert.js +6 -6
  73. package/dist/runtime/helpers/_change-case.js +2 -2
  74. package/dist/runtime/helpers/assign.js +3 -2
  75. package/dist/runtime/helpers/dynamic-tag.js +14 -16
  76. package/dist/runtime/helpers/load-template.js +1 -1
  77. package/dist/runtime/helpers/merge.js +3 -1
  78. package/dist/runtime/helpers/style-value.js +2 -2
  79. package/dist/runtime/html/AsyncStream.js +61 -52
  80. package/dist/runtime/html/BufferedWriter.js +5 -1
  81. package/dist/runtime/html/StringWriter.js +7 -3
  82. package/dist/runtime/html/helpers/_dynamic-attr.js +2 -2
  83. package/dist/runtime/html/helpers/attr.js +4 -4
  84. package/dist/runtime/html/helpers/attrs.js +3 -3
  85. package/dist/runtime/html/helpers/data-marko.js +4 -6
  86. package/dist/runtime/html/helpers/escape-quotes.js +2 -2
  87. package/dist/runtime/html/helpers/escape-xml.js +1 -1
  88. package/dist/runtime/html/helpers/props-script.js +1 -1
  89. package/dist/runtime/html/index.js +15 -12
  90. package/dist/runtime/renderable.js +5 -5
  91. package/dist/runtime/vdom/AsyncVDOMBuilder.js +102 -103
  92. package/dist/runtime/vdom/VComment.js +7 -7
  93. package/dist/runtime/vdom/VComponent.js +5 -5
  94. package/dist/runtime/vdom/VDocumentFragment.js +8 -8
  95. package/dist/runtime/vdom/VElement.js +55 -54
  96. package/dist/runtime/vdom/VFragment.js +9 -9
  97. package/dist/runtime/vdom/VNode.js +30 -30
  98. package/dist/runtime/vdom/VText.js +7 -7
  99. package/dist/runtime/vdom/helpers/v-element.js +1 -1
  100. package/dist/runtime/vdom/helpers/v-text.js +1 -1
  101. package/dist/runtime/vdom/index.js +12 -22
  102. package/dist/runtime/vdom/morphdom/fragment.js +5 -5
  103. package/dist/runtime/vdom/morphdom/helpers.js +3 -3
  104. package/dist/runtime/vdom/morphdom/index.js +72 -68
  105. package/dist/runtime/vdom/morphdom/specialElHandlers.js +8 -8
  106. package/dist/runtime/vdom/preserve-attrs.js +1 -1
  107. package/dist/runtime/vdom/vdom.js +19 -21
  108. package/docs/body-content.md +2 -2
  109. package/docs/class-components.md +3 -3
  110. package/docs/express.md +1 -1
  111. package/docs/lasso.md +3 -6
  112. package/docs/marko-v4.md +5 -5
  113. package/docs/redux.md +1 -1
  114. package/docs/server-side-rendering.md +2 -2
  115. package/docs/why-is-marko-fast.md +2 -10
  116. package/package.json +1 -1
  117. package/src/browser-refresh.js +2 -2
  118. package/src/compiler/CodeWriter.js +1 -3
  119. package/src/compiler/CompileContext.js +3 -8
  120. package/src/compiler/Compiler.js +4 -4
  121. package/src/compiler/HtmlJsParser.js +1 -1
  122. package/src/compiler/Migrator.js +1 -1
  123. package/src/compiler/Parser.js +3 -3
  124. package/src/compiler/ast/CustomTag.js +9 -11
  125. package/src/compiler/ast/HtmlAttribute/html/generateCode.js +2 -2
  126. package/src/compiler/ast/HtmlAttribute/index.js +1 -1
  127. package/src/compiler/ast/HtmlElement/vdom/HtmlElementVDOM.js +1 -1
  128. package/src/compiler/ast/HtmlElement/vdom/generateCode.js +1 -1
  129. package/src/compiler/ast/TemplateRoot.js +1 -1
  130. package/src/compiler/ast/Text/html/generateCode.js +3 -3
  131. package/src/compiler/ast/Text/vdom/generateCode.js +1 -1
  132. package/src/compiler/index.js +4 -4
  133. package/src/compiler/modules.js +4 -4
  134. package/src/compiler/util/finger-print.js +1 -1
  135. package/src/compiler/util/parseExpression.js +1 -1
  136. package/src/compiler/util/parseStatement.js +1 -1
  137. package/src/compiler/util/removeDashes.js +1 -1
  138. package/src/compiler/util/safeVarName.js +1 -1
  139. package/src/compiler/util/tokenizer.js +1 -1
  140. package/src/core-tags/cache/cached-fragment-tag-transformer.js +1 -1
  141. package/src/core-tags/cache/cached-fragment-tag.js +4 -4
  142. package/src/core-tags/cache/default-cache-manager.js +3 -3
  143. package/src/core-tags/components/TransformHelper/ComponentArgsCompiler.js +1 -1
  144. package/src/core-tags/components/TransformHelper/convertToComponent.js +1 -1
  145. package/src/core-tags/components/TransformHelper/handleComponentPreserveAttrs.js +1 -1
  146. package/src/core-tags/components/init-components-tag.js +1 -54
  147. package/src/core-tags/components/package.json +1 -3
  148. package/src/core-tags/components/preferred-script-location-tag.js +1 -1
  149. package/src/core-tags/components/preserve-tag.js +1 -27
  150. package/src/core-tags/components/util/getTransformHelper.js +1 -1
  151. package/src/core-tags/core/await/AsyncValue.js +3 -3
  152. package/src/core-tags/core/await/noop-render.js +1 -1
  153. package/src/core-tags/core/await/renderer.js +8 -7
  154. package/src/core-tags/core/await/reorderer-renderer.js +35 -14
  155. package/src/core-tags/core/await/transformer.js +1 -1
  156. package/src/core-tags/core/core-transformer.js +2 -2
  157. package/src/core-tags/migrate/all-tags/index.js +1 -1
  158. package/src/core-tags/migrate/all-templates/index.js +1 -1
  159. package/src/core-tags/migrate/include-tag.js +3 -2
  160. package/src/core-tags/migrate/util/parseFor.js +3 -2
  161. package/src/core-tags/migrate/util/printJS.js +1 -1
  162. package/src/defineRenderer.js +1 -1
  163. package/src/express.js +1 -1
  164. package/src/hot-reload.js +5 -5
  165. package/src/index.js +1 -41
  166. package/src/legacy-helpers/notEmpty.js +1 -1
  167. package/src/node-require/index.js +12 -1
  168. package/src/{runtime/components/beginComponent-browser.js → node_modules/@internal/components-beginComponent/index-browser.js} +1 -1
  169. package/src/{runtime/components/beginComponent.js → node_modules/@internal/components-beginComponent/index.js} +2 -2
  170. package/src/node_modules/@internal/components-beginComponent/package.json +11 -0
  171. package/src/{runtime/components/legacy/defineWidget-legacy-browser.js → node_modules/@internal/components-define-widget-legacy/index-browser.js} +21 -23
  172. package/src/node_modules/@internal/components-define-widget-legacy/index.js +18 -0
  173. package/src/node_modules/@internal/components-define-widget-legacy/package.json +11 -0
  174. package/src/{runtime/components/endComponent.js → node_modules/@internal/components-endComponent/index.js} +1 -1
  175. package/src/node_modules/@internal/components-endComponent/package.json +11 -0
  176. package/src/node_modules/@internal/components-entry/index-browser.js +9 -0
  177. package/src/node_modules/@internal/components-entry/index.js +301 -0
  178. package/src/node_modules/@internal/components-entry/package.json +11 -0
  179. package/src/node_modules/@internal/components-entry-legacy/index-browser.js +74 -0
  180. package/src/node_modules/@internal/components-entry-legacy/index.js +15 -0
  181. package/src/node_modules/@internal/components-entry-legacy/package.json +11 -0
  182. package/src/{runtime/components/init-components-browser.js → node_modules/@internal/components-registry/index-browser.js} +240 -75
  183. package/src/node_modules/@internal/components-registry/index.js +44 -0
  184. package/src/node_modules/@internal/components-registry/package.json +11 -0
  185. package/src/{runtime/components/util-browser.js → node_modules/@internal/components-util/index-browser.js} +11 -10
  186. package/src/{runtime/components/util.js → node_modules/@internal/components-util/index.js} +0 -2
  187. package/src/node_modules/@internal/components-util/package.json +11 -0
  188. package/src/node_modules/@internal/create-readable/index-browser.js +30 -0
  189. package/src/node_modules/@internal/create-readable/index.js +57 -0
  190. package/src/node_modules/@internal/create-readable/package.json +11 -0
  191. package/src/node_modules/@internal/init-components-tag/index.js +54 -0
  192. package/src/node_modules/@internal/init-components-tag/package.json +11 -0
  193. package/src/{loader/index-default.js → node_modules/@internal/loader/index.js} +2 -2
  194. package/src/node_modules/@internal/loader/package.json +11 -0
  195. package/src/node_modules/@internal/preserve-tag/index.js +27 -0
  196. package/src/node_modules/@internal/preserve-tag/package.json +11 -0
  197. package/src/node_modules/@internal/set-immediate/index-browser.js +17 -0
  198. package/src/node_modules/@internal/set-immediate/index-worker.js +2 -0
  199. package/src/node_modules/@internal/set-immediate/index.js +2 -0
  200. package/src/node_modules/@internal/set-immediate/package.json +11 -0
  201. package/src/runtime/RenderResult.js +20 -18
  202. package/src/runtime/components/Component.js +44 -41
  203. package/src/runtime/components/ComponentDef.js +9 -9
  204. package/src/runtime/components/ComponentsContext.js +4 -5
  205. package/src/runtime/components/GlobalComponentsContext.js +2 -1
  206. package/src/runtime/components/KeySequence.js +1 -1
  207. package/src/runtime/components/State.js +6 -6
  208. package/src/runtime/components/attach-detach.js +4 -4
  209. package/src/runtime/components/defineComponent.js +1 -1
  210. package/src/runtime/components/event-delegation.js +10 -10
  211. package/src/runtime/components/index.js +1 -301
  212. package/src/runtime/components/jquery.js +2 -2
  213. package/src/runtime/components/legacy/browser.json +1 -1
  214. package/src/runtime/components/legacy/defineRenderer-legacy.js +5 -6
  215. package/src/runtime/components/legacy/defineWidget-legacy.js +1 -18
  216. package/src/runtime/components/legacy/dependencies/html.js +1 -1
  217. package/src/runtime/components/legacy/dependencies/index.js +3 -3
  218. package/src/runtime/components/legacy/helper-getWidgetFromOut.js +3 -3
  219. package/src/runtime/components/legacy/index.js +1 -15
  220. package/src/runtime/components/legacy/renderer-legacy.js +7 -7
  221. package/src/runtime/components/ready.js +2 -2
  222. package/src/runtime/components/registry.js +1 -44
  223. package/src/runtime/components/renderer.js +4 -4
  224. package/src/runtime/components/update-manager.js +1 -1
  225. package/src/runtime/dom-insert.js +8 -8
  226. package/src/runtime/helpers/_weak-map.js +2 -2
  227. package/src/runtime/helpers/assign.js +3 -1
  228. package/src/runtime/helpers/bind-component.js +2 -2
  229. package/src/runtime/helpers/dynamic-tag.js +2 -4
  230. package/src/runtime/helpers/for-in.js +1 -1
  231. package/src/runtime/helpers/load-nested-tag.js +1 -1
  232. package/src/runtime/helpers/load-template.js +1 -1
  233. package/src/runtime/helpers/merge.js +3 -1
  234. package/src/runtime/helpers/noop.js +1 -1
  235. package/src/runtime/helpers/style-value.js +1 -1
  236. package/src/runtime/helpers/to-string.js +1 -1
  237. package/src/runtime/html/AsyncStream.js +90 -76
  238. package/src/runtime/html/BufferedWriter.js +6 -2
  239. package/src/runtime/html/StringWriter.js +15 -9
  240. package/src/runtime/html/helpers/attrs.js +3 -3
  241. package/src/runtime/html/helpers/data-marko.js +0 -2
  242. package/src/runtime/html/helpers/escape-quotes.js +1 -1
  243. package/src/runtime/html/helpers/escape-xml.js +1 -1
  244. package/src/runtime/html/index.js +23 -13
  245. package/src/runtime/queueMicrotask.js +2 -2
  246. package/src/runtime/renderable.js +9 -9
  247. package/src/runtime/vdom/AsyncVDOMBuilder.js +46 -51
  248. package/src/runtime/vdom/VComment.js +3 -3
  249. package/src/runtime/vdom/VDocumentFragment.js +3 -3
  250. package/src/runtime/vdom/VElement.js +17 -13
  251. package/src/runtime/vdom/VFragment.js +1 -1
  252. package/src/runtime/vdom/VNode.js +2 -2
  253. package/src/runtime/vdom/VText.js +3 -3
  254. package/src/runtime/vdom/helpers/attrs.js +1 -1
  255. package/src/runtime/vdom/helpers/const.js +2 -2
  256. package/src/runtime/vdom/helpers/v-element.js +1 -1
  257. package/src/runtime/vdom/helpers/v-text.js +1 -1
  258. package/src/runtime/vdom/index.js +21 -23
  259. package/src/runtime/vdom/morphdom/fragment.js +8 -7
  260. package/src/runtime/vdom/morphdom/index.js +19 -9
  261. package/src/runtime/vdom/morphdom/specialElHandlers.js +6 -6
  262. package/src/runtime/vdom/parse-html.js +4 -4
  263. package/src/runtime/vdom/preserve-attrs.js +1 -1
  264. package/src/runtime/vdom/vdom.js +5 -7
  265. package/src/taglib/taglib-finder/index.js +1 -1
  266. package/src/taglib/taglib-loader/Tag.js +5 -5
  267. package/src/taglib/taglib-loader/Taglib.js +2 -2
  268. package/src/taglib/taglib-loader/json-file-reader.js +1 -1
  269. package/src/taglib/taglib-loader/loadAttributeFromProps.js +1 -1
  270. package/src/taglib/taglib-loader/loadTagFromProps.js +5 -6
  271. package/src/taglib/taglib-loader/tag-def-from-code.js +2 -1
  272. package/src/taglib/taglib-lookup/TaglibLookup.js +2 -2
  273. package/src/taglib/taglib-lookup/index.js +1 -1
  274. package/dist/core-tags/core/await/client-reorder-browser.js +0 -1
  275. package/dist/core-tags/core/await/client-reorder-runtime.min.js +0 -5
  276. package/dist/core-tags/core/await/client-reorder.js +0 -11
  277. package/dist/core-tags/core/await/package.json +0 -6
  278. package/dist/index-browser.js +0 -4
  279. package/dist/loader/index.js +0 -7
  280. package/dist/loader/package.json +0 -5
  281. package/dist/node-require/index-browser.js +0 -1
  282. package/dist/package.json +0 -5
  283. package/dist/runtime/components/beginComponent-browser.js +0 -12
  284. package/dist/runtime/components/endComponent.js +0 -11
  285. package/dist/runtime/components/index-browser.js +0 -14
  286. package/dist/runtime/components/init-components.js +0 -1
  287. package/dist/runtime/components/legacy/package.json +0 -6
  288. package/dist/runtime/components/package.json +0 -12
  289. package/dist/runtime/components/registry-browser.js +0 -73
  290. package/dist/runtime/html/Template.js +0 -63
  291. package/dist/runtime/package.json +0 -5
  292. package/dist/runtime/setImmediate.js +0 -19
  293. package/src/core-tags/core/await/client-reorder-browser.js +0 -1
  294. package/src/core-tags/core/await/client-reorder-runtime.min.js +0 -1
  295. package/src/core-tags/core/await/client-reorder.js +0 -14
  296. package/src/core-tags/core/await/package.json +0 -6
  297. package/src/index-browser.js +0 -3
  298. package/src/loader/index.js +0 -7
  299. package/src/loader/package.json +0 -5
  300. package/src/node-require/index-browser.js +0 -1
  301. package/src/package.json +0 -5
  302. package/src/runtime/components/index-browser.js +0 -15
  303. package/src/runtime/components/init-components.js +0 -1
  304. package/src/runtime/components/legacy/index-browser.js +0 -73
  305. package/src/runtime/components/legacy/package.json +0 -6
  306. package/src/runtime/components/package.json +0 -12
  307. package/src/runtime/components/registry-browser.js +0 -103
  308. package/src/runtime/html/Template.js +0 -62
  309. package/src/runtime/package.json +0 -5
  310. package/src/runtime/setImmediate.js +0 -21
  311. /package/dist/{runtime/components/endComponent-browser.js → node_modules/@internal/components-endComponent/index-browser.js} +0 -0
  312. /package/dist/{core-tags/components/init-components-tag-browser.js → node_modules/@internal/init-components-tag/index-browser.js} +0 -0
  313. /package/dist/{loader → node_modules/@internal/loader}/index-browser.js +0 -0
  314. /package/src/{runtime/components/endComponent-browser.js → node_modules/@internal/components-endComponent/index-browser.js} +0 -0
  315. /package/src/{core-tags/components/init-components-tag-browser.js → node_modules/@internal/init-components-tag/index-browser.js} +0 -0
  316. /package/src/{loader → node_modules/@internal/loader}/index-browser.js +0 -0
  317. /package/src/{core-tags/components/preserve-tag-browser.js → node_modules/@internal/preserve-tag/index-browser.js} +0 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ const INIT_COMPONENTS_KEY = Symbol();
4
+
5
+ const addComponentsFromContext =
6
+ require("@internal/components-entry").___addComponentsFromContext;
7
+ const getInitComponentsCode =
8
+ require("@internal/components-entry").___getInitComponentsCode;
9
+
10
+ function addComponentsFromOut(source, target) {
11
+ const sourceOut = source.out || source;
12
+ const targetOut = target || sourceOut;
13
+ const componentsContext = sourceOut.___components;
14
+ const componentDefs = targetOut.writer.get("componentDefs");
15
+ addComponentsFromContext(componentsContext, componentDefs);
16
+ }
17
+
18
+ function addInitScript(writer) {
19
+ const out = writer.state.root;
20
+ const componentDefs = writer.get("componentDefs");
21
+ writer.script(getInitComponentsCode(out, componentDefs));
22
+ }
23
+
24
+ module.exports = function render(input, out) {
25
+ const $global = out.global;
26
+ if ($global[INIT_COMPONENTS_KEY] === undefined) {
27
+ $global[INIT_COMPONENTS_KEY] = true;
28
+
29
+ out.on("await:finish", addComponentsFromOut);
30
+ out.on("___toString", addInitScript);
31
+
32
+ if (out.isSync() === true) {
33
+ // Generate initialization code for any of the UI components that were
34
+ // rendered synchronously
35
+ addComponentsFromOut(out);
36
+ } else {
37
+ // Generate initialization code for any of the UI components that were
38
+ // rendered asynchronously, but were outside an `<await>` tag
39
+ // (each `<await>` tag will have its own component initialization block)
40
+ const asyncOut = out.beginAsync({ last: true, timeout: -1 });
41
+ out.onLast(function (next) {
42
+ // Ensure we're getting init code starting from the root
43
+ let rootOut = out;
44
+ while (rootOut._parentOut) {
45
+ rootOut = rootOut._parentOut;
46
+ }
47
+ // Write out all of the component init code from the main out
48
+ addComponentsFromOut(rootOut, asyncOut);
49
+ asyncOut.end();
50
+ next();
51
+ });
52
+ }
53
+ }
54
+ };
@@ -0,0 +1,11 @@
1
+ {
2
+ "main": "./index.js",
3
+ "browser": "./index-browser.js",
4
+ "exports": {
5
+ ".": {
6
+ "worker": "./index.js",
7
+ "browser": "./index-browser.js",
8
+ "default": "./index.js"
9
+ }
10
+ }
11
+ }
@@ -3,7 +3,7 @@
3
3
  var nodePath = require("path");
4
4
  var fs = require("fs");
5
5
  var Module = require("module").Module;
6
- var compilerPath = nodePath.join(__dirname, "../compiler");
6
+ var compilerPath = nodePath.join(__dirname, "../../../compiler");
7
7
  var markoCompiler = require(compilerPath);
8
8
  var cwd = process.cwd();
9
9
  var fsOptions = { encoding: "utf8" };
@@ -137,7 +137,7 @@ function getPreviousTemplate(templatePath, options) {
137
137
  }
138
138
 
139
139
  function createRenderProxy(template) {
140
- return function(data, out) {
140
+ return function (data, out) {
141
141
  template._(data, out);
142
142
  };
143
143
  }
@@ -0,0 +1,11 @@
1
+ {
2
+ "main": "./index.js",
3
+ "browser": "./index-browser.js",
4
+ "exports": {
5
+ ".": {
6
+ "webpack": "./index-browser.js",
7
+ "browser": "./index-browser.js",
8
+ "default": "./index.js"
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,27 @@
1
+ var ComponentsContext = require("../../../runtime/components/ComponentsContext");
2
+ var getComponentsContext = ComponentsContext.___getComponentsContext;
3
+
4
+ module.exports = function render(input, out) {
5
+ var shouldPreserve = Boolean(!("i" in input) || input.i);
6
+ var isComponent = !input.n;
7
+
8
+ if (isComponent) {
9
+ out.bf(out.___assignedKey, out.___assignedComponentDef.___component, true);
10
+ }
11
+
12
+ if (input.renderBody) {
13
+ if (shouldPreserve) {
14
+ var componentsContext = getComponentsContext(out);
15
+ var parentPreserved = componentsContext.___isPreserved;
16
+ componentsContext.___isPreserved = true;
17
+ input.renderBody(out);
18
+ componentsContext.___isPreserved = parentPreserved;
19
+ } else {
20
+ input.renderBody(out);
21
+ }
22
+ }
23
+
24
+ if (isComponent) {
25
+ out.ef();
26
+ }
27
+ };
@@ -0,0 +1,11 @@
1
+ {
2
+ "main": "./index.js",
3
+ "browser": "./index-browser.js",
4
+ "exports": {
5
+ ".": {
6
+ "worker": "./index.js",
7
+ "browser": "./index-browser.js",
8
+ "default": "./index.js"
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,17 @@
1
+ var queue = [];
2
+ var msg = "" + Math.random();
3
+ window.addEventListener("message", function (ev) {
4
+ if (ev.data === msg) {
5
+ var callbacks = queue;
6
+ queue = [];
7
+ for (var i = 0; i < callbacks.length; i++) {
8
+ callbacks[i]();
9
+ }
10
+ }
11
+ });
12
+
13
+ exports.___setImmediate = function (callback) {
14
+ if (queue.push(callback) === 1) {
15
+ window.postMessage(msg, "*");
16
+ }
17
+ };
@@ -0,0 +1,2 @@
1
+ exports.___setImmediate = setTimeout;
2
+ exports.___clearImmediate = clearTimeout;
@@ -0,0 +1,2 @@
1
+ exports.___setImmediate = setImmediate;
2
+ exports.___clearImmediate = clearImmediate;
@@ -0,0 +1,11 @@
1
+ {
2
+ "main": "./index.js",
3
+ "browser": "./index-browser.js",
4
+ "exports": {
5
+ ".": {
6
+ "worker": "./index-worker.js",
7
+ "browser": "./index-browser.js",
8
+ "default": "./index.js"
9
+ }
10
+ }
11
+ }
@@ -1,6 +1,12 @@
1
1
  var domInsert = require("./dom-insert");
2
2
  var complain = "MARKO_DEBUG" && require("complain");
3
3
 
4
+ function getRootNode(el) {
5
+ var cur = el;
6
+ while (cur.parentNode) cur = cur.parentNode;
7
+ return cur;
8
+ }
9
+
4
10
  function getComponentDefs(result) {
5
11
  var componentDefs = result.___components;
6
12
 
@@ -18,10 +24,10 @@ function RenderResult(out) {
18
24
  module.exports = RenderResult;
19
25
 
20
26
  var proto = (RenderResult.prototype = {
21
- getComponent: function() {
27
+ getComponent: function () {
22
28
  return this.getComponents()[0];
23
29
  },
24
- getComponents: function(selector) {
30
+ getComponents: function (selector) {
25
31
  if (this.___components === undefined) {
26
32
  throw Error("Not added to DOM");
27
33
  }
@@ -30,7 +36,7 @@ var proto = (RenderResult.prototype = {
30
36
 
31
37
  var components = [];
32
38
 
33
- componentDefs.forEach(function(componentDef) {
39
+ componentDefs.forEach(function (componentDef) {
34
40
  var component = componentDef.___component;
35
41
  if (!selector || selector(component)) {
36
42
  components.push(component);
@@ -40,31 +46,31 @@ var proto = (RenderResult.prototype = {
40
46
  return components;
41
47
  },
42
48
 
43
- afterInsert: function(doc) {
49
+ afterInsert: function (host) {
44
50
  var out = this.___out;
45
51
  var componentsContext = out.___components;
46
52
  if (componentsContext) {
47
- this.___components = componentsContext.___initComponents(doc);
53
+ this.___components = componentsContext.___initComponents(host);
48
54
  } else {
49
55
  this.___components = null;
50
56
  }
51
57
 
52
58
  return this;
53
59
  },
54
- getNode: function(doc) {
55
- return this.___out.___getNode(doc);
60
+ getNode: function (host) {
61
+ return this.___out.___getNode(host);
56
62
  },
57
- getOutput: function() {
63
+ getOutput: function () {
58
64
  return this.___out.___getOutput();
59
65
  },
60
- toString: function() {
66
+ toString: function () {
61
67
  return this.___out.toString();
62
68
  },
63
- document: typeof document != "undefined" && document
69
+ document: typeof document === "object" && document
64
70
  });
65
71
 
66
72
  Object.defineProperty(proto, "html", {
67
- get: function() {
73
+ get: function () {
68
74
  // eslint-disable-next-line no-constant-condition
69
75
  if ("MARKO_DEBUG") {
70
76
  complain(
@@ -76,7 +82,7 @@ Object.defineProperty(proto, "html", {
76
82
  });
77
83
 
78
84
  Object.defineProperty(proto, "context", {
79
- get: function() {
85
+ get: function () {
80
86
  // eslint-disable-next-line no-constant-condition
81
87
  if ("MARKO_DEBUG") {
82
88
  complain(
@@ -97,13 +103,9 @@ Object.defineProperty(proto, "context", {
97
103
  domInsert(
98
104
  proto,
99
105
  function getEl(renderResult, referenceEl) {
100
- return renderResult.getNode(referenceEl.ownerDocument);
106
+ return renderResult.getNode(getRootNode(referenceEl));
101
107
  },
102
108
  function afterInsert(renderResult, referenceEl) {
103
- var isShadow =
104
- typeof ShadowRoot === "function" && referenceEl instanceof ShadowRoot;
105
- return renderResult.afterInsert(
106
- isShadow ? referenceEl : referenceEl.ownerDocument
107
- );
109
+ return renderResult.afterInsert(getRootNode(referenceEl));
108
110
  }
109
111
  );
@@ -5,9 +5,9 @@ var complain = "MARKO_DEBUG" && require("complain");
5
5
 
6
6
  var domInsert = require("../dom-insert");
7
7
  var defaultCreateOut = require("../createOut");
8
- var getComponentsContext = require("./ComponentsContext")
9
- .___getComponentsContext;
10
- var componentsUtil = require("./util");
8
+ var getComponentsContext =
9
+ require("./ComponentsContext").___getComponentsContext;
10
+ var componentsUtil = require("@internal/components-util");
11
11
  var componentLookup = componentsUtil.___componentLookup;
12
12
  var destroyNodeRecursive = componentsUtil.___destroyNodeRecursive;
13
13
  var EventEmitter = require("events-light");
@@ -22,6 +22,7 @@ var componentsByDOMNode = domData.___componentByDOMNode;
22
22
  var keyedElementsByComponentId = domData.___ssrKeyedElementsByComponentId;
23
23
  var CONTEXT_KEY = "__subtree_context__";
24
24
 
25
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
25
26
  var slice = Array.prototype.slice;
26
27
 
27
28
  var COMPONENT_SUBSCRIBE_TO_OPTIONS;
@@ -97,7 +98,7 @@ function processUpdateHandlers(component, stateChanges, oldState) {
97
98
  var handlers;
98
99
 
99
100
  for (var propName in stateChanges) {
100
- if (stateChanges.hasOwnProperty(propName)) {
101
+ if (hasOwnProperty.call(stateChanges, propName)) {
101
102
  var handlerMethodName = "update_" + propName;
102
103
 
103
104
  handlerMethod = component[handlerMethodName];
@@ -118,7 +119,7 @@ function processUpdateHandlers(component, stateChanges, oldState) {
118
119
  // Otherwise, there are handlers for all of the changed properties
119
120
  // so apply the updates using those handlers
120
121
 
121
- handlers.forEach(function(handler) {
122
+ handlers.forEach(function (handler) {
122
123
  var propertyName = handler[0];
123
124
  handlerMethod = handler[1];
124
125
 
@@ -183,7 +184,7 @@ function Component(id) {
183
184
  this.___updateQueued = false;
184
185
  this.___dirty = false;
185
186
  this.___settingInput = false;
186
- this.___document = undefined;
187
+ this.___host = undefined;
187
188
 
188
189
  var ssrKeyedElements = keyedElementsByComponentId[id];
189
190
 
@@ -198,7 +199,7 @@ function Component(id) {
198
199
  Component.prototype = componentProto = {
199
200
  ___isComponent: true,
200
201
 
201
- subscribeTo: function(target) {
202
+ subscribeTo: function (target) {
202
203
  if (!target) {
203
204
  throw TypeError();
204
205
  }
@@ -214,7 +215,7 @@ Component.prototype = componentProto = {
214
215
  return subscriptions.subscribeTo(target, subscribeToOptions);
215
216
  },
216
217
 
217
- emit: function(eventType) {
218
+ emit: function (eventType) {
218
219
  var customEvents = this.___customEvents;
219
220
  var target;
220
221
 
@@ -238,13 +239,13 @@ Component.prototype = componentProto = {
238
239
 
239
240
  return emit.apply(this, arguments);
240
241
  },
241
- getElId: function(key, index) {
242
+ getElId: function (key, index) {
242
243
  if (!key) {
243
244
  return this.id;
244
245
  }
245
246
  return resolveComponentIdHelper(this, key, index);
246
247
  },
247
- getEl: function(key, index) {
248
+ getEl: function (key, index) {
248
249
  if (key) {
249
250
  var resolvedKey = resolveKeyHelper(key, index);
250
251
  var keyedElement = this.___keyedElements["@" + resolvedKey];
@@ -271,7 +272,7 @@ Component.prototype = componentProto = {
271
272
  return this.el;
272
273
  }
273
274
  },
274
- getEls: function(key) {
275
+ getEls: function (key) {
275
276
  key = key + "[]";
276
277
 
277
278
  var els = [];
@@ -283,7 +284,7 @@ Component.prototype = componentProto = {
283
284
  }
284
285
  return els;
285
286
  },
286
- getComponent: function(key, index) {
287
+ getComponent: function (key, index) {
287
288
  var rootNode = this.___keyedElements[resolveKeyHelper(key, index)];
288
289
  if (/\[\]$/.test(key)) {
289
290
  // eslint-disable-next-line no-constant-condition
@@ -296,17 +297,17 @@ Component.prototype = componentProto = {
296
297
  }
297
298
  return rootNode && componentsByDOMNode.get(rootNode);
298
299
  },
299
- getComponents: function(key) {
300
+ getComponents: function (key) {
300
301
  var lookup = this.___keyedElements[key + "[]"];
301
302
  return lookup
302
303
  ? Object.keys(lookup)
303
- .map(function(key) {
304
+ .map(function (key) {
304
305
  return componentsByDOMNode.get(lookup[key]);
305
306
  })
306
307
  .filter(Boolean)
307
308
  : [];
308
309
  },
309
- destroy: function() {
310
+ destroy: function () {
310
311
  if (this.___destroyed) {
311
312
  return;
312
313
  }
@@ -317,7 +318,7 @@ Component.prototype = componentProto = {
317
318
 
318
319
  var nodes = root.nodes;
319
320
 
320
- nodes.forEach(function(node) {
321
+ nodes.forEach(function (node) {
321
322
  destroyNodeRecursive(node);
322
323
 
323
324
  if (eventDelegation.___handleNodeDetach(node) !== false) {
@@ -331,7 +332,7 @@ Component.prototype = componentProto = {
331
332
  this.___keyedElements = {};
332
333
  },
333
334
 
334
- ___destroyShallow: function() {
335
+ ___destroyShallow: function () {
335
336
  if (this.___destroyed) {
336
337
  return;
337
338
  }
@@ -353,7 +354,7 @@ Component.prototype = componentProto = {
353
354
  }
354
355
  },
355
356
 
356
- isDestroyed: function() {
357
+ isDestroyed: function () {
357
358
  return this.___destroyed;
358
359
  },
359
360
  get state() {
@@ -379,7 +380,7 @@ Component.prototype = componentProto = {
379
380
  this.___state = null;
380
381
  }
381
382
  },
382
- setState: function(name, value) {
383
+ setState: function (name, value) {
383
384
  var state = this.___state;
384
385
 
385
386
  if (!state) {
@@ -389,7 +390,7 @@ Component.prototype = componentProto = {
389
390
  // Merge in the new state with the old state
390
391
  var newState = name;
391
392
  for (var k in newState) {
392
- if (newState.hasOwnProperty(k)) {
393
+ if (hasOwnProperty.call(newState, k)) {
393
394
  state.___set(k, newState[k], true /* ensure:true */);
394
395
  }
395
396
  }
@@ -398,7 +399,7 @@ Component.prototype = componentProto = {
398
399
  }
399
400
  },
400
401
 
401
- setStateDirty: function(name, value) {
402
+ setStateDirty: function (name, value) {
402
403
  var state = this.___state;
403
404
 
404
405
  if (arguments.length == 1) {
@@ -413,7 +414,7 @@ Component.prototype = componentProto = {
413
414
  );
414
415
  },
415
416
 
416
- replaceState: function(newState) {
417
+ replaceState: function (newState) {
417
418
  this.___state.___replace(newState);
418
419
  },
419
420
 
@@ -428,7 +429,7 @@ Component.prototype = componentProto = {
428
429
  }
429
430
  },
430
431
 
431
- ___setInput: function(newInput, onInput, out) {
432
+ ___setInput: function (newInput, onInput, out) {
432
433
  onInput = onInput || this.onInput;
433
434
  var updatedInput;
434
435
 
@@ -460,19 +461,19 @@ Component.prototype = componentProto = {
460
461
  return newInput;
461
462
  },
462
463
 
463
- forceUpdate: function() {
464
+ forceUpdate: function () {
464
465
  this.___dirty = true;
465
466
  this.___queueUpdate();
466
467
  },
467
468
 
468
- ___queueUpdate: function() {
469
+ ___queueUpdate: function () {
469
470
  if (!this.___updateQueued) {
470
471
  this.___updateQueued = true;
471
472
  updateManager.___queueComponentUpdate(this);
472
473
  }
473
474
  },
474
475
 
475
- update: function() {
476
+ update: function () {
476
477
  if (this.___destroyed === true || this.___isDirty === false) {
477
478
  return;
478
479
  }
@@ -505,7 +506,7 @@ Component.prototype = componentProto = {
505
506
  );
506
507
  },
507
508
 
508
- ___reset: function() {
509
+ ___reset: function () {
509
510
  this.___dirty = false;
510
511
  this.___updateQueued = false;
511
512
  this.___renderInput = null;
@@ -515,11 +516,11 @@ Component.prototype = componentProto = {
515
516
  }
516
517
  },
517
518
 
518
- shouldUpdate: function() {
519
+ shouldUpdate: function () {
519
520
  return true;
520
521
  },
521
522
 
522
- ___scheduleRerender: function() {
523
+ ___scheduleRerender: function () {
523
524
  var self = this;
524
525
  var renderer = self.___renderer;
525
526
 
@@ -529,22 +530,22 @@ Component.prototype = componentProto = {
529
530
 
530
531
  var input = this.___renderInput || this.___input;
531
532
 
532
- updateManager.___batchUpdate(function() {
533
- self.___rerender(input, false).afterInsert(self.___document);
533
+ updateManager.___batchUpdate(function () {
534
+ self.___rerender(input, false).afterInsert(self.___host);
534
535
  });
535
536
 
536
537
  this.___reset();
537
538
  },
538
539
 
539
- ___rerender: function(input, isHydrate) {
540
- var doc = this.___document;
540
+ ___rerender: function (input, isHydrate) {
541
+ var host = this.___host;
541
542
  var globalData = this.___global;
542
543
  var rootNode = this.___rootNode;
543
544
  var renderer = this.___renderer;
544
545
  var createOut = renderer.createOut || defaultCreateOut;
545
546
  var out = createOut(globalData);
546
547
  out.sync();
547
- out.___document = this.___document;
548
+ out.___host = this.___host;
548
549
  out[CONTEXT_KEY] = this.___context;
549
550
 
550
551
  var componentsContext = getComponentsContext(out);
@@ -558,18 +559,18 @@ Component.prototype = componentProto = {
558
559
 
559
560
  var targetNode = out.___getOutput().___firstChild;
560
561
 
561
- morphdom(rootNode, targetNode, doc, componentsContext);
562
+ morphdom(rootNode, targetNode, host, componentsContext);
562
563
 
563
564
  return result;
564
565
  },
565
566
 
566
- ___detach: function() {
567
+ ___detach: function () {
567
568
  var root = this.___rootNode;
568
569
  root.remove();
569
570
  return root;
570
571
  },
571
572
 
572
- ___removeDOMEventListeners: function() {
573
+ ___removeDOMEventListeners: function () {
573
574
  var eventListenerHandles = this.___domEventListenerHandles;
574
575
  if (eventListenerHandles) {
575
576
  eventListenerHandles.forEach(removeListener);
@@ -582,17 +583,19 @@ Component.prototype = componentProto = {
582
583
  return state && state.___raw;
583
584
  },
584
585
 
585
- ___setCustomEvents: function(customEvents, scope) {
586
+ ___setCustomEvents: function (customEvents, scope) {
586
587
  var finalCustomEvents = (this.___customEvents = {});
587
588
  this.___scope = scope;
588
589
 
589
- customEvents.forEach(function(customEvent) {
590
+ customEvents.forEach(function (customEvent) {
590
591
  var eventType = customEvent[0];
591
592
  var targetMethodName = customEvent[1];
592
593
  var isOnce = customEvent[2];
593
594
  var extraArgs = customEvent[3];
594
595
 
595
- finalCustomEvents[eventType] = [targetMethodName, isOnce, extraArgs];
596
+ if (targetMethodName) {
597
+ finalCustomEvents[eventType] = [targetMethodName, isOnce, extraArgs];
598
+ }
596
599
  });
597
600
  },
598
601
 
@@ -607,7 +610,7 @@ Component.prototype = componentProto = {
607
610
  'The "this.els" attribute is deprecated. Please use "this.getEls(key)" instead.'
608
611
  );
609
612
  }
610
- return (this.___rootNode ? this.___rootNode.nodes : []).filter(function(
613
+ return (this.___rootNode ? this.___rootNode.nodes : []).filter(function (
611
614
  el
612
615
  ) {
613
616
  return el.nodeType === ELEMENT_NODE;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  var complain = "MARKO_DEBUG" && require("complain");
3
3
  var w10Noop = require("warp10/constants").NOOP;
4
- var componentUtil = require("./util");
4
+ var componentUtil = require("@internal/components-util");
5
5
  var attachBubblingEvent = componentUtil.___attachBubblingEvent;
6
- var addDelegatedEventHandler = require("./event-delegation")
7
- .___addDelegatedEventHandler;
6
+ var addDelegatedEventHandler =
7
+ require("./event-delegation").___addDelegatedEventHandler;
8
8
  var extend = require("raptor-util/extend");
9
9
  var KeySequence = require("./KeySequence");
10
10
  var EMPTY_OBJECT = {};
@@ -36,7 +36,7 @@ function ComponentDef(component, componentId, componentsContext) {
36
36
  }
37
37
 
38
38
  ComponentDef.prototype = {
39
- ___nextKey: function(key) {
39
+ ___nextKey: function (key) {
40
40
  return (
41
41
  this.___keySequence || (this.___keySequence = new KeySequence())
42
42
  ).___nextKey(key);
@@ -46,7 +46,7 @@ ComponentDef.prototype = {
46
46
  * This helper method generates a unique and fully qualified DOM element ID
47
47
  * that is unique within the scope of the current component.
48
48
  */
49
- elId: function(nestedId) {
49
+ elId: function (nestedId) {
50
50
  var id = this.id;
51
51
 
52
52
  if (nestedId == null) {
@@ -72,11 +72,11 @@ ComponentDef.prototype = {
72
72
  /**
73
73
  * Returns the next auto generated unique ID for a nested DOM element or nested DOM component
74
74
  */
75
- ___nextComponentId: function() {
75
+ ___nextComponentId: function () {
76
76
  return this.id + "-c" + this.___nextIdIndex++;
77
77
  },
78
78
 
79
- d: function(eventName, handlerMethodName, isOnce, extraArgs) {
79
+ d: function (eventName, handlerMethodName, isOnce, extraArgs) {
80
80
  addDelegatedEventHandler(eventName);
81
81
  return attachBubblingEvent(this, handlerMethodName, isOnce, extraArgs);
82
82
  },
@@ -88,7 +88,7 @@ ComponentDef.prototype = {
88
88
 
89
89
  ComponentDef.prototype.nk = ComponentDef.prototype.___nextKey;
90
90
 
91
- ComponentDef.___deserialize = function(o, types, global, registry) {
91
+ ComponentDef.___deserialize = function (o, types, global, registry) {
92
92
  var id = o[0];
93
93
  var typeName = types[o[1]];
94
94
  var input = o[2] || null;
@@ -130,7 +130,7 @@ ComponentDef.___deserialize = function(o, types, global, registry) {
130
130
  if (state) {
131
131
  var undefinedPropNames = extra.u;
132
132
  if (undefinedPropNames) {
133
- undefinedPropNames.forEach(function(undefinedPropName) {
133
+ undefinedPropNames.forEach(function (undefinedPropName) {
134
134
  state[undefinedPropName] = undefined;
135
135
  });
136
136
  }
@@ -20,9 +20,8 @@ function ComponentsContext(out, parentComponentsContext) {
20
20
  } else {
21
21
  globalComponentsContext = out.global.___components;
22
22
  if (globalComponentsContext === undefined) {
23
- out.global.___components = globalComponentsContext = new GlobalComponentsContext(
24
- out
25
- );
23
+ out.global.___components = globalComponentsContext =
24
+ new GlobalComponentsContext(out);
26
25
  }
27
26
  }
28
27
 
@@ -36,10 +35,10 @@ function ComponentsContext(out, parentComponentsContext) {
36
35
  }
37
36
 
38
37
  ComponentsContext.prototype = {
39
- ___initComponents: function(doc) {
38
+ ___initComponents: function (host) {
40
39
  var componentDefs = this.___components;
41
40
 
42
- ComponentsContext.___initClientRendered(componentDefs, doc);
41
+ ComponentsContext.___initClientRendered(componentDefs, host);
43
42
 
44
43
  this.___out.emit("___componentsInitialized");
45
44
 
@@ -1,4 +1,5 @@
1
- var nextComponentIdProvider = require("./util").___nextComponentIdProvider;
1
+ var nextComponentIdProvider =
2
+ require("@internal/components-util").___nextComponentIdProvider;
2
3
 
3
4
  function GlobalComponentsContext(out) {
4
5
  this.___renderedComponentsById = {};