@next-core/runtime 1.14.2 → 1.16.0
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 -5
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +2 -2
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +2 -2
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +2 -2
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +45 -4
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +5 -4
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +2 -2
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/internal/bindListeners.js +24 -4
- package/dist/cjs/internal/bindListeners.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js +18 -1
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +1 -0
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/esm/createRoot.js +6 -5
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +2 -2
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js +2 -2
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/esm/internal/Renderer.js +2 -2
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +51 -4
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +5 -4
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js +2 -2
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/bindListeners.js +30 -4
- package/dist/esm/internal/bindListeners.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js +17 -1
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +1 -0
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/types/internal/CustomTemplates/expandCustomTemplate.d.ts +2 -1
- package/dist/types/internal/FormRenderer/expandFormRenderer.d.ts +2 -1
- package/dist/types/internal/RendererContext.d.ts +4 -2
- package/dist/types/internal/Runtime.d.ts +7 -0
- package/dist/types/internal/data/DataStore.d.ts +5 -3
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindListeners.js","names":["_cook","require","_general","_checkIf","_computeRealValue","_history","_getProviderBrick","_poll2","_evaluate","_setProperties","_themeAndMode","_utils","_handleHttpError","_Notification","_utils2","_Runtime","bindListeners","brick","eventsMap","runtimeContext","Object","entries","forEach","eventType","handlers","listener","listenerFactory","element","addEventListener","$$listeners","push","$$eventListeners","handler","concat","unbindListeners","removeEventListener","length","isBuiltinHandler","action","isUseProviderHandler","useProvider","isCustomHandler","target","targetRef","method","properties","isExecuteCustomHandler","isSetPropsCustomHandler","isConditionalEventHandler","then","runtimeBrick","event","_handler$batch","_handler$batch2","checkIf","else","object","split","handleHistoryAction","args","callback","handleWindowAction","handleLocationAction","handleStorageAction","preventDefault","handleConsoleAction","handleMessageAction","handleHttpError","detail","handleContextAction","batch","handleTplStateAction","type","init","argsFactory","tplHostElement","getTplHostElement","dispatchEvent","CustomEvent","handleFormStateAction","applyTheme","theme","applyMode","console","error","handleUseProviderAction","handleCustomAction","providerBrick","getProviderBrick","brickCallback","httpErrorToString","targets","rawTarget","rawTargetRef","computedTarget","isEvaluable","isPreEvaluated","computeRealValue","multiple","Array","from","document","querySelectorAll","found","querySelector","HTMLElement","computedTargetRef","targetRefs","join","map","ref","_tplHostElement$$$get","$$getElementByRef","call","filter","Boolean","useEventAsDefault","setProperties","options","_poll","task","_hooks$flowApi","computedArgs","hooks","flowApi","isFlowApiProvider","getArgsOfFlowApi","callbackFactory","eventCallbackFactory","pollableCallback","progress","success","finally","poll","enabled","startPoll","result","err","baseArgsLength","hasCallback","overrideMethod","useEventDetailAsDefault","undefined","blocked","getHistory","url","features","window","open","batchUpdate","store","updateValues","arg","name","value","updateValue","isBatch","isArray","every","isObject","ctxStore","tplStateStore","getTplStateStore","formStateStore","getFormStateStore","location","assign","storage","localStorage","sessionStorage","setItem","JSON","stringify","removeItem","Notification","show","message"],"sources":["../../../src/internal/bindListeners.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BuiltinBrickEventHandler,\n CustomBrickEventHandler,\n ExecuteCustomBrickEventHandler,\n ProviderPollOptions,\n SetPropsCustomBrickEventHandler,\n SiteTheme,\n UseProviderEventHandler,\n ConditionalEventHandler,\n BatchUpdateContextItem,\n} from \"@next-core/types\";\nimport { isEvaluable } from \"@next-core/cook\";\nimport { isObject } from \"@next-core/utils/general\";\nimport { checkIf } from \"./compute/checkIf.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { getHistory } from \"../history.js\";\nimport { getProviderBrick } from \"./data/getProviderBrick.js\";\nimport { PollableCallback, startPoll } from \"./poll.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { setProperties } from \"./compute/setProperties.js\";\nimport { applyMode, applyTheme } from \"../themeAndMode.js\";\nimport type {\n ElementHolder,\n RuntimeBrickElement,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTplHostElement,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { handleHttpError, httpErrorToString } from \"../handleHttpError.js\";\nimport { Notification } from \"../Notification.js\";\nimport { getFormStateStore } from \"./FormRenderer/utils.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { hooks } from \"./Runtime.js\";\n\nexport function bindListeners(\n brick: RuntimeBrickElement,\n eventsMap: BrickEventsMap | undefined,\n runtimeContext: RuntimeContext\n): void {\n if (!eventsMap) {\n return;\n }\n Object.entries(eventsMap).forEach(([eventType, handlers]) => {\n const listener = listenerFactory(handlers, runtimeContext, {\n element: brick,\n });\n brick.addEventListener(eventType, listener);\n\n // Remember added listeners for unbinding.\n if (!brick.$$listeners) {\n brick.$$listeners = [];\n }\n brick.$$listeners.push([eventType, listener]);\n\n // Remember added listeners for devtools.\n if (!brick.$$eventListeners) {\n brick.$$eventListeners = [];\n }\n for (const handler of ([] as BrickEventHandler[]).concat(handlers)) {\n brick.$$eventListeners.push([eventType, null, handler]);\n }\n });\n}\n\nexport function unbindListeners(brick: RuntimeBrickElement): void {\n if (brick.$$listeners) {\n for (const [eventType, listener] of brick.$$listeners) {\n brick.removeEventListener(eventType, listener);\n }\n brick.$$listeners.length = 0;\n }\n}\n\nexport function isBuiltinHandler(\n handler: BrickEventHandler\n): handler is BuiltinBrickEventHandler {\n return typeof (handler as BuiltinBrickEventHandler).action === \"string\";\n}\n\nexport function isUseProviderHandler(\n handler: BrickEventHandler\n): handler is UseProviderEventHandler {\n return typeof (handler as UseProviderEventHandler).useProvider === \"string\";\n}\n\nexport function isCustomHandler(\n handler: BrickEventHandler\n): handler is CustomBrickEventHandler {\n return !!(\n ((handler as CustomBrickEventHandler).target ||\n (handler as CustomBrickEventHandler).targetRef) &&\n ((handler as ExecuteCustomBrickEventHandler).method ||\n (handler as SetPropsCustomBrickEventHandler).properties)\n );\n}\n\nexport function isExecuteCustomHandler(\n handler: CustomBrickEventHandler\n): handler is ExecuteCustomBrickEventHandler {\n return !!(handler as ExecuteCustomBrickEventHandler).method;\n}\n\nexport function isSetPropsCustomHandler(\n handler: CustomBrickEventHandler\n): handler is SetPropsCustomBrickEventHandler {\n return !!(handler as SetPropsCustomBrickEventHandler).properties;\n}\n\nexport function isConditionalEventHandler(\n handler: BrickEventHandler\n): handler is ConditionalEventHandler {\n return !!(handler as ConditionalEventHandler).then;\n}\n\nexport function listenerFactory(\n handlers: BrickEventHandler | BrickEventHandler[],\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder\n) {\n return function (event: Event): void {\n for (const handler of ([] as BrickEventHandler[]).concat(handlers)) {\n if (!checkIf(handler, { ...runtimeContext, event })) {\n if (handler.else) {\n listenerFactory(handler.else, runtimeContext, runtimeBrick)(event);\n }\n continue;\n }\n\n if (isConditionalEventHandler(handler)) {\n listenerFactory(handler.then, runtimeContext, runtimeBrick)(event);\n } else if (isBuiltinHandler(handler)) {\n const [object, method] = handler.action.split(\".\") as any;\n switch (handler.action) {\n case \"history.push\":\n case \"history.replace\":\n case \"history.pushQuery\":\n case \"history.replaceQuery\":\n case \"history.pushAnchor\":\n case \"history.block\":\n case \"history.goBack\":\n case \"history.goForward\":\n case \"history.reload\":\n case \"history.unblock\":\n handleHistoryAction(\n event,\n method,\n handler.args,\n handler.callback,\n runtimeContext\n );\n break;\n\n // case \"segue.push\":\n // case \"segue.replace\":\n // case \"alias.push\":\n // case \"alias.replace\":\n\n case \"window.open\":\n handleWindowAction(event, handler.args, runtimeContext);\n break;\n\n case \"location.reload\":\n case \"location.assign\":\n handleLocationAction(event, method, handler.args, runtimeContext);\n break;\n\n case \"localStorage.setItem\":\n case \"localStorage.removeItem\":\n case \"sessionStorage.setItem\":\n case \"sessionStorage.removeItem\":\n handleStorageAction(\n event,\n object,\n method,\n handler.args,\n runtimeContext\n );\n break;\n\n case \"event.preventDefault\":\n event.preventDefault();\n break;\n\n case \"console.log\":\n case \"console.error\":\n case \"console.warn\":\n case \"console.info\":\n handleConsoleAction(event, method, handler.args, runtimeContext);\n break;\n\n case \"message.success\":\n case \"message.error\":\n case \"message.info\":\n case \"message.warn\":\n handleMessageAction(event, method, handler.args, runtimeContext);\n break;\n\n case \"handleHttpError\":\n handleHttpError((event as CustomEvent).detail);\n break;\n\n case \"context.assign\":\n case \"context.replace\":\n case \"context.refresh\":\n case \"context.load\":\n handleContextAction(\n event,\n method,\n handler.args,\n handler.batch ?? true,\n handler.callback,\n runtimeContext\n );\n break;\n\n case \"state.update\":\n case \"state.refresh\":\n case \"state.load\":\n handleTplStateAction(\n event,\n method,\n handler.args,\n handler.batch ?? true,\n handler.callback,\n runtimeContext\n );\n break;\n\n case \"tpl.dispatchEvent\": {\n const [type, init] = argsFactory(\n handler.args,\n runtimeContext,\n event\n ) as [string, CustomEventInit];\n const tplHostElement = getTplHostElement(\n runtimeContext,\n handler.action,\n `: ${type}`\n );\n tplHostElement.dispatchEvent(new CustomEvent(type, init));\n break;\n }\n\n case \"formstate.update\":\n handleFormStateAction(\n event,\n handler.args,\n handler.callback,\n runtimeContext\n );\n break;\n\n // case \"message.subscribe\":\n // case \"message.unsubscribe\":\n\n case \"theme.setDarkTheme\":\n case \"theme.setLightTheme\":\n applyTheme(\n handler.action === \"theme.setDarkTheme\" ? \"dark\" : \"light\"\n );\n break;\n case \"theme.setTheme\": {\n const [theme] = argsFactory(handler.args, runtimeContext, event);\n applyTheme(theme as SiteTheme);\n break;\n }\n case \"mode.setDashboardMode\":\n case \"mode.setDefaultMode\":\n applyMode(\n handler.action === \"mode.setDashboardMode\"\n ? \"dashboard\"\n : \"default\"\n );\n break;\n\n // case \"menu.clearMenuTitleCache\":\n // case \"menu.clearMenuCache\":\n\n // case \"analytics.event\":\n\n // case \"preview.debug\":\n\n default:\n // eslint-disable-next-line no-console\n console.error(\"unknown event listener action:\", handler.action);\n }\n } else if (isUseProviderHandler(handler)) {\n handleUseProviderAction(event, handler, runtimeContext, runtimeBrick);\n } else if (isCustomHandler(handler)) {\n handleCustomAction(event, handler, runtimeContext, runtimeBrick!);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"unknown event handler:\", handler);\n }\n }\n };\n}\n\nasync function handleUseProviderAction(\n event: Event,\n handler: UseProviderEventHandler,\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder\n) {\n try {\n const providerBrick = await getProviderBrick(handler.useProvider);\n const method = handler.method !== \"saveAs\" ? \"resolve\" : \"saveAs\";\n brickCallback(\n event,\n providerBrick,\n handler,\n method,\n runtimeContext,\n runtimeBrick\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(httpErrorToString(error));\n }\n}\n\nfunction handleCustomAction(\n event: Event,\n handler: CustomBrickEventHandler,\n runtimeContext: RuntimeContext,\n runtimeBrick: ElementHolder\n) {\n let targets: HTMLElement[] = [];\n const rawTarget = handler.target;\n const rawTargetRef = handler.targetRef;\n let computedTarget = rawTarget;\n // Allow `target` to be set as evaluable string.\n if (\n typeof rawTarget === \"string\"\n ? isEvaluable(rawTarget)\n : isPreEvaluated(rawTarget)\n ) {\n computedTarget = computeRealValue(rawTarget, { ...runtimeContext, event });\n }\n if (typeof computedTarget === \"string\") {\n if (computedTarget === \"_self\") {\n targets.push(runtimeBrick.element!);\n } else if (handler.multiple) {\n targets = Array.from(document.querySelectorAll(computedTarget));\n } else {\n const found = document.querySelector(computedTarget) as HTMLElement;\n if (found !== null) {\n targets.push(found);\n }\n }\n } else if (computedTarget) {\n if (computedTarget instanceof HTMLElement) {\n targets.push(computedTarget as HTMLElement);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"unexpected target:\", computedTarget);\n }\n } else if (rawTargetRef) {\n let computedTargetRef = rawTargetRef;\n // Allow `targetRef` to be set as evaluable string.\n if (\n typeof rawTargetRef === \"string\"\n ? isEvaluable(rawTargetRef)\n : isPreEvaluated(rawTargetRef)\n ) {\n computedTargetRef = computeRealValue(rawTargetRef, {\n ...runtimeContext,\n event,\n }) as string | string[];\n }\n const targetRefs = ([] as string[]).concat(computedTargetRef);\n const tplHostElement = getTplHostElement(\n runtimeContext,\n \"targetRef\",\n `: ${targetRefs.join(\", \")}`\n );\n targets.push(\n ...(targetRefs\n .map((ref) => tplHostElement.$$getElementByRef?.(ref))\n .filter(Boolean) as HTMLElement[])\n );\n }\n if (targets.length === 0) {\n // eslint-disable-next-line no-console\n console.error(\"target not found:\", rawTarget || rawTargetRef);\n return;\n }\n if (isExecuteCustomHandler(handler)) {\n targets.forEach((target) => {\n brickCallback(\n event,\n target,\n handler,\n handler.method,\n runtimeContext,\n runtimeBrick,\n {\n useEventAsDefault: true,\n }\n );\n });\n } else if (isSetPropsCustomHandler(handler)) {\n setProperties(targets, handler.properties, {\n ...runtimeContext,\n event,\n });\n }\n}\n\nasync function brickCallback(\n event: Event,\n target: HTMLElement,\n handler: ExecuteCustomBrickEventHandler | UseProviderEventHandler,\n method: string,\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder,\n options?: ArgsFactoryOptions\n): Promise<void> {\n if (typeof (target as any)[method] !== \"function\") {\n // eslint-disable-next-line no-console\n console.error(\"target has no method:\", {\n target,\n method: method,\n });\n return;\n }\n\n const task = async (): Promise<unknown> => {\n let computedArgs = argsFactory(\n handler.args,\n runtimeContext,\n event,\n options\n );\n if (\n isUseProviderHandler(handler) &&\n hooks?.flowApi?.isFlowApiProvider(handler.useProvider)\n ) {\n computedArgs = await hooks.flowApi.getArgsOfFlowApi(\n handler.useProvider,\n computedArgs,\n method\n );\n }\n return (target as any)[method](...computedArgs);\n };\n\n if (!handler.callback) {\n task();\n return;\n }\n\n const callbackFactory = eventCallbackFactory(\n handler.callback,\n runtimeContext,\n runtimeBrick\n );\n\n const pollableCallback: Required<PollableCallback> = {\n progress: callbackFactory(\"progress\"),\n success: callbackFactory(\"success\"),\n error: callbackFactory(\"error\"),\n finally: callbackFactory(\"finally\"),\n };\n\n let poll: ProviderPollOptions | undefined;\n if (isUseProviderHandler(handler)) {\n poll = computeRealValue(handler.poll, { ...runtimeContext, event }) as\n | ProviderPollOptions\n | undefined;\n }\n\n if (poll?.enabled) {\n startPoll(task, pollableCallback, poll);\n } else {\n try {\n // Try to catch synchronized tasks too.\n const result = await task();\n pollableCallback.success(result);\n } catch (err) {\n pollableCallback.error(err);\n } finally {\n pollableCallback[\"finally\"]();\n }\n }\n}\n\nfunction handleHistoryAction(\n event: Event,\n method:\n | \"push\"\n | \"replace\"\n | \"pushQuery\"\n | \"replaceQuery\"\n | \"pushAnchor\"\n | \"block\"\n | \"goBack\"\n | \"goForward\"\n | \"reload\"\n | \"unblock\",\n args: unknown[] | undefined,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\n let baseArgsLength = 0;\n let hasCallback = false;\n let overrideMethod = method as \"setBlockMessage\";\n switch (method) {\n case \"push\":\n case \"replace\":\n case \"pushQuery\":\n case \"replaceQuery\":\n case \"pushAnchor\":\n baseArgsLength = 2;\n hasCallback = true;\n break;\n case \"reload\":\n hasCallback = true;\n break;\n case \"block\":\n baseArgsLength = 1;\n overrideMethod = \"setBlockMessage\";\n break;\n }\n let computedArgs: unknown[] = [];\n if (baseArgsLength > 0) {\n computedArgs = argsFactory(args, runtimeContext, event, {\n useEventDetailAsDefault: true,\n });\n computedArgs.length = baseArgsLength;\n }\n if (hasCallback && callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n runtimeContext,\n undefined\n );\n computedArgs.push((blocked: boolean) => {\n callbackFactory(blocked ? \"error\" : \"success\")({ blocked });\n callbackFactory(\"finally\")({ blocked });\n });\n }\n (getHistory()[overrideMethod] as (...args: unknown[]) => unknown)(\n ...computedArgs\n );\n}\n\nfunction handleWindowAction(\n event: Event,\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n const [url, target, features] = argsFactory(args, runtimeContext, event) as [\n string,\n string,\n string\n ];\n window.open(url, target || \"_self\", features);\n}\n\nfunction batchUpdate(\n args: unknown[],\n batch: boolean,\n method: \"replace\" | \"assign\",\n store: DataStore,\n runtimeContext: RuntimeContext,\n event: CustomEvent | Event\n): void {\n if (batch) {\n store.updateValues(\n args as BatchUpdateContextItem[],\n method,\n (arg: unknown[]) => {\n return argsFactory(\n arg,\n runtimeContext,\n event\n )[0] as BatchUpdateContextItem;\n }\n );\n } else {\n args.forEach((arg) => {\n const { name, value } = argsFactory(\n [arg],\n runtimeContext,\n event\n )[0] as BatchUpdateContextItem;\n store.updateValue(name, value, method);\n });\n }\n}\n\nfunction handleContextAction(\n event: Event,\n method: \"assign\" | \"replace\",\n args: unknown[] | undefined,\n batch: boolean,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\n const isBatch = Array.isArray(args) && args.every(isObject);\n if (isBatch && (method === \"assign\" || method === \"replace\")) {\n batchUpdate(\n args,\n batch,\n method,\n runtimeContext.ctxStore,\n runtimeContext,\n event\n );\n } else {\n const [name, value] = argsFactory(args, runtimeContext, event);\n runtimeContext.ctxStore.updateValue(\n name as string,\n value,\n method,\n callback,\n runtimeContext\n );\n }\n}\n\nfunction handleTplStateAction(\n event: Event,\n method: \"update\" | \"refresh\" | \"load\",\n args: unknown[] | undefined,\n batch: boolean,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\n const isBatch = Array.isArray(args) && args.every(isObject);\n if (isBatch && method === \"update\") {\n batchUpdate(\n args,\n batch,\n \"replace\",\n runtimeContext.ctxStore,\n runtimeContext,\n event\n );\n } else {\n const [name, value] = argsFactory(args, runtimeContext, event);\n const tplStateStore = getTplStateStore(\n runtimeContext,\n `state.${method}`,\n `: ${name}`\n );\n tplStateStore.updateValue(\n name as string,\n value,\n method === \"update\" ? \"replace\" : method,\n callback,\n runtimeContext\n );\n }\n}\n\nfunction handleFormStateAction(\n event: Event,\n args: unknown[] | undefined,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\n const [name, value] = argsFactory(args, runtimeContext, event);\n const formStateStore = getFormStateStore(\n runtimeContext,\n \"formstate.update\",\n `: ${name}`\n );\n formStateStore.updateValue(\n name as string,\n value,\n \"replace\",\n callback,\n runtimeContext\n );\n}\n\nfunction handleLocationAction(\n event: Event,\n method: \"assign\" | \"reload\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n if (method === \"assign\") {\n const [url] = argsFactory(args, runtimeContext, event) as [string];\n location.assign(url);\n } else {\n location[method]();\n }\n}\n\nfunction handleStorageAction(\n event: Event,\n object: \"localStorage\" | \"sessionStorage\",\n method: \"setItem\" | \"removeItem\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n const storage = object === \"localStorage\" ? localStorage : sessionStorage;\n const [name, value] = argsFactory(args, runtimeContext, event);\n if (method === \"setItem\") {\n if (value !== undefined) {\n storage.setItem(name as string, JSON.stringify(value));\n }\n } else {\n storage.removeItem(name as string);\n }\n}\n\nfunction handleConsoleAction(\n event: Event,\n method: \"log\" | \"error\" | \"warn\" | \"info\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n // eslint-disable-next-line no-console\n console[method](\n ...argsFactory(args, runtimeContext, event, {\n useEventAsDefault: true,\n })\n );\n}\n\nfunction handleMessageAction(\n event: Event,\n method: \"success\" | \"error\" | \"info\" | \"warn\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n const computedArgs = argsFactory(args, runtimeContext, event, {\n useEventAsDefault: true,\n });\n Notification.show({\n type: method,\n message: computedArgs[0] as string,\n });\n}\n\nexport function eventCallbackFactory(\n callback: BrickEventHandlerCallback,\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder\n) {\n return function callbackFactory(\n type: \"success\" | \"error\" | \"finally\" | \"progress\"\n ) {\n return function (result?: unknown) {\n const handlers = callback?.[type];\n if (handlers) {\n try {\n const event = new CustomEvent(`callback.${type}`, {\n detail: result,\n });\n listenerFactory(handlers, runtimeContext, runtimeBrick)(event);\n } catch (err) {\n // Do not throw errors in `callback.success` or `callback.progress`,\n // to avoid the following triggering of `callback.error`.\n // eslint-disable-next-line\n console.error(err);\n }\n } else if (type === \"error\") {\n // eslint-disable-next-line\n console.error(\"Unhandled callback error:\", result);\n }\n };\n };\n}\n\ninterface ArgsFactoryOptions {\n useEventAsDefault?: boolean;\n useEventDetailAsDefault?: boolean;\n}\n\nfunction argsFactory(\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext,\n event: Event,\n options: ArgsFactoryOptions = {}\n): unknown[] {\n return Array.isArray(args)\n ? (computeRealValue(args, {\n ...runtimeContext,\n event,\n }) as unknown[])\n : options.useEventAsDefault\n ? [event]\n : options.useEventDetailAsDefault\n ? [(event as CustomEvent).detail]\n : [];\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bindListeners.js","names":["_cook","require","_general","_checkIf","_computeRealValue","_history","_getProviderBrick","_poll2","_evaluate","_setProperties","_themeAndMode","_utils","_handleHttpError","_Notification","_utils2","_Runtime","bindListeners","brick","eventsMap","runtimeContext","Object","entries","forEach","eventType","handlers","listener","listenerFactory","element","addEventListener","$$listeners","push","$$eventListeners","handler","concat","unbindListeners","removeEventListener","length","isBuiltinHandler","action","isUseProviderHandler","useProvider","isCustomHandler","target","targetRef","method","properties","isExecuteCustomHandler","isSetPropsCustomHandler","isConditionalEventHandler","then","runtimeBrick","event","_handler$batch","_handler$batch2","checkIf","else","object","split","handleHistoryAction","args","callback","handleWindowAction","handleLocationAction","handleStorageAction","preventDefault","handleConsoleAction","handleMessageAction","handleHttpError","detail","handleContextAction","batch","handleTplStateAction","type","init","argsFactory","tplHostElement","getTplHostElement","dispatchEvent","CustomEvent","handleFormStateAction","handleMessageDispatcher","applyTheme","theme","applyMode","console","error","handleUseProviderAction","handleCustomAction","providerBrick","getProviderBrick","brickCallback","httpErrorToString","targets","rawTarget","rawTargetRef","computedTarget","isEvaluable","isPreEvaluated","computeRealValue","multiple","Array","from","document","querySelectorAll","found","querySelector","HTMLElement","computedTargetRef","targetRefs","join","map","ref","_tplHostElement$$$get","$$getElementByRef","call","filter","Boolean","useEventAsDefault","setProperties","options","_poll","task","_hooks$flowApi","computedArgs","hooks","flowApi","isFlowApiProvider","getArgsOfFlowApi","callbackFactory","eventCallbackFactory","pollableCallback","progress","success","finally","poll","enabled","startPoll","result","err","baseArgsLength","hasCallback","overrideMethod","useEventDetailAsDefault","undefined","blocked","getHistory","url","features","window","open","batchUpdate","store","updateValues","arg","name","value","updateValue","isBatch","isArray","every","isObject","ctxStore","tplStateStore","getTplStateStore","formStateStore","getFormStateStore","location","assign","storage","localStorage","sessionStorage","setItem","JSON","stringify","removeItem","Notification","show","message","_hooks$messageDispatc","messageDispatcher"],"sources":["../../../src/internal/bindListeners.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BuiltinBrickEventHandler,\n CustomBrickEventHandler,\n ExecuteCustomBrickEventHandler,\n ProviderPollOptions,\n SetPropsCustomBrickEventHandler,\n SiteTheme,\n UseProviderEventHandler,\n ConditionalEventHandler,\n BatchUpdateContextItem,\n} from \"@next-core/types\";\nimport { isEvaluable } from \"@next-core/cook\";\nimport { isObject } from \"@next-core/utils/general\";\nimport { checkIf } from \"./compute/checkIf.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { getHistory } from \"../history.js\";\nimport { getProviderBrick } from \"./data/getProviderBrick.js\";\nimport { PollableCallback, startPoll } from \"./poll.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { setProperties } from \"./compute/setProperties.js\";\nimport { applyMode, applyTheme } from \"../themeAndMode.js\";\nimport type {\n ElementHolder,\n RuntimeBrickElement,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTplHostElement,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { handleHttpError, httpErrorToString } from \"../handleHttpError.js\";\nimport { Notification } from \"../Notification.js\";\nimport { getFormStateStore } from \"./FormRenderer/utils.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { hooks } from \"./Runtime.js\";\n\nexport function bindListeners(\n brick: RuntimeBrickElement,\n eventsMap: BrickEventsMap | undefined,\n runtimeContext: RuntimeContext\n): void {\n if (!eventsMap) {\n return;\n }\n Object.entries(eventsMap).forEach(([eventType, handlers]) => {\n const listener = listenerFactory(handlers, runtimeContext, {\n element: brick,\n });\n brick.addEventListener(eventType, listener);\n\n // Remember added listeners for unbinding.\n if (!brick.$$listeners) {\n brick.$$listeners = [];\n }\n brick.$$listeners.push([eventType, listener]);\n\n // Remember added listeners for devtools.\n if (!brick.$$eventListeners) {\n brick.$$eventListeners = [];\n }\n for (const handler of ([] as BrickEventHandler[]).concat(handlers)) {\n brick.$$eventListeners.push([eventType, null, handler]);\n }\n });\n}\n\nexport function unbindListeners(brick: RuntimeBrickElement): void {\n if (brick.$$listeners) {\n for (const [eventType, listener] of brick.$$listeners) {\n brick.removeEventListener(eventType, listener);\n }\n brick.$$listeners.length = 0;\n }\n}\n\nexport function isBuiltinHandler(\n handler: BrickEventHandler\n): handler is BuiltinBrickEventHandler {\n return typeof (handler as BuiltinBrickEventHandler).action === \"string\";\n}\n\nexport function isUseProviderHandler(\n handler: BrickEventHandler\n): handler is UseProviderEventHandler {\n return typeof (handler as UseProviderEventHandler).useProvider === \"string\";\n}\n\nexport function isCustomHandler(\n handler: BrickEventHandler\n): handler is CustomBrickEventHandler {\n return !!(\n ((handler as CustomBrickEventHandler).target ||\n (handler as CustomBrickEventHandler).targetRef) &&\n ((handler as ExecuteCustomBrickEventHandler).method ||\n (handler as SetPropsCustomBrickEventHandler).properties)\n );\n}\n\nexport function isExecuteCustomHandler(\n handler: CustomBrickEventHandler\n): handler is ExecuteCustomBrickEventHandler {\n return !!(handler as ExecuteCustomBrickEventHandler).method;\n}\n\nexport function isSetPropsCustomHandler(\n handler: CustomBrickEventHandler\n): handler is SetPropsCustomBrickEventHandler {\n return !!(handler as SetPropsCustomBrickEventHandler).properties;\n}\n\nexport function isConditionalEventHandler(\n handler: BrickEventHandler\n): handler is ConditionalEventHandler {\n return !!(handler as ConditionalEventHandler).then;\n}\n\nexport function listenerFactory(\n handlers: BrickEventHandler | BrickEventHandler[],\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder\n) {\n return function (event: Event): void {\n for (const handler of ([] as BrickEventHandler[]).concat(handlers)) {\n if (!checkIf(handler, { ...runtimeContext, event })) {\n if (handler.else) {\n listenerFactory(handler.else, runtimeContext, runtimeBrick)(event);\n }\n continue;\n }\n\n if (isConditionalEventHandler(handler)) {\n listenerFactory(handler.then, runtimeContext, runtimeBrick)(event);\n } else if (isBuiltinHandler(handler)) {\n const [object, method] = handler.action.split(\".\") as any;\n switch (handler.action) {\n case \"history.push\":\n case \"history.replace\":\n case \"history.pushQuery\":\n case \"history.replaceQuery\":\n case \"history.pushAnchor\":\n case \"history.block\":\n case \"history.goBack\":\n case \"history.goForward\":\n case \"history.reload\":\n case \"history.unblock\":\n handleHistoryAction(\n event,\n method,\n handler.args,\n handler.callback,\n runtimeContext\n );\n break;\n\n // case \"segue.push\":\n // case \"segue.replace\":\n // case \"alias.push\":\n // case \"alias.replace\":\n\n case \"window.open\":\n handleWindowAction(event, handler.args, runtimeContext);\n break;\n\n case \"location.reload\":\n case \"location.assign\":\n handleLocationAction(event, method, handler.args, runtimeContext);\n break;\n\n case \"localStorage.setItem\":\n case \"localStorage.removeItem\":\n case \"sessionStorage.setItem\":\n case \"sessionStorage.removeItem\":\n handleStorageAction(\n event,\n object,\n method,\n handler.args,\n runtimeContext\n );\n break;\n\n case \"event.preventDefault\":\n event.preventDefault();\n break;\n\n case \"console.log\":\n case \"console.error\":\n case \"console.warn\":\n case \"console.info\":\n handleConsoleAction(event, method, handler.args, runtimeContext);\n break;\n\n case \"message.success\":\n case \"message.error\":\n case \"message.info\":\n case \"message.warn\":\n handleMessageAction(event, method, handler.args, runtimeContext);\n break;\n\n case \"handleHttpError\":\n handleHttpError((event as CustomEvent).detail);\n break;\n\n case \"context.assign\":\n case \"context.replace\":\n case \"context.refresh\":\n case \"context.load\":\n handleContextAction(\n event,\n method,\n handler.args,\n handler.batch ?? true,\n handler.callback,\n runtimeContext\n );\n break;\n\n case \"state.update\":\n case \"state.refresh\":\n case \"state.load\":\n handleTplStateAction(\n event,\n method,\n handler.args,\n handler.batch ?? true,\n handler.callback,\n runtimeContext\n );\n break;\n\n case \"tpl.dispatchEvent\": {\n const [type, init] = argsFactory(\n handler.args,\n runtimeContext,\n event\n ) as [string, CustomEventInit];\n const tplHostElement = getTplHostElement(\n runtimeContext,\n handler.action,\n `: ${type}`\n );\n tplHostElement.dispatchEvent(new CustomEvent(type, init));\n break;\n }\n\n case \"formstate.update\":\n handleFormStateAction(\n event,\n handler.args,\n handler.callback,\n runtimeContext\n );\n break;\n\n case \"message.subscribe\":\n case \"message.unsubscribe\":\n handleMessageDispatcher(\n event,\n method,\n handler.args,\n runtimeContext,\n runtimeBrick,\n handler.callback\n );\n break;\n\n case \"theme.setDarkTheme\":\n case \"theme.setLightTheme\":\n applyTheme(\n handler.action === \"theme.setDarkTheme\" ? \"dark\" : \"light\"\n );\n break;\n case \"theme.setTheme\": {\n const [theme] = argsFactory(handler.args, runtimeContext, event);\n applyTheme(theme as SiteTheme);\n break;\n }\n case \"mode.setDashboardMode\":\n case \"mode.setDefaultMode\":\n applyMode(\n handler.action === \"mode.setDashboardMode\"\n ? \"dashboard\"\n : \"default\"\n );\n break;\n\n // case \"menu.clearMenuTitleCache\":\n // case \"menu.clearMenuCache\":\n\n // case \"analytics.event\":\n\n // case \"preview.debug\":\n\n default:\n // eslint-disable-next-line no-console\n console.error(\"unknown event listener action:\", handler.action);\n }\n } else if (isUseProviderHandler(handler)) {\n handleUseProviderAction(event, handler, runtimeContext, runtimeBrick);\n } else if (isCustomHandler(handler)) {\n handleCustomAction(event, handler, runtimeContext, runtimeBrick!);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"unknown event handler:\", handler);\n }\n }\n };\n}\n\nasync function handleUseProviderAction(\n event: Event,\n handler: UseProviderEventHandler,\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder\n) {\n try {\n const providerBrick = await getProviderBrick(handler.useProvider);\n const method = handler.method !== \"saveAs\" ? \"resolve\" : \"saveAs\";\n brickCallback(\n event,\n providerBrick,\n handler,\n method,\n runtimeContext,\n runtimeBrick\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(httpErrorToString(error));\n }\n}\n\nfunction handleCustomAction(\n event: Event,\n handler: CustomBrickEventHandler,\n runtimeContext: RuntimeContext,\n runtimeBrick: ElementHolder\n) {\n let targets: HTMLElement[] = [];\n const rawTarget = handler.target;\n const rawTargetRef = handler.targetRef;\n let computedTarget = rawTarget;\n // Allow `target` to be set as evaluable string.\n if (\n typeof rawTarget === \"string\"\n ? isEvaluable(rawTarget)\n : isPreEvaluated(rawTarget)\n ) {\n computedTarget = computeRealValue(rawTarget, { ...runtimeContext, event });\n }\n if (typeof computedTarget === \"string\") {\n if (computedTarget === \"_self\") {\n targets.push(runtimeBrick.element!);\n } else if (handler.multiple) {\n targets = Array.from(document.querySelectorAll(computedTarget));\n } else {\n const found = document.querySelector(computedTarget) as HTMLElement;\n if (found !== null) {\n targets.push(found);\n }\n }\n } else if (computedTarget) {\n if (computedTarget instanceof HTMLElement) {\n targets.push(computedTarget as HTMLElement);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"unexpected target:\", computedTarget);\n }\n } else if (rawTargetRef) {\n let computedTargetRef = rawTargetRef;\n // Allow `targetRef` to be set as evaluable string.\n if (\n typeof rawTargetRef === \"string\"\n ? isEvaluable(rawTargetRef)\n : isPreEvaluated(rawTargetRef)\n ) {\n computedTargetRef = computeRealValue(rawTargetRef, {\n ...runtimeContext,\n event,\n }) as string | string[];\n }\n const targetRefs = ([] as string[]).concat(computedTargetRef);\n const tplHostElement = getTplHostElement(\n runtimeContext,\n \"targetRef\",\n `: ${targetRefs.join(\", \")}`\n );\n targets.push(\n ...(targetRefs\n .map((ref) => tplHostElement.$$getElementByRef?.(ref))\n .filter(Boolean) as HTMLElement[])\n );\n }\n if (targets.length === 0) {\n // eslint-disable-next-line no-console\n console.error(\"target not found:\", rawTarget || rawTargetRef);\n return;\n }\n if (isExecuteCustomHandler(handler)) {\n targets.forEach((target) => {\n brickCallback(\n event,\n target,\n handler,\n handler.method,\n runtimeContext,\n runtimeBrick,\n {\n useEventAsDefault: true,\n }\n );\n });\n } else if (isSetPropsCustomHandler(handler)) {\n setProperties(targets, handler.properties, {\n ...runtimeContext,\n event,\n });\n }\n}\n\nasync function brickCallback(\n event: Event,\n target: HTMLElement,\n handler: ExecuteCustomBrickEventHandler | UseProviderEventHandler,\n method: string,\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder,\n options?: ArgsFactoryOptions\n): Promise<void> {\n if (typeof (target as any)[method] !== \"function\") {\n // eslint-disable-next-line no-console\n console.error(\"target has no method:\", {\n target,\n method: method,\n });\n return;\n }\n\n const task = async (): Promise<unknown> => {\n let computedArgs = argsFactory(\n handler.args,\n runtimeContext,\n event,\n options\n );\n if (\n isUseProviderHandler(handler) &&\n hooks?.flowApi?.isFlowApiProvider(handler.useProvider)\n ) {\n computedArgs = await hooks.flowApi.getArgsOfFlowApi(\n handler.useProvider,\n computedArgs,\n method\n );\n }\n return (target as any)[method](...computedArgs);\n };\n\n if (!handler.callback) {\n task();\n return;\n }\n\n const callbackFactory = eventCallbackFactory(\n handler.callback,\n runtimeContext,\n runtimeBrick\n );\n\n const pollableCallback: Required<PollableCallback> = {\n progress: callbackFactory(\"progress\"),\n success: callbackFactory(\"success\"),\n error: callbackFactory(\"error\"),\n finally: callbackFactory(\"finally\"),\n };\n\n let poll: ProviderPollOptions | undefined;\n if (isUseProviderHandler(handler)) {\n poll = computeRealValue(handler.poll, { ...runtimeContext, event }) as\n | ProviderPollOptions\n | undefined;\n }\n\n if (poll?.enabled) {\n startPoll(task, pollableCallback, poll);\n } else {\n try {\n // Try to catch synchronized tasks too.\n const result = await task();\n pollableCallback.success(result);\n } catch (err) {\n pollableCallback.error(err);\n } finally {\n pollableCallback[\"finally\"]();\n }\n }\n}\n\nfunction handleHistoryAction(\n event: Event,\n method:\n | \"push\"\n | \"replace\"\n | \"pushQuery\"\n | \"replaceQuery\"\n | \"pushAnchor\"\n | \"block\"\n | \"goBack\"\n | \"goForward\"\n | \"reload\"\n | \"unblock\",\n args: unknown[] | undefined,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\n let baseArgsLength = 0;\n let hasCallback = false;\n let overrideMethod = method as \"setBlockMessage\";\n switch (method) {\n case \"push\":\n case \"replace\":\n case \"pushQuery\":\n case \"replaceQuery\":\n case \"pushAnchor\":\n baseArgsLength = 2;\n hasCallback = true;\n break;\n case \"reload\":\n hasCallback = true;\n break;\n case \"block\":\n baseArgsLength = 1;\n overrideMethod = \"setBlockMessage\";\n break;\n }\n let computedArgs: unknown[] = [];\n if (baseArgsLength > 0) {\n computedArgs = argsFactory(args, runtimeContext, event, {\n useEventDetailAsDefault: true,\n });\n computedArgs.length = baseArgsLength;\n }\n if (hasCallback && callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n runtimeContext,\n undefined\n );\n computedArgs.push((blocked: boolean) => {\n callbackFactory(blocked ? \"error\" : \"success\")({ blocked });\n callbackFactory(\"finally\")({ blocked });\n });\n }\n (getHistory()[overrideMethod] as (...args: unknown[]) => unknown)(\n ...computedArgs\n );\n}\n\nfunction handleWindowAction(\n event: Event,\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n const [url, target, features] = argsFactory(args, runtimeContext, event) as [\n string,\n string,\n string\n ];\n window.open(url, target || \"_self\", features);\n}\n\nfunction batchUpdate(\n args: unknown[],\n batch: boolean,\n method: \"replace\" | \"assign\",\n store: DataStore,\n runtimeContext: RuntimeContext,\n event: CustomEvent | Event\n): void {\n if (batch) {\n store.updateValues(\n args as BatchUpdateContextItem[],\n method,\n (arg: unknown[]) => {\n return argsFactory(\n arg,\n runtimeContext,\n event\n )[0] as BatchUpdateContextItem;\n }\n );\n } else {\n args.forEach((arg) => {\n const { name, value } = argsFactory(\n [arg],\n runtimeContext,\n event\n )[0] as BatchUpdateContextItem;\n store.updateValue(name, value, method);\n });\n }\n}\n\nfunction handleContextAction(\n event: Event,\n method: \"assign\" | \"replace\",\n args: unknown[] | undefined,\n batch: boolean,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\n const isBatch = Array.isArray(args) && args.every(isObject);\n if (isBatch && (method === \"assign\" || method === \"replace\")) {\n batchUpdate(\n args,\n batch,\n method,\n runtimeContext.ctxStore,\n runtimeContext,\n event\n );\n } else {\n const [name, value] = argsFactory(args, runtimeContext, event);\n runtimeContext.ctxStore.updateValue(\n name as string,\n value,\n method,\n callback,\n runtimeContext\n );\n }\n}\n\nfunction handleTplStateAction(\n event: Event,\n method: \"update\" | \"refresh\" | \"load\",\n args: unknown[] | undefined,\n batch: boolean,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\n const isBatch = Array.isArray(args) && args.every(isObject);\n if (isBatch && method === \"update\") {\n batchUpdate(\n args,\n batch,\n \"replace\",\n runtimeContext.ctxStore,\n runtimeContext,\n event\n );\n } else {\n const [name, value] = argsFactory(args, runtimeContext, event);\n const tplStateStore = getTplStateStore(\n runtimeContext,\n `state.${method}`,\n `: ${name}`\n );\n tplStateStore.updateValue(\n name as string,\n value,\n method === \"update\" ? \"replace\" : method,\n callback,\n runtimeContext\n );\n }\n}\n\nfunction handleFormStateAction(\n event: Event,\n args: unknown[] | undefined,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\n const [name, value] = argsFactory(args, runtimeContext, event);\n const formStateStore = getFormStateStore(\n runtimeContext,\n \"formstate.update\",\n `: ${name}`\n );\n formStateStore.updateValue(\n name as string,\n value,\n \"replace\",\n callback,\n runtimeContext\n );\n}\n\nfunction handleLocationAction(\n event: Event,\n method: \"assign\" | \"reload\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n if (method === \"assign\") {\n const [url] = argsFactory(args, runtimeContext, event) as [string];\n location.assign(url);\n } else {\n location[method]();\n }\n}\n\nfunction handleStorageAction(\n event: Event,\n object: \"localStorage\" | \"sessionStorage\",\n method: \"setItem\" | \"removeItem\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n const storage = object === \"localStorage\" ? localStorage : sessionStorage;\n const [name, value] = argsFactory(args, runtimeContext, event);\n if (method === \"setItem\") {\n if (value !== undefined) {\n storage.setItem(name as string, JSON.stringify(value));\n }\n } else {\n storage.removeItem(name as string);\n }\n}\n\nfunction handleConsoleAction(\n event: Event,\n method: \"log\" | \"error\" | \"warn\" | \"info\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n // eslint-disable-next-line no-console\n console[method](\n ...argsFactory(args, runtimeContext, event, {\n useEventAsDefault: true,\n })\n );\n}\n\nfunction handleMessageAction(\n event: Event,\n method: \"success\" | \"error\" | \"info\" | \"warn\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext\n) {\n const computedArgs = argsFactory(args, runtimeContext, event, {\n useEventAsDefault: true,\n });\n Notification.show({\n type: method,\n message: computedArgs[0] as string,\n });\n}\n\nasync function handleMessageDispatcher(\n event: Event,\n method: \"subscribe\" | \"unsubscribe\",\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder,\n callback?: BrickEventHandlerCallback\n) {\n const task = () => {\n const computedArgs = argsFactory(args, runtimeContext, event);\n return hooks?.messageDispatcher?.[method](...computedArgs);\n };\n if (!callback) {\n task();\n return;\n }\n const callbackFactory = eventCallbackFactory(\n callback,\n runtimeContext,\n runtimeBrick\n );\n try {\n const result = await task();\n callbackFactory(\"success\")(result);\n } catch (error) {\n callbackFactory(\"error\")(error);\n } finally {\n callbackFactory(\"finally\")();\n }\n}\n\nexport function eventCallbackFactory(\n callback: BrickEventHandlerCallback,\n runtimeContext: RuntimeContext,\n runtimeBrick?: ElementHolder\n) {\n return function callbackFactory(\n type: \"success\" | \"error\" | \"finally\" | \"progress\"\n ) {\n return function (result?: unknown) {\n const handlers = callback?.[type];\n if (handlers) {\n try {\n const event = new CustomEvent(`callback.${type}`, {\n detail: result,\n });\n listenerFactory(handlers, runtimeContext, runtimeBrick)(event);\n } catch (err) {\n // Do not throw errors in `callback.success` or `callback.progress`,\n // to avoid the following triggering of `callback.error`.\n // eslint-disable-next-line\n console.error(err);\n }\n } else if (type === \"error\") {\n // eslint-disable-next-line\n console.error(\"Unhandled callback error:\", result);\n }\n };\n };\n}\n\ninterface ArgsFactoryOptions {\n useEventAsDefault?: boolean;\n useEventDetailAsDefault?: boolean;\n}\n\nfunction argsFactory(\n args: unknown[] | undefined,\n runtimeContext: RuntimeContext,\n event: Event,\n options: ArgsFactoryOptions = {}\n): unknown[] {\n return Array.isArray(args)\n ? (computeRealValue(args, {\n ...runtimeContext,\n event,\n }) as unknown[])\n : options.useEventAsDefault\n ? [event]\n : options.useEventDetailAsDefault\n ? [(event as CustomEvent).detail]\n : [];\n}\n"],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ var _computeRealValue = require("../compute/computeRealValue.js");
|
|
|
12
12
|
var _resolveData = require("./resolveData.js");
|
|
13
13
|
var _resolveDataStore = require("./resolveDataStore.js");
|
|
14
14
|
var _handleHttpError = require("../../handleHttpError.js");
|
|
15
|
+
const supportContextResolveTriggerBrickLifeCycle = ["onBeforePageLoad", "onPageLoad", "onBeforePageLeave", "onPageLeave", "onAnchorLoad", "onAnchorUnload"];
|
|
15
16
|
class DataStore {
|
|
16
17
|
type;
|
|
17
18
|
data = new Map();
|
|
@@ -20,10 +21,14 @@ class DataStore {
|
|
|
20
21
|
hostBrick;
|
|
21
22
|
batchUpdate = false;
|
|
22
23
|
batchUpdateContextsNames = [];
|
|
23
|
-
|
|
24
|
+
rendererContext;
|
|
25
|
+
|
|
26
|
+
// 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整
|
|
27
|
+
constructor(type, hostBrick, rendererContext) {
|
|
24
28
|
this.type = type;
|
|
25
29
|
this.changeEventType = this.type === "FORM_STATE" ? "formstate.change" : this.type === "STATE" ? "state.change" : "context.change";
|
|
26
30
|
this.hostBrick = hostBrick;
|
|
31
|
+
this.rendererContext = rendererContext;
|
|
27
32
|
}
|
|
28
33
|
getValue(name) {
|
|
29
34
|
var _this$data$get;
|
|
@@ -214,6 +219,18 @@ class DataStore {
|
|
|
214
219
|
loaded: !isLazyResolve,
|
|
215
220
|
deps: []
|
|
216
221
|
};
|
|
222
|
+
if (isLazyResolve) {
|
|
223
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
224
|
+
const {
|
|
225
|
+
trigger
|
|
226
|
+
} = dataConf.resolve;
|
|
227
|
+
if (trigger && supportContextResolveTriggerBrickLifeCycle.includes(trigger)) {
|
|
228
|
+
var _this$rendererContext;
|
|
229
|
+
(_this$rendererContext = this.rendererContext) === null || _this$rendererContext === void 0 ? void 0 : _this$rendererContext.registerArbitraryLifeCycle(trigger, () => {
|
|
230
|
+
this.updateValue(dataConf.name, undefined, "load");
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
217
234
|
if (dataConf.onChange) {
|
|
218
235
|
newData.eventTarget.addEventListener(this.changeEventType, (0, _bindListeners.listenerFactory)(dataConf.onChange, runtimeContext));
|
|
219
236
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStore.js","names":["_general","require","_storyboard","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","batchUpdate","batchUpdateContextsNames","constructor","getValue","name","_this$data$get","get","value","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","map","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","load","promise","loaded","Promise","resolve","loading","cache","then","val","err","error","handleHttpError","callbackFactory","eventCallbackFactory","isObject","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","resolveDataStore","dataConf","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","pendingResult","asyncCheckIf","expose","hostProps","hasOwnProperty","isLazyResolve","undefined","resolveConf","transform","options","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","listenerFactory","track","strictCollectMemberUsage","dep","batchAddListener","computeRealValue","has","set","contextConf","event","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\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\";\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\n constructor(type: T, hostBrick?: RuntimeBrick) {\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 }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n 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 (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 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":["_general","require","_storyboard","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","supportContextResolveTriggerBrickLifeCycle","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","batchUpdate","batchUpdateContextsNames","rendererContext","constructor","getValue","name","_this$data$get","get","value","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","map","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","load","promise","loaded","Promise","resolve","loading","cache","then","val","err","error","handleHttpError","callbackFactory","eventCallbackFactory","isObject","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","resolveDataStore","dataConf","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","pendingResult","asyncCheckIf","expose","hostProps","hasOwnProperty","isLazyResolve","undefined","resolveConf","transform","options","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","trigger","_this$rendererContext","registerArbitraryLifeCycle","listenerFactory","track","strictCollectMemberUsage","dep","batchAddListener","computeRealValue","has","set","contextConf","event","exports"],"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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret_internals.js","names":["_loader","require","_lodash","_Runtime","_Renderer","_RendererContext","_mount","_enums","_computeRealValue","_isStrictMode","_CustomTemplates","_registerAppI18n","renderUseBrick","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_internalApiGetRuntimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","createPortal","transform","strict","isStrictMode","warnAboutStrictMode","output","renderBrick","properties","flushStableLoadBricks","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","element","portalRoot","document","querySelector","createElement","appendChild","mountTree","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","unmountUseBrick","mountResult","unmountTree","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","computeRealValue","noInject","updateStoryboard","appId","storyboardPatch","storyboard","_internalApiGetStoryboardInBootstrapData","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","registerAppI18n","updateStoryboardByRoute","newRoute","match","getKey","route","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","customTemplates","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","pick","updateStoryboardBySnippet","snippetData","_snippetData$bricks","snippetId","length","updateSnippetPreviewSettings","exports","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\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":["_loader","require","_lodash","_Runtime","_Renderer","_RendererContext","_mount","_enums","_computeRealValue","_isStrictMode","_CustomTemplates","_registerAppI18n","renderUseBrick","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_internalApiGetRuntimeContext","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","RendererContext","renderRoot","tag","RenderTag","ROOT","createPortal","transform","strict","isStrictMode","warnAboutStrictMode","output","renderBrick","properties","flushStableLoadBricks","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","element","portalRoot","document","querySelector","createElement","appendChild","mountTree","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmountUseBrick","mountResult","unmountTree","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","computeRealValue","noInject","updateStoryboard","appId","storyboardPatch","storyboard","_internalApiGetStoryboardInBootstrapData","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","registerAppI18n","updateStoryboardByRoute","newRoute","match","getKey","route","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","customTemplates","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","pick","updateStoryboardBySnippet","snippetData","_snippetData$bricks","snippetId","length","updateSnippetPreviewSettings","exports","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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"}
|
package/dist/esm/createRoot.js
CHANGED
|
@@ -48,16 +48,16 @@ export function unstable_createRoot(container) {
|
|
|
48
48
|
throw new Error("The root is unmounted and cannot be rendered any more");
|
|
49
49
|
}
|
|
50
50
|
var bricks = [].concat(brick);
|
|
51
|
+
var previousRendererContext = rendererContext;
|
|
52
|
+
rendererContext = new RendererContext(scope, {
|
|
53
|
+
unknownBricks
|
|
54
|
+
});
|
|
51
55
|
var runtimeContext = {
|
|
52
|
-
ctxStore: new DataStore("CTX"),
|
|
56
|
+
ctxStore: new DataStore("CTX", undefined, rendererContext),
|
|
53
57
|
pendingPermissionsPreCheck: [],
|
|
54
58
|
tplStateStoreMap: new Map(),
|
|
55
59
|
formStateStoreMap: new Map()
|
|
56
60
|
};
|
|
57
|
-
var previousRendererContext = rendererContext;
|
|
58
|
-
rendererContext = new RendererContext(scope, {
|
|
59
|
-
unknownBricks
|
|
60
|
-
});
|
|
61
61
|
var renderRoot = {
|
|
62
62
|
tag: RenderTag.ROOT,
|
|
63
63
|
container,
|
|
@@ -140,6 +140,7 @@ export function unstable_createRoot(container) {
|
|
|
140
140
|
rendererContext.dispatchOnMount();
|
|
141
141
|
rendererContext.initializeScrollIntoView();
|
|
142
142
|
rendererContext.initializeMediaChange();
|
|
143
|
+
rendererContext.initializeMessageDispatcher();
|
|
143
144
|
}
|
|
144
145
|
})();
|
|
145
146
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRoot.js","names":["flushStableLoadBricks","renderBricks","RendererContext","DataStore","mountTree","unmountTree","httpErrorToString","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","unstable_createRoot","container","portal","_portal","scope","unknownBricks","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","_arguments","_asyncToGenerator","theme","context","functions","templates","i18n","i18nData","Error","bricks","concat","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","previousRendererContext","renderRoot","tag","ROOT","_clearI18nBundles","demoApp","id","homepage","app","demoStoryboard","meta","customTemplates","define","failed","output","Promise","all","blockingList","waitForAll","values","map","store","error","node","BRICK","type","properties","textContent","return","menuRequests","child","dispatchOnUnmount","dispose","dispatchBeforePageLoad","window","scrollTo","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","unmount","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { RenderOutput, renderBricks } from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { httpErrorToString } from \"./handleHttpError.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement,\n { portal: _portal, scope = \"fragment\", unknownBricks }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n context,\n functions,\n templates,\n i18n: i18nData,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\"),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n } as Partial<RuntimeContext> as RuntimeContext;\n\n const previousRendererContext = rendererContext;\n rendererContext = new RendererContext(scope, { unknownBricks });\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n if (scope === \"page\") {\n const demoApp = {\n id: \"demo\",\n homepage: \"/demo\",\n } as MicroApp;\n runtimeContext.app = demoApp;\n const demoStoryboard = {\n app: demoApp,\n meta: {\n i18n: i18nData,\n customTemplates: templates,\n },\n } as Storyboard;\n\n // Register i18n.\n clearI18nBundles?.();\n clearI18nBundles = registerAppI18n(demoStoryboard);\n\n // Register custom templates.\n registerCustomTemplates(demoStoryboard);\n\n // Register functions.\n registerStoryboardFunctions(functions, demoApp);\n }\n\n runtimeContext.ctxStore.define(context, runtimeContext);\n\n let failed = false;\n let output: RenderOutput;\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n await Promise.all([\n ...output.blockingList,\n runtimeContext.ctxStore.waitForAll(),\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n } catch (error) {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n return: renderRoot,\n runtimeContext: null!,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispatchOnUnmount();\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n // Only remove the portal from its parent when it's dynamic created.\n if (!_portal) {\n portal.remove();\n }\n }\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createRoot.js","names":["flushStableLoadBricks","renderBricks","RendererContext","DataStore","mountTree","unmountTree","httpErrorToString","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","unstable_createRoot","container","portal","_portal","scope","unknownBricks","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","_arguments","_asyncToGenerator","theme","context","functions","templates","i18n","i18nData","Error","bricks","concat","previousRendererContext","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","renderRoot","tag","ROOT","_clearI18nBundles","demoApp","id","homepage","app","demoStoryboard","meta","customTemplates","define","failed","output","Promise","all","blockingList","waitForAll","values","map","store","error","node","BRICK","type","properties","textContent","return","menuRequests","child","dispatchOnUnmount","dispose","dispatchBeforePageLoad","window","scrollTo","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { RenderOutput, renderBricks } from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { httpErrorToString } from \"./handleHttpError.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement,\n { portal: _portal, scope = \"fragment\", unknownBricks }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n context,\n functions,\n templates,\n i18n: i18nData,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n const previousRendererContext = rendererContext;\n rendererContext = new RendererContext(scope, { unknownBricks });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n } as Partial<RuntimeContext> as RuntimeContext;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n if (scope === \"page\") {\n const demoApp = {\n id: \"demo\",\n homepage: \"/demo\",\n } as MicroApp;\n runtimeContext.app = demoApp;\n const demoStoryboard = {\n app: demoApp,\n meta: {\n i18n: i18nData,\n customTemplates: templates,\n },\n } as Storyboard;\n\n // Register i18n.\n clearI18nBundles?.();\n clearI18nBundles = registerAppI18n(demoStoryboard);\n\n // Register custom templates.\n registerCustomTemplates(demoStoryboard);\n\n // Register functions.\n registerStoryboardFunctions(functions, demoApp);\n }\n\n runtimeContext.ctxStore.define(context, runtimeContext);\n\n let failed = false;\n let output: RenderOutput;\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n await Promise.all([\n ...output.blockingList,\n runtimeContext.ctxStore.waitForAll(),\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n } catch (error) {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n return: renderRoot,\n runtimeContext: null!,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispatchOnUnmount();\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n // Only remove the portal from its parent when it's dynamic created.\n if (!_portal) {\n portal.remove();\n }\n }\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { setupTemplateProxy } from "./setupTemplateProxy.js";
|
|
|
9
9
|
import { setupUseBrickInTemplate } from "./setupUseBrickInTemplate.js";
|
|
10
10
|
import { childrenToSlots } from "../Renderer.js";
|
|
11
11
|
import { hooks } from "../Runtime.js";
|
|
12
|
-
export function expandCustomTemplate(tplTagName, brickConf, hostBrick, asyncHostProperties) {
|
|
12
|
+
export function expandCustomTemplate(tplTagName, brickConf, hostBrick, asyncHostProperties, rendererContext) {
|
|
13
13
|
var _hooks$flowApi;
|
|
14
14
|
var tplStateStoreId = uniqueId("tpl-state-");
|
|
15
15
|
var runtimeContext = _objectSpread(_objectSpread({}, hostBrick.runtimeContext), {}, {
|
|
@@ -19,7 +19,7 @@ export function expandCustomTemplate(tplTagName, brickConf, hostBrick, asyncHost
|
|
|
19
19
|
// There is a boundary for `forEachItem` and `FORM_STATE` between template internals and externals.
|
|
20
20
|
delete runtimeContext.forEachItem;
|
|
21
21
|
delete runtimeContext.formStateStoreId;
|
|
22
|
-
var tplStateStore = new DataStore("STATE", hostBrick);
|
|
22
|
+
var tplStateStore = new DataStore("STATE", hostBrick, rendererContext);
|
|
23
23
|
runtimeContext.tplStateStoreMap.set(tplStateStoreId, tplStateStore);
|
|
24
24
|
if (runtimeContext.tplStateStoreScope) {
|
|
25
25
|
runtimeContext.tplStateStoreScope.push(tplStateStore);
|