@next-core/runtime 1.44.2 → 1.44.4
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/CustomProcessors.js.map +1 -1
- package/dist/cjs/CustomTemplates.js +7 -11
- package/dist/cjs/CustomTemplates.js.map +1 -1
- package/dist/cjs/createRoot.js +4 -4
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/getPageInfo.js.map +1 -1
- package/dist/cjs/handleHttpError.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js +4 -5
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +4 -7
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +21 -24
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js +4 -7
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/utils.js +3 -3
- package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +3 -3
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/utils.js +2 -2
- package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +8 -14
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +8 -10
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +19 -16
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/internal/bindListeners.js +2 -3
- package/dist/cjs/internal/bindListeners.js.map +1 -1
- package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/cjs/internal/compute/evaluate.js +4 -4
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/cjs/internal/compute/getStorageItem.js +1 -2
- package/dist/cjs/internal/compute/getStorageItem.js.map +1 -1
- package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/cjs/internal/compute/setRealProperties.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/data/getProviderBrick.js.map +1 -1
- package/dist/cjs/internal/data/realTimeDataInspect.js.map +1 -1
- package/dist/cjs/internal/data/resolveData.js.map +1 -1
- package/dist/cjs/internal/data/resolveDataStore.js +2 -4
- package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
- package/dist/cjs/internal/hasInstalledApp.js.map +1 -1
- package/dist/cjs/internal/historyExtended.js.map +1 -1
- package/dist/cjs/internal/matchPath.js.map +1 -1
- package/dist/cjs/internal/matchRoutes.js.map +1 -1
- package/dist/cjs/internal/matchStoryboard.js +2 -2
- package/dist/cjs/internal/matchStoryboard.js.map +1 -1
- package/dist/cjs/internal/mediaQuery.js.map +1 -1
- package/dist/cjs/internal/mount.js.map +1 -1
- package/dist/cjs/internal/poll.js +3 -3
- package/dist/cjs/internal/poll.js.map +1 -1
- package/dist/cjs/internal/registerAppI18n.js.map +1 -1
- package/dist/cjs/internal/registerCustomTemplates.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +4 -4
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/cjs/internal/setupRootRuntimeContext.js +2 -3
- package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/cjs/isStrictMode.js.map +1 -1
- package/dist/cjs/setLoginStateCookie.js.map +1 -1
- package/dist/cjs/setWatermark.js +4 -4
- package/dist/cjs/setWatermark.js.map +1 -1
- package/dist/cjs/themeAndMode.js +1 -2
- package/dist/cjs/themeAndMode.js.map +1 -1
- package/dist/esm/CustomProcessors.js +5 -5
- package/dist/esm/CustomProcessors.js.map +1 -1
- package/dist/esm/CustomTemplates.js +48 -58
- package/dist/esm/CustomTemplates.js.map +1 -1
- package/dist/esm/Dialog.js +3 -3
- package/dist/esm/Dialog.js.map +1 -1
- package/dist/esm/Notification.js +2 -2
- package/dist/esm/Notification.js.map +1 -1
- package/dist/esm/StoryboardFunctionRegistry.js +18 -18
- package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
- package/dist/esm/createRoot.js +125 -129
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/fetchByProvider.js +3 -10
- package/dist/esm/fetchByProvider.js.map +1 -1
- package/dist/esm/getBasePath.js +2 -2
- package/dist/esm/getBasePath.js.map +1 -1
- package/dist/esm/getPageInfo.js +5 -5
- package/dist/esm/getPageInfo.js.map +1 -1
- package/dist/esm/getRealValue.js +7 -6
- package/dist/esm/getRealValue.js.map +1 -1
- package/dist/esm/getV2RuntimeFromDll.js +1 -1
- package/dist/esm/getV2RuntimeFromDll.js.map +1 -1
- package/dist/esm/handleHttpError.js +11 -11
- package/dist/esm/handleHttpError.js.map +1 -1
- package/dist/esm/history.js +4 -4
- package/dist/esm/history.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js +13 -17
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/constants.js +5 -5
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +41 -42
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +43 -46
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js +16 -18
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/utils.js +8 -8
- package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/esm/internal/FormRenderer/constants.js +2 -2
- package/dist/esm/internal/FormRenderer/constants.js.map +1 -1
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js +28 -23
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js +45 -22
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -1
- package/dist/esm/internal/FormRenderer/utils.js +4 -4
- package/dist/esm/internal/FormRenderer/utils.js.map +1 -1
- package/dist/esm/internal/Renderer.js +517 -580
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +132 -148
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +325 -346
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js +58 -53
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/abortController.js +7 -6
- package/dist/esm/internal/abortController.js.map +1 -1
- package/dist/esm/internal/bindListeners.js +136 -156
- package/dist/esm/internal/bindListeners.js.map +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetFunctions.js +6 -6
- package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetI18n.js +4 -4
- package/dist/esm/internal/compute/WidgetI18n.js.map +1 -1
- package/dist/esm/internal/compute/checkIf.js +10 -23
- package/dist/esm/internal/compute/checkIf.js.map +1 -1
- package/dist/esm/internal/compute/computeRealProperties.js +22 -35
- package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
- package/dist/esm/internal/compute/computeRealValue.js +42 -49
- package/dist/esm/internal/compute/computeRealValue.js.map +1 -1
- package/dist/esm/internal/compute/evaluate.js +71 -75
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/compute/getGeneralGlobals.js +5 -5
- package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/esm/internal/compute/getNextStateOfUseBrick.js +1 -1
- package/dist/esm/internal/compute/getStorageItem.js +2 -3
- package/dist/esm/internal/compute/getStorageItem.js.map +1 -1
- package/dist/esm/internal/compute/getTracks.js +5 -5
- package/dist/esm/internal/compute/getTracks.js.map +1 -1
- package/dist/esm/internal/compute/listenOnTrackingContext.js +8 -11
- package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/esm/internal/compute/markAsComputed.js +2 -2
- package/dist/esm/internal/compute/markAsComputed.js.map +1 -1
- package/dist/esm/internal/compute/setProperties.js +1 -1
- package/dist/esm/internal/compute/setProperties.js.map +1 -1
- package/dist/esm/internal/compute/setRealProperties.js +3 -3
- package/dist/esm/internal/compute/setRealProperties.js.map +1 -1
- package/dist/esm/internal/customizeColorTheme.js +15 -13
- package/dist/esm/internal/customizeColorTheme.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js +161 -177
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/data/getProviderBrick.js +21 -28
- package/dist/esm/internal/data/getProviderBrick.js.map +1 -1
- package/dist/esm/internal/data/realTimeDataInspect.js +5 -5
- package/dist/esm/internal/data/realTimeDataInspect.js.map +1 -1
- package/dist/esm/internal/data/resolveData.js +89 -103
- package/dist/esm/internal/data/resolveData.js.map +1 -1
- package/dist/esm/internal/data/resolveDataStore.js +53 -67
- package/dist/esm/internal/data/resolveDataStore.js.map +1 -1
- package/dist/esm/internal/devtools.js +9 -9
- package/dist/esm/internal/devtools.js.map +1 -1
- package/dist/esm/internal/enums.js +1 -1
- package/dist/esm/internal/fulfilStoryboard.js +15 -28
- package/dist/esm/internal/fulfilStoryboard.js.map +1 -1
- package/dist/esm/internal/hasInstalledApp.js +3 -3
- package/dist/esm/internal/hasInstalledApp.js.map +1 -1
- package/dist/esm/internal/historyExtended.js +40 -37
- package/dist/esm/internal/historyExtended.js.map +1 -1
- package/dist/esm/internal/i18n.js +5 -5
- package/dist/esm/internal/i18n.js.map +1 -1
- package/dist/esm/internal/injected.js +1 -1
- package/dist/esm/internal/injected.js.map +1 -1
- package/dist/esm/internal/insertPreviewRoutes.js +3 -3
- package/dist/esm/internal/insertPreviewRoutes.js.map +1 -1
- package/dist/esm/internal/matchPath.js +17 -17
- package/dist/esm/internal/matchPath.js.map +1 -1
- package/dist/esm/internal/matchRoutes.js +18 -25
- package/dist/esm/internal/matchRoutes.js.map +1 -1
- package/dist/esm/internal/matchStoryboard.js +6 -6
- package/dist/esm/internal/matchStoryboard.js.map +1 -1
- package/dist/esm/internal/mediaQuery.js +11 -11
- package/dist/esm/internal/mediaQuery.js.map +1 -1
- package/dist/esm/internal/mount.js +7 -7
- package/dist/esm/internal/mount.js.map +1 -1
- package/dist/esm/internal/poll.js +53 -60
- package/dist/esm/internal/poll.js.map +1 -1
- package/dist/esm/internal/proxyFactories.js +4 -4
- package/dist/esm/internal/proxyFactories.js.map +1 -1
- package/dist/esm/internal/registerAppI18n.js +6 -6
- package/dist/esm/internal/registerAppI18n.js.map +1 -1
- package/dist/esm/internal/registerCustomTemplates.js +3 -3
- package/dist/esm/internal/registerCustomTemplates.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +140 -146
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/setupRootRuntimeContext.js +6 -7
- package/dist/esm/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/esm/internal/sse.js +24 -53
- package/dist/esm/internal/sse.js.map +1 -1
- package/dist/esm/internal/test_only.js +1 -1
- package/dist/esm/isStrictMode.js +3 -3
- package/dist/esm/isStrictMode.js.map +1 -1
- package/dist/esm/setAppVariable.js +1 -1
- package/dist/esm/setAppVariable.js.map +1 -1
- package/dist/esm/setLoginStateCookie.js +5 -5
- package/dist/esm/setLoginStateCookie.js.map +1 -1
- package/dist/esm/setUIVersion.js +1 -1
- package/dist/esm/setWatermark.js +13 -13
- package/dist/esm/setWatermark.js.map +1 -1
- package/dist/esm/themeAndMode.js +14 -13
- package/dist/esm/themeAndMode.js.map +1 -1
- package/dist/types/tsdoc-metadata.json +1 -1
- package/package.json +12 -12
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import _classPrivateMethodInitSpec from "@babel/runtime/helpers/classPrivateMethodInitSpec";
|
|
3
2
|
import _classPrivateFieldInitSpec from "@babel/runtime/helpers/classPrivateFieldInitSpec";
|
|
4
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
@@ -14,8 +13,8 @@ import { mountTree } from "./mount.js";
|
|
|
14
13
|
import { RenderTag } from "./enums.js";
|
|
15
14
|
import { unbindTemplateProxy } from "./CustomTemplates/bindTemplateProxy.js";
|
|
16
15
|
import { hooks } from "./Runtime.js";
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const commonLifeCycles = ["onMount", "onUnmount", "onMediaChange", "onScrollIntoView", "onMessage", "onMessageClose"];
|
|
17
|
+
const pageOnlyLifeCycles = ["onBeforePageLoad", "onPageLoad", "onPageLeave", "onBeforePageLeave", "onAnchorLoad", "onAnchorUnload"];
|
|
19
18
|
var _routeHelper = /*#__PURE__*/new WeakMap();
|
|
20
19
|
var _memoizedLifeCycle = /*#__PURE__*/new WeakMap();
|
|
21
20
|
var _observers = /*#__PURE__*/new WeakMap();
|
|
@@ -28,7 +27,6 @@ var _incrementalRenderStates = /*#__PURE__*/new WeakMap();
|
|
|
28
27
|
var _RendererContext_brand = /*#__PURE__*/new WeakSet();
|
|
29
28
|
export class RendererContext {
|
|
30
29
|
constructor(scope, options) {
|
|
31
|
-
var _options$unknownBrick;
|
|
32
30
|
_classPrivateMethodInitSpec(this, _RendererContext_brand);
|
|
33
31
|
/**
|
|
34
32
|
* - page: render as whole page, triggering page life cycles.
|
|
@@ -60,7 +58,7 @@ export class RendererContext {
|
|
|
60
58
|
_classPrivateFieldInitSpec(this, _memoizedMenuRequestNodeMap, new WeakMap());
|
|
61
59
|
_classPrivateFieldInitSpec(this, _incrementalRenderStates, new Map());
|
|
62
60
|
this.scope = scope;
|
|
63
|
-
this.unknownBricks = (
|
|
61
|
+
this.unknownBricks = (options === null || options === void 0 ? void 0 : options.unknownBricks) ?? "throw";
|
|
64
62
|
_classPrivateFieldSet(_routeHelper, this, options === null || options === void 0 ? void 0 : options.routeHelper);
|
|
65
63
|
this.renderId = options === null || options === void 0 ? void 0 : options.renderId;
|
|
66
64
|
}
|
|
@@ -71,8 +69,8 @@ export class RendererContext {
|
|
|
71
69
|
_classPrivateFieldGet(_memoizedMenuRequestNodeMap, this).set(routes, menuRequestNode);
|
|
72
70
|
}
|
|
73
71
|
getMenuRequests() {
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
const menuRequests = [];
|
|
73
|
+
let current = _classPrivateFieldGet(_initialMenuRequestNode, this);
|
|
76
74
|
while (current) {
|
|
77
75
|
if (current.request) {
|
|
78
76
|
menuRequests.push(current.request);
|
|
@@ -89,30 +87,26 @@ export class RendererContext {
|
|
|
89
87
|
}
|
|
90
88
|
return menuRequests;
|
|
91
89
|
}
|
|
92
|
-
reMergeMenuRequestNodes(parentMenuRequestNode, routes) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
while (current) {
|
|
102
|
-
if (current === node) {
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
previousSibling = current;
|
|
106
|
-
current = current.sibling;
|
|
107
|
-
}
|
|
108
|
-
if (previousSibling) {
|
|
109
|
-
previousSibling.sibling = menuRequestNode;
|
|
110
|
-
menuRequestNode.sibling = node === null || node === void 0 ? void 0 : node.sibling;
|
|
111
|
-
} else {
|
|
112
|
-
parentMenuRequestNode.child = menuRequestNode;
|
|
90
|
+
async reMergeMenuRequestNodes(parentMenuRequestNode, routes) {
|
|
91
|
+
let menuRequestNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
92
|
+
const node = _classPrivateFieldGet(_memoizedMenuRequestNodeMap, this).get(routes);
|
|
93
|
+
_classPrivateFieldGet(_memoizedMenuRequestNodeMap, this).set(routes, menuRequestNode);
|
|
94
|
+
let current = parentMenuRequestNode.child;
|
|
95
|
+
let previousSibling;
|
|
96
|
+
while (current) {
|
|
97
|
+
if (current === node) {
|
|
98
|
+
break;
|
|
113
99
|
}
|
|
114
|
-
|
|
115
|
-
|
|
100
|
+
previousSibling = current;
|
|
101
|
+
current = current.sibling;
|
|
102
|
+
}
|
|
103
|
+
if (previousSibling) {
|
|
104
|
+
previousSibling.sibling = menuRequestNode;
|
|
105
|
+
menuRequestNode.sibling = node === null || node === void 0 ? void 0 : node.sibling;
|
|
106
|
+
} else {
|
|
107
|
+
parentMenuRequestNode.child = menuRequestNode;
|
|
108
|
+
}
|
|
109
|
+
await _classPrivateFieldGet(_routeHelper, this).mergeMenus(this.getMenuRequests());
|
|
116
110
|
}
|
|
117
111
|
reBailout(output) {
|
|
118
112
|
return _classPrivateFieldGet(_routeHelper, this).bailout(output);
|
|
@@ -120,36 +114,33 @@ export class RendererContext {
|
|
|
120
114
|
reCatch(error, returnNode) {
|
|
121
115
|
return _classPrivateFieldGet(_routeHelper, this).catch(error, returnNode);
|
|
122
116
|
}
|
|
123
|
-
didPerformIncrementalRender(location, prevLocation) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
// In the meantime, allow sibling-routes to perform incremental rendering.
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
var result = yield callback(location, prevLocation);
|
|
141
|
-
// When result is null, it means the incremental rendering is tried but routes missed.
|
|
142
|
-
// In this case, we should continue to re-render the parent routes.
|
|
143
|
-
if (result) {
|
|
144
|
-
shouldIgnoreRoutes.push(...parentRoutes.slice(0, -1));
|
|
145
|
-
}
|
|
146
|
-
// Mark incremental rendering as performed at final if result is true or null.
|
|
147
|
-
if (result !== false) {
|
|
148
|
-
finalResult = true;
|
|
149
|
-
}
|
|
117
|
+
async didPerformIncrementalRender(location, prevLocation) {
|
|
118
|
+
let finalResult = false;
|
|
119
|
+
const shouldIgnoreRoutes = [];
|
|
120
|
+
// Perform incremental rendering from inside out.
|
|
121
|
+
// This allows nested incremental sub-routes.
|
|
122
|
+
for (const {
|
|
123
|
+
parentRoutes,
|
|
124
|
+
callback
|
|
125
|
+
} of [..._classPrivateFieldGet(_incrementalRenderStates, this).values()].reverse()) {
|
|
126
|
+
const parentRoute = parentRoutes[parentRoutes.length - 1];
|
|
127
|
+
if (shouldIgnoreRoutes.includes(parentRoute)) {
|
|
128
|
+
// Do not re-render parent routes if any of its children has performed incremental rendering.
|
|
129
|
+
// In the meantime, allow sibling-routes to perform incremental rendering.
|
|
130
|
+
continue;
|
|
150
131
|
}
|
|
151
|
-
|
|
152
|
-
|
|
132
|
+
const result = await callback(location, prevLocation);
|
|
133
|
+
// When result is null, it means the incremental rendering is tried but routes missed.
|
|
134
|
+
// In this case, we should continue to re-render the parent routes.
|
|
135
|
+
if (result) {
|
|
136
|
+
shouldIgnoreRoutes.push(...parentRoutes.slice(0, -1));
|
|
137
|
+
}
|
|
138
|
+
// Mark incremental rendering as performed at final if result is true or null.
|
|
139
|
+
if (result !== false) {
|
|
140
|
+
finalResult = true;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return finalResult;
|
|
153
144
|
}
|
|
154
145
|
|
|
155
146
|
/**
|
|
@@ -167,9 +158,9 @@ export class RendererContext {
|
|
|
167
158
|
if (!lifeCycle) {
|
|
168
159
|
return;
|
|
169
160
|
}
|
|
170
|
-
|
|
171
|
-
for (
|
|
172
|
-
|
|
161
|
+
const lifeCycleTypes = [...commonLifeCycles, ...(this.scope === "page" ? pageOnlyLifeCycles : [])];
|
|
162
|
+
for (const key of lifeCycleTypes) {
|
|
163
|
+
const handlers = lifeCycle[key];
|
|
173
164
|
if (handlers) {
|
|
174
165
|
_classPrivateFieldGet(_memoizedLifeCycle, this)[key].push({
|
|
175
166
|
brick,
|
|
@@ -184,7 +175,7 @@ export class RendererContext {
|
|
|
184
175
|
}
|
|
185
176
|
}
|
|
186
177
|
registerArbitraryLifeCycle(lifeCycle, fn) {
|
|
187
|
-
|
|
178
|
+
const arbitraryCallbacks = _classPrivateFieldGet(_arbitraryLifeCycle, this).get(lifeCycle);
|
|
188
179
|
if (arbitraryCallbacks) {
|
|
189
180
|
arbitraryCallbacks.add(fn);
|
|
190
181
|
} else {
|
|
@@ -195,8 +186,8 @@ export class RendererContext {
|
|
|
195
186
|
if (!_classPrivateFieldGet(_memoized, this)) {
|
|
196
187
|
_classPrivateFieldSet(_memoized, this, new WeakMap());
|
|
197
188
|
}
|
|
198
|
-
|
|
199
|
-
|
|
189
|
+
const memKey = [slotId ?? "", ...keyPath].join(".");
|
|
190
|
+
let mem = _classPrivateFieldGet(_memoized, this).get(returnNode);
|
|
200
191
|
if (!mem) {
|
|
201
192
|
mem = new Map();
|
|
202
193
|
_classPrivateFieldGet(_memoized, this).set(returnNode, mem);
|
|
@@ -209,49 +200,49 @@ export class RendererContext {
|
|
|
209
200
|
});
|
|
210
201
|
}
|
|
211
202
|
reRender(slotId, keyPath, node, returnNode) {
|
|
212
|
-
|
|
203
|
+
const memKey = [slotId ?? "", ...keyPath].join(".");
|
|
213
204
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
214
|
-
|
|
215
|
-
|
|
205
|
+
const memoized = _classPrivateFieldGet(_memoized, this).get(returnNode).get(memKey);
|
|
206
|
+
const {
|
|
216
207
|
node: prevNode,
|
|
217
208
|
last: prevLast,
|
|
218
209
|
lastNormal: prevLastNormal,
|
|
219
210
|
lastPortal: prevLastPortal
|
|
220
211
|
} = memoized;
|
|
221
|
-
|
|
222
|
-
|
|
212
|
+
let insertBeforeChild;
|
|
213
|
+
const insertPortalBeforeChildCandidates = [];
|
|
223
214
|
if ((prevNode === null || prevNode === void 0 ? void 0 : prevNode.tag) === RenderTag.PLACEHOLDER) {
|
|
224
|
-
var _getNextNormalNode
|
|
225
|
-
insertBeforeChild = (
|
|
215
|
+
var _getNextNormalNode, _getNextPortalNode;
|
|
216
|
+
insertBeforeChild = ((_getNextNormalNode = getNextNormalNode(prevNode)) === null || _getNextNormalNode === void 0 ? void 0 : _getNextNormalNode.element) ?? null;
|
|
226
217
|
// Todo(steve): handle portal bricks from useBrick.
|
|
227
|
-
|
|
218
|
+
const nextSibling = (_getNextPortalNode = getNextPortalNode(prevNode)) === null || _getNextPortalNode === void 0 ? void 0 : _getNextPortalNode.element;
|
|
228
219
|
if (nextSibling) {
|
|
229
220
|
insertPortalBeforeChildCandidates.push(nextSibling);
|
|
230
221
|
}
|
|
231
222
|
} else {
|
|
232
|
-
var _prevLastNormal$eleme,
|
|
233
|
-
insertBeforeChild = (
|
|
234
|
-
|
|
235
|
-
while (
|
|
236
|
-
insertPortalBeforeChildCandidates.push(
|
|
223
|
+
var _prevLastNormal$eleme, _prevLastPortal$eleme;
|
|
224
|
+
insertBeforeChild = (prevLastNormal === null || prevLastNormal === void 0 || (_prevLastNormal$eleme = prevLastNormal.element) === null || _prevLastNormal$eleme === void 0 ? void 0 : _prevLastNormal$eleme.nextSibling) ?? null;
|
|
225
|
+
let nextSibling = prevLastPortal === null || prevLastPortal === void 0 || (_prevLastPortal$eleme = prevLastPortal.element) === null || _prevLastPortal$eleme === void 0 ? void 0 : _prevLastPortal$eleme.nextSibling;
|
|
226
|
+
while (nextSibling) {
|
|
227
|
+
insertPortalBeforeChildCandidates.push(nextSibling);
|
|
237
228
|
// Collect all portal bricks from useBrick, until found a normal portal
|
|
238
229
|
// brick other than from useBrick.
|
|
239
230
|
// Because useBrick could be removed during unmount.
|
|
240
|
-
if (!(
|
|
231
|
+
if (!(nextSibling instanceof HTMLElement && nextSibling.tagName === "DIV")) {
|
|
241
232
|
break;
|
|
242
233
|
}
|
|
243
|
-
|
|
234
|
+
nextSibling = nextSibling.nextSibling;
|
|
244
235
|
}
|
|
245
236
|
}
|
|
246
|
-
|
|
237
|
+
const last = getLastNode(node);
|
|
247
238
|
memoized.node = node;
|
|
248
239
|
memoized.last = last;
|
|
249
240
|
memoized.lastNormal = getLastNormalNode(node);
|
|
250
241
|
memoized.lastPortal = getLastPortalNode(node);
|
|
251
242
|
|
|
252
243
|
// Figure out the unchanged prev sibling and next sibling
|
|
253
|
-
|
|
254
|
-
|
|
244
|
+
let prevSibling;
|
|
245
|
+
let current = returnNode.child;
|
|
255
246
|
while (current && current !== prevLast) {
|
|
256
247
|
if (current.sibling === prevNode) {
|
|
257
248
|
prevSibling = current;
|
|
@@ -259,9 +250,9 @@ export class RendererContext {
|
|
|
259
250
|
}
|
|
260
251
|
current = current.sibling;
|
|
261
252
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
253
|
+
const fragment = document.createDocumentFragment();
|
|
254
|
+
const portalFragment = document.createDocumentFragment();
|
|
255
|
+
const renderRoot = {
|
|
265
256
|
tag: RenderTag.ROOT,
|
|
266
257
|
container: fragment,
|
|
267
258
|
createPortal: portalFragment,
|
|
@@ -276,7 +267,7 @@ export class RendererContext {
|
|
|
276
267
|
}
|
|
277
268
|
|
|
278
269
|
// Unmount previous bricks, including their descendants
|
|
279
|
-
|
|
270
|
+
const removeBricks = getBrickRange(prevNode, prevLast);
|
|
280
271
|
_assertClassBrand(_RendererContext_brand, this, _unmountBricks).call(this, removeBricks);
|
|
281
272
|
mountTree(renderRoot);
|
|
282
273
|
|
|
@@ -305,7 +296,7 @@ export class RendererContext {
|
|
|
305
296
|
}
|
|
306
297
|
if (portalFragment.childNodes.length > 0) {
|
|
307
298
|
var _root;
|
|
308
|
-
|
|
299
|
+
let root = node;
|
|
309
300
|
while (root && root.return) {
|
|
310
301
|
root = root.return;
|
|
311
302
|
}
|
|
@@ -313,9 +304,9 @@ export class RendererContext {
|
|
|
313
304
|
if (((_root = root) === null || _root === void 0 ? void 0 : _root.tag) !== RenderTag.ROOT) {
|
|
314
305
|
throw new Error("Cannot find render root node. This is a bug of Brick Next, please report it.");
|
|
315
306
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
for (
|
|
307
|
+
const portal = typeof root.createPortal === "function" ? root.createPortal() : root.createPortal;
|
|
308
|
+
let insertPortalBeforeChild = null;
|
|
309
|
+
for (const candidate of insertPortalBeforeChildCandidates) {
|
|
319
310
|
// Those candidates from useBrick could be removed during unmount.
|
|
320
311
|
// So we need to check if they are still in the portal.
|
|
321
312
|
if (portal.contains(candidate)) {
|
|
@@ -325,18 +316,18 @@ export class RendererContext {
|
|
|
325
316
|
}
|
|
326
317
|
portal.insertBefore(portalFragment, insertPortalBeforeChild);
|
|
327
318
|
}
|
|
328
|
-
|
|
319
|
+
const newBricks = getBrickRange(node, last);
|
|
329
320
|
_assertClassBrand(_RendererContext_brand, this, _initializeRerenderBricks).call(this, newBricks);
|
|
330
321
|
}
|
|
331
322
|
dispose() {
|
|
332
|
-
for (
|
|
323
|
+
for (const list of Object.values(_classPrivateFieldGet(_memoizedLifeCycle, this))) {
|
|
333
324
|
list.length = 0;
|
|
334
325
|
}
|
|
335
|
-
for (
|
|
336
|
-
for (
|
|
326
|
+
for (const list of _classPrivateFieldGet(_observers, this).values()) {
|
|
327
|
+
for (const observer of list) {
|
|
337
328
|
observer.disconnect();
|
|
338
329
|
}
|
|
339
|
-
|
|
330
|
+
list.length = 0;
|
|
340
331
|
}
|
|
341
332
|
_classPrivateFieldGet(_observers, this).clear();
|
|
342
333
|
if (_classPrivateFieldGet(_mediaListener, this)) {
|
|
@@ -355,7 +346,7 @@ export class RendererContext {
|
|
|
355
346
|
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onBeforePageLoad", new CustomEvent("page.beforeLoad"));
|
|
356
347
|
}
|
|
357
348
|
dispatchPageLoad() {
|
|
358
|
-
|
|
349
|
+
const event = new CustomEvent("page.load");
|
|
359
350
|
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onPageLoad", event);
|
|
360
351
|
// Currently only for e2e testing
|
|
361
352
|
window.dispatchEvent(event);
|
|
@@ -369,7 +360,7 @@ export class RendererContext {
|
|
|
369
360
|
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onPageLeave", new CustomEvent("page.leave"));
|
|
370
361
|
}
|
|
371
362
|
dispatchAnchorLoad() {
|
|
372
|
-
|
|
363
|
+
const {
|
|
373
364
|
hash
|
|
374
365
|
} = getHistory().location;
|
|
375
366
|
if (hash && hash !== "#") {
|
|
@@ -384,7 +375,7 @@ export class RendererContext {
|
|
|
384
375
|
}
|
|
385
376
|
}
|
|
386
377
|
initializeScrollIntoView() {
|
|
387
|
-
for (
|
|
378
|
+
for (const {
|
|
388
379
|
brick,
|
|
389
380
|
handlers: conf
|
|
390
381
|
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onScrollIntoView) {
|
|
@@ -400,27 +391,21 @@ export class RendererContext {
|
|
|
400
391
|
mediaEventTarget.addEventListener("change", _classPrivateFieldGet(_mediaListener, this));
|
|
401
392
|
}
|
|
402
393
|
initializeMessageDispatcher() {
|
|
403
|
-
var _hooks$
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
394
|
+
var _hooks$messageDispatc2;
|
|
395
|
+
for (const {
|
|
396
|
+
brick,
|
|
397
|
+
handlers: confList
|
|
398
|
+
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onMessage) {
|
|
399
|
+
for (const conf of [].concat(confList)) {
|
|
400
|
+
var _hooks$messageDispatc;
|
|
401
|
+
hooks === null || hooks === void 0 || (_hooks$messageDispatc = hooks.messageDispatcher) === null || _hooks$messageDispatc === void 0 || _hooks$messageDispatc.onMessage(conf.channel, detail => {
|
|
408
402
|
listenerFactory(conf.handlers, brick.runtimeContext, brick)(new CustomEvent("message.push", {
|
|
409
403
|
detail
|
|
410
404
|
}));
|
|
411
405
|
});
|
|
412
|
-
};
|
|
413
|
-
for (var conf of [].concat(confList)) {
|
|
414
|
-
_loop2(conf);
|
|
415
406
|
}
|
|
416
|
-
};
|
|
417
|
-
for (var {
|
|
418
|
-
brick,
|
|
419
|
-
handlers: confList
|
|
420
|
-
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onMessage) {
|
|
421
|
-
_loop(brick);
|
|
422
407
|
}
|
|
423
|
-
hooks === null || hooks === void 0 || (_hooks$
|
|
408
|
+
hooks === null || hooks === void 0 || (_hooks$messageDispatc2 = hooks.messageDispatcher) === null || _hooks$messageDispatc2 === void 0 || _hooks$messageDispatc2.onClose(() => {
|
|
424
409
|
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMessageClose", new CustomEvent("message.close"));
|
|
425
410
|
});
|
|
426
411
|
}
|
|
@@ -432,23 +417,23 @@ export class RendererContext {
|
|
|
432
417
|
}
|
|
433
418
|
}
|
|
434
419
|
function _unmountBricks(bricks) {
|
|
435
|
-
|
|
436
|
-
|
|
420
|
+
const lifeCycleTypes = [...commonLifeCycles, ...(this.scope === "page" ? pageOnlyLifeCycles : [])];
|
|
421
|
+
const unmountList = [];
|
|
437
422
|
|
|
438
423
|
// Clear life cycle handlers, record `onUnmount` at the same time
|
|
439
|
-
for (
|
|
440
|
-
|
|
424
|
+
for (const key of lifeCycleTypes) {
|
|
425
|
+
const removed = remove(_classPrivateFieldGet(_memoizedLifeCycle, this)[key], item => bricks.has(item.brick));
|
|
441
426
|
if (key === "onUnmount") {
|
|
442
427
|
unmountList.push(...removed);
|
|
443
428
|
}
|
|
444
429
|
}
|
|
445
430
|
|
|
446
431
|
// Clear intersection observers
|
|
447
|
-
for (
|
|
432
|
+
for (const brick of bricks) {
|
|
448
433
|
var _brick$element, _brick$element2;
|
|
449
|
-
|
|
434
|
+
const observers = _classPrivateFieldGet(_observers, this).get(brick);
|
|
450
435
|
if (observers !== null && observers !== void 0 && observers.length) {
|
|
451
|
-
for (
|
|
436
|
+
for (const observer of observers) {
|
|
452
437
|
observer.disconnect();
|
|
453
438
|
}
|
|
454
439
|
observers.length = 0;
|
|
@@ -462,17 +447,17 @@ function _unmountBricks(bricks) {
|
|
|
462
447
|
}
|
|
463
448
|
|
|
464
449
|
// Dispatch unmount events
|
|
465
|
-
|
|
466
|
-
for (
|
|
467
|
-
brick
|
|
450
|
+
const unmountEvent = new CustomEvent("unmount");
|
|
451
|
+
for (const {
|
|
452
|
+
brick,
|
|
468
453
|
handlers
|
|
469
454
|
} of unmountList) {
|
|
470
|
-
listenerFactory(handlers,
|
|
455
|
+
listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);
|
|
471
456
|
}
|
|
472
457
|
}
|
|
473
458
|
function _initializeRerenderBricks(bricks) {
|
|
474
|
-
|
|
475
|
-
for (
|
|
459
|
+
const mountEvent = new CustomEvent("mount");
|
|
460
|
+
for (const {
|
|
476
461
|
brick,
|
|
477
462
|
handlers
|
|
478
463
|
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onMount) {
|
|
@@ -480,37 +465,36 @@ function _initializeRerenderBricks(bricks) {
|
|
|
480
465
|
listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);
|
|
481
466
|
}
|
|
482
467
|
}
|
|
483
|
-
for (
|
|
484
|
-
brick
|
|
468
|
+
for (const {
|
|
469
|
+
brick,
|
|
485
470
|
handlers: conf
|
|
486
471
|
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onScrollIntoView) {
|
|
487
|
-
if (bricks.has(
|
|
488
|
-
_assertClassBrand(_RendererContext_brand, this, _addObserver).call(this,
|
|
472
|
+
if (bricks.has(brick)) {
|
|
473
|
+
_assertClassBrand(_RendererContext_brand, this, _addObserver).call(this, brick, conf);
|
|
489
474
|
}
|
|
490
475
|
}
|
|
491
476
|
}
|
|
492
477
|
function _dispatchGeneralLifeCycle(type, event) {
|
|
493
478
|
// istanbul ignore next
|
|
494
479
|
if (process.env.NODE_ENV === "development" && this.scope === "fragment" && pageOnlyLifeCycles.includes(type)) {
|
|
495
|
-
throw new Error(
|
|
480
|
+
throw new Error(`\`lifeCycle.${type}\` cannot be used in ${this.scope}.\nThis is a bug of Brick Next, please report it.`);
|
|
496
481
|
}
|
|
497
|
-
for (
|
|
482
|
+
for (const {
|
|
498
483
|
brick,
|
|
499
484
|
handlers
|
|
500
485
|
} of _classPrivateFieldGet(_memoizedLifeCycle, this)[type]) {
|
|
501
486
|
listenerFactory(handlers, brick.runtimeContext, brick)(event);
|
|
502
487
|
}
|
|
503
|
-
|
|
488
|
+
const arbitraryCallbacks = _classPrivateFieldGet(_arbitraryLifeCycle, this).get(type);
|
|
504
489
|
if (arbitraryCallbacks) {
|
|
505
|
-
for (
|
|
490
|
+
for (const fn of arbitraryCallbacks) {
|
|
506
491
|
fn();
|
|
507
492
|
}
|
|
508
493
|
}
|
|
509
494
|
}
|
|
510
495
|
function _addObserver(brick, conf) {
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
var observer = new IntersectionObserver((entries, observer) => {
|
|
496
|
+
const threshold = conf.threshold ?? 0.1;
|
|
497
|
+
const observer = new IntersectionObserver((entries, observer) => {
|
|
514
498
|
entries.forEach(entry => {
|
|
515
499
|
if (entry.isIntersecting) {
|
|
516
500
|
if (entry.intersectionRatio >= threshold) {
|
|
@@ -523,7 +507,7 @@ function _addObserver(brick, conf) {
|
|
|
523
507
|
threshold
|
|
524
508
|
});
|
|
525
509
|
observer.observe(brick.element);
|
|
526
|
-
|
|
510
|
+
let list = _classPrivateFieldGet(_observers, this).get(brick);
|
|
527
511
|
if (!list) {
|
|
528
512
|
list = [];
|
|
529
513
|
_classPrivateFieldGet(_observers, this).set(brick, list);
|
|
@@ -531,7 +515,7 @@ function _addObserver(brick, conf) {
|
|
|
531
515
|
list.push(observer);
|
|
532
516
|
}
|
|
533
517
|
function getLastNode(node) {
|
|
534
|
-
|
|
518
|
+
let last = node;
|
|
535
519
|
while ((_last = last) !== null && _last !== void 0 && _last.sibling) {
|
|
536
520
|
var _last;
|
|
537
521
|
last = last.sibling;
|
|
@@ -545,8 +529,8 @@ function getNextNormalNode(node) {
|
|
|
545
529
|
return getSpecifiedNormalNode(node, true);
|
|
546
530
|
}
|
|
547
531
|
function getSpecifiedNormalNode(node, next) {
|
|
548
|
-
|
|
549
|
-
|
|
532
|
+
let last;
|
|
533
|
+
let current = node;
|
|
550
534
|
while (current) {
|
|
551
535
|
if (current.tag === RenderTag.BRICK && !current.portal) {
|
|
552
536
|
if (next) {
|
|
@@ -565,8 +549,8 @@ function getNextPortalNode(node) {
|
|
|
565
549
|
return getSpecifiedPortalNode(node, true);
|
|
566
550
|
}
|
|
567
551
|
function getSpecifiedPortalNode(node, next) {
|
|
568
|
-
|
|
569
|
-
|
|
552
|
+
let last;
|
|
553
|
+
let current = node;
|
|
570
554
|
while (current) {
|
|
571
555
|
if (current.tag === RenderTag.BRICK && current.portal) {
|
|
572
556
|
if (next) {
|
|
@@ -580,7 +564,7 @@ function getSpecifiedPortalNode(node, next) {
|
|
|
580
564
|
current = current.sibling;
|
|
581
565
|
} else {
|
|
582
566
|
var _currentReturn;
|
|
583
|
-
|
|
567
|
+
let currentReturn = current.return;
|
|
584
568
|
while (currentReturn) {
|
|
585
569
|
if (currentReturn.sibling) {
|
|
586
570
|
break;
|
|
@@ -593,8 +577,8 @@ function getSpecifiedPortalNode(node, next) {
|
|
|
593
577
|
return last;
|
|
594
578
|
}
|
|
595
579
|
function getBrickRange(from, to) {
|
|
596
|
-
|
|
597
|
-
|
|
580
|
+
const range = new Set();
|
|
581
|
+
let current = from;
|
|
598
582
|
while (current) {
|
|
599
583
|
if (current.tag === RenderTag.BRICK) {
|
|
600
584
|
range.add(current);
|
|
@@ -607,7 +591,7 @@ function getBrickRange(from, to) {
|
|
|
607
591
|
current = current.sibling;
|
|
608
592
|
} else {
|
|
609
593
|
var _currentReturn2;
|
|
610
|
-
|
|
594
|
+
let currentReturn = current.return;
|
|
611
595
|
while (currentReturn && currentReturn !== to) {
|
|
612
596
|
if (currentReturn.sibling) {
|
|
613
597
|
break;
|