@next-core/runtime 1.62.1 → 1.62.2
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.
- package/dist/cjs/internal/Renderer.js +69 -50
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +99 -117
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/enums.js +1 -1
- package/dist/cjs/internal/enums.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/cjs/internal/mount.js +12 -5
- package/dist/cjs/internal/mount.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +10 -7
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/Renderer.js +71 -53
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +99 -117
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/enums.js +1 -1
- package/dist/esm/internal/enums.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/esm/internal/mount.js +12 -5
- package/dist/esm/internal/mount.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +10 -7
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/types/internal/Renderer.d.ts +2 -3
- package/dist/types/internal/RendererContext.d.ts +1 -2
- package/dist/types/internal/enums.d.ts +1 -1
- package/dist/types/internal/interfaces.d.ts +5 -7
- package/package.json +2 -2
|
@@ -20,7 +20,6 @@ var _memoizedLifeCycle = /*#__PURE__*/new WeakMap();
|
|
|
20
20
|
var _observers = /*#__PURE__*/new WeakMap();
|
|
21
21
|
var _mediaListener = /*#__PURE__*/new WeakMap();
|
|
22
22
|
var _arbitraryLifeCycle = /*#__PURE__*/new WeakMap();
|
|
23
|
-
var _memoized = /*#__PURE__*/new WeakMap();
|
|
24
23
|
var _initialMenuRequestNode = /*#__PURE__*/new WeakMap();
|
|
25
24
|
var _memoizedMenuRequestNodeMap = /*#__PURE__*/new WeakMap();
|
|
26
25
|
var _incrementalRenderStates = /*#__PURE__*/new WeakMap();
|
|
@@ -54,7 +53,6 @@ export class RendererContext {
|
|
|
54
53
|
_classPrivateFieldInitSpec(this, _observers, new Map());
|
|
55
54
|
_classPrivateFieldInitSpec(this, _mediaListener, void 0);
|
|
56
55
|
_classPrivateFieldInitSpec(this, _arbitraryLifeCycle, new Map());
|
|
57
|
-
_classPrivateFieldInitSpec(this, _memoized, void 0);
|
|
58
56
|
_classPrivateFieldInitSpec(this, _initialMenuRequestNode, void 0);
|
|
59
57
|
_classPrivateFieldInitSpec(this, _memoizedMenuRequestNodeMap, new WeakMap());
|
|
60
58
|
_classPrivateFieldInitSpec(this, _incrementalRenderStates, new Map());
|
|
@@ -189,69 +187,28 @@ export class RendererContext {
|
|
|
189
187
|
_classPrivateFieldGet(_arbitraryLifeCycle, this).set(lifeCycle, new Set([fn]));
|
|
190
188
|
}
|
|
191
189
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
|
|
197
|
-
let mem = _classPrivateFieldGet(_memoized, this).get(returnNode);
|
|
198
|
-
if (!mem) {
|
|
199
|
-
mem = new Map();
|
|
200
|
-
_classPrivateFieldGet(_memoized, this).set(returnNode, mem);
|
|
201
|
-
}
|
|
202
|
-
mem.set(memKey, {
|
|
203
|
-
node,
|
|
204
|
-
last: getLastNode(node),
|
|
205
|
-
lastNormal: getLastNormalNode(node),
|
|
206
|
-
lastPortal: getLastPortalNode(node)
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
reRender(slotId, keyPath, node, returnNode) {
|
|
210
|
-
const memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
|
|
211
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
212
|
-
const memoized = _classPrivateFieldGet(_memoized, this).get(returnNode).get(memKey);
|
|
213
|
-
const {
|
|
214
|
-
node: prevNode,
|
|
215
|
-
last: prevLast,
|
|
216
|
-
lastNormal: prevLastNormal,
|
|
217
|
-
lastPortal: prevLastPortal
|
|
218
|
-
} = memoized;
|
|
219
|
-
let insertBeforeChild;
|
|
190
|
+
reRender(returnNode, node, oldNode) {
|
|
191
|
+
var _ref, _prevLastNormal$eleme, _findNextSiblingNode, _prevLastPortal$eleme, _findNextSiblingNode2;
|
|
192
|
+
const [prevLastNormal, prevLastPortal] = findLastChildNodes(oldNode);
|
|
193
|
+
const insertBeforeChild = (_ref = 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 && _ref !== void 0 ? _ref : null;
|
|
220
194
|
const insertPortalBeforeChildCandidates = [];
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
//
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
} else {
|
|
230
|
-
var _prevLastNormal$eleme, _prevLastNormal$eleme2, _prevLastPortal$eleme;
|
|
231
|
-
insertBeforeChild = (_prevLastNormal$eleme = prevLastNormal === null || prevLastNormal === void 0 || (_prevLastNormal$eleme2 = prevLastNormal.element) === null || _prevLastNormal$eleme2 === void 0 ? void 0 : _prevLastNormal$eleme2.nextSibling) !== null && _prevLastNormal$eleme !== void 0 ? _prevLastNormal$eleme : null;
|
|
232
|
-
let nextSibling = prevLastPortal === null || prevLastPortal === void 0 || (_prevLastPortal$eleme = prevLastPortal.element) === null || _prevLastPortal$eleme === void 0 ? void 0 : _prevLastPortal$eleme.nextSibling;
|
|
233
|
-
while (nextSibling) {
|
|
234
|
-
insertPortalBeforeChildCandidates.push(nextSibling);
|
|
235
|
-
// Collect all portal bricks from useBrick, until found a normal portal
|
|
236
|
-
// brick other than from useBrick.
|
|
237
|
-
// Because useBrick could be removed during unmount.
|
|
238
|
-
if (!(nextSibling instanceof HTMLElement && nextSibling.tagName === "DIV")) {
|
|
239
|
-
break;
|
|
240
|
-
}
|
|
241
|
-
nextSibling = nextSibling.nextSibling;
|
|
195
|
+
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;
|
|
196
|
+
while (nextSibling) {
|
|
197
|
+
insertPortalBeforeChildCandidates.push(nextSibling);
|
|
198
|
+
// Collect all portal bricks from useBrick, until found a normal portal
|
|
199
|
+
// brick other than from useBrick.
|
|
200
|
+
// Because useBrick could be removed during unmount.
|
|
201
|
+
if (!(nextSibling instanceof HTMLElement && nextSibling.tagName === "DIV")) {
|
|
202
|
+
break;
|
|
242
203
|
}
|
|
204
|
+
nextSibling = nextSibling.nextSibling;
|
|
243
205
|
}
|
|
244
|
-
const last = getLastNode(node);
|
|
245
|
-
memoized.node = node;
|
|
246
|
-
memoized.last = last;
|
|
247
|
-
memoized.lastNormal = getLastNormalNode(node);
|
|
248
|
-
memoized.lastPortal = getLastPortalNode(node);
|
|
249
206
|
|
|
250
207
|
// Figure out the unchanged prev sibling and next sibling
|
|
251
208
|
let prevSibling;
|
|
252
209
|
let current = returnNode.child;
|
|
253
|
-
while (current && current !==
|
|
254
|
-
if (current.sibling ===
|
|
210
|
+
while (current && current !== oldNode) {
|
|
211
|
+
if (current.sibling === oldNode) {
|
|
255
212
|
prevSibling = current;
|
|
256
213
|
break;
|
|
257
214
|
}
|
|
@@ -274,7 +231,7 @@ export class RendererContext {
|
|
|
274
231
|
}
|
|
275
232
|
|
|
276
233
|
// Unmount previous bricks, including their descendants
|
|
277
|
-
const removeBricks =
|
|
234
|
+
const removeBricks = getContainedBricks(oldNode);
|
|
278
235
|
_assertClassBrand(_RendererContext_brand, this, _unmountBricks).call(this, removeBricks);
|
|
279
236
|
mountTree(renderRoot);
|
|
280
237
|
|
|
@@ -284,9 +241,7 @@ export class RendererContext {
|
|
|
284
241
|
} else {
|
|
285
242
|
returnNode.child = node;
|
|
286
243
|
}
|
|
287
|
-
|
|
288
|
-
last.sibling = prevLast === null || prevLast === void 0 ? void 0 : prevLast.sibling;
|
|
289
|
-
}
|
|
244
|
+
node.sibling = oldNode.sibling;
|
|
290
245
|
|
|
291
246
|
// Resume `return`
|
|
292
247
|
current = node;
|
|
@@ -295,12 +250,13 @@ export class RendererContext {
|
|
|
295
250
|
current = current.sibling;
|
|
296
251
|
}
|
|
297
252
|
if (fragment.hasChildNodes()) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
253
|
+
const entityReturnNode = getEntityReturnNode(returnNode);
|
|
254
|
+
if (entityReturnNode.tag === RenderTag.ROOT) {
|
|
255
|
+
var _entityReturnNode$con;
|
|
256
|
+
(_entityReturnNode$con = entityReturnNode.container) === null || _entityReturnNode$con === void 0 || _entityReturnNode$con.insertBefore(fragment, insertBeforeChild);
|
|
301
257
|
} else {
|
|
302
|
-
var
|
|
303
|
-
(
|
|
258
|
+
var _entityReturnNode$ele;
|
|
259
|
+
(_entityReturnNode$ele = entityReturnNode.element) === null || _entityReturnNode$ele === void 0 || _entityReturnNode$ele.insertBefore(fragment, insertBeforeChild);
|
|
304
260
|
}
|
|
305
261
|
}
|
|
306
262
|
if (portalFragment.hasChildNodes()) {
|
|
@@ -325,7 +281,7 @@ export class RendererContext {
|
|
|
325
281
|
}
|
|
326
282
|
portal.insertBefore(portalFragment, insertPortalBeforeChild);
|
|
327
283
|
}
|
|
328
|
-
const newBricks =
|
|
284
|
+
const newBricks = getContainedBricks(node);
|
|
329
285
|
_assertClassBrand(_RendererContext_brand, this, _initializeRerenderBricks).call(this, newBricks);
|
|
330
286
|
}
|
|
331
287
|
dispose() {
|
|
@@ -343,7 +299,6 @@ export class RendererContext {
|
|
|
343
299
|
mediaEventTarget.removeEventListener("change", _classPrivateFieldGet(_mediaListener, this));
|
|
344
300
|
_classPrivateFieldSet(_mediaListener, this, undefined);
|
|
345
301
|
}
|
|
346
|
-
_classPrivateFieldSet(_memoized, this, undefined);
|
|
347
302
|
_classPrivateFieldGet(_arbitraryLifeCycle, this).clear();
|
|
348
303
|
_classPrivateFieldGet(_incrementalRenderStates, this).clear();
|
|
349
304
|
_classPrivateFieldSet(_memoizedMenuRequestNodeMap, this, undefined);
|
|
@@ -425,6 +380,8 @@ export class RendererContext {
|
|
|
425
380
|
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onUnmount", new CustomEvent("unmount"));
|
|
426
381
|
}
|
|
427
382
|
}
|
|
383
|
+
|
|
384
|
+
/** Find the last normal and portal child nodes of the given node. */
|
|
428
385
|
function _unmountBricks(bricks) {
|
|
429
386
|
const lifeCycleTypes = [...commonLifeCycles, ...(this.scope === "page" ? pageOnlyLifeCycles : [])];
|
|
430
387
|
const unmountList = [];
|
|
@@ -526,96 +483,121 @@ function _addObserver(brick, conf) {
|
|
|
526
483
|
}
|
|
527
484
|
list.push(observer);
|
|
528
485
|
}
|
|
529
|
-
function
|
|
530
|
-
let
|
|
531
|
-
|
|
532
|
-
var _last;
|
|
533
|
-
last = last.sibling;
|
|
534
|
-
}
|
|
535
|
-
return last;
|
|
536
|
-
}
|
|
537
|
-
function getLastNormalNode(node) {
|
|
538
|
-
return getSpecifiedNormalNode(node, false);
|
|
539
|
-
}
|
|
540
|
-
function getNextNormalNode(node) {
|
|
541
|
-
return getSpecifiedNormalNode(node, true);
|
|
542
|
-
}
|
|
543
|
-
function getSpecifiedNormalNode(node, next) {
|
|
544
|
-
let last;
|
|
486
|
+
function findLastChildNodes(node) {
|
|
487
|
+
let lastNormal;
|
|
488
|
+
let lastPortal;
|
|
545
489
|
let current = node;
|
|
490
|
+
let level = 0;
|
|
546
491
|
while (current) {
|
|
547
|
-
if (current.tag === RenderTag.BRICK
|
|
548
|
-
if (
|
|
549
|
-
|
|
492
|
+
if (current.tag === RenderTag.BRICK) {
|
|
493
|
+
if (current.portal) {
|
|
494
|
+
lastPortal = current;
|
|
495
|
+
} else {
|
|
496
|
+
lastNormal = current;
|
|
550
497
|
}
|
|
551
|
-
|
|
498
|
+
} else if (current.child && current.tag === RenderTag.ABSTRACT) {
|
|
499
|
+
// Only traverse down abstract nodes
|
|
500
|
+
current = current.child;
|
|
501
|
+
level++;
|
|
502
|
+
continue;
|
|
503
|
+
}
|
|
504
|
+
// Level > 0 means we are traversing down abstract nodes.
|
|
505
|
+
// But we do not traverse sibling nodes of the given node.
|
|
506
|
+
if (level <= 0) {
|
|
507
|
+
break;
|
|
508
|
+
}
|
|
509
|
+
if (current.sibling) {
|
|
510
|
+
current = current.sibling;
|
|
511
|
+
} else {
|
|
512
|
+
var _currentReturn;
|
|
513
|
+
// After traversing down abstract nodes, we need to traverse up to find the next sibling.
|
|
514
|
+
let currentReturn = current.return;
|
|
515
|
+
level--;
|
|
516
|
+
while (currentReturn) {
|
|
517
|
+
if (currentReturn.sibling) {
|
|
518
|
+
break;
|
|
519
|
+
}
|
|
520
|
+
currentReturn = currentReturn.return;
|
|
521
|
+
level--;
|
|
522
|
+
}
|
|
523
|
+
if (level <= 0) {
|
|
524
|
+
// Do not traverse up more than the given node.
|
|
525
|
+
break;
|
|
526
|
+
}
|
|
527
|
+
current = (_currentReturn = currentReturn) === null || _currentReturn === void 0 ? void 0 : _currentReturn.sibling;
|
|
552
528
|
}
|
|
553
|
-
current = current.sibling;
|
|
554
529
|
}
|
|
555
|
-
return
|
|
530
|
+
return [lastNormal, lastPortal];
|
|
556
531
|
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
function getNextPortalNode(node) {
|
|
561
|
-
return getSpecifiedPortalNode(node, true);
|
|
562
|
-
}
|
|
563
|
-
function getSpecifiedPortalNode(node, next) {
|
|
564
|
-
let last;
|
|
532
|
+
|
|
533
|
+
/** Find the normal or portal sibling node next to the given node (in DOM). */
|
|
534
|
+
function findNextSiblingNode(node, portal) {
|
|
565
535
|
let current = node;
|
|
566
536
|
while (current) {
|
|
567
|
-
if (current.tag === RenderTag.BRICK && current.portal) {
|
|
568
|
-
|
|
569
|
-
return current;
|
|
570
|
-
}
|
|
571
|
-
last = current;
|
|
537
|
+
if (current !== node && current.tag === RenderTag.BRICK && (portal ? current.portal : !current.portal)) {
|
|
538
|
+
return current;
|
|
572
539
|
}
|
|
573
|
-
if (current.child) {
|
|
540
|
+
if (current !== node && current.child && current.tag === RenderTag.ABSTRACT) {
|
|
541
|
+
// Traverse down sibling abstract nodes
|
|
574
542
|
current = current.child;
|
|
575
543
|
} else if (current.sibling) {
|
|
576
544
|
current = current.sibling;
|
|
577
545
|
} else {
|
|
578
|
-
var
|
|
546
|
+
var _currentReturn2;
|
|
547
|
+
// Traverse up abstract nodes to find the next sibling in DOM
|
|
579
548
|
let currentReturn = current.return;
|
|
580
549
|
while (currentReturn) {
|
|
550
|
+
if (currentReturn.tag !== RenderTag.ABSTRACT) {
|
|
551
|
+
// End the loop when encounter a non-abstract return node,
|
|
552
|
+
// it means we can't find the target sibling node.
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
581
555
|
if (currentReturn.sibling) {
|
|
582
556
|
break;
|
|
583
557
|
}
|
|
584
558
|
currentReturn = currentReturn.return;
|
|
585
559
|
}
|
|
586
|
-
current = (
|
|
560
|
+
current = (_currentReturn2 = currentReturn) === null || _currentReturn2 === void 0 ? void 0 : _currentReturn2.sibling;
|
|
587
561
|
}
|
|
588
562
|
}
|
|
589
|
-
return last;
|
|
590
563
|
}
|
|
591
|
-
function
|
|
564
|
+
function getContainedBricks(node) {
|
|
592
565
|
const range = new Set();
|
|
593
|
-
let current =
|
|
566
|
+
let current = node;
|
|
594
567
|
while (current) {
|
|
595
568
|
if (current.tag === RenderTag.BRICK) {
|
|
596
569
|
range.add(current);
|
|
597
570
|
}
|
|
598
571
|
if (current.child) {
|
|
599
572
|
current = current.child;
|
|
600
|
-
} else if (current ===
|
|
573
|
+
} else if (current === node) {
|
|
574
|
+
// End the loop when encounter the original node.
|
|
601
575
|
break;
|
|
602
576
|
} else if (current.sibling) {
|
|
603
577
|
current = current.sibling;
|
|
604
578
|
} else {
|
|
605
|
-
var
|
|
579
|
+
var _currentReturn3;
|
|
606
580
|
let currentReturn = current.return;
|
|
607
|
-
while (currentReturn
|
|
581
|
+
while (currentReturn) {
|
|
582
|
+
if (currentReturn === node) {
|
|
583
|
+
// End the loop when encounter the original node.
|
|
584
|
+
return range;
|
|
585
|
+
}
|
|
608
586
|
if (currentReturn.sibling) {
|
|
609
587
|
break;
|
|
610
588
|
}
|
|
611
589
|
currentReturn = currentReturn.return;
|
|
612
590
|
}
|
|
613
|
-
|
|
614
|
-
break;
|
|
615
|
-
}
|
|
616
|
-
current = (_currentReturn2 = currentReturn) === null || _currentReturn2 === void 0 ? void 0 : _currentReturn2.sibling;
|
|
591
|
+
current = (_currentReturn3 = currentReturn) === null || _currentReturn3 === void 0 ? void 0 : _currentReturn3.sibling;
|
|
617
592
|
}
|
|
618
593
|
}
|
|
619
594
|
return range;
|
|
620
595
|
}
|
|
596
|
+
function getEntityReturnNode(node) {
|
|
597
|
+
let current = node;
|
|
598
|
+
while (current.tag === RenderTag.ABSTRACT) {
|
|
599
|
+
current = current.return;
|
|
600
|
+
}
|
|
601
|
+
return current;
|
|
602
|
+
}
|
|
621
603
|
//# sourceMappingURL=RendererContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RendererContext.js","names":["isEmpty","remove","listenerFactory","getHistory","getReadOnlyProxy","mediaEventTarget","mountTree","RenderTag","unbindTemplateProxy","hooks","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_memoized","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_RendererContext_brand","WeakSet","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec","_defineProperty","_classPrivateFieldInitSpec","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet","routeHelper","renderId","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","_classPrivateFieldGet","set","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","arguments","length","undefined","node","get","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","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","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","_assertClassBrand","_unmountBricks","call","hasChildNodes","_returnNode$container","insertBefore","_returnNode$element","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","observer","disconnect","clear","removeEventListener","dispatchBeforePageLoad","_dispatchGeneralLifeCycle","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","anchor","substring","initializeScrollIntoView","conf","_addObserver","initializeMediaChange","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc2","confList","concat","_hooks$messageDispatc","messageDispatcher","channel","runtimeContext","onClose","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","_brick$disposes","observers","delete","$$tplStateStore","disposes","forEach","unmountEvent","mountEvent","type","process","env","NODE_ENV","_conf$threshold","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":["isEmpty","remove","listenerFactory","getHistory","getReadOnlyProxy","mediaEventTarget","mountTree","RenderTag","unbindTemplateProxy","hooks","commonLifeCycles","pageOnlyLifeCycles","_routeHelper","WeakMap","_memoizedLifeCycle","_observers","_mediaListener","_arbitraryLifeCycle","_initialMenuRequestNode","_memoizedMenuRequestNodeMap","_incrementalRenderStates","_RendererContext_brand","WeakSet","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec","_defineProperty","_classPrivateFieldInitSpec","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","onMessage","onMessageClose","Map","unknownBricks","_classPrivateFieldSet","routeHelper","renderId","setInitialMenuRequestNode","menuRequestNode","memoizeMenuRequestNode","routes","_classPrivateFieldGet","set","getMenuRequests","menuRequests","current","request","push","child","_current","sibling","return","reMergeMenuRequestNodes","parentMenuRequestNode","arguments","length","undefined","node","get","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","useResolves","console","registerArbitraryLifeCycle","fn","arbitraryCallbacks","add","Set","reRender","oldNode","_ref","_prevLastNormal$eleme","_findNextSiblingNode","_prevLastPortal$eleme","_findNextSiblingNode2","prevLastNormal","prevLastPortal","findLastChildNodes","insertBeforeChild","element","nextSibling","findNextSiblingNode","insertPortalBeforeChildCandidates","HTMLElement","tagName","prevSibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","tag","ROOT","container","createPortal","removeBricks","getContainedBricks","_assertClassBrand","_unmountBricks","call","hasChildNodes","entityReturnNode","getEntityReturnNode","_entityReturnNode$con","insertBefore","_entityReturnNode$ele","_root","root","Error","portal","insertPortalBeforeChild","candidate","contains","newBricks","_initializeRerenderBricks","dispose","list","Object","observer","disconnect","clear","removeEventListener","dispatchBeforePageLoad","_dispatchGeneralLifeCycle","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","anchor","substring","initializeScrollIntoView","conf","_addObserver","initializeMediaChange","addEventListener","initializeMessageDispatcher","_hooks$messageDispatc2","confList","concat","_hooks$messageDispatc","messageDispatcher","channel","runtimeContext","onClose","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","_brick$disposes","observers","delete","$$tplStateStore","disposes","forEach","unmountEvent","mountEvent","type","process","env","NODE_ENV","_conf$threshold","threshold","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","observe","lastNormal","lastPortal","level","BRICK","ABSTRACT","_currentReturn","currentReturn","_currentReturn2","range","_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 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 #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 bricks, including their descendants\n const removeBricks = getContainedBricks(oldNode);\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 node.sibling = oldNode.sibling;\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 = getContainedBricks(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 getContainedBricks(node: RenderChildNode) {\n const range = new Set<RenderBrick>();\n let current: RenderNode | undefined = node;\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 === 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 range;\n }\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n\nfunction getEntityReturnNode(node: RenderReturnNode): RenderRoot | RenderBrick {\n let current = node;\n while (current.tag === RenderTag.ABSTRACT) {\n current = current.return;\n }\n return current;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export let RenderTag = /*#__PURE__*/function (RenderTag) {
|
|
2
2
|
RenderTag[RenderTag["ROOT"] = 1] = "ROOT";
|
|
3
3
|
RenderTag[RenderTag["BRICK"] = 2] = "BRICK";
|
|
4
|
-
RenderTag[RenderTag["
|
|
4
|
+
RenderTag[RenderTag["ABSTRACT"] = 3] = "ABSTRACT";
|
|
5
5
|
return RenderTag;
|
|
6
6
|
}({});
|
|
7
7
|
//# sourceMappingURL=enums.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","names":["RenderTag"],"sources":["../../../src/internal/enums.ts"],"sourcesContent":["export enum RenderTag {\n ROOT = 1,\n BRICK = 2,\n
|
|
1
|
+
{"version":3,"file":"enums.js","names":["RenderTag"],"sources":["../../../src/internal/enums.ts"],"sourcesContent":["export enum RenderTag {\n ROOT = 1,\n BRICK = 2,\n ABSTRACT = 3,\n}\n"],"mappings":"AAAA,WAAYA,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n UseProviderResolveConf,\n MicroApp,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n forEachSize?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n inUseBrick?: boolean;\n\n unsafe_penetrate?: boolean;\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n
|
|
1
|
+
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n UseProviderResolveConf,\n MicroApp,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n forEachSize?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n inUseBrick?: boolean;\n\n unsafe_penetrate?: boolean;\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n}\n\nexport interface RenderAbstract extends BaseRenderNode {\n tag: RenderTag.ABSTRACT;\n return: RenderReturnNode;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderAbstract;\nexport type RenderChildNode = RenderBrick | RenderAbstract;\nexport type RenderReturnNode = RenderNode;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n disposes?: (() => void)[];\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n usedSlots: Set<string>;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n routeId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n\nexport interface DebugDataValue {\n resolve?: UseProviderResolveConf;\n value?: unknown;\n}\n\nexport interface RuntimeDataVale\n extends Pick<LegacyCompatibleRuntimeContext, \"match\" | \"sys\" | \"query\"> {\n location: {\n href: string;\n origin: string;\n hostname: string;\n host: string;\n };\n app?: MicroApp;\n}\n\nexport interface RuntimeDataValueOption {\n routeId?: string;\n}\n"],"mappings":"","ignoreList":[]}
|