@next-core/runtime 1.16.0 → 1.17.1
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/createRoot.js +6 -1
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +7 -5
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +3 -5
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/Router.js +6 -1
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/internal/compute/computeRealProperties.js +27 -38
- package/dist/cjs/internal/compute/computeRealProperties.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js +31 -11
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +9 -3
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/esm/createRoot.js +6 -1
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +23 -15
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/esm/internal/Renderer.js +4 -6
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/Router.js +6 -1
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/compute/computeRealProperties.js +47 -58
- package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js +31 -11
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +9 -3
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/types/internal/CustomTemplates/constants.d.ts +2 -2
- package/dist/types/internal/CustomTemplates/setupTemplateProxy.d.ts +2 -2
- package/dist/types/internal/Runtime.d.ts +2 -2
- package/dist/types/internal/compute/computeRealProperties.d.ts +4 -3
- package/dist/types/internal/data/DataStore.d.ts +3 -0
- package/dist/types/internal/interfaces.d.ts +3 -2
- package/dist/types/internal/secret_internals.d.ts +3 -1
- package/package.json +6 -6
|
@@ -3,71 +3,60 @@ import { isObject } from "@next-core/utils/general";
|
|
|
3
3
|
import { asyncComputeRealValue, computeRealValue } from "./computeRealValue.js";
|
|
4
4
|
import { StateOfUseBrick } from "./getNextStateOfUseBrick.js";
|
|
5
5
|
import { getTracks } from "./getTracks.js";
|
|
6
|
-
export function asyncComputeRealProperties(
|
|
7
|
-
return _asyncComputeRealProperties.apply(this, arguments);
|
|
8
|
-
}
|
|
9
|
-
function _asyncComputeRealProperties() {
|
|
10
|
-
_asyncComputeRealProperties = _asyncToGenerator(function* (properties, runtimeContext, trackingContextList) {
|
|
11
|
-
if (isObject(properties)) {
|
|
12
|
-
return Object.fromEntries((yield Promise.all(Object.entries(properties).map( /*#__PURE__*/function () {
|
|
13
|
-
var _ref3 = _asyncToGenerator(function* (_ref2) {
|
|
14
|
-
var [propName, propValue] = _ref2;
|
|
15
|
-
if (Array.isArray(trackingContextList)) {
|
|
16
|
-
var {
|
|
17
|
-
contextNames,
|
|
18
|
-
stateNames,
|
|
19
|
-
formStateNames
|
|
20
|
-
} = getTracks(propValue);
|
|
21
|
-
if (contextNames || stateNames || formStateNames) {
|
|
22
|
-
trackingContextList.push({
|
|
23
|
-
contextNames,
|
|
24
|
-
stateNames,
|
|
25
|
-
formStateNames,
|
|
26
|
-
propName,
|
|
27
|
-
propValue
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// Related: https://github.com/facebook/react/issues/11347
|
|
32
|
-
var realValue = yield asyncComputeRealValue(propValue, runtimeContext, {
|
|
33
|
-
$$lazyForUseBrick: true,
|
|
34
|
-
$$stateOfUseBrick: propName === "useBrick" ? StateOfUseBrick.USE_BRICK : StateOfUseBrick.INITIAL
|
|
35
|
-
});
|
|
36
|
-
// For `style` and `dataset`, only object is acceptable.
|
|
37
|
-
if (propName !== "style" && propName !== "dataset" || isObject(realValue)) {
|
|
38
|
-
return [propName, realValue];
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
return function (_x4) {
|
|
42
|
-
return _ref3.apply(this, arguments);
|
|
43
|
-
};
|
|
44
|
-
}()))).filter(Boolean));
|
|
45
|
-
}
|
|
46
|
-
return {};
|
|
47
|
-
});
|
|
48
|
-
return _asyncComputeRealProperties.apply(this, arguments);
|
|
49
|
-
}
|
|
50
|
-
export function computeRealProperties(properties, runtimeContext, trackingContextList) {
|
|
6
|
+
export function asyncComputeRealProperties(properties, runtimeContext, trackingContextList) {
|
|
51
7
|
if (isObject(properties)) {
|
|
52
8
|
return Object.fromEntries(Object.entries(properties).map(_ref => {
|
|
53
9
|
var [propName, propValue] = _ref;
|
|
54
|
-
|
|
55
|
-
|
|
10
|
+
var {
|
|
11
|
+
contextNames,
|
|
12
|
+
stateNames,
|
|
13
|
+
formStateNames
|
|
14
|
+
} = getTracks(propValue);
|
|
15
|
+
if (contextNames || stateNames || formStateNames) {
|
|
16
|
+
trackingContextList.push({
|
|
56
17
|
contextNames,
|
|
57
18
|
stateNames,
|
|
58
|
-
formStateNames
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
contextNames,
|
|
63
|
-
stateNames,
|
|
64
|
-
formStateNames,
|
|
65
|
-
propName,
|
|
66
|
-
propValue
|
|
67
|
-
});
|
|
68
|
-
}
|
|
19
|
+
formStateNames,
|
|
20
|
+
propName,
|
|
21
|
+
propValue
|
|
22
|
+
});
|
|
69
23
|
}
|
|
70
24
|
// Related: https://github.com/facebook/react/issues/11347
|
|
25
|
+
var asyncValue = asyncComputeRealValue(propValue, runtimeContext, {
|
|
26
|
+
$$lazyForUseBrick: true,
|
|
27
|
+
$$stateOfUseBrick: propName === "useBrick" ? StateOfUseBrick.USE_BRICK : StateOfUseBrick.INITIAL
|
|
28
|
+
});
|
|
29
|
+
return [propName, asyncValue];
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
export function constructAsyncProperties(_x) {
|
|
35
|
+
return _constructAsyncProperties.apply(this, arguments);
|
|
36
|
+
}
|
|
37
|
+
function _constructAsyncProperties() {
|
|
38
|
+
_constructAsyncProperties = _asyncToGenerator(function* (asyncProperties) {
|
|
39
|
+
return Object.fromEntries((yield Promise.all(Object.entries(asyncProperties).map( /*#__PURE__*/function () {
|
|
40
|
+
var _ref4 = _asyncToGenerator(function* (_ref3) {
|
|
41
|
+
var [propName, asyncValue] = _ref3;
|
|
42
|
+
var value = yield asyncValue;
|
|
43
|
+
// For `style` and `dataset`, only object is acceptable.
|
|
44
|
+
if (propName !== "style" && propName !== "dataset" || isObject(value)) {
|
|
45
|
+
return [propName, value];
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return function (_x2) {
|
|
49
|
+
return _ref4.apply(this, arguments);
|
|
50
|
+
};
|
|
51
|
+
}()))).filter(Boolean));
|
|
52
|
+
});
|
|
53
|
+
return _constructAsyncProperties.apply(this, arguments);
|
|
54
|
+
}
|
|
55
|
+
export function computeRealProperties(properties, runtimeContext) {
|
|
56
|
+
if (isObject(properties)) {
|
|
57
|
+
return Object.fromEntries(Object.entries(properties).map(_ref2 => {
|
|
58
|
+
var [propName, propValue] = _ref2;
|
|
59
|
+
// Related: https://github.com/facebook/react/issues/11347
|
|
71
60
|
var realValue = computeRealValue(propValue, runtimeContext, {
|
|
72
61
|
$$lazyForUseBrick: true,
|
|
73
62
|
$$stateOfUseBrick: propName === "useBrick" ? StateOfUseBrick.USE_BRICK : StateOfUseBrick.INITIAL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeRealProperties.js","names":["isObject","asyncComputeRealValue","computeRealValue","StateOfUseBrick","getTracks","asyncComputeRealProperties","
|
|
1
|
+
{"version":3,"file":"computeRealProperties.js","names":["isObject","asyncComputeRealValue","computeRealValue","StateOfUseBrick","getTracks","asyncComputeRealProperties","properties","runtimeContext","trackingContextList","Object","fromEntries","entries","map","_ref","propName","propValue","contextNames","stateNames","formStateNames","push","asyncValue","$$lazyForUseBrick","$$stateOfUseBrick","USE_BRICK","INITIAL","constructAsyncProperties","_x","_constructAsyncProperties","apply","arguments","_asyncToGenerator","asyncProperties","Promise","all","_ref4","_ref3","value","_x2","filter","Boolean","computeRealProperties","_ref2","realValue"],"sources":["../../../../src/internal/compute/computeRealProperties.ts"],"sourcesContent":["import { isObject } from \"@next-core/utils/general\";\nimport { asyncComputeRealValue, computeRealValue } from \"./computeRealValue.js\";\nimport { TrackingContextItem } from \"./listenOnTrackingContext.js\";\nimport type { AsyncProperties, RuntimeContext } from \"../interfaces.js\";\nimport { StateOfUseBrick } from \"./getNextStateOfUseBrick.js\";\nimport { getTracks } from \"./getTracks.js\";\n\nexport function asyncComputeRealProperties(\n properties: Record<string, unknown> | undefined,\n runtimeContext: RuntimeContext,\n trackingContextList: TrackingContextItem[]\n): AsyncProperties {\n if (isObject(properties)) {\n return Object.fromEntries(\n Object.entries(properties).map<[string, Promise<unknown>]>(\n ([propName, propValue]) => {\n const { contextNames, stateNames, formStateNames } =\n getTracks(propValue);\n if (contextNames || stateNames || formStateNames) {\n trackingContextList.push({\n contextNames,\n stateNames,\n formStateNames,\n propName,\n propValue,\n });\n }\n // Related: https://github.com/facebook/react/issues/11347\n const asyncValue = asyncComputeRealValue(propValue, runtimeContext, {\n $$lazyForUseBrick: true,\n $$stateOfUseBrick:\n propName === \"useBrick\"\n ? StateOfUseBrick.USE_BRICK\n : StateOfUseBrick.INITIAL,\n });\n return [propName, asyncValue];\n }\n )\n );\n }\n\n return {};\n}\n\nexport async function constructAsyncProperties(\n asyncProperties: AsyncProperties\n): Promise<Record<string, unknown>> {\n return Object.fromEntries(\n (\n await Promise.all(\n Object.entries(asyncProperties).map(async ([propName, asyncValue]) => {\n const value = await asyncValue;\n // For `style` and `dataset`, only object is acceptable.\n if (\n (propName !== \"style\" && propName !== \"dataset\") ||\n isObject(value)\n ) {\n return [propName, value];\n }\n })\n )\n ).filter(Boolean) as [string, unknown][]\n );\n}\n\nexport function computeRealProperties(\n properties: Record<string, unknown> | undefined,\n runtimeContext: RuntimeContext\n): Record<string, unknown> {\n if (isObject(properties)) {\n return Object.fromEntries(\n Object.entries(properties)\n .map<[string, unknown] | undefined>(([propName, propValue]) => {\n // Related: https://github.com/facebook/react/issues/11347\n const realValue = computeRealValue(propValue, runtimeContext, {\n $$lazyForUseBrick: true,\n $$stateOfUseBrick:\n propName === \"useBrick\"\n ? StateOfUseBrick.USE_BRICK\n : StateOfUseBrick.INITIAL,\n });\n // For `style` and `dataset`, only object is acceptable.\n if (\n (propName !== \"style\" && propName !== \"dataset\") ||\n isObject(realValue)\n ) {\n return [propName, realValue];\n }\n })\n .filter(Boolean) as [string, unknown][]\n );\n }\n\n return {};\n}\n"],"mappings":"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"}
|
|
@@ -180,6 +180,23 @@ export class DataStore {
|
|
|
180
180
|
}
|
|
181
181
|
})();
|
|
182
182
|
}
|
|
183
|
+
|
|
184
|
+
/** After mount, dispatch the change event when an async data is loaded */
|
|
185
|
+
handleAsyncAfterMount() {
|
|
186
|
+
this.data.forEach(item => {
|
|
187
|
+
if (item.async) {
|
|
188
|
+
// An async data always has `loading`
|
|
189
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
190
|
+
item.loading.then(value => {
|
|
191
|
+
item.loaded = true;
|
|
192
|
+
item.value = value;
|
|
193
|
+
item.eventTarget.dispatchEvent(new CustomEvent(this.changeEventType, {
|
|
194
|
+
detail: value
|
|
195
|
+
}));
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
183
200
|
resolve(dataConf, runtimeContext, asyncHostProperties) {
|
|
184
201
|
var _this3 = this;
|
|
185
202
|
return _asyncToGenerator(function* () {
|
|
@@ -187,14 +204,12 @@ export class DataStore {
|
|
|
187
204
|
return false;
|
|
188
205
|
}
|
|
189
206
|
var value;
|
|
190
|
-
if (asyncHostProperties && (_this3.type === "STATE" ? dataConf.expose : _this3.type === "FORM_STATE")) {
|
|
191
|
-
|
|
192
|
-
if (hasOwnProperty(hostProps, dataConf.name)) {
|
|
193
|
-
value = hostProps[dataConf.name];
|
|
194
|
-
}
|
|
207
|
+
if (asyncHostProperties && (_this3.type === "STATE" ? dataConf.expose : _this3.type === "FORM_STATE") && hasOwnProperty(asyncHostProperties, dataConf.name)) {
|
|
208
|
+
value = yield asyncHostProperties[dataConf.name];
|
|
195
209
|
}
|
|
196
210
|
var load;
|
|
197
|
-
var
|
|
211
|
+
var loading;
|
|
212
|
+
var resolvePolicy = "eager";
|
|
198
213
|
if (value === undefined) {
|
|
199
214
|
if (dataConf.resolve) {
|
|
200
215
|
var resolveConf = _objectSpread({
|
|
@@ -209,15 +224,18 @@ export class DataStore {
|
|
|
209
224
|
return _ref.apply(this, arguments);
|
|
210
225
|
};
|
|
211
226
|
}();
|
|
212
|
-
|
|
213
|
-
|
|
227
|
+
// `async` take precedence over `lazy`
|
|
228
|
+
resolvePolicy = dataConf.resolve.async ? "async" : dataConf.resolve.lazy ? "lazy" : "eager";
|
|
229
|
+
if (resolvePolicy === "eager") {
|
|
214
230
|
value = yield load();
|
|
231
|
+
} else if (resolvePolicy === "async") {
|
|
232
|
+
loading = load();
|
|
215
233
|
}
|
|
216
234
|
} else if (!hasOwnProperty(dataConf, "value")) {
|
|
217
235
|
return false;
|
|
218
236
|
}
|
|
219
237
|
}
|
|
220
|
-
if ((!load ||
|
|
238
|
+
if ((!load || resolvePolicy !== "eager") && dataConf.value !== undefined) {
|
|
221
239
|
// If the context has no resolve, just use its `value`.
|
|
222
240
|
// Or if the resolve is ignored or lazy, use its `value` as a fallback.
|
|
223
241
|
value = yield asyncComputeRealValue(dataConf.value, runtimeContext);
|
|
@@ -228,10 +246,12 @@ export class DataStore {
|
|
|
228
246
|
// This is required for tracking context, even if no `onChange` is specified.
|
|
229
247
|
eventTarget: new EventTarget(),
|
|
230
248
|
load,
|
|
231
|
-
loaded:
|
|
249
|
+
loaded: resolvePolicy === "eager",
|
|
250
|
+
loading,
|
|
251
|
+
async: resolvePolicy === "async",
|
|
232
252
|
deps: []
|
|
233
253
|
};
|
|
234
|
-
if (
|
|
254
|
+
if (resolvePolicy === "lazy") {
|
|
235
255
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
236
256
|
var {
|
|
237
257
|
trigger
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","changeEventType","getValue","name","_this$data$get","data","get","value","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","map","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","_objectSpread","cache","then","val","err","error","callbackFactory","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","pendingResult","_this3","expose","hostProps","isLazyResolve","undefined","resolveConf","transform","_ref","options","_x","apply","arguments","lazy","newData","EventTarget","trigger","_this3$rendererContex","registerArbitraryLifeCycle","track","dep","batchAddListener","has","set","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostProperties &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n const hostProps = await asyncHostProperties;\n if (hasOwnProperty(hostProps, dataConf.name)) {\n value = hostProps[dataConf.name];\n }\n }\n let load: DataStoreItem[\"load\"];\n let isLazyResolve: boolean | undefined = false;\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n isLazyResolve = dataConf.resolve.lazy;\n if (!isLazyResolve) {\n value = await load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if ((!load || isLazyResolve) && dataConf.value !== undefined) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: !isLazyResolve,\n deps: [],\n };\n\n if (isLazyResolve) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n return true;\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","changeEventType","getValue","name","_this$data$get","data","get","value","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","map","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","_objectSpread","cache","then","val","err","error","callbackFactory","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","pendingResult","handleAsyncAfterMount","async","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref","options","_x","apply","arguments","lazy","newData","EventTarget","trigger","_this3$rendererContex","registerArbitraryLifeCycle","track","dep","batchAddListener","has","set","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /** After mount, dispatch the change event when an async data is loaded */\n handleAsyncAfterMount() {\n this.data.forEach((item) => {\n if (item.async) {\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostProperties &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\") &&\n hasOwnProperty(asyncHostProperties, dataConf.name)\n ) {\n value = await asyncHostProperties[dataConf.name];\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n return true;\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -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 CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\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 appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type
|
|
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 CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\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 appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncComputedProperties = Promise<Record<string, unknown>>;\n\nexport type AsyncProperties = Record<string, Promise<unknown>>;\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: RenderNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderBrick;\n sibling?: RenderBrick;\n return?: RenderNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick;\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}\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 asyncHostProperties: AsyncProperties;\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\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"],"mappings":""}
|
|
@@ -42,9 +42,10 @@ function _renderUseBrick() {
|
|
|
42
42
|
properties: _objectSpread(_objectSpread({}, useBrick.properties), transform)
|
|
43
43
|
}), runtimeContext, rendererContext);
|
|
44
44
|
flushStableLoadBricks();
|
|
45
|
+
var scopedStores = [...tplStateStoreScope, ...formStateStoreScope];
|
|
45
46
|
yield Promise.all([...output.blockingList,
|
|
46
47
|
// Wait for local tpl state stores belong to current `useBrick` only.
|
|
47
|
-
...
|
|
48
|
+
...scopedStores.map(store => store.waitForAll()), ...runtimeContext.pendingPermissionsPreCheck]);
|
|
48
49
|
if ((_output$node = output.node) !== null && _output$node !== void 0 && _output$node.portal) {
|
|
49
50
|
throw new Error("The root brick of useBrick cannot be a portal brick");
|
|
50
51
|
}
|
|
@@ -53,7 +54,8 @@ function _renderUseBrick() {
|
|
|
53
54
|
return {
|
|
54
55
|
tagName,
|
|
55
56
|
renderRoot,
|
|
56
|
-
rendererContext
|
|
57
|
+
rendererContext,
|
|
58
|
+
scopedStores
|
|
57
59
|
};
|
|
58
60
|
});
|
|
59
61
|
return _renderUseBrick.apply(this, arguments);
|
|
@@ -61,7 +63,8 @@ function _renderUseBrick() {
|
|
|
61
63
|
export function mountUseBrick(_ref, element) {
|
|
62
64
|
var {
|
|
63
65
|
renderRoot,
|
|
64
|
-
rendererContext
|
|
66
|
+
rendererContext,
|
|
67
|
+
scopedStores
|
|
65
68
|
} = _ref;
|
|
66
69
|
var portal;
|
|
67
70
|
renderRoot.createPortal = () => {
|
|
@@ -71,6 +74,9 @@ export function mountUseBrick(_ref, element) {
|
|
|
71
74
|
return portal;
|
|
72
75
|
};
|
|
73
76
|
mountTree(renderRoot, element);
|
|
77
|
+
for (var store of scopedStores) {
|
|
78
|
+
store.handleAsyncAfterMount();
|
|
79
|
+
}
|
|
74
80
|
rendererContext.dispatchOnMount();
|
|
75
81
|
rendererContext.initializeScrollIntoView();
|
|
76
82
|
rendererContext.initializeMediaChange();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret_internals.js","names":["flushStableLoadBricks","pick","_internalApiGetRuntimeContext","_internalApiGetStoryboardInBootstrapData","renderBrick","RendererContext","mountTree","unmountTree","RenderTag","computeRealValue","isStrictMode","warnAboutStrictMode","customTemplates","registerAppI18n","renderUseBrick","_x","_x2","_renderUseBrick","apply","arguments","_asyncToGenerator","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_objectSpread","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","renderRoot","tag","ROOT","createPortal","transform","strict","output","properties","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","_ref","element","portalRoot","document","querySelector","createElement","appendChild","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmountUseBrick","_ref2","mountResult","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","noInject","updateStoryboard","appId","storyboardPatch","storyboard","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","updateStoryboardByRoute","newRoute","match","getKey","route","concat","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","updateStoryboardBySnippet","snippetData","_snippetData$bricks","snippetId","length","updateSnippetPreviewSettings","previewRouteIndex","findIndex","newPreviewRoute","menu","splice"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n} from \"./Runtime.js\";\nimport { renderBrick } from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport type { RuntimeContext } from \"./interfaces.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const runtimeContext: RuntimeContext = {\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n tplStateStoreScope,\n formStateStoreScope,\n };\n\n runtimeContext.tplStateStoreMap ??= new Map();\n runtimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n await Promise.all([\n ...output.blockingList,\n // Wait for local tpl state stores belong to current `useBrick` only.\n ...[...tplStateStoreScope, ...formStateStoreScope].map((store) =>\n store.waitForAll()\n ),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\n/** For v2 compatibility of `doTransform` from brick-kit. */\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetData.snippetId}`,\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }]\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"secret_internals.js","names":["flushStableLoadBricks","pick","_internalApiGetRuntimeContext","_internalApiGetStoryboardInBootstrapData","renderBrick","RendererContext","mountTree","unmountTree","RenderTag","computeRealValue","isStrictMode","warnAboutStrictMode","customTemplates","registerAppI18n","renderUseBrick","_x","_x2","_renderUseBrick","apply","arguments","_asyncToGenerator","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_objectSpread","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","renderRoot","tag","ROOT","createPortal","transform","strict","output","properties","scopedStores","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","_ref","element","portalRoot","document","querySelector","createElement","appendChild","handleAsyncAfterMount","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmountUseBrick","_ref2","mountResult","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","noInject","updateStoryboard","appId","storyboardPatch","storyboard","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","updateStoryboardByRoute","newRoute","match","getKey","route","concat","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","updateStoryboardBySnippet","snippetData","_snippetData$bricks","snippetId","length","updateSnippetPreviewSettings","previewRouteIndex","findIndex","newPreviewRoute","menu","splice"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n} from \"./Runtime.js\";\nimport { renderBrick } from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport type { RuntimeContext } from \"./interfaces.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[];\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const runtimeContext: RuntimeContext = {\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n tplStateStoreScope,\n formStateStoreScope,\n };\n\n runtimeContext.tplStateStoreMap ??= new Map();\n runtimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n const scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n\n await Promise.all([\n ...output.blockingList,\n // Wait for local tpl state stores belong to current `useBrick` only.\n ...scopedStores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext, scopedStores };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext, scopedStores }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n for (const store of scopedStores) {\n store.handleAsyncAfterMount();\n }\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\n/** For v2 compatibility of `doTransform` from brick-kit. */\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetData.snippetId}`,\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }]\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { BrickConf } from "@next-core/types";
|
|
2
|
-
import type {
|
|
2
|
+
import type { AsyncComputedProperties } from "../interfaces.js";
|
|
3
3
|
export declare const symbolForAsyncComputedPropsFromHost: unique symbol;
|
|
4
4
|
export declare const symbolForTplStateStoreId: unique symbol;
|
|
5
5
|
export declare const symbolForTPlExternalForEachItem: unique symbol;
|
|
6
6
|
export type RuntimeBrickConfWithTplSymbols = BrickConf & RuntimeBrickConfOfTplSymbols;
|
|
7
7
|
export interface RuntimeBrickConfOfTplSymbols {
|
|
8
|
-
[symbolForAsyncComputedPropsFromHost]?:
|
|
8
|
+
[symbolForAsyncComputedPropsFromHost]?: AsyncComputedProperties;
|
|
9
9
|
[symbolForTplStateStoreId]?: string;
|
|
10
10
|
[symbolForTPlExternalForEachItem]?: unknown;
|
|
11
11
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SlotsConfOfBricks } from "@next-core/types";
|
|
2
2
|
import { symbolForAsyncComputedPropsFromHost, symbolForTplStateStoreId } from "./constants.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { AsyncComputedProperties, TemplateHostContext } from "../interfaces.js";
|
|
4
4
|
export declare function setupTemplateProxy(hostContext: TemplateHostContext, ref: string | undefined, slots: SlotsConfOfBricks): {
|
|
5
|
-
[symbolForAsyncComputedPropsFromHost]:
|
|
5
|
+
[symbolForAsyncComputedPropsFromHost]: AsyncComputedProperties | undefined;
|
|
6
6
|
[symbolForTplStateStoreId]: string;
|
|
7
7
|
};
|
|
@@ -46,8 +46,8 @@ export interface RuntimeHooks {
|
|
|
46
46
|
widgetImagesFactory(widgetId: string, widgetVersion?: string): ImagesFactory;
|
|
47
47
|
};
|
|
48
48
|
messageDispatcher?: {
|
|
49
|
-
subscribe(...args: unknown[]): Promise<
|
|
50
|
-
unsubscribe(...args: unknown[]): Promise<
|
|
49
|
+
subscribe(...args: unknown[]): Promise<unknown>;
|
|
50
|
+
unsubscribe(...args: unknown[]): Promise<unknown>;
|
|
51
51
|
onMessage(channel: string, listener: (data: unknown) => void): void;
|
|
52
52
|
onClose(listener: () => void): void;
|
|
53
53
|
reset(): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TrackingContextItem } from "./listenOnTrackingContext.js";
|
|
2
|
-
import type { RuntimeContext } from "../interfaces.js";
|
|
3
|
-
export declare function asyncComputeRealProperties(properties: Record<string, unknown> | undefined, runtimeContext: RuntimeContext, trackingContextList
|
|
4
|
-
export declare function
|
|
2
|
+
import type { AsyncProperties, RuntimeContext } from "../interfaces.js";
|
|
3
|
+
export declare function asyncComputeRealProperties(properties: Record<string, unknown> | undefined, runtimeContext: RuntimeContext, trackingContextList: TrackingContextItem[]): AsyncProperties;
|
|
4
|
+
export declare function constructAsyncProperties(asyncProperties: AsyncProperties): Promise<Record<string, unknown>>;
|
|
5
|
+
export declare function computeRealProperties(properties: Record<string, unknown> | undefined, runtimeContext: RuntimeContext): Record<string, unknown>;
|
|
@@ -9,6 +9,7 @@ export interface DataStoreItem {
|
|
|
9
9
|
loaded?: boolean;
|
|
10
10
|
loading?: Promise<unknown>;
|
|
11
11
|
load?: (options?: ResolveOptions) => Promise<unknown>;
|
|
12
|
+
async?: boolean;
|
|
12
13
|
deps: string[];
|
|
13
14
|
}
|
|
14
15
|
export declare class DataStore<T extends DataStoreType = "CTX"> {
|
|
@@ -29,6 +30,8 @@ export declare class DataStore<T extends DataStoreType = "CTX"> {
|
|
|
29
30
|
onChange(dataName: string, listener: EventListener): void;
|
|
30
31
|
waitFor(dataNames: string[] | Set<string>): Promise<void>;
|
|
31
32
|
waitForAll(): Promise<void>;
|
|
33
|
+
/** After mount, dispatch the change event when an async data is loaded */
|
|
34
|
+
handleAsyncAfterMount(): void;
|
|
32
35
|
private resolve;
|
|
33
36
|
private batchAddListener;
|
|
34
37
|
}
|
|
@@ -16,7 +16,8 @@ export interface RuntimeContext extends LegacyCompatibleRuntimeContext {
|
|
|
16
16
|
formStateStoreId?: string;
|
|
17
17
|
formStateStoreScope?: DataStore<"FORM_STATE">[];
|
|
18
18
|
}
|
|
19
|
-
export type
|
|
19
|
+
export type AsyncComputedProperties = Promise<Record<string, unknown>>;
|
|
20
|
+
export type AsyncProperties = Record<string, Promise<unknown>>;
|
|
20
21
|
export interface ElementHolder {
|
|
21
22
|
element?: HTMLElement | null;
|
|
22
23
|
}
|
|
@@ -78,7 +79,7 @@ export type TemplateHostBrick = RuntimeBrick & {
|
|
|
78
79
|
};
|
|
79
80
|
export interface TemplateHostContext {
|
|
80
81
|
reversedProxies: ReversedProxies;
|
|
81
|
-
asyncHostProperties
|
|
82
|
+
asyncHostProperties: AsyncProperties;
|
|
82
83
|
externalSlots?: SlotsConfOfBricks;
|
|
83
84
|
tplStateStoreId: string;
|
|
84
85
|
hostBrick: TemplateHostBrick;
|