@next-core/runtime 1.3.3 → 1.4.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 (47) hide show
  1. package/dist/cjs/Dialog.js +2 -3
  2. package/dist/cjs/Dialog.js.map +1 -1
  3. package/dist/cjs/Notification.js +2 -3
  4. package/dist/cjs/Notification.js.map +1 -1
  5. package/dist/cjs/createRoot.js +122 -0
  6. package/dist/cjs/createRoot.js.map +1 -0
  7. package/dist/cjs/index.js +12 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/internal/Renderer.js +1 -3
  10. package/dist/cjs/internal/Renderer.js.map +1 -1
  11. package/dist/cjs/internal/RendererContext.js +13 -8
  12. package/dist/cjs/internal/RendererContext.js.map +1 -1
  13. package/dist/cjs/internal/Router.js +1 -1
  14. package/dist/cjs/internal/Router.js.map +1 -1
  15. package/dist/cjs/internal/Runtime.js +11 -3
  16. package/dist/cjs/internal/Runtime.js.map +1 -1
  17. package/dist/cjs/internal/bootstrapData.js +13 -0
  18. package/dist/cjs/internal/bootstrapData.js.map +1 -0
  19. package/dist/cjs/internal/secret_internals.js +6 -75
  20. package/dist/cjs/internal/secret_internals.js.map +1 -1
  21. package/dist/esm/Dialog.js +2 -2
  22. package/dist/esm/Dialog.js.map +1 -1
  23. package/dist/esm/Notification.js +2 -2
  24. package/dist/esm/Notification.js.map +1 -1
  25. package/dist/esm/createRoot.js +122 -0
  26. package/dist/esm/createRoot.js.map +1 -0
  27. package/dist/esm/index.js +1 -0
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/internal/Renderer.js +1 -3
  30. package/dist/esm/internal/Renderer.js.map +1 -1
  31. package/dist/esm/internal/RendererContext.js +13 -8
  32. package/dist/esm/internal/RendererContext.js.map +1 -1
  33. package/dist/esm/internal/Router.js +1 -1
  34. package/dist/esm/internal/Router.js.map +1 -1
  35. package/dist/esm/internal/Runtime.js +9 -2
  36. package/dist/esm/internal/Runtime.js.map +1 -1
  37. package/dist/esm/internal/bootstrapData.js +6 -0
  38. package/dist/esm/internal/bootstrapData.js.map +1 -0
  39. package/dist/esm/internal/secret_internals.js +6 -82
  40. package/dist/esm/internal/secret_internals.js.map +1 -1
  41. package/dist/types/createRoot.d.ts +17 -0
  42. package/dist/types/index.d.ts +1 -0
  43. package/dist/types/internal/RendererContext.d.ts +6 -2
  44. package/dist/types/internal/Runtime.d.ts +2 -1
  45. package/dist/types/internal/bootstrapData.d.ts +2 -0
  46. package/dist/types/internal/secret_internals.d.ts +4 -10
  47. package/package.json +3 -3
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.Dialog = void 0;
8
7
  exports.loadDialogService = loadDialogService;
9
- var __secret_internals = _interopRequireWildcard(require("./internal/secret_internals.js"));
8
+ var _Runtime = require("./internal/Runtime.js");
10
9
  let brick;
11
10
  function show(options) {
12
11
  if (brick) {
@@ -31,7 +30,7 @@ function show(options) {
31
30
  }
32
31
  }
33
32
  function loadDialogService(tagName) {
34
- __secret_internals.loadBricks([tagName]).then(() => {
33
+ (0, _Runtime._internalApiLoadBricks)([tagName]).then(() => {
35
34
  brick = document.createElement(tagName);
36
35
  }, error => {
37
36
  // eslint-disable-next-line no-console
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","names":["__secret_internals","_interopRequireWildcard","require","brick","show","options","resolve","type","confirm","content","Promise","setTimeout","reject","alert","loadDialogService","tagName","loadBricks","then","document","createElement","error","console","Dialog","Object","freeze","exports"],"sources":["../../src/Dialog.ts"],"sourcesContent":["import * as __secret_internals from \"./internal/secret_internals.js\";\n\nlet brick: {\n resolve(options: DialogOptions): Promise<void>;\n};\n\nfunction show(options: DialogOptions): Promise<void> {\n if (brick) {\n return brick.resolve(options);\n } else {\n if (options.type === \"confirm\") {\n if (confirm(options.content)) {\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, 1)\n );\n } else {\n return new Promise((resolve, reject) =>\n setTimeout(() => {\n reject();\n }, 1)\n );\n }\n } else {\n alert(options.content);\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, 1000)\n );\n }\n }\n}\n\nexport function loadDialogService(tagName: string) {\n __secret_internals.loadBricks([tagName]).then(\n () => {\n brick = document.createElement(tagName) as any;\n },\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load dialog service failed:\", error);\n }\n );\n}\n\nexport interface DialogOptions {\n type?: \"success\" | \"error\" | \"warn\" | \"info\" | \"confirm\";\n title?: string | null;\n content: string;\n contentStyle?: object;\n}\n\nexport const Dialog = Object.freeze({\n show,\n});\n"],"mappings":";;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAIC,KAEH;AAED,SAASC,IAAIA,CAACC,OAAsB,EAAiB;EACnD,IAAIF,KAAK,EAAE;IACT,OAAOA,KAAK,CAACG,OAAO,CAACD,OAAO,CAAC;EAC/B,CAAC,MAAM;IACL,IAAIA,OAAO,CAACE,IAAI,KAAK,SAAS,EAAE;MAC9B,IAAIC,OAAO,CAACH,OAAO,CAACI,OAAO,CAAC,EAAE;QAC5B,OAAO,IAAIC,OAAO,CAAEJ,OAAO,IACzBK,UAAU,CAAC,MAAM;UACfL,OAAO,EAAE;QACX,CAAC,EAAE,CAAC,CAAC,CACN;MACH,CAAC,MAAM;QACL,OAAO,IAAII,OAAO,CAAC,CAACJ,OAAO,EAAEM,MAAM,KACjCD,UAAU,CAAC,MAAM;UACfC,MAAM,EAAE;QACV,CAAC,EAAE,CAAC,CAAC,CACN;MACH;IACF,CAAC,MAAM;MACLC,KAAK,CAACR,OAAO,CAACI,OAAO,CAAC;MACtB,OAAO,IAAIC,OAAO,CAAEJ,OAAO,IACzBK,UAAU,CAAC,MAAM;QACfL,OAAO,EAAE;MACX,CAAC,EAAE,IAAI,CAAC,CACT;IACH;EACF;AACF;AAEO,SAASQ,iBAAiBA,CAACC,OAAe,EAAE;EACjDf,kBAAkB,CAACgB,UAAU,CAAC,CAACD,OAAO,CAAC,CAAC,CAACE,IAAI,CAC3C,MAAM;IACJd,KAAK,GAAGe,QAAQ,CAACC,aAAa,CAACJ,OAAO,CAAQ;EAChD,CAAC,EACAK,KAAc,IAAK;IAClB;IACAC,OAAO,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;EACrD,CAAC,CACF;AACH;AASO,MAAME,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC;EAClCpB;AACF,CAAC,CAAC;AAACqB,OAAA,CAAAH,MAAA,GAAAA,MAAA"}
1
+ {"version":3,"file":"Dialog.js","names":["_Runtime","require","brick","show","options","resolve","type","confirm","content","Promise","setTimeout","reject","alert","loadDialogService","tagName","_internalApiLoadBricks","then","document","createElement","error","console","Dialog","Object","freeze","exports"],"sources":["../../src/Dialog.ts"],"sourcesContent":["import { _internalApiLoadBricks } from \"./internal/Runtime.js\";\n\nlet brick: {\n resolve(options: DialogOptions): Promise<void>;\n};\n\nfunction show(options: DialogOptions): Promise<void> {\n if (brick) {\n return brick.resolve(options);\n } else {\n if (options.type === \"confirm\") {\n if (confirm(options.content)) {\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, 1)\n );\n } else {\n return new Promise((resolve, reject) =>\n setTimeout(() => {\n reject();\n }, 1)\n );\n }\n } else {\n alert(options.content);\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, 1000)\n );\n }\n }\n}\n\nexport function loadDialogService(tagName: string) {\n _internalApiLoadBricks([tagName]).then(\n () => {\n brick = document.createElement(tagName) as any;\n },\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load dialog service failed:\", error);\n }\n );\n}\n\nexport interface DialogOptions {\n type?: \"success\" | \"error\" | \"warn\" | \"info\" | \"confirm\";\n title?: string | null;\n content: string;\n contentStyle?: object;\n}\n\nexport const Dialog = Object.freeze({\n show,\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAIC,KAEH;AAED,SAASC,IAAIA,CAACC,OAAsB,EAAiB;EACnD,IAAIF,KAAK,EAAE;IACT,OAAOA,KAAK,CAACG,OAAO,CAACD,OAAO,CAAC;EAC/B,CAAC,MAAM;IACL,IAAIA,OAAO,CAACE,IAAI,KAAK,SAAS,EAAE;MAC9B,IAAIC,OAAO,CAACH,OAAO,CAACI,OAAO,CAAC,EAAE;QAC5B,OAAO,IAAIC,OAAO,CAAEJ,OAAO,IACzBK,UAAU,CAAC,MAAM;UACfL,OAAO,EAAE;QACX,CAAC,EAAE,CAAC,CAAC,CACN;MACH,CAAC,MAAM;QACL,OAAO,IAAII,OAAO,CAAC,CAACJ,OAAO,EAAEM,MAAM,KACjCD,UAAU,CAAC,MAAM;UACfC,MAAM,EAAE;QACV,CAAC,EAAE,CAAC,CAAC,CACN;MACH;IACF,CAAC,MAAM;MACLC,KAAK,CAACR,OAAO,CAACI,OAAO,CAAC;MACtB,OAAO,IAAIC,OAAO,CAAEJ,OAAO,IACzBK,UAAU,CAAC,MAAM;QACfL,OAAO,EAAE;MACX,CAAC,EAAE,IAAI,CAAC,CACT;IACH;EACF;AACF;AAEO,SAASQ,iBAAiBA,CAACC,OAAe,EAAE;EACjD,IAAAC,+BAAsB,EAAC,CAACD,OAAO,CAAC,CAAC,CAACE,IAAI,CACpC,MAAM;IACJd,KAAK,GAAGe,QAAQ,CAACC,aAAa,CAACJ,OAAO,CAAQ;EAChD,CAAC,EACAK,KAAc,IAAK;IAClB;IACAC,OAAO,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;EACrD,CAAC,CACF;AACH;AASO,MAAME,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC;EAClCpB;AACF,CAAC,CAAC;AAACqB,OAAA,CAAAH,MAAA,GAAAA,MAAA"}
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.Notification = void 0;
8
7
  exports.loadNotificationService = loadNotificationService;
9
- var __secret_internals = _interopRequireWildcard(require("./internal/secret_internals.js"));
8
+ var _Runtime = require("./internal/Runtime.js");
10
9
  let brick;
11
10
  function show(options) {
12
11
  if (brick) {
@@ -16,7 +15,7 @@ function show(options) {
16
15
  }
17
16
  }
18
17
  function loadNotificationService(tagName) {
19
- __secret_internals.loadBricks([tagName]).then(() => {
18
+ (0, _Runtime._internalApiLoadBricks)([tagName]).then(() => {
20
19
  brick = document.createElement(tagName);
21
20
  }, error => {
22
21
  // eslint-disable-next-line no-console
@@ -1 +1 @@
1
- {"version":3,"file":"Notification.js","names":["__secret_internals","_interopRequireWildcard","require","brick","show","options","resolve","alert","message","loadNotificationService","tagName","loadBricks","then","document","createElement","error","console","Notification","Object","freeze","exports"],"sources":["../../src/Notification.ts"],"sourcesContent":["import * as __secret_internals from \"./internal/secret_internals.js\";\n\nlet brick: {\n resolve(options: NotificationOptions): void;\n};\n\nfunction show(options: NotificationOptions) {\n if (brick) {\n brick.resolve(options);\n } else {\n alert(options.message);\n }\n}\n\nexport function loadNotificationService(tagName: string) {\n __secret_internals.loadBricks([tagName]).then(\n () => {\n brick = document.createElement(tagName) as any;\n },\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load notification service failed:\", error);\n }\n );\n}\n\nexport interface NotificationOptions {\n type?: \"success\" | \"error\" | \"warn\" | \"info\";\n message: string;\n}\n\nexport const Notification = Object.freeze({\n show,\n});\n"],"mappings":";;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAIC,KAEH;AAED,SAASC,IAAIA,CAACC,OAA4B,EAAE;EAC1C,IAAIF,KAAK,EAAE;IACTA,KAAK,CAACG,OAAO,CAACD,OAAO,CAAC;EACxB,CAAC,MAAM;IACLE,KAAK,CAACF,OAAO,CAACG,OAAO,CAAC;EACxB;AACF;AAEO,SAASC,uBAAuBA,CAACC,OAAe,EAAE;EACvDV,kBAAkB,CAACW,UAAU,CAAC,CAACD,OAAO,CAAC,CAAC,CAACE,IAAI,CAC3C,MAAM;IACJT,KAAK,GAAGU,QAAQ,CAACC,aAAa,CAACJ,OAAO,CAAQ;EAChD,CAAC,EACAK,KAAc,IAAK;IAClB;IACAC,OAAO,CAACD,KAAK,CAAC,mCAAmC,EAAEA,KAAK,CAAC;EAC3D,CAAC,CACF;AACH;AAOO,MAAME,YAAY,GAAGC,MAAM,CAACC,MAAM,CAAC;EACxCf;AACF,CAAC,CAAC;AAACgB,OAAA,CAAAH,YAAA,GAAAA,YAAA"}
1
+ {"version":3,"file":"Notification.js","names":["_Runtime","require","brick","show","options","resolve","alert","message","loadNotificationService","tagName","_internalApiLoadBricks","then","document","createElement","error","console","Notification","Object","freeze","exports"],"sources":["../../src/Notification.ts"],"sourcesContent":["import { _internalApiLoadBricks } from \"./internal/Runtime.js\";\n\nlet brick: {\n resolve(options: NotificationOptions): void;\n};\n\nfunction show(options: NotificationOptions) {\n if (brick) {\n brick.resolve(options);\n } else {\n alert(options.message);\n }\n}\n\nexport function loadNotificationService(tagName: string) {\n _internalApiLoadBricks([tagName]).then(\n () => {\n brick = document.createElement(tagName) as any;\n },\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load notification service failed:\", error);\n }\n );\n}\n\nexport interface NotificationOptions {\n type?: \"success\" | \"error\" | \"warn\" | \"info\";\n message: string;\n}\n\nexport const Notification = Object.freeze({\n show,\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAIC,KAEH;AAED,SAASC,IAAIA,CAACC,OAA4B,EAAE;EAC1C,IAAIF,KAAK,EAAE;IACTA,KAAK,CAACG,OAAO,CAACD,OAAO,CAAC;EACxB,CAAC,MAAM;IACLE,KAAK,CAACF,OAAO,CAACG,OAAO,CAAC;EACxB;AACF;AAEO,SAASC,uBAAuBA,CAACC,OAAe,EAAE;EACvD,IAAAC,+BAAsB,EAAC,CAACD,OAAO,CAAC,CAAC,CAACE,IAAI,CACpC,MAAM;IACJT,KAAK,GAAGU,QAAQ,CAACC,aAAa,CAACJ,OAAO,CAAQ;EAChD,CAAC,EACAK,KAAc,IAAK;IAClB;IACAC,OAAO,CAACD,KAAK,CAAC,mCAAmC,EAAEA,KAAK,CAAC;EAC3D,CAAC,CACF;AACH;AAOO,MAAME,YAAY,GAAGC,MAAM,CAACC,MAAM,CAAC;EACxCf;AACF,CAAC,CAAC;AAACgB,OAAA,CAAAH,YAAA,GAAAA,YAAA"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.unstable_createRoot = unstable_createRoot;
7
+ var _loader = require("@next-core/loader");
8
+ var _Renderer = require("./internal/Renderer.js");
9
+ var _RendererContext = require("./internal/RendererContext.js");
10
+ var _mount = require("./internal/mount.js");
11
+ var _handleHttpError = require("./handleHttpError.js");
12
+ var _themeAndMode = require("./themeAndMode.js");
13
+ var _enums = require("./internal/enums.js");
14
+ function unstable_createRoot(container, {
15
+ portal: _portal,
16
+ scope = "fragment"
17
+ } = {}) {
18
+ let portal = _portal;
19
+ let createPortal;
20
+ if (_portal) {
21
+ createPortal = _portal;
22
+ } else {
23
+ // Create portal container when necessary.
24
+ createPortal = () => {
25
+ portal = document.createElement("div");
26
+ portal.style.position = "absolute";
27
+ portal.style.width = portal.style.height = "0";
28
+ document.body.append(portal);
29
+ return portal;
30
+ };
31
+ }
32
+ let unmounted = false;
33
+ let rendererContext;
34
+ return {
35
+ async render(brick, {
36
+ theme
37
+ } = {}) {
38
+ if (unmounted) {
39
+ throw new Error("The root is unmounted and cannot be rendered any more");
40
+ }
41
+ const bricks = [].concat(brick);
42
+ const runtimeContext = {
43
+ pendingPermissionsPreCheck: [],
44
+ tplStateStoreMap: new Map()
45
+ };
46
+ const previousRendererContext = rendererContext;
47
+ rendererContext = new _RendererContext.RendererContext(scope);
48
+ const renderRoot = {
49
+ tag: _enums.RenderTag.ROOT,
50
+ container,
51
+ createPortal
52
+ };
53
+ let failed = false;
54
+ let output;
55
+ try {
56
+ output = await (0, _Renderer.renderBricks)(renderRoot, bricks, runtimeContext, rendererContext);
57
+ output.blockingList.push(...[...runtimeContext.tplStateStoreMap.values()].map(store => store.waitForAll()), ...runtimeContext.pendingPermissionsPreCheck);
58
+ (0, _loader.flushStableLoadBricks)();
59
+ await Promise.all(output.blockingList);
60
+ } catch (error) {
61
+ failed = true;
62
+ output = {
63
+ node: {
64
+ tag: _enums.RenderTag.BRICK,
65
+ type: "div",
66
+ properties: {
67
+ textContent: (0, _handleHttpError.httpErrorToString)(error)
68
+ },
69
+ return: renderRoot,
70
+ runtimeContext: null
71
+ },
72
+ blockingList: [],
73
+ menuRequests: []
74
+ };
75
+ }
76
+ renderRoot.child = output.node;
77
+ previousRendererContext === null || previousRendererContext === void 0 ? void 0 : previousRendererContext.dispose();
78
+ (0, _mount.unmountTree)(container);
79
+ if (portal) {
80
+ (0, _mount.unmountTree)(portal);
81
+ }
82
+ if (scope === "page") {
83
+ (0, _themeAndMode.setTheme)(theme !== null && theme !== void 0 ? theme : "light");
84
+ (0, _themeAndMode.setMode)("default");
85
+ if (!failed) {
86
+ rendererContext.dispatchBeforePageLoad();
87
+ }
88
+ (0, _themeAndMode.applyTheme)();
89
+ (0, _themeAndMode.applyMode)();
90
+ }
91
+ (0, _mount.mountTree)(renderRoot);
92
+ if (scope === "page") {
93
+ window.scrollTo(0, 0);
94
+ }
95
+ if (!failed) {
96
+ if (scope === "page") {
97
+ rendererContext.dispatchPageLoad();
98
+ // rendererContext.dispatchAnchorLoad();
99
+ }
100
+
101
+ rendererContext.dispatchOnMount();
102
+ rendererContext.initializeScrollIntoView();
103
+ rendererContext.initializeMediaChange();
104
+ }
105
+ },
106
+ unmount() {
107
+ if (unmounted) {
108
+ return;
109
+ }
110
+ unmounted = true;
111
+ (0, _mount.unmountTree)(container);
112
+ if (portal) {
113
+ (0, _mount.unmountTree)(portal);
114
+ // Only remove the portal from its parent when it's dynamic created.
115
+ if (!_portal) {
116
+ portal.remove();
117
+ }
118
+ }
119
+ }
120
+ };
121
+ }
122
+ //# sourceMappingURL=createRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRoot.js","names":["_loader","require","_Renderer","_RendererContext","_mount","_handleHttpError","_themeAndMode","_enums","unstable_createRoot","container","portal","_portal","scope","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","render","brick","theme","Error","bricks","concat","runtimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","previousRendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","failed","output","renderBricks","blockingList","push","values","map","store","waitForAll","flushStableLoadBricks","Promise","all","error","node","BRICK","type","properties","textContent","httpErrorToString","return","menuRequests","child","dispose","unmountTree","setTheme","setMode","dispatchBeforePageLoad","applyTheme","applyMode","mountTree","window","scrollTo","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","unmount","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type { BrickConf, SiteTheme } from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { RenderOutput, renderBricks } from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport type { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { httpErrorToString } from \"./handleHttpError.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\"\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n scope?: \"page\" | \"fragment\";\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement,\n { portal: _portal, scope = \"fragment\" }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n { theme }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n const runtimeContext = {\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n } as Partial<RuntimeContext> as RuntimeContext;\n\n const previousRendererContext = rendererContext;\n rendererContext = new RendererContext(scope);\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n let failed = false;\n let output: RenderOutput;\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext\n );\n\n output.blockingList.push(\n ...[...runtimeContext.tplStateStoreMap.values()].map((store) =>\n store.waitForAll()\n ),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n\n flushStableLoadBricks();\n\n await Promise.all(output.blockingList);\n } catch (error) {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n return: renderRoot,\n runtimeContext: null!,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n // Only remove the portal from its parent when it's dynamic created.\n if (!_portal) {\n portal.remove();\n }\n }\n },\n };\n}\n"],"mappings":"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"}
package/dist/cjs/index.js CHANGED
@@ -209,6 +209,18 @@ Object.keys(_history).forEach(function (key) {
209
209
  }
210
210
  });
211
211
  });
212
+ var _createRoot = require("./createRoot.js");
213
+ Object.keys(_createRoot).forEach(function (key) {
214
+ if (key === "default" || key === "__esModule") return;
215
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
216
+ if (key in exports && exports[key] === _createRoot[key]) return;
217
+ Object.defineProperty(exports, key, {
218
+ enumerable: true,
219
+ get: function () {
220
+ return _createRoot[key];
221
+ }
222
+ });
223
+ });
212
224
  var _Runtime = require("./internal/Runtime.js");
213
225
  var __secret_internals = _interopRequireWildcard(require("./internal/secret_internals.js"));
214
226
  exports.__secret_internals = __secret_internals;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_auth","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_CustomProcessors","_CustomTemplates","_fetchByProvider","_getBasePath","_getPageInfo","_handleHttpError","_history","_Runtime","__secret_internals","_interopRequireWildcard","_themeAndMode","_checkIf","_WidgetFunctions","_WidgetI18n","_StoryboardFunctionRegistry","_matchPath","_Notification","_Dialog"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.js\";\nexport * from \"./CustomProcessors.js\";\nexport * from \"./CustomTemplates.js\";\nexport * from \"./fetchByProvider.js\";\nexport * from \"./getBasePath.js\";\nexport * from \"./getPageInfo.js\";\nexport * from \"./handleHttpError.js\";\nexport * from \"./history.js\";\nexport { createRuntime, getRuntime } from \"./internal/Runtime.js\";\nimport * as __secret_internals from \"./internal/secret_internals.js\";\nexport { __secret_internals };\nexport {\n getCssPropertyValue,\n getCurrentTheme,\n getCurrentMode,\n batchSetAppsLocalTheme,\n applyTheme,\n} from \"./themeAndMode.js\";\nexport {\n checkIfOfComputed,\n checkIfByTransform,\n} from \"./internal/compute/checkIf.js\";\nexport { registerWidgetFunctions } from \"./internal/compute/WidgetFunctions.js\";\nexport { registerWidgetI18n } from \"./internal/compute/WidgetI18n.js\";\nexport { StoryboardFunctionRegistryFactory } from \"./StoryboardFunctionRegistry.js\";\nexport { matchPath } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_auth","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_CustomProcessors","_CustomTemplates","_fetchByProvider","_getBasePath","_getPageInfo","_handleHttpError","_history","_createRoot","_Runtime","__secret_internals","_interopRequireWildcard","_themeAndMode","_checkIf","_WidgetFunctions","_WidgetI18n","_StoryboardFunctionRegistry","_matchPath","_Notification","_Dialog"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.js\";\nexport * from \"./CustomProcessors.js\";\nexport * from \"./CustomTemplates.js\";\nexport * from \"./fetchByProvider.js\";\nexport * from \"./getBasePath.js\";\nexport * from \"./getPageInfo.js\";\nexport * from \"./handleHttpError.js\";\nexport * from \"./history.js\";\nexport * from \"./createRoot.js\";\nexport { createRuntime, getRuntime } from \"./internal/Runtime.js\";\nimport * as __secret_internals from \"./internal/secret_internals.js\";\nexport { __secret_internals };\nexport {\n getCssPropertyValue,\n getCurrentTheme,\n getCurrentMode,\n batchSetAppsLocalTheme,\n applyTheme,\n} from \"./themeAndMode.js\";\nexport {\n checkIfOfComputed,\n checkIfByTransform,\n} from \"./internal/compute/checkIf.js\";\nexport { registerWidgetFunctions } from \"./internal/compute/WidgetFunctions.js\";\nexport { registerWidgetI18n } from \"./internal/compute/WidgetI18n.js\";\nexport { StoryboardFunctionRegistryFactory } from \"./StoryboardFunctionRegistry.js\";\nexport { matchPath } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\n"],"mappings":"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"}
@@ -257,13 +257,11 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
257
257
  brick.properties[propName] = propValue;
258
258
  }
259
259
  }
260
+ (0, _listenOnTrackingContext.listenOnTrackingContext)(brick, trackingContextList);
260
261
  return brick.properties;
261
262
  };
262
263
  const asyncProperties = loadProperties();
263
264
  blockingList.push(asyncProperties);
264
- asyncProperties.then(() => {
265
- (0, _listenOnTrackingContext.listenOnTrackingContext)(brick, trackingContextList);
266
- });
267
265
  rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);
268
266
  let expandedBrickConf = brickConf;
269
267
  if (tplTagName) {
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["_loader","require","_general","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_checkPermissions","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","matchRoutes","output","blockingList","menuRequests","unauthenticated","route","runtimeContext","match","ctxStore","define","context","pendingPermissionsPreCheck","push","preCheckPermissionsForBrickOrRoute","type","redirectTo","redirect","asyncComputeRealValue","resolved","resolveData","transform","console","error","Error","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","key","_runtimeContext$app","brick","template","tplStateStoreId","symbolForTplStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","Array","isArray","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","ensureValidControlBrick","dataSource","renderControlNode","_slots$slot","computedDataSource","slot","String","slots","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","tplStateStoreMap","values","store","waitForAll","rerenderControlNode","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","test","customTemplates","get","loadBricksImperatively","getBrickPackages","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","customElements","enqueueStableLoadBricks","tag","RenderTag","BRICK","return","events","portal","iid","ref","trackingContextList","loadProperties","properties","asyncComputeRealProperties","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","_brick$properties","computed","propName","propValue","Object","entries","asyncProperties","then","listenOnTrackingContext","registerBrickLifeCycle","lifeCycle","expandedBrickConf","expandCustomTemplate","undefined","childRuntimeContext","loadChildren","childSlotId","slotConf","childrenOutput","child","i","j","flat","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport { asyncComputeRealProperties } from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport { preCheckPermissionsForBrickOrRoute } from \"./checkPermissions.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoutes } from \"./matchRoutes.js\";\nimport {\n RuntimeBrickConfWithTplSymbols,\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type { RenderBrick, RenderNode, RuntimeContext } from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: (Promise<StaticMenuConf | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n runtimeContext.ctxStore.define(route.context, runtimeContext);\n runtimeContext.pendingPermissionsPreCheck.push(\n preCheckPermissionsForBrickOrRoute(route, runtimeContext)\n );\n switch (route.type) {\n case \"redirect\": {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n }\n }\n }\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithTplSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n key?: number,\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n preCheckPermissionsForBrickOrRoute(brickConf, runtimeContext)\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async () => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const output = await renderControlNode();\n output.blockingList.push(\n ...[...runtimeContext.tplStateStoreMap.values()].map((store) =>\n store.waitForAll()\n ),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\n );\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await loadBricksImperatively([brickName], getBrickPackages());\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n output.blockingList.push(\n enqueueStableLoadBricks([brickName], getBrickPackages())\n );\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const trackingContextList: TrackingContextItem[] = [];\n const loadProperties = async () => {\n brick.properties = await asyncComputeRealProperties(\n brickConf.properties,\n runtimeContext,\n trackingContextList\n );\n const computedPropsFromHost =\n brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n brick.properties ??= {};\n const computed = await computedPropsFromHost;\n for (const [propName, propValue] of Object.entries(computed)) {\n brick.properties[propName] = propValue;\n }\n }\n return brick.properties;\n };\n const asyncProperties = loadProperties();\n blockingList.push(asyncProperties);\n\n asyncProperties.then(() => {\n listenOnTrackingContext(brick, trackingContextList);\n });\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncProperties\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\n mergeRenderOutput(childrenOutput, item);\n }\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.js","names":["_loader","require","_general","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_checkPermissions","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","matchRoutes","output","blockingList","menuRequests","unauthenticated","route","runtimeContext","match","ctxStore","define","context","pendingPermissionsPreCheck","push","preCheckPermissionsForBrickOrRoute","type","redirectTo","redirect","asyncComputeRealValue","resolved","resolveData","transform","console","error","Error","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","key","_runtimeContext$app","brick","template","tplStateStoreId","symbolForTplStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","Array","isArray","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","ensureValidControlBrick","dataSource","renderControlNode","_slots$slot","computedDataSource","slot","String","slots","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","tplStateStoreMap","values","store","waitForAll","rerenderControlNode","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","test","customTemplates","get","loadBricksImperatively","getBrickPackages","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","customElements","enqueueStableLoadBricks","tag","RenderTag","BRICK","return","events","portal","iid","ref","trackingContextList","loadProperties","properties","asyncComputeRealProperties","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","_brick$properties","computed","propName","propValue","Object","entries","listenOnTrackingContext","asyncProperties","registerBrickLifeCycle","lifeCycle","expandedBrickConf","expandCustomTemplate","undefined","childRuntimeContext","loadChildren","childSlotId","slotConf","childrenOutput","child","i","j","flat","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport { asyncComputeRealProperties } from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport { preCheckPermissionsForBrickOrRoute } from \"./checkPermissions.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoutes } from \"./matchRoutes.js\";\nimport {\n RuntimeBrickConfWithTplSymbols,\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type { RenderBrick, RenderNode, RuntimeContext } from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: (Promise<StaticMenuConf | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n runtimeContext.ctxStore.define(route.context, runtimeContext);\n runtimeContext.pendingPermissionsPreCheck.push(\n preCheckPermissionsForBrickOrRoute(route, runtimeContext)\n );\n switch (route.type) {\n case \"redirect\": {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n }\n }\n }\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithTplSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n key?: number,\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n preCheckPermissionsForBrickOrRoute(brickConf, runtimeContext)\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async () => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const output = await renderControlNode();\n output.blockingList.push(\n ...[...runtimeContext.tplStateStoreMap.values()].map((store) =>\n store.waitForAll()\n ),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\n );\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await loadBricksImperatively([brickName], getBrickPackages());\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n output.blockingList.push(\n enqueueStableLoadBricks([brickName], getBrickPackages())\n );\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const trackingContextList: TrackingContextItem[] = [];\n const loadProperties = async () => {\n brick.properties = await asyncComputeRealProperties(\n brickConf.properties,\n runtimeContext,\n trackingContextList\n );\n const computedPropsFromHost =\n brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n brick.properties ??= {};\n const computed = await computedPropsFromHost;\n for (const [propName, propValue] of Object.entries(computed)) {\n brick.properties[propName] = propValue;\n }\n }\n listenOnTrackingContext(brick, trackingContextList);\n return brick.properties;\n };\n const asyncProperties = loadProperties();\n blockingList.push(asyncProperties);\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncProperties\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\n mergeRenderOutput(childrenOutput, item);\n }\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n"],"mappings":"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"}
@@ -20,7 +20,7 @@ var _mount = require("./mount.js");
20
20
  var _enums = require("./enums.js");
21
21
  var _bindTemplateProxy = require("./CustomTemplates/bindTemplateProxy.js");
22
22
  const commonLifeCycles = ["onMount", "onUnmount", "onMediaChange", "onScrollIntoView"];
23
- const routerOnlyLifeCycles = ["onBeforePageLoad", "onPageLoad", "onPageLeave", "onBeforePageLeave", "onAnchorLoad", "onAnchorUnload"];
23
+ const pageOnlyLifeCycles = ["onBeforePageLoad", "onPageLoad", "onPageLeave", "onBeforePageLeave", "onAnchorLoad", "onAnchorUnload"];
24
24
  var _memoizedLifeCycle = /*#__PURE__*/new WeakMap();
25
25
  var _observers = /*#__PURE__*/new WeakMap();
26
26
  var _mediaListener = /*#__PURE__*/new WeakMap();
@@ -30,13 +30,18 @@ var _initializeRerenderBricks = /*#__PURE__*/new WeakSet();
30
30
  var _dispatchGeneralLifeCycle = /*#__PURE__*/new WeakSet();
31
31
  var _addObserver = /*#__PURE__*/new WeakSet();
32
32
  class RendererContext {
33
- constructor(_type) {
33
+ /**
34
+ * - page: render as whole page, triggering page life cycles.
35
+ * - fragment: render as fragment, not triggering page life cycles.
36
+ */
37
+
38
+ constructor(scope) {
34
39
  (0, _classPrivateMethodInitSpec2.default)(this, _addObserver);
35
40
  // Note: no `onScrollIntoView`
36
41
  (0, _classPrivateMethodInitSpec2.default)(this, _dispatchGeneralLifeCycle);
37
42
  (0, _classPrivateMethodInitSpec2.default)(this, _initializeRerenderBricks);
38
43
  (0, _classPrivateMethodInitSpec2.default)(this, _unmountBricks);
39
- (0, _defineProperty2.default)(this, "type", void 0);
44
+ (0, _defineProperty2.default)(this, "scope", void 0);
40
45
  (0, _classPrivateFieldInitSpec2.default)(this, _memoizedLifeCycle, {
41
46
  writable: true,
42
47
  value: {
@@ -65,13 +70,13 @@ class RendererContext {
65
70
  writable: true,
66
71
  value: void 0
67
72
  });
68
- this.type = _type;
73
+ this.scope = scope;
69
74
  }
70
75
  registerBrickLifeCycle(brick, lifeCycle) {
71
76
  if (!lifeCycle) {
72
77
  return;
73
78
  }
74
- const lifeCycleTypes = [...commonLifeCycles, ...(this.type === "router" ? routerOnlyLifeCycles : [])];
79
+ const lifeCycleTypes = [...commonLifeCycles, ...(this.scope === "page" ? pageOnlyLifeCycles : [])];
75
80
  for (const key of lifeCycleTypes) {
76
81
  const handlers = lifeCycle[key];
77
82
  if (handlers) {
@@ -266,7 +271,7 @@ class RendererContext {
266
271
  }
267
272
  exports.RendererContext = RendererContext;
268
273
  function _unmountBricks2(bricks) {
269
- const lifeCycleTypes = [...commonLifeCycles, ...(this.type === "router" ? routerOnlyLifeCycles : [])];
274
+ const lifeCycleTypes = [...commonLifeCycles, ...(this.scope === "page" ? pageOnlyLifeCycles : [])];
270
275
  const unmountList = [];
271
276
 
272
277
  // Clear life cycle handlers, record `onUnmount` at the same time
@@ -325,8 +330,8 @@ function _initializeRerenderBricks2(bricks) {
325
330
  }
326
331
  function _dispatchGeneralLifeCycle2(type, event) {
327
332
  // istanbul ignore next
328
- if (process.env.NODE_ENV === "development" && this.type === "useBrick" && routerOnlyLifeCycles.includes(type)) {
329
- throw new Error(`\`lifeCycle.${type}\` cannot be used in ${this.type}.\nThis is a bug of Brick Next, please report it.`);
333
+ if (process.env.NODE_ENV === "development" && this.scope === "fragment" && pageOnlyLifeCycles.includes(type)) {
334
+ throw new Error(`\`lifeCycle.${type}\` cannot be used in ${this.scope}.\nThis is a bug of Brick Next, please report it.`);
330
335
  }
331
336
  for (const {
332
337
  brick,