@next-core/runtime 1.38.1 → 1.38.3

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 (172) hide show
  1. package/dist/cjs/CustomProcessors.js.map +1 -1
  2. package/dist/cjs/CustomTemplates.js.map +1 -1
  3. package/dist/cjs/Dialog.js.map +1 -1
  4. package/dist/cjs/Notification.js.map +1 -1
  5. package/dist/cjs/StoryboardFunctionRegistry.js.map +1 -1
  6. package/dist/cjs/auth.js.map +1 -1
  7. package/dist/cjs/createRoot.js.map +1 -1
  8. package/dist/cjs/fetchByProvider.js.map +1 -1
  9. package/dist/cjs/getBasePath.js.map +1 -1
  10. package/dist/cjs/getPageInfo.js.map +1 -1
  11. package/dist/cjs/getRealValue.js.map +1 -1
  12. package/dist/cjs/getV2RuntimeFromDll.js.map +1 -1
  13. package/dist/cjs/handleHttpError.js.map +1 -1
  14. package/dist/cjs/history.js.map +1 -1
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  17. package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -1
  18. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  19. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  20. package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
  21. package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
  22. package/dist/cjs/internal/FormRenderer/constants.js.map +1 -1
  23. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  24. package/dist/cjs/internal/FormRenderer/getDefaultProperties.js.map +1 -1
  25. package/dist/cjs/internal/FormRenderer/interfaces.js.map +1 -1
  26. package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
  27. package/dist/cjs/internal/Renderer.js +2 -3
  28. package/dist/cjs/internal/Renderer.js.map +1 -1
  29. package/dist/cjs/internal/RendererContext.js +59 -59
  30. package/dist/cjs/internal/RendererContext.js.map +1 -1
  31. package/dist/cjs/internal/Router.js +51 -51
  32. package/dist/cjs/internal/Router.js.map +1 -1
  33. package/dist/cjs/internal/Runtime.js +8 -8
  34. package/dist/cjs/internal/Runtime.js.map +1 -1
  35. package/dist/cjs/internal/abortController.js.map +1 -1
  36. package/dist/cjs/internal/bindListeners.js.map +1 -1
  37. package/dist/cjs/internal/compute/StoryboardFunctions.js.map +1 -1
  38. package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
  39. package/dist/cjs/internal/compute/WidgetI18n.js.map +1 -1
  40. package/dist/cjs/internal/compute/checkIf.js.map +1 -1
  41. package/dist/cjs/internal/compute/computeRealProperties.js.map +1 -1
  42. package/dist/cjs/internal/compute/computeRealValue.js.map +1 -1
  43. package/dist/cjs/internal/compute/evaluate.js.map +1 -1
  44. package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
  45. package/dist/cjs/internal/compute/getNextStateOfUseBrick.js.map +1 -1
  46. package/dist/cjs/internal/compute/getStorageItem.js.map +1 -1
  47. package/dist/cjs/internal/compute/getTracks.js.map +1 -1
  48. package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
  49. package/dist/cjs/internal/compute/markAsComputed.js.map +1 -1
  50. package/dist/cjs/internal/compute/setProperties.js.map +1 -1
  51. package/dist/cjs/internal/compute/setRealProperties.js.map +1 -1
  52. package/dist/cjs/internal/customizeColorTheme.js.map +1 -1
  53. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  54. package/dist/cjs/internal/data/getProviderBrick.js.map +1 -1
  55. package/dist/cjs/internal/data/realTimeDataInspect.js.map +1 -1
  56. package/dist/cjs/internal/data/resolveData.js.map +1 -1
  57. package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
  58. package/dist/cjs/internal/devtools.js.map +1 -1
  59. package/dist/cjs/internal/enums.js.map +1 -1
  60. package/dist/cjs/internal/fulfilStoryboard.js.map +1 -1
  61. package/dist/cjs/internal/hasInstalledApp.js.map +1 -1
  62. package/dist/cjs/internal/historyExtended.js.map +1 -1
  63. package/dist/cjs/internal/i18n.js.map +1 -1
  64. package/dist/cjs/internal/injected.js.map +1 -1
  65. package/dist/cjs/internal/insertPreviewRoutes.js.map +1 -1
  66. package/dist/cjs/internal/interfaces.js.map +1 -1
  67. package/dist/cjs/internal/matchPath.js.map +1 -1
  68. package/dist/cjs/internal/matchRoutes.js.map +1 -1
  69. package/dist/cjs/internal/matchStoryboard.js.map +1 -1
  70. package/dist/cjs/internal/mediaQuery.js.map +1 -1
  71. package/dist/cjs/internal/mount.js.map +1 -1
  72. package/dist/cjs/internal/poll.js.map +1 -1
  73. package/dist/cjs/internal/proxyFactories.js.map +1 -1
  74. package/dist/cjs/internal/registerAppI18n.js.map +1 -1
  75. package/dist/cjs/internal/registerCustomTemplates.js.map +1 -1
  76. package/dist/cjs/internal/secret_internals.js.map +1 -1
  77. package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
  78. package/dist/cjs/internal/test_only.js.map +1 -1
  79. package/dist/cjs/isStrictMode.js.map +1 -1
  80. package/dist/cjs/setAppVariable.js.map +1 -1
  81. package/dist/cjs/setLoginStateCookie.js.map +1 -1
  82. package/dist/cjs/setUIVersion.js.map +1 -1
  83. package/dist/cjs/setWatermark.js.map +1 -1
  84. package/dist/cjs/themeAndMode.js.map +1 -1
  85. package/dist/esm/CustomProcessors.js +1 -2
  86. package/dist/esm/CustomProcessors.js.map +1 -1
  87. package/dist/esm/CustomTemplates.js +1 -2
  88. package/dist/esm/CustomTemplates.js.map +1 -1
  89. package/dist/esm/Dialog.js.map +1 -1
  90. package/dist/esm/Notification.js.map +1 -1
  91. package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
  92. package/dist/esm/auth.js.map +1 -1
  93. package/dist/esm/createRoot.js.map +1 -1
  94. package/dist/esm/fetchByProvider.js.map +1 -1
  95. package/dist/esm/getBasePath.js.map +1 -1
  96. package/dist/esm/getPageInfo.js.map +1 -1
  97. package/dist/esm/getRealValue.js.map +1 -1
  98. package/dist/esm/getV2RuntimeFromDll.js.map +1 -1
  99. package/dist/esm/handleHttpError.js.map +1 -1
  100. package/dist/esm/history.js.map +1 -1
  101. package/dist/esm/index.js.map +1 -1
  102. package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  103. package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
  104. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  105. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  106. package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
  107. package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
  108. package/dist/esm/internal/FormRenderer/constants.js.map +1 -1
  109. package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  110. package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -1
  111. package/dist/esm/internal/FormRenderer/interfaces.js.map +1 -1
  112. package/dist/esm/internal/FormRenderer/utils.js.map +1 -1
  113. package/dist/esm/internal/Renderer.js +2 -3
  114. package/dist/esm/internal/Renderer.js.map +1 -1
  115. package/dist/esm/internal/RendererContext.js +3 -3
  116. package/dist/esm/internal/RendererContext.js.map +1 -1
  117. package/dist/esm/internal/Router.js +3 -3
  118. package/dist/esm/internal/Router.js.map +1 -1
  119. package/dist/esm/internal/Runtime.js +3 -3
  120. package/dist/esm/internal/Runtime.js.map +1 -1
  121. package/dist/esm/internal/abortController.js.map +1 -1
  122. package/dist/esm/internal/bindListeners.js.map +1 -1
  123. package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -1
  124. package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
  125. package/dist/esm/internal/compute/WidgetI18n.js.map +1 -1
  126. package/dist/esm/internal/compute/checkIf.js.map +1 -1
  127. package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
  128. package/dist/esm/internal/compute/computeRealValue.js.map +1 -1
  129. package/dist/esm/internal/compute/evaluate.js.map +1 -1
  130. package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
  131. package/dist/esm/internal/compute/getNextStateOfUseBrick.js.map +1 -1
  132. package/dist/esm/internal/compute/getStorageItem.js.map +1 -1
  133. package/dist/esm/internal/compute/getTracks.js.map +1 -1
  134. package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
  135. package/dist/esm/internal/compute/markAsComputed.js.map +1 -1
  136. package/dist/esm/internal/compute/setProperties.js.map +1 -1
  137. package/dist/esm/internal/compute/setRealProperties.js.map +1 -1
  138. package/dist/esm/internal/customizeColorTheme.js.map +1 -1
  139. package/dist/esm/internal/data/DataStore.js.map +1 -1
  140. package/dist/esm/internal/data/getProviderBrick.js.map +1 -1
  141. package/dist/esm/internal/data/realTimeDataInspect.js.map +1 -1
  142. package/dist/esm/internal/data/resolveData.js.map +1 -1
  143. package/dist/esm/internal/data/resolveDataStore.js.map +1 -1
  144. package/dist/esm/internal/devtools.js.map +1 -1
  145. package/dist/esm/internal/enums.js.map +1 -1
  146. package/dist/esm/internal/fulfilStoryboard.js.map +1 -1
  147. package/dist/esm/internal/hasInstalledApp.js.map +1 -1
  148. package/dist/esm/internal/historyExtended.js.map +1 -1
  149. package/dist/esm/internal/i18n.js.map +1 -1
  150. package/dist/esm/internal/injected.js.map +1 -1
  151. package/dist/esm/internal/insertPreviewRoutes.js.map +1 -1
  152. package/dist/esm/internal/interfaces.js.map +1 -1
  153. package/dist/esm/internal/matchPath.js.map +1 -1
  154. package/dist/esm/internal/matchRoutes.js.map +1 -1
  155. package/dist/esm/internal/matchStoryboard.js.map +1 -1
  156. package/dist/esm/internal/mediaQuery.js.map +1 -1
  157. package/dist/esm/internal/mount.js.map +1 -1
  158. package/dist/esm/internal/poll.js.map +1 -1
  159. package/dist/esm/internal/proxyFactories.js.map +1 -1
  160. package/dist/esm/internal/registerAppI18n.js.map +1 -1
  161. package/dist/esm/internal/registerCustomTemplates.js.map +1 -1
  162. package/dist/esm/internal/secret_internals.js.map +1 -1
  163. package/dist/esm/internal/setupRootRuntimeContext.js.map +1 -1
  164. package/dist/esm/internal/test_only.js.map +1 -1
  165. package/dist/esm/isStrictMode.js.map +1 -1
  166. package/dist/esm/setAppVariable.js.map +1 -1
  167. package/dist/esm/setLoginStateCookie.js.map +1 -1
  168. package/dist/esm/setUIVersion.js.map +1 -1
  169. package/dist/esm/setWatermark.js.map +1 -1
  170. package/dist/esm/themeAndMode.js.map +1 -1
  171. package/dist/types/tsdoc-metadata.json +1 -1
  172. package/package.json +13 -13
@@ -8,6 +8,9 @@ exports.RendererContext = void 0;
8
8
  var _classPrivateMethodInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateMethodInitSpec"));
9
9
  var _classPrivateFieldInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldInitSpec"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _assertClassBrand2 = _interopRequireDefault(require("@babel/runtime/helpers/assertClassBrand"));
12
+ var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet2"));
13
+ var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet2"));
11
14
  var _lodash = require("lodash");
12
15
  var _bindListeners = require("./bindListeners.js");
13
16
  var _history = require("../history.js");
@@ -17,9 +20,6 @@ var _mount = require("./mount.js");
17
20
  var _enums = require("./enums.js");
18
21
  var _bindTemplateProxy = require("./CustomTemplates/bindTemplateProxy.js");
19
22
  var _Runtime = require("./Runtime.js");
20
- function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
21
- function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
22
- function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
23
23
  const commonLifeCycles = ["onMount", "onUnmount", "onMediaChange", "onScrollIntoView", "onMessage", "onMessageClose"];
24
24
  const pageOnlyLifeCycles = ["onBeforePageLoad", "onPageLoad", "onPageLeave", "onBeforePageLeave", "onAnchorLoad", "onAnchorUnload"];
25
25
  var _routeHelper = /*#__PURE__*/new WeakMap();
@@ -67,18 +67,18 @@ class RendererContext {
67
67
  (0, _classPrivateFieldInitSpec2.default)(this, _incrementalRenderStates, new Map());
68
68
  this.scope = scope;
69
69
  this.unknownBricks = (_options$unknownBrick = options === null || options === void 0 ? void 0 : options.unknownBricks) !== null && _options$unknownBrick !== void 0 ? _options$unknownBrick : "throw";
70
- _classPrivateFieldSet(_routeHelper, this, options === null || options === void 0 ? void 0 : options.routeHelper);
70
+ (0, _classPrivateFieldSet2.default)(_routeHelper, this, options === null || options === void 0 ? void 0 : options.routeHelper);
71
71
  this.renderId = options === null || options === void 0 ? void 0 : options.renderId;
72
72
  }
73
73
  setInitialMenuRequestNode(menuRequestNode) {
74
- _classPrivateFieldSet(_initialMenuRequestNode, this, menuRequestNode);
74
+ (0, _classPrivateFieldSet2.default)(_initialMenuRequestNode, this, menuRequestNode);
75
75
  }
76
76
  memoizeMenuRequestNode(routes, menuRequestNode) {
77
- _classPrivateFieldGet(_memoizedMenuRequestNodeMap, this).set(routes, menuRequestNode);
77
+ (0, _classPrivateFieldGet2.default)(_memoizedMenuRequestNodeMap, this).set(routes, menuRequestNode);
78
78
  }
79
79
  getMenuRequests() {
80
80
  const menuRequests = [];
81
- let current = _classPrivateFieldGet(_initialMenuRequestNode, this);
81
+ let current = (0, _classPrivateFieldGet2.default)(_initialMenuRequestNode, this);
82
82
  while (current) {
83
83
  if (current.request) {
84
84
  menuRequests.push(current.request);
@@ -96,8 +96,8 @@ class RendererContext {
96
96
  return menuRequests;
97
97
  }
98
98
  async reMergeMenuRequestNodes(parentMenuRequestNode, routes, menuRequestNode = {}) {
99
- const node = _classPrivateFieldGet(_memoizedMenuRequestNodeMap, this).get(routes);
100
- _classPrivateFieldGet(_memoizedMenuRequestNodeMap, this).set(routes, menuRequestNode);
99
+ const node = (0, _classPrivateFieldGet2.default)(_memoizedMenuRequestNodeMap, this).get(routes);
100
+ (0, _classPrivateFieldGet2.default)(_memoizedMenuRequestNodeMap, this).set(routes, menuRequestNode);
101
101
  let current = parentMenuRequestNode.child;
102
102
  let previousSibling;
103
103
  while (current) {
@@ -113,13 +113,13 @@ class RendererContext {
113
113
  } else {
114
114
  parentMenuRequestNode.child = menuRequestNode;
115
115
  }
116
- await _classPrivateFieldGet(_routeHelper, this).mergeMenus(this.getMenuRequests());
116
+ await (0, _classPrivateFieldGet2.default)(_routeHelper, this).mergeMenus(this.getMenuRequests());
117
117
  }
118
118
  reBailout(output) {
119
- return _classPrivateFieldGet(_routeHelper, this).bailout(output);
119
+ return (0, _classPrivateFieldGet2.default)(_routeHelper, this).bailout(output);
120
120
  }
121
121
  reCatch(error, returnNode) {
122
- return _classPrivateFieldGet(_routeHelper, this).catch(error, returnNode);
122
+ return (0, _classPrivateFieldGet2.default)(_routeHelper, this).catch(error, returnNode);
123
123
  }
124
124
  async didPerformIncrementalRender(location, prevLocation) {
125
125
  let finalResult = false;
@@ -129,7 +129,7 @@ class RendererContext {
129
129
  for (const {
130
130
  parentRoutes,
131
131
  callback
132
- } of [..._classPrivateFieldGet(_incrementalRenderStates, this).values()].reverse()) {
132
+ } of [...(0, _classPrivateFieldGet2.default)(_incrementalRenderStates, this).values()].reverse()) {
133
133
  const parentRoute = parentRoutes[parentRoutes.length - 1];
134
134
  if (shouldIgnoreRoutes.includes(parentRoute)) {
135
135
  // Do not re-render parent routes if any of its children has performed incremental rendering.
@@ -156,7 +156,7 @@ class RendererContext {
156
156
  */
157
157
  performIncrementalRender(slotConf, parentRoutes, callback) {
158
158
  // Override stale incremental render callbacks
159
- _classPrivateFieldGet(_incrementalRenderStates, this).set(slotConf, {
159
+ (0, _classPrivateFieldGet2.default)(_incrementalRenderStates, this).set(slotConf, {
160
160
  parentRoutes,
161
161
  callback
162
162
  });
@@ -169,7 +169,7 @@ class RendererContext {
169
169
  for (const key of lifeCycleTypes) {
170
170
  const handlers = lifeCycle[key];
171
171
  if (handlers) {
172
- _classPrivateFieldGet(_memoizedLifeCycle, this)[key].push({
172
+ (0, _classPrivateFieldGet2.default)(_memoizedLifeCycle, this)[key].push({
173
173
  brick,
174
174
  handlers: handlers
175
175
  });
@@ -182,22 +182,22 @@ class RendererContext {
182
182
  }
183
183
  }
184
184
  registerArbitraryLifeCycle(lifeCycle, fn) {
185
- const arbitraryCallbacks = _classPrivateFieldGet(_arbitraryLifeCycle, this).get(lifeCycle);
185
+ const arbitraryCallbacks = (0, _classPrivateFieldGet2.default)(_arbitraryLifeCycle, this).get(lifeCycle);
186
186
  if (arbitraryCallbacks) {
187
187
  arbitraryCallbacks.add(fn);
188
188
  } else {
189
- _classPrivateFieldGet(_arbitraryLifeCycle, this).set(lifeCycle, new Set([fn]));
189
+ (0, _classPrivateFieldGet2.default)(_arbitraryLifeCycle, this).set(lifeCycle, new Set([fn]));
190
190
  }
191
191
  }
192
192
  memoize(slotId, keyPath, node, returnNode) {
193
- if (!_classPrivateFieldGet(_memoized, this)) {
194
- _classPrivateFieldSet(_memoized, this, new WeakMap());
193
+ if (!(0, _classPrivateFieldGet2.default)(_memoized, this)) {
194
+ (0, _classPrivateFieldSet2.default)(_memoized, this, new WeakMap());
195
195
  }
196
196
  const memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
197
- let mem = _classPrivateFieldGet(_memoized, this).get(returnNode);
197
+ let mem = (0, _classPrivateFieldGet2.default)(_memoized, this).get(returnNode);
198
198
  if (!mem) {
199
199
  mem = new Map();
200
- _classPrivateFieldGet(_memoized, this).set(returnNode, mem);
200
+ (0, _classPrivateFieldGet2.default)(_memoized, this).set(returnNode, mem);
201
201
  }
202
202
  mem.set(memKey, {
203
203
  node,
@@ -209,7 +209,7 @@ class RendererContext {
209
209
  reRender(slotId, keyPath, node, returnNode) {
210
210
  const memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
211
211
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
212
- const memoized = _classPrivateFieldGet(_memoized, this).get(returnNode).get(memKey);
212
+ const memoized = (0, _classPrivateFieldGet2.default)(_memoized, this).get(returnNode).get(memKey);
213
213
  const {
214
214
  node: prevNode,
215
215
  last: prevLast,
@@ -275,7 +275,7 @@ class RendererContext {
275
275
 
276
276
  // Unmount previous bricks, including their descendants
277
277
  const removeBricks = getBrickRange(prevNode, prevLast);
278
- _assertClassBrand(_RendererContext_brand, this, _unmountBricks).call(this, removeBricks);
278
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _unmountBricks).call(this, removeBricks);
279
279
  (0, _mount.mountTree)(renderRoot);
280
280
 
281
281
  // Connect back
@@ -324,85 +324,85 @@ class RendererContext {
324
324
  portal.insertBefore(portalFragment, insertPortalBeforeChild);
325
325
  }
326
326
  const newBricks = getBrickRange(node, last);
327
- _assertClassBrand(_RendererContext_brand, this, _initializeRerenderBricks).call(this, newBricks);
327
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _initializeRerenderBricks).call(this, newBricks);
328
328
  }
329
329
  dispose() {
330
- for (const list of Object.values(_classPrivateFieldGet(_memoizedLifeCycle, this))) {
330
+ for (const list of Object.values((0, _classPrivateFieldGet2.default)(_memoizedLifeCycle, this))) {
331
331
  list.length = 0;
332
332
  }
333
- for (const list of _classPrivateFieldGet(_observers, this).values()) {
333
+ for (const list of (0, _classPrivateFieldGet2.default)(_observers, this).values()) {
334
334
  for (const observer of list) {
335
335
  observer.disconnect();
336
336
  }
337
337
  list.length = 0;
338
338
  }
339
- _classPrivateFieldGet(_observers, this).clear();
340
- if (_classPrivateFieldGet(_mediaListener, this)) {
341
- _mediaQuery.mediaEventTarget.removeEventListener("change", _classPrivateFieldGet(_mediaListener, this));
342
- _classPrivateFieldSet(_mediaListener, this, undefined);
339
+ (0, _classPrivateFieldGet2.default)(_observers, this).clear();
340
+ if ((0, _classPrivateFieldGet2.default)(_mediaListener, this)) {
341
+ _mediaQuery.mediaEventTarget.removeEventListener("change", (0, _classPrivateFieldGet2.default)(_mediaListener, this));
342
+ (0, _classPrivateFieldSet2.default)(_mediaListener, this, undefined);
343
343
  }
344
- _classPrivateFieldSet(_memoized, this, undefined);
345
- _classPrivateFieldGet(_arbitraryLifeCycle, this).clear();
346
- _classPrivateFieldGet(_incrementalRenderStates, this).clear();
347
- _classPrivateFieldSet(_memoizedMenuRequestNodeMap, this, undefined);
344
+ (0, _classPrivateFieldSet2.default)(_memoized, this, undefined);
345
+ (0, _classPrivateFieldGet2.default)(_arbitraryLifeCycle, this).clear();
346
+ (0, _classPrivateFieldGet2.default)(_incrementalRenderStates, this).clear();
347
+ (0, _classPrivateFieldSet2.default)(_memoizedMenuRequestNodeMap, this, undefined);
348
348
  }
349
349
 
350
350
  // Note: no `onScrollIntoView` and `onMessage`
351
351
 
352
352
  dispatchBeforePageLoad() {
353
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onBeforePageLoad", new CustomEvent("page.beforeLoad"));
353
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onBeforePageLoad", new CustomEvent("page.beforeLoad"));
354
354
  }
355
355
  dispatchPageLoad() {
356
356
  const event = new CustomEvent("page.load");
357
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onPageLoad", event);
357
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onPageLoad", event);
358
358
  // Currently only for e2e testing
359
359
  window.dispatchEvent(event);
360
360
  }
361
361
  dispatchBeforePageLeave(detail) {
362
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onBeforePageLeave", new CustomEvent("page.beforeLeave", {
362
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onBeforePageLeave", new CustomEvent("page.beforeLeave", {
363
363
  detail
364
364
  }));
365
365
  }
366
366
  dispatchPageLeave() {
367
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onPageLeave", new CustomEvent("page.leave"));
367
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onPageLeave", new CustomEvent("page.leave"));
368
368
  }
369
369
  dispatchAnchorLoad() {
370
370
  const {
371
371
  hash
372
372
  } = (0, _history.getHistory)().location;
373
373
  if (hash && hash !== "#") {
374
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onAnchorLoad", new CustomEvent("anchor.load", {
374
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onAnchorLoad", new CustomEvent("anchor.load", {
375
375
  detail: {
376
376
  hash,
377
377
  anchor: hash.substring(1)
378
378
  }
379
379
  }));
380
380
  } else {
381
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onAnchorUnload", new CustomEvent("anchor.unload"));
381
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onAnchorUnload", new CustomEvent("anchor.unload"));
382
382
  }
383
383
  }
384
384
  initializeScrollIntoView() {
385
385
  for (const {
386
386
  brick,
387
387
  handlers: conf
388
- } of _classPrivateFieldGet(_memoizedLifeCycle, this).onScrollIntoView) {
389
- _assertClassBrand(_RendererContext_brand, this, _addObserver).call(this, brick, conf);
388
+ } of (0, _classPrivateFieldGet2.default)(_memoizedLifeCycle, this).onScrollIntoView) {
389
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _addObserver).call(this, brick, conf);
390
390
  }
391
391
  }
392
392
  initializeMediaChange() {
393
- _classPrivateFieldSet(_mediaListener, this, event => {
394
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMediaChange", new CustomEvent("media.change", {
393
+ (0, _classPrivateFieldSet2.default)(_mediaListener, this, event => {
394
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMediaChange", new CustomEvent("media.change", {
395
395
  detail: (0, _proxyFactories.getReadOnlyProxy)(event.detail)
396
396
  }));
397
397
  });
398
- _mediaQuery.mediaEventTarget.addEventListener("change", _classPrivateFieldGet(_mediaListener, this));
398
+ _mediaQuery.mediaEventTarget.addEventListener("change", (0, _classPrivateFieldGet2.default)(_mediaListener, this));
399
399
  }
400
400
  initializeMessageDispatcher() {
401
401
  var _hooks$messageDispatc2;
402
402
  for (const {
403
403
  brick,
404
404
  handlers: confList
405
- } of _classPrivateFieldGet(_memoizedLifeCycle, this).onMessage) {
405
+ } of (0, _classPrivateFieldGet2.default)(_memoizedLifeCycle, this).onMessage) {
406
406
  for (const conf of [].concat(confList)) {
407
407
  var _hooks$messageDispatc;
408
408
  _Runtime.hooks === null || _Runtime.hooks === void 0 || (_hooks$messageDispatc = _Runtime.hooks.messageDispatcher) === null || _hooks$messageDispatc === void 0 || _hooks$messageDispatc.onMessage(conf.channel, detail => {
@@ -413,14 +413,14 @@ class RendererContext {
413
413
  }
414
414
  }
415
415
  _Runtime.hooks === null || _Runtime.hooks === void 0 || (_hooks$messageDispatc2 = _Runtime.hooks.messageDispatcher) === null || _hooks$messageDispatc2 === void 0 || _hooks$messageDispatc2.onClose(() => {
416
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMessageClose", new CustomEvent("message.close"));
416
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMessageClose", new CustomEvent("message.close"));
417
417
  });
418
418
  }
419
419
  dispatchOnMount() {
420
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMount", new CustomEvent("mount"));
420
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMount", new CustomEvent("mount"));
421
421
  }
422
422
  dispatchOnUnmount() {
423
- _assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onUnmount", new CustomEvent("unmount"));
423
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onUnmount", new CustomEvent("unmount"));
424
424
  }
425
425
  }
426
426
  exports.RendererContext = RendererContext;
@@ -430,7 +430,7 @@ function _unmountBricks(bricks) {
430
430
 
431
431
  // Clear life cycle handlers, record `onUnmount` at the same time
432
432
  for (const key of lifeCycleTypes) {
433
- const removed = (0, _lodash.remove)(_classPrivateFieldGet(_memoizedLifeCycle, this)[key], item => bricks.has(item.brick));
433
+ const removed = (0, _lodash.remove)((0, _classPrivateFieldGet2.default)(_memoizedLifeCycle, this)[key], item => bricks.has(item.brick));
434
434
  if (key === "onUnmount") {
435
435
  unmountList.push(...removed);
436
436
  }
@@ -439,13 +439,13 @@ function _unmountBricks(bricks) {
439
439
  // Clear intersection observers
440
440
  for (const brick of bricks) {
441
441
  var _brick$element, _brick$element2;
442
- const observers = _classPrivateFieldGet(_observers, this).get(brick);
442
+ const observers = (0, _classPrivateFieldGet2.default)(_observers, this).get(brick);
443
443
  if (observers !== null && observers !== void 0 && observers.length) {
444
444
  for (const observer of observers) {
445
445
  observer.disconnect();
446
446
  }
447
447
  observers.length = 0;
448
- _classPrivateFieldGet(_observers, this).delete(brick);
448
+ (0, _classPrivateFieldGet2.default)(_observers, this).delete(brick);
449
449
  }
450
450
  (0, _bindTemplateProxy.unbindTemplateProxy)(brick);
451
451
  (_brick$element = brick.element) === null || _brick$element === void 0 || delete _brick$element.$$tplStateStore;
@@ -468,7 +468,7 @@ function _initializeRerenderBricks(bricks) {
468
468
  for (const {
469
469
  brick,
470
470
  handlers
471
- } of _classPrivateFieldGet(_memoizedLifeCycle, this).onMount) {
471
+ } of (0, _classPrivateFieldGet2.default)(_memoizedLifeCycle, this).onMount) {
472
472
  if (bricks.has(brick)) {
473
473
  (0, _bindListeners.listenerFactory)(handlers, brick.runtimeContext, brick)(mountEvent);
474
474
  }
@@ -476,9 +476,9 @@ function _initializeRerenderBricks(bricks) {
476
476
  for (const {
477
477
  brick,
478
478
  handlers: conf
479
- } of _classPrivateFieldGet(_memoizedLifeCycle, this).onScrollIntoView) {
479
+ } of (0, _classPrivateFieldGet2.default)(_memoizedLifeCycle, this).onScrollIntoView) {
480
480
  if (bricks.has(brick)) {
481
- _assertClassBrand(_RendererContext_brand, this, _addObserver).call(this, brick, conf);
481
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _addObserver).call(this, brick, conf);
482
482
  }
483
483
  }
484
484
  }
@@ -490,10 +490,10 @@ function _dispatchGeneralLifeCycle(type, event) {
490
490
  for (const {
491
491
  brick,
492
492
  handlers
493
- } of _classPrivateFieldGet(_memoizedLifeCycle, this)[type]) {
493
+ } of (0, _classPrivateFieldGet2.default)(_memoizedLifeCycle, this)[type]) {
494
494
  (0, _bindListeners.listenerFactory)(handlers, brick.runtimeContext, brick)(event);
495
495
  }
496
- const arbitraryCallbacks = _classPrivateFieldGet(_arbitraryLifeCycle, this).get(type);
496
+ const arbitraryCallbacks = (0, _classPrivateFieldGet2.default)(_arbitraryLifeCycle, this).get(type);
497
497
  if (arbitraryCallbacks) {
498
498
  for (const fn of arbitraryCallbacks) {
499
499
  fn();
@@ -516,10 +516,10 @@ function _addObserver(brick, conf) {
516
516
  threshold
517
517
  });
518
518
  observer.observe(brick.element);
519
- let list = _classPrivateFieldGet(_observers, this).get(brick);
519
+ let list = (0, _classPrivateFieldGet2.default)(_observers, this).get(brick);
520
520
  if (!list) {
521
521
  list = [];
522
- _classPrivateFieldGet(_observers, this).set(brick, list);
522
+ (0, _classPrivateFieldGet2.default)(_observers, this).set(brick, list);
523
523
  }
524
524
  list.push(observer);
525
525
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RendererContext.js","names":["_lodash","require","_bindListeners","_history","_proxyFactories","_mediaQuery","_mount","_enums","_bindTemplateProxy","_Runtime","_classPrivateFieldGet","s","a","get","_assertClassBrand","_classPrivateFieldSet","r","set","e","t","n","has","arguments","length","TypeError","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_RendererContext_brand","WeakSet","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec2","default","_defineProperty2","_classPrivateFieldInitSpec2","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","routeHelper","renderId","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","node","previousSibling","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","finalResult","shouldIgnoreRoutes","parentRoutes","callback","values","reverse","parentRoute","includes","result","slice","performIncrementalRender","slotConf","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","isEmpty","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","insertPortalBeforeChildCandidates","tag","RenderTag","PLACEHOLDER","_getNextNormalNode$el","_getNextNormalNode","_getNextPortalNode","getNextNormalNode","element","nextSibling","getNextPortalNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","HTMLElement","tagName","prevSibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","ROOT","container","createPortal","removeBricks","getBrickRange","_unmountBricks","call","mountTree","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","observer","disconnect","clear","mediaEventTarget","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","getHistory","anchor","substring","initializeScrollIntoView","conf","_addObserver","initializeMediaChange","getReadOnlyProxy","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc2","confList","concat","_hooks$messageDispatc","hooks","messageDispatcher","channel","listenerFactory","runtimeContext","onClose","dispatchOnMount","dispatchOnUnmount","exports","bricks","unmountList","removed","remove","item","_brick$element","_brick$element2","observers","delete","unbindTemplateProxy","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","getSpecifiedNormalNode","next","BRICK","getSpecifiedPortalNode","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n SlotConfOfRoutes,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { Action, Location } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderNode,\n RenderReturnNode,\n RenderRoot,\n} from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { hooks } from \"./Runtime.js\";\nimport type { RenderOutput } from \"./Renderer.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\ntype LocationChangeCallback = (\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n) => Promise<boolean | null>;\n\ninterface IncrementalRenderState {\n parentRoutes: RouteConf[];\n callback: LocationChangeCallback;\n}\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n \"onMessage\",\n \"onMessageClose\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n routeHelper?: RouteHelper;\n renderId?: string;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n catch: (\n error: unknown,\n returnNode: RenderReturnNode\n ) =>\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n };\n}\n\nexport class RendererContext {\n /**\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n public readonly scope: \"page\" | \"fragment\";\n\n public readonly unknownBricks: \"silent\" | \"throw\";\n\n public readonly renderId: string | undefined;\n\n #routeHelper: RouteHelper | undefined;\n\n constructor(scope: \"page\" | \"fragment\", options?: RendererContextOptions) {\n this.scope = scope;\n this.unknownBricks = options?.unknownBricks ?? \"throw\";\n this.#routeHelper = options?.routeHelper;\n this.renderId = options?.renderId;\n }\n\n #memoizedLifeCycle: MemoizedLifeCycle<\n Required<\n Pick<\n BrickLifeCycle,\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onScrollIntoView\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMessage\"\n | \"onMessageClose\"\n >\n >\n > = {\n onBeforePageLoad: [],\n onPageLoad: [],\n onPageLeave: [],\n onBeforePageLeave: [],\n onAnchorLoad: [],\n onAnchorUnload: [],\n onMediaChange: [],\n onScrollIntoView: [],\n onMount: [],\n onUnmount: [],\n onMessage: [],\n onMessageClose: [],\n };\n #observers = new Map<RenderBrick, IntersectionObserver[]>();\n #mediaListener: EventListener | undefined;\n\n #arbitraryLifeCycle = new Map<string, Set<() => void>>();\n\n #memoized?: WeakMap<\n RenderNode,\n Map<\n string,\n {\n node?: RenderChildNode;\n last?: RenderChildNode;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n\n #initialMenuRequestNode?: MenuRequestNode;\n #memoizedMenuRequestNodeMap?: WeakMap<\n RouteConf[],\n MenuRequestNode | undefined\n > = new WeakMap<RouteConf[], MenuRequestNode | undefined>();\n\n setInitialMenuRequestNode(menuRequestNode: MenuRequestNode) {\n this.#initialMenuRequestNode = menuRequestNode;\n }\n\n memoizeMenuRequestNode(\n routes: RouteConf[],\n menuRequestNode: MenuRequestNode\n ) {\n this.#memoizedMenuRequestNodeMap!.set(routes, menuRequestNode);\n }\n\n getMenuRequests() {\n const menuRequests: Promise<StaticMenuConf>[] = [];\n let current = this.#initialMenuRequestNode;\n while (current) {\n if (current.request) {\n menuRequests.push(current.request);\n }\n if (current.child) {\n current = current.child;\n } else {\n while (current && !current.sibling) {\n current = current.return;\n }\n current = current?.sibling;\n }\n }\n return menuRequests;\n }\n\n async reMergeMenuRequestNodes(\n parentMenuRequestNode: MenuRequestNode,\n routes: RouteConf[],\n menuRequestNode: MenuRequestNode = {}\n ) {\n const node = this.#memoizedMenuRequestNodeMap!.get(routes);\n this.#memoizedMenuRequestNodeMap!.set(routes, menuRequestNode);\n\n let current = parentMenuRequestNode.child;\n let previousSibling: MenuRequestNode | undefined;\n\n while (current) {\n if (current === node) {\n break;\n }\n previousSibling = current;\n current = current.sibling;\n }\n\n if (previousSibling) {\n previousSibling.sibling = menuRequestNode;\n menuRequestNode.sibling = node?.sibling;\n } else {\n parentMenuRequestNode.child = menuRequestNode;\n }\n\n await this.#routeHelper!.mergeMenus(this.getMenuRequests());\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode);\n }\n\n #incrementalRenderStates = new Map<\n SlotConfOfRoutes,\n IncrementalRenderState\n >();\n\n async didPerformIncrementalRender(\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n ) {\n let finalResult = false;\n const shouldIgnoreRoutes: RouteConf[] = [];\n // Perform incremental rendering from inside out.\n // This allows nested incremental sub-routes.\n for (const { parentRoutes, callback } of [\n ...this.#incrementalRenderStates.values(),\n ].reverse()) {\n const parentRoute = parentRoutes[parentRoutes.length - 1];\n if (shouldIgnoreRoutes.includes(parentRoute)) {\n // Do not re-render parent routes if any of its children has performed incremental rendering.\n // In the meantime, allow sibling-routes to perform incremental rendering.\n continue;\n }\n const result = await callback(location, prevLocation);\n // When result is null, it means the incremental rendering is tried but routes missed.\n // In this case, we should continue to re-render the parent routes.\n if (result) {\n shouldIgnoreRoutes.push(...parentRoutes.slice(0, -1));\n }\n // Mark incremental rendering as performed at final if result is true or null.\n if (result !== false) {\n finalResult = true;\n }\n }\n return finalResult;\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(\n slotConf: SlotConfOfRoutes,\n parentRoutes: RouteConf[],\n callback: LocationChangeCallback\n ) {\n // Override stale incremental render callbacks\n this.#incrementalRenderStates.set(slotConf, { parentRoutes, callback });\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n if (!this.#memoized) {\n this.#memoized = new WeakMap();\n }\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n let mem = this.#memoized.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoized.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n reRender(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoized!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n let insertBeforeChild: ChildNode | null;\n const insertPortalBeforeChildCandidates: ChildNode[] = [];\n if (prevNode?.tag === RenderTag.PLACEHOLDER) {\n insertBeforeChild = getNextNormalNode(prevNode)?.element ?? null;\n // Todo(steve): handle portal bricks from useBrick.\n const nextSibling = getNextPortalNode(prevNode)?.element;\n if (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n }\n } else {\n insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n let nextSibling = prevLastPortal?.element?.nextSibling;\n while (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n // Collect all portal bricks from useBrick, until found a normal portal\n // brick other than from useBrick.\n // Because useBrick could be removed during unmount.\n if (\n !(nextSibling instanceof HTMLElement && nextSibling.tagName === \"DIV\")\n ) {\n break;\n }\n nextSibling = nextSibling.nextSibling;\n }\n }\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderChildNode | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n // istanbul ignore next\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\n \"Cannot find render root node. This is a bug of Brick Next, please report it.\"\n );\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n let insertPortalBeforeChild: ChildNode | null = null;\n for (const candidate of insertPortalBeforeChildCandidates) {\n // Those candidates from useBrick could be removed during unmount.\n // So we need to check if they are still in the portal.\n if (portal.contains(candidate)) {\n insertPortalBeforeChild = candidate;\n break;\n }\n }\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoized = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#incrementalRenderStates.clear();\n this.#memoizedMenuRequestNodeMap = undefined;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(\n node: RenderChildNode | undefined\n): RenderChildNode | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, false);\n}\n\nfunction getNextNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, true);\n}\n\nfunction getSpecifiedNormalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && !current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, false);\n}\n\nfunction getNextPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, true);\n}\n\nfunction getSpecifiedPortalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderChildNode | undefined,\n to: RenderChildNode | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n range.add(current);\n }\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"RendererContext.js","names":["_lodash","require","_bindListeners","_history","_proxyFactories","_mediaQuery","_mount","_enums","_bindTemplateProxy","_Runtime","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_RendererContext_brand","WeakSet","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec2","default","_defineProperty2","_classPrivateFieldInitSpec2","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet2","routeHelper","renderId","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","_classPrivateFieldGet2","set","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","node","get","previousSibling","mergeMenus","reBailout","output","bailout","reCatch","error","returnNode","catch","didPerformIncrementalRender","location","prevLocation","finalResult","shouldIgnoreRoutes","parentRoutes","callback","values","reverse","parentRoute","length","includes","result","slice","performIncrementalRender","slotConf","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","isEmpty","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","memoize","slotId","keyPath","memKey","join","mem","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","reRender","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","insertPortalBeforeChildCandidates","tag","RenderTag","PLACEHOLDER","_getNextNormalNode$el","_getNextNormalNode","_getNextPortalNode","getNextNormalNode","element","nextSibling","getNextPortalNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","HTMLElement","tagName","prevSibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","ROOT","container","createPortal","removeBricks","getBrickRange","_assertClassBrand2","_unmountBricks","call","mountTree","_returnNode$container","insertBefore","_returnNode$element","childNodes","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","observer","disconnect","clear","mediaEventTarget","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","getHistory","anchor","substring","initializeScrollIntoView","conf","_addObserver","initializeMediaChange","getReadOnlyProxy","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc2","confList","concat","_hooks$messageDispatc","hooks","messageDispatcher","channel","listenerFactory","runtimeContext","onClose","dispatchOnMount","dispatchOnUnmount","exports","bricks","unmountList","removed","remove","item","has","_brick$element","_brick$element2","observers","delete","unbindTemplateProxy","$$tplStateStore","unmountEvent","mountEvent","type","process","env","NODE_ENV","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","getSpecifiedNormalNode","next","BRICK","getSpecifiedPortalNode","_currentReturn","currentReturn","from","to","range","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n MessageConf,\n RouteConf,\n ScrollIntoViewConf,\n SlotConfOfRoutes,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { Action, Location } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderNode,\n RenderReturnNode,\n RenderRoot,\n} from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { hooks } from \"./Runtime.js\";\nimport type { RenderOutput } from \"./Renderer.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\ntype LocationChangeCallback = (\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n) => Promise<boolean | null>;\n\ninterface IncrementalRenderState {\n parentRoutes: RouteConf[];\n callback: LocationChangeCallback;\n}\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n \"onMessage\",\n \"onMessageClose\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n routeHelper?: RouteHelper;\n renderId?: string;\n}\n\nexport interface RouteHelper {\n bailout: (output: RenderOutput) => true | undefined;\n mergeMenus: (menuRequests: Promise<StaticMenuConf>[]) => Promise<void>;\n catch: (\n error: unknown,\n returnNode: RenderReturnNode\n ) =>\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n };\n}\n\nexport class RendererContext {\n /**\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n public readonly scope: \"page\" | \"fragment\";\n\n public readonly unknownBricks: \"silent\" | \"throw\";\n\n public readonly renderId: string | undefined;\n\n #routeHelper: RouteHelper | undefined;\n\n constructor(scope: \"page\" | \"fragment\", options?: RendererContextOptions) {\n this.scope = scope;\n this.unknownBricks = options?.unknownBricks ?? \"throw\";\n this.#routeHelper = options?.routeHelper;\n this.renderId = options?.renderId;\n }\n\n #memoizedLifeCycle: MemoizedLifeCycle<\n Required<\n Pick<\n BrickLifeCycle,\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onScrollIntoView\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMessage\"\n | \"onMessageClose\"\n >\n >\n > = {\n onBeforePageLoad: [],\n onPageLoad: [],\n onPageLeave: [],\n onBeforePageLeave: [],\n onAnchorLoad: [],\n onAnchorUnload: [],\n onMediaChange: [],\n onScrollIntoView: [],\n onMount: [],\n onUnmount: [],\n onMessage: [],\n onMessageClose: [],\n };\n #observers = new Map<RenderBrick, IntersectionObserver[]>();\n #mediaListener: EventListener | undefined;\n\n #arbitraryLifeCycle = new Map<string, Set<() => void>>();\n\n #memoized?: WeakMap<\n RenderNode,\n Map<\n string,\n {\n node?: RenderChildNode;\n last?: RenderChildNode;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n\n #initialMenuRequestNode?: MenuRequestNode;\n #memoizedMenuRequestNodeMap?: WeakMap<\n RouteConf[],\n MenuRequestNode | undefined\n > = new WeakMap<RouteConf[], MenuRequestNode | undefined>();\n\n setInitialMenuRequestNode(menuRequestNode: MenuRequestNode) {\n this.#initialMenuRequestNode = menuRequestNode;\n }\n\n memoizeMenuRequestNode(\n routes: RouteConf[],\n menuRequestNode: MenuRequestNode\n ) {\n this.#memoizedMenuRequestNodeMap!.set(routes, menuRequestNode);\n }\n\n getMenuRequests() {\n const menuRequests: Promise<StaticMenuConf>[] = [];\n let current = this.#initialMenuRequestNode;\n while (current) {\n if (current.request) {\n menuRequests.push(current.request);\n }\n if (current.child) {\n current = current.child;\n } else {\n while (current && !current.sibling) {\n current = current.return;\n }\n current = current?.sibling;\n }\n }\n return menuRequests;\n }\n\n async reMergeMenuRequestNodes(\n parentMenuRequestNode: MenuRequestNode,\n routes: RouteConf[],\n menuRequestNode: MenuRequestNode = {}\n ) {\n const node = this.#memoizedMenuRequestNodeMap!.get(routes);\n this.#memoizedMenuRequestNodeMap!.set(routes, menuRequestNode);\n\n let current = parentMenuRequestNode.child;\n let previousSibling: MenuRequestNode | undefined;\n\n while (current) {\n if (current === node) {\n break;\n }\n previousSibling = current;\n current = current.sibling;\n }\n\n if (previousSibling) {\n previousSibling.sibling = menuRequestNode;\n menuRequestNode.sibling = node?.sibling;\n } else {\n parentMenuRequestNode.child = menuRequestNode;\n }\n\n await this.#routeHelper!.mergeMenus(this.getMenuRequests());\n }\n\n reBailout(output: RenderOutput) {\n return this.#routeHelper!.bailout(output);\n }\n\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode);\n }\n\n #incrementalRenderStates = new Map<\n SlotConfOfRoutes,\n IncrementalRenderState\n >();\n\n async didPerformIncrementalRender(\n location: Location<NextHistoryState>,\n prevLocation: Location<NextHistoryState>\n ) {\n let finalResult = false;\n const shouldIgnoreRoutes: RouteConf[] = [];\n // Perform incremental rendering from inside out.\n // This allows nested incremental sub-routes.\n for (const { parentRoutes, callback } of [\n ...this.#incrementalRenderStates.values(),\n ].reverse()) {\n const parentRoute = parentRoutes[parentRoutes.length - 1];\n if (shouldIgnoreRoutes.includes(parentRoute)) {\n // Do not re-render parent routes if any of its children has performed incremental rendering.\n // In the meantime, allow sibling-routes to perform incremental rendering.\n continue;\n }\n const result = await callback(location, prevLocation);\n // When result is null, it means the incremental rendering is tried but routes missed.\n // In this case, we should continue to re-render the parent routes.\n if (result) {\n shouldIgnoreRoutes.push(...parentRoutes.slice(0, -1));\n }\n // Mark incremental rendering as performed at final if result is true or null.\n if (result !== false) {\n finalResult = true;\n }\n }\n return finalResult;\n }\n\n /**\n * When `callback` resolved to `true` which means incremental rendering is performed,\n * ignore normal rendering.\n */\n performIncrementalRender(\n slotConf: SlotConfOfRoutes,\n parentRoutes: RouteConf[],\n callback: LocationChangeCallback\n ) {\n // Override stale incremental render callbacks\n this.#incrementalRenderStates.set(slotConf, { parentRoutes, callback });\n }\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n registerArbitraryLifeCycle(lifeCycle: string, fn: () => void): void {\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(lifeCycle);\n if (arbitraryCallbacks) {\n arbitraryCallbacks.add(fn);\n } else {\n this.#arbitraryLifeCycle.set(lifeCycle, new Set([fn]));\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoize(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n if (!this.#memoized) {\n this.#memoized = new WeakMap();\n }\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n let mem = this.#memoized.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoized.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n reRender(\n slotId: string | undefined,\n keyPath: number[],\n node: RenderChildNode | undefined,\n returnNode: RenderReturnNode\n ) {\n const memKey = [slotId ?? \"\", ...keyPath].join(\".\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoized!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n let insertBeforeChild: ChildNode | null;\n const insertPortalBeforeChildCandidates: ChildNode[] = [];\n if (prevNode?.tag === RenderTag.PLACEHOLDER) {\n insertBeforeChild = getNextNormalNode(prevNode)?.element ?? null;\n // Todo(steve): handle portal bricks from useBrick.\n const nextSibling = getNextPortalNode(prevNode)?.element;\n if (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n }\n } else {\n insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n let nextSibling = prevLastPortal?.element?.nextSibling;\n while (nextSibling) {\n insertPortalBeforeChildCandidates.push(nextSibling);\n // Collect all portal bricks from useBrick, until found a normal portal\n // brick other than from useBrick.\n // Because useBrick could be removed during unmount.\n if (\n !(nextSibling instanceof HTMLElement && nextSibling.tagName === \"DIV\")\n ) {\n break;\n }\n nextSibling = nextSibling.nextSibling;\n }\n }\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderChildNode | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n // istanbul ignore next\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\n \"Cannot find render root node. This is a bug of Brick Next, please report it.\"\n );\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n let insertPortalBeforeChild: ChildNode | null = null;\n for (const candidate of insertPortalBeforeChildCandidates) {\n // Those candidates from useBrick could be removed during unmount.\n // So we need to check if they are still in the portal.\n if (portal.contains(candidate)) {\n insertPortalBeforeChild = candidate;\n break;\n }\n }\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoized = undefined;\n this.#arbitraryLifeCycle.clear();\n this.#incrementalRenderStates.clear();\n this.#memoizedMenuRequestNodeMap = undefined;\n }\n\n // Note: no `onScrollIntoView` and `onMessage`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMessageClose\"\n | \"onMount\"\n | \"onUnmount\",\n event: Event\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n const arbitraryCallbacks = this.#arbitraryLifeCycle.get(type);\n if (arbitraryCallbacks) {\n for (const fn of arbitraryCallbacks) {\n fn();\n }\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n initializeMessageDispatcher(): void {\n for (const { brick, handlers: confList } of this.#memoizedLifeCycle\n .onMessage) {\n for (const conf of ([] as MessageConf[]).concat(confList)) {\n hooks?.messageDispatcher?.onMessage(conf.channel, (detail) => {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"message.push\", { detail }));\n });\n }\n }\n\n hooks?.messageDispatcher?.onClose(() => {\n this.#dispatchGeneralLifeCycle(\n \"onMessageClose\",\n new CustomEvent(\"message.close\")\n );\n });\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(\n node: RenderChildNode | undefined\n): RenderChildNode | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, false);\n}\n\nfunction getNextNormalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedNormalNode(node, true);\n}\n\nfunction getSpecifiedNormalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && !current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, false);\n}\n\nfunction getNextPortalNode(\n node: RenderChildNode | undefined\n): RenderBrick | undefined {\n return getSpecifiedPortalNode(node, true);\n}\n\nfunction getSpecifiedPortalNode(\n node: RenderChildNode | undefined,\n next: boolean\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.tag === RenderTag.BRICK && current.portal) {\n if (next) {\n return current;\n }\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderChildNode | undefined,\n to: RenderChildNode | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n range.add(current);\n }\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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","ignoreList":[]}