@next-core/runtime 1.62.1 → 1.62.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.
@@ -27,7 +27,6 @@ var _memoizedLifeCycle = /*#__PURE__*/new WeakMap();
27
27
  var _observers = /*#__PURE__*/new WeakMap();
28
28
  var _mediaListener = /*#__PURE__*/new WeakMap();
29
29
  var _arbitraryLifeCycle = /*#__PURE__*/new WeakMap();
30
- var _memoized = /*#__PURE__*/new WeakMap();
31
30
  var _initialMenuRequestNode = /*#__PURE__*/new WeakMap();
32
31
  var _memoizedMenuRequestNodeMap = /*#__PURE__*/new WeakMap();
33
32
  var _incrementalRenderStates = /*#__PURE__*/new WeakMap();
@@ -60,7 +59,6 @@ class RendererContext {
60
59
  (0, _classPrivateFieldInitSpec2.default)(this, _observers, new Map());
61
60
  (0, _classPrivateFieldInitSpec2.default)(this, _mediaListener, void 0);
62
61
  (0, _classPrivateFieldInitSpec2.default)(this, _arbitraryLifeCycle, new Map());
63
- (0, _classPrivateFieldInitSpec2.default)(this, _memoized, void 0);
64
62
  (0, _classPrivateFieldInitSpec2.default)(this, _initialMenuRequestNode, void 0);
65
63
  (0, _classPrivateFieldInitSpec2.default)(this, _memoizedMenuRequestNodeMap, new WeakMap());
66
64
  (0, _classPrivateFieldInitSpec2.default)(this, _incrementalRenderStates, new Map());
@@ -194,69 +192,28 @@ class RendererContext {
194
192
  (0, _classPrivateFieldGet2.default)(_arbitraryLifeCycle, this).set(lifeCycle, new Set([fn]));
195
193
  }
196
194
  }
197
- memoize(slotId, keyPath, node, returnNode) {
198
- if (!(0, _classPrivateFieldGet2.default)(_memoized, this)) {
199
- (0, _classPrivateFieldSet2.default)(_memoized, this, new WeakMap());
200
- }
201
- const memKey = [slotId ?? "", ...keyPath].join(".");
202
- let mem = (0, _classPrivateFieldGet2.default)(_memoized, this).get(returnNode);
203
- if (!mem) {
204
- mem = new Map();
205
- (0, _classPrivateFieldGet2.default)(_memoized, this).set(returnNode, mem);
206
- }
207
- mem.set(memKey, {
208
- node,
209
- last: getLastNode(node),
210
- lastNormal: getLastNormalNode(node),
211
- lastPortal: getLastPortalNode(node)
212
- });
213
- }
214
- reRender(slotId, keyPath, node, returnNode) {
215
- const memKey = [slotId ?? "", ...keyPath].join(".");
216
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
217
- const memoized = (0, _classPrivateFieldGet2.default)(_memoized, this).get(returnNode).get(memKey);
218
- const {
219
- node: prevNode,
220
- last: prevLast,
221
- lastNormal: prevLastNormal,
222
- lastPortal: prevLastPortal
223
- } = memoized;
224
- let insertBeforeChild;
195
+ reRender(returnNode, node, oldNode) {
196
+ var _prevLastNormal$eleme, _findNextSiblingNode, _prevLastPortal$eleme, _findNextSiblingNode2;
197
+ const [prevLastNormal, prevLastPortal] = findLastChildNodes(oldNode);
198
+ const insertBeforeChild = (prevLastNormal ? (_prevLastNormal$eleme = prevLastNormal.element) === null || _prevLastNormal$eleme === void 0 ? void 0 : _prevLastNormal$eleme.nextSibling : (_findNextSiblingNode = findNextSiblingNode(oldNode, false)) === null || _findNextSiblingNode === void 0 ? void 0 : _findNextSiblingNode.element) ?? null;
225
199
  const insertPortalBeforeChildCandidates = [];
226
- if ((prevNode === null || prevNode === void 0 ? void 0 : prevNode.tag) === _enums.RenderTag.PLACEHOLDER) {
227
- var _getNextNormalNode, _getNextPortalNode;
228
- insertBeforeChild = ((_getNextNormalNode = getNextNormalNode(prevNode)) === null || _getNextNormalNode === void 0 ? void 0 : _getNextNormalNode.element) ?? null;
229
- // Todo(steve): handle portal bricks from useBrick.
230
- const nextSibling = (_getNextPortalNode = getNextPortalNode(prevNode)) === null || _getNextPortalNode === void 0 ? void 0 : _getNextPortalNode.element;
231
- if (nextSibling) {
232
- insertPortalBeforeChildCandidates.push(nextSibling);
233
- }
234
- } else {
235
- var _prevLastNormal$eleme, _prevLastPortal$eleme;
236
- insertBeforeChild = (prevLastNormal === null || prevLastNormal === void 0 || (_prevLastNormal$eleme = prevLastNormal.element) === null || _prevLastNormal$eleme === void 0 ? void 0 : _prevLastNormal$eleme.nextSibling) ?? null;
237
- let nextSibling = prevLastPortal === null || prevLastPortal === void 0 || (_prevLastPortal$eleme = prevLastPortal.element) === null || _prevLastPortal$eleme === void 0 ? void 0 : _prevLastPortal$eleme.nextSibling;
238
- while (nextSibling) {
239
- insertPortalBeforeChildCandidates.push(nextSibling);
240
- // Collect all portal bricks from useBrick, until found a normal portal
241
- // brick other than from useBrick.
242
- // Because useBrick could be removed during unmount.
243
- if (!(nextSibling instanceof HTMLElement && nextSibling.tagName === "DIV")) {
244
- break;
245
- }
246
- nextSibling = nextSibling.nextSibling;
200
+ let nextSibling = prevLastPortal ? prevLastPortal === null || prevLastPortal === void 0 || (_prevLastPortal$eleme = prevLastPortal.element) === null || _prevLastPortal$eleme === void 0 ? void 0 : _prevLastPortal$eleme.nextSibling : (_findNextSiblingNode2 = findNextSiblingNode(oldNode, true)) === null || _findNextSiblingNode2 === void 0 ? void 0 : _findNextSiblingNode2.element;
201
+ while (nextSibling) {
202
+ insertPortalBeforeChildCandidates.push(nextSibling);
203
+ // Collect all portal bricks from useBrick, until found a normal portal
204
+ // brick other than from useBrick.
205
+ // Because useBrick could be removed during unmount.
206
+ if (!(nextSibling instanceof HTMLElement && nextSibling.tagName === "DIV")) {
207
+ break;
247
208
  }
209
+ nextSibling = nextSibling.nextSibling;
248
210
  }
249
- const last = getLastNode(node);
250
- memoized.node = node;
251
- memoized.last = last;
252
- memoized.lastNormal = getLastNormalNode(node);
253
- memoized.lastPortal = getLastPortalNode(node);
254
211
 
255
212
  // Figure out the unchanged prev sibling and next sibling
256
213
  let prevSibling;
257
214
  let current = returnNode.child;
258
- while (current && current !== prevLast) {
259
- if (current.sibling === prevNode) {
215
+ while (current && current !== oldNode) {
216
+ if (current.sibling === oldNode) {
260
217
  prevSibling = current;
261
218
  break;
262
219
  }
@@ -278,9 +235,10 @@ class RendererContext {
278
235
  current = current.sibling;
279
236
  }
280
237
 
281
- // Unmount previous bricks, including their descendants
282
- const removeBricks = getBrickRange(prevNode, prevLast);
238
+ // Unmount previous brick and abstract nodes, including their descendants
239
+ const [removeBricks, removeAbstracts] = getContainedBrickAndAbstractNodes(oldNode);
283
240
  (0, _assertClassBrand2.default)(_RendererContext_brand, this, _unmountBricks).call(this, removeBricks);
241
+ (0, _assertClassBrand2.default)(_RendererContext_brand, this, _unmountAbstracts).call(this, removeAbstracts);
284
242
  (0, _mount.mountTree)(renderRoot);
285
243
 
286
244
  // Connect back
@@ -289,9 +247,12 @@ class RendererContext {
289
247
  } else {
290
248
  returnNode.child = node;
291
249
  }
292
- if (last) {
293
- last.sibling = prevLast === null || prevLast === void 0 ? void 0 : prevLast.sibling;
294
- }
250
+ node.sibling = oldNode.sibling;
251
+
252
+ // Clean up old node
253
+ delete oldNode.child;
254
+ delete oldNode.sibling;
255
+ delete oldNode.return;
295
256
 
296
257
  // Resume `return`
297
258
  current = node;
@@ -300,12 +261,13 @@ class RendererContext {
300
261
  current = current.sibling;
301
262
  }
302
263
  if (fragment.hasChildNodes()) {
303
- if (returnNode.tag === _enums.RenderTag.ROOT) {
304
- var _returnNode$container;
305
- (_returnNode$container = returnNode.container) === null || _returnNode$container === void 0 || _returnNode$container.insertBefore(fragment, insertBeforeChild);
264
+ const entityReturnNode = getEntityReturnNode(returnNode);
265
+ if (entityReturnNode.tag === _enums.RenderTag.ROOT) {
266
+ var _entityReturnNode$con;
267
+ (_entityReturnNode$con = entityReturnNode.container) === null || _entityReturnNode$con === void 0 || _entityReturnNode$con.insertBefore(fragment, insertBeforeChild);
306
268
  } else {
307
- var _returnNode$element;
308
- (_returnNode$element = returnNode.element) === null || _returnNode$element === void 0 || _returnNode$element.insertBefore(fragment, insertBeforeChild);
269
+ var _entityReturnNode$ele;
270
+ (_entityReturnNode$ele = entityReturnNode.element) === null || _entityReturnNode$ele === void 0 || _entityReturnNode$ele.insertBefore(fragment, insertBeforeChild);
309
271
  }
310
272
  }
311
273
  if (portalFragment.hasChildNodes()) {
@@ -330,7 +292,7 @@ class RendererContext {
330
292
  }
331
293
  portal.insertBefore(portalFragment, insertPortalBeforeChild);
332
294
  }
333
- const newBricks = getBrickRange(node, last);
295
+ const [newBricks] = getContainedBrickAndAbstractNodes(node);
334
296
  (0, _assertClassBrand2.default)(_RendererContext_brand, this, _initializeRerenderBricks).call(this, newBricks);
335
297
  }
336
298
  dispose() {
@@ -348,7 +310,6 @@ class RendererContext {
348
310
  _mediaQuery.mediaEventTarget.removeEventListener("change", (0, _classPrivateFieldGet2.default)(_mediaListener, this));
349
311
  (0, _classPrivateFieldSet2.default)(_mediaListener, this, undefined);
350
312
  }
351
- (0, _classPrivateFieldSet2.default)(_memoized, this, undefined);
352
313
  (0, _classPrivateFieldGet2.default)(_arbitraryLifeCycle, this).clear();
353
314
  (0, _classPrivateFieldGet2.default)(_incrementalRenderStates, this).clear();
354
315
  (0, _classPrivateFieldSet2.default)(_memoizedMenuRequestNodeMap, this, undefined);
@@ -430,6 +391,8 @@ class RendererContext {
430
391
  (0, _assertClassBrand2.default)(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onUnmount", new CustomEvent("unmount"));
431
392
  }
432
393
  }
394
+
395
+ /** Find the last normal and portal child nodes of the given node. */
433
396
  exports.RendererContext = RendererContext;
434
397
  function _unmountBricks(bricks) {
435
398
  const lifeCycleTypes = [...commonLifeCycles, ...(this.scope === "page" ? pageOnlyLifeCycles : [])];
@@ -472,6 +435,12 @@ function _unmountBricks(bricks) {
472
435
  (0, _bindListeners.listenerFactory)(handlers, brick.runtimeContext, brick)(unmountEvent);
473
436
  }
474
437
  }
438
+ function _unmountAbstracts(abstracts) {
439
+ for (const item of abstracts) {
440
+ var _item$disposes;
441
+ (_item$disposes = item.disposes) === null || _item$disposes === void 0 || _item$disposes.forEach(dispose => dispose());
442
+ }
443
+ }
475
444
  function _initializeRerenderBricks(bricks) {
476
445
  const mountEvent = new CustomEvent("mount");
477
446
  for (const {
@@ -531,96 +500,128 @@ function _addObserver(brick, conf) {
531
500
  }
532
501
  list.push(observer);
533
502
  }
534
- function getLastNode(node) {
535
- let last = node;
536
- while ((_last = last) !== null && _last !== void 0 && _last.sibling) {
537
- var _last;
538
- last = last.sibling;
539
- }
540
- return last;
541
- }
542
- function getLastNormalNode(node) {
543
- return getSpecifiedNormalNode(node, false);
544
- }
545
- function getNextNormalNode(node) {
546
- return getSpecifiedNormalNode(node, true);
547
- }
548
- function getSpecifiedNormalNode(node, next) {
549
- let last;
503
+ function findLastChildNodes(node) {
504
+ let lastNormal;
505
+ let lastPortal;
550
506
  let current = node;
507
+ let level = 0;
551
508
  while (current) {
552
- if (current.tag === _enums.RenderTag.BRICK && !current.portal) {
553
- if (next) {
554
- return current;
509
+ if (current.tag === _enums.RenderTag.BRICK) {
510
+ if (current.portal) {
511
+ lastPortal = current;
512
+ } else {
513
+ lastNormal = current;
514
+ }
515
+ } else if (current.child && current.tag === _enums.RenderTag.ABSTRACT) {
516
+ // Only traverse down abstract nodes
517
+ current = current.child;
518
+ level++;
519
+ continue;
520
+ }
521
+ // Level > 0 means we are traversing down abstract nodes.
522
+ // But we do not traverse sibling nodes of the given node.
523
+ if (level <= 0) {
524
+ break;
525
+ }
526
+ if (current.sibling) {
527
+ current = current.sibling;
528
+ } else {
529
+ var _currentReturn;
530
+ // After traversing down abstract nodes, we need to traverse up to find the next sibling.
531
+ let currentReturn = current.return;
532
+ level--;
533
+ while (currentReturn) {
534
+ if (currentReturn.sibling) {
535
+ break;
536
+ }
537
+ currentReturn = currentReturn.return;
538
+ level--;
539
+ }
540
+ if (level <= 0) {
541
+ // Do not traverse up more than the given node.
542
+ break;
555
543
  }
556
- last = current;
544
+ current = (_currentReturn = currentReturn) === null || _currentReturn === void 0 ? void 0 : _currentReturn.sibling;
557
545
  }
558
- current = current.sibling;
559
546
  }
560
- return last;
547
+ return [lastNormal, lastPortal];
561
548
  }
562
- function getLastPortalNode(node) {
563
- return getSpecifiedPortalNode(node, false);
564
- }
565
- function getNextPortalNode(node) {
566
- return getSpecifiedPortalNode(node, true);
567
- }
568
- function getSpecifiedPortalNode(node, next) {
569
- let last;
549
+
550
+ /** Find the normal or portal sibling node next to the given node (in DOM). */
551
+ function findNextSiblingNode(node, portal) {
570
552
  let current = node;
571
553
  while (current) {
572
- if (current.tag === _enums.RenderTag.BRICK && current.portal) {
573
- if (next) {
574
- return current;
575
- }
576
- last = current;
554
+ if (current !== node && current.tag === _enums.RenderTag.BRICK && (portal ? current.portal : !current.portal)) {
555
+ return current;
577
556
  }
578
- if (current.child) {
557
+ if (current !== node && current.child && current.tag === _enums.RenderTag.ABSTRACT) {
558
+ // Traverse down sibling abstract nodes
579
559
  current = current.child;
580
560
  } else if (current.sibling) {
581
561
  current = current.sibling;
582
562
  } else {
583
- var _currentReturn;
563
+ var _currentReturn2;
564
+ // Traverse up abstract nodes to find the next sibling in DOM
584
565
  let currentReturn = current.return;
585
566
  while (currentReturn) {
567
+ if (currentReturn.tag !== _enums.RenderTag.ABSTRACT) {
568
+ // End the loop when encounter a non-abstract return node,
569
+ // it means we can't find the target sibling node.
570
+ return;
571
+ }
586
572
  if (currentReturn.sibling) {
587
573
  break;
588
574
  }
589
575
  currentReturn = currentReturn.return;
590
576
  }
591
- current = (_currentReturn = currentReturn) === null || _currentReturn === void 0 ? void 0 : _currentReturn.sibling;
577
+ current = (_currentReturn2 = currentReturn) === null || _currentReturn2 === void 0 ? void 0 : _currentReturn2.sibling;
592
578
  }
593
579
  }
594
- return last;
595
580
  }
596
- function getBrickRange(from, to) {
597
- const range = new Set();
598
- let current = from;
581
+ function getContainedBrickAndAbstractNodes(node) {
582
+ const bricks = new Set();
583
+ const abstracts = new Set();
584
+ let current = node;
599
585
  while (current) {
600
586
  if (current.tag === _enums.RenderTag.BRICK) {
601
- range.add(current);
587
+ bricks.add(current);
588
+ } else if (current.tag === _enums.RenderTag.ABSTRACT) {
589
+ abstracts.add(current);
602
590
  }
603
591
  if (current.child) {
604
592
  current = current.child;
605
- } else if (current === to) {
593
+ } else if (current === node) {
594
+ // End the loop when encounter the original node.
606
595
  break;
607
596
  } else if (current.sibling) {
608
597
  current = current.sibling;
609
598
  } else {
610
- var _currentReturn2;
599
+ var _currentReturn3;
611
600
  let currentReturn = current.return;
612
- while (currentReturn && currentReturn !== to) {
601
+ while (currentReturn) {
602
+ if (currentReturn === node) {
603
+ // End the loop when encounter the original node.
604
+ return [bricks, abstracts];
605
+ }
613
606
  if (currentReturn.sibling) {
614
607
  break;
615
608
  }
616
609
  currentReturn = currentReturn.return;
617
610
  }
618
- if (currentReturn === to) {
619
- break;
620
- }
621
- current = (_currentReturn2 = currentReturn) === null || _currentReturn2 === void 0 ? void 0 : _currentReturn2.sibling;
611
+ current = (_currentReturn3 = currentReturn) === null || _currentReturn3 === void 0 ? void 0 : _currentReturn3.sibling;
612
+ }
613
+ }
614
+ return [bricks, abstracts];
615
+ }
616
+ function getEntityReturnNode(node) {
617
+ let current = node;
618
+ while (current.tag === _enums.RenderTag.ABSTRACT) {
619
+ current = current.return;
620
+ // istanbul ignore next
621
+ if (!current) {
622
+ throw new Error("Cannot find render root node. This is a bug of Brick Next, please report it.");
622
623
  }
623
624
  }
624
- return range;
625
+ return current;
625
626
  }
626
627
  //# sourceMappingURL=RendererContext.js.map
@@ -1 +1 @@
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","_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","_getNextPortalNode","getNextNormalNode","element","nextSibling","getNextPortalNode","_prevLastNormal$eleme","_prevLastPortal$eleme","HTMLElement","tagName","prevSibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","ROOT","container","createPortal","removeBricks","getBrickRange","_assertClassBrand2","_unmountBricks","call","mountTree","hasChildNodes","_returnNode$container","insertBefore","_returnNode$element","_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","_brick$disposes","observers","delete","unbindTemplateProxy","$$tplStateStore","disposes","forEach","unmountEvent","mountEvent","type","process","env","NODE_ENV","threshold","IntersectionObserver","entries","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>;\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 /**\n * Will always resolve when the routing is not the current bootstrap.\n * Otherwise, will throw an error when not bailout.\n *\n * @returns undefined when bailout, or failed output otherwise\n */\n catch: (\n error: unknown,\n returnNode: RenderReturnNode,\n isCurrentBootstrap?: boolean,\n isReCatch?: boolean\n ) => Promise<\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n }\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 /**\n * Will always resolve when the routing is not the current bootstrap.\n * Otherwise, will throw an error when not bailout.\n *\n * @returns undefined when bailout, or failed output otherwise\n */\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode, false, true);\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 true, it means the incremental rendering is performed.\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 // Also remove the element\n brick.element?.remove();\n // Dispose context listeners\n brick.disposes?.forEach((dispose) => dispose());\n delete brick.disposes;\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 (fragment.hasChildNodes()) {\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n }\n\n if (portalFragment.hasChildNodes()) {\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":[]}
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","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_RendererContext_brand","WeakSet","RendererContext","constructor","scope","options","_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","reRender","oldNode","_prevLastNormal$eleme","_findNextSiblingNode","_prevLastPortal$eleme","_findNextSiblingNode2","prevLastNormal","prevLastPortal","findLastChildNodes","insertBeforeChild","element","nextSibling","findNextSiblingNode","insertPortalBeforeChildCandidates","HTMLElement","tagName","prevSibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","tag","RenderTag","ROOT","container","createPortal","removeBricks","removeAbstracts","getContainedBrickAndAbstractNodes","_assertClassBrand2","_unmountBricks","call","_unmountAbstracts","mountTree","hasChildNodes","entityReturnNode","getEntityReturnNode","_entityReturnNode$con","insertBefore","_entityReturnNode$ele","_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","_brick$disposes","observers","delete","unbindTemplateProxy","$$tplStateStore","disposes","forEach","unmountEvent","abstracts","_item$disposes","mountEvent","type","process","env","NODE_ENV","threshold","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","observe","lastNormal","lastPortal","level","BRICK","ABSTRACT","_currentReturn","currentReturn","_currentReturn2","_currentReturn3"],"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 RenderAbstract,\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>;\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 /**\n * Will always resolve when the routing is not the current bootstrap.\n * Otherwise, will throw an error when not bailout.\n *\n * @returns undefined when bailout, or failed output otherwise\n */\n catch: (\n error: unknown,\n returnNode: RenderReturnNode,\n isCurrentBootstrap?: boolean,\n isReCatch?: boolean\n ) => Promise<\n | undefined\n | {\n failed: true;\n output: RenderOutput;\n }\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 #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 /**\n * Will always resolve when the routing is not the current bootstrap.\n * Otherwise, will throw an error when not bailout.\n *\n * @returns undefined when bailout, or failed output otherwise\n */\n reCatch(error: unknown, returnNode: RenderReturnNode) {\n return this.#routeHelper!.catch(error, returnNode, false, true);\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 true, it means the incremental rendering is performed.\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 // Also remove the element\n brick.element?.remove();\n // Dispose context listeners\n brick.disposes?.forEach((dispose) => dispose());\n delete brick.disposes;\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 #unmountAbstracts(abstracts: Set<RenderAbstract>) {\n for (const item of abstracts) {\n item.disposes?.forEach((dispose) => dispose());\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 reRender(\n returnNode: RenderReturnNode,\n node: RenderChildNode,\n oldNode: RenderChildNode\n ) {\n const [prevLastNormal, prevLastPortal] = findLastChildNodes(oldNode);\n const insertBeforeChild =\n (prevLastNormal\n ? prevLastNormal.element?.nextSibling\n : findNextSiblingNode(oldNode, false)?.element) ?? null;\n const insertPortalBeforeChildCandidates: ChildNode[] = [];\n let nextSibling = prevLastPortal\n ? prevLastPortal?.element?.nextSibling\n : findNextSiblingNode(oldNode, true)?.element;\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 // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderChildNode | undefined;\n let current = returnNode.child;\n while (current && current !== oldNode) {\n if (current.sibling === oldNode) {\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 brick and abstract nodes, including their descendants\n const [removeBricks, removeAbstracts] =\n getContainedBrickAndAbstractNodes(oldNode);\n this.#unmountBricks(removeBricks);\n this.#unmountAbstracts(removeAbstracts);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n node.sibling = oldNode.sibling;\n\n // Clean up old node\n delete oldNode.child;\n delete oldNode.sibling;\n delete (oldNode as Partial<RenderChildNode>).return;\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (fragment.hasChildNodes()) {\n const entityReturnNode = getEntityReturnNode(returnNode);\n if (entityReturnNode.tag === RenderTag.ROOT) {\n entityReturnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n entityReturnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n }\n\n if (portalFragment.hasChildNodes()) {\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] = getContainedBrickAndAbstractNodes(node);\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.#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\n/** Find the last normal and portal child nodes of the given node. */\nfunction findLastChildNodes(\n node: RenderChildNode | undefined\n): [lastNormal: RenderBrick | undefined, lastPortal: RenderBrick | undefined] {\n let lastNormal: RenderBrick | undefined;\n let lastPortal: RenderBrick | undefined;\n let current: RenderChildNode | undefined = node;\n let level = 0;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n if (current.portal) {\n lastPortal = current;\n } else {\n lastNormal = current;\n }\n } else if (current.child && current.tag === RenderTag.ABSTRACT) {\n // Only traverse down abstract nodes\n current = current.child;\n level++;\n continue;\n }\n // Level > 0 means we are traversing down abstract nodes.\n // But we do not traverse sibling nodes of the given node.\n if (level <= 0) {\n break;\n }\n if (current.sibling) {\n current = current.sibling;\n } else {\n // After traversing down abstract nodes, we need to traverse up to find the next sibling.\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n level--;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n level--;\n }\n if (level <= 0) {\n // Do not traverse up more than the given node.\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return [lastNormal, lastPortal];\n}\n\n/** Find the normal or portal sibling node next to the given node (in DOM). */\nfunction findNextSiblingNode(\n node: RenderChildNode | undefined,\n portal: boolean\n): RenderBrick | undefined {\n let current = node;\n while (current) {\n if (\n current !== node &&\n current.tag === RenderTag.BRICK &&\n (portal ? current.portal : !current.portal)\n ) {\n return current;\n }\n if (\n current !== node &&\n current.child &&\n current.tag === RenderTag.ABSTRACT\n ) {\n // Traverse down sibling abstract nodes\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n // Traverse up abstract nodes to find the next sibling in DOM\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.tag !== RenderTag.ABSTRACT) {\n // End the loop when encounter a non-abstract return node,\n // it means we can't find the target sibling node.\n return;\n }\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n}\n\nfunction getContainedBrickAndAbstractNodes(\n node: RenderChildNode\n): [bricks: Set<RenderBrick>, abstracts: Set<RenderAbstract>] {\n const bricks = new Set<RenderBrick>();\n const abstracts = new Set<RenderAbstract>();\n let current: RenderNode | undefined = node;\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n bricks.add(current);\n } else if (current.tag === RenderTag.ABSTRACT) {\n abstracts.add(current);\n }\n if (current.child) {\n current = current.child;\n } else if (current === node) {\n // End the loop when encounter the original node.\n break;\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 === node) {\n // End the loop when encounter the original node.\n return [bricks, abstracts];\n }\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return [bricks, abstracts];\n}\n\nfunction getEntityReturnNode(node: RenderReturnNode): RenderRoot | RenderBrick {\n let current = node;\n while (current.tag === RenderTag.ABSTRACT) {\n current = current.return;\n // istanbul ignore next\n if (!current) {\n throw new Error(\n \"Cannot find render root node. This is a bug of Brick Next, please report it.\"\n );\n }\n }\n return current;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,7 @@ exports.RenderTag = void 0;
7
7
  let RenderTag = exports.RenderTag = /*#__PURE__*/function (RenderTag) {
8
8
  RenderTag[RenderTag["ROOT"] = 1] = "ROOT";
9
9
  RenderTag[RenderTag["BRICK"] = 2] = "BRICK";
10
- RenderTag[RenderTag["PLACEHOLDER"] = 3] = "PLACEHOLDER";
10
+ RenderTag[RenderTag["ABSTRACT"] = 3] = "ABSTRACT";
11
11
  return RenderTag;
12
12
  }({});
13
13
  //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","names":["RenderTag","exports"],"sources":["../../../src/internal/enums.ts"],"sourcesContent":["export enum RenderTag {\n ROOT = 1,\n BRICK = 2,\n PLACEHOLDER = 3,\n}\n"],"mappings":";;;;;;IAAYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"enums.js","names":["RenderTag","exports"],"sources":["../../../src/internal/enums.ts"],"sourcesContent":["export enum RenderTag {\n ROOT = 1,\n BRICK = 2,\n ABSTRACT = 3,\n}\n"],"mappings":";;;;;;IAAYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}