@next-core/runtime 1.4.2 → 1.5.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 +5 -2
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +2 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/constants.js +11 -0
- package/dist/cjs/internal/FormRenderer/constants.js.map +1 -0
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +122 -0
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -0
- package/dist/cjs/internal/FormRenderer/getDefaultProperties.js +165 -0
- package/dist/cjs/internal/FormRenderer/getDefaultProperties.js.map +1 -0
- package/dist/cjs/internal/FormRenderer/interfaces.js +6 -0
- package/dist/cjs/internal/FormRenderer/interfaces.js.map +1 -0
- package/dist/cjs/internal/FormRenderer/utils.js +20 -0
- package/dist/cjs/internal/FormRenderer/utils.js.map +1 -0
- package/dist/cjs/internal/Renderer.js +38 -5
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +4 -1
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +3 -2
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/bindListeners.js +9 -2
- package/dist/cjs/internal/bindListeners.js.map +1 -1
- package/dist/cjs/internal/compute/evaluate.js +21 -6
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/compute/listenOnTrackingContext.js +7 -9
- package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js +2 -2
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +6 -3
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/esm/createRoot.js +5 -2
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +2 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/esm/internal/FormRenderer/constants.js +3 -0
- package/dist/esm/internal/FormRenderer/constants.js.map +1 -0
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js +111 -0
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -0
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js +136 -0
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -0
- package/dist/esm/internal/FormRenderer/interfaces.js +2 -0
- package/dist/esm/internal/FormRenderer/interfaces.js.map +1 -0
- package/dist/esm/internal/FormRenderer/utils.js +15 -0
- package/dist/esm/internal/FormRenderer/utils.js.map +1 -0
- package/dist/esm/internal/Renderer.js +48 -12
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +4 -1
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +3 -2
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/bindListeners.js +9 -2
- package/dist/esm/internal/bindListeners.js.map +1 -1
- package/dist/esm/internal/compute/evaluate.js +22 -9
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/compute/listenOnTrackingContext.js +7 -9
- package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js +2 -2
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +6 -3
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/types/createRoot.d.ts +7 -1
- package/dist/types/internal/CustomTemplates/expandCustomTemplate.d.ts +1 -1
- package/dist/types/internal/FormRenderer/constants.d.ts +7 -0
- package/dist/types/internal/FormRenderer/expandFormRenderer.d.ts +3 -0
- package/dist/types/internal/FormRenderer/getDefaultProperties.d.ts +2 -0
- package/dist/types/internal/FormRenderer/interfaces.d.ts +30 -0
- package/dist/types/internal/FormRenderer/utils.d.ts +5 -0
- package/dist/types/internal/Renderer.d.ts +2 -3
- package/dist/types/internal/RendererContext.d.ts +5 -1
- package/dist/types/internal/interfaces.d.ts +6 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RendererContext.js","names":["isEmpty","remove","listenerFactory","getHistory","getReadOnlyProxy","mediaEventTarget","mountTree","RenderTag","unbindTemplateProxy","commonLifeCycles","pageOnlyLifeCycles","_memoizedLifeCycle","WeakMap","_observers","_mediaListener","_memoizedControlNodes","_unmountBricks","WeakSet","_initializeRerenderBricks","_dispatchGeneralLifeCycle","_addObserver","RendererContext","constructor","scope","_classPrivateMethodInitSpec","_defineProperty","_classPrivateFieldInitSpec","writable","value","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","Map","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","_classPrivateFieldGet","push","useResolves","console","error","memoizeControlNode","slotId","node","returnNode","_classPrivateFieldSet","memKey","concat","mem","get","set","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","rerenderControlNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","_prevLastPortal$eleme2","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","element","nextSibling","insertPortalBeforeChild","prevSibling","current","child","sibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","tag","ROOT","container","createPortal","return","removeBricks","getBrickRange","_classPrivateMethodGet","_unmountBricks2","call","_returnNode$container","insertBefore","_returnNode$element","childNodes","length","_root","root","Error","portal","newBricks","_initializeRerenderBricks2","dispose","list","Object","values","observer","disconnect","clear","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle2","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","location","anchor","substring","initializeScrollIntoView","conf","_addObserver2","initializeMediaChange","addEventListener","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","observers","delete","$$tplStateStore","unmountEvent","runtimeContext","mountEvent","type","process","env","NODE_ENV","includes","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","_currentReturn","currentReturn","from","to","range","Set","add","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n ScrollIntoViewConf,\n UseBrickLifeCycle,\n} from \"@next-core/types\";\nimport type { Action } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type { RenderBrick, RenderNode, RenderRoot } from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport class RendererContext {\n /**\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n public readonly scope: \"page\" | \"fragment\";\n\n constructor(scope: \"page\" | \"fragment\") {\n this.scope = scope;\n }\n\n #memoizedLifeCycle: MemoizedLifeCycle<\n Required<\n Pick<\n BrickLifeCycle,\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onScrollIntoView\"\n | \"onMount\"\n | \"onUnmount\"\n // Omitted:\n // \"onMessage\"\n // \"onMessageClose\"\n >\n >\n > = {\n onBeforePageLoad: [],\n onPageLoad: [],\n onPageLeave: [],\n onBeforePageLeave: [],\n onAnchorLoad: [],\n onAnchorUnload: [],\n onMediaChange: [],\n onScrollIntoView: [],\n onMount: [],\n onUnmount: [],\n };\n // #observers: IntersectionObserver[] = [];\n #observers = new Map<RenderBrick, IntersectionObserver[]>();\n #mediaListener: EventListener | undefined;\n\n #memoizedControlNodes?: WeakMap<\n RenderNode,\n Map<\n string,\n {\n node?: RenderBrick;\n last?: RenderBrick;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | UseBrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoizeControlNode(\n slotId: string | undefined,\n key: number,\n node: RenderBrick | undefined,\n returnNode: RenderNode\n ) {\n if (!this.#memoizedControlNodes) {\n this.#memoizedControlNodes = new WeakMap();\n }\n const memKey = `${slotId ?? \"\"}.${key}`;\n let mem = this.#memoizedControlNodes.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoizedControlNodes.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n rerenderControlNode(\n slotId: string | undefined,\n key: number,\n node: RenderBrick | undefined,\n returnNode: RenderNode\n ) {\n const memKey = `${slotId ?? \"\"}.${key}`;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoizedControlNodes!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n const insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n const insertPortalBeforeChild =\n prevLastPortal?.element?.nextSibling ?? null;\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderBrick | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\"Cannot find render root node\");\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoizedControlNodes = undefined;\n }\n\n // Note: no `onScrollIntoView`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMount\"\n | \"onUnmount\",\n event: CustomEvent\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(node: RenderBrick | undefined): RenderBrick | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (!current.portal) {\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.portal) {\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderBrick | undefined,\n to: RenderBrick | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n range.add(current);\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RendererContext.js","names":["isEmpty","remove","listenerFactory","getHistory","getReadOnlyProxy","mediaEventTarget","mountTree","RenderTag","unbindTemplateProxy","commonLifeCycles","pageOnlyLifeCycles","_memoizedLifeCycle","WeakMap","_observers","_mediaListener","_memoizedControlNodes","_unmountBricks","WeakSet","_initializeRerenderBricks","_dispatchGeneralLifeCycle","_addObserver","RendererContext","constructor","scope","options","_options$unknownBrick","_classPrivateMethodInitSpec","_defineProperty","_classPrivateFieldInitSpec","writable","value","onBeforePageLoad","onPageLoad","onPageLeave","onBeforePageLeave","onAnchorLoad","onAnchorUnload","onMediaChange","onScrollIntoView","onMount","onUnmount","Map","unknownBricks","registerBrickLifeCycle","brick","lifeCycle","lifeCycleTypes","key","handlers","_classPrivateFieldGet","push","useResolves","console","error","memoizeControlNode","slotId","node","returnNode","_classPrivateFieldSet","memKey","concat","mem","get","set","last","getLastNode","lastNormal","getLastNormalNode","lastPortal","getLastPortalNode","rerenderControlNode","_prevLastNormal$eleme","_prevLastNormal$eleme2","_prevLastPortal$eleme","_prevLastPortal$eleme2","memoized","prevNode","prevLast","prevLastNormal","prevLastPortal","insertBeforeChild","element","nextSibling","insertPortalBeforeChild","prevSibling","current","child","sibling","fragment","document","createDocumentFragment","portalFragment","renderRoot","tag","ROOT","container","createPortal","return","removeBricks","getBrickRange","_classPrivateMethodGet","_unmountBricks2","call","_returnNode$container","insertBefore","_returnNode$element","childNodes","length","_root","root","Error","portal","newBricks","_initializeRerenderBricks2","dispose","list","Object","values","observer","disconnect","clear","removeEventListener","undefined","dispatchBeforePageLoad","_dispatchGeneralLifeCycle2","CustomEvent","dispatchPageLoad","event","window","dispatchEvent","dispatchBeforePageLeave","detail","dispatchPageLeave","dispatchAnchorLoad","hash","location","anchor","substring","initializeScrollIntoView","conf","_addObserver2","initializeMediaChange","addEventListener","dispatchOnMount","dispatchOnUnmount","bricks","unmountList","removed","item","has","_brick$element","_brick$element2","observers","delete","$$tplStateStore","unmountEvent","runtimeContext","mountEvent","type","process","env","NODE_ENV","includes","_conf$threshold","threshold","IntersectionObserver","entries","forEach","entry","isIntersecting","intersectionRatio","observe","_last","_currentReturn","currentReturn","from","to","range","Set","add","_currentReturn2"],"sources":["../../../src/internal/RendererContext.ts"],"sourcesContent":["import type {\n BrickEventHandler,\n BrickLifeCycle,\n ScrollIntoViewConf,\n UseBrickLifeCycle,\n} from \"@next-core/types\";\nimport type { Action } from \"history\";\nimport { isEmpty, remove } from \"lodash\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport { NextLocation, getHistory } from \"../history.js\";\nimport { getReadOnlyProxy } from \"./proxyFactories.js\";\nimport { Media, mediaEventTarget } from \"./mediaQuery.js\";\nimport type { RenderBrick, RenderNode, RenderRoot } from \"./interfaces.js\";\nimport { mountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { unbindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\n\ntype MemoizedLifeCycle<T> = {\n [Key in keyof T]: {\n brick: RenderBrick;\n handlers: T[Key];\n }[];\n};\n\nconst commonLifeCycles = [\n \"onMount\",\n \"onUnmount\",\n \"onMediaChange\",\n \"onScrollIntoView\",\n] as const;\n\nconst pageOnlyLifeCycles = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onPageLeave\",\n \"onBeforePageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as const;\n\nexport interface RendererContextOptions {\n unknownBricks?: \"silent\" | \"throw\";\n}\n\nexport class RendererContext {\n /**\n * - page: render as whole page, triggering page life cycles.\n * - fragment: render as fragment, not triggering page life cycles.\n */\n public readonly scope: \"page\" | \"fragment\";\n\n public readonly unknownBricks: \"silent\" | \"throw\";\n\n constructor(scope: \"page\" | \"fragment\", options?: RendererContextOptions) {\n this.scope = scope;\n this.unknownBricks = options?.unknownBricks ?? \"throw\";\n }\n\n #memoizedLifeCycle: MemoizedLifeCycle<\n Required<\n Pick<\n BrickLifeCycle,\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onScrollIntoView\"\n | \"onMount\"\n | \"onUnmount\"\n // Omitted:\n // \"onMessage\"\n // \"onMessageClose\"\n >\n >\n > = {\n onBeforePageLoad: [],\n onPageLoad: [],\n onPageLeave: [],\n onBeforePageLeave: [],\n onAnchorLoad: [],\n onAnchorUnload: [],\n onMediaChange: [],\n onScrollIntoView: [],\n onMount: [],\n onUnmount: [],\n };\n // #observers: IntersectionObserver[] = [];\n #observers = new Map<RenderBrick, IntersectionObserver[]>();\n #mediaListener: EventListener | undefined;\n\n #memoizedControlNodes?: WeakMap<\n RenderNode,\n Map<\n string,\n {\n node?: RenderBrick;\n last?: RenderBrick;\n lastNormal?: RenderBrick | undefined;\n lastPortal?: RenderBrick | undefined;\n }\n >\n >;\n\n registerBrickLifeCycle(\n brick: RenderBrick,\n lifeCycle: BrickLifeCycle | UseBrickLifeCycle | undefined\n ): void {\n if (!lifeCycle) {\n return;\n }\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n for (const key of lifeCycleTypes) {\n const handlers = (lifeCycle as BrickLifeCycle)[key as \"onPageLoad\"];\n if (handlers) {\n this.#memoizedLifeCycle[key as \"onPageLoad\"].push({\n brick,\n handlers: handlers as BrickEventHandler | BrickEventHandler[],\n });\n }\n }\n // istanbul ignore next\n if (!isEmpty((lifeCycle as { useResolves?: unknown }).useResolves)) {\n // eslint-disable-next-line no-console\n console.error(\"`lifeCycle.useResolves` is dropped in v3:\", lifeCycle);\n }\n }\n\n #unmountBricks(bricks: Set<RenderBrick>): void {\n const lifeCycleTypes = [\n ...commonLifeCycles,\n ...(this.scope === \"page\" ? pageOnlyLifeCycles : []),\n ];\n const unmountList: {\n brick: RenderBrick;\n handlers: BrickEventHandler | BrickEventHandler[];\n }[] = [];\n\n // Clear life cycle handlers, record `onUnmount` at the same time\n for (const key of lifeCycleTypes) {\n const removed = remove(\n this.#memoizedLifeCycle[key as \"onPageLoad\"],\n (item) => bricks.has(item.brick)\n );\n if (key === \"onUnmount\") {\n unmountList.push(...removed);\n }\n }\n\n // Clear intersection observers\n for (const brick of bricks) {\n const observers = this.#observers.get(brick);\n if (observers?.length) {\n for (const observer of observers) {\n observer.disconnect();\n }\n observers.length = 0;\n this.#observers.delete(brick);\n }\n\n unbindTemplateProxy(brick);\n delete brick.element?.$$tplStateStore;\n\n // Also remove the element\n brick.element?.remove();\n }\n\n // Dispatch unmount events\n const unmountEvent = new CustomEvent(\"unmount\");\n for (const { brick, handlers } of unmountList) {\n listenerFactory(handlers, brick.runtimeContext, brick)(unmountEvent);\n }\n }\n\n #initializeRerenderBricks(bricks: Set<RenderBrick>): void {\n const mountEvent = new CustomEvent(\"mount\");\n for (const { brick, handlers } of this.#memoizedLifeCycle.onMount) {\n if (bricks.has(brick)) {\n listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);\n }\n }\n\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n if (bricks.has(brick)) {\n this.#addObserver(brick, conf);\n }\n }\n }\n\n memoizeControlNode(\n slotId: string | undefined,\n key: number,\n node: RenderBrick | undefined,\n returnNode: RenderNode\n ) {\n if (!this.#memoizedControlNodes) {\n this.#memoizedControlNodes = new WeakMap();\n }\n const memKey = `${slotId ?? \"\"}.${key}`;\n let mem = this.#memoizedControlNodes.get(returnNode);\n if (!mem) {\n mem = new Map();\n this.#memoizedControlNodes.set(returnNode, mem);\n }\n\n mem.set(memKey, {\n node,\n last: getLastNode(node),\n lastNormal: getLastNormalNode(node),\n lastPortal: getLastPortalNode(node),\n });\n }\n\n rerenderControlNode(\n slotId: string | undefined,\n key: number,\n node: RenderBrick | undefined,\n returnNode: RenderNode\n ) {\n const memKey = `${slotId ?? \"\"}.${key}`;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const memoized = this.#memoizedControlNodes!.get(returnNode)!.get(memKey)!;\n const {\n node: prevNode,\n last: prevLast,\n lastNormal: prevLastNormal,\n lastPortal: prevLastPortal,\n } = memoized;\n\n const insertBeforeChild = prevLastNormal?.element?.nextSibling ?? null;\n const insertPortalBeforeChild =\n prevLastPortal?.element?.nextSibling ?? null;\n\n const last = getLastNode(node);\n memoized.node = node;\n memoized.last = last;\n memoized.lastNormal = getLastNormalNode(node);\n memoized.lastPortal = getLastPortalNode(node);\n\n // Figure out the unchanged prev sibling and next sibling\n let prevSibling: RenderBrick | undefined;\n let current = returnNode.child;\n while (current && current !== prevLast) {\n if (current.sibling === prevNode) {\n prevSibling = current;\n break;\n }\n current = current.sibling;\n }\n\n const fragment = document.createDocumentFragment();\n const portalFragment = document.createDocumentFragment();\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: fragment,\n createPortal: portalFragment,\n child: node,\n };\n\n // Override `return`\n current = node;\n while (current) {\n current.return = renderRoot;\n current = current.sibling;\n }\n\n // Unmount previous bricks, including their descendants\n const removeBricks = getBrickRange(prevNode, prevLast);\n this.#unmountBricks(removeBricks);\n\n mountTree(renderRoot);\n\n // Connect back\n if (prevSibling) {\n prevSibling.sibling = node;\n } else {\n returnNode.child = node;\n }\n if (last) {\n last.sibling = prevLast?.sibling;\n }\n\n // Resume `return`\n current = node;\n while (current) {\n current.return = returnNode;\n current = current.sibling;\n }\n\n if (returnNode.tag === RenderTag.ROOT) {\n returnNode.container?.insertBefore(fragment, insertBeforeChild);\n } else {\n returnNode.element?.insertBefore(fragment, insertBeforeChild);\n }\n\n if (portalFragment.childNodes.length > 0) {\n let root: RenderNode | undefined = node;\n while (root && root.return) {\n root = root.return;\n }\n if (root?.tag !== RenderTag.ROOT) {\n throw new Error(\"Cannot find render root node\");\n }\n const portal =\n typeof root.createPortal === \"function\"\n ? root.createPortal()\n : root.createPortal;\n portal.insertBefore(portalFragment, insertPortalBeforeChild);\n }\n\n const newBricks = getBrickRange(node, last);\n this.#initializeRerenderBricks(newBricks);\n }\n\n dispose(): void {\n for (const list of Object.values(this.#memoizedLifeCycle)) {\n list.length = 0;\n }\n for (const list of this.#observers.values()) {\n for (const observer of list) {\n observer.disconnect();\n }\n list.length = 0;\n }\n this.#observers.clear();\n if (this.#mediaListener) {\n mediaEventTarget.removeEventListener(\"change\", this.#mediaListener);\n this.#mediaListener = undefined;\n }\n this.#memoizedControlNodes = undefined;\n }\n\n // Note: no `onScrollIntoView`\n #dispatchGeneralLifeCycle(\n type:\n | \"onBeforePageLoad\"\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onBeforePageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMediaChange\"\n | \"onMount\"\n | \"onUnmount\",\n event: CustomEvent\n ): void {\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n this.scope === \"fragment\" &&\n pageOnlyLifeCycles.includes(type as \"onPageLoad\")\n ) {\n throw new Error(\n `\\`lifeCycle.${type}\\` cannot be used in ${this.scope}.\\nThis is a bug of Brick Next, please report it.`\n );\n }\n for (const { brick, handlers } of this.#memoizedLifeCycle[type]) {\n listenerFactory(handlers, brick.runtimeContext, brick)(event);\n }\n }\n\n dispatchBeforePageLoad(): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLoad\",\n new CustomEvent(\"page.beforeLoad\")\n );\n }\n\n dispatchPageLoad(): void {\n const event = new CustomEvent(\"page.load\");\n this.#dispatchGeneralLifeCycle(\"onPageLoad\", event);\n // Currently only for e2e testing\n window.dispatchEvent(event);\n }\n\n dispatchBeforePageLeave(detail: {\n location?: NextLocation;\n action?: Action;\n }): void {\n this.#dispatchGeneralLifeCycle(\n \"onBeforePageLeave\",\n new CustomEvent(\"page.beforeLeave\", { detail })\n );\n }\n\n dispatchPageLeave(): void {\n this.#dispatchGeneralLifeCycle(\n \"onPageLeave\",\n new CustomEvent(\"page.leave\")\n );\n }\n\n dispatchAnchorLoad(): void {\n const { hash } = getHistory().location;\n if (hash && hash !== \"#\") {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorLoad\",\n new CustomEvent(\"anchor.load\", {\n detail: {\n hash,\n anchor: hash.substring(1),\n },\n })\n );\n } else {\n this.#dispatchGeneralLifeCycle(\n \"onAnchorUnload\",\n new CustomEvent(\"anchor.unload\")\n );\n }\n }\n\n initializeScrollIntoView(): void {\n for (const { brick, handlers: conf } of this.#memoizedLifeCycle\n .onScrollIntoView) {\n this.#addObserver(brick, conf);\n }\n }\n\n #addObserver(brick: RenderBrick, conf: ScrollIntoViewConf) {\n const threshold = conf.threshold ?? 0.1;\n const observer = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.intersectionRatio >= threshold) {\n listenerFactory(\n conf.handlers,\n brick.runtimeContext,\n brick\n )(new CustomEvent(\"scroll.into.view\"));\n observer.disconnect();\n }\n }\n });\n },\n {\n threshold,\n }\n );\n observer.observe(brick.element!);\n let list = this.#observers.get(brick);\n if (!list) {\n list = [];\n this.#observers.set(brick, list);\n }\n list.push(observer);\n }\n\n initializeMediaChange(): void {\n this.#mediaListener = (event) => {\n this.#dispatchGeneralLifeCycle(\n \"onMediaChange\",\n new CustomEvent(\"media.change\", {\n detail: getReadOnlyProxy((event as CustomEvent<Media>).detail),\n })\n );\n };\n mediaEventTarget.addEventListener(\"change\", this.#mediaListener);\n }\n\n dispatchOnMount(): void {\n this.#dispatchGeneralLifeCycle(\"onMount\", new CustomEvent(\"mount\"));\n }\n\n dispatchOnUnmount(): void {\n this.#dispatchGeneralLifeCycle(\"onUnmount\", new CustomEvent(\"unmount\"));\n }\n}\n\nfunction getLastNode(node: RenderBrick | undefined): RenderBrick | undefined {\n let last = node;\n while (last?.sibling) {\n last = last.sibling;\n }\n return last;\n}\n\nfunction getLastNormalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (!current.portal) {\n last = current;\n }\n current = current.sibling;\n }\n return last;\n}\n\nfunction getLastPortalNode(\n node: RenderBrick | undefined\n): RenderBrick | undefined {\n let last: RenderBrick | undefined;\n let current = node;\n while (current) {\n if (current.portal) {\n last = current;\n }\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n return last;\n}\n\nfunction getBrickRange(\n from: RenderBrick | undefined,\n to: RenderBrick | undefined\n): Set<RenderBrick> {\n const range = new Set<RenderBrick>();\n let current = from;\n while (current) {\n range.add(current);\n if (current.child) {\n current = current.child;\n } else if (current === to) {\n break;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn && currentReturn !== to) {\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n if (currentReturn === to) {\n break;\n }\n current = currentReturn?.sibling;\n }\n }\n return range;\n}\n"],"mappings":"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"}
|
|
@@ -320,7 +320,8 @@ function _render3() {
|
|
|
320
320
|
sys: _objectSpread(_objectSpread({}, getAuth()), getPageInfo()),
|
|
321
321
|
ctxStore: new DataStore("CTX"),
|
|
322
322
|
pendingPermissionsPreCheck: [preCheckPermissions(storyboard)],
|
|
323
|
-
tplStateStoreMap: new Map()
|
|
323
|
+
tplStateStoreMap: new Map(),
|
|
324
|
+
formStateStoreMap: new Map()
|
|
324
325
|
});
|
|
325
326
|
var rendererContext = _classPrivateFieldSet(this, _rendererContext, new RendererContext("page"));
|
|
326
327
|
_classPrivateFieldSet(this, _navConfig, undefined);
|
|
@@ -342,7 +343,7 @@ function _render3() {
|
|
|
342
343
|
// Reset redirect count if no redirect is set.
|
|
343
344
|
_classPrivateFieldSet(this, _redirectCount, 0);
|
|
344
345
|
flushStableLoadBricks();
|
|
345
|
-
yield Promise.all([...output.blockingList, runtimeContext.ctxStore.
|
|
346
|
+
yield Promise.all([...output.blockingList, ...[runtimeContext.ctxStore, ...runtimeContext.tplStateStoreMap.values(), ...runtimeContext.formStateStoreMap.values()].map(store => store.waitForAll()),
|
|
346
347
|
// Todo: load processors only when they would used in current rendering.
|
|
347
348
|
// loadProcessorsImperatively(
|
|
348
349
|
// strictCollectMemberUsage(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.js","names":["locationsAreEqual","flushStableLoadBricks","HttpAbortError","uniqueId","getHistory","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","preCheckPermissions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","getRuntime","getAuth","isLoggedIn","getPageInfo","resetAllComputedMarks","handleHttpError","httpErrorToString","isUnauthenticatedError","abortPendingRequest","initAbortController","registerCustomTemplates","clearCollectWidgetContract","collectContract","fulfilStoryboard","RenderTag","preCheckInstalledApps","insertPreviewRoutes","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_classPrivateMethodGet","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","listen","_classPrivateFieldGet2","_location$state","_classPrivateFieldGet3","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","_objectSpread","dispatchPageLeave","storyboard","pathname","reload","_queuedRender2","catch","detail","_classPrivateFieldGet4","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","concat","search","process","env","NODE_ENV","console","error","Error","replace","_x","_queuedRender3","apply","arguments","_asyncToGenerator","_render2","nextLocation","_x2","_render3","_classPrivateFieldGet5","app","appChanged","id","flags","getFeatureFlags","prevRendererContext","redirectTo","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","item","dispatchOnUnmount","dispose","clear","theme","dispatchEvent","CustomEvent","_storyboard$meta","_storyboard$meta2","runtimeContext","query","URLSearchParams","sys","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","rendererContext","meta","functions","contracts","failed","output","routes","unauthenticated","redirect","path","Promise","all","blockingList","waitForAll","values","map","store","menuConfs","menuRequests","mergeMenuConfs","NO_AUTH_GUARD","node","BRICK","type","properties","textContent","return","child","route","dispatchBeforePageLoad","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { RenderOutput, renderRoutes } from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { preCheckPermissions } from \"./checkPermissions.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport { getRuntime } from \"./Runtime.js\";\nimport { getAuth, isLoggedIn } from \"../auth.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport {\n clearCollectWidgetContract,\n collectContract,\n} from \"./data/CollectContracts.js\";\nimport { fulfilStoryboard } from \"./loadBootstrapData.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { preCheckInstalledApps } from \"./checkInstalledApps.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n history.listen((location, action) => {\n let ignoreRendering = false;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n // this.locationContext.messageDispatcher.reset();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n // devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n this.#renderId = uniqueId(\"render-id-1\");\n\n resetAllComputedMarks();\n clearResolveCache();\n clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n if (currentApp) {\n preCheckInstalledApps(storyboard);\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...getAuth(),\n ...getPageInfo(),\n },\n ctxStore: new DataStore(\"CTX\"),\n pendingPermissionsPreCheck: [preCheckPermissions(storyboard)],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n });\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\"\n ));\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext\n );\n if (output.unauthenticated) {\n redirectToLogin();\n return;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n\n flushStableLoadBricks();\n\n await Promise.all([\n ...output.blockingList,\n runtimeContext.ctxStore.waitForAll(),\n ...[...runtimeContext.tplStateStoreMap.values()].map((store) =>\n store.waitForAll()\n ),\n // Todo: load processors only when they would used in current rendering.\n // loadProcessorsImperatively(\n // strictCollectMemberUsage(\n // [storyboard.routes, storyboard.meta?.customTemplates],\n // \"PROCESSORS\",\n // 2\n // ),\n // getBrickPackages()\n // ),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n const menuConfs = await Promise.all(output.menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: renderRoot,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n }\n\n return;\n }\n } else if (!window.NO_AUTH_GUARD && !isLoggedIn()) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n }\n}\n\nfunction mergeMenuConfs(menuConfs: (StaticMenuConf | undefined)[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n if (menuConf) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Router.js","names":["locationsAreEqual","flushStableLoadBricks","HttpAbortError","uniqueId","getHistory","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","preCheckPermissions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","getRuntime","getAuth","isLoggedIn","getPageInfo","resetAllComputedMarks","handleHttpError","httpErrorToString","isUnauthenticatedError","abortPendingRequest","initAbortController","registerCustomTemplates","clearCollectWidgetContract","collectContract","fulfilStoryboard","RenderTag","preCheckInstalledApps","insertPreviewRoutes","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_classPrivateMethodGet","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","listen","_classPrivateFieldGet2","_location$state","_classPrivateFieldGet3","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","_objectSpread","dispatchPageLeave","storyboard","pathname","reload","_queuedRender2","catch","detail","_classPrivateFieldGet4","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","concat","search","process","env","NODE_ENV","console","error","Error","replace","_x","_queuedRender3","apply","arguments","_asyncToGenerator","_render2","nextLocation","_x2","_render3","_classPrivateFieldGet5","app","appChanged","id","flags","getFeatureFlags","prevRendererContext","redirectTo","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","item","dispatchOnUnmount","dispose","clear","theme","dispatchEvent","CustomEvent","_storyboard$meta","_storyboard$meta2","runtimeContext","query","URLSearchParams","sys","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","meta","functions","contracts","failed","output","routes","unauthenticated","redirect","path","Promise","all","blockingList","values","map","store","waitForAll","menuConfs","menuRequests","mergeMenuConfs","NO_AUTH_GUARD","node","BRICK","type","properties","textContent","return","child","route","dispatchBeforePageLoad","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { RenderOutput, renderRoutes } from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { preCheckPermissions } from \"./checkPermissions.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport { getRuntime } from \"./Runtime.js\";\nimport { getAuth, isLoggedIn } from \"../auth.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport {\n clearCollectWidgetContract,\n collectContract,\n} from \"./data/CollectContracts.js\";\nimport { fulfilStoryboard } from \"./loadBootstrapData.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { preCheckInstalledApps } from \"./checkInstalledApps.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n history.listen((location, action) => {\n let ignoreRendering = false;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n // this.locationContext.messageDispatcher.reset();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n // devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n this.#renderId = uniqueId(\"render-id-1\");\n\n resetAllComputedMarks();\n clearResolveCache();\n clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n if (currentApp) {\n preCheckInstalledApps(storyboard);\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...getAuth(),\n ...getPageInfo(),\n },\n ctxStore: new DataStore(\"CTX\"),\n pendingPermissionsPreCheck: [preCheckPermissions(storyboard)],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\"\n ));\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext\n );\n if (output.unauthenticated) {\n redirectToLogin();\n return;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n\n flushStableLoadBricks();\n\n await Promise.all([\n ...output.blockingList,\n ...[\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n // Todo: load processors only when they would used in current rendering.\n // loadProcessorsImperatively(\n // strictCollectMemberUsage(\n // [storyboard.routes, storyboard.meta?.customTemplates],\n // \"PROCESSORS\",\n // 2\n // ),\n // getBrickPackages()\n // ),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n const menuConfs = await Promise.all(output.menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: renderRoot,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n }\n\n return;\n }\n } else if (!window.NO_AUTH_GUARD && !isLoggedIn()) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n }\n}\n\nfunction mergeMenuConfs(menuConfs: (StaticMenuConf | undefined)[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n if (menuConf) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import { getTplHostElement, getTplStateStore } from "./CustomTemplates/utils.js"
|
|
|
13
13
|
import { handleHttpError, httpErrorToString } from "../handleHttpError.js";
|
|
14
14
|
import { getArgsOfFlowApi } from "./data/FlowApi.js";
|
|
15
15
|
import { Notification } from "../Notification.js";
|
|
16
|
+
import { getFormStateStore } from "./FormRenderer/utils.js";
|
|
16
17
|
export function bindListeners(brick, eventsMap, runtimeContext) {
|
|
17
18
|
if (!eventsMap) {
|
|
18
19
|
return;
|
|
@@ -140,8 +141,9 @@ export function listenerFactory(handlers, runtimeContext, runtimeBrick) {
|
|
|
140
141
|
tplHostElement.dispatchEvent(new CustomEvent(type, init));
|
|
141
142
|
break;
|
|
142
143
|
}
|
|
143
|
-
|
|
144
|
-
|
|
144
|
+
case "formstate.update":
|
|
145
|
+
handleFormStateAction(event, handler.args, handler.callback, runtimeContext);
|
|
146
|
+
break;
|
|
145
147
|
|
|
146
148
|
// case "message.subscribe":
|
|
147
149
|
// case "message.unsubscribe":
|
|
@@ -373,6 +375,11 @@ function handleTplStateAction(event, method, args, callback, runtimeContext) {
|
|
|
373
375
|
var tplStateStore = getTplStateStore(runtimeContext, "state.".concat(method), ": ".concat(name));
|
|
374
376
|
tplStateStore.updateValue(name, value, method === "update" ? "replace" : method, callback, runtimeContext);
|
|
375
377
|
}
|
|
378
|
+
function handleFormStateAction(event, args, callback, runtimeContext) {
|
|
379
|
+
var [name, value] = argsFactory(args, runtimeContext, event);
|
|
380
|
+
var formStateStore = getFormStateStore(runtimeContext, "formstate.update", ": ".concat(name));
|
|
381
|
+
formStateStore.updateValue(name, value, "replace", callback, runtimeContext);
|
|
382
|
+
}
|
|
376
383
|
function handleLocationAction(event, method, args, runtimeContext) {
|
|
377
384
|
if (method === "assign") {
|
|
378
385
|
var [url] = argsFactory(args, runtimeContext, event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindListeners.js","names":["isEvaluable","checkIf","computeRealValue","getHistory","getProviderBrick","startPoll","isPreEvaluated","setProperties","applyMode","applyTheme","getTplHostElement","getTplStateStore","handleHttpError","httpErrorToString","getArgsOfFlowApi","Notification","bindListeners","brick","eventsMap","runtimeContext","Object","entries","forEach","_ref","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","runtimeBrick","event","_objectSpread","object","split","handleHistoryAction","args","callback","handleWindowAction","handleLocationAction","handleStorageAction","preventDefault","handleConsoleAction","handleMessageAction","detail","handleContextAction","handleTplStateAction","type","init","argsFactory","tplHostElement","dispatchEvent","CustomEvent","theme","console","error","handleUseProviderAction","handleCustomAction","_x","_x2","_x3","_x4","_handleUseProviderAction","apply","arguments","_asyncToGenerator","providerBrick","brickCallback","targets","rawTarget","rawTargetRef","computedTarget","multiple","Array","from","document","querySelectorAll","found","querySelector","HTMLElement","computedTargetRef","targetRefs","join","map","ref","_tplHostElement$$$get","$$getElementByRef","call","filter","Boolean","useEventAsDefault","_x5","_x6","_x7","_x8","_x9","_x10","_x11","_brickCallback","options","_poll","task","_ref2","computedArgs","callbackFactory","eventCallbackFactory","pollableCallback","progress","success","finally","poll","enabled","result","err","baseArgsLength","hasCallback","overrideMethod","useEventDetailAsDefault","undefined","blocked","url","features","window","open","name","value","ctxStore","updateValue","tplStateStore","location","assign","storage","localStorage","sessionStorage","setItem","JSON","stringify","removeItem","show","message","isArray"],"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} from \"@next-core/types\";\nimport { isEvaluable } from \"@next-core/cook\";\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 { getArgsOfFlowApi } from \"./data/FlowApi.js\";\nimport { Notification } from \"../Notification.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 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 continue;\n }\n 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.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.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\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 (isUseProviderHandler(handler)) {\n computedArgs = await 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 handleContextAction(\n event: Event,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n args: unknown[] | undefined,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\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\nfunction handleTplStateAction(\n event: Event,\n method: \"update\" | \"refresh\" | \"load\",\n args: unknown[] | undefined,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\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\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":["isEvaluable","checkIf","computeRealValue","getHistory","getProviderBrick","startPoll","isPreEvaluated","setProperties","applyMode","applyTheme","getTplHostElement","getTplStateStore","handleHttpError","httpErrorToString","getArgsOfFlowApi","Notification","getFormStateStore","bindListeners","brick","eventsMap","runtimeContext","Object","entries","forEach","_ref","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","runtimeBrick","event","_objectSpread","object","split","handleHistoryAction","args","callback","handleWindowAction","handleLocationAction","handleStorageAction","preventDefault","handleConsoleAction","handleMessageAction","detail","handleContextAction","handleTplStateAction","type","init","argsFactory","tplHostElement","dispatchEvent","CustomEvent","handleFormStateAction","theme","console","error","handleUseProviderAction","handleCustomAction","_x","_x2","_x3","_x4","_handleUseProviderAction","apply","arguments","_asyncToGenerator","providerBrick","brickCallback","targets","rawTarget","rawTargetRef","computedTarget","multiple","Array","from","document","querySelectorAll","found","querySelector","HTMLElement","computedTargetRef","targetRefs","join","map","ref","_tplHostElement$$$get","$$getElementByRef","call","filter","Boolean","useEventAsDefault","_x5","_x6","_x7","_x8","_x9","_x10","_x11","_brickCallback","options","_poll","task","_ref2","computedArgs","callbackFactory","eventCallbackFactory","pollableCallback","progress","success","finally","poll","enabled","result","err","baseArgsLength","hasCallback","overrideMethod","useEventDetailAsDefault","undefined","blocked","url","features","window","open","name","value","ctxStore","updateValue","tplStateStore","formStateStore","location","assign","storage","localStorage","sessionStorage","setItem","JSON","stringify","removeItem","show","message","isArray"],"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} from \"@next-core/types\";\nimport { isEvaluable } from \"@next-core/cook\";\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 { getArgsOfFlowApi } from \"./data/FlowApi.js\";\nimport { Notification } from \"../Notification.js\";\nimport { getFormStateStore } from \"./FormRenderer/utils.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 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 continue;\n }\n 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.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.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 (isUseProviderHandler(handler)) {\n computedArgs = await 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 handleContextAction(\n event: Event,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n args: unknown[] | undefined,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\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\nfunction handleTplStateAction(\n event: Event,\n method: \"update\" | \"refresh\" | \"load\",\n args: unknown[] | undefined,\n callback: BrickEventHandlerCallback | undefined,\n runtimeContext: RuntimeContext\n) {\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\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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"}
|