@next-core/editor-bricks-helper 0.32.36 → 0.33.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/interfaces.ts","../../../node_modules/classnames/index.js","../../../node_modules/@ungap/event-target/esm/index.js","../src/internal/getUniqueNodeId.ts","../src/internal/expandTemplateEdges.ts","../src/internal/reorderBuilderEdges.ts","../src/internal/deleteNodeFromTree.ts","../src/processors/getRelatedNodesBasedOnEvents.ts","../src/internal/getBuilderNode.ts","../src/internal/getAppendingNodesAndEdges.ts","../src/internal/isParentExpandableTemplate.ts","../src/internal/BuilderDataManager.ts","../src/BuilderContext.ts","../src/hooks/useBuilderDataManager.ts","../src/hooks/useBuilderData.ts","../src/hooks/useBuilderNode.ts","../src/hooks/useBuilderContextMenuStatus.ts","../src/hooks/useShowRelatedNodesBasedOnEvents.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/EditorContainer/isCurrentTargetByClassName.ts","../src/hooks/useHoverNodeUid.ts","../src/hooks/useHighlightNodes.ts","../src/hooks/useDroppingStatus.ts","../src/EditorContainer/EditorContainer.tsx","../src/EditorBrickAsComponent/getEditorBrick.ts","../src/hooks/useStoryList.ts","../src/EditorBrickAsComponent/getBrickDoc.ts","../src/hooks/useSharedEditorMap.ts","../src/EditorBrickAsComponent/EditorBrickAsComponent.tsx","../src/hooks/useBuilderGroupedChildNodes.ts","../src/hooks/useCanDrop.ts","../src/DropZone/getDropPosition.ts","../src/processors/getSortedIdsAfterDropped.ts","../src/DropZone/reverseNormalize.ts","../src/DropZone/getSnippetNodeDetail.ts","../src/DropZone/processDrop.ts","../src/hooks/useCanvasList.ts","../src/DropZone/DropZone.tsx","../src/SlotContainer/SlotContainer.tsx","../src/BuilderProvider.tsx","../src/EditorElementFactory.tsx","../src/DroppingStatusContext.ts","../src/hooks/useBuilderNodeMountPoints.ts","../src/hooks/useBuilderParentNode.ts","../src/hooks/useRouteList.ts","../src/hooks/useOutlineEnabled.ts"],"sourcesContent":["import {\n BrickEventsMap,\n BuilderRouteOrBrickNode,\n CustomTemplateProxy,\n ContextConf,\n BuilderRouteNode,\n BrickLifeCycle,\n BrickConf,\n RouteConf,\n} from \"@next-core/brick-types\";\n\nexport interface BuilderCanvasData {\n rootId: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n}\n\nexport interface BuilderCanvasSettings {\n mode: \"page\" | \"dialog\";\n}\n\nexport type BuilderRuntimeNode<P = Record<string, unknown>> =\n BuilderRouteOrBrickNode & {\n $$uid?: number;\n $$parsedProperties?: P;\n $$parsedEvents?: BrickEventsMap;\n $$parsedLifeCycle?: BrickLifeCycle;\n $$matchedSelectors?: string[];\n $$isTemplateInternalNode?: boolean;\n $$isExpandableTemplate?: boolean;\n $$templateProxy?: CustomTemplateProxy;\n $$templateRefToUid?: Map<string, number>;\n $$delegatedSlots?: Map<string, TemplateDelegatedContext[]>;\n $$normalized?: BrickConf | RouteConf | null;\n };\n\nexport interface BuilderRuntimeEdge {\n child: number;\n parent: number;\n mountPoint: string;\n sort: number;\n $$isTemplateInternal?: boolean;\n $$isTemplateDelegated?: boolean;\n $$isTemplateExpanded?: boolean;\n}\n\nexport interface TemplateDelegatedContext {\n templateUid: number;\n templateMountPoint: string;\n}\n\nexport interface BuilderGroupedChildNode {\n mountPoint: string;\n childNodes: BuilderRuntimeNode[];\n}\n\nexport interface EventDetailOfNodeAdd {\n nodeUid: number;\n parentUid: number;\n nodeUids: number[];\n nodeIds: string[];\n nodeData: NodeInstance;\n}\n\nexport interface EventDetailOfContextUpdated {\n context: ContextConf[];\n}\n\nexport interface NodeInstance {\n parent: string;\n type: \"brick\" | \"provider\" | \"template\";\n brick: string;\n mountPoint: string;\n bg?: boolean;\n portal?: boolean;\n properties?: string;\n events?: string;\n lifeCycle?: string;\n sort?: number;\n}\n\nexport interface EventDetailOfNodeAddStored {\n nodeUid: number;\n nodeData: BuilderRouteOrBrickNode;\n}\n\nexport interface EventDetailOfSnippetApply {\n parentUid: number;\n /** First level node only. */\n nodeUids: number[];\n /** First level node only. */\n nodeIds: string[];\n nodeDetails: SnippetNodeDetail[];\n}\n\nexport interface SnippetNodeDetail {\n nodeUid: number;\n parentUid: number;\n nodeData: SnippetNodeInstance;\n children: SnippetNodeDetail[];\n}\n\nexport type SnippetNodeInstance = Omit<NodeInstance, \"parent\"> & {\n parent?: string;\n};\n\nexport interface EventDetailOfSnippetApplyStored {\n flattenNodeDetails: EventDetailOfNodeAddStored[];\n}\n\nexport type EventDetailOfNodeMove = Omit<EventDetailOfNodeAdd, \"nodeData\"> & {\n nodeInstanceId: string;\n nodeData: {\n parent: string;\n mountPoint: string;\n };\n};\n\nexport interface EventDetailOfNodeReorder {\n nodeUids: number[];\n parentUid: number;\n nodeIds: string[];\n}\n\nexport interface EventDetailOfNodeDragStart {\n nodeUid: number;\n}\n\nexport interface BuilderContextMenuStatus {\n active: boolean;\n node?: BuilderRuntimeNode;\n /** `x` is relative to the viewport. */\n x?: number;\n /** `y` is relative to the viewport. */\n y?: number;\n}\n\nexport enum BuilderDataTransferType {\n NODE_TO_ADD = \"builder/node-to-add\",\n NODE_TO_MOVE = \"builder/node-to-move\",\n SNIPPET_TO_APPLY = \"builder/snippet-to-apply\",\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToAdd {\n brickType?: \"brick\" | \"provider\" | \"template\";\n brick: string;\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToMove {\n nodeUid: number;\n nodeInstanceId: string;\n nodeId: string;\n}\n\nexport interface BuilderDataTransferPayloadOfSnippetToApply {\n bricks: BrickConf[];\n}\n\nexport enum EditorBrickType {\n DEFAULT = \"editorOfDefault\",\n CONTAINER = \"editorOfContainer\",\n TRANSPARENT_CONTAINER = \"editorOfTransparentContainer\",\n}\n\nexport enum EditorSelfLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n CONTAINER = \"container\",\n}\n\nexport enum EditorSlotContentLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n GRID = \"grid\",\n}\n\nexport interface SharedEditorConf {\n id: string;\n editor: string;\n editorProps?: Record<string, unknown>;\n}\n\nexport type BuilderDroppingStatus = Map<number, Map<string, boolean>>;\n\nexport interface AbstractBuilderDataManager {\n getData(): BuilderCanvasData;\n getRouteList(): BuilderRouteNode[];\n getContextMenuStatus(): BuilderContextMenuStatus;\n dataInit(root: BuilderRuntimeNode): void;\n sharedEditorListInit(data: SharedEditorConf[]): void;\n routeListInit(data: BuilderRouteNode[]): void;\n nodeAdd(detail: EventDetailOfNodeAdd): void;\n nodeAddStored(detail: EventDetailOfNodeAddStored): void;\n snippetApply(detail: EventDetailOfSnippetApply): void;\n snippetApplyStored(detail: EventDetailOfSnippetApplyStored): void;\n nodeMove(detail: EventDetailOfNodeMove): void;\n nodeReorder(detail: EventDetailOfNodeReorder): void;\n nodeDelete(detail: BuilderRuntimeNode): void;\n nodeClick(detail: BuilderRuntimeNode): void;\n contextUpdated(detail: EventDetailOfContextUpdated): void;\n onDataChange(fn: EventListener): () => void;\n onNodeAdd(fn: (event: CustomEvent<EventDetailOfNodeAdd>) => void): () => void;\n onNodeReorder(\n fn: (event: CustomEvent<EventDetailOfNodeReorder>) => void\n ): () => void;\n onNodeMove(\n fn: (event: CustomEvent<EventDetailOfNodeMove>) => void\n ): () => void;\n onNodeClick(fn: (event: CustomEvent<BuilderRuntimeNode>) => void): () => void;\n onContextMenuChange(\n fn: (event: CustomEvent<BuilderContextMenuStatus>) => void\n ): () => void;\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\ntry {\n self.EventTarget = (new EventTarget).constructor;\n} catch(EventTarget) {\n (function (Object, wm) {\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var proto = EventTarget.prototype;\n define(proto, 'addEventListener', function (type, listener, options) {\n for (var\n secret = wm.get(this),\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener)\n return;\n }\n listeners.push({target: this, listener: listener, options: options});\n });\n define(proto, 'dispatchEvent', function (event) {\n var secret = wm.get(this);\n var listeners = secret[event.type];\n if (listeners) {\n define(event, 'target', this);\n define(event, 'currentTarget', this);\n listeners.slice(0).some(dispatch, event);\n delete event.currentTarget;\n delete event.target;\n }\n return true;\n });\n define(proto, 'removeEventListener', function (type, listener) {\n for (var\n secret = wm.get(this),\n /* istanbul ignore next */\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener) {\n listeners.splice(i, 1);\n return;\n }\n }\n });\n self.EventTarget = EventTarget;\n function EventTarget() {'use strict';\n wm.set(this, create(null));\n }\n function define(target, name, value) {\n defineProperty(\n target,\n name,\n {\n configurable: true,\n writable: true,\n value: value\n }\n );\n }\n function dispatch(info) {\n var options = info.options;\n if (options && options.once)\n info.target.removeEventListener(this.type, info.listener);\n if (typeof info.listener === 'function')\n info.listener.call(info.target, this);\n else\n info.listener.handleEvent(this);\n return this._stopImmediatePropagationFlag;\n }\n }(Object, new WeakMap));\n}\nexport default self.EventTarget;\n","let uniqueIdCursor = 0;\n\nexport function getUniqueNodeId(): number {\n return (uniqueIdCursor += 1);\n}\n","import { clamp, sortBy } from \"lodash\";\nimport { CustomTemplateProxySlot } from \"@next-core/brick-types\";\nimport { hasOwnProperty } from \"@next-core/brick-utils\";\nimport {\n BuilderCanvasData,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n} from \"../interfaces\";\n\nexport function expandTemplateEdges({\n nodes,\n // Here expanded edges should be excluded.\n edges,\n rootId,\n}: BuilderCanvasData): BuilderRuntimeEdge[] {\n const newEdges = edges.slice();\n const reorderedEdgesMap = new WeakMap<BuilderRuntimeEdge, number>();\n\n const walk = (\n uid: number,\n callback: (\n node: BuilderRuntimeNode,\n childEdges: BuilderRuntimeEdge[]\n ) => void\n ): void => {\n const node = nodes.find((item) => item.$$uid === uid);\n const childEdges = sortBy(\n edges.filter((edge) => edge.parent === node.$$uid),\n (edge) => edge.sort\n );\n callback(node, childEdges);\n for (const edge of childEdges) {\n walk(edge.child, callback);\n }\n };\n\n const expandEdgesThroughTemplateChain = (\n node: BuilderRuntimeNode,\n mountPoint: string,\n childUid: number\n ): void => {\n let proxySlotConf: CustomTemplateProxySlot;\n let delegateToParentUid: number;\n if (\n node.$$isExpandableTemplate &&\n node.$$templateProxy?.slots &&\n hasOwnProperty(node.$$templateProxy.slots, mountPoint) &&\n (proxySlotConf = node.$$templateProxy.slots[mountPoint]) &&\n (delegateToParentUid = node.$$templateRefToUid.get(proxySlotConf.ref))\n ) {\n const nextNode = nodes.find((n) => n.$$uid === delegateToParentUid);\n const nextMountPoint = proxySlotConf.refSlot;\n if (nextNode.$$isExpandableTemplate) {\n expandEdgesThroughTemplateChain(nextNode, nextMountPoint, childUid);\n } else {\n const expandedEdge: BuilderRuntimeEdge = {\n child: childUid,\n parent: delegateToParentUid,\n mountPoint: nextMountPoint,\n sort: undefined,\n $$isTemplateExpanded: true,\n };\n const siblingEdges = sortBy(\n newEdges.filter((edge) => edge.parent === delegateToParentUid),\n (edge) => reorderedEdgesMap.get(edge) ?? edge.sort\n );\n const internalEdges = siblingEdges.filter(\n (edge) => edge.$$isTemplateInternal\n );\n // For more details about refPosition implementation detail,\n // see `packages/brick-kit/src/core/CustomTemplates/expandCustomTemplate.ts`.\n const refPosition = proxySlotConf.refPosition ?? -1;\n const clampedRefPosition = clamp(\n refPosition < 0\n ? internalEdges.length + 1 + refPosition\n : refPosition,\n 0,\n internalEdges.length\n );\n siblingEdges.splice(\n clampedRefPosition < internalEdges.length\n ? siblingEdges.findIndex(\n (edge) => edge === internalEdges[clampedRefPosition]\n )\n : siblingEdges.length,\n 0,\n expandedEdge\n );\n siblingEdges.forEach((edge, index) => {\n reorderedEdgesMap.set(edge, index);\n });\n newEdges.push(expandedEdge);\n }\n }\n };\n\n walk(rootId, (node, childEdges) => {\n if (!node.$$isExpandableTemplate) {\n return;\n }\n for (const childEdge of childEdges) {\n // Recursively expand templates.\n expandEdgesThroughTemplateChain(\n node,\n childEdge.mountPoint,\n childEdge.child\n );\n }\n });\n\n if (newEdges.length > edges.length) {\n return newEdges.map((edge) => {\n const sort = reorderedEdgesMap.get(edge);\n return sort === undefined\n ? edge\n : {\n ...edge,\n sort,\n };\n });\n }\n\n return edges;\n}\n","import { BuilderCanvasData, BuilderRuntimeEdge } from \"../interfaces\";\nimport { expandTemplateEdges } from \"./expandTemplateEdges\";\n\nexport function reorderBuilderEdges(\n { rootId, nodes, edges }: BuilderCanvasData,\n {\n parentUid,\n nodeUids,\n }: {\n parentUid: number;\n nodeUids: number[];\n }\n): BuilderRuntimeEdge[] {\n // When we do edge-reordering, we simply remove existed\n // expanded edges and re-expand them.\n const edgesExcludeExpanded = edges.filter(\n (edge) => !edge.$$isTemplateExpanded\n );\n\n return expandTemplateEdges({\n rootId,\n nodes,\n edges: edgesExcludeExpanded.map((edge) => {\n // `nodeUids` are sorted, so reorder related edges based on it.\n const index =\n edge.parent === parentUid ? nodeUids.indexOf(edge.child) : -1;\n return index >= 0\n ? {\n ...edge,\n sort: index,\n }\n : edge;\n }),\n });\n}\n","import { BuilderCanvasData, BuilderRuntimeEdge } from \"../interfaces\";\n\nexport function deleteNodeFromTree(\n nodeUid: number,\n { rootId, nodes, edges }: BuilderCanvasData\n): BuilderCanvasData {\n const idsToDelete = new Set<number>();\n collectIdsToDelete(nodeUid, edges, idsToDelete);\n return {\n rootId,\n nodes: nodes.filter((node) => !idsToDelete.has(node.$$uid)),\n edges: edges.filter(\n (edge) => !idsToDelete.has(edge.parent) && !idsToDelete.has(edge.child)\n ),\n };\n}\n\nfunction collectIdsToDelete(\n nodeUid: number,\n edges: BuilderRuntimeEdge[],\n idsToDelete: Set<number>\n): void {\n idsToDelete.add(nodeUid);\n const ids = new Set<number>();\n for (const edge of edges) {\n if (edge.parent === nodeUid) {\n ids.add(edge.child);\n }\n }\n for (const id of ids) {\n collectIdsToDelete(id, edges, idsToDelete);\n }\n}\n","import { BuilderRuntimeNode } from \"../interfaces\";\nimport {\n BrickEventHandler,\n ExecuteCustomBrickEventHandler,\n MessageConf,\n} from \"@next-core/brick-types\";\nimport { isEmpty } from \"lodash\";\n\nexport type RelatedNodesBasedOnEventsMap = Map<\n number,\n {\n upstreamNodes: Set<number>;\n downstreamNodes: Set<number>;\n }\n>;\n\nexport function getRelatedNodesBasedOnEvents(\n nodes: BuilderRuntimeNode[],\n rootNodeIsCustomTemplate?: boolean\n): RelatedNodesBasedOnEventsMap {\n const nodesMap: RelatedNodesBasedOnEventsMap = new Map();\n\n const targetMap = new Map<string, number>();\n const targetRefMap = new Map<string, number>();\n for (const n of nodes) {\n nodesMap.set(n.$$uid, {\n upstreamNodes: new Set<number>(),\n downstreamNodes: new Set<number>(),\n });\n for (const selector of n.$$matchedSelectors) {\n if (!targetMap.get(selector)) {\n targetMap.set(selector, n.$$uid);\n }\n }\n if (rootNodeIsCustomTemplate) {\n if (n.ref) {\n targetRefMap.set(n.ref as string, n.$$uid);\n }\n }\n }\n\n for (const node of nodes) {\n let handlers: BrickEventHandler[] = [];\n if (!isEmpty(node.$$parsedEvents)) {\n handlers = Object.values(node.$$parsedEvents).flat();\n }\n if (!isEmpty(node.$$parsedLifeCycle)) {\n handlers = handlers.concat(\n Object.entries(node.$$parsedLifeCycle).flatMap(\n ([lifeCycleName, lifeCycleConf]) => {\n switch (lifeCycleName) {\n case \"onBeforePageLoad\":\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onBeforePageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n return lifeCycleConf as BrickEventHandler[];\n case \"onMessage\":\n return ([] as MessageConf[])\n .concat(lifeCycleConf)\n .flatMap((messageConf) =>\n ([] as BrickEventHandler[]).concat(messageConf.handlers)\n );\n default:\n // eslint-disable-next-line no-console\n console.warn(`unknown lifeCycle: ${lifeCycleName}`);\n return [];\n }\n }\n )\n );\n }\n if (handlers.length > 0) {\n collectRelatedNodes(node, handlers, nodesMap, targetMap, targetRefMap);\n }\n }\n\n return nodesMap;\n}\n\nfunction collectRelatedNodes(\n node: BuilderRuntimeNode,\n handlers: BrickEventHandler[],\n nodesMap: RelatedNodesBasedOnEventsMap,\n targetMap: Map<string, number>,\n targetRefMap: Map<string, number>\n): void {\n for (const handler of handlers as ExecuteCustomBrickEventHandler[]) {\n if (handler) {\n if (handler.target) {\n const targetNodeUid = targetMap.get(handler.target as string);\n if (targetNodeUid) {\n nodesMap.get(node.$$uid).downstreamNodes.add(targetNodeUid);\n nodesMap.get(targetNodeUid).upstreamNodes.add(node.$$uid);\n }\n } else if (handler.targetRef) {\n const targetRefNodeUid = targetRefMap.get(handler.targetRef);\n if (targetRefNodeUid) {\n nodesMap.get(node.$$uid).downstreamNodes.add(targetRefNodeUid);\n nodesMap.get(targetRefNodeUid).upstreamNodes.add(node.$$uid);\n }\n }\n if (handler.callback) {\n for (const callbackHandlers of Object.values(handler.callback)) {\n collectRelatedNodes(\n node,\n [].concat(callbackHandlers),\n nodesMap,\n targetMap,\n targetRefMap\n );\n }\n }\n }\n }\n}\n","import { cloneDeep, upperFirst } from \"lodash\";\nimport { normalizeBuilderNode } from \"@next-core/brick-utils\";\nimport { BuilderRouteOrBrickNode } from \"@next-core/brick-types\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { isBrickNode } from \"../assertions\";\n\nconst nodeIgnoreFields = [\"parent\", \"children\", \"graphInfo\", \"mountPoint\"];\n\nexport function getBuilderNode(\n nodeData: BuilderRouteOrBrickNode,\n nodeUid: number,\n isTemplateInternalNode?: boolean\n): BuilderRuntimeNode {\n const matchedSelectors: string[] = [];\n\n if (nodeData.brick) {\n matchedSelectors.push((nodeData.brick as string).replace(/\\./g, \"\\\\.\"));\n }\n\n const normalized = normalizeBuilderNode(nodeData);\n\n const jsonFieldsInBrick = [\"properties\", \"events\", \"lifeCycle\"];\n const parsedFields: [string, unknown][] = [];\n\n for (const field of jsonFieldsInBrick) {\n const parsed = cloneDeep(\n (normalized as Record<string, unknown>)?.[field]\n ) as Record<string, unknown>;\n parsedFields.push([`$$parsed${upperFirst(field)}`, parsed ?? {}]);\n\n if (\n field === \"properties\" &&\n parsed?.id &&\n typeof parsed.id === \"string\" &&\n // Ignore evaluations and placeholders,\n // E.g.: `<% QUERY.x %>` or `${QUERY.x}`.\n !/[<{]/.test(parsed.id)\n ) {\n matchedSelectors.push(`#${parsed.id}`);\n }\n }\n\n return Object.fromEntries(\n Object.entries(nodeData)\n .filter((entry) => !nodeIgnoreFields.includes(entry[0]))\n .concat([\n [\n \"alias\",\n nodeData.alias ??\n (isBrickNode(nodeData)\n ? nodeData.brick.split(\".\").pop()\n : undefined),\n ],\n [\"$$uid\", nodeUid],\n [\"$$matchedSelectors\", matchedSelectors],\n [\"$$isTemplateInternalNode\", isTemplateInternalNode],\n [\"$$normalized\", normalized],\n ])\n .concat(parsedFields)\n ) as BuilderRuntimeNode;\n}\n","import { sortBy } from \"lodash\";\nimport { hasOwnProperty } from \"@next-core/brick-utils\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderCustomTemplateNode,\n CustomTemplateProxyProperty,\n CustomTemplateProxyBasicProperty,\n Story,\n} from \"@next-core/brick-types\";\nimport { BuilderRuntimeEdge, BuilderRuntimeNode } from \"../interfaces\";\nimport { getBuilderNode } from \"./getBuilderNode\";\nimport { getUniqueNodeId } from \"./getUniqueNodeId\";\nimport { isBrickNode } from \"../assertions\";\n\nexport function getAppendingNodesAndEdges(\n nodeData: BuilderRouteOrBrickNode,\n nodeUid: number,\n templateSourceMap: Map<string, BuilderCustomTemplateNode>,\n storyList: Story[] = []\n): {\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n} {\n const nodes: BuilderRuntimeNode[] = [];\n const edges: BuilderRuntimeEdge[] = [];\n const walk = (\n nodeData: BuilderRouteOrBrickNode,\n currentUid: number,\n processedTemplateSet: Set<string>,\n isTemplateInternalNode?: boolean,\n inheritedTemplateRefToUid?: Map<string, number>\n ): void => {\n const builderNode = getBuilderNode(\n nodeData,\n currentUid,\n isTemplateInternalNode\n );\n nodes.push(builderNode);\n\n if (inheritedTemplateRefToUid && builderNode.ref) {\n inheritedTemplateRefToUid.set(builderNode.ref as string, currentUid);\n }\n\n let templateSource: BuilderCustomTemplateNode;\n\n if (\n isBrickNode(builderNode) &&\n ((!builderNode.brick.includes(\".\") &&\n builderNode.brick.startsWith(\"tpl-\") &&\n !processedTemplateSet.has(builderNode.brick) &&\n (templateSource = templateSourceMap?.get(builderNode.brick)) &&\n templateSource.children?.length > 0) ||\n (builderNode.brick.includes(\".tpl-\") &&\n (templateSource = storyList?.find(\n (item) => item.storyId === builderNode.brick\n )?.originData) &&\n templateSource.children?.length > 0))\n ) {\n // Avoid nesting the same templates.\n processedTemplateSet.add(builderNode.brick);\n builderNode.$$isExpandableTemplate = true;\n builderNode.$$templateProxy =\n templateSource.proxy && JSON.parse(templateSource.proxy);\n const templateRefToUid = new Map<string, number>();\n builderNode.$$templateRefToUid = templateRefToUid;\n\n const sortedChildren = sortBy(templateSource.children, [\n (item) => item.sort ?? -Infinity,\n ]);\n sortedChildren.forEach((child, index) => {\n const childUid = getUniqueNodeId();\n walk(\n child,\n childUid,\n // Each child should be a branch.\n new Set(processedTemplateSet),\n true,\n templateRefToUid\n );\n edges.push({\n child: childUid,\n parent: currentUid,\n mountPoint: \"\",\n sort: index,\n $$isTemplateInternal: true,\n });\n });\n\n if (!builderNode.$$isTemplateInternalNode) {\n // Here all internal nodes of the template including nested templates are ready.\n const processDelegatingSlots = (\n cursorNode: BuilderRuntimeNode,\n mountPoint?: string,\n rootMountPoint?: string\n ): void => {\n if (cursorNode.$$templateProxy?.slots) {\n const slotEntries = Object.entries(\n cursorNode.$$templateProxy?.slots\n ).filter(\n (entry) => mountPoint === undefined || entry[0] === mountPoint\n );\n for (const [slotName, slotConf] of slotEntries) {\n const refUid = cursorNode.$$templateRefToUid.get(slotConf.ref);\n if (refUid) {\n const refNode = nodes.find((node) => node.$$uid === refUid);\n if (refNode.$$isExpandableTemplate) {\n processDelegatingSlots(refNode, slotConf.refSlot, slotName);\n } else {\n if (!refNode.$$delegatedSlots) {\n refNode.$$delegatedSlots = new Map();\n }\n let delegatedSlotsByRefSlot = refNode.$$delegatedSlots.get(\n slotConf.refSlot\n );\n if (!delegatedSlotsByRefSlot) {\n delegatedSlotsByRefSlot = [];\n refNode.$$delegatedSlots.set(\n slotConf.refSlot,\n delegatedSlotsByRefSlot\n );\n }\n delegatedSlotsByRefSlot.push({\n templateUid: builderNode.$$uid,\n templateMountPoint: rootMountPoint || slotName,\n });\n }\n }\n }\n }\n };\n processDelegatingSlots(builderNode);\n\n const processDelegatingProperties = (\n cursorNode: BuilderRuntimeNode,\n previousPropertyName?: string\n ): void => {\n if (cursorNode.$$templateProxy?.properties) {\n const propertyEntries = Object.entries(\n cursorNode.$$templateProxy?.properties\n ).filter(\n (entry) =>\n previousPropertyName === undefined ||\n entry[0] === previousPropertyName\n );\n for (const [propertyName, propertyConf] of propertyEntries) {\n if (\n hasOwnProperty(cursorNode.$$parsedProperties, propertyName) &&\n isBasicRefProperty(propertyConf)\n ) {\n const refUid = cursorNode.$$templateRefToUid.get(\n propertyConf.ref\n );\n const propertyValue =\n cursorNode.$$parsedProperties[propertyName];\n if (refUid) {\n const refNode = nodes.find((node) => node.$$uid === refUid);\n refNode.$$parsedProperties[propertyConf.refProperty] =\n propertyValue;\n if (refNode.$$isExpandableTemplate) {\n processDelegatingProperties(\n refNode,\n propertyConf.refProperty\n );\n }\n }\n }\n }\n }\n };\n processDelegatingProperties(builderNode);\n }\n }\n\n if (Array.isArray(nodeData.children)) {\n // For routes and custom-templates, their children are fixed\n // and mount points should be ignored. To unify tree edge\n // data structure, just override their mount points.\n let overrideChildrenMountPoint: string;\n switch (builderNode.type) {\n case \"bricks\":\n case \"custom-template\":\n overrideChildrenMountPoint = \"bricks\";\n break;\n case \"routes\":\n overrideChildrenMountPoint = \"routes\";\n break;\n }\n const sortedChildren = sortBy(nodeData.children, [\n (item) => item.sort ?? -Infinity,\n ]);\n sortedChildren.forEach((child, index) => {\n const childUid = getUniqueNodeId();\n walk(\n child,\n childUid,\n // Each child should be a branch.\n new Set(processedTemplateSet),\n isTemplateInternalNode,\n inheritedTemplateRefToUid\n );\n edges.push({\n child: childUid,\n parent: currentUid,\n mountPoint: overrideChildrenMountPoint ?? child.mountPoint,\n sort: index,\n $$isTemplateInternal: isTemplateInternalNode,\n $$isTemplateDelegated: builderNode.$$isExpandableTemplate,\n });\n });\n }\n };\n walk(nodeData, nodeUid, new Set());\n return {\n nodes,\n edges,\n };\n}\n\nexport function isBasicRefProperty(\n propRef: CustomTemplateProxyProperty\n): propRef is CustomTemplateProxyBasicProperty {\n return (\n !!(propRef as CustomTemplateProxyBasicProperty).ref &&\n !!(propRef as CustomTemplateProxyBasicProperty).refProperty\n );\n}\n","import { BuilderRuntimeNode } from \"../interfaces\";\n\nexport function isParentExpandableTemplate(\n nodes: BuilderRuntimeNode[],\n parentUid: number\n): boolean {\n return nodes.find((node) => node.$$uid === parentUid).$$isExpandableTemplate;\n}\n","import { omit } from \"lodash\";\nimport EventTarget from \"@ungap/event-target\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderRouteNode,\n Story,\n BuilderCustomTemplateNode,\n} from \"@next-core/brick-types\";\nimport { JsonStorage } from \"@next-core/brick-utils\";\nimport {\n AbstractBuilderDataManager,\n BuilderCanvasData,\n BuilderContextMenuStatus,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n EventDetailOfNodeAdd,\n EventDetailOfNodeAddStored,\n EventDetailOfNodeMove,\n EventDetailOfNodeReorder,\n EventDetailOfContextUpdated,\n SnippetNodeDetail,\n EventDetailOfSnippetApply,\n EventDetailOfSnippetApplyStored,\n SharedEditorConf,\n BuilderDroppingStatus,\n} from \"../interfaces\";\nimport { getBuilderNode } from \"./getBuilderNode\";\nimport { getUniqueNodeId } from \"./getUniqueNodeId\";\nimport { reorderBuilderEdges } from \"./reorderBuilderEdges\";\nimport { deleteNodeFromTree } from \"./deleteNodeFromTree\";\nimport {\n getRelatedNodesBasedOnEvents,\n RelatedNodesBasedOnEventsMap,\n} from \"../processors/getRelatedNodesBasedOnEvents\";\nimport { expandTemplateEdges } from \"./expandTemplateEdges\";\nimport { getAppendingNodesAndEdges } from \"./getAppendingNodesAndEdges\";\nimport { isParentExpandableTemplate } from \"./isParentExpandableTemplate\";\n\nenum BuilderInternalEventType {\n NODE_ADD = \"builder.node.add\",\n NODE_MOVE = \"builder.node.move\",\n NODE_REORDER = \"builder.node.reorder\",\n NODE_CLICK = \"builder.node.click\",\n SNIPPET_APPLY = \"builder.snippet.apply\",\n CONTEXT_MENU_CHANGE = \"builder.contextMenu.change\",\n DATA_CHANGE = \"builder.data.change\",\n SHARED_EDITOR_LIST_CHANGE = \"builder.sharedEditorList.change\",\n ROUTE_LIST_CHANGE = \"builder.routeList.change\",\n HOVER_NODE_CHANGE = \"builder.hoverNode.change\",\n SHOW_RELATED_NODES_BASED_ON_EVENTS = \"builder.showRelatedNodesBasedOnEvents.change\",\n HIGHLIGHT_NODES_CHANGE = \"builder.highlightNodes.change\",\n OUTLINE_DISABLED_NODES_CHANGE = \"builder.outlineDisabledNodes.change\",\n DROPPING_STATUS_CHANGE = \"builder.droppingStatus.change\",\n}\n\nconst storageKeyOfOutlineDisabledNodes = \"builder-outline-disabled-nodes\";\n\nexport class BuilderDataManager implements AbstractBuilderDataManager {\n private data: BuilderCanvasData = {\n rootId: null,\n nodes: [],\n edges: [],\n };\n\n private hoverNodeUid: number;\n\n private sharedEditorList: SharedEditorConf[];\n\n private routeList: BuilderRouteNode[];\n\n private storyList: Story[];\n\n private readonly eventTarget = new EventTarget();\n\n private contextMenuStatus: BuilderContextMenuStatus = {\n active: false,\n };\n\n private showRelatedNodesBasedOnEvents: boolean;\n\n private relatedNodesBasedOnEventsMap: RelatedNodesBasedOnEventsMap;\n\n private highlightNodes: Set<number> = new Set();\n\n private templateSourceMap: Map<string, BuilderCustomTemplateNode>;\n\n private droppingStatus: BuilderDroppingStatus = new Map();\n\n private readonly localJsonStorage = new JsonStorage<{\n [storageKeyOfOutlineDisabledNodes]: string[];\n }>(localStorage);\n\n private readonly outlineDisabledNodes: Set<string> = new Set(\n this.localJsonStorage.getItem(storageKeyOfOutlineDisabledNodes) ?? []\n );\n\n getData(): BuilderCanvasData {\n return this.data;\n }\n\n getContextMenuStatus(): BuilderContextMenuStatus {\n return this.contextMenuStatus;\n }\n\n getRelatedNodesBasedOnEventsMap(): RelatedNodesBasedOnEventsMap {\n return this.relatedNodesBasedOnEventsMap;\n }\n\n sharedEditorListInit(data: SharedEditorConf[]): void {\n this.sharedEditorList = data;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE)\n );\n }\n\n getSharedEditorList(): SharedEditorConf[] {\n return this.sharedEditorList ?? [];\n }\n\n onSharedEditorListChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE,\n fn\n );\n };\n }\n\n routeListInit(data: BuilderRouteNode[]): void {\n this.routeList = data;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.ROUTE_LIST_CHANGE)\n );\n }\n\n getRouteList(): BuilderRouteNode[] {\n return this.routeList ?? [];\n }\n\n storyListInit(data: Story[]): void {\n this.storyList = data;\n }\n\n getStoryList(): Story[] {\n return this.storyList;\n }\n\n onRouteListChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.ROUTE_LIST_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.ROUTE_LIST_CHANGE,\n fn\n );\n };\n }\n\n dataInit(\n root: BuilderRuntimeNode,\n templateSourceMap?: Map<string, BuilderCustomTemplateNode>\n ): void {\n this.templateSourceMap = templateSourceMap;\n const rootId = getUniqueNodeId();\n const newData = {\n rootId,\n ...getAppendingNodesAndEdges(\n root,\n rootId,\n templateSourceMap,\n this.storyList\n ),\n };\n this.data = {\n ...newData,\n edges: expandTemplateEdges(newData),\n };\n this.triggerDataChange();\n }\n\n private triggerDataChange(): void {\n const { rootId, nodes } = this.data;\n const rootNode = nodes.find((node) => node.$$uid === rootId);\n const rootNodeIsCustomTemplate = rootNode.type === \"custom-template\";\n this.relatedNodesBasedOnEventsMap = getRelatedNodesBasedOnEvents(\n nodes,\n rootNodeIsCustomTemplate\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.DATA_CHANGE)\n );\n }\n\n runAddNodeAction = (detail: EventDetailOfNodeAdd) => {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData } = detail;\n\n const { nodes: addNodes, edges: addEdges } = getAppendingNodesAndEdges(\n omit(nodeData, [\n \"parent\",\n ]) as Partial<BuilderRouteOrBrickNode> as BuilderRouteOrBrickNode,\n nodeUid,\n this.templateSourceMap,\n this.getStoryList()\n );\n\n const newNodes = nodes.concat(addNodes);\n const newEdges = edges\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n })\n .concat(addEdges);\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n };\n\n updateBrick(detail: EventDetailOfNodeAdd) {\n this.data = deleteNodeFromTree(detail.nodeUid, this.data);\n\n this.runAddNodeAction(detail);\n }\n\n nodeAdd(detail: EventDetailOfNodeAdd): void {\n this.runAddNodeAction(detail);\n\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_ADD, { detail })\n );\n }\n\n nodeAddStored(detail: EventDetailOfNodeAddStored): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, nodeData } = detail;\n this.data = {\n rootId,\n nodes: nodes.map((node) =>\n node.$$uid === nodeUid\n ? { ...node, id: nodeData.id, instanceId: nodeData.instanceId }\n : node\n ),\n edges,\n };\n this.triggerDataChange();\n }\n\n snippetApply(detail: EventDetailOfSnippetApply): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeDetails, parentUid, nodeUids } = detail;\n\n const newNodes: BuilderRuntimeNode[] = nodes.slice();\n const newEdges: BuilderRuntimeEdge[] = edges.slice();\n\n const walk = ({\n parentUid,\n nodeUid,\n nodeData,\n children,\n }: SnippetNodeDetail): void => {\n const { nodes: appendingNodes, edges: appendingEdges } =\n getAppendingNodesAndEdges(\n omit(nodeData, [\n \"parent\",\n ]) as Partial<BuilderRouteOrBrickNode> as BuilderRouteOrBrickNode,\n nodeUid,\n this.templateSourceMap,\n this.storyList\n );\n newNodes.push(...appendingNodes);\n newEdges.push(\n {\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: nodeData.sort,\n $$isTemplateDelegated: isParentExpandableTemplate(\n newNodes,\n parentUid\n ),\n },\n ...appendingEdges\n );\n for (const item of children) {\n walk(item);\n }\n };\n\n for (const item of nodeDetails) {\n walk(item);\n }\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.SNIPPET_APPLY, { detail })\n );\n }\n\n snippetApplyStored(detail: EventDetailOfSnippetApplyStored): void {\n const { rootId, nodes, edges } = this.data;\n const { flattenNodeDetails } = detail;\n this.data = {\n rootId,\n nodes: nodes.map((node) => {\n const found = flattenNodeDetails.find((n) => n.nodeUid === node.$$uid);\n return found\n ? {\n ...node,\n id: found.nodeData.id,\n instanceId: found.nodeData.instanceId,\n }\n : node;\n }),\n edges,\n };\n this.triggerDataChange();\n }\n\n nodeMove(detail: EventDetailOfNodeMove): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData } = detail;\n const newData = {\n rootId,\n nodes,\n edges: edges\n .filter((edge) => edge.child !== nodeUid)\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n }),\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_MOVE, { detail })\n );\n }\n\n contextUpdated(detail: EventDetailOfContextUpdated): void {\n const { rootId, nodes, edges } = this.data;\n this.data = {\n rootId,\n edges,\n nodes: nodes.map((node) =>\n node.$$uid === rootId ? { ...node, context: detail.context } : node\n ),\n };\n this.triggerDataChange();\n }\n\n nodeReorder(detail: EventDetailOfNodeReorder): void {\n const { nodeUids, parentUid } = detail;\n this.data = {\n ...this.data,\n edges: reorderBuilderEdges(this.data, { parentUid, nodeUids }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_REORDER, { detail })\n );\n }\n\n nodeDelete(detail: BuilderRuntimeNode): void {\n this.data = deleteNodeFromTree(detail.$$uid, this.data);\n this.triggerDataChange();\n }\n\n nodeClick(detail: BuilderRuntimeNode): void {\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_CLICK, { detail })\n );\n }\n\n contextMenuChange(detail: BuilderContextMenuStatus): void {\n this.contextMenuStatus = detail;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.CONTEXT_MENU_CHANGE)\n );\n }\n\n onDataChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(BuilderInternalEventType.DATA_CHANGE, fn);\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.DATA_CHANGE,\n fn\n );\n };\n }\n\n onNodeAdd(\n fn: (event: CustomEvent<EventDetailOfNodeAdd>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_ADD,\n fn as EventListener\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_ADD,\n fn as EventListener\n );\n };\n }\n\n onSnippetApply(\n fn: (event: CustomEvent<EventDetailOfSnippetApply>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SNIPPET_APPLY,\n fn as EventListener\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SNIPPET_APPLY,\n fn as EventListener\n );\n };\n }\n\n onNodeReorder(\n fn: (event: CustomEvent<EventDetailOfNodeReorder>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_REORDER,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_REORDER,\n fn as EventListener\n );\n };\n }\n\n onNodeMove(\n fn: (event: CustomEvent<EventDetailOfNodeMove>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_MOVE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_MOVE,\n fn as EventListener\n );\n };\n }\n\n onNodeClick(\n fn: (event: CustomEvent<BuilderRuntimeNode>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n };\n }\n\n onContextMenuChange(\n fn: (event: CustomEvent<BuilderContextMenuStatus>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n };\n }\n\n setShowRelatedNodesBasedOnEvents(show: boolean): void {\n this.showRelatedNodesBasedOnEvents = show;\n this.eventTarget.dispatchEvent(\n new CustomEvent(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS\n )\n );\n }\n\n getShowRelatedNodesBasedOnEvents(): boolean {\n return this.showRelatedNodesBasedOnEvents;\n }\n\n onShowRelatedNodesBasedOnEventsChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n };\n }\n\n setHoverNodeUid(uid: number): void {\n if (this.hoverNodeUid !== uid) {\n this.hoverNodeUid = uid;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.HOVER_NODE_CHANGE)\n );\n }\n }\n\n getHoverNodeUid(): number {\n return this.hoverNodeUid;\n }\n\n onHoverNodeChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n };\n }\n\n toggleOutline(nodeInstanceId: string): void {\n if (this.outlineDisabledNodes.has(nodeInstanceId)) {\n this.outlineDisabledNodes.delete(nodeInstanceId);\n } else {\n this.outlineDisabledNodes.add(nodeInstanceId);\n }\n this.localJsonStorage.setItem(\n storageKeyOfOutlineDisabledNodes,\n Array.from(this.outlineDisabledNodes)\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE)\n );\n }\n\n isOutlineEnabled(nodeInstanceId: string): boolean {\n return !this.outlineDisabledNodes.has(nodeInstanceId);\n }\n\n onOutlineEnabledNodesChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE,\n fn\n );\n };\n }\n\n setHighlightNodes(nodeUids: Set<number>): void {\n this.highlightNodes = nodeUids;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE)\n );\n }\n\n getHighlightNodes(): Set<number> {\n return this.highlightNodes;\n }\n\n onHighlightNodesChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE,\n fn\n );\n };\n }\n\n updateDroppingStatus(\n nodeUid: number,\n mountPoint: string,\n isDraggingOver: boolean\n ): void {\n const nodeStatus = this.droppingStatus.get(nodeUid);\n this.droppingStatus = new Map(\n Array.from(this.droppingStatus.entries()).concat([\n [\n nodeUid,\n new Map(\n (nodeStatus ? Array.from(nodeStatus) : []).concat([\n [mountPoint, isDraggingOver],\n ])\n ),\n ],\n ])\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.DROPPING_STATUS_CHANGE)\n );\n\n // When dragging nodes over `EditorContainer`, the `mouseout` events\n // are not triggered, which causes hover status does not get cleared.\n // So we manually reset hover status once dragging starts.\n if (\n this.hoverNodeUid &&\n Array.from(this.droppingStatus.values())\n .flatMap((nodeStatus) => Array.from(nodeStatus.values()))\n .some(Boolean)\n ) {\n this.setHoverNodeUid(undefined);\n }\n }\n\n getDroppingStatus(): BuilderDroppingStatus {\n return this.droppingStatus;\n }\n\n onDroppingStatusChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.DROPPING_STATUS_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.DROPPING_STATUS_CHANGE,\n fn\n );\n };\n }\n}\n","import React from \"react\";\nimport { BuilderDataManager } from \"./internal/BuilderDataManager\";\n\nexport interface ContextOfBuilder {\n manager?: BuilderDataManager;\n}\n\nexport const BuilderContext = React.createContext<ContextOfBuilder>({});\n\nexport function createBuilderContext(): ContextOfBuilder {\n return {\n manager: new BuilderDataManager(),\n };\n}\n","import React from \"react\";\nimport { BuilderContext } from \"../BuilderContext\";\nimport { BuilderDataManager } from \"../internal/BuilderDataManager\";\n\nexport function useBuilderDataManager(): BuilderDataManager {\n const { manager } = React.useContext(BuilderContext);\n if (!manager) {\n throw new Error(\"Expected builder data context\");\n }\n return manager;\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderCanvasData } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useBuilderData(): BuilderCanvasData {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getData());\n useEffect(\n () =>\n manager.onDataChange(() => {\n setData(manager.getData());\n }),\n [manager]\n );\n return data;\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderNode<P = Record<string, unknown>>({\n nodeUid,\n isRoot,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n}): BuilderRuntimeNode<P> {\n const { rootId, nodes } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(\n () =>\n nodes.find((node) => node.$$uid === currentUid) as BuilderRuntimeNode<P>,\n [nodes, currentUid]\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderContextMenuStatus } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useBuilderContextMenuStatus(): BuilderContextMenuStatus {\n const manager = useBuilderDataManager();\n const [status, setStatus] = useState(manager.getContextMenuStatus());\n useEffect(\n () =>\n manager.onContextMenuChange(() => {\n setStatus(manager.getContextMenuStatus());\n }),\n [manager]\n );\n return status;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useShowRelatedNodesBasedOnEvents(): boolean {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getShowRelatedNodesBasedOnEvents());\n useEffect(\n () =>\n manager.onShowRelatedNodesBasedOnEventsChange(() => {\n setData(manager.getShowRelatedNodesBasedOnEvents());\n }),\n [manager]\n );\n return data;\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import editorContainerStyles from \"./EditorContainer.module.css\";\n\nexport function isCurrentTargetByClassName(\n targetElement: HTMLElement,\n currentElement: HTMLElement\n): boolean {\n // Traverse DOM from bottom to top.\n let element = targetElement;\n while (element) {\n if (element === currentElement) {\n return true;\n }\n if (\n element.classList.contains(editorContainerStyles.editorContainer) &&\n !element.classList.contains(editorContainerStyles.isTemplateInternalNode)\n ) {\n // It's not the current target if\n // matches another editor container first.\n return false;\n }\n element = element.parentElement;\n }\n return false;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useHoverNodeUid(): number {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getHoverNodeUid());\n useEffect(\n () =>\n manager.onHoverNodeChange(() => {\n setData(manager.getHoverNodeUid());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useHighlightNodes(): Set<number> {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getHighlightNodes());\n useEffect(\n () =>\n manager.onHighlightNodesChange(() => {\n setData(manager.getHighlightNodes());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderDroppingStatus } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useDroppingStatus(): BuilderDroppingStatus {\n const manager = useBuilderDataManager();\n const [droppingStatus, setDroppingStatus] = useState(\n manager.getDroppingStatus()\n );\n useEffect(\n () =>\n manager.onDroppingStatusChange(() => {\n setDroppingStatus(manager.getDroppingStatus());\n }),\n [manager]\n );\n return droppingStatus;\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { EditorBrickType } from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport { useBuilderDataManager } from \"../hooks/useBuilderDataManager\";\nimport { useBuilderContextMenuStatus } from \"../hooks/useBuilderContextMenuStatus\";\nimport { useShowRelatedNodesBasedOnEvents } from \"../hooks/useShowRelatedNodesBasedOnEvents\";\nimport { isCurrentTargetByClassName } from \"./isCurrentTargetByClassName\";\nimport { useHoverNodeUid } from \"../hooks/useHoverNodeUid\";\nimport { useHighlightNodes } from \"../hooks/useHighlightNodes\";\nimport { useDroppingStatus } from \"../hooks/useDroppingStatus\";\n\nimport styles from \"./EditorContainer.module.css\";\n\ninterface EditorContainerProps {\n nodeUid: number;\n type?: EditorBrickType;\n isTransparentContainer?: boolean;\n editorContainerStyle?: React.CSSProperties;\n editorBodyStyle?: React.CSSProperties;\n}\n\nexport function EditorContainer({\n nodeUid,\n type,\n isTransparentContainer,\n editorContainerStyle,\n editorBodyStyle,\n children,\n}: React.PropsWithChildren<EditorContainerProps>): React.ReactElement {\n const editorContainerRef = useRef<HTMLDivElement>();\n const highlightNodes = useHighlightNodes();\n const node = useBuilderNode({ nodeUid });\n const [isUpstreamNode, setIsUpstreamNode] = useState(false);\n const [isDownstreamNode, setIsDownstreamNode] = useState(false);\n const contextMenuStatus = useBuilderContextMenuStatus();\n const hoverNodeUid = useHoverNodeUid();\n const showRelatedEvents = useShowRelatedNodesBasedOnEvents();\n const manager = useBuilderDataManager();\n const [hover, setHover] = useState(hoverNodeUid === nodeUid);\n const editorType = type ?? EditorBrickType.DEFAULT;\n const hoverNodeUidRef = useRef(hoverNodeUid);\n const droppingStatus = useDroppingStatus();\n\n useEffect(() => {\n hoverNodeUidRef.current = hoverNodeUid;\n }, [hoverNodeUid]);\n\n const handleMouseOver = useCallback(\n (event: MouseEvent) => {\n event.stopPropagation();\n setHover(true);\n if (hoverNodeUidRef.current !== nodeUid) {\n manager.setHoverNodeUid(nodeUid);\n }\n },\n [nodeUid, manager]\n );\n\n const handleMouseOut = useCallback(\n (event: MouseEvent) => {\n event.stopPropagation();\n setHover(false);\n if (hoverNodeUidRef.current === nodeUid) {\n manager.setHoverNodeUid(undefined);\n }\n },\n [nodeUid, manager]\n );\n\n useEffect(() => {\n if (node.$$isTemplateInternalNode) {\n return;\n }\n // Manually bind listeners since events which cross custom-elements\n // seem not working in React v16.\n const editorContainer = editorContainerRef.current;\n editorContainer.addEventListener(\"mouseover\", handleMouseOver);\n editorContainer.addEventListener(\"mouseout\", handleMouseOut);\n return () => {\n editorContainer.removeEventListener(\"mouseover\", handleMouseOver);\n editorContainer.removeEventListener(\"mouseout\", handleMouseOut);\n };\n }, [handleMouseOver, handleMouseOut, node]);\n\n useEffect(() => {\n if (node.$$isTemplateInternalNode) {\n return;\n }\n setHover(hoverNodeUid === nodeUid);\n if (showRelatedEvents) {\n const relatedNodes = manager.getRelatedNodesBasedOnEventsMap();\n const isUpstreamNode = relatedNodes\n .get(hoverNodeUid)\n ?.upstreamNodes.has(nodeUid);\n setIsUpstreamNode(isUpstreamNode);\n const isDownstreamNode = relatedNodes\n .get(hoverNodeUid)\n ?.downstreamNodes.has(nodeUid);\n setIsDownstreamNode(isDownstreamNode);\n }\n }, [hoverNodeUid, node, nodeUid, showRelatedEvents, manager]);\n\n const isCurrentTarget = useCallback(\n (event: React.MouseEvent) =>\n !node.$$isTemplateInternalNode &&\n isCurrentTargetByClassName(\n event.target as HTMLElement,\n editorContainerRef.current\n ),\n [node]\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (isCurrentTarget(event)) {\n manager.nodeClick(node);\n }\n },\n [isCurrentTarget, manager, node]\n );\n\n const handleContextMenu = useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (isCurrentTarget(event)) {\n event.preventDefault();\n manager.contextMenuChange({\n active: true,\n node,\n x: event.clientX,\n y: event.clientY,\n });\n }\n },\n [isCurrentTarget, manager, node]\n );\n\n return (\n <div\n className={classNames(styles.editorContainer, styles[editorType], {\n [styles.transparentContainer]: isTransparentContainer,\n [styles.dropping]: Array.from(\n droppingStatus.get(nodeUid)?.values() ?? []\n ).some(Boolean),\n [styles.hover]: hover,\n [styles.active]:\n contextMenuStatus.active && contextMenuStatus.node.$$uid === nodeUid,\n [styles.isDownstreamNode]: !hover && isDownstreamNode,\n [styles.isUpstreamNode]: !hover && isUpstreamNode,\n [styles.highlight]: highlightNodes.has(nodeUid),\n [styles.isTemplateInternalNode]: node.$$isTemplateInternalNode,\n })}\n style={editorContainerStyle}\n ref={editorContainerRef}\n onClick={handleClick}\n onContextMenu={handleContextMenu}\n >\n <div className={styles.nodeAlias}>\n {!hover &&\n (isDownstreamNode ? (\n <span className={styles.arrow}>↓</span>\n ) : isUpstreamNode ? (\n <span className={styles.arrow}>↑</span>\n ) : null)}\n {node.alias || node.brick}\n </div>\n <div className={styles.editorBody} style={editorBodyStyle}>\n {children}\n </div>\n </div>\n );\n}\n","import { developHelper } from \"@next-core/brick-kit\";\nimport { isBrickNode, isRouteNode } from \"../assertions\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\n\nconst ANY_BRICK_EDITOR = \"basic-bricks.any-brick--editor\";\nconst ANY_ROUTE_EDITOR = \"basic-bricks.any-route--editor\";\n\n/**\n * Get editor brick name by node.\n *\n * @param node - Builder node.\n * @param editor - Using shared editor.\n *\n * @returns\n *\n * Returns editor brick name if the node is a brick, will fallback to `basic-bricks.any-brick--editor`\n * if the relevant editor brick is not found.\n *\n * Or returns `basic-bricks.any-route--editor` if the node is a route.\n *\n * And returns undefined if load failed.\n */\nexport async function getEditorBrick(\n node: BuilderRuntimeNode,\n editor?: string\n): Promise<string> {\n const tryEditorBricks: string[] = [];\n if (isRouteNode(node)) {\n tryEditorBricks.push(ANY_ROUTE_EDITOR);\n } else if (isBrickNode(node)) {\n if (node.brick.includes(\"-\")) {\n tryEditorBricks.push(`${node.brick}--editor`);\n }\n\n if (editor) {\n tryEditorBricks.push(editor);\n }\n\n tryEditorBricks.push(ANY_BRICK_EDITOR);\n } else {\n // Currently there should be no custom-template nodes to be rendered as editor.\n throw new Error(`Unsupported node type: ${node.type}`);\n }\n\n for (const editorBrick of tryEditorBricks) {\n try {\n await developHelper.loadEditorBricks([editorBrick]);\n } catch (error) {\n throw new Error(`Load editor brick \"${editorBrick}\" failed`);\n }\n if (customElements.get(editorBrick)) {\n return editorBrick;\n }\n }\n\n throw new Error(`Editor brick \"${tryEditorBricks.join(\", \")}\" not found`);\n}\n","import { useMemo } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\nimport { Story } from \"@next-core/brick-types\";\n\nexport function useStoryList(): Story[] {\n const manager = useBuilderDataManager();\n const data = useMemo(() => manager.getStoryList(), [manager]);\n\n return data;\n}\n","import { BuilderRuntimeNode } from \"../interfaces\";\nimport { Story, StoryDoc } from \"@next-core/brick-types\";\n\nexport function getBrickDoc(\n node: BuilderRuntimeNode,\n storyList: Story[]\n): StoryDoc {\n const find = storyList?.find((item) => item.storyId === node.brick);\n\n return find?.doc as StoryDoc;\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\nimport { SharedEditorConf } from \"../interfaces\";\n\nexport function useSharedEditorMap(): Map<string, SharedEditorConf> {\n const manager = useBuilderDataManager();\n\n const getSharedEditorMap = useCallback(\n (): Map<string, SharedEditorConf> =>\n new Map(manager.getSharedEditorList().map((conf) => [conf.id, conf])),\n [manager]\n );\n\n const [data, setData] = useState(getSharedEditorMap());\n\n useEffect(\n () =>\n manager.onSharedEditorListChange(() => {\n setData(getSharedEditorMap());\n }),\n [getSharedEditorMap, manager]\n );\n\n return data;\n}\n","import React, { useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { useDrag } from \"react-dnd\";\nimport { BrickAsComponent, getRuntime } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { getEditorBrick } from \"./getEditorBrick\";\nimport {\n BuilderDataTransferType,\n BuilderRuntimeNode,\n EditorSelfLayout,\n EditorSlotContentLayout,\n} from \"../interfaces\";\nimport { EditorBrickElementConstructor } from \"../EditorElementFactory\";\nimport { useBuilderData } from \"../hooks/useBuilderData\";\nimport { useStoryList } from \"../hooks/useStoryList\";\nimport { getBrickDoc } from \"./getBrickDoc\";\nimport { useSharedEditorMap } from \"../hooks/useSharedEditorMap\";\nimport { isBrickNode } from \"../assertions\";\n\nimport styles from \"./EditorBrickAsComponent.module.css\";\n\ninterface EditorBrickAsComponentProps {\n node: BuilderRuntimeNode;\n slotContentLayout?: EditorSlotContentLayout;\n}\n\nexport function EditorBrickAsComponent({\n node,\n slotContentLayout,\n}: EditorBrickAsComponentProps): React.ReactElement {\n const [initialized, setInitialized] = React.useState(false);\n const [editorBrick, setEditorBrick] = React.useState<string>();\n const [loadEditorError, setLoadEditorError] = React.useState<string>();\n const { edges } = useBuilderData();\n const storyList = useStoryList();\n const hasChildren = React.useMemo(\n () => edges.some((edge) => edge.parent === node.$$uid),\n [node, edges]\n );\n\n const installedBricksEnabled = useMemo(\n () => getRuntime().getFeatureFlags()[\"next-builder-installed-bricks\"],\n []\n );\n\n const brickDoc = useMemo(\n () => (installedBricksEnabled ? null : getBrickDoc(node, storyList)),\n [installedBricksEnabled, node, storyList]\n );\n\n const editorMap = useSharedEditorMap();\n const editorConf = useMemo(\n () =>\n installedBricksEnabled && isBrickNode(node)\n ? editorMap.get(node.brick)\n : null,\n [editorMap, installedBricksEnabled, node]\n );\n\n React.useEffect(() => {\n (async () => {\n setInitialized(false);\n let editorName: string;\n let editorError: string;\n try {\n editorName = await getEditorBrick(\n node,\n installedBricksEnabled ? editorConf?.editor : brickDoc?.editor\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n editorError = (error as Error).message;\n }\n setEditorBrick(editorName);\n setLoadEditorError(editorError);\n setInitialized(true);\n })();\n }, [brickDoc, editorConf, installedBricksEnabled, node]);\n\n const brickConf = React.useMemo<UseBrickConf>(\n () => ({\n brick: editorBrick,\n properties: {\n nodeUid: node.$$uid,\n editorProps: installedBricksEnabled\n ? editorConf?.editorProps\n : brickDoc?.editorProps,\n },\n }),\n [brickDoc, editorBrick, editorConf, installedBricksEnabled, node.$$uid]\n );\n\n const selfLayout = React.useMemo(() => {\n let layout: EditorSelfLayout;\n if (initialized && editorBrick) {\n const editorConstructor = customElements.get(\n editorBrick\n ) as EditorBrickElementConstructor;\n layout = editorConstructor.selfLayout;\n }\n // For bricks with no editors, display as a container if it has children.\n return (\n layout ??\n (hasChildren ? EditorSelfLayout.CONTAINER : EditorSelfLayout.INLINE)\n );\n }, [initialized, editorBrick, hasChildren]);\n\n const [{ isDragging }, dragRef] = useDrag({\n item: {\n type: BuilderDataTransferType.NODE_TO_MOVE,\n nodeUid: node.$$uid,\n nodeInstanceId: node.instanceId,\n nodeId: node.id,\n },\n options: {\n dropEffect: \"move\",\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n return initialized ? (\n editorBrick ? (\n <div\n className={classNames({\n [styles.slotContentLayoutBlock]:\n slotContentLayout === EditorSlotContentLayout.BLOCK,\n [styles.slotContentLayoutInline]:\n slotContentLayout === EditorSlotContentLayout.INLINE,\n // [styles.slotContentLayoutGrid]: slotContentLayout === EditorSlotContentLayout.GRID,\n [styles.selfLayoutInline]: selfLayout === EditorSelfLayout.INLINE,\n [styles.selfLayoutBlock]: selfLayout === EditorSelfLayout.BLOCK,\n [styles.selfLayoutContainer]:\n selfLayout === EditorSelfLayout.CONTAINER,\n [styles.dragging]: isDragging,\n __isTemplateInternalNode: node.$$isTemplateInternalNode,\n })}\n >\n <div\n ref={node.$$isTemplateInternalNode ? undefined : dragRef}\n draggable={!node.$$isTemplateInternalNode}\n className={classNames({\n [styles.baseView]:\n node.brick === \"basic-bricks.micro-view\" ||\n node.brick === \"basic-bricks.micro-app\" ||\n node.brick === \"basic-bricks.easy-view\",\n })}\n >\n <BrickAsComponent useBrick={brickConf} />\n </div>\n </div>\n ) : (\n <span>{loadEditorError}</span>\n )\n ) : (\n <span>Loading...</span>\n );\n}\n","import { useMemo } from \"react\";\nimport { sortBy } from \"lodash\";\nimport {\n BuilderGroupedChildNode,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n} from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n doNotExpandTemplates,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n}): BuilderGroupedChildNode[] {\n const { rootId, nodes, edges } = useBuilderData();\n return useMemo(\n () =>\n getBuilderGroupedChildNodes({\n nodes,\n edges,\n nodeUid: isRoot ? rootId : nodeUid,\n doNotExpandTemplates,\n }),\n [doNotExpandTemplates, edges, isRoot, nodeUid, nodes, rootId]\n );\n}\n\nexport function getBuilderGroupedChildNodes({\n nodeUid,\n nodes,\n edges,\n doNotExpandTemplates,\n}: {\n nodeUid: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n doNotExpandTemplates?: boolean;\n}): BuilderGroupedChildNode[] {\n const groups = new Map<string, BuilderRuntimeNode[]>();\n const relatedEdges = sortBy(\n edges.filter(\n (edge) =>\n edge.parent === nodeUid &&\n (doNotExpandTemplates\n ? !edge.$$isTemplateInternal\n : !edge.$$isTemplateDelegated)\n ),\n [(edge) => edge.sort]\n );\n for (const edge of relatedEdges) {\n const childNode = nodes.find((node) => node.$$uid === edge.child);\n if (groups.has(edge.mountPoint)) {\n groups.get(edge.mountPoint).push(childNode);\n } else {\n groups.set(edge.mountPoint, [childNode]);\n }\n }\n return Array.from(groups.entries()).map(([mountPoint, childNodes]) => ({\n mountPoint,\n childNodes,\n }));\n}\n","import { useCallback } from \"react\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport type CanDrop = (draggingUid: number, nodeUid: number) => boolean;\n\n/**\n * Returns whether the current dragging node can be dropped\n * in specific node.\n *\n * This is useful for checking available drop zone and preventing\n * dragging a node into its internal mount points.\n */\nexport function useCanDrop(): CanDrop {\n const { edges } = useBuilderData();\n return useCallback(\n (draggingUid: number, nodeUid: number) => {\n const traverse = (parentId: number): boolean => {\n if (parentId === nodeUid) {\n return false;\n }\n return !edges.some((edge) => {\n if (edge.parent === parentId) {\n return !traverse(edge.child);\n }\n return false;\n });\n };\n return traverse(draggingUid);\n },\n [edges]\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nexport interface DropPosition {\n rect: DropPositionRect;\n cursor: DropPositionCursor;\n}\n\nexport interface DropPositionRect {\n top: number;\n bottom: number;\n left: number;\n right: number;\n}\n\nexport interface DropPositionCursor {\n index: number;\n y: number;\n isVertical?: boolean;\n x?: number;\n height?: number;\n}\n\nexport interface DropGridRow {\n cells: DropGridCell[];\n top?: number;\n bottom?: number;\n // isInline?: boolean;\n}\n\nexport interface DropGridCell extends DropPositionRect {\n index: number;\n}\n\nconst defaultGapHalf = 6;\n\nexport function getDropPositions(\n dropZone: HTMLElement,\n dropZoneGrid: HTMLElement\n): DropPosition[] {\n const zoneRect = dropZone.getBoundingClientRect();\n // const gridRect = dropZoneGrid.getBoundingClientRect();\n const positions: DropPosition[] = [];\n const gridItemList = Array.from(dropZoneGrid.children).filter(\n (item) => !item.classList.contains(\"__isTemplateInternalNode\")\n );\n if (gridItemList.length > 0) {\n let currentRow: DropGridRow = {\n cells: [],\n };\n const rows: DropGridRow[] = [currentRow];\n gridItemList.forEach((gridItem, index) => {\n const rect = gridItem.getBoundingClientRect();\n const cell: DropGridCell = {\n index,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right,\n };\n const prevCell =\n currentRow.cells.length > 0 &&\n currentRow.cells[currentRow.cells.length - 1];\n if (\n !prevCell ||\n (compareApproximately(rect.left, prevCell.right) > 0 &&\n compareApproximately(rect.top, prevCell.bottom) < 0)\n ) {\n currentRow.cells.push(cell);\n currentRow.top = Math.min(currentRow.top ?? Infinity, rect.top);\n currentRow.bottom = Math.max(\n currentRow.bottom ?? -Infinity,\n rect.bottom\n );\n } else {\n currentRow = {\n cells: [cell],\n top: rect.top,\n bottom: rect.bottom,\n };\n rows.push(currentRow);\n }\n });\n // console.log(rows);\n\n let lastRectBottom = zoneRect.top;\n let nextCursorTop = zoneRect.top;\n rows.forEach((row, rowIndex) => {\n if (row.cells.length === 1) {\n const cell = row.cells[0];\n const rectBottom = (cell.top + cell.bottom) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index,\n y: (nextCursorTop + cell.top) / 2 - zoneRect.top,\n },\n });\n lastRectBottom = rectBottom;\n nextCursorTop = cell.bottom;\n\n // Append one more insert position after reached the end.\n if (rowIndex === rows.length - 1) {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: zoneRect.bottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index + 1,\n y:\n Math.min(\n cell.bottom + defaultGapHalf,\n (cell.bottom + zoneRect.bottom) / 2\n ) - zoneRect.top,\n },\n });\n } else if (rows[rowIndex + 1].cells.length > 1) {\n const nextRow = rows[rowIndex + 1];\n const rectBottom = (cell.bottom + nextRow.top) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index + 1,\n y: rectBottom - zoneRect.top,\n },\n });\n lastRectBottom = rectBottom;\n }\n } else {\n let lastRectRight = zoneRect.left;\n let nextCursorLeft = zoneRect.left;\n const rectBottom =\n rowIndex < rows.length - 1\n ? (rows[rowIndex + 1].top + row.bottom) / 2\n : zoneRect.bottom;\n const cursorDefault: Pick<\n DropPositionCursor,\n \"isVertical\" | \"y\" | \"height\"\n > = {\n isVertical: true,\n y: row.top - zoneRect.top,\n height: row.bottom - row.top,\n };\n row.cells.forEach((cell, cellIndex) => {\n const rectRight = (cell.left + cell.right) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: lastRectRight,\n right: rectRight,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index,\n x: (nextCursorLeft + cell.left) / 2 - zoneRect.left,\n },\n });\n lastRectRight = rectRight;\n nextCursorLeft = cell.right;\n\n // Append one more insert position after reached the row end.\n if (cellIndex === row.cells.length - 1) {\n if (rowIndex === rows.length - 1) {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: zoneRect.bottom,\n left: lastRectRight,\n right: zoneRect.right,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index + 1,\n x:\n Math.min(nextCursorLeft + defaultGapHalf, zoneRect.right) -\n zoneRect.left,\n },\n });\n } else {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: lastRectRight,\n right: zoneRect.right,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index + 1,\n x:\n Math.min(nextCursorLeft + defaultGapHalf, zoneRect.right) -\n zoneRect.left,\n },\n });\n }\n }\n });\n lastRectBottom = rectBottom;\n nextCursorTop = row.bottom;\n }\n });\n }\n return positions;\n}\n\nexport function getDropPosition(\n x: number,\n y: number,\n dropZone: HTMLElement,\n dropZoneGrid: HTMLElement\n): DropPositionCursor {\n const positions = getDropPositions(dropZone, dropZoneGrid);\n for (const { rect, cursor } of positions) {\n if (\n x >= rect.left &&\n x <= rect.right &&\n y >= rect.top &&\n y <= rect.bottom\n ) {\n // console.log((event.target as HTMLElement).tagName, cursor.isVertical, cursor.index);\n return cursor;\n }\n }\n\n return {\n index: 0,\n y: 5,\n };\n}\n\nfunction compareApproximately(a: number, b: number): number {\n const diff = a - b;\n return Math.abs(diff) < 1 ? 0 : diff;\n}\n","import { BuilderGroupedChildNode } from \"../interfaces\";\n\nexport interface SortedIdsAfterDropped {\n nodeUids: number[];\n nodeIds: string[];\n}\n\nexport interface DroppingInfo {\n draggingNodeUid: number | number[];\n draggingNodeId: string | null;\n draggingIndex?: number;\n droppingMountPoint: string;\n droppingSiblingGroups: BuilderGroupedChildNode[];\n droppingIndex: number;\n}\n\n/**\n * Get sorted uids and ids of all children of the dropping parent node.\n *\n * @remark\n *\n * When dropping a node from library (add a node) or from a position\n * to a new position (move a node), we only reorder the children of\n * the dropping mount point. But the reorder API requires to reorder\n * all the children of the dropping parent, which maybe across multiple\n * mount points. So we also keep the original order among sibling mount\n * points at the same time.\n *\n * `draggingNodeId` will be `null` when adding a node.\n *\n * Params `droppingInfo.droppingIndex` and `droppingInfo.draggingIndex`\n * is relative to the belonged mount point.\n *\n * And `droppingInfo.draggingIndex` is required when moving a node\n * inside a mount point.\n *\n * ```\n * ▸ micro-view\n * ├ toolbar\n * │ │ ←─ [0]\n * │ ├ button-a <0>\n * │ │ ←─ [1]\n * │ └ input-b <1>\n * │ ←─ [2]\n * └ content\n * │ ←─ [0]\n * ├ table-a <0>\n * │ ←─ [1]\n * ├ grid-b <1>\n * │ ←─ [2]\n * └ tabs-c <2>\n * ←─ [3]\n * <m>: draggingIndex\n * [n]: droppingIndex\n * ```\n *\n * @param droppingInfo - Dropping info.\n *\n * @returns Both sorted uids and ids.\n */\nexport function getSortedIdsAfterDropped(\n droppingInfo: DroppingInfo\n): SortedIdsAfterDropped {\n const {\n draggingNodeUid,\n draggingNodeId,\n draggingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n droppingIndex,\n } = droppingInfo;\n // When applying a snippet, the dragging nodes will be an array.\n const draggingNodeUids = Array.isArray(draggingNodeUid)\n ? draggingNodeUid\n : [draggingNodeUid];\n const fullChildNodes = droppingSiblingGroups.flatMap(\n (group) => group.childNodes\n );\n const nodeUids = droppingSiblingGroups.flatMap((group) => {\n const uids = group.childNodes\n .map((item) => item.$$uid)\n .filter((uid) => !draggingNodeUids.includes(uid));\n if (group.mountPoint === droppingMountPoint) {\n uids.splice(\n (draggingIndex ?? -1) >= 0 && droppingIndex > draggingIndex\n ? droppingIndex - 1\n : droppingIndex,\n 0,\n ...draggingNodeUids\n );\n }\n return uids;\n });\n const nodeIds = nodeUids.map((uid) =>\n draggingNodeUids.includes(uid)\n ? draggingNodeId\n : fullChildNodes.find((item) => item.$$uid === uid).id\n );\n return { nodeUids, nodeIds };\n}\n","import yaml from \"js-yaml\";\nimport { BrickConf } from \"@next-core/brick-types\";\nimport { SnippetNodeInstance } from \"../interfaces\";\n\nconst jsonFieldsInBrick = [\n \"properties\",\n \"events\",\n \"lifeCycle\",\n \"params\",\n \"if\",\n \"transform\",\n];\nconst yamlFieldsInBrick = [\"permissionsPreCheck\", \"transformFrom\"];\nconst ignoredFieldsInBrick = [\n \"brick\",\n \"template\",\n \"portal\",\n \"slots\",\n \"id\",\n \"children\",\n \"instanceId\",\n];\n\nexport interface ReverseNormalizeContext {\n isPortalCanvas: boolean;\n nodeData: {\n type: \"brick\" | \"template\" | \"provider\";\n parent: string;\n mountPoint: string;\n sort: number;\n };\n}\n\n// The reverse operation of *normalize*.\n// https://github.com/easyops-cn/next-basics/blob/5a6710d567821bcb4a0c71e22d55212193d8b0cb/bricks/next-builder/src/shared/storyboard/buildStoryboard.ts#L394\nexport function reverseNormalize(\n brickConf: BrickConf,\n ctx: ReverseNormalizeContext\n): SnippetNodeInstance {\n return Object.fromEntries(\n Object.entries(brickConf)\n .map<[string, unknown]>(([key, value]) =>\n value === undefined || ignoredFieldsInBrick.includes(key)\n ? undefined\n : jsonFieldsInBrick.includes(key)\n ? [key, JSON.stringify(value)]\n : yamlFieldsInBrick.includes(key)\n ? [key, yaml.safeDump(value)]\n : [key, value]\n )\n .filter(Boolean)\n .concat(Object.entries(ctx.nodeData), [\n [\n \"brick\",\n ctx.nodeData.type === \"template\"\n ? brickConf.template\n : brickConf.brick,\n ],\n [\"portal\", ctx.isPortalCanvas || brickConf.portal],\n ])\n ) as SnippetNodeInstance;\n}\n","import { BrickConf, SlotConfOfBricks } from \"@next-core/brick-types\";\nimport { SnippetNodeDetail } from \"../interfaces\";\nimport { getUniqueNodeId } from \"../internal/getUniqueNodeId\";\nimport { reverseNormalize } from \"./reverseNormalize\";\n\nexport function getSnippetNodeDetail({\n parent,\n parentUid,\n mountPoint,\n nodeUid,\n brickConf,\n isPortalCanvas,\n sort,\n}: {\n parent?: string;\n parentUid: number;\n mountPoint: string;\n nodeUid: number;\n brickConf: BrickConf;\n isPortalCanvas?: boolean;\n sort?: number;\n}): SnippetNodeDetail {\n const type = brickConf.template\n ? \"template\"\n : brickConf.bg\n ? \"provider\"\n : \"brick\";\n\n return {\n nodeUid,\n parentUid,\n nodeData: reverseNormalize(brickConf, {\n isPortalCanvas,\n nodeData: {\n type,\n parent,\n mountPoint,\n sort,\n },\n }),\n children: brickConf.slots\n ? Object.entries(brickConf.slots)\n .flatMap(([mountPoint, slotConf]) =>\n (slotConf as SlotConfOfBricks).bricks.map((childBrickConf) => ({\n childBrickConf,\n mountPoint,\n }))\n )\n .map(({ childBrickConf, mountPoint }, index) =>\n getSnippetNodeDetail({\n parentUid: nodeUid,\n mountPoint,\n nodeUid: getUniqueNodeId(),\n brickConf: childBrickConf,\n sort: index,\n })\n )\n : [],\n };\n}\n","import {\n BuilderDataTransferPayloadOfNodeToAdd,\n BuilderDataTransferPayloadOfNodeToMove,\n BuilderDataTransferPayloadOfSnippetToApply,\n BuilderDataTransferType,\n BuilderGroupedChildNode,\n BuilderRuntimeNode,\n} from \"../interfaces\";\nimport { BuilderDataManager } from \"../internal/BuilderDataManager\";\nimport { getUniqueNodeId } from \"../internal/getUniqueNodeId\";\nimport { getSortedIdsAfterDropped } from \"../processors/getSortedIdsAfterDropped\";\nimport { getSnippetNodeDetail } from \"./getSnippetNodeDetail\";\n\nexport interface HandleDropParams {\n manager: BuilderDataManager;\n type: BuilderDataTransferType;\n data:\n | BuilderDataTransferPayloadOfNodeToAdd\n | BuilderDataTransferPayloadOfNodeToMove\n | BuilderDataTransferPayloadOfSnippetToApply;\n droppingIndex: number;\n droppingParentUid: number;\n droppingParentInstanceId: string;\n droppingMountPoint: string;\n droppingChildNodes: BuilderRuntimeNode[];\n droppingSiblingGroups: BuilderGroupedChildNode[];\n isPortalCanvas?: boolean;\n}\n\nexport function processDrop({\n manager,\n type,\n data,\n droppingIndex,\n droppingParentUid,\n droppingParentInstanceId,\n droppingMountPoint,\n droppingChildNodes,\n droppingSiblingGroups,\n isPortalCanvas,\n}: HandleDropParams): void {\n if (type === BuilderDataTransferType.NODE_TO_ADD) {\n // Drag a new node into canvas.\n const { brickType = \"brick\", brick } =\n data as BuilderDataTransferPayloadOfNodeToAdd;\n const draggingNodeUid = getUniqueNodeId();\n manager.nodeAdd({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId: null,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n nodeUid: draggingNodeUid,\n parentUid: droppingParentUid,\n nodeData: {\n parent: droppingParentInstanceId,\n type: brickType,\n brick,\n mountPoint: droppingMountPoint,\n bg: !isPortalCanvas && brickType === \"provider\" ? true : undefined,\n portal: isPortalCanvas,\n },\n });\n } else if (type === BuilderDataTransferType.SNIPPET_TO_APPLY) {\n const { bricks } = data as BuilderDataTransferPayloadOfSnippetToApply;\n // https://stackoverflow.com/questions/5501581/javascript-new-arrayn-and-array-prototype-map-weirdness\n const draggingNodeUids = [...new Array(bricks.length)].map(() =>\n getUniqueNodeId()\n );\n manager.snippetApply({\n ...getSortedIdsAfterDropped({\n draggingNodeUid: draggingNodeUids,\n draggingNodeId: null,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n parentUid: droppingParentUid,\n nodeDetails: bricks.map((brickConf, index) =>\n getSnippetNodeDetail({\n parent: droppingParentInstanceId,\n parentUid: droppingParentUid,\n mountPoint: droppingMountPoint,\n nodeUid: draggingNodeUids[index],\n brickConf,\n isPortalCanvas,\n })\n ),\n });\n } else if (type === BuilderDataTransferType.NODE_TO_MOVE) {\n const {\n nodeUid: draggingNodeUid,\n nodeId: draggingNodeId,\n nodeInstanceId: draggingNodeInstanceId,\n } = data as BuilderDataTransferPayloadOfNodeToMove;\n\n const draggingIndex = droppingChildNodes.findIndex(\n (item) => item.$$uid === draggingNodeUid\n );\n // If found dragging node in the same drop zone,\n // then apply a node reorder, otherwise apply a node move.\n if (draggingIndex >= 0) {\n // If the index is not changed, then there is nothing to do.\n if (\n droppingIndex !== draggingIndex &&\n droppingIndex !== draggingIndex + 1\n ) {\n manager.nodeReorder({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId,\n draggingIndex,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n parentUid: droppingParentUid,\n });\n }\n } else {\n manager.nodeMove({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n nodeUid: draggingNodeUid,\n parentUid: droppingParentUid,\n nodeInstanceId: draggingNodeInstanceId,\n nodeData: {\n parent: droppingParentInstanceId,\n mountPoint: droppingMountPoint,\n },\n });\n }\n }\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\n\nexport function useCanvasList(\n rootChildNodes: BuilderRuntimeNode[]\n): BuilderRuntimeNode[][] {\n return useMemo(() => {\n const mainCanvas: BuilderRuntimeNode[] = [];\n const portalCanvasList: BuilderRuntimeNode[][] = [];\n for (const child of rootChildNodes) {\n if (child.portal) {\n portalCanvasList.push([child]);\n } else {\n mainCanvas.push(child);\n }\n }\n return [mainCanvas, ...portalCanvasList, []];\n }, [rootChildNodes]);\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport { clamp } from \"lodash\";\nimport classNames from \"classnames\";\nimport { DragObjectWithType, useDrop } from \"react-dnd\";\nimport { EditorBrickAsComponent } from \"../EditorBrickAsComponent/EditorBrickAsComponent\";\nimport {\n BuilderCanvasSettings,\n BuilderDataTransferPayloadOfNodeToAdd,\n BuilderDataTransferPayloadOfNodeToMove,\n BuilderDataTransferType,\n BuilderGroupedChildNode,\n BuilderRuntimeNode,\n EditorSlotContentLayout,\n TemplateDelegatedContext,\n} from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport {\n getBuilderGroupedChildNodes,\n useBuilderGroupedChildNodes,\n} from \"../hooks/useBuilderGroupedChildNodes\";\nimport { useCanDrop } from \"../hooks/useCanDrop\";\nimport { DropPositionCursor, getDropPosition } from \"./getDropPosition\";\nimport { processDrop } from \"./processDrop\";\nimport { useBuilderDataManager } from \"../hooks/useBuilderDataManager\";\nimport { useCanvasList } from \"../hooks/useCanvasList\";\nimport { useBuilderData } from \"../hooks/useBuilderData\";\nimport { useBuilderContextMenuStatus } from \"../hooks/useBuilderContextMenuStatus\";\nimport { isCurrentTargetByClassName } from \"../EditorContainer/isCurrentTargetByClassName\";\n\nimport styles from \"./DropZone.module.css\";\n\nexport interface DropZoneProps {\n nodeUid?: number;\n isRoot?: boolean;\n separateCanvas?: boolean;\n isPortalCanvas?: boolean;\n independentPortalCanvas?: boolean;\n canvasIndex?: number;\n mountPoint: string;\n fullscreen?: boolean;\n delegatedContext?: TemplateDelegatedContext;\n dropZoneStyle?: React.CSSProperties;\n dropZoneBodyStyle?: React.CSSProperties;\n slotContentLayout?: EditorSlotContentLayout;\n showOutlineIfEmpty?: boolean;\n}\n\nexport interface DroppingContext {\n droppingParentUid: number;\n droppingParentInstanceId: string;\n droppingMountPoint: string;\n droppingChildNodes: BuilderRuntimeNode[];\n droppingSiblingGroups: BuilderGroupedChildNode[];\n}\n\nexport function DropZone({\n nodeUid,\n isRoot,\n separateCanvas,\n isPortalCanvas,\n independentPortalCanvas,\n canvasIndex,\n mountPoint,\n fullscreen,\n delegatedContext,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n}: DropZoneProps): React.ReactElement {\n const dropZoneBody = React.useRef<HTMLDivElement>();\n const [dropPositionCursor, setDropPositionCursor] =\n React.useState<DropPositionCursor>(null);\n const dropPositionCursorRef = React.useRef<DropPositionCursor>();\n const contextMenuStatus = useBuilderContextMenuStatus();\n const manager = useBuilderDataManager();\n const node = useBuilderNode({ nodeUid, isRoot });\n const groupedChildNodes = useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n });\n\n const isGeneralizedPortalCanvas = independentPortalCanvas\n ? canvasIndex > 0\n : isPortalCanvas;\n const hasTabs = separateCanvas || independentPortalCanvas;\n\n const canDrop = useCanDrop();\n const refinedSlotContentLayout =\n slotContentLayout ?? EditorSlotContentLayout.BLOCK;\n\n const selfChildNodes = React.useMemo(\n () =>\n groupedChildNodes.find((group) => group.mountPoint === mountPoint)\n ?.childNodes ?? [],\n [groupedChildNodes, mountPoint]\n );\n\n const canvasList = useCanvasList(selfChildNodes);\n\n const selfChildNodesInCurrentCanvas = React.useMemo(\n () =>\n separateCanvas\n ? selfChildNodes.filter((child) =>\n Boolean(Number(Boolean(isPortalCanvas)) ^ Number(!child.portal))\n )\n : independentPortalCanvas\n ? canvasList[clamp(canvasIndex ?? 0, 0, canvasList.length - 1)]\n : selfChildNodes,\n [\n canvasIndex,\n independentPortalCanvas,\n isPortalCanvas,\n selfChildNodes,\n canvasList,\n separateCanvas,\n ]\n );\n\n const canvasSettings = React.useMemo(\n () =>\n selfChildNodesInCurrentCanvas[0]?.$$parsedProperties\n ._canvas_ as BuilderCanvasSettings,\n [selfChildNodesInCurrentCanvas]\n );\n\n const getDroppingIndexInFullCanvas = React.useCallback(\n (droppingIndexInCurrentCanvas: number) => {\n if (!hasTabs) {\n return droppingIndexInCurrentCanvas;\n }\n if (selfChildNodesInCurrentCanvas.length > 0) {\n const cursorNode =\n selfChildNodesInCurrentCanvas[\n droppingIndexInCurrentCanvas === 0\n ? 0\n : droppingIndexInCurrentCanvas - 1\n ];\n return (\n selfChildNodes.findIndex((child) => child === cursorNode) +\n (droppingIndexInCurrentCanvas === 0 ? 0 : 1)\n );\n }\n return isGeneralizedPortalCanvas ? selfChildNodes.length : 0;\n },\n [\n hasTabs,\n selfChildNodesInCurrentCanvas,\n isGeneralizedPortalCanvas,\n selfChildNodes,\n ]\n );\n\n const { nodes, edges } = useBuilderData();\n\n const getDroppingContext = React.useCallback(() => {\n if (delegatedContext) {\n const siblingGroups = getBuilderGroupedChildNodes({\n nodeUid: delegatedContext.templateUid,\n nodes,\n edges,\n doNotExpandTemplates: true,\n });\n return {\n droppingParentUid: delegatedContext.templateUid,\n droppingParentInstanceId: nodes.find(\n (item) => item.$$uid === delegatedContext.templateUid\n ).instanceId,\n droppingMountPoint: delegatedContext.templateMountPoint,\n droppingChildNodes:\n siblingGroups.find(\n (group) => group.mountPoint === delegatedContext.templateMountPoint\n )?.childNodes ?? [],\n droppingSiblingGroups: siblingGroups,\n };\n }\n return {\n droppingParentUid: node.$$uid,\n droppingParentInstanceId: node.instanceId,\n droppingMountPoint: mountPoint,\n droppingChildNodes: selfChildNodes,\n droppingSiblingGroups: groupedChildNodes,\n };\n }, [\n delegatedContext,\n edges,\n groupedChildNodes,\n mountPoint,\n node,\n nodes,\n selfChildNodes,\n ]);\n\n const [{ isDraggingOverCurrent }, dropRef] = useDrop({\n accept: [\n BuilderDataTransferType.NODE_TO_ADD,\n BuilderDataTransferType.NODE_TO_MOVE,\n BuilderDataTransferType.SNIPPET_TO_APPLY,\n ],\n canDrop: (\n item: DragObjectWithType &\n (\n | BuilderDataTransferPayloadOfNodeToAdd\n | BuilderDataTransferPayloadOfNodeToMove\n )\n ) =>\n independentPortalCanvas && isGeneralizedPortalCanvas\n ? selfChildNodesInCurrentCanvas.length === 0\n : item.type === BuilderDataTransferType.NODE_TO_ADD ||\n item.type === BuilderDataTransferType.SNIPPET_TO_APPLY ||\n isRoot ||\n canDrop(\n (item as BuilderDataTransferPayloadOfNodeToMove).nodeUid,\n nodeUid\n ),\n collect: (monitor) => ({\n isDraggingOverCurrent:\n monitor.isOver({ shallow: true }) && monitor.canDrop(),\n }),\n hover: (item, monitor) => {\n if (monitor.isOver({ shallow: true }) && monitor.canDrop()) {\n const { x, y } = monitor.getClientOffset();\n dropPositionCursorRef.current = getDropPosition(\n x,\n y,\n dropZoneBody.current.parentElement,\n dropZoneBody.current\n );\n setDropPositionCursor(dropPositionCursorRef.current);\n }\n },\n drop: (item, monitor) => {\n if (!monitor.didDrop()) {\n const { type, ...data } = item;\n processDrop({\n type: type as BuilderDataTransferType,\n data,\n droppingIndex: getDroppingIndexInFullCanvas(\n dropPositionCursorRef.current.index\n ),\n isPortalCanvas: isGeneralizedPortalCanvas,\n manager,\n ...getDroppingContext(),\n });\n }\n },\n });\n\n React.useEffect(() => {\n manager.updateDroppingStatus(\n delegatedContext ? delegatedContext.templateUid : node.$$uid,\n delegatedContext ? delegatedContext.templateMountPoint : mountPoint,\n isDraggingOverCurrent\n );\n }, [isDraggingOverCurrent, mountPoint, manager, delegatedContext, node]);\n\n const droppable =\n !!delegatedContext ||\n !(node.$$isExpandableTemplate || node.$$isTemplateInternalNode);\n\n const dropZoneRef = React.useRef<HTMLElement>();\n\n const dropZoneRefCallback = React.useCallback(\n (element: HTMLElement) => {\n dropZoneRef.current = element;\n if (droppable) {\n dropRef(element);\n }\n },\n [dropRef, droppable]\n );\n\n const handleContextMenu = React.useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (\n !isGeneralizedPortalCanvas &&\n isCurrentTargetByClassName(\n event.target as HTMLElement,\n dropZoneRef.current\n )\n ) {\n event.preventDefault();\n manager.contextMenuChange({\n active: true,\n node,\n x: event.clientX,\n y: event.clientY,\n });\n }\n },\n [isGeneralizedPortalCanvas, manager, node]\n );\n\n return (\n <div\n ref={dropZoneRefCallback}\n className={classNames(\n styles.dropZone,\n isRoot\n ? classNames(\n styles.isRoot,\n canvasSettings?.mode &&\n String(canvasSettings.mode)\n .split(/\\s+/g)\n .map((mode) => styles[`mode-${mode}`]),\n {\n [styles.fullscreen]: fullscreen,\n [styles.hasTabs]: hasTabs,\n }\n )\n : styles.isSlot,\n {\n [styles.isPortalCanvas]: isGeneralizedPortalCanvas,\n [styles.dropping]: isDraggingOverCurrent,\n [styles.active]:\n isRoot &&\n contextMenuStatus.active &&\n contextMenuStatus.node.$$uid === node.$$uid,\n [styles.showOutlineIfEmpty]:\n !isRoot && showOutlineIfEmpty && selfChildNodes.length === 0,\n [styles.slotContentLayoutBlock]:\n refinedSlotContentLayout === EditorSlotContentLayout.BLOCK,\n [styles.slotContentLayoutInline]:\n refinedSlotContentLayout === EditorSlotContentLayout.INLINE,\n [styles.slotContentLayoutGrid]:\n refinedSlotContentLayout === EditorSlotContentLayout.GRID,\n }\n )}\n style={dropZoneStyle}\n onContextMenu={isRoot ? handleContextMenu : null}\n >\n <div\n ref={dropZoneBody}\n className={styles.dropZoneBody}\n style={dropZoneBodyStyle}\n >\n {selfChildNodesInCurrentCanvas.map((child) => (\n <EditorBrickAsComponent\n key={child.$$uid}\n node={child}\n slotContentLayout={refinedSlotContentLayout}\n />\n ))}\n </div>\n {\n <div\n className={classNames(\n styles.dropCursor,\n dropPositionCursor?.isVertical\n ? styles.dropCursorVertical\n : styles.dropCursorHorizontal\n )}\n style={{\n top: dropPositionCursor?.y,\n left: dropPositionCursor?.x,\n height: dropPositionCursor?.height,\n }}\n ></div>\n }\n </div>\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React, { useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { DropZone } from \"../DropZone/DropZone\";\nimport { EditorSlotContentLayout } from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport { useDroppingStatus } from \"../hooks/useDroppingStatus\";\n\nimport styles from \"./SlotContainer.module.css\";\n\nexport interface SlotContainerProps {\n nodeUid: number;\n slotName: string;\n slotContainerStyle?: React.CSSProperties;\n dropZoneStyle?: React.CSSProperties;\n dropZoneBodyStyle?: React.CSSProperties;\n slotContentLayout?: EditorSlotContentLayout;\n showOutlineIfEmpty?: boolean;\n}\n\nexport function SlotContainer({\n nodeUid,\n slotName,\n slotContainerStyle,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n}: SlotContainerProps): React.ReactElement {\n const node = useBuilderNode({ nodeUid });\n const droppingStatus = useDroppingStatus();\n\n const delegatedContext = useMemo(() => {\n const delegatedSlots = node.$$delegatedSlots?.get(slotName);\n // Ignore when there are more than one delegated slots on a single slot.\n return delegatedSlots?.length === 1 ? delegatedSlots[0] : null;\n }, [node, slotName]);\n\n return (\n <div\n className={classNames(styles.slotContainer, {\n [styles.dropping]: droppingStatus\n .get(delegatedContext ? delegatedContext.templateUid : nodeUid)\n ?.get(\n delegatedContext ? delegatedContext.templateMountPoint : slotName\n ),\n })}\n style={slotContainerStyle}\n >\n <div className={styles.slotName}>\n {delegatedContext ? delegatedContext.templateMountPoint : slotName}\n </div>\n <DropZone\n nodeUid={nodeUid}\n mountPoint={slotName}\n delegatedContext={delegatedContext}\n dropZoneStyle={dropZoneStyle}\n dropZoneBodyStyle={dropZoneBodyStyle}\n slotContentLayout={slotContentLayout}\n showOutlineIfEmpty={showOutlineIfEmpty}\n />\n </div>\n );\n}\n","// See https://github.com/react-dnd/react-dnd/blob/main/packages/react-dnd/src/common/DndProvider.tsx\nimport React from \"react\";\nimport {\n BuilderContext,\n ContextOfBuilder,\n createBuilderContext,\n} from \"./BuilderContext\";\n\nexport const BuilderProvider = React.memo(LegacyBuilderProvider);\n\nconst instanceSymbol = Symbol.for(\"__BRICK_NEXT_BUILDER_CONTEXT_INSTANCE__\");\nfunction createSingletonBuilderContext(): ContextOfBuilder {\n const ctx = window as any;\n if (!ctx[instanceSymbol]) {\n ctx[instanceSymbol] = createBuilderContext();\n }\n return ctx[instanceSymbol];\n}\n\nlet refCount = 0;\n\nfunction LegacyBuilderProvider({\n children,\n}: React.PropsWithChildren<any>): React.ReactElement {\n const context = createSingletonBuilderContext();\n\n /**\n * If the global context was used to store the DND context\n * then where theres no more references to it we should\n * clean it up to avoid memory leaks\n */\n React.useEffect(() => {\n refCount++;\n\n return () => {\n refCount--;\n\n if (refCount === 0) {\n (window as any)[instanceSymbol] = null;\n }\n };\n }, []);\n\n return (\n <BuilderContext.Provider value={context}>\n {children}\n </BuilderContext.Provider>\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { UpdatingElement, property, BrickWrapper } from \"@next-core/brick-kit\";\nimport { StoryDoc } from \"@next-core/brick-types\";\nimport { EditorSelfLayout } from \"./interfaces\";\nimport { BuilderProvider } from \"./BuilderProvider\";\n\nexport interface EditorComponentProps {\n nodeUid: number;\n editorProps?: StoryDoc[\"editorProps\"];\n}\n\nexport type EditorComponentType = React.FunctionComponent<EditorComponentProps>;\n\nexport interface EditorBrickElement extends HTMLElement {\n nodeUid: number;\n}\n\nexport interface EditorBrickElementConstructor {\n new (): EditorBrickElement;\n readonly selfLayout: EditorSelfLayout;\n}\n\nexport interface EditorElementOptions {\n brickStyle?: Record<string, string>;\n selfLayout?: EditorSelfLayout;\n}\n\nexport function EditorElementFactory(\n EditorComponent: EditorComponentType,\n options?: EditorElementOptions\n): EditorBrickElementConstructor {\n class NewEditorElement extends UpdatingElement {\n static get selfLayout(): EditorSelfLayout {\n return options?.selfLayout;\n }\n\n @property({ type: Number })\n nodeUid: number;\n\n @property({ attribute: false })\n editorProps: StoryDoc[\"editorProps\"];\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n if (options?.brickStyle) {\n for (const [key, value] of Object.entries(options.brickStyle)) {\n (this.style as unknown as Record<string, string>)[key] = value;\n }\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected && this.nodeUid) {\n ReactDOM.render(\n <BrickWrapper>\n <BuilderProvider>\n <DndProvider backend={HTML5Backend}>\n <EditorComponent\n nodeUid={this.nodeUid}\n editorProps={this.editorProps}\n />\n </DndProvider>\n </BuilderProvider>\n </BrickWrapper>,\n this\n );\n }\n }\n }\n return NewEditorElement;\n}\n","import { createContext, Dispatch, SetStateAction } from \"react\";\n\n// It indicates which mount point of a container is active dropping zone.\ntype DroppingStatus = {\n [mountPoint: string]: boolean;\n};\n\ninterface ContextOfDroppingStatus {\n droppingStatus?: DroppingStatus;\n setDroppingStatus?: Dispatch<SetStateAction<DroppingStatus>>;\n}\n\n// Todo(steve): remove this file.\n/** @deprecated no more usage but for compatibility only. */\nexport const DroppingStatusContext = createContext<ContextOfDroppingStatus>({});\n","import { useMemo } from \"react\";\nimport { sortBy } from \"lodash\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderNodeMountPoints({\n nodeUid,\n isRoot,\n doNotExpandTemplates,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n}): string[] {\n const { rootId, edges } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(() => {\n const mountPoints = new Set<string>();\n const relatedEdges = sortBy(\n edges.filter(\n (edge) =>\n edge.parent === currentUid &&\n (doNotExpandTemplates\n ? !edge.$$isTemplateInternal\n : !edge.$$isTemplateDelegated)\n ),\n [(edge) => edge.sort]\n );\n for (const edge of relatedEdges) {\n mountPoints.add(edge.mountPoint);\n }\n return Array.from(mountPoints);\n }, [currentUid, edges, doNotExpandTemplates]);\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderParentNode(nodeUid: number): BuilderRuntimeNode {\n const { nodes, edges } = useBuilderData();\n return useMemo(() => {\n const parentUid = edges.find(\n (edge) => edge.child === nodeUid && !edge.$$isTemplateExpanded\n ).parent;\n return nodes.find((node) => node.$$uid === parentUid);\n }, [edges, nodeUid, nodes]);\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\nimport { BuilderRouteNode } from \"@next-core/brick-types\";\n\nexport function useRouteList(): BuilderRouteNode[] {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getRouteList());\n useEffect(\n () =>\n manager.onRouteListChange(() => {\n setData(manager.getRouteList());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useOutlineEnabled(\n nodeInstanceId: string,\n inapplicable?: boolean\n): boolean {\n const manager = useBuilderDataManager();\n const [enabled, setEnabled] = useState(\n inapplicable ? false : manager.isOutlineEnabled(nodeInstanceId)\n );\n useEffect(() => {\n if (!inapplicable) {\n return manager.onOutlineEnabledNodesChange(() => {\n setEnabled(manager.isOutlineEnabled(nodeInstanceId));\n });\n }\n }, [inapplicable, manager, nodeInstanceId]);\n return enabled;\n}\n"],"names":["BuilderDataTransferType","EditorBrickType","EditorSelfLayout","EditorSlotContentLayout","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","window","self","EventTarget","constructor","wm","create","defineProperty","proto","define","type","listener","options","secret","get","listeners","target","event","slice","some","dispatch","currentTarget","splice","set","name","value","configurable","writable","info","once","removeEventListener","handleEvent","_stopImmediatePropagationFlag","WeakMap","uniqueIdCursor","getUniqueNodeId","expandTemplateEdges","nodes","edges","rootId","newEdges","reorderedEdgesMap","walk","uid","callback","node","find","item","$$uid","childEdges","sortBy","filter","edge","parent","sort","child","expandEdgesThroughTemplateChain","mountPoint","childUid","proxySlotConf","delegateToParentUid","$$isExpandableTemplate","$$templateProxy","slots","$$templateRefToUid","ref","nextNode","n","nextMountPoint","refSlot","expandedEdge","undefined","$$isTemplateExpanded","siblingEdges","internalEdges","$$isTemplateInternal","refPosition","clampedRefPosition","clamp","findIndex","forEach","index","childEdge","map","reorderBuilderEdges","parentUid","nodeUids","edgesExcludeExpanded","indexOf","deleteNodeFromTree","nodeUid","idsToDelete","Set","collectIdsToDelete","has","add","ids","id","getRelatedNodesBasedOnEvents","rootNodeIsCustomTemplate","nodesMap","Map","targetMap","targetRefMap","upstreamNodes","downstreamNodes","selector","$$matchedSelectors","handlers","isEmpty","$$parsedEvents","values","flat","$$parsedLifeCycle","concat","entries","flatMap","lifeCycleName","lifeCycleConf","messageConf","console","warn","collectRelatedNodes","handler","targetNodeUid","targetRef","targetRefNodeUid","callbackHandlers","nodeIgnoreFields","getBuilderNode","nodeData","isTemplateInternalNode","matchedSelectors","brick","replace","normalized","normalizeBuilderNode","jsonFieldsInBrick","parsedFields","field","parsed","cloneDeep","upperFirst","test","fromEntries","entry","includes","alias","isBrickNode","split","pop","getAppendingNodesAndEdges","templateSourceMap","storyList","currentUid","processedTemplateSet","inheritedTemplateRefToUid","builderNode","templateSource","startsWith","children","storyId","originData","proxy","JSON","parse","templateRefToUid","sortedChildren","Infinity","$$isTemplateInternalNode","processDelegatingSlots","cursorNode","rootMountPoint","slotEntries","slotName","slotConf","refUid","refNode","$$delegatedSlots","delegatedSlotsByRefSlot","templateUid","templateMountPoint","processDelegatingProperties","previousPropertyName","properties","propertyEntries","propertyName","propertyConf","$$parsedProperties","isBasicRefProperty","propertyValue","refProperty","overrideChildrenMountPoint","$$isTemplateDelegated","propRef","isParentExpandableTemplate","BuilderInternalEventType","storageKeyOfOutlineDisabledNodes","BuilderDataManager","active","JsonStorage","localStorage","localJsonStorage","getItem","detail","data","addNodes","addEdges","omit","getStoryList","newNodes","newData","triggerDataChange","getData","getContextMenuStatus","contextMenuStatus","getRelatedNodesBasedOnEventsMap","relatedNodesBasedOnEventsMap","sharedEditorListInit","sharedEditorList","eventTarget","dispatchEvent","CustomEvent","SHARED_EDITOR_LIST_CHANGE","getSharedEditorList","onSharedEditorListChange","fn","addEventListener","routeListInit","routeList","ROUTE_LIST_CHANGE","getRouteList","storyListInit","onRouteListChange","dataInit","root","rootNode","DATA_CHANGE","updateBrick","runAddNodeAction","nodeAdd","NODE_ADD","nodeAddStored","instanceId","snippetApply","nodeDetails","appendingNodes","appendingEdges","SNIPPET_APPLY","snippetApplyStored","flattenNodeDetails","found","nodeMove","NODE_MOVE","contextUpdated","context","nodeReorder","NODE_REORDER","nodeDelete","nodeClick","NODE_CLICK","contextMenuChange","CONTEXT_MENU_CHANGE","onDataChange","onNodeAdd","onSnippetApply","onNodeReorder","onNodeMove","onNodeClick","onContextMenuChange","setShowRelatedNodesBasedOnEvents","show","showRelatedNodesBasedOnEvents","SHOW_RELATED_NODES_BASED_ON_EVENTS","getShowRelatedNodesBasedOnEvents","onShowRelatedNodesBasedOnEventsChange","setHoverNodeUid","hoverNodeUid","HOVER_NODE_CHANGE","getHoverNodeUid","onHoverNodeChange","toggleOutline","nodeInstanceId","outlineDisabledNodes","delete","setItem","from","OUTLINE_DISABLED_NODES_CHANGE","isOutlineEnabled","onOutlineEnabledNodesChange","setHighlightNodes","highlightNodes","HIGHLIGHT_NODES_CHANGE","getHighlightNodes","onHighlightNodesChange","updateDroppingStatus","isDraggingOver","nodeStatus","droppingStatus","DROPPING_STATUS_CHANGE","Boolean","getDroppingStatus","onDroppingStatusChange","BuilderContext","React","createContext","createBuilderContext","manager","useBuilderDataManager","useContext","Error","useBuilderData","setData","useState","useEffect","useBuilderNode","isRoot","useMemo","useBuilderContextMenuStatus","status","setStatus","useShowRelatedNodesBasedOnEvents","styleInject","css","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","isCurrentTargetByClassName","targetElement","currentElement","element","classList","contains","editorContainerStyles","editorContainer","parentElement","useHoverNodeUid","useHighlightNodes","useDroppingStatus","setDroppingStatus","EditorContainer","isTransparentContainer","editorContainerStyle","editorBodyStyle","editorContainerRef","useRef","isUpstreamNode","setIsUpstreamNode","isDownstreamNode","setIsDownstreamNode","showRelatedEvents","hover","setHover","editorType","DEFAULT","hoverNodeUidRef","current","handleMouseOver","useCallback","stopPropagation","handleMouseOut","relatedNodes","isCurrentTarget","handleClick","handleContextMenu","preventDefault","x","clientX","y","clientY","styles","transparentContainer","dropping","highlight","nodeAlias","arrow","editorBody","ANY_BRICK_EDITOR","ANY_ROUTE_EDITOR","getEditorBrick","editor","tryEditorBricks","isRouteNode","editorBrick","developHelper","loadEditorBricks","error","customElements","useStoryList","getBrickDoc","doc","useSharedEditorMap","getSharedEditorMap","conf","EditorBrickAsComponent","slotContentLayout","initialized","setInitialized","setEditorBrick","loadEditorError","setLoadEditorError","hasChildren","installedBricksEnabled","getRuntime","getFeatureFlags","brickDoc","editorMap","editorConf","editorName","editorError","message","brickConf","editorProps","selfLayout","layout","editorConstructor","CONTAINER","INLINE","isDragging","dragRef","useDrag","NODE_TO_MOVE","nodeId","dropEffect","collect","monitor","slotContentLayoutBlock","BLOCK","slotContentLayoutInline","selfLayoutInline","selfLayoutBlock","selfLayoutContainer","dragging","__isTemplateInternalNode","baseView","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","relatedEdges","childNode","childNodes","useCanDrop","draggingUid","traverse","parentId","defaultGapHalf","getDropPositions","dropZone","dropZoneGrid","zoneRect","getBoundingClientRect","positions","gridItemList","currentRow","cells","rows","gridItem","rect","cell","top","bottom","left","right","prevCell","compareApproximately","Math","min","max","lastRectBottom","nextCursorTop","row","rowIndex","rectBottom","cursor","nextRow","lastRectRight","nextCursorLeft","cursorDefault","isVertical","height","cellIndex","rectRight","getDropPosition","a","b","diff","abs","getSortedIdsAfterDropped","droppingInfo","draggingNodeUid","draggingNodeId","draggingIndex","droppingMountPoint","droppingSiblingGroups","droppingIndex","draggingNodeUids","fullChildNodes","group","uids","nodeIds","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","ctx","stringify","yaml","safeDump","template","isPortalCanvas","portal","getSnippetNodeDetail","bg","bricks","childBrickConf","processDrop","droppingParentUid","droppingParentInstanceId","droppingChildNodes","NODE_TO_ADD","brickType","SNIPPET_TO_APPLY","draggingNodeInstanceId","useCanvasList","rootChildNodes","mainCanvas","portalCanvasList","DropZone","separateCanvas","independentPortalCanvas","canvasIndex","fullscreen","delegatedContext","dropZoneStyle","dropZoneBodyStyle","showOutlineIfEmpty","dropZoneBody","dropPositionCursor","setDropPositionCursor","dropPositionCursorRef","groupedChildNodes","isGeneralizedPortalCanvas","hasTabs","canDrop","refinedSlotContentLayout","selfChildNodes","canvasList","selfChildNodesInCurrentCanvas","Number","canvasSettings","_canvas_","getDroppingIndexInFullCanvas","droppingIndexInCurrentCanvas","getDroppingContext","siblingGroups","isDraggingOverCurrent","dropRef","useDrop","accept","isOver","shallow","getClientOffset","drop","didDrop","droppable","dropZoneRef","dropZoneRefCallback","mode","String","isSlot","slotContentLayoutGrid","GRID","dropCursor","dropCursorVertical","dropCursorHorizontal","SlotContainer","slotContainerStyle","delegatedSlots","slotContainer","BuilderProvider","memo","LegacyBuilderProvider","instanceSymbol","Symbol","for","createSingletonBuilderContext","refCount","EditorElementFactory","EditorComponent","NewEditorElement","property","attribute","display","brickStyle","_render","ReactDOM","unmountComponentAtNode","isConnected","render","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","mountPoints","useBuilderParentNode","useRouteList","useOutlineEnabled","inapplicable","enabled","setEnabled"],"mappings":";;;;;;;;;;;;;;;IAyIYA;;WAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;GAAAA,4BAAAA;;IAqBAC;;WAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;GAAAA,oBAAAA;;IAMAC;;WAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;GAAAA,qBAAAA;;IAMAC;;WAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;GAAAA,4BAAAA;;;;;;;;;;;ACrKZ;AAEC,eAAY;;AAGZ,QAAIC,MAAM,GAAG,GAAGC,cAAhB;;AAEA,aAASC,UAAT,GAAsB;AACrB,UAAIC,OAAO,GAAG,EAAd;;AAEA,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,SAAS,CAACC,MAA9B,EAAsCF,CAAC,EAAvC,EAA2C;AAC1C,YAAIG,GAAG,GAAGF,SAAS,CAACD,CAAD,CAAnB;AACA,YAAI,CAACG,GAAL,EAAU;AAEV,YAAIC,OAAO,GAAG,OAAOD,GAArB;;AAEA,YAAIC,OAAO,KAAK,QAAZ,IAAwBA,OAAO,KAAK,QAAxC,EAAkD;AACjDL,UAAAA,OAAO,CAACM,IAAR,CAAaF,GAAb;AACA,SAFD,MAEO,IAAIG,KAAK,CAACC,OAAN,CAAcJ,GAAd,CAAJ,EAAwB;AAC9B,cAAIA,GAAG,CAACD,MAAR,EAAgB;AACf,gBAAIM,KAAK,GAAGV,UAAU,CAACW,KAAX,CAAiB,IAAjB,EAAuBN,GAAvB,CAAZ;;AACA,gBAAIK,KAAJ,EAAW;AACVT,cAAAA,OAAO,CAACM,IAAR,CAAaG,KAAb;AACA;AACD;AACD,SAPM,MAOA,IAAIJ,OAAO,KAAK,QAAhB,EAA0B;AAChC,cAAID,GAAG,CAACO,QAAJ,KAAiBC,MAAM,CAACC,SAAP,CAAiBF,QAAtC,EAAgD;AAC/C,iBAAK,IAAIG,GAAT,IAAgBV,GAAhB,EAAqB;AACpB,kBAAIP,MAAM,CAACkB,IAAP,CAAYX,GAAZ,EAAiBU,GAAjB,KAAyBV,GAAG,CAACU,GAAD,CAAhC,EAAuC;AACtCd,gBAAAA,OAAO,CAACM,IAAR,CAAaQ,GAAb;AACA;AACD;AACD,WAND,MAMO;AACNd,YAAAA,OAAO,CAACM,IAAR,CAAaF,GAAG,CAACO,QAAJ,EAAb;AACA;AACD;AACD;;AAED,aAAOX,OAAO,CAACgB,IAAR,CAAa,GAAb,CAAP;AACA;;AAED,QAAqCC,MAAM,CAACC,OAA5C,EAAqD;AACpDnB,MAAAA,UAAU,CAACoB,OAAX,GAAqBpB,UAArB;AACAkB,MAAAA,cAAA,GAAiBlB,UAAjB;AACA,KAHD,MAQO;AACNqB,MAAAA,MAAM,CAACrB,UAAP,GAAoBA,UAApB;AACA;AACD,GAlDA,GAAD;;;;;ACPA;AACA,IAAIsB,IAAI,GAAG,EAAX;;AACA,IAAI;AACFA,EAAAA,IAAI,CAACC,WAAL,GAAoB,IAAIA,WAAJ,EAAD,CAAkBC,WAArC;AACD,CAFD,CAEE,OAAMD,WAAN,EAAmB;AAClB,aAAUV,MAAV,EAAkBY,EAAlB,EAAsB;AACrB,QAAIC,MAAM,GAAGb,MAAM,CAACa,MAApB;AACA,QAAIC,cAAc,GAAGd,MAAM,CAACc,cAA5B;AACA,QAAIC,KAAK,GAAGL,WAAW,CAACT,SAAxB;AACAe,IAAAA,MAAM,CAACD,KAAD,EAAQ,kBAAR,EAA4B,UAAUE,IAAV,EAAgBC,QAAhB,EAA0BC,OAA1B,EAAmC;AACnE,WAAK,IACHC,MAAM,GAAGR,EAAE,CAACS,GAAH,CAAO,IAAP,CADN,EAEHC,SAAS,GAAGF,MAAM,CAACH,IAAD,CAAN,KAAiBG,MAAM,CAACH,IAAD,CAAN,GAAe,EAAhC,CAFT,EAGH5B,CAAC,GAAG,CAHD,EAGIE,MAAM,GAAG+B,SAAS,CAAC/B,MAH5B,EAGoCF,CAAC,GAAGE,MAHxC,EAGgDF,CAAC,EAHjD,EAIE;AACA,YAAIiC,SAAS,CAACjC,CAAD,CAAT,CAAa6B,QAAb,KAA0BA,QAA9B,EACE;AACH;;AACDI,MAAAA,SAAS,CAAC5B,IAAV,CAAe;AAAC6B,QAAAA,MAAM,EAAE,IAAT;AAAeL,QAAAA,QAAQ,EAAEA,QAAzB;AAAmCC,QAAAA,OAAO,EAAEA;AAA5C,OAAf;AACD,KAVK,CAAN;AAWAH,IAAAA,MAAM,CAACD,KAAD,EAAQ,eAAR,EAAyB,UAAUS,KAAV,EAAiB;AAC9C,UAAIJ,MAAM,GAAGR,EAAE,CAACS,GAAH,CAAO,IAAP,CAAb;AACA,UAAIC,SAAS,GAAGF,MAAM,CAACI,KAAK,CAACP,IAAP,CAAtB;;AACA,UAAIK,SAAJ,EAAe;AACbN,QAAAA,MAAM,CAACQ,KAAD,EAAQ,QAAR,EAAkB,IAAlB,CAAN;AACAR,QAAAA,MAAM,CAACQ,KAAD,EAAQ,eAAR,EAAyB,IAAzB,CAAN;AACAF,QAAAA,SAAS,CAACG,KAAV,CAAgB,CAAhB,EAAmBC,IAAnB,CAAwBC,QAAxB,EAAkCH,KAAlC;AACA,eAAOA,KAAK,CAACI,aAAb;AACA,eAAOJ,KAAK,CAACD,MAAb;AACD;;AACD,aAAO,IAAP;AACD,KAXK,CAAN;AAYAP,IAAAA,MAAM,CAACD,KAAD,EAAQ,qBAAR,EAA+B,UAAUE,IAAV,EAAgBC,QAAhB,EAA0B;AAC7D,WAAK,IACHE,MAAM,GAAGR,EAAE,CAACS,GAAH,CAAO,IAAP,CADN;AAEH;AACAC,MAAAA,SAAS,GAAGF,MAAM,CAACH,IAAD,CAAN,KAAiBG,MAAM,CAACH,IAAD,CAAN,GAAe,EAAhC,CAHT,EAIH5B,CAAC,GAAG,CAJD,EAIIE,MAAM,GAAG+B,SAAS,CAAC/B,MAJ5B,EAIoCF,CAAC,GAAGE,MAJxC,EAIgDF,CAAC,EAJjD,EAKE;AACA,YAAIiC,SAAS,CAACjC,CAAD,CAAT,CAAa6B,QAAb,KAA0BA,QAA9B,EAAwC;AACtCI,UAAAA,SAAS,CAACO,MAAV,CAAiBxC,CAAjB,EAAoB,CAApB;AACA;AACD;AACF;AACF,KAZK,CAAN;AAaAoB,IAAAA,IAAI,CAACC,WAAL,GAAmBA,WAAnB;;AACA,aAASA,WAAT,GAAuB;;AACrBE,MAAAA,EAAE,CAACkB,GAAH,CAAO,IAAP,EAAajB,MAAM,CAAC,IAAD,CAAnB;AACD;;AACD,aAASG,MAAT,CAAgBO,MAAhB,EAAwBQ,IAAxB,EAA8BC,KAA9B,EAAqC;AACnClB,MAAAA,cAAc,CACZS,MADY,EAEZQ,IAFY,EAGZ;AACEE,QAAAA,YAAY,EAAE,IADhB;AAEEC,QAAAA,QAAQ,EAAE,IAFZ;AAGEF,QAAAA,KAAK,EAAEA;AAHT,OAHY,CAAd;AASD;;AACD,aAASL,QAAT,CAAkBQ,IAAlB,EAAwB;AACtB,UAAIhB,OAAO,GAAGgB,IAAI,CAAChB,OAAnB;AACA,UAAIA,OAAO,IAAIA,OAAO,CAACiB,IAAvB,EACED,IAAI,CAACZ,MAAL,CAAYc,mBAAZ,CAAgC,KAAKpB,IAArC,EAA2CkB,IAAI,CAACjB,QAAhD;AACF,UAAI,OAAOiB,IAAI,CAACjB,QAAZ,KAAyB,UAA7B,EACEiB,IAAI,CAACjB,QAAL,CAAcf,IAAd,CAAmBgC,IAAI,CAACZ,MAAxB,EAAgC,IAAhC,EADF,KAGEY,IAAI,CAACjB,QAAL,CAAcoB,WAAd,CAA0B,IAA1B;AACF,aAAO,KAAKC,6BAAZ;AACD;AACF,GAjEA,EAiECvC,MAjED,EAiES,IAAIwC,OAAJ,EAjET,CAAD;AAkED;;AACD,oBAAe/B,IAAI,CAACC,WAApB;;ACxEA,IAAI+B,cAAc,GAAG,CAArB;AAEO,SAASC,eAAT,GAAmC;AACxC,SAAQD,cAAc,IAAI,CAA1B;AACD;;ACKM,SAASE,mBAAT,OAKqC;AAAA,MALR;AAClCC,IAAAA,KADkC;AAElC;AACAC,IAAAA,KAHkC;AAIlCC,IAAAA;AAJkC,GAKQ;AAC1C,MAAMC,QAAQ,GAAGF,KAAK,CAACpB,KAAN,EAAjB;AACA,MAAMuB,iBAAiB,GAAG,IAAIR,OAAJ,EAA1B;;AAEA,MAAMS,IAAI,GAAG,CACXC,GADW,EAEXC,QAFW,KAMF;AACT,QAAMC,IAAI,GAAGR,KAAK,CAACS,IAAN,CAAYC,IAAD,IAAUA,IAAI,CAACC,KAAL,KAAeL,GAApC,CAAb;AACA,QAAMM,UAAU,GAAGC,MAAM,CACvBZ,KAAK,CAACa,MAAN,CAAcC,IAAD,IAAUA,IAAI,CAACC,MAAL,KAAgBR,IAAI,CAACG,KAA5C,CADuB,EAEtBI,IAAD,IAAUA,IAAI,CAACE,IAFQ,CAAzB;AAIAV,IAAAA,QAAQ,CAACC,IAAD,EAAOI,UAAP,CAAR;;AACA,SAAK,IAAMG,IAAX,IAAmBH,UAAnB,EAA+B;AAC7BP,MAAAA,IAAI,CAACU,IAAI,CAACG,KAAN,EAAaX,QAAb,CAAJ;AACD;AACF,GAhBD;;AAkBA,MAAMY,+BAA+B,GAAG,CACtCX,IADsC,EAEtCY,UAFsC,EAGtCC,QAHsC,KAI7B;AAAA;;AACT,QAAIC,aAAJ;AACA,QAAIC,mBAAJ;;AACA,QACEf,IAAI,CAACgB,sBAAL,6BACAhB,IAAI,CAACiB,eADL,kDACA,sBAAsBC,KADtB,IAEApF,cAAc,CAACkE,IAAI,CAACiB,eAAL,CAAqBC,KAAtB,EAA6BN,UAA7B,CAFd,KAGCE,aAAa,GAAGd,IAAI,CAACiB,eAAL,CAAqBC,KAArB,CAA2BN,UAA3B,CAHjB,MAICG,mBAAmB,GAAGf,IAAI,CAACmB,kBAAL,CAAwBlD,GAAxB,CAA4B6C,aAAa,CAACM,GAA1C,CAJvB,CADF,EAME;AACA,UAAMC,QAAQ,GAAG7B,KAAK,CAACS,IAAN,CAAYqB,CAAD,IAAOA,CAAC,CAACnB,KAAF,KAAYY,mBAA9B,CAAjB;AACA,UAAMQ,cAAc,GAAGT,aAAa,CAACU,OAArC;;AACA,UAAIH,QAAQ,CAACL,sBAAb,EAAqC;AACnCL,QAAAA,+BAA+B,CAACU,QAAD,EAAWE,cAAX,EAA2BV,QAA3B,CAA/B;AACD,OAFD,MAEO;AAAA;;AACL,YAAMY,YAAgC,GAAG;AACvCf,UAAAA,KAAK,EAAEG,QADgC;AAEvCL,UAAAA,MAAM,EAAEO,mBAF+B;AAGvCH,UAAAA,UAAU,EAAEW,cAH2B;AAIvCd,UAAAA,IAAI,EAAEiB,SAJiC;AAKvCC,UAAAA,oBAAoB,EAAE;AALiB,SAAzC;AAOA,YAAMC,YAAY,GAAGvB,MAAM,CACzBV,QAAQ,CAACW,MAAT,CAAiBC,IAAD,IAAUA,IAAI,CAACC,MAAL,KAAgBO,mBAA1C,CADyB,EAExBR,IAAD;AAAA;;AAAA,0CAAUX,iBAAiB,CAAC3B,GAAlB,CAAsBsC,IAAtB,CAAV,yEAAyCA,IAAI,CAACE,IAA9C;AAAA,SAFyB,CAA3B;AAIA,YAAMoB,aAAa,GAAGD,YAAY,CAACtB,MAAb,CACnBC,IAAD,IAAUA,IAAI,CAACuB,oBADK,CAAtB,CAZK;AAgBL;;AACA,YAAMC,WAAW,4BAAGjB,aAAa,CAACiB,WAAjB,yEAAgC,CAAC,CAAlD;AACA,YAAMC,kBAAkB,GAAGC,KAAK,CAC9BF,WAAW,GAAG,CAAd,GACIF,aAAa,CAAC1F,MAAd,GAAuB,CAAvB,GAA2B4F,WAD/B,GAEIA,WAH0B,EAI9B,CAJ8B,EAK9BF,aAAa,CAAC1F,MALgB,CAAhC;AAOAyF,QAAAA,YAAY,CAACnD,MAAb,CACEuD,kBAAkB,GAAGH,aAAa,CAAC1F,MAAnC,GACIyF,YAAY,CAACM,SAAb,CACG3B,IAAD,IAAUA,IAAI,KAAKsB,aAAa,CAACG,kBAAD,CADlC,CADJ,GAIIJ,YAAY,CAACzF,MALnB,EAME,CANF,EAOEsF,YAPF;AASAG,QAAAA,YAAY,CAACO,OAAb,CAAqB,CAAC5B,IAAD,EAAO6B,KAAP,KAAiB;AACpCxC,UAAAA,iBAAiB,CAAClB,GAAlB,CAAsB6B,IAAtB,EAA4B6B,KAA5B;AACD,SAFD;AAGAzC,QAAAA,QAAQ,CAACrD,IAAT,CAAcmF,YAAd;AACD;AACF;AACF,GA1DD;;AA4DA5B,EAAAA,IAAI,CAACH,MAAD,EAAS,CAACM,IAAD,EAAOI,UAAP,KAAsB;AACjC,QAAI,CAACJ,IAAI,CAACgB,sBAAV,EAAkC;AAChC;AACD;;AACD,SAAK,IAAMqB,SAAX,IAAwBjC,UAAxB,EAAoC;AAClC;AACAO,MAAAA,+BAA+B,CAC7BX,IAD6B,EAE7BqC,SAAS,CAACzB,UAFmB,EAG7ByB,SAAS,CAAC3B,KAHmB,CAA/B;AAKD;AACF,GAZG,CAAJ;;AAcA,MAAIf,QAAQ,CAACxD,MAAT,GAAkBsD,KAAK,CAACtD,MAA5B,EAAoC;AAClC,WAAOwD,QAAQ,CAAC2C,GAAT,CAAc/B,IAAD,IAAU;AAC5B,UAAME,IAAI,GAAGb,iBAAiB,CAAC3B,GAAlB,CAAsBsC,IAAtB,CAAb;AACA,aAAOE,IAAI,KAAKiB,SAAT,GACHnB,IADG,mCAGEA,IAHF;AAIDE,QAAAA;AAJC,QAAP;AAMD,KARM,CAAP;AASD;;AAED,SAAOhB,KAAP;AACD;;ACxHM,SAAS8C,mBAAT,cASiB;AAAA,MARtB;AAAE7C,IAAAA,MAAF;AAAUF,IAAAA,KAAV;AAAiBC,IAAAA;AAAjB,GAQsB;AAAA,MAPtB;AACE+C,IAAAA,SADF;AAEEC,IAAAA;AAFF,GAOsB;AACtB;AACA;AACA,MAAMC,oBAAoB,GAAGjD,KAAK,CAACa,MAAN,CAC1BC,IAAD,IAAU,CAACA,IAAI,CAACoB,oBADW,CAA7B;AAIA,SAAOpC,mBAAmB,CAAC;AACzBG,IAAAA,MADyB;AAEzBF,IAAAA,KAFyB;AAGzBC,IAAAA,KAAK,EAAEiD,oBAAoB,CAACJ,GAArB,CAA0B/B,IAAD,IAAU;AACxC;AACA,UAAM6B,KAAK,GACT7B,IAAI,CAACC,MAAL,KAAgBgC,SAAhB,GAA4BC,QAAQ,CAACE,OAAT,CAAiBpC,IAAI,CAACG,KAAtB,CAA5B,GAA2D,CAAC,CAD9D;AAEA,aAAO0B,KAAK,IAAI,CAAT,mCAEE7B,IAFF;AAGDE,QAAAA,IAAI,EAAE2B;AAHL,WAKH7B,IALJ;AAMD,KAVM;AAHkB,GAAD,CAA1B;AAeD;;AChCM,SAASqC,kBAAT,CACLC,OADK,QAGc;AAAA,MADnB;AAAEnD,IAAAA,MAAF;AAAUF,IAAAA,KAAV;AAAiBC,IAAAA;AAAjB,GACmB;AACnB,MAAMqD,WAAW,GAAG,IAAIC,GAAJ,EAApB;AACAC,EAAAA,kBAAkB,CAACH,OAAD,EAAUpD,KAAV,EAAiBqD,WAAjB,CAAlB;AACA,SAAO;AACLpD,IAAAA,MADK;AAELF,IAAAA,KAAK,EAAEA,KAAK,CAACc,MAAN,CAAcN,IAAD,IAAU,CAAC8C,WAAW,CAACG,GAAZ,CAAgBjD,IAAI,CAACG,KAArB,CAAxB,CAFF;AAGLV,IAAAA,KAAK,EAAEA,KAAK,CAACa,MAAN,CACJC,IAAD,IAAU,CAACuC,WAAW,CAACG,GAAZ,CAAgB1C,IAAI,CAACC,MAArB,CAAD,IAAiC,CAACsC,WAAW,CAACG,GAAZ,CAAgB1C,IAAI,CAACG,KAArB,CADvC;AAHF,GAAP;AAOD;;AAED,SAASsC,kBAAT,CACEH,OADF,EAEEpD,KAFF,EAGEqD,WAHF,EAIQ;AACNA,EAAAA,WAAW,CAACI,GAAZ,CAAgBL,OAAhB;AACA,MAAMM,GAAG,GAAG,IAAIJ,GAAJ,EAAZ;;AACA,OAAK,IAAMxC,IAAX,IAAmBd,KAAnB,EAA0B;AACxB,QAAIc,IAAI,CAACC,MAAL,KAAgBqC,OAApB,EAA6B;AAC3BM,MAAAA,GAAG,CAACD,GAAJ,CAAQ3C,IAAI,CAACG,KAAb;AACD;AACF;;AACD,OAAK,IAAM0C,EAAX,IAAiBD,GAAjB,EAAsB;AACpBH,IAAAA,kBAAkB,CAACI,EAAD,EAAK3D,KAAL,EAAYqD,WAAZ,CAAlB;AACD;AACF;;AChBM,SAASO,4BAAT,CACL7D,KADK,EAEL8D,wBAFK,EAGyB;AAC9B,MAAMC,QAAsC,GAAG,IAAIC,GAAJ,EAA/C;AAEA,MAAMC,SAAS,GAAG,IAAID,GAAJ,EAAlB;AACA,MAAME,YAAY,GAAG,IAAIF,GAAJ,EAArB;;AACA,OAAK,IAAMlC,CAAX,IAAgB9B,KAAhB,EAAuB;AACrB+D,IAAAA,QAAQ,CAAC7E,GAAT,CAAa4C,CAAC,CAACnB,KAAf,EAAsB;AACpBwD,MAAAA,aAAa,EAAE,IAAIZ,GAAJ,EADK;AAEpBa,MAAAA,eAAe,EAAE,IAAIb,GAAJ;AAFG,KAAtB;;AAIA,SAAK,IAAMc,QAAX,IAAuBvC,CAAC,CAACwC,kBAAzB,EAA6C;AAC3C,UAAI,CAACL,SAAS,CAACxF,GAAV,CAAc4F,QAAd,CAAL,EAA8B;AAC5BJ,QAAAA,SAAS,CAAC/E,GAAV,CAAcmF,QAAd,EAAwBvC,CAAC,CAACnB,KAA1B;AACD;AACF;;AACD,QAAImD,wBAAJ,EAA8B;AAC5B,UAAIhC,CAAC,CAACF,GAAN,EAAW;AACTsC,QAAAA,YAAY,CAAChF,GAAb,CAAiB4C,CAAC,CAACF,GAAnB,EAAkCE,CAAC,CAACnB,KAApC;AACD;AACF;AACF;;AAED,OAAK,IAAMH,IAAX,IAAmBR,KAAnB,EAA0B;AACxB,QAAIuE,QAA6B,GAAG,EAApC;;AACA,QAAI,CAACC,OAAO,CAAChE,IAAI,CAACiE,cAAN,CAAZ,EAAmC;AACjCF,MAAAA,QAAQ,GAAGnH,MAAM,CAACsH,MAAP,CAAclE,IAAI,CAACiE,cAAnB,EAAmCE,IAAnC,EAAX;AACD;;AACD,QAAI,CAACH,OAAO,CAAChE,IAAI,CAACoE,iBAAN,CAAZ,EAAsC;AACpCL,MAAAA,QAAQ,GAAGA,QAAQ,CAACM,MAAT,CACTzH,MAAM,CAAC0H,OAAP,CAAetE,IAAI,CAACoE,iBAApB,EAAuCG,OAAvC,CACE,QAAoC;AAAA,YAAnC,CAACC,aAAD,EAAgBC,aAAhB,CAAmC;;AAClC,gBAAQD,aAAR;AACE,eAAK,kBAAL;AACA,eAAK,YAAL;AACA,eAAK,aAAL;AACA,eAAK,mBAAL;AACA,eAAK,cAAL;AACA,eAAK,gBAAL;AACA,eAAK,gBAAL;AACE,mBAAOC,aAAP;;AACF,eAAK,WAAL;AACE,mBAAQ,EAAD,CACJJ,MADI,CACGI,aADH,EAEJF,OAFI,CAEKG,WAAD,IACN,EAAD,CAA4BL,MAA5B,CAAmCK,WAAW,CAACX,QAA/C,CAHG,CAAP;;AAKF;AACE;AACAY,YAAAA,OAAO,CAACC,IAAR,8BAAmCJ,aAAnC;AACA,mBAAO,EAAP;AAlBJ;AAoBD,OAtBH,CADS,CAAX;AA0BD;;AACD,QAAIT,QAAQ,CAAC5H,MAAT,GAAkB,CAAtB,EAAyB;AACvB0I,MAAAA,mBAAmB,CAAC7E,IAAD,EAAO+D,QAAP,EAAiBR,QAAjB,EAA2BE,SAA3B,EAAsCC,YAAtC,CAAnB;AACD;AACF;;AAED,SAAOH,QAAP;AACD;;AAED,SAASsB,mBAAT,CACE7E,IADF,EAEE+D,QAFF,EAGER,QAHF,EAIEE,SAJF,EAKEC,YALF,EAMQ;AACN,OAAK,IAAMoB,OAAX,IAAsBf,QAAtB,EAAoE;AAClE,QAAIe,OAAJ,EAAa;AACX,UAAIA,OAAO,CAAC3G,MAAZ,EAAoB;AAClB,YAAM4G,aAAa,GAAGtB,SAAS,CAACxF,GAAV,CAAc6G,OAAO,CAAC3G,MAAtB,CAAtB;;AACA,YAAI4G,aAAJ,EAAmB;AACjBxB,UAAAA,QAAQ,CAACtF,GAAT,CAAa+B,IAAI,CAACG,KAAlB,EAAyByD,eAAzB,CAAyCV,GAAzC,CAA6C6B,aAA7C;AACAxB,UAAAA,QAAQ,CAACtF,GAAT,CAAa8G,aAAb,EAA4BpB,aAA5B,CAA0CT,GAA1C,CAA8ClD,IAAI,CAACG,KAAnD;AACD;AACF,OAND,MAMO,IAAI2E,OAAO,CAACE,SAAZ,EAAuB;AAC5B,YAAMC,gBAAgB,GAAGvB,YAAY,CAACzF,GAAb,CAAiB6G,OAAO,CAACE,SAAzB,CAAzB;;AACA,YAAIC,gBAAJ,EAAsB;AACpB1B,UAAAA,QAAQ,CAACtF,GAAT,CAAa+B,IAAI,CAACG,KAAlB,EAAyByD,eAAzB,CAAyCV,GAAzC,CAA6C+B,gBAA7C;AACA1B,UAAAA,QAAQ,CAACtF,GAAT,CAAagH,gBAAb,EAA+BtB,aAA/B,CAA6CT,GAA7C,CAAiDlD,IAAI,CAACG,KAAtD;AACD;AACF;;AACD,UAAI2E,OAAO,CAAC/E,QAAZ,EAAsB;AACpB,aAAK,IAAMmF,gBAAX,IAA+BtI,MAAM,CAACsH,MAAP,CAAcY,OAAO,CAAC/E,QAAtB,CAA/B,EAAgE;AAC9D8E,UAAAA,mBAAmB,CACjB7E,IADiB,EAEjB,GAAGqE,MAAH,CAAUa,gBAAV,CAFiB,EAGjB3B,QAHiB,EAIjBE,SAJiB,EAKjBC,YALiB,CAAnB;AAOD;AACF;AACF;AACF;AACF;;AC/GD,IAAMyB,gBAAgB,GAAG,CAAC,QAAD,EAAW,UAAX,EAAuB,WAAvB,EAAoC,YAApC,CAAzB;AAEO,SAASC,cAAT,CACLC,QADK,EAELxC,OAFK,EAGLyC,sBAHK,EAIe;AAAA;;AACpB,MAAMC,gBAA0B,GAAG,EAAnC;;AAEA,MAAIF,QAAQ,CAACG,KAAb,EAAoB;AAClBD,IAAAA,gBAAgB,CAACjJ,IAAjB,CAAuB+I,QAAQ,CAACG,KAAV,CAA2BC,OAA3B,CAAmC,KAAnC,EAA0C,KAA1C,CAAtB;AACD;;AAED,MAAMC,UAAU,GAAGC,oBAAoB,CAACN,QAAD,CAAvC;AAEA,MAAMO,iBAAiB,GAAG,CAAC,YAAD,EAAe,QAAf,EAAyB,WAAzB,CAA1B;AACA,MAAMC,YAAiC,GAAG,EAA1C;;AAEA,OAAK,IAAMC,KAAX,IAAoBF,iBAApB,EAAuC;AACrC,QAAMG,MAAM,GAAGC,SAAS,CACrBN,UADqB,aACrBA,UADqB,uBACrBA,UAAD,CAA0CI,KAA1C,CADsB,CAAxB;AAGAD,IAAAA,YAAY,CAACvJ,IAAb,CAAkB,mBAAY2J,UAAU,CAACH,KAAD,CAAtB,GAAiCC,MAAjC,aAAiCA,MAAjC,cAAiCA,MAAjC,GAA2C,EAA3C,CAAlB;;AAEA,QACED,KAAK,KAAK,YAAV,IACAC,MADA,aACAA,MADA,eACAA,MAAM,CAAE3C,EADR,IAEA,OAAO2C,MAAM,CAAC3C,EAAd,KAAqB,QAFrB;AAIA;AACA,KAAC,OAAO8C,IAAP,CAAYH,MAAM,CAAC3C,EAAnB,CANH,EAOE;AACAmC,MAAAA,gBAAgB,CAACjJ,IAAjB,YAA0ByJ,MAAM,CAAC3C,EAAjC;AACD;AACF;;AAED,SAAOxG,MAAM,CAACuJ,WAAP,CACLvJ,MAAM,CAAC0H,OAAP,CAAee,QAAf,EACG/E,MADH,CACW8F,KAAD,IAAW,CAACjB,gBAAgB,CAACkB,QAAjB,CAA0BD,KAAK,CAAC,CAAD,CAA/B,CADtB,EAEG/B,MAFH,CAEU,CACN,CACE,OADF,qBAEEgB,QAAQ,CAACiB,KAFX,6DAGKC,WAAW,CAAClB,QAAD,CAAX,GACGA,QAAQ,CAACG,KAAT,CAAegB,KAAf,CAAqB,GAArB,EAA0BC,GAA1B,EADH,GAEG/E,SALR,CADM,EAQN,CAAC,OAAD,EAAUmB,OAAV,CARM,EASN,CAAC,oBAAD,EAAuB0C,gBAAvB,CATM,EAUN,CAAC,0BAAD,EAA6BD,sBAA7B,CAVM,EAWN,CAAC,cAAD,EAAiBI,UAAjB,CAXM,CAFV,EAeGrB,MAfH,CAeUwB,YAfV,CADK,CAAP;AAkBD;;AC9CM,SAASa,yBAAT,CACLrB,QADK,EAELxC,OAFK,EAGL8D,iBAHK,EAQL;AAAA,MAJAC,SAIA,uEAJqB,EAIrB;AACA,MAAMpH,KAA2B,GAAG,EAApC;AACA,MAAMC,KAA2B,GAAG,EAApC;;AACA,MAAMI,IAAI,GAAG,CACXwF,QADW,EAEXwB,UAFW,EAGXC,oBAHW,EAIXxB,sBAJW,EAKXyB,yBALW,KAMF;AAAA;;AACT,QAAMC,WAAW,GAAG5B,cAAc,CAChCC,QADgC,EAEhCwB,UAFgC,EAGhCvB,sBAHgC,CAAlC;AAKA9F,IAAAA,KAAK,CAAClD,IAAN,CAAW0K,WAAX;;AAEA,QAAID,yBAAyB,IAAIC,WAAW,CAAC5F,GAA7C,EAAkD;AAChD2F,MAAAA,yBAAyB,CAACrI,GAA1B,CAA8BsI,WAAW,CAAC5F,GAA1C,EAAyDyF,UAAzD;AACD;;AAED,QAAII,cAAJ;;AAEA,QACEV,WAAW,CAACS,WAAD,CAAX,KACE,CAACA,WAAW,CAACxB,KAAZ,CAAkBa,QAAlB,CAA2B,GAA3B,CAAD,IACAW,WAAW,CAACxB,KAAZ,CAAkB0B,UAAlB,CAA6B,MAA7B,CADA,IAEA,CAACJ,oBAAoB,CAAC7D,GAArB,CAAyB+D,WAAW,CAACxB,KAArC,CAFD,KAGCyB,cAAc,GAAGN,iBAAH,aAAGA,iBAAH,uBAAGA,iBAAiB,CAAE1I,GAAnB,CAAuB+I,WAAW,CAACxB,KAAnC,CAHlB,KAIA,0BAAAyB,cAAc,CAACE,QAAf,gFAAyBhL,MAAzB,IAAkC,CAJnC,IAKE6K,WAAW,CAACxB,KAAZ,CAAkBa,QAAlB,CAA2B,OAA3B,MACEY,cAAc,GAAGL,SAAH,aAAGA,SAAH,0CAAGA,SAAS,CAAE3G,IAAX,CACfC,IAAD,IAAUA,IAAI,CAACkH,OAAL,KAAiBJ,WAAW,CAACxB,KADvB,CAAH,oDAAG,gBAEf6B,UAHJ,KAIC,2BAAAJ,cAAc,CAACE,QAAf,kFAAyBhL,MAAzB,IAAkC,CAVtC,CADF,EAYE;AACA;AACA2K,MAAAA,oBAAoB,CAAC5D,GAArB,CAAyB8D,WAAW,CAACxB,KAArC;AACAwB,MAAAA,WAAW,CAAChG,sBAAZ,GAAqC,IAArC;AACAgG,MAAAA,WAAW,CAAC/F,eAAZ,GACEgG,cAAc,CAACK,KAAf,IAAwBC,IAAI,CAACC,KAAL,CAAWP,cAAc,CAACK,KAA1B,CAD1B;AAEA,UAAMG,gBAAgB,GAAG,IAAIjE,GAAJ,EAAzB;AACAwD,MAAAA,WAAW,CAAC7F,kBAAZ,GAAiCsG,gBAAjC;AAEA,UAAMC,cAAc,GAAGrH,MAAM,CAAC4G,cAAc,CAACE,QAAhB,EAA0B,CACpDjH,IAAD;AAAA;;AAAA,6BAAUA,IAAI,CAACO,IAAf,mDAAuB,CAACkH,QAAxB;AAAA,OADqD,CAA1B,CAA7B;AAGAD,MAAAA,cAAc,CAACvF,OAAf,CAAuB,CAACzB,KAAD,EAAQ0B,KAAR,KAAkB;AACvC,YAAMvB,QAAQ,GAAGvB,eAAe,EAAhC;AACAO,QAAAA,IAAI,CACFa,KADE,EAEFG,QAFE;AAIF,YAAIkC,GAAJ,CAAQ+D,oBAAR,CAJE,EAKF,IALE,EAMFW,gBANE,CAAJ;AAQAhI,QAAAA,KAAK,CAACnD,IAAN,CAAW;AACToE,UAAAA,KAAK,EAAEG,QADE;AAETL,UAAAA,MAAM,EAAEqG,UAFC;AAGTjG,UAAAA,UAAU,EAAE,EAHH;AAITH,UAAAA,IAAI,EAAE2B,KAJG;AAKTN,UAAAA,oBAAoB,EAAE;AALb,SAAX;AAOD,OAjBD;;AAmBA,UAAI,CAACkF,WAAW,CAACY,wBAAjB,EAA2C;AACzC;AACA,YAAMC,sBAAsB,GAAG,CAC7BC,UAD6B,EAE7BlH,UAF6B,EAG7BmH,cAH6B,KAIpB;AAAA;;AACT,uCAAID,UAAU,CAAC7G,eAAf,kDAAI,sBAA4BC,KAAhC,EAAuC;AAAA;;AACrC,gBAAM8G,WAAW,GAAGpL,MAAM,CAAC0H,OAAP,2BAClBwD,UAAU,CAAC7G,eADO,2DAClB,uBAA4BC,KADV,EAElBZ,MAFkB,CAGjB8F,KAAD,IAAWxF,UAAU,KAAKc,SAAf,IAA4B0E,KAAK,CAAC,CAAD,CAAL,KAAaxF,UAHlC,CAApB;;AADqC,kCAMzBqH,QANyB,EAMfC,QANe;AAOnC,kBAAMC,MAAM,GAAGL,UAAU,CAAC3G,kBAAX,CAA8BlD,GAA9B,CAAkCiK,QAAQ,CAAC9G,GAA3C,CAAf;;AACA,kBAAI+G,MAAJ,EAAY;AACV,oBAAMC,OAAO,GAAG5I,KAAK,CAACS,IAAN,CAAYD,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAegI,MAApC,CAAhB;;AACA,oBAAIC,OAAO,CAACpH,sBAAZ,EAAoC;AAClC6G,kBAAAA,sBAAsB,CAACO,OAAD,EAAUF,QAAQ,CAAC1G,OAAnB,EAA4ByG,QAA5B,CAAtB;AACD,iBAFD,MAEO;AACL,sBAAI,CAACG,OAAO,CAACC,gBAAb,EAA+B;AAC7BD,oBAAAA,OAAO,CAACC,gBAAR,GAA2B,IAAI7E,GAAJ,EAA3B;AACD;;AACD,sBAAI8E,uBAAuB,GAAGF,OAAO,CAACC,gBAAR,CAAyBpK,GAAzB,CAC5BiK,QAAQ,CAAC1G,OADmB,CAA9B;;AAGA,sBAAI,CAAC8G,uBAAL,EAA8B;AAC5BA,oBAAAA,uBAAuB,GAAG,EAA1B;AACAF,oBAAAA,OAAO,CAACC,gBAAR,CAAyB3J,GAAzB,CACEwJ,QAAQ,CAAC1G,OADX,EAEE8G,uBAFF;AAID;;AACDA,kBAAAA,uBAAuB,CAAChM,IAAxB,CAA6B;AAC3BiM,oBAAAA,WAAW,EAAEvB,WAAW,CAAC7G,KADE;AAE3BqI,oBAAAA,kBAAkB,EAAET,cAAc,IAAIE;AAFX,mBAA7B;AAID;AACF;AA/BkC;;AAMrC,iBAAK,IAAM,CAACA,QAAD,EAAWC,QAAX,CAAX,IAAmCF,WAAnC,EAAgD;AAAA,oBAApCC,QAAoC,EAA1BC,QAA0B;AA0B/C;AACF;AACF,SAvCD;;AAwCAL,QAAAA,sBAAsB,CAACb,WAAD,CAAtB;;AAEA,YAAMyB,2BAA2B,GAAG,CAClCX,UADkC,EAElCY,oBAFkC,KAGzB;AAAA;;AACT,wCAAIZ,UAAU,CAAC7G,eAAf,mDAAI,uBAA4B0H,UAAhC,EAA4C;AAAA;;AAC1C,gBAAMC,eAAe,GAAGhM,MAAM,CAAC0H,OAAP,2BACtBwD,UAAU,CAAC7G,eADW,2DACtB,uBAA4B0H,UADN,EAEtBrI,MAFsB,CAGrB8F,KAAD,IACEsC,oBAAoB,KAAKhH,SAAzB,IACA0E,KAAK,CAAC,CAAD,CAAL,KAAasC,oBALO,CAAxB;;AAOA,iBAAK,IAAM,CAACG,YAAD,EAAeC,YAAf,CAAX,IAA2CF,eAA3C,EAA4D;AAC1D,kBACE9M,cAAc,CAACgM,UAAU,CAACiB,kBAAZ,EAAgCF,YAAhC,CAAd,IACAG,kBAAkB,CAACF,YAAD,CAFpB,EAGE;AAAA;AACA,sBAAMX,MAAM,GAAGL,UAAU,CAAC3G,kBAAX,CAA8BlD,GAA9B,CACb6K,YAAY,CAAC1H,GADA,CAAf;AAGA,sBAAM6H,aAAa,GACjBnB,UAAU,CAACiB,kBAAX,CAA8BF,YAA9B,CADF;;AAEA,sBAAIV,MAAJ,EAAY;AACV,wBAAMC,OAAO,GAAG5I,KAAK,CAACS,IAAN,CAAYD,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAegI,MAApC,CAAhB;AACAC,oBAAAA,OAAO,CAACW,kBAAR,CAA2BD,YAAY,CAACI,WAAxC,IACED,aADF;;AAEA,wBAAIb,OAAO,CAACpH,sBAAZ,EAAoC;AAClCyH,sBAAAA,2BAA2B,CACzBL,OADyB,EAEzBU,YAAY,CAACI,WAFY,CAA3B;AAID;AACF;AAhBD;AAiBD;AACF;AACF;AACF,SApCD;;AAqCAT,QAAAA,2BAA2B,CAACzB,WAAD,CAA3B;AACD;AACF;;AAED,QAAIzK,KAAK,CAACC,OAAN,CAAc6I,QAAQ,CAAC8B,QAAvB,CAAJ,EAAsC;AACpC;AACA;AACA;AACA,UAAIgC,0BAAJ;;AACA,cAAQnC,WAAW,CAACnJ,IAApB;AACE,aAAK,QAAL;AACA,aAAK,iBAAL;AACEsL,UAAAA,0BAA0B,GAAG,QAA7B;AACA;;AACF,aAAK,QAAL;AACEA,UAAAA,0BAA0B,GAAG,QAA7B;AACA;AAPJ;;AASA,UAAMzB,eAAc,GAAGrH,MAAM,CAACgF,QAAQ,CAAC8B,QAAV,EAAoB,CAC9CjH,IAAD;AAAA;;AAAA,8BAAUA,IAAI,CAACO,IAAf,qDAAuB,CAACkH,QAAxB;AAAA,OAD+C,CAApB,CAA7B;;AAGAD,MAAAA,eAAc,CAACvF,OAAf,CAAuB,CAACzB,KAAD,EAAQ0B,KAAR,KAAkB;AAAA;;AACvC,YAAMvB,QAAQ,GAAGvB,eAAe,EAAhC;AACAO,QAAAA,IAAI,CACFa,KADE,EAEFG,QAFE;AAIF,YAAIkC,GAAJ,CAAQ+D,oBAAR,CAJE,EAKFxB,sBALE,EAMFyB,yBANE,CAAJ;AAQAtH,QAAAA,KAAK,CAACnD,IAAN,CAAW;AACToE,UAAAA,KAAK,EAAEG,QADE;AAETL,UAAAA,MAAM,EAAEqG,UAFC;AAGTjG,UAAAA,UAAU,2BAAEuI,0BAAF,yEAAgCzI,KAAK,CAACE,UAHvC;AAITH,UAAAA,IAAI,EAAE2B,KAJG;AAKTN,UAAAA,oBAAoB,EAAEwD,sBALb;AAMT8D,UAAAA,qBAAqB,EAAEpC,WAAW,CAAChG;AAN1B,SAAX;AAQD,OAlBD;AAmBD;AACF,GAzLD;;AA0LAnB,EAAAA,IAAI,CAACwF,QAAD,EAAWxC,OAAX,EAAoB,IAAIE,GAAJ,EAApB,CAAJ;AACA,SAAO;AACLvD,IAAAA,KADK;AAELC,IAAAA;AAFK,GAAP;AAID;AAEM,SAASuJ,kBAAT,CACLK,OADK,EAEwC;AAC7C,SACE,CAAC,CAAEA,OAAD,CAA8CjI,GAAhD,IACA,CAAC,CAAEiI,OAAD,CAA8CH,WAFlD;AAID;;AC/NM,SAASI,0BAAT,CACL9J,KADK,EAELgD,SAFK,EAGI;AACT,SAAOhD,KAAK,CAACS,IAAN,CAAYD,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAeqC,SAApC,EAA+CxB,sBAAtD;AACD;;IC+BIuI;;WAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;GAAAA,6BAAAA;;AAiBL,IAAMC,gCAAgC,GAAG,gCAAzC;AAEO,MAAMC,kBAAN,CAA+D;AAAA;AAAA;;AAAA,kCAClC;AAChC/J,MAAAA,MAAM,EAAE,IADwB;AAEhCF,MAAAA,KAAK,EAAE,EAFyB;AAGhCC,MAAAA,KAAK,EAAE;AAHyB,KADkC;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,yCAerC,IAAInC,aAAJ,EAfqC;;AAAA,+CAiBd;AACpDoM,MAAAA,MAAM,EAAE;AAD4C,KAjBc;;AAAA;;AAAA;;AAAA,4CAyB9B,IAAI3G,GAAJ,EAzB8B;;AAAA;;AAAA,4CA6BpB,IAAIS,GAAJ,EA7BoB;;AAAA,8CA+BhC,IAAImG,WAAJ,CAEjCC,YAFiC,CA/BgC;;AAAA,kDAmCf,IAAI7G,GAAJ,0BACnD,KAAK8G,gBAAL,CAAsBC,OAAtB,CAA8BN,gCAA9B,CADmD,yEACgB,EADhB,CAnCe;;AAAA,8CA8IhDO,MAAD,IAAkC;AACnD,UAAM;AAAErK,QAAAA,MAAF;AAAUF,QAAAA,KAAV;AAAiBC,QAAAA;AAAjB,UAA2B,KAAKuK,IAAtC;AACA,UAAM;AAAEnH,QAAAA,OAAF;AAAWL,QAAAA,SAAX;AAAsBC,QAAAA,QAAtB;AAAgC4C,QAAAA;AAAhC,UAA6C0E,MAAnD;AAEA,UAAM;AAAEvK,QAAAA,KAAK,EAAEyK,QAAT;AAAmBxK,QAAAA,KAAK,EAAEyK;AAA1B,UAAuCxD,yBAAyB,CACpEyD,IAAI,CAAC9E,QAAD,EAAW,CACb,QADa,CAAX,CADgE,EAIpExC,OAJoE,EAKpE,KAAK8D,iBAL+D,EAMpE,KAAKyD,YAAL,EANoE,CAAtE;AASA,UAAMC,QAAQ,GAAG7K,KAAK,CAAC6E,MAAN,CAAa4F,QAAb,CAAjB;AACA,UAAMtK,QAAQ,GAAGF,KAAK,CACnB4E,MADc,CACP;AACN7D,QAAAA,MAAM,EAAEgC,SADF;AAEN9B,QAAAA,KAAK,EAAEmC,OAFD;AAGNjC,QAAAA,UAAU,EAAEyE,QAAQ,CAACzE,UAHf;AAINH,QAAAA,IAAI,EAAEiB,SAJA;AAKN0H,QAAAA,qBAAqB,EAAEE,0BAA0B,CAAC9J,KAAD,EAAQgD,SAAR;AAL3C,OADO,EAQd6B,MARc,CAQP6F,QARO,CAAjB;AAUA,UAAMI,OAAO,GAAG;AACd5K,QAAAA,MADc;AAEdF,QAAAA,KAAK,EAAE6K,QAFO;AAGd5K,QAAAA,KAAK,EAAEE;AAHO,OAAhB;AAKA,WAAKqK,IAAL,mCACKM,OADL;AAEE7K,QAAAA,KAAK,EAAE8C,mBAAmB,CAAC+H,OAAD,EAAU;AAClC9H,UAAAA,SADkC;AAElCC,UAAAA;AAFkC,SAAV;AAF5B;AAOA,WAAK8H,iBAAL;AACD,KAnLmE;AAAA;;AAuCpEC,EAAAA,OAAO,GAAsB;AAC3B,WAAO,KAAKR,IAAZ;AACD;;AAEDS,EAAAA,oBAAoB,GAA6B;AAC/C,WAAO,KAAKC,iBAAZ;AACD;;AAEDC,EAAAA,+BAA+B,GAAiC;AAC9D,WAAO,KAAKC,4BAAZ;AACD;;AAEDC,EAAAA,oBAAoB,CAACb,IAAD,EAAiC;AACnD,SAAKc,gBAAL,GAAwBd,IAAxB;AACA,SAAKe,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAAC2B,yBAAzC,CADF;AAGD;;AAEDC,EAAAA,mBAAmB,GAAuB;AAAA;;AACxC,oCAAO,KAAKL,gBAAZ,yEAAgC,EAAhC;AACD;;AAEDM,EAAAA,wBAAwB,CAACC,EAAD,EAAgC;AACtD,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAAC2B,yBAD3B,EAEEG,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAAC2B,yBAD3B,EAEEG,EAFF;AAID,KALD;AAMD;;AAEDE,EAAAA,aAAa,CAACvB,IAAD,EAAiC;AAC5C,SAAKwB,SAAL,GAAiBxB,IAAjB;AACA,SAAKe,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACkC,iBAAzC,CADF;AAGD;;AAEDC,EAAAA,YAAY,GAAuB;AAAA;;AACjC,8BAAO,KAAKF,SAAZ,6DAAyB,EAAzB;AACD;;AAEDG,EAAAA,aAAa,CAAC3B,IAAD,EAAsB;AACjC,SAAKpD,SAAL,GAAiBoD,IAAjB;AACD;;AAEDI,EAAAA,YAAY,GAAY;AACtB,WAAO,KAAKxD,SAAZ;AACD;;AAEDgF,EAAAA,iBAAiB,CAACP,EAAD,EAAgC;AAC/C,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAACkC,iBAD3B,EAEEJ,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACkC,iBAD3B,EAEEJ,EAFF;AAID,KALD;AAMD;;AAEDQ,EAAAA,QAAQ,CACNC,IADM,EAENnF,iBAFM,EAGA;AACN,SAAKA,iBAAL,GAAyBA,iBAAzB;AACA,QAAMjH,MAAM,GAAGJ,eAAe,EAA9B;;AACA,QAAMgL,OAAO;AACX5K,MAAAA;AADW,OAERgH,yBAAyB,CAC1BoF,IAD0B,EAE1BpM,MAF0B,EAG1BiH,iBAH0B,EAI1B,KAAKC,SAJqB,CAFjB,CAAb;;AASA,SAAKoD,IAAL,mCACKM,OADL;AAEE7K,MAAAA,KAAK,EAAEF,mBAAmB,CAAC+K,OAAD;AAF5B;AAIA,SAAKC,iBAAL;AACD;;AAEOA,EAAAA,iBAAiB,GAAS;AAChC,QAAM;AAAE7K,MAAAA,MAAF;AAAUF,MAAAA;AAAV,QAAoB,KAAKwK,IAA/B;AACA,QAAM+B,QAAQ,GAAGvM,KAAK,CAACS,IAAN,CAAYD,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAeT,MAApC,CAAjB;AACA,QAAM4D,wBAAwB,GAAGyI,QAAQ,CAAClO,IAAT,KAAkB,iBAAnD;AACA,SAAK+M,4BAAL,GAAoCvH,4BAA4B,CAC9D7D,KAD8D,EAE9D8D,wBAF8D,CAAhE;AAIA,SAAKyH,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACyC,WAAzC,CADF;AAGD;;AAyCDC,EAAAA,WAAW,CAAClC,MAAD,EAA+B;AACxC,SAAKC,IAAL,GAAYpH,kBAAkB,CAACmH,MAAM,CAAClH,OAAR,EAAiB,KAAKmH,IAAtB,CAA9B;AAEA,SAAKkC,gBAAL,CAAsBnC,MAAtB;AACD;;AAEDoC,EAAAA,OAAO,CAACpC,MAAD,EAAqC;AAC1C,SAAKmC,gBAAL,CAAsBnC,MAAtB;AAEA,SAAKgB,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAAC6C,QAAzC,EAAmD;AAAErC,MAAAA;AAAF,KAAnD,CADF;AAGD;;AAEDsC,EAAAA,aAAa,CAACtC,MAAD,EAA2C;AACtD,QAAM;AAAErK,MAAAA,MAAF;AAAUF,MAAAA,KAAV;AAAiBC,MAAAA;AAAjB,QAA2B,KAAKuK,IAAtC;AACA,QAAM;AAAEnH,MAAAA,OAAF;AAAWwC,MAAAA;AAAX,QAAwB0E,MAA9B;AACA,SAAKC,IAAL,GAAY;AACVtK,MAAAA,MADU;AAEVF,MAAAA,KAAK,EAAEA,KAAK,CAAC8C,GAAN,CAAWtC,IAAD,IACfA,IAAI,CAACG,KAAL,KAAe0C,OAAf,mCACS7C,IADT;AACeoD,QAAAA,EAAE,EAAEiC,QAAQ,CAACjC,EAD5B;AACgCkJ,QAAAA,UAAU,EAAEjH,QAAQ,CAACiH;AADrD,WAEItM,IAHC,CAFG;AAOVP,MAAAA;AAPU,KAAZ;AASA,SAAK8K,iBAAL;AACD;;AAEDgC,EAAAA,YAAY,CAACxC,MAAD,EAA0C;AACpD,QAAM;AAAErK,MAAAA,MAAF;AAAUF,MAAAA,KAAV;AAAiBC,MAAAA;AAAjB,QAA2B,KAAKuK,IAAtC;AACA,QAAM;AAAEwC,MAAAA,WAAF;AAAehK,MAAAA,SAAf;AAA0BC,MAAAA;AAA1B,QAAuCsH,MAA7C;AAEA,QAAMM,QAA8B,GAAG7K,KAAK,CAACnB,KAAN,EAAvC;AACA,QAAMsB,QAA8B,GAAGF,KAAK,CAACpB,KAAN,EAAvC;;AAEA,QAAMwB,IAAI,GAAG,QAKkB;AAAA,UALjB;AACZ2C,QAAAA,SADY;AAEZK,QAAAA,OAFY;AAGZwC,QAAAA,QAHY;AAIZ8B,QAAAA;AAJY,OAKiB;AAC7B,UAAM;AAAE3H,QAAAA,KAAK,EAAEiN,cAAT;AAAyBhN,QAAAA,KAAK,EAAEiN;AAAhC,UACJhG,yBAAyB,CACvByD,IAAI,CAAC9E,QAAD,EAAW,CACb,QADa,CAAX,CADmB,EAIvBxC,OAJuB,EAKvB,KAAK8D,iBALkB,EAMvB,KAAKC,SANkB,CAD3B;AASAyD,MAAAA,QAAQ,CAAC/N,IAAT,CAAc,GAAGmQ,cAAjB;AACA9M,MAAAA,QAAQ,CAACrD,IAAT,CACE;AACEkE,QAAAA,MAAM,EAAEgC,SADV;AAEE9B,QAAAA,KAAK,EAAEmC,OAFT;AAGEjC,QAAAA,UAAU,EAAEyE,QAAQ,CAACzE,UAHvB;AAIEH,QAAAA,IAAI,EAAE4E,QAAQ,CAAC5E,IAJjB;AAKE2I,QAAAA,qBAAqB,EAAEE,0BAA0B,CAC/Ce,QAD+C,EAE/C7H,SAF+C;AALnD,OADF,EAWE,GAAGkK,cAXL;;AAaA,WAAK,IAAMxM,IAAX,IAAmBiH,QAAnB,EAA6B;AAC3BtH,QAAAA,IAAI,CAACK,IAAD,CAAJ;AACD;AACF,KAhCD;;AAkCA,SAAK,IAAMA,IAAX,IAAmBsM,WAAnB,EAAgC;AAC9B3M,MAAAA,IAAI,CAACK,IAAD,CAAJ;AACD;;AAED,QAAMoK,OAAO,GAAG;AACd5K,MAAAA,MADc;AAEdF,MAAAA,KAAK,EAAE6K,QAFO;AAGd5K,MAAAA,KAAK,EAAEE;AAHO,KAAhB;AAKA,SAAKqK,IAAL,mCACKM,OADL;AAEE7K,MAAAA,KAAK,EAAE8C,mBAAmB,CAAC+H,OAAD,EAAU;AAClC9H,QAAAA,SADkC;AAElCC,QAAAA;AAFkC,OAAV;AAF5B;AAOA,SAAK8H,iBAAL;AACA,SAAKQ,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACoD,aAAzC,EAAwD;AAAE5C,MAAAA;AAAF,KAAxD,CADF;AAGD;;AAED6C,EAAAA,kBAAkB,CAAC7C,MAAD,EAAgD;AAChE,QAAM;AAAErK,MAAAA,MAAF;AAAUF,MAAAA,KAAV;AAAiBC,MAAAA;AAAjB,QAA2B,KAAKuK,IAAtC;AACA,QAAM;AAAE6C,MAAAA;AAAF,QAAyB9C,MAA/B;AACA,SAAKC,IAAL,GAAY;AACVtK,MAAAA,MADU;AAEVF,MAAAA,KAAK,EAAEA,KAAK,CAAC8C,GAAN,CAAWtC,IAAD,IAAU;AACzB,YAAM8M,KAAK,GAAGD,kBAAkB,CAAC5M,IAAnB,CAAyBqB,CAAD,IAAOA,CAAC,CAACuB,OAAF,KAAc7C,IAAI,CAACG,KAAlD,CAAd;AACA,eAAO2M,KAAK,mCAEH9M,IAFG;AAGNoD,UAAAA,EAAE,EAAE0J,KAAK,CAACzH,QAAN,CAAejC,EAHb;AAINkJ,UAAAA,UAAU,EAAEQ,KAAK,CAACzH,QAAN,CAAeiH;AAJrB,aAMRtM,IANJ;AAOD,OATM,CAFG;AAYVP,MAAAA;AAZU,KAAZ;AAcA,SAAK8K,iBAAL;AACD;;AAEDwC,EAAAA,QAAQ,CAAChD,MAAD,EAAsC;AAC5C,QAAM;AAAErK,MAAAA,MAAF;AAAUF,MAAAA,KAAV;AAAiBC,MAAAA;AAAjB,QAA2B,KAAKuK,IAAtC;AACA,QAAM;AAAEnH,MAAAA,OAAF;AAAWL,MAAAA,SAAX;AAAsBC,MAAAA,QAAtB;AAAgC4C,MAAAA;AAAhC,QAA6C0E,MAAnD;AACA,QAAMO,OAAO,GAAG;AACd5K,MAAAA,MADc;AAEdF,MAAAA,KAFc;AAGdC,MAAAA,KAAK,EAAEA,KAAK,CACTa,MADI,CACIC,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAemC,OAD5B,EAEJwB,MAFI,CAEG;AACN7D,QAAAA,MAAM,EAAEgC,SADF;AAEN9B,QAAAA,KAAK,EAAEmC,OAFD;AAGNjC,QAAAA,UAAU,EAAEyE,QAAQ,CAACzE,UAHf;AAINH,QAAAA,IAAI,EAAEiB,SAJA;AAKN0H,QAAAA,qBAAqB,EAAEE,0BAA0B,CAAC9J,KAAD,EAAQgD,SAAR;AAL3C,OAFH;AAHO,KAAhB;AAaA,SAAKwH,IAAL,mCACKM,OADL;AAEE7K,MAAAA,KAAK,EAAE8C,mBAAmB,CAAC+H,OAAD,EAAU;AAClC9H,QAAAA,SADkC;AAElCC,QAAAA;AAFkC,OAAV;AAF5B;AAOA,SAAK8H,iBAAL;AACA,SAAKQ,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACyD,SAAzC,EAAoD;AAAEjD,MAAAA;AAAF,KAApD,CADF;AAGD;;AAEDkD,EAAAA,cAAc,CAAClD,MAAD,EAA4C;AACxD,QAAM;AAAErK,MAAAA,MAAF;AAAUF,MAAAA,KAAV;AAAiBC,MAAAA;AAAjB,QAA2B,KAAKuK,IAAtC;AACA,SAAKA,IAAL,GAAY;AACVtK,MAAAA,MADU;AAEVD,MAAAA,KAFU;AAGVD,MAAAA,KAAK,EAAEA,KAAK,CAAC8C,GAAN,CAAWtC,IAAD,IACfA,IAAI,CAACG,KAAL,KAAeT,MAAf,mCAA6BM,IAA7B;AAAmCkN,QAAAA,OAAO,EAAEnD,MAAM,CAACmD;AAAnD,WAA+DlN,IAD1D;AAHG,KAAZ;AAOA,SAAKuK,iBAAL;AACD;;AAED4C,EAAAA,WAAW,CAACpD,MAAD,EAAyC;AAClD,QAAM;AAAEtH,MAAAA,QAAF;AAAYD,MAAAA;AAAZ,QAA0BuH,MAAhC;AACA,SAAKC,IAAL,mCACK,KAAKA,IADV;AAEEvK,MAAAA,KAAK,EAAE8C,mBAAmB,CAAC,KAAKyH,IAAN,EAAY;AAAExH,QAAAA,SAAF;AAAaC,QAAAA;AAAb,OAAZ;AAF5B;AAIA,SAAK8H,iBAAL;AACA,SAAKQ,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAAC6D,YAAzC,EAAuD;AAAErD,MAAAA;AAAF,KAAvD,CADF;AAGD;;AAEDsD,EAAAA,UAAU,CAACtD,MAAD,EAAmC;AAC3C,SAAKC,IAAL,GAAYpH,kBAAkB,CAACmH,MAAM,CAAC5J,KAAR,EAAe,KAAK6J,IAApB,CAA9B;AACA,SAAKO,iBAAL;AACD;;AAED+C,EAAAA,SAAS,CAACvD,MAAD,EAAmC;AAC1C,SAAKgB,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACgE,UAAzC,EAAqD;AAAExD,MAAAA;AAAF,KAArD,CADF;AAGD;;AAEDyD,EAAAA,iBAAiB,CAACzD,MAAD,EAAyC;AACxD,SAAKW,iBAAL,GAAyBX,MAAzB;AACA,SAAKgB,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACkE,mBAAzC,CADF;AAGD;;AAEDC,EAAAA,YAAY,CAACrC,EAAD,EAAgC;AAC1C,SAAKN,WAAL,CAAiBO,gBAAjB,CAAkC/B,wBAAwB,CAACyC,WAA3D,EAAwEX,EAAxE;AACA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACyC,WAD3B,EAEEX,EAFF;AAID,KALD;AAMD;;AAEDsC,EAAAA,SAAS,CACPtC,EADO,EAEK;AACZ,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAAC6C,QAD3B,EAEEf,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAAC6C,QAD3B,EAEEf,EAFF;AAID,KALD;AAMD;;AAEDuC,EAAAA,cAAc,CACZvC,EADY,EAEA;AACZ,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAACoD,aAD3B,EAEEtB,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACoD,aAD3B,EAEEtB,EAFF;AAID,KALD;AAMD;;AAEDwC,EAAAA,aAAa,CACXxC,EADW,EAEC;AACZ,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAAC6D,YAD3B,EAEE/B,EAFF;AAIA,WAAO,MAAM;AACX,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAAC6D,YAD3B,EAEE/B,EAFF;AAID,KALD;AAMD;;AAEDyC,EAAAA,UAAU,CACRzC,EADQ,EAEI;AACZ,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAACyD,SAD3B,EAEE3B,EAFF;AAIA,WAAO,MAAM;AACX,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACyD,SAD3B,EAEE3B,EAFF;AAID,KALD;AAMD;;AAED0C,EAAAA,WAAW,CACT1C,EADS,EAEG;AACZ,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAACgE,UAD3B,EAEElC,EAFF;AAIA,WAAO,MAAM;AACX,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACgE,UAD3B,EAEElC,EAFF;AAID,KALD;AAMD;;AAED2C,EAAAA,mBAAmB,CACjB3C,EADiB,EAEL;AACZ,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAACkE,mBAD3B,EAEEpC,EAFF;AAIA,WAAO,MAAM;AACX,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACkE,mBAD3B,EAEEpC,EAFF;AAID,KALD;AAMD;;AAED4C,EAAAA,gCAAgC,CAACC,IAAD,EAAsB;AACpD,SAAKC,6BAAL,GAAqCD,IAArC;AACA,SAAKnD,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CACE1B,wBAAwB,CAAC6E,kCAD3B,CADF;AAKD;;AAEDC,EAAAA,gCAAgC,GAAY;AAC1C,WAAO,KAAKF,6BAAZ;AACD;;AAEDG,EAAAA,qCAAqC,CAACjD,EAAD,EAAgC;AACnE,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAAC6E,kCAD3B,EAEE/C,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAAC6E,kCAD3B,EAEE/C,EAFF;AAID,KALD;AAMD;;AAEDkD,EAAAA,eAAe,CAACzO,GAAD,EAAoB;AACjC,QAAI,KAAK0O,YAAL,KAAsB1O,GAA1B,EAA+B;AAC7B,WAAK0O,YAAL,GAAoB1O,GAApB;AACA,WAAKiL,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACkF,iBAAzC,CADF;AAGD;AACF;;AAEDC,EAAAA,eAAe,GAAW;AACxB,WAAO,KAAKF,YAAZ;AACD;;AAEDG,EAAAA,iBAAiB,CAACtD,EAAD,EAAgC;AAC/C,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAACkF,iBAD3B,EAEEpD,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACkF,iBAD3B,EAEEpD,EAFF;AAID,KALD;AAMD;;AAEDuD,EAAAA,aAAa,CAACC,cAAD,EAA+B;AAC1C,QAAI,KAAKC,oBAAL,CAA0B7L,GAA1B,CAA8B4L,cAA9B,CAAJ,EAAmD;AACjD,WAAKC,oBAAL,CAA0BC,MAA1B,CAAiCF,cAAjC;AACD,KAFD,MAEO;AACL,WAAKC,oBAAL,CAA0B5L,GAA1B,CAA8B2L,cAA9B;AACD;;AACD,SAAKhF,gBAAL,CAAsBmF,OAAtB,CACExF,gCADF,EAEEjN,KAAK,CAAC0S,IAAN,CAAW,KAAKH,oBAAhB,CAFF;AAIA,SAAK/D,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAAC2F,6BAAzC,CADF;AAGD;;AAEDC,EAAAA,gBAAgB,CAACN,cAAD,EAAkC;AAChD,WAAO,CAAC,KAAKC,oBAAL,CAA0B7L,GAA1B,CAA8B4L,cAA9B,CAAR;AACD;;AAEDO,EAAAA,2BAA2B,CAAC/D,EAAD,EAAgC;AACzD,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAAC2F,6BAD3B,EAEE7D,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAAC2F,6BAD3B,EAEE7D,EAFF;AAID,KALD;AAMD;;AAEDgE,EAAAA,iBAAiB,CAAC5M,QAAD,EAA8B;AAC7C,SAAK6M,cAAL,GAAsB7M,QAAtB;AACA,SAAKsI,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACgG,sBAAzC,CADF;AAGD;;AAEDC,EAAAA,iBAAiB,GAAgB;AAC/B,WAAO,KAAKF,cAAZ;AACD;;AAEDG,EAAAA,sBAAsB,CAACpE,EAAD,EAAgC;AACpD,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAACgG,sBAD3B,EAEElE,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACgG,sBAD3B,EAEElE,EAFF;AAID,KALD;AAMD;;AAEDqE,EAAAA,oBAAoB,CAClB7M,OADkB,EAElBjC,UAFkB,EAGlB+O,cAHkB,EAIZ;AACN,QAAMC,UAAU,GAAG,KAAKC,cAAL,CAAoB5R,GAApB,CAAwB4E,OAAxB,CAAnB;AACA,SAAKgN,cAAL,GAAsB,IAAIrM,GAAJ,CACpBjH,KAAK,CAAC0S,IAAN,CAAW,KAAKY,cAAL,CAAoBvL,OAApB,EAAX,EAA0CD,MAA1C,CAAiD,CAC/C,CACExB,OADF,EAEE,IAAIW,GAAJ,CACE,CAACoM,UAAU,GAAGrT,KAAK,CAAC0S,IAAN,CAAWW,UAAX,CAAH,GAA4B,EAAvC,EAA2CvL,MAA3C,CAAkD,CAChD,CAACzD,UAAD,EAAa+O,cAAb,CADgD,CAAlD,CADF,CAFF,CAD+C,CAAjD,CADoB,CAAtB;AAYA,SAAK5E,WAAL,CAAiBC,aAAjB,CACE,IAAIC,WAAJ,CAAgB1B,wBAAwB,CAACuG,sBAAzC,CADF,EAdM;AAmBN;AACA;;AACA,QACE,KAAKtB,YAAL,IACAjS,KAAK,CAAC0S,IAAN,CAAW,KAAKY,cAAL,CAAoB3L,MAApB,EAAX,EACGK,OADH,CACYqL,UAAD,IAAgBrT,KAAK,CAAC0S,IAAN,CAAWW,UAAU,CAAC1L,MAAX,EAAX,CAD3B,EAEG5F,IAFH,CAEQyR,OAFR,CAFF,EAKE;AACA,WAAKxB,eAAL,CAAqB7M,SAArB;AACD;AACF;;AAEDsO,EAAAA,iBAAiB,GAA0B;AACzC,WAAO,KAAKH,cAAZ;AACD;;AAEDI,EAAAA,sBAAsB,CAAC5E,EAAD,EAAgC;AACpD,SAAKN,WAAL,CAAiBO,gBAAjB,CACE/B,wBAAwB,CAACuG,sBAD3B,EAEEzE,EAFF;AAIA,WAAO,MAAY;AACjB,WAAKN,WAAL,CAAiB9L,mBAAjB,CACEsK,wBAAwB,CAACuG,sBAD3B,EAEEzE,EAFF;AAID,KALD;AAMD;;AA9mBmE;;AClD/D,IAAM6E,cAAc,gBAAGC,KAAK,CAACC,aAAN,CAAsC,EAAtC,CAAvB;AAEA,SAASC,oBAAT,GAAkD;AACvD,SAAO;AACLC,IAAAA,OAAO,EAAE,IAAI7G,kBAAJ;AADJ,GAAP;AAGD;;ACTM,SAAS8G,qBAAT,GAAqD;AAC1D,MAAM;AAAED,IAAAA;AAAF,MAAcH,KAAK,CAACK,UAAN,CAAiBN,cAAjB,CAApB;;AACA,MAAI,CAACI,OAAL,EAAc;AACZ,UAAM,IAAIG,KAAJ,CAAU,+BAAV,CAAN;AACD;;AACD,SAAOH,OAAP;AACD;;ACNM,SAASI,cAAT,GAA6C;AAClD,MAAMJ,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACvG,IAAD,EAAO2G,OAAP,IAAkBC,QAAQ,CAACN,OAAO,CAAC9F,OAAR,EAAD,CAAhC;AACAqG,EAAAA,SAAS,CACP,MACEP,OAAO,CAAC5C,YAAR,CAAqB,MAAM;AACzBiD,IAAAA,OAAO,CAACL,OAAO,CAAC9F,OAAR,EAAD,CAAP;AACD,GAFD,CAFK,EAKP,CAAC8F,OAAD,CALO,CAAT;AAOA,SAAOtG,IAAP;AACD;;ACXM,SAAS8G,cAAT,OAMmB;AAAA,MANkC;AAC1DjO,IAAAA,OAD0D;AAE1DkO,IAAAA;AAF0D,GAMlC;AACxB,MAAM;AAAErR,IAAAA,MAAF;AAAUF,IAAAA;AAAV,MAAoBkR,cAAc,EAAxC;AACA,MAAM7J,UAAU,GAAGkK,MAAM,GAAGrR,MAAH,GAAYmD,OAArC;AACA,SAAOmO,OAAO,CACZ,MACExR,KAAK,CAACS,IAAN,CAAYD,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAe0G,UAApC,CAFU,EAGZ,CAACrH,KAAD,EAAQqH,UAAR,CAHY,CAAd;AAKD;;ACdM,SAASoK,2BAAT,GAAiE;AACtE,MAAMX,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACW,MAAD,EAASC,SAAT,IAAsBP,QAAQ,CAACN,OAAO,CAAC7F,oBAAR,EAAD,CAApC;AACAoG,EAAAA,SAAS,CACP,MACEP,OAAO,CAACtC,mBAAR,CAA4B,MAAM;AAChCmD,IAAAA,SAAS,CAACb,OAAO,CAAC7F,oBAAR,EAAD,CAAT;AACD,GAFD,CAFK,EAKP,CAAC6F,OAAD,CALO,CAAT;AAOA,SAAOY,MAAP;AACD;;ACZM,SAASE,gCAAT,GAAqD;AAC1D,MAAMd,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACvG,IAAD,EAAO2G,OAAP,IAAkBC,QAAQ,CAACN,OAAO,CAACjC,gCAAR,EAAD,CAAhC;AACAwC,EAAAA,SAAS,CACP,MACEP,OAAO,CAAChC,qCAAR,CAA8C,MAAM;AAClDqC,IAAAA,OAAO,CAACL,OAAO,CAACjC,gCAAR,EAAD,CAAP;AACD,GAFD,CAFK,EAKP,CAACiC,OAAD,CALO,CAAT;AAOA,SAAOtG,IAAP;AACD;;ACdD,SAASqH,WAAT,CAAqBC,GAArB,EAA0BlQ,GAA1B,EAA+B;AAC7B,MAAKA,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAG,EAAN;AACtB,MAAImQ,QAAQ,GAAGnQ,GAAG,CAACmQ,QAAnB;;AAEA,MAAI,CAACD,GAAD,IAAQ,OAAOE,QAAP,KAAoB,WAAhC,EAA6C;AAAE;AAAS;;AAExD,MAAIC,IAAI,GAAGD,QAAQ,CAACC,IAAT,IAAiBD,QAAQ,CAACE,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAA5B;AACA,MAAIC,KAAK,GAAGH,QAAQ,CAACI,aAAT,CAAuB,OAAvB,CAAZ;AACAD,EAAAA,KAAK,CAAC9T,IAAN,GAAa,UAAb;;AAEA,MAAI0T,QAAQ,KAAK,KAAjB,EAAwB;AACtB,QAAIE,IAAI,CAACI,UAAT,EAAqB;AACnBJ,MAAAA,IAAI,CAACK,YAAL,CAAkBH,KAAlB,EAAyBF,IAAI,CAACI,UAA9B;AACD,KAFD,MAEO;AACLJ,MAAAA,IAAI,CAACM,WAAL,CAAiBJ,KAAjB;AACD;AACF,GAND,MAMO;AACLF,IAAAA,IAAI,CAACM,WAAL,CAAiBJ,KAAjB;AACD;;AAED,MAAIA,KAAK,CAACK,UAAV,EAAsB;AACpBL,IAAAA,KAAK,CAACK,UAAN,CAAiBC,OAAjB,GAA2BX,GAA3B;AACD,GAFD,MAEO;AACLK,IAAAA,KAAK,CAACI,WAAN,CAAkBP,QAAQ,CAACU,cAAT,CAAwBZ,GAAxB,CAAlB;AACD;AACF;;;;;;ACvBM,SAASa,0BAAT,CACLC,aADK,EAELC,cAFK,EAGI;AACT;AACA,MAAIC,OAAO,GAAGF,aAAd;;AACA,SAAOE,OAAP,EAAgB;AACd,QAAIA,OAAO,KAAKD,cAAhB,EAAgC;AAC9B,aAAO,IAAP;AACD;;AACD,QACEC,OAAO,CAACC,SAAR,CAAkBC,QAAlB,CAA2BC,QAAqB,CAACC,eAAjD,KACA,CAACJ,OAAO,CAACC,SAAR,CAAkBC,QAAlB,CAA2BC,QAAqB,CAACnN,sBAAjD,CAFH,EAGE;AACA;AACA;AACA,aAAO,KAAP;AACD;;AACDgN,IAAAA,OAAO,GAAGA,OAAO,CAACK,aAAlB;AACD;;AACD,SAAO,KAAP;AACD;;ACpBM,SAASC,eAAT,GAAmC;AACxC,MAAMtC,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACvG,IAAD,EAAO2G,OAAP,IAAkBC,QAAQ,CAACN,OAAO,CAAC5B,eAAR,EAAD,CAAhC;AACAmC,EAAAA,SAAS,CACP,MACEP,OAAO,CAAC3B,iBAAR,CAA0B,MAAM;AAC9BgC,IAAAA,OAAO,CAACL,OAAO,CAAC5B,eAAR,EAAD,CAAP;AACD,GAFD,CAFK,EAKP,CAAC4B,OAAD,CALO,CAAT;AAOA,SAAOtG,IAAP;AACD;;ACXM,SAAS6I,iBAAT,GAA0C;AAC/C,MAAMvC,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACvG,IAAD,EAAO2G,OAAP,IAAkBC,QAAQ,CAACN,OAAO,CAACd,iBAAR,EAAD,CAAhC;AACAqB,EAAAA,SAAS,CACP,MACEP,OAAO,CAACb,sBAAR,CAA+B,MAAM;AACnCkB,IAAAA,OAAO,CAACL,OAAO,CAACd,iBAAR,EAAD,CAAP;AACD,GAFD,CAFK,EAKP,CAACc,OAAD,CALO,CAAT;AAOA,SAAOtG,IAAP;AACD;;ACVM,SAAS8I,iBAAT,GAAoD;AACzD,MAAMxC,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACV,cAAD,EAAiBkD,iBAAjB,IAAsCnC,QAAQ,CAClDN,OAAO,CAACN,iBAAR,EADkD,CAApD;AAGAa,EAAAA,SAAS,CACP,MACEP,OAAO,CAACL,sBAAR,CAA+B,MAAM;AACnC8C,IAAAA,iBAAiB,CAACzC,OAAO,CAACN,iBAAR,EAAD,CAAjB;AACD,GAFD,CAFK,EAKP,CAACM,OAAD,CALO,CAAT;AAOA,SAAOT,cAAP;AACD;;ACKM,SAASmD,eAAT,OAO+D;AAAA;;AAAA,MAPtC;AAC9BnQ,IAAAA,OAD8B;AAE9BhF,IAAAA,IAF8B;AAG9BoV,IAAAA,sBAH8B;AAI9BC,IAAAA,oBAJ8B;AAK9BC,IAAAA,eAL8B;AAM9BhM,IAAAA;AAN8B,GAOsC;AACpE,MAAMiM,kBAAkB,GAAGC,MAAM,EAAjC;AACA,MAAM/D,cAAc,GAAGuD,iBAAiB,EAAxC;AACA,MAAM7S,IAAI,GAAG8Q,cAAc,CAAC;AAAEjO,IAAAA;AAAF,GAAD,CAA3B;AACA,MAAM,CAACyQ,cAAD,EAAiBC,iBAAjB,IAAsC3C,QAAQ,CAAC,KAAD,CAApD;AACA,MAAM,CAAC4C,gBAAD,EAAmBC,mBAAnB,IAA0C7C,QAAQ,CAAC,KAAD,CAAxD;AACA,MAAMlG,iBAAiB,GAAGuG,2BAA2B,EAArD;AACA,MAAMzC,YAAY,GAAGoE,eAAe,EAApC;AACA,MAAMc,iBAAiB,GAAGtC,gCAAgC,EAA1D;AACA,MAAMd,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACoD,KAAD,EAAQC,QAAR,IAAoBhD,QAAQ,CAACpC,YAAY,KAAK3L,OAAlB,CAAlC;AACA,MAAMgR,UAAU,GAAGhW,IAAH,aAAGA,IAAH,cAAGA,IAAH,GAAWnC,eAAe,CAACoY,OAA3C;AACA,MAAMC,eAAe,GAAGV,MAAM,CAAC7E,YAAD,CAA9B;AACA,MAAMqB,cAAc,GAAGiD,iBAAiB,EAAxC;AAEAjC,EAAAA,SAAS,CAAC,MAAM;AACdkD,IAAAA,eAAe,CAACC,OAAhB,GAA0BxF,YAA1B;AACD,GAFQ,EAEN,CAACA,YAAD,CAFM,CAAT;AAIA,MAAMyF,eAAe,GAAGC,WAAW,CAChC9V,KAAD,IAAuB;AACrBA,IAAAA,KAAK,CAAC+V,eAAN;AACAP,IAAAA,QAAQ,CAAC,IAAD,CAAR;;AACA,QAAIG,eAAe,CAACC,OAAhB,KAA4BnR,OAAhC,EAAyC;AACvCyN,MAAAA,OAAO,CAAC/B,eAAR,CAAwB1L,OAAxB;AACD;AACF,GAPgC,EAQjC,CAACA,OAAD,EAAUyN,OAAV,CARiC,CAAnC;AAWA,MAAM8D,cAAc,GAAGF,WAAW,CAC/B9V,KAAD,IAAuB;AACrBA,IAAAA,KAAK,CAAC+V,eAAN;AACAP,IAAAA,QAAQ,CAAC,KAAD,CAAR;;AACA,QAAIG,eAAe,CAACC,OAAhB,KAA4BnR,OAAhC,EAAyC;AACvCyN,MAAAA,OAAO,CAAC/B,eAAR,CAAwB7M,SAAxB;AACD;AACF,GAP+B,EAQhC,CAACmB,OAAD,EAAUyN,OAAV,CARgC,CAAlC;AAWAO,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI7Q,IAAI,CAAC4H,wBAAT,EAAmC;AACjC;AACD,KAHa;AAKd;;;AACA,QAAM8K,eAAe,GAAGU,kBAAkB,CAACY,OAA3C;AACAtB,IAAAA,eAAe,CAACpH,gBAAhB,CAAiC,WAAjC,EAA8C2I,eAA9C;AACAvB,IAAAA,eAAe,CAACpH,gBAAhB,CAAiC,UAAjC,EAA6C8I,cAA7C;AACA,WAAO,MAAM;AACX1B,MAAAA,eAAe,CAACzT,mBAAhB,CAAoC,WAApC,EAAiDgV,eAAjD;AACAvB,MAAAA,eAAe,CAACzT,mBAAhB,CAAoC,UAApC,EAAgDmV,cAAhD;AACD,KAHD;AAID,GAbQ,EAaN,CAACH,eAAD,EAAkBG,cAAlB,EAAkCpU,IAAlC,CAbM,CAAT;AAeA6Q,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI7Q,IAAI,CAAC4H,wBAAT,EAAmC;AACjC;AACD;;AACDgM,IAAAA,QAAQ,CAACpF,YAAY,KAAK3L,OAAlB,CAAR;;AACA,QAAI6Q,iBAAJ,EAAuB;AAAA;;AACrB,UAAMW,YAAY,GAAG/D,OAAO,CAAC3F,+BAAR,EAArB;;AACA,UAAM2I,eAAc,wBAAGe,YAAY,CAChCpW,GADoB,CAChBuQ,YADgB,CAAH,sDAAG,kBAEnB7K,aAFmB,CAELV,GAFK,CAEDJ,OAFC,CAAvB;;AAGA0Q,MAAAA,iBAAiB,CAACD,eAAD,CAAjB;;AACA,UAAME,iBAAgB,yBAAGa,YAAY,CAClCpW,GADsB,CAClBuQ,YADkB,CAAH,uDAAG,mBAErB5K,eAFqB,CAELX,GAFK,CAEDJ,OAFC,CAAzB;;AAGA4Q,MAAAA,mBAAmB,CAACD,iBAAD,CAAnB;AACD;AACF,GAhBQ,EAgBN,CAAChF,YAAD,EAAexO,IAAf,EAAqB6C,OAArB,EAA8B6Q,iBAA9B,EAAiDpD,OAAjD,CAhBM,CAAT;AAkBA,MAAMgE,eAAe,GAAGJ,WAAW,CAChC9V,KAAD,IACE,CAAC4B,IAAI,CAAC4H,wBAAN,IACAuK,0BAA0B,CACxB/T,KAAK,CAACD,MADkB,EAExBiV,kBAAkB,CAACY,OAFK,CAHK,EAOjC,CAAChU,IAAD,CAPiC,CAAnC;AAUA,MAAMuU,WAAW,GAAGL,WAAW,CAC5B9V,KAAD,IAA6B;AAC3B;AACA,QAAIkW,eAAe,CAAClW,KAAD,CAAnB,EAA4B;AAC1BkS,MAAAA,OAAO,CAAChD,SAAR,CAAkBtN,IAAlB;AACD;AACF,GAN4B,EAO7B,CAACsU,eAAD,EAAkBhE,OAAlB,EAA2BtQ,IAA3B,CAP6B,CAA/B;AAUA,MAAMwU,iBAAiB,GAAGN,WAAW,CAClC9V,KAAD,IAA6B;AAC3B;AACA,QAAIkW,eAAe,CAAClW,KAAD,CAAnB,EAA4B;AAC1BA,MAAAA,KAAK,CAACqW,cAAN;AACAnE,MAAAA,OAAO,CAAC9C,iBAAR,CAA0B;AACxB9D,QAAAA,MAAM,EAAE,IADgB;AAExB1J,QAAAA,IAFwB;AAGxB0U,QAAAA,CAAC,EAAEtW,KAAK,CAACuW,OAHe;AAIxBC,QAAAA,CAAC,EAAExW,KAAK,CAACyW;AAJe,OAA1B;AAMD;AACF,GAZkC,EAanC,CAACP,eAAD,EAAkBhE,OAAlB,EAA2BtQ,IAA3B,CAbmC,CAArC;AAgBA,sBACE;AACE,IAAA,SAAS,EAAEjE,UAAU,CAAC+Y,QAAM,CAACpC,eAAR,EAAyBoC,QAAM,CAACjB,UAAD,CAA/B,EAA6C;AAChE,OAACiB,QAAM,CAACC,oBAAR,GAA+B9B,sBADiC;AAEhE,OAAC6B,QAAM,CAACE,QAAR,GAAmBzY,KAAK,CAAC0S,IAAN,iDACjBY,cAAc,CAAC5R,GAAf,CAAmB4E,OAAnB,CADiB,wDACjB,oBAA6BqB,MAA7B,EADiB,yEACwB,EADxB,EAEjB5F,IAFiB,CAEZyR,OAFY,CAF6C;AAKhE,OAAC+E,QAAM,CAACnB,KAAR,GAAgBA,KALgD;AAMhE,OAACmB,QAAM,CAACpL,MAAR,GACEgB,iBAAiB,CAAChB,MAAlB,IAA4BgB,iBAAiB,CAAC1K,IAAlB,CAAuBG,KAAvB,KAAiC0C,OAPC;AAQhE,OAACiS,QAAM,CAACtB,gBAAR,GAA2B,CAACG,KAAD,IAAUH,gBAR2B;AAShE,OAACsB,QAAM,CAACxB,cAAR,GAAyB,CAACK,KAAD,IAAUL,cAT6B;AAUhE,OAACwB,QAAM,CAACG,SAAR,GAAoB3F,cAAc,CAACrM,GAAf,CAAmBJ,OAAnB,CAV4C;AAWhE,OAACiS,QAAM,CAACxP,sBAAR,GAAiCtF,IAAI,CAAC4H;AAX0B,KAA7C,CADvB;AAcE,IAAA,KAAK,EAAEsL,oBAdT;AAeE,IAAA,GAAG,EAAEE,kBAfP;AAgBE,IAAA,OAAO,EAAEmB,WAhBX;AAiBE,IAAA,aAAa,EAAEC;AAjBjB,kBAmBE;AAAK,IAAA,SAAS,EAAEM,QAAM,CAACI;AAAvB,KACG,CAACvB,KAAD,KACEH,gBAAgB,gBACf;AAAM,IAAA,SAAS,EAAEsB,QAAM,CAACK;AAAxB,cADe,GAEb7B,cAAc,gBAChB;AAAM,IAAA,SAAS,EAAEwB,QAAM,CAACK;AAAxB,cADgB,GAEd,IALL,CADH,EAOGnV,IAAI,CAACsG,KAAL,IAActG,IAAI,CAACwF,KAPtB,CAnBF,eA4BE;AAAK,IAAA,SAAS,EAAEsP,QAAM,CAACM,UAAvB;AAAmC,IAAA,KAAK,EAAEjC;AAA1C,KACGhM,QADH,CA5BF,CADF;AAkCD;;ACzKD,IAAMkO,gBAAgB,GAAG,gCAAzB;AACA,IAAMC,gBAAgB,GAAG,gCAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;SACsBC,cAAtB;AAAA;AAAA;;;sCAAO,WACLvV,IADK,EAELwV,MAFK,EAGY;AACjB,QAAMC,eAAyB,GAAG,EAAlC;;AACA,QAAIC,WAAW,CAAC1V,IAAD,CAAf,EAAuB;AACrByV,MAAAA,eAAe,CAACnZ,IAAhB,CAAqBgZ,gBAArB;AACD,KAFD,MAEO,IAAI/O,WAAW,CAACvG,IAAD,CAAf,EAAuB;AAC5B,UAAIA,IAAI,CAACwF,KAAL,CAAWa,QAAX,CAAoB,GAApB,CAAJ,EAA8B;AAC5BoP,QAAAA,eAAe,CAACnZ,IAAhB,WAAwB0D,IAAI,CAACwF,KAA7B;AACD;;AAED,UAAIgQ,MAAJ,EAAY;AACVC,QAAAA,eAAe,CAACnZ,IAAhB,CAAqBkZ,MAArB;AACD;;AAEDC,MAAAA,eAAe,CAACnZ,IAAhB,CAAqB+Y,gBAArB;AACD,KAVM,MAUA;AACL;AACA,YAAM,IAAI5E,KAAJ,kCAAoCzQ,IAAI,CAACnC,IAAzC,EAAN;AACD;;AAED,SAAK,IAAM8X,WAAX,IAA0BF,eAA1B,EAA2C;AACzC,UAAI;AACF,cAAMG,aAAa,CAACC,gBAAd,CAA+B,CAACF,WAAD,CAA/B,CAAN;AACD,OAFD,CAEE,OAAOG,KAAP,EAAc;AACd,cAAM,IAAIrF,KAAJ,+BAAgCkF,WAAhC,eAAN;AACD;;AACD,UAAII,cAAc,CAAC9X,GAAf,CAAmB0X,WAAnB,CAAJ,EAAqC;AACnC,eAAOA,WAAP;AACD;AACF;;AAED,UAAM,IAAIlF,KAAJ,0BAA2BgF,eAAe,CAACzY,IAAhB,CAAqB,IAArB,CAA3B,kBAAN;AACD;;;;ACpDM,SAASgZ,YAAT,GAAiC;AACtC,MAAM1F,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAMvG,IAAI,GAAGgH,OAAO,CAAC,MAAMV,OAAO,CAAClG,YAAR,EAAP,EAA+B,CAACkG,OAAD,CAA/B,CAApB;AAEA,SAAOtG,IAAP;AACD;;ACNM,SAASiM,WAAT,CACLjW,IADK,EAEL4G,SAFK,EAGK;AACV,MAAM3G,IAAI,GAAG2G,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAE3G,IAAX,CAAiBC,IAAD,IAAUA,IAAI,CAACkH,OAAL,KAAiBpH,IAAI,CAACwF,KAAhD,CAAb;AAEA,SAAOvF,IAAP,aAAOA,IAAP,uBAAOA,IAAI,CAAEiW,GAAb;AACD;;ACNM,SAASC,kBAAT,GAA6D;AAClE,MAAM7F,OAAO,GAAGC,qBAAqB,EAArC;AAEA,MAAM6F,kBAAkB,GAAGlC,WAAW,CACpC,MACE,IAAI1Q,GAAJ,CAAQ8M,OAAO,CAACnF,mBAAR,GAA8B7I,GAA9B,CAAmC+T,IAAD,IAAU,CAACA,IAAI,CAACjT,EAAN,EAAUiT,IAAV,CAA5C,CAAR,CAFkC,EAGpC,CAAC/F,OAAD,CAHoC,CAAtC;AAMA,MAAM,CAACtG,IAAD,EAAO2G,OAAP,IAAkBC,QAAQ,CAACwF,kBAAkB,EAAnB,CAAhC;AAEAvF,EAAAA,SAAS,CACP,MACEP,OAAO,CAAClF,wBAAR,CAAiC,MAAM;AACrCuF,IAAAA,OAAO,CAACyF,kBAAkB,EAAnB,CAAP;AACD,GAFD,CAFK,EAKP,CAACA,kBAAD,EAAqB9F,OAArB,CALO,CAAT;AAQA,SAAOtG,IAAP;AACD;;;;;;ACEM,SAASsM,sBAAT,OAG6C;AAAA,MAHb;AACrCtW,IAAAA,IADqC;AAErCuW,IAAAA;AAFqC,GAGa;AAClD,MAAM,CAACC,WAAD,EAAcC,cAAd,IAAgCtG,KAAK,CAACS,QAAN,CAAe,KAAf,CAAtC;AACA,MAAM,CAAC+E,WAAD,EAAce,cAAd,IAAgCvG,KAAK,CAACS,QAAN,EAAtC;AACA,MAAM,CAAC+F,eAAD,EAAkBC,kBAAlB,IAAwCzG,KAAK,CAACS,QAAN,EAA9C;AACA,MAAM;AAAEnR,IAAAA;AAAF,MAAYiR,cAAc,EAAhC;AACA,MAAM9J,SAAS,GAAGoP,YAAY,EAA9B;AACA,MAAMa,WAAW,GAAG1G,KAAK,CAACa,OAAN,CAClB,MAAMvR,KAAK,CAACnB,IAAN,CAAYiC,IAAD,IAAUA,IAAI,CAACC,MAAL,KAAgBR,IAAI,CAACG,KAA1C,CADY,EAElB,CAACH,IAAD,EAAOP,KAAP,CAFkB,CAApB;AAKA,MAAMqX,sBAAsB,GAAG9F,OAAO,CACpC,MAAM+F,UAAU,GAAGC,eAAb,GAA+B,+BAA/B,CAD8B,EAEpC,EAFoC,CAAtC;AAKA,MAAMC,QAAQ,GAAGjG,OAAO,CACtB,MAAO8F,sBAAsB,GAAG,IAAH,GAAUb,WAAW,CAACjW,IAAD,EAAO4G,SAAP,CAD5B,EAEtB,CAACkQ,sBAAD,EAAyB9W,IAAzB,EAA+B4G,SAA/B,CAFsB,CAAxB;AAKA,MAAMsQ,SAAS,GAAGf,kBAAkB,EAApC;AACA,MAAMgB,UAAU,GAAGnG,OAAO,CACxB,MACE8F,sBAAsB,IAAIvQ,WAAW,CAACvG,IAAD,CAArC,GACIkX,SAAS,CAACjZ,GAAV,CAAc+B,IAAI,CAACwF,KAAnB,CADJ,GAEI,IAJkB,EAKxB,CAAC0R,SAAD,EAAYJ,sBAAZ,EAAoC9W,IAApC,CALwB,CAA1B;AAQAmQ,EAAAA,KAAK,CAACU,SAAN,CAAgB,MAAM;AACpB,sBAAC,aAAY;AACX4F,MAAAA,cAAc,CAAC,KAAD,CAAd;AACA,UAAIW,UAAJ;AACA,UAAIC,WAAJ;;AACA,UAAI;AACFD,QAAAA,UAAU,SAAS7B,cAAc,CAC/BvV,IAD+B,EAE/B8W,sBAAsB,GAAGK,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAE3B,MAAf,GAAwByB,QAAxB,aAAwBA,QAAxB,uBAAwBA,QAAQ,CAAEzB,MAFzB,CAAjC;AAID,OALD,CAKE,OAAOM,KAAP,EAAc;AACd;AACAnR,QAAAA,OAAO,CAACmR,KAAR,CAAcA,KAAd;AACAuB,QAAAA,WAAW,GAAIvB,KAAD,CAAiBwB,OAA/B;AACD;;AACDZ,MAAAA,cAAc,CAACU,UAAD,CAAd;AACAR,MAAAA,kBAAkB,CAACS,WAAD,CAAlB;AACAZ,MAAAA,cAAc,CAAC,IAAD,CAAd;AACD,KAjBD;AAkBD,GAnBD,EAmBG,CAACQ,QAAD,EAAWE,UAAX,EAAuBL,sBAAvB,EAA+C9W,IAA/C,CAnBH;AAqBA,MAAMuX,SAAS,GAAGpH,KAAK,CAACa,OAAN,CAChB,OAAO;AACLxL,IAAAA,KAAK,EAAEmQ,WADF;AAELhN,IAAAA,UAAU,EAAE;AACV9F,MAAAA,OAAO,EAAE7C,IAAI,CAACG,KADJ;AAEVqX,MAAAA,WAAW,EAAEV,sBAAsB,GAC/BK,UAD+B,aAC/BA,UAD+B,uBAC/BA,UAAU,CAAEK,WADmB,GAE/BP,QAF+B,aAE/BA,QAF+B,uBAE/BA,QAAQ,CAAEO;AAJJ;AAFP,GAAP,CADgB,EAUhB,CAACP,QAAD,EAAWtB,WAAX,EAAwBwB,UAAxB,EAAoCL,sBAApC,EAA4D9W,IAAI,CAACG,KAAjE,CAVgB,CAAlB;AAaA,MAAMsX,UAAU,GAAGtH,KAAK,CAACa,OAAN,CAAc,MAAM;AAAA;;AACrC,QAAI0G,MAAJ;;AACA,QAAIlB,WAAW,IAAIb,WAAnB,EAAgC;AAC9B,UAAMgC,iBAAiB,GAAG5B,cAAc,CAAC9X,GAAf,CACxB0X,WADwB,CAA1B;AAGA+B,MAAAA,MAAM,GAAGC,iBAAiB,CAACF,UAA3B;AACD,KAPoC;;;AASrC,sBACEC,MADF,6CAEGb,WAAW,GAAGlb,gBAAgB,CAACic,SAApB,GAAgCjc,gBAAgB,CAACkc,MAF/D;AAID,GAbkB,EAahB,CAACrB,WAAD,EAAcb,WAAd,EAA2BkB,WAA3B,CAbgB,CAAnB;AAeA,MAAM,CAAC;AAAEiB,IAAAA;AAAF,GAAD,EAAiBC,OAAjB,IAA4BC,OAAO,CAAC;AACxC9X,IAAAA,IAAI,EAAE;AACJrC,MAAAA,IAAI,EAAEpC,uBAAuB,CAACwc,YAD1B;AAEJpV,MAAAA,OAAO,EAAE7C,IAAI,CAACG,KAFV;AAGJ0O,MAAAA,cAAc,EAAE7O,IAAI,CAACsM,UAHjB;AAIJ4L,MAAAA,MAAM,EAAElY,IAAI,CAACoD;AAJT,KADkC;AAOxCrF,IAAAA,OAAO,EAAE;AACPoa,MAAAA,UAAU,EAAE;AADL,KAP+B;AAUxCC,IAAAA,OAAO,EAAGC,OAAD,KAAc;AACrBP,MAAAA,UAAU,EAAEO,OAAO,CAACP,UAAR;AADS,KAAd;AAV+B,GAAD,CAAzC;AAeA,SAAOtB,WAAW,GAChBb,WAAW,gBACT;AACE,IAAA,SAAS,EAAE5Z,UAAU,CAAC;AACpB,OAAC+Y,QAAM,CAACwD,sBAAR,GACE/B,iBAAiB,KAAK3a,uBAAuB,CAAC2c,KAF5B;AAGpB,OAACzD,QAAM,CAAC0D,uBAAR,GACEjC,iBAAiB,KAAK3a,uBAAuB,CAACic,MAJ5B;AAKpB;AACA,OAAC/C,QAAM,CAAC2D,gBAAR,GAA2BhB,UAAU,KAAK9b,gBAAgB,CAACkc,MANvC;AAOpB,OAAC/C,QAAM,CAAC4D,eAAR,GAA0BjB,UAAU,KAAK9b,gBAAgB,CAAC4c,KAPtC;AAQpB,OAACzD,QAAM,CAAC6D,mBAAR,GACElB,UAAU,KAAK9b,gBAAgB,CAACic,SATd;AAUpB,OAAC9C,QAAM,CAAC8D,QAAR,GAAmBd,UAVC;AAWpBe,MAAAA,wBAAwB,EAAE7Y,IAAI,CAAC4H;AAXX,KAAD;AADvB,kBAeE;AACE,IAAA,GAAG,EAAE5H,IAAI,CAAC4H,wBAAL,GAAgClG,SAAhC,GAA4CqW,OADnD;AAEE,IAAA,SAAS,EAAE,CAAC/X,IAAI,CAAC4H,wBAFnB;AAGE,IAAA,SAAS,EAAE7L,UAAU,CAAC;AACpB,OAAC+Y,QAAM,CAACgE,QAAR,GACE9Y,IAAI,CAACwF,KAAL,KAAe,yBAAf,IACAxF,IAAI,CAACwF,KAAL,KAAe,wBADf,IAEAxF,IAAI,CAACwF,KAAL,KAAe;AAJG,KAAD;AAHvB,kBAUE,oBAAC,gBAAD;AAAkB,IAAA,QAAQ,EAAE+R;AAA5B,IAVF,CAfF,CADS,gBA8BT,kCAAOZ,eAAP,CA/Bc,gBAkChB,+CAlCF;AAoCD;;ACtJM,SAASoC,2BAAT,OAQuB;AAAA,MARc;AAC1ClW,IAAAA,OAD0C;AAE1CkO,IAAAA,MAF0C;AAG1CiI,IAAAA;AAH0C,GAQd;AAC5B,MAAM;AAAEtZ,IAAAA,MAAF;AAAUF,IAAAA,KAAV;AAAiBC,IAAAA;AAAjB,MAA2BiR,cAAc,EAA/C;AACA,SAAOM,OAAO,CACZ,MACEiI,2BAA2B,CAAC;AAC1BzZ,IAAAA,KAD0B;AAE1BC,IAAAA,KAF0B;AAG1BoD,IAAAA,OAAO,EAAEkO,MAAM,GAAGrR,MAAH,GAAYmD,OAHD;AAI1BmW,IAAAA;AAJ0B,GAAD,CAFjB,EAQZ,CAACA,oBAAD,EAAuBvZ,KAAvB,EAA8BsR,MAA9B,EAAsClO,OAAtC,EAA+CrD,KAA/C,EAAsDE,MAAtD,CARY,CAAd;AAUD;AAEM,SAASuZ,2BAAT,QAUuB;AAAA,MAVc;AAC1CpW,IAAAA,OAD0C;AAE1CrD,IAAAA,KAF0C;AAG1CC,IAAAA,KAH0C;AAI1CuZ,IAAAA;AAJ0C,GAUd;AAC5B,MAAME,MAAM,GAAG,IAAI1V,GAAJ,EAAf;AACA,MAAM2V,YAAY,GAAG9Y,MAAM,CACzBZ,KAAK,CAACa,MAAN,CACGC,IAAD,IACEA,IAAI,CAACC,MAAL,KAAgBqC,OAAhB,KACCmW,oBAAoB,GACjB,CAACzY,IAAI,CAACuB,oBADW,GAEjB,CAACvB,IAAI,CAAC6I,qBAHV,CAFJ,CADyB,EAQzB,CAAE7I,IAAD,IAAUA,IAAI,CAACE,IAAhB,CARyB,CAA3B;;AAF4B,wBAYjBF,IAZiB;AAa1B,QAAM6Y,SAAS,GAAG5Z,KAAK,CAACS,IAAN,CAAYD,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAeI,IAAI,CAACG,KAAzC,CAAlB;;AACA,QAAIwY,MAAM,CAACjW,GAAP,CAAW1C,IAAI,CAACK,UAAhB,CAAJ,EAAiC;AAC/BsY,MAAAA,MAAM,CAACjb,GAAP,CAAWsC,IAAI,CAACK,UAAhB,EAA4BtE,IAA5B,CAAiC8c,SAAjC;AACD,KAFD,MAEO;AACLF,MAAAA,MAAM,CAACxa,GAAP,CAAW6B,IAAI,CAACK,UAAhB,EAA4B,CAACwY,SAAD,CAA5B;AACD;AAlByB;;AAY5B,OAAK,IAAM7Y,IAAX,IAAmB4Y,YAAnB,EAAiC;AAAA,UAAtB5Y,IAAsB;AAOhC;;AACD,SAAOhE,KAAK,CAAC0S,IAAN,CAAWiK,MAAM,CAAC5U,OAAP,EAAX,EAA6BhC,GAA7B,CAAiC;AAAA,QAAC,CAAC1B,UAAD,EAAayY,UAAb,CAAD;AAAA,WAA+B;AACrEzY,MAAAA,UADqE;AAErEyY,MAAAA;AAFqE,KAA/B;AAAA,GAAjC,CAAP;AAID;;AC5DD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAT,GAA+B;AACpC,MAAM;AAAE7Z,IAAAA;AAAF,MAAYiR,cAAc,EAAhC;AACA,SAAOwD,WAAW,CAChB,CAACqF,WAAD,EAAsB1W,OAAtB,KAA0C;AACxC,QAAM2W,QAAQ,GAAIC,QAAD,IAA+B;AAC9C,UAAIA,QAAQ,KAAK5W,OAAjB,EAA0B;AACxB,eAAO,KAAP;AACD;;AACD,aAAO,CAACpD,KAAK,CAACnB,IAAN,CAAYiC,IAAD,IAAU;AAC3B,YAAIA,IAAI,CAACC,MAAL,KAAgBiZ,QAApB,EAA8B;AAC5B,iBAAO,CAACD,QAAQ,CAACjZ,IAAI,CAACG,KAAN,CAAhB;AACD;;AACD,eAAO,KAAP;AACD,OALO,CAAR;AAMD,KAVD;;AAWA,WAAO8Y,QAAQ,CAACD,WAAD,CAAf;AACD,GAde,EAehB,CAAC9Z,KAAD,CAfgB,CAAlB;AAiBD;;AC/BD;AACA;AAgCA,IAAMia,cAAc,GAAG,CAAvB;AAEO,SAASC,gBAAT,CACLC,QADK,EAELC,YAFK,EAGW;AAChB,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,qBAAT,EAAjB,CADgB;;AAGhB,MAAMC,SAAyB,GAAG,EAAlC;AACA,MAAMC,YAAY,GAAG1d,KAAK,CAAC0S,IAAN,CAAW4K,YAAY,CAAC1S,QAAxB,EAAkC7G,MAAlC,CAClBJ,IAAD,IAAU,CAACA,IAAI,CAACqS,SAAL,CAAeC,QAAf,CAAwB,0BAAxB,CADQ,CAArB;;AAGA,MAAIyH,YAAY,CAAC9d,MAAb,GAAsB,CAA1B,EAA6B;AAC3B,QAAI+d,UAAuB,GAAG;AAC5BC,MAAAA,KAAK,EAAE;AADqB,KAA9B;AAGA,QAAMC,IAAmB,GAAG,CAACF,UAAD,CAA5B;AACAD,IAAAA,YAAY,CAAC9X,OAAb,CAAqB,CAACkY,QAAD,EAAWjY,KAAX,KAAqB;AACxC,UAAMkY,IAAI,GAAGD,QAAQ,CAACN,qBAAT,EAAb;AACA,UAAMQ,IAAkB,GAAG;AACzBnY,QAAAA,KADyB;AAEzBoY,QAAAA,GAAG,EAAEF,IAAI,CAACE,GAFe;AAGzBC,QAAAA,MAAM,EAAEH,IAAI,CAACG,MAHY;AAIzBC,QAAAA,IAAI,EAAEJ,IAAI,CAACI,IAJc;AAKzBC,QAAAA,KAAK,EAAEL,IAAI,CAACK;AALa,OAA3B;AAOA,UAAMC,QAAQ,GACZV,UAAU,CAACC,KAAX,CAAiBhe,MAAjB,GAA0B,CAA1B,IACA+d,UAAU,CAACC,KAAX,CAAiBD,UAAU,CAACC,KAAX,CAAiBhe,MAAjB,GAA0B,CAA3C,CAFF;;AAGA,UACE,CAACye,QAAD,IACCC,oBAAoB,CAACP,IAAI,CAACI,IAAN,EAAYE,QAAQ,CAACD,KAArB,CAApB,GAAkD,CAAlD,IACCE,oBAAoB,CAACP,IAAI,CAACE,GAAN,EAAWI,QAAQ,CAACH,MAApB,CAApB,GAAkD,CAHtD,EAIE;AAAA;;AACAP,QAAAA,UAAU,CAACC,KAAX,CAAiB7d,IAAjB,CAAsBie,IAAtB;AACAL,QAAAA,UAAU,CAACM,GAAX,GAAiBM,IAAI,CAACC,GAAL,oBAASb,UAAU,CAACM,GAApB,6DAA2B7S,QAA3B,EAAqC2S,IAAI,CAACE,GAA1C,CAAjB;AACAN,QAAAA,UAAU,CAACO,MAAX,GAAoBK,IAAI,CAACE,GAAL,uBAClBd,UAAU,CAACO,MADO,mEACG,CAAC9S,QADJ,EAElB2S,IAAI,CAACG,MAFa,CAApB;AAID,OAXD,MAWO;AACLP,QAAAA,UAAU,GAAG;AACXC,UAAAA,KAAK,EAAE,CAACI,IAAD,CADI;AAEXC,UAAAA,GAAG,EAAEF,IAAI,CAACE,GAFC;AAGXC,UAAAA,MAAM,EAAEH,IAAI,CAACG;AAHF,SAAb;AAKAL,QAAAA,IAAI,CAAC9d,IAAL,CAAU4d,UAAV;AACD;AACF,KA/BD,EAL2B;;AAuC3B,QAAIe,cAAc,GAAGnB,QAAQ,CAACU,GAA9B;AACA,QAAIU,aAAa,GAAGpB,QAAQ,CAACU,GAA7B;AACAJ,IAAAA,IAAI,CAACjY,OAAL,CAAa,CAACgZ,GAAD,EAAMC,QAAN,KAAmB;AAC9B,UAAID,GAAG,CAAChB,KAAJ,CAAUhe,MAAV,KAAqB,CAAzB,EAA4B;AAC1B,YAAMoe,IAAI,GAAGY,GAAG,CAAChB,KAAJ,CAAU,CAAV,CAAb;AACA,YAAMkB,UAAU,GAAG,CAACd,IAAI,CAACC,GAAL,GAAWD,IAAI,CAACE,MAAjB,IAA2B,CAA9C;AACAT,QAAAA,SAAS,CAAC1d,IAAV,CAAe;AACbge,UAAAA,IAAI,EAAE;AACJE,YAAAA,GAAG,EAAES,cADD;AAEJR,YAAAA,MAAM,EAAEY,UAFJ;AAGJX,YAAAA,IAAI,EAAEZ,QAAQ,CAACY,IAHX;AAIJC,YAAAA,KAAK,EAAEb,QAAQ,CAACa;AAJZ,WADO;AAObW,UAAAA,MAAM,EAAE;AACNlZ,YAAAA,KAAK,EAAEmY,IAAI,CAACnY,KADN;AAENwS,YAAAA,CAAC,EAAE,CAACsG,aAAa,GAAGX,IAAI,CAACC,GAAtB,IAA6B,CAA7B,GAAiCV,QAAQ,CAACU;AAFvC;AAPK,SAAf;AAYAS,QAAAA,cAAc,GAAGI,UAAjB;AACAH,QAAAA,aAAa,GAAGX,IAAI,CAACE,MAArB,CAhB0B;;AAmB1B,YAAIW,QAAQ,KAAKhB,IAAI,CAACje,MAAL,GAAc,CAA/B,EAAkC;AAChC6d,UAAAA,SAAS,CAAC1d,IAAV,CAAe;AACbge,YAAAA,IAAI,EAAE;AACJE,cAAAA,GAAG,EAAES,cADD;AAEJR,cAAAA,MAAM,EAAEX,QAAQ,CAACW,MAFb;AAGJC,cAAAA,IAAI,EAAEZ,QAAQ,CAACY,IAHX;AAIJC,cAAAA,KAAK,EAAEb,QAAQ,CAACa;AAJZ,aADO;AAObW,YAAAA,MAAM,EAAE;AACNlZ,cAAAA,KAAK,EAAEmY,IAAI,CAACnY,KAAL,GAAa,CADd;AAENwS,cAAAA,CAAC,EACCkG,IAAI,CAACC,GAAL,CACER,IAAI,CAACE,MAAL,GAAcf,cADhB,EAEE,CAACa,IAAI,CAACE,MAAL,GAAcX,QAAQ,CAACW,MAAxB,IAAkC,CAFpC,IAGIX,QAAQ,CAACU;AANT;AAPK,WAAf;AAgBD,SAjBD,MAiBO,IAAIJ,IAAI,CAACgB,QAAQ,GAAG,CAAZ,CAAJ,CAAmBjB,KAAnB,CAAyBhe,MAAzB,GAAkC,CAAtC,EAAyC;AAC9C,cAAMof,OAAO,GAAGnB,IAAI,CAACgB,QAAQ,GAAG,CAAZ,CAApB;;AACA,cAAMC,WAAU,GAAG,CAACd,IAAI,CAACE,MAAL,GAAcc,OAAO,CAACf,GAAvB,IAA8B,CAAjD;;AACAR,UAAAA,SAAS,CAAC1d,IAAV,CAAe;AACbge,YAAAA,IAAI,EAAE;AACJE,cAAAA,GAAG,EAAES,cADD;AAEJR,cAAAA,MAAM,EAAEY,WAFJ;AAGJX,cAAAA,IAAI,EAAEZ,QAAQ,CAACY,IAHX;AAIJC,cAAAA,KAAK,EAAEb,QAAQ,CAACa;AAJZ,aADO;AAObW,YAAAA,MAAM,EAAE;AACNlZ,cAAAA,KAAK,EAAEmY,IAAI,CAACnY,KAAL,GAAa,CADd;AAENwS,cAAAA,CAAC,EAAEyG,WAAU,GAAGvB,QAAQ,CAACU;AAFnB;AAPK,WAAf;AAYAS,UAAAA,cAAc,GAAGI,WAAjB;AACD;AACF,OArDD,MAqDO;AACL,YAAIG,aAAa,GAAG1B,QAAQ,CAACY,IAA7B;AACA,YAAIe,cAAc,GAAG3B,QAAQ,CAACY,IAA9B;;AACA,YAAMW,YAAU,GACdD,QAAQ,GAAGhB,IAAI,CAACje,MAAL,GAAc,CAAzB,GACI,CAACie,IAAI,CAACgB,QAAQ,GAAG,CAAZ,CAAJ,CAAmBZ,GAAnB,GAAyBW,GAAG,CAACV,MAA9B,IAAwC,CAD5C,GAEIX,QAAQ,CAACW,MAHf;;AAIA,YAAMiB,aAGL,GAAG;AACFC,UAAAA,UAAU,EAAE,IADV;AAEF/G,UAAAA,CAAC,EAAEuG,GAAG,CAACX,GAAJ,GAAUV,QAAQ,CAACU,GAFpB;AAGFoB,UAAAA,MAAM,EAAET,GAAG,CAACV,MAAJ,GAAaU,GAAG,CAACX;AAHvB,SAHJ;AAQAW,QAAAA,GAAG,CAAChB,KAAJ,CAAUhY,OAAV,CAAkB,CAACoY,IAAD,EAAOsB,SAAP,KAAqB;AACrC,cAAMC,SAAS,GAAG,CAACvB,IAAI,CAACG,IAAL,GAAYH,IAAI,CAACI,KAAlB,IAA2B,CAA7C;AACAX,UAAAA,SAAS,CAAC1d,IAAV,CAAe;AACbge,YAAAA,IAAI,EAAE;AACJE,cAAAA,GAAG,EAAES,cADD;AAEJR,cAAAA,MAAM,EAAEY,YAFJ;AAGJX,cAAAA,IAAI,EAAEc,aAHF;AAIJb,cAAAA,KAAK,EAAEmB;AAJH,aADO;AAObR,YAAAA,MAAM,kCACDI,aADC;AAEJtZ,cAAAA,KAAK,EAAEmY,IAAI,CAACnY,KAFR;AAGJsS,cAAAA,CAAC,EAAE,CAAC+G,cAAc,GAAGlB,IAAI,CAACG,IAAvB,IAA+B,CAA/B,GAAmCZ,QAAQ,CAACY;AAH3C;AAPO,WAAf;AAaAc,UAAAA,aAAa,GAAGM,SAAhB;AACAL,UAAAA,cAAc,GAAGlB,IAAI,CAACI,KAAtB,CAhBqC;;AAmBrC,cAAIkB,SAAS,KAAKV,GAAG,CAAChB,KAAJ,CAAUhe,MAAV,GAAmB,CAArC,EAAwC;AACtC,gBAAIif,QAAQ,KAAKhB,IAAI,CAACje,MAAL,GAAc,CAA/B,EAAkC;AAChC6d,cAAAA,SAAS,CAAC1d,IAAV,CAAe;AACbge,gBAAAA,IAAI,EAAE;AACJE,kBAAAA,GAAG,EAAES,cADD;AAEJR,kBAAAA,MAAM,EAAEX,QAAQ,CAACW,MAFb;AAGJC,kBAAAA,IAAI,EAAEc,aAHF;AAIJb,kBAAAA,KAAK,EAAEb,QAAQ,CAACa;AAJZ,iBADO;AAObW,gBAAAA,MAAM,kCACDI,aADC;AAEJtZ,kBAAAA,KAAK,EAAEmY,IAAI,CAACnY,KAAL,GAAa,CAFhB;AAGJsS,kBAAAA,CAAC,EACCoG,IAAI,CAACC,GAAL,CAASU,cAAc,GAAG/B,cAA1B,EAA0CI,QAAQ,CAACa,KAAnD,IACAb,QAAQ,CAACY;AALP;AAPO,eAAf;AAeD,aAhBD,MAgBO;AACLV,cAAAA,SAAS,CAAC1d,IAAV,CAAe;AACbge,gBAAAA,IAAI,EAAE;AACJE,kBAAAA,GAAG,EAAES,cADD;AAEJR,kBAAAA,MAAM,EAAEY,YAFJ;AAGJX,kBAAAA,IAAI,EAAEc,aAHF;AAIJb,kBAAAA,KAAK,EAAEb,QAAQ,CAACa;AAJZ,iBADO;AAObW,gBAAAA,MAAM,kCACDI,aADC;AAEJtZ,kBAAAA,KAAK,EAAEmY,IAAI,CAACnY,KAAL,GAAa,CAFhB;AAGJsS,kBAAAA,CAAC,EACCoG,IAAI,CAACC,GAAL,CAASU,cAAc,GAAG/B,cAA1B,EAA0CI,QAAQ,CAACa,KAAnD,IACAb,QAAQ,CAACY;AALP;AAPO,eAAf;AAeD;AACF;AACF,SAtDD;AAuDAO,QAAAA,cAAc,GAAGI,YAAjB;AACAH,QAAAA,aAAa,GAAGC,GAAG,CAACV,MAApB;AACD;AACF,KA/HD;AAgID;;AACD,SAAOT,SAAP;AACD;AAEM,SAAS+B,eAAT,CACLrH,CADK,EAELE,CAFK,EAGLgF,QAHK,EAILC,YAJK,EAKe;AACpB,MAAMG,SAAS,GAAGL,gBAAgB,CAACC,QAAD,EAAWC,YAAX,CAAlC;;AACA,OAAK,IAAM;AAAES,IAAAA,IAAF;AAAQgB,IAAAA;AAAR,GAAX,IAA+BtB,SAA/B,EAA0C;AACxC,QACEtF,CAAC,IAAI4F,IAAI,CAACI,IAAV,IACAhG,CAAC,IAAI4F,IAAI,CAACK,KADV,IAEA/F,CAAC,IAAI0F,IAAI,CAACE,GAFV,IAGA5F,CAAC,IAAI0F,IAAI,CAACG,MAJZ,EAKE;AACA;AACA,aAAOa,MAAP;AACD;AACF;;AAED,SAAO;AACLlZ,IAAAA,KAAK,EAAE,CADF;AAELwS,IAAAA,CAAC,EAAE;AAFE,GAAP;AAID;;AAED,SAASiG,oBAAT,CAA8BmB,CAA9B,EAAyCC,CAAzC,EAA4D;AAC1D,MAAMC,IAAI,GAAGF,CAAC,GAAGC,CAAjB;AACA,SAAOnB,IAAI,CAACqB,GAAL,CAASD,IAAT,IAAiB,CAAjB,GAAqB,CAArB,GAAyBA,IAAhC;AACD;;ACtOD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAT,CACLC,YADK,EAEkB;AACvB,MAAM;AACJC,IAAAA,eADI;AAEJC,IAAAA,cAFI;AAGJC,IAAAA,aAHI;AAIJC,IAAAA,kBAJI;AAKJC,IAAAA,qBALI;AAMJC,IAAAA;AANI,MAOFN,YAPJ,CADuB;;AAUvB,MAAMO,gBAAgB,GAAGrgB,KAAK,CAACC,OAAN,CAAc8f,eAAd,IACrBA,eADqB,GAErB,CAACA,eAAD,CAFJ;AAGA,MAAMO,cAAc,GAAGH,qBAAqB,CAACnY,OAAtB,CACpBuY,KAAD,IAAWA,KAAK,CAACzD,UADI,CAAvB;AAGA,MAAM5W,QAAQ,GAAGia,qBAAqB,CAACnY,OAAtB,CAA+BuY,KAAD,IAAW;AACxD,QAAMC,IAAI,GAAGD,KAAK,CAACzD,UAAN,CACV/W,GADU,CACLpC,IAAD,IAAUA,IAAI,CAACC,KADT,EAEVG,MAFU,CAEFR,GAAD,IAAS,CAAC8c,gBAAgB,CAACvW,QAAjB,CAA0BvG,GAA1B,CAFP,CAAb;;AAGA,QAAIgd,KAAK,CAAClc,UAAN,KAAqB6b,kBAAzB,EAA6C;AAC3CM,MAAAA,IAAI,CAACte,MAAL,CACE,CAAC+d,aAAD,aAACA,aAAD,cAACA,aAAD,GAAkB,CAAC,CAAnB,KAAyB,CAAzB,IAA8BG,aAAa,GAAGH,aAA9C,GACIG,aAAa,GAAG,CADpB,GAEIA,aAHN,EAIE,CAJF,EAKE,GAAGC,gBALL;AAOD;;AACD,WAAOG,IAAP;AACD,GAdgB,CAAjB;AAeA,MAAMC,OAAO,GAAGva,QAAQ,CAACH,GAAT,CAAcxC,GAAD,IAC3B8c,gBAAgB,CAACvW,QAAjB,CAA0BvG,GAA1B,IACIyc,cADJ,GAEIM,cAAc,CAAC5c,IAAf,CAAqBC,IAAD,IAAUA,IAAI,CAACC,KAAL,KAAeL,GAA7C,EAAkDsD,EAHxC,CAAhB;AAKA,SAAO;AAAEX,IAAAA,QAAF;AAAYua,IAAAA;AAAZ,GAAP;AACD;;AC/FD,IAAMpX,iBAAiB,GAAG,CACxB,YADwB,EAExB,QAFwB,EAGxB,WAHwB,EAIxB,QAJwB,EAKxB,IALwB,EAMxB,WANwB,CAA1B;AAQA,IAAMqX,iBAAiB,GAAG,CAAC,qBAAD,EAAwB,eAAxB,CAA1B;AACA,IAAMC,oBAAoB,GAAG,CAC3B,OAD2B,EAE3B,UAF2B,EAG3B,QAH2B,EAI3B,OAJ2B,EAK3B,IAL2B,EAM3B,UAN2B,EAO3B,YAP2B,CAA7B;AAoBA;AACA;AACO,SAASC,gBAAT,CACL5F,SADK,EAEL6F,GAFK,EAGgB;AACrB,SAAOxgB,MAAM,CAACuJ,WAAP,CACLvJ,MAAM,CAAC0H,OAAP,CAAeiT,SAAf,EACGjV,GADH,CAC0B;AAAA,QAAC,CAACxF,GAAD,EAAM8B,KAAN,CAAD;AAAA,WACtBA,KAAK,KAAK8C,SAAV,IAAuBwb,oBAAoB,CAAC7W,QAArB,CAA8BvJ,GAA9B,CAAvB,GACI4E,SADJ,GAEIkE,iBAAiB,CAACS,QAAlB,CAA2BvJ,GAA3B,IACA,CAACA,GAAD,EAAMyK,IAAI,CAAC8V,SAAL,CAAeze,KAAf,CAAN,CADA,GAEAqe,iBAAiB,CAAC5W,QAAlB,CAA2BvJ,GAA3B,IACA,CAACA,GAAD,EAAMwgB,IAAI,CAACC,QAAL,CAAc3e,KAAd,CAAN,CADA,GAEA,CAAC9B,GAAD,EAAM8B,KAAN,CAPkB;AAAA,GAD1B,EAUG0B,MAVH,CAUUyP,OAVV,EAWG1L,MAXH,CAWUzH,MAAM,CAAC0H,OAAP,CAAe8Y,GAAG,CAAC/X,QAAnB,CAXV,EAWwC,CACpC,CACE,OADF,EAEE+X,GAAG,CAAC/X,QAAJ,CAAaxH,IAAb,KAAsB,UAAtB,GACI0Z,SAAS,CAACiG,QADd,GAEIjG,SAAS,CAAC/R,KAJhB,CADoC,EAOpC,CAAC,QAAD,EAAW4X,GAAG,CAACK,cAAJ,IAAsBlG,SAAS,CAACmG,MAA3C,CAPoC,CAXxC,CADK,CAAP;AAsBD;;ACxDM,SAASC,oBAAT,OAgBe;AAAA,MAhBe;AACnCnd,IAAAA,MADmC;AAEnCgC,IAAAA,SAFmC;AAGnC5B,IAAAA,UAHmC;AAInCiC,IAAAA,OAJmC;AAKnC0U,IAAAA,SALmC;AAMnCkG,IAAAA,cANmC;AAOnChd,IAAAA;AAPmC,GAgBf;AACpB,MAAM5C,IAAI,GAAG0Z,SAAS,CAACiG,QAAV,GACT,UADS,GAETjG,SAAS,CAACqG,EAAV,GACA,UADA,GAEA,OAJJ;AAMA,SAAO;AACL/a,IAAAA,OADK;AAELL,IAAAA,SAFK;AAGL6C,IAAAA,QAAQ,EAAE8X,gBAAgB,CAAC5F,SAAD,EAAY;AACpCkG,MAAAA,cADoC;AAEpCpY,MAAAA,QAAQ,EAAE;AACRxH,QAAAA,IADQ;AAER2C,QAAAA,MAFQ;AAGRI,QAAAA,UAHQ;AAIRH,QAAAA;AAJQ;AAF0B,KAAZ,CAHrB;AAYL0G,IAAAA,QAAQ,EAAEoQ,SAAS,CAACrW,KAAV,GACNtE,MAAM,CAAC0H,OAAP,CAAeiT,SAAS,CAACrW,KAAzB,EACGqD,OADH,CACW;AAAA,UAAC,CAAC3D,UAAD,EAAasH,QAAb,CAAD;AAAA,aACNA,QAAD,CAA+B2V,MAA/B,CAAsCvb,GAAtC,CAA2Cwb,cAAD,KAAqB;AAC7DA,QAAAA,cAD6D;AAE7Dld,QAAAA;AAF6D,OAArB,CAA1C,CADO;AAAA,KADX,EAOG0B,GAPH,CAOO,QAAiCF,KAAjC;AAAA,UAAC;AAAE0b,QAAAA,cAAF;AAAkBld,QAAAA;AAAlB,OAAD;AAAA,aACH+c,oBAAoB,CAAC;AACnBnb,QAAAA,SAAS,EAAEK,OADQ;AAEnBjC,QAAAA,UAFmB;AAGnBiC,QAAAA,OAAO,EAAEvD,eAAe,EAHL;AAInBiY,QAAAA,SAAS,EAAEuG,cAJQ;AAKnBrd,QAAAA,IAAI,EAAE2B;AALa,OAAD,CADjB;AAAA,KAPP,CADM,GAiBN;AA7BC,GAAP;AA+BD;;AC9BM,SAAS2b,WAAT,OAWoB;AAAA,MAXC;AAC1BzN,IAAAA,OAD0B;AAE1BzS,IAAAA,IAF0B;AAG1BmM,IAAAA,IAH0B;AAI1B2S,IAAAA,aAJ0B;AAK1BqB,IAAAA,iBAL0B;AAM1BC,IAAAA,wBAN0B;AAO1BxB,IAAAA,kBAP0B;AAQ1ByB,IAAAA,kBAR0B;AAS1BxB,IAAAA,qBAT0B;AAU1Be,IAAAA;AAV0B,GAWD;;AACzB,MAAI5f,IAAI,KAAKpC,uBAAuB,CAAC0iB,WAArC,EAAkD;AAChD;AACA,QAAM;AAAEC,MAAAA,SAAS,GAAG,OAAd;AAAuB5Y,MAAAA;AAAvB,QACJwE,IADF;AAEA,QAAMsS,eAAe,GAAGhd,eAAe,EAAvC;AACAgR,IAAAA,OAAO,CAACnE,OAAR,iCACKiQ,wBAAwB,CAAC;AAC1BE,MAAAA,eAD0B;AAE1BC,MAAAA,cAAc,EAAE,IAFU;AAG1BI,MAAAA,aAH0B;AAI1BF,MAAAA,kBAJ0B;AAK1BC,MAAAA;AAL0B,KAAD,CAD7B;AAQE7Z,MAAAA,OAAO,EAAEyZ,eARX;AASE9Z,MAAAA,SAAS,EAAEwb,iBATb;AAUE3Y,MAAAA,QAAQ,EAAE;AACR7E,QAAAA,MAAM,EAAEyd,wBADA;AAERpgB,QAAAA,IAAI,EAAEugB,SAFE;AAGR5Y,QAAAA,KAHQ;AAIR5E,QAAAA,UAAU,EAAE6b,kBAJJ;AAKRmB,QAAAA,EAAE,EAAE,CAACH,cAAD,IAAmBW,SAAS,KAAK,UAAjC,GAA8C,IAA9C,GAAqD1c,SALjD;AAMRgc,QAAAA,MAAM,EAAED;AANA;AAVZ;AAmBD,GAxBD,MAwBO,IAAI5f,IAAI,KAAKpC,uBAAuB,CAAC4iB,gBAArC,EAAuD;AAC5D,QAAM;AAAER,MAAAA;AAAF,QAAa7T,IAAnB,CAD4D;;AAG5D,QAAM4S,gBAAgB,GAAG,CAAC,GAAG,IAAIrgB,KAAJ,CAAUshB,MAAM,CAAC1hB,MAAjB,CAAJ,EAA8BmG,GAA9B,CAAkC,MACzDhD,eAAe,EADQ,CAAzB;AAGAgR,IAAAA,OAAO,CAAC/D,YAAR,iCACK6P,wBAAwB,CAAC;AAC1BE,MAAAA,eAAe,EAAEM,gBADS;AAE1BL,MAAAA,cAAc,EAAE,IAFU;AAG1BI,MAAAA,aAH0B;AAI1BF,MAAAA,kBAJ0B;AAK1BC,MAAAA;AAL0B,KAAD,CAD7B;AAQEla,MAAAA,SAAS,EAAEwb,iBARb;AASExR,MAAAA,WAAW,EAAEqR,MAAM,CAACvb,GAAP,CAAW,CAACiV,SAAD,EAAYnV,KAAZ,KACtBub,oBAAoB,CAAC;AACnBnd,QAAAA,MAAM,EAAEyd,wBADW;AAEnBzb,QAAAA,SAAS,EAAEwb,iBAFQ;AAGnBpd,QAAAA,UAAU,EAAE6b,kBAHO;AAInB5Z,QAAAA,OAAO,EAAE+Z,gBAAgB,CAACxa,KAAD,CAJN;AAKnBmV,QAAAA,SALmB;AAMnBkG,QAAAA;AANmB,OAAD,CADT;AATf;AAoBD,GA1BM,MA0BA,IAAI5f,IAAI,KAAKpC,uBAAuB,CAACwc,YAArC,EAAmD;AACxD,QAAM;AACJpV,MAAAA,OAAO,EAAEyZ,gBADL;AAEJpE,MAAAA,MAAM,EAAEqE,cAFJ;AAGJ1N,MAAAA,cAAc,EAAEyP;AAHZ,QAIFtU,IAJJ;AAMA,QAAMwS,aAAa,GAAG0B,kBAAkB,CAAChc,SAAnB,CACnBhC,IAAD,IAAUA,IAAI,CAACC,KAAL,KAAemc,gBADL,CAAtB,CAPwD;AAWxD;;AACA,QAAIE,aAAa,IAAI,CAArB,EAAwB;AACtB;AACA,UACEG,aAAa,KAAKH,aAAlB,IACAG,aAAa,KAAKH,aAAa,GAAG,CAFpC,EAGE;AACAlM,QAAAA,OAAO,CAACnD,WAAR,iCACKiP,wBAAwB,CAAC;AAC1BE,UAAAA,eAAe,EAAfA,gBAD0B;AAE1BC,UAAAA,cAF0B;AAG1BC,UAAAA,aAH0B;AAI1BG,UAAAA,aAJ0B;AAK1BF,UAAAA,kBAL0B;AAM1BC,UAAAA;AAN0B,SAAD,CAD7B;AASEla,UAAAA,SAAS,EAAEwb;AATb;AAWD;AACF,KAlBD,MAkBO;AACL1N,MAAAA,OAAO,CAACvD,QAAR,iCACKqP,wBAAwB,CAAC;AAC1BE,QAAAA,eAAe,EAAfA,gBAD0B;AAE1BC,QAAAA,cAF0B;AAG1BI,QAAAA,aAH0B;AAI1BF,QAAAA,kBAJ0B;AAK1BC,QAAAA;AAL0B,OAAD,CAD7B;AAQE7Z,QAAAA,OAAO,EAAEyZ,gBARX;AASE9Z,QAAAA,SAAS,EAAEwb,iBATb;AAUEnP,QAAAA,cAAc,EAAEyP,sBAVlB;AAWEjZ,QAAAA,QAAQ,EAAE;AACR7E,UAAAA,MAAM,EAAEyd,wBADA;AAERrd,UAAAA,UAAU,EAAE6b;AAFJ;AAXZ;AAgBD;AACF;AACF;;ACzIM,SAAS8B,aAAT,CACLC,cADK,EAEmB;AACxB,SAAOxN,OAAO,CAAC,MAAM;AACnB,QAAMyN,UAAgC,GAAG,EAAzC;AACA,QAAMC,gBAAwC,GAAG,EAAjD;;AACA,SAAK,IAAMhe,KAAX,IAAoB8d,cAApB,EAAoC;AAClC,UAAI9d,KAAK,CAACgd,MAAV,EAAkB;AAChBgB,QAAAA,gBAAgB,CAACpiB,IAAjB,CAAsB,CAACoE,KAAD,CAAtB;AACD,OAFD,MAEO;AACL+d,QAAAA,UAAU,CAACniB,IAAX,CAAgBoE,KAAhB;AACD;AACF;;AACD,WAAO,CAAC+d,UAAD,EAAa,GAAGC,gBAAhB,EAAkC,EAAlC,CAAP;AACD,GAXa,EAWX,CAACF,cAAD,CAXW,CAAd;AAYD;;;;;;;ACuCM,SAASG,QAAT,OAc+B;AAAA,MAdb;AACvB9b,IAAAA,OADuB;AAEvBkO,IAAAA,MAFuB;AAGvB6N,IAAAA,cAHuB;AAIvBnB,IAAAA,cAJuB;AAKvBoB,IAAAA,uBALuB;AAMvBC,IAAAA,WANuB;AAOvBle,IAAAA,UAPuB;AAQvBme,IAAAA,UARuB;AASvBC,IAAAA,gBATuB;AAUvBC,IAAAA,aAVuB;AAWvBC,IAAAA,iBAXuB;AAYvB3I,IAAAA,iBAZuB;AAavB4I,IAAAA;AAbuB,GAca;AACpC,MAAMC,YAAY,GAAGjP,KAAK,CAACkD,MAAN,EAArB;AACA,MAAM,CAACgM,kBAAD,EAAqBC,qBAArB,IACJnP,KAAK,CAACS,QAAN,CAAmC,IAAnC,CADF;AAEA,MAAM2O,qBAAqB,GAAGpP,KAAK,CAACkD,MAAN,EAA9B;AACA,MAAM3I,iBAAiB,GAAGuG,2BAA2B,EAArD;AACA,MAAMX,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAMvQ,IAAI,GAAG8Q,cAAc,CAAC;AAAEjO,IAAAA,OAAF;AAAWkO,IAAAA;AAAX,GAAD,CAA3B;AACA,MAAMyO,iBAAiB,GAAGzG,2BAA2B,CAAC;AACpDlW,IAAAA,OADoD;AAEpDkO,IAAAA;AAFoD,GAAD,CAArD;AAKA,MAAM0O,yBAAyB,GAAGZ,uBAAuB,GACrDC,WAAW,GAAG,CADuC,GAErDrB,cAFJ;AAGA,MAAMiC,OAAO,GAAGd,cAAc,IAAIC,uBAAlC;AAEA,MAAMc,OAAO,GAAGrG,UAAU,EAA1B;AACA,MAAMsG,wBAAwB,GAC5BrJ,iBAD4B,aAC5BA,iBAD4B,cAC5BA,iBAD4B,GACP3a,uBAAuB,CAAC2c,KAD/C;AAGA,MAAMsH,cAAc,GAAG1P,KAAK,CAACa,OAAN,CACrB;AAAA;;AAAA,8DACEwO,iBAAiB,CAACvf,IAAlB,CAAwB6c,KAAD,IAAWA,KAAK,CAAClc,UAAN,KAAqBA,UAAvD,CADF,2DACE,uBACIyY,UAFN,yEAEoB,EAFpB;AAAA,GADqB,EAIrB,CAACmG,iBAAD,EAAoB5e,UAApB,CAJqB,CAAvB;AAOA,MAAMkf,UAAU,GAAGvB,aAAa,CAACsB,cAAD,CAAhC;AAEA,MAAME,6BAA6B,GAAG5P,KAAK,CAACa,OAAN,CACpC,MACE4N,cAAc,GACViB,cAAc,CAACvf,MAAf,CAAuBI,KAAD,IACpBqP,OAAO,CAACiQ,MAAM,CAACjQ,OAAO,CAAC0N,cAAD,CAAR,CAAN,GAAkCuC,MAAM,CAAC,CAACtf,KAAK,CAACgd,MAAR,CAAzC,CADT,CADU,GAIVmB,uBAAuB,GACvBiB,UAAU,CAAC7d,KAAK,CAAC6c,WAAD,aAACA,WAAD,cAACA,WAAD,GAAgB,CAAhB,EAAmB,CAAnB,EAAsBgB,UAAU,CAAC3jB,MAAX,GAAoB,CAA1C,CAAN,CADa,GAEvB0jB,cAR8B,EASpC,CACEf,WADF,EAEED,uBAFF,EAGEpB,cAHF,EAIEoC,cAJF,EAKEC,UALF,EAMElB,cANF,CAToC,CAAtC;AAmBA,MAAMqB,cAAc,GAAG9P,KAAK,CAACa,OAAN,CACrB;AAAA;;AAAA,oCACE+O,6BAA6B,CAAC,CAAD,CAD/B,0DACE,sBAAkChX,kBAAlC,CACGmX,QAFL;AAAA,GADqB,EAIrB,CAACH,6BAAD,CAJqB,CAAvB;AAOA,MAAMI,4BAA4B,GAAGhQ,KAAK,CAAC+D,WAAN,CAClCkM,4BAAD,IAA0C;AACxC,QAAI,CAACV,OAAL,EAAc;AACZ,aAAOU,4BAAP;AACD;;AACD,QAAIL,6BAA6B,CAAC5jB,MAA9B,GAAuC,CAA3C,EAA8C;AAC5C,UAAM2L,UAAU,GACdiY,6BAA6B,CAC3BK,4BAA4B,KAAK,CAAjC,GACI,CADJ,GAEIA,4BAA4B,GAAG,CAHR,CAD/B;AAMA,aACEP,cAAc,CAAC3d,SAAf,CAA0BxB,KAAD,IAAWA,KAAK,KAAKoH,UAA9C,KACCsY,4BAA4B,KAAK,CAAjC,GAAqC,CAArC,GAAyC,CAD1C,CADF;AAID;;AACD,WAAOX,yBAAyB,GAAGI,cAAc,CAAC1jB,MAAlB,GAA2B,CAA3D;AACD,GAlBkC,EAmBnC,CACEujB,OADF,EAEEK,6BAFF,EAGEN,yBAHF,EAIEI,cAJF,CAnBmC,CAArC;AA2BA,MAAM;AAAErgB,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAmBiR,cAAc,EAAvC;AAEA,MAAM2P,kBAAkB,GAAGlQ,KAAK,CAAC+D,WAAN,CAAkB,MAAM;AACjD,QAAI8K,gBAAJ,EAAsB;AAAA;;AACpB,UAAMsB,aAAa,GAAGrH,2BAA2B,CAAC;AAChDpW,QAAAA,OAAO,EAAEmc,gBAAgB,CAACzW,WADsB;AAEhD/I,QAAAA,KAFgD;AAGhDC,QAAAA,KAHgD;AAIhDuZ,QAAAA,oBAAoB,EAAE;AAJ0B,OAAD,CAAjD;AAMA,aAAO;AACLgF,QAAAA,iBAAiB,EAAEgB,gBAAgB,CAACzW,WAD/B;AAEL0V,QAAAA,wBAAwB,EAAEze,KAAK,CAACS,IAAN,CACvBC,IAAD,IAAUA,IAAI,CAACC,KAAL,KAAe6e,gBAAgB,CAACzW,WADlB,EAExB+D,UAJG;AAKLmQ,QAAAA,kBAAkB,EAAEuC,gBAAgB,CAACxW,kBALhC;AAML0V,QAAAA,kBAAkB,kDAChBoC,aAAa,CAACrgB,IAAd,CACG6c,KAAD,IAAWA,KAAK,CAAClc,UAAN,KAAqBoe,gBAAgB,CAACxW,kBADnD,CADgB,wDAChB,oBAEG6Q,UAHa,yEAGC,EATd;AAULqD,QAAAA,qBAAqB,EAAE4D;AAVlB,OAAP;AAYD;;AACD,WAAO;AACLtC,MAAAA,iBAAiB,EAAEhe,IAAI,CAACG,KADnB;AAEL8d,MAAAA,wBAAwB,EAAEje,IAAI,CAACsM,UAF1B;AAGLmQ,MAAAA,kBAAkB,EAAE7b,UAHf;AAILsd,MAAAA,kBAAkB,EAAE2B,cAJf;AAKLnD,MAAAA,qBAAqB,EAAE8C;AALlB,KAAP;AAOD,GA5B0B,EA4BxB,CACDR,gBADC,EAEDvf,KAFC,EAGD+f,iBAHC,EAID5e,UAJC,EAKDZ,IALC,EAMDR,KANC,EAODqgB,cAPC,CA5BwB,CAA3B;AAsCA,MAAM,CAAC;AAAEU,IAAAA;AAAF,GAAD,EAA4BC,OAA5B,IAAuCC,OAAO,CAAC;AACnDC,IAAAA,MAAM,EAAE,CACNjlB,uBAAuB,CAAC0iB,WADlB,EAEN1iB,uBAAuB,CAACwc,YAFlB,EAGNxc,uBAAuB,CAAC4iB,gBAHlB,CAD2C;AAMnDsB,IAAAA,OAAO,EACLzf,IADO,IAOP2e,uBAAuB,IAAIY,yBAA3B,GACIM,6BAA6B,CAAC5jB,MAA9B,KAAyC,CAD7C,GAEI+D,IAAI,CAACrC,IAAL,KAAcpC,uBAAuB,CAAC0iB,WAAtC,IACAje,IAAI,CAACrC,IAAL,KAAcpC,uBAAuB,CAAC4iB,gBADtC,IAEAtN,MAFA,IAGA4O,OAAO,CACJzf,IAAD,CAAiD2C,OAD5C,EAELA,OAFK,CAlBsC;AAsBnDuV,IAAAA,OAAO,EAAGC,OAAD,KAAc;AACrBkI,MAAAA,qBAAqB,EACnBlI,OAAO,CAACsI,MAAR,CAAe;AAAEC,QAAAA,OAAO,EAAE;AAAX,OAAf,KAAqCvI,OAAO,CAACsH,OAAR;AAFlB,KAAd,CAtB0C;AA0BnDhM,IAAAA,KAAK,EAAE,CAACzT,IAAD,EAAOmY,OAAP,KAAmB;AACxB,UAAIA,OAAO,CAACsI,MAAR,CAAe;AAAEC,QAAAA,OAAO,EAAE;AAAX,OAAf,KAAqCvI,OAAO,CAACsH,OAAR,EAAzC,EAA4D;AAC1D,YAAM;AAAEjL,UAAAA,CAAF;AAAKE,UAAAA;AAAL,YAAWyD,OAAO,CAACwI,eAAR,EAAjB;AACAtB,QAAAA,qBAAqB,CAACvL,OAAtB,GAAgC+H,eAAe,CAC7CrH,CAD6C,EAE7CE,CAF6C,EAG7CwK,YAAY,CAACpL,OAAb,CAAqBrB,aAHwB,EAI7CyM,YAAY,CAACpL,OAJgC,CAA/C;AAMAsL,QAAAA,qBAAqB,CAACC,qBAAqB,CAACvL,OAAvB,CAArB;AACD;AACF,KArCkD;AAsCnD8M,IAAAA,IAAI,EAAE,CAAC5gB,IAAD,EAAOmY,OAAP,KAAmB;AACvB,UAAI,CAACA,OAAO,CAAC0I,OAAR,EAAL,EAAwB;AACtB,YAAM;AAAEljB,UAAAA;AAAF,YAAoBqC,IAA1B;AAAA,YAAiB8J,IAAjB,4BAA0B9J,IAA1B;;AACA6d,QAAAA,WAAW;AACTlgB,UAAAA,IAAI,EAAEA,IADG;AAETmM,UAAAA,IAFS;AAGT2S,UAAAA,aAAa,EAAEwD,4BAA4B,CACzCZ,qBAAqB,CAACvL,OAAtB,CAA8B5R,KADW,CAHlC;AAMTqb,UAAAA,cAAc,EAAEgC,yBANP;AAOTnP,UAAAA;AAPS,WAQN+P,kBAAkB,EARZ,EAAX;AAUD;AACF;AApDkD,GAAD,CAApD;AAuDAlQ,EAAAA,KAAK,CAACU,SAAN,CAAgB,MAAM;AACpBP,IAAAA,OAAO,CAACZ,oBAAR,CACEsP,gBAAgB,GAAGA,gBAAgB,CAACzW,WAApB,GAAkCvI,IAAI,CAACG,KADzD,EAEE6e,gBAAgB,GAAGA,gBAAgB,CAACxW,kBAApB,GAAyC5H,UAF3D,EAGE2f,qBAHF;AAKD,GAND,EAMG,CAACA,qBAAD,EAAwB3f,UAAxB,EAAoC0P,OAApC,EAA6C0O,gBAA7C,EAA+Dhf,IAA/D,CANH;AAQA,MAAMghB,SAAS,GACb,CAAC,CAAChC,gBAAF,IACA,EAAEhf,IAAI,CAACgB,sBAAL,IAA+BhB,IAAI,CAAC4H,wBAAtC,CAFF;AAIA,MAAMqZ,WAAW,GAAG9Q,KAAK,CAACkD,MAAN,EAApB;AAEA,MAAM6N,mBAAmB,GAAG/Q,KAAK,CAAC+D,WAAN,CACzB5B,OAAD,IAA0B;AACxB2O,IAAAA,WAAW,CAACjN,OAAZ,GAAsB1B,OAAtB;;AACA,QAAI0O,SAAJ,EAAe;AACbR,MAAAA,OAAO,CAAClO,OAAD,CAAP;AACD;AACF,GANyB,EAO1B,CAACkO,OAAD,EAAUQ,SAAV,CAP0B,CAA5B;AAUA,MAAMxM,iBAAiB,GAAGrE,KAAK,CAAC+D,WAAN,CACvB9V,KAAD,IAA6B;AAC3B;AACA,QACE,CAACqhB,yBAAD,IACAtN,0BAA0B,CACxB/T,KAAK,CAACD,MADkB,EAExB8iB,WAAW,CAACjN,OAFY,CAF5B,EAME;AACA5V,MAAAA,KAAK,CAACqW,cAAN;AACAnE,MAAAA,OAAO,CAAC9C,iBAAR,CAA0B;AACxB9D,QAAAA,MAAM,EAAE,IADgB;AAExB1J,QAAAA,IAFwB;AAGxB0U,QAAAA,CAAC,EAAEtW,KAAK,CAACuW,OAHe;AAIxBC,QAAAA,CAAC,EAAExW,KAAK,CAACyW;AAJe,OAA1B;AAMD;AACF,GAlBuB,EAmBxB,CAAC4K,yBAAD,EAA4BnP,OAA5B,EAAqCtQ,IAArC,CAnBwB,CAA1B;AAsBA,sBACE;AACE,IAAA,GAAG,EAAEkhB,mBADP;AAEE,IAAA,SAAS,EAAEnlB,UAAU,CACnB+Y,QAAM,CAAC8E,QADY,EAEnB7I,MAAM,GACFhV,UAAU,CACR+Y,QAAM,CAAC/D,MADC,EAER,CAAAkP,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAEkB,IAAhB,KACEC,MAAM,CAACnB,cAAc,CAACkB,IAAhB,CAAN,CACG3a,KADH,CACS,MADT,EAEGlE,GAFH,CAEQ6e,IAAD,IAAUrM,QAAM,gBAASqM,IAAT,EAFvB,CAHM,EAMR;AACE,OAACrM,QAAM,CAACiK,UAAR,GAAqBA,UADvB;AAEE,OAACjK,QAAM,CAAC4K,OAAR,GAAkBA;AAFpB,KANQ,CADR,GAYF5K,QAAM,CAACuM,MAdQ,EAenB;AACE,OAACvM,QAAM,CAAC2I,cAAR,GAAyBgC,yBAD3B;AAEE,OAAC3K,QAAM,CAACE,QAAR,GAAmBuL,qBAFrB;AAGE,OAACzL,QAAM,CAACpL,MAAR,GACEqH,MAAM,IACNrG,iBAAiB,CAAChB,MADlB,IAEAgB,iBAAiB,CAAC1K,IAAlB,CAAuBG,KAAvB,KAAiCH,IAAI,CAACG,KAN1C;AAOE,OAAC2U,QAAM,CAACqK,kBAAR,GACE,CAACpO,MAAD,IAAWoO,kBAAX,IAAiCU,cAAc,CAAC1jB,MAAf,KAA0B,CAR/D;AASE,OAAC2Y,QAAM,CAACwD,sBAAR,GACEsH,wBAAwB,KAAKhkB,uBAAuB,CAAC2c,KAVzD;AAWE,OAACzD,QAAM,CAAC0D,uBAAR,GACEoH,wBAAwB,KAAKhkB,uBAAuB,CAACic,MAZzD;AAaE,OAAC/C,QAAM,CAACwM,qBAAR,GACE1B,wBAAwB,KAAKhkB,uBAAuB,CAAC2lB;AAdzD,KAfmB,CAFvB;AAkCE,IAAA,KAAK,EAAEtC,aAlCT;AAmCE,IAAA,aAAa,EAAElO,MAAM,GAAGyD,iBAAH,GAAuB;AAnC9C,kBAqCE;AACE,IAAA,GAAG,EAAE4K,YADP;AAEE,IAAA,SAAS,EAAEtK,QAAM,CAACsK,YAFpB;AAGE,IAAA,KAAK,EAAEF;AAHT,KAKGa,6BAA6B,CAACzd,GAA9B,CAAmC5B,KAAD,iBACjC,oBAAC,sBAAD;AACE,IAAA,GAAG,EAAEA,KAAK,CAACP,KADb;AAEE,IAAA,IAAI,EAAEO,KAFR;AAGE,IAAA,iBAAiB,EAAEkf;AAHrB,IADD,CALH,CArCF,eAmDI;AACE,IAAA,SAAS,EAAE7jB,UAAU,CACnB+Y,QAAM,CAAC0M,UADY,EAEnBnC,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,IAAAA,kBAAkB,CAAE1D,UAApB,GACI7G,QAAM,CAAC2M,kBADX,GAEI3M,QAAM,CAAC4M,oBAJQ,CADvB;AAOE,IAAA,KAAK,EAAE;AACLlH,MAAAA,GAAG,EAAE6E,kBAAF,aAAEA,kBAAF,uBAAEA,kBAAkB,CAAEzK,CADpB;AAEL8F,MAAAA,IAAI,EAAE2E,kBAAF,aAAEA,kBAAF,uBAAEA,kBAAkB,CAAE3K,CAFrB;AAGLkH,MAAAA,MAAM,EAAEyD,kBAAF,aAAEA,kBAAF,uBAAEA,kBAAkB,CAAEzD;AAHvB;AAPT,IAnDJ,CADF;AAoED;;;;;;AC5WD;AAqBO,SAAS+F,aAAT,OAQoC;AAAA;;AAAA,MARb;AAC5B9e,IAAAA,OAD4B;AAE5BoF,IAAAA,QAF4B;AAG5B2Z,IAAAA,kBAH4B;AAI5B3C,IAAAA,aAJ4B;AAK5BC,IAAAA,iBAL4B;AAM5B3I,IAAAA,iBAN4B;AAO5B4I,IAAAA;AAP4B,GAQa;AACzC,MAAMnf,IAAI,GAAG8Q,cAAc,CAAC;AAAEjO,IAAAA;AAAF,GAAD,CAA3B;AACA,MAAMgN,cAAc,GAAGiD,iBAAiB,EAAxC;AAEA,MAAMkM,gBAAgB,GAAGhO,OAAO,CAAC,MAAM;AAAA;;AACrC,QAAM6Q,cAAc,4BAAG7hB,IAAI,CAACqI,gBAAR,0DAAG,sBAAuBpK,GAAvB,CAA2BgK,QAA3B,CAAvB,CADqC;;AAGrC,WAAO,CAAA4Z,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAE1lB,MAAhB,MAA2B,CAA3B,GAA+B0lB,cAAc,CAAC,CAAD,CAA7C,GAAmD,IAA1D;AACD,GAJ+B,EAI7B,CAAC7hB,IAAD,EAAOiI,QAAP,CAJ6B,CAAhC;AAMA,sBACE;AACE,IAAA,SAAS,EAAElM,UAAU,CAAC+Y,MAAM,CAACgN,aAAR,EAAuB;AAC1C,OAAChN,MAAM,CAACE,QAAR,0BAAmBnF,cAAc,CAC9B5R,GADgB,CACZ+gB,gBAAgB,GAAGA,gBAAgB,CAACzW,WAApB,GAAkC1F,OADtC,CAAnB,wDAAmB,oBAEf5E,GAFe,CAGf+gB,gBAAgB,GAAGA,gBAAgB,CAACxW,kBAApB,GAAyCP,QAH1C;AADuB,KAAvB,CADvB;AAQE,IAAA,KAAK,EAAE2Z;AART,kBAUE;AAAK,IAAA,SAAS,EAAE9M,MAAM,CAAC7M;AAAvB,KACG+W,gBAAgB,GAAGA,gBAAgB,CAACxW,kBAApB,GAAyCP,QAD5D,CAVF,eAaE,oBAAC,QAAD;AACE,IAAA,OAAO,EAAEpF,OADX;AAEE,IAAA,UAAU,EAAEoF,QAFd;AAGE,IAAA,gBAAgB,EAAE+W,gBAHpB;AAIE,IAAA,aAAa,EAAEC,aAJjB;AAKE,IAAA,iBAAiB,EAAEC,iBALrB;AAME,IAAA,iBAAiB,EAAE3I,iBANrB;AAOE,IAAA,kBAAkB,EAAE4I;AAPtB,IAbF,CADF;AAyBD;;AChED;IAQa4C,eAAe,gBAAG5R,KAAK,CAAC6R,IAAN,CAAWC,qBAAX;AAE/B,IAAMC,cAAc,GAAGC,MAAM,CAACC,GAAP,CAAW,yCAAX,CAAvB;;AACA,SAASC,6BAAT,GAA2D;AACzD,MAAMjF,GAAG,GAAGhgB,MAAZ;;AACA,MAAI,CAACggB,GAAG,CAAC8E,cAAD,CAAR,EAA0B;AACxB9E,IAAAA,GAAG,CAAC8E,cAAD,CAAH,GAAsB7R,oBAAoB,EAA1C;AACD;;AACD,SAAO+M,GAAG,CAAC8E,cAAD,CAAV;AACD;;AAED,IAAII,QAAQ,GAAG,CAAf;;AAEA,SAASL,qBAAT,OAEqD;AAAA,MAFtB;AAC7B9a,IAAAA;AAD6B,GAEsB;AACnD,MAAM+F,OAAO,GAAGmV,6BAA6B,EAA7C;AAEA;AACF;AACA;AACA;AACA;;AACElS,EAAAA,KAAK,CAACU,SAAN,CAAgB,MAAM;AACpByR,IAAAA,QAAQ;AAER,WAAO,MAAM;AACXA,MAAAA,QAAQ;;AAER,UAAIA,QAAQ,KAAK,CAAjB,EAAoB;AACjBllB,QAAAA,MAAD,CAAgB8kB,cAAhB,IAAkC,IAAlC;AACD;AACF,KAND;AAOD,GAVD,EAUG,EAVH;AAYA,sBACE,oBAAC,cAAD,CAAgB,QAAhB;AAAyB,IAAA,KAAK,EAAEhV;AAAhC,KACG/F,QADH,CADF;AAKD;;AChBM,SAASob,oBAAT,CACLC,eADK,EAELzkB,OAFK,EAG0B;AAAA,MACzB0kB,gBADyB;AAC/B,UAAMA,gBAAN,0BAA+C;AAAA;AAAA;;AAAA;AAAA;;AAAA;;AADhB;AAAA,SACzBA,gBADyB;AAAA;AAAA;AAAA;AAAA;AAAA,eAE7B,sBAA0C;AACxC,iBAAO1kB,OAAP,aAAOA,OAAP,uBAAOA,OAAO,CAAE0Z,UAAhB;AACD;AAJ4B;AAAA;AAAA,qBAM5BiL,QAAQ,CAAC;AAAE7kB,UAAAA,IAAI,EAAEmiB;AAAR,SAAD,CANoB;AAAA;AAAA;AAAA;AAAA;AAAA,qBAS5B0C,QAAQ,CAAC;AAAEC,UAAAA,SAAS,EAAE;AAAb,SAAD,CAToB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAY7B,6BAA0B;AACxB;AACA;AACA,cAAI,CAAC,KAAKhR,KAAL,CAAWiR,OAAhB,EAAyB;AACvB,iBAAKjR,KAAL,CAAWiR,OAAX,GAAqB,OAArB;AACD;;AACD,cAAI7kB,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAE8kB,UAAb,EAAyB;AACvB,iBAAK,IAAM,CAAC/lB,GAAD,EAAM8B,KAAN,CAAX,IAA2BhC,MAAM,CAAC0H,OAAP,CAAevG,OAAO,CAAC8kB,UAAvB,CAA3B,EAA+D;AAC5D,mBAAKlR,KAAN,CAAkD7U,GAAlD,IAAyD8B,KAAzD;AACD;AACF;;AACD,eAAKkkB,OAAL;AACD;AAxB4B;AAAA;AAAA;AAAA,eA0B7B,gCAA6B;AAC3BC,UAAAA,QAAQ,CAACC,sBAAT,CAAgC,IAAhC;AACD;AA5B4B;AAAA;AAAA;AAAA,eA8B7B,mBAA0B;AACxB;AACA,cAAI,KAAKC,WAAL,IAAoB,KAAKpgB,OAA7B,EAAsC;AACpCkgB,YAAAA,QAAQ,CAACG,MAAT,eACE,oBAAC,YAAD,qBACE,oBAAC,eAAD,qBACE,oBAAC,WAAD;AAAa,cAAA,OAAO,EAAEC;AAAtB,4BACE,oBAAC,eAAD;AACE,cAAA,OAAO,EAAE,KAAKtgB,OADhB;AAEE,cAAA,WAAW,EAAE,KAAK2U;AAFpB,cADF,CADF,CADF,CADF,EAWE,IAXF;AAaD;AACF;AA/C4B;AAAA;AAAA,KACA4L,eADA;;AAiD/B,SAAOX,gBAAP;AACD;;ACzED;;AACA;IACaY,qBAAqB,gBAAGjT,aAAa,CAA0B,EAA1B;;ACV3C,SAASkT,yBAAT,OAQM;AAAA,MAR6B;AACxCzgB,IAAAA,OADwC;AAExCkO,IAAAA,MAFwC;AAGxCiI,IAAAA;AAHwC,GAQ7B;AACX,MAAM;AAAEtZ,IAAAA,MAAF;AAAUD,IAAAA;AAAV,MAAoBiR,cAAc,EAAxC;AACA,MAAM7J,UAAU,GAAGkK,MAAM,GAAGrR,MAAH,GAAYmD,OAArC;AACA,SAAOmO,OAAO,CAAC,MAAM;AACnB,QAAMuS,WAAW,GAAG,IAAIxgB,GAAJ,EAApB;AACA,QAAMoW,YAAY,GAAG9Y,MAAM,CACzBZ,KAAK,CAACa,MAAN,CACGC,IAAD,IACEA,IAAI,CAACC,MAAL,KAAgBqG,UAAhB,KACCmS,oBAAoB,GACjB,CAACzY,IAAI,CAACuB,oBADW,GAEjB,CAACvB,IAAI,CAAC6I,qBAHV,CAFJ,CADyB,EAQzB,CAAE7I,IAAD,IAAUA,IAAI,CAACE,IAAhB,CARyB,CAA3B;;AAUA,SAAK,IAAMF,IAAX,IAAmB4Y,YAAnB,EAAiC;AAC/BoK,MAAAA,WAAW,CAACrgB,GAAZ,CAAgB3C,IAAI,CAACK,UAArB;AACD;;AACD,WAAOrE,KAAK,CAAC0S,IAAN,CAAWsU,WAAX,CAAP;AACD,GAhBa,EAgBX,CAAC1c,UAAD,EAAapH,KAAb,EAAoBuZ,oBAApB,CAhBW,CAAd;AAiBD;;AC5BM,SAASwK,oBAAT,CAA8B3gB,OAA9B,EAAmE;AACxE,MAAM;AAAErD,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAmBiR,cAAc,EAAvC;AACA,SAAOM,OAAO,CAAC,MAAM;AACnB,QAAMxO,SAAS,GAAG/C,KAAK,CAACQ,IAAN,CACfM,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAemC,OAAf,IAA0B,CAACtC,IAAI,CAACoB,oBAD1B,EAEhBnB,MAFF;AAGA,WAAOhB,KAAK,CAACS,IAAN,CAAYD,IAAD,IAAUA,IAAI,CAACG,KAAL,KAAeqC,SAApC,CAAP;AACD,GALa,EAKX,CAAC/C,KAAD,EAAQoD,OAAR,EAAiBrD,KAAjB,CALW,CAAd;AAMD;;ACRM,SAASikB,YAAT,GAA4C;AACjD,MAAMnT,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACvG,IAAD,EAAO2G,OAAP,IAAkBC,QAAQ,CAACN,OAAO,CAAC5E,YAAR,EAAD,CAAhC;AACAmF,EAAAA,SAAS,CACP,MACEP,OAAO,CAAC1E,iBAAR,CAA0B,MAAM;AAC9B+E,IAAAA,OAAO,CAACL,OAAO,CAAC5E,YAAR,EAAD,CAAP;AACD,GAFD,CAFK,EAKP,CAAC4E,OAAD,CALO,CAAT;AAOA,SAAOtG,IAAP;AACD;;ACZM,SAAS0Z,iBAAT,CACL7U,cADK,EAEL8U,YAFK,EAGI;AACT,MAAMrT,OAAO,GAAGC,qBAAqB,EAArC;AACA,MAAM,CAACqT,OAAD,EAAUC,UAAV,IAAwBjT,QAAQ,CACpC+S,YAAY,GAAG,KAAH,GAAWrT,OAAO,CAACnB,gBAAR,CAAyBN,cAAzB,CADa,CAAtC;AAGAgC,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI,CAAC8S,YAAL,EAAmB;AACjB,aAAOrT,OAAO,CAAClB,2BAAR,CAAoC,MAAM;AAC/CyU,QAAAA,UAAU,CAACvT,OAAO,CAACnB,gBAAR,CAAyBN,cAAzB,CAAD,CAAV;AACD,OAFM,CAAP;AAGD;AACF,GANQ,EAMN,CAAC8U,YAAD,EAAerT,OAAf,EAAwBzB,cAAxB,CANM,CAAT;AAOA,SAAO+U,OAAP;AACD;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/interfaces.ts","../../../node_modules/classnames/index.js","../../../node_modules/@ungap/event-target/esm/index.js","../src/internal/getUniqueNodeId.ts","../src/internal/expandTemplateEdges.ts","../src/internal/reorderBuilderEdges.ts","../src/internal/deleteNodeFromTree.ts","../src/processors/getRelatedNodesBasedOnEvents.ts","../src/internal/getBuilderNode.ts","../src/internal/getAppendingNodesAndEdges.ts","../src/internal/isParentExpandableTemplate.ts","../src/internal/BuilderDataManager.ts","../src/BuilderContext.ts","../src/hooks/useBuilderDataManager.ts","../src/hooks/useBuilderData.ts","../src/hooks/useBuilderNode.ts","../src/hooks/useBuilderContextMenuStatus.ts","../src/hooks/useShowRelatedNodesBasedOnEvents.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/EditorContainer/isCurrentTargetByClassName.ts","../src/hooks/useHoverNodeUid.ts","../src/hooks/useHighlightNodes.ts","../src/hooks/useDroppingStatus.ts","../src/EditorContainer/EditorContainer.tsx","../src/EditorBrickAsComponent/getEditorBrick.ts","../src/hooks/useStoryList.ts","../src/EditorBrickAsComponent/getBrickDoc.ts","../src/hooks/useSharedEditorMap.ts","../src/EditorBrickAsComponent/EditorBrickAsComponent.tsx","../src/hooks/useBuilderGroupedChildNodes.ts","../src/hooks/useCanDrop.ts","../src/DropZone/getDropPosition.ts","../src/processors/getSortedIdsAfterDropped.ts","../src/DropZone/reverseNormalize.ts","../src/DropZone/getSnippetNodeDetail.ts","../src/DropZone/processDrop.ts","../src/hooks/useCanvasList.ts","../src/DropZone/DropZone.tsx","../src/SlotContainer/SlotContainer.tsx","../src/BuilderProvider.tsx","../src/EditorElementFactory.tsx","../src/DroppingStatusContext.ts","../src/hooks/useBuilderNodeMountPoints.ts","../src/hooks/useBuilderParentNode.ts","../src/hooks/useRouteList.ts","../src/hooks/useOutlineEnabled.ts"],"sourcesContent":["import {\n BrickEventsMap,\n BuilderRouteOrBrickNode,\n CustomTemplateProxy,\n ContextConf,\n BuilderRouteNode,\n BrickLifeCycle,\n BrickConf,\n RouteConf,\n} from \"@next-core/brick-types\";\n\nexport interface BuilderCanvasData {\n rootId: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n}\n\nexport interface BuilderCanvasSettings {\n mode: \"page\" | \"dialog\";\n}\n\nexport type BuilderRuntimeNode<P = Record<string, unknown>> =\n BuilderRouteOrBrickNode & {\n $$uid?: number;\n $$parsedProperties?: P;\n $$parsedEvents?: BrickEventsMap;\n $$parsedLifeCycle?: BrickLifeCycle;\n $$matchedSelectors?: string[];\n $$isTemplateInternalNode?: boolean;\n $$isExpandableTemplate?: boolean;\n $$templateProxy?: CustomTemplateProxy;\n $$templateRefToUid?: Map<string, number>;\n $$delegatedSlots?: Map<string, TemplateDelegatedContext[]>;\n $$normalized?: BrickConf | RouteConf | null;\n };\n\nexport interface BuilderRuntimeEdge {\n child: number;\n parent: number;\n mountPoint: string;\n sort: number;\n $$isTemplateInternal?: boolean;\n $$isTemplateDelegated?: boolean;\n $$isTemplateExpanded?: boolean;\n}\n\nexport interface TemplateDelegatedContext {\n templateUid: number;\n templateMountPoint: string;\n}\n\nexport interface BuilderGroupedChildNode {\n mountPoint: string;\n childNodes: BuilderRuntimeNode[];\n}\n\nexport interface EventDetailOfNodeAdd {\n nodeUid: number;\n parentUid: number;\n nodeUids: number[];\n nodeIds: string[];\n nodeData: NodeInstance;\n}\n\nexport interface EventDetailOfContextUpdated {\n context: ContextConf[];\n}\n\nexport interface NodeInstance {\n parent: string;\n type: \"brick\" | \"provider\" | \"template\";\n brick: string;\n mountPoint: string;\n bg?: boolean;\n portal?: boolean;\n properties?: string;\n events?: string;\n lifeCycle?: string;\n sort?: number;\n}\n\nexport interface EventDetailOfNodeAddStored {\n nodeUid: number;\n nodeData: BuilderRouteOrBrickNode;\n}\n\nexport interface EventDetailOfSnippetApply {\n parentUid: number;\n /** First level node only. */\n nodeUids: number[];\n /** First level node only. */\n nodeIds: string[];\n nodeDetails: SnippetNodeDetail[];\n}\n\nexport interface SnippetNodeDetail {\n nodeUid: number;\n parentUid: number;\n nodeData: SnippetNodeInstance;\n children: SnippetNodeDetail[];\n}\n\nexport type SnippetNodeInstance = Omit<NodeInstance, \"parent\"> & {\n parent?: string;\n};\n\nexport interface EventDetailOfSnippetApplyStored {\n flattenNodeDetails: EventDetailOfNodeAddStored[];\n}\n\nexport type EventDetailOfNodeMove = Omit<EventDetailOfNodeAdd, \"nodeData\"> & {\n nodeInstanceId: string;\n nodeData: {\n parent: string;\n mountPoint: string;\n };\n};\n\nexport interface EventDetailOfNodeReorder {\n nodeUids: number[];\n parentUid: number;\n nodeIds: string[];\n}\n\nexport interface EventDetailOfNodeDragStart {\n nodeUid: number;\n}\n\nexport interface BuilderContextMenuStatus {\n active: boolean;\n node?: BuilderRuntimeNode;\n /** `x` is relative to the viewport. */\n x?: number;\n /** `y` is relative to the viewport. */\n y?: number;\n}\n\nexport enum BuilderDataTransferType {\n NODE_TO_ADD = \"builder/node-to-add\",\n NODE_TO_MOVE = \"builder/node-to-move\",\n SNIPPET_TO_APPLY = \"builder/snippet-to-apply\",\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToAdd {\n brickType?: \"brick\" | \"provider\" | \"template\";\n brick: string;\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToMove {\n nodeUid: number;\n nodeInstanceId: string;\n nodeId: string;\n}\n\nexport interface BuilderDataTransferPayloadOfSnippetToApply {\n bricks: BrickConf[];\n}\n\nexport enum EditorBrickType {\n DEFAULT = \"editorOfDefault\",\n CONTAINER = \"editorOfContainer\",\n TRANSPARENT_CONTAINER = \"editorOfTransparentContainer\",\n}\n\nexport enum EditorSelfLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n CONTAINER = \"container\",\n}\n\nexport enum EditorSlotContentLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n GRID = \"grid\",\n}\n\nexport interface SharedEditorConf {\n id: string;\n editor: string;\n editorProps?: Record<string, unknown>;\n}\n\nexport type BuilderDroppingStatus = Map<number, Map<string, boolean>>;\n\nexport interface AbstractBuilderDataManager {\n getData(): BuilderCanvasData;\n getRouteList(): BuilderRouteNode[];\n getContextMenuStatus(): BuilderContextMenuStatus;\n dataInit(root: BuilderRuntimeNode): void;\n sharedEditorListInit(data: SharedEditorConf[]): void;\n routeListInit(data: BuilderRouteNode[]): void;\n nodeAdd(detail: EventDetailOfNodeAdd): void;\n nodeAddStored(detail: EventDetailOfNodeAddStored): void;\n snippetApply(detail: EventDetailOfSnippetApply): void;\n snippetApplyStored(detail: EventDetailOfSnippetApplyStored): void;\n nodeMove(detail: EventDetailOfNodeMove): void;\n nodeReorder(detail: EventDetailOfNodeReorder): void;\n nodeDelete(detail: BuilderRuntimeNode): void;\n nodeClick(detail: BuilderRuntimeNode): void;\n contextUpdated(detail: EventDetailOfContextUpdated): void;\n onDataChange(fn: EventListener): () => void;\n onNodeAdd(fn: (event: CustomEvent<EventDetailOfNodeAdd>) => void): () => void;\n onNodeReorder(\n fn: (event: CustomEvent<EventDetailOfNodeReorder>) => void\n ): () => void;\n onNodeMove(\n fn: (event: CustomEvent<EventDetailOfNodeMove>) => void\n ): () => void;\n onNodeClick(fn: (event: CustomEvent<BuilderRuntimeNode>) => void): () => void;\n onContextMenuChange(\n fn: (event: CustomEvent<BuilderContextMenuStatus>) => void\n ): () => void;\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\ntry {\n self.EventTarget = (new EventTarget).constructor;\n} catch(EventTarget) {\n (function (Object, wm) {\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var proto = EventTarget.prototype;\n define(proto, 'addEventListener', function (type, listener, options) {\n for (var\n secret = wm.get(this),\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener)\n return;\n }\n listeners.push({target: this, listener: listener, options: options});\n });\n define(proto, 'dispatchEvent', function (event) {\n var secret = wm.get(this);\n var listeners = secret[event.type];\n if (listeners) {\n define(event, 'target', this);\n define(event, 'currentTarget', this);\n listeners.slice(0).some(dispatch, event);\n delete event.currentTarget;\n delete event.target;\n }\n return true;\n });\n define(proto, 'removeEventListener', function (type, listener) {\n for (var\n secret = wm.get(this),\n /* istanbul ignore next */\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener) {\n listeners.splice(i, 1);\n return;\n }\n }\n });\n self.EventTarget = EventTarget;\n function EventTarget() {'use strict';\n wm.set(this, create(null));\n }\n function define(target, name, value) {\n defineProperty(\n target,\n name,\n {\n configurable: true,\n writable: true,\n value: value\n }\n );\n }\n function dispatch(info) {\n var options = info.options;\n if (options && options.once)\n info.target.removeEventListener(this.type, info.listener);\n if (typeof info.listener === 'function')\n info.listener.call(info.target, this);\n else\n info.listener.handleEvent(this);\n return this._stopImmediatePropagationFlag;\n }\n }(Object, new WeakMap));\n}\nexport default self.EventTarget;\n","let uniqueIdCursor = 0;\n\nexport function getUniqueNodeId(): number {\n return (uniqueIdCursor += 1);\n}\n","import { clamp, sortBy } from \"lodash\";\nimport { CustomTemplateProxySlot } from \"@next-core/brick-types\";\nimport { hasOwnProperty } from \"@next-core/brick-utils\";\nimport {\n BuilderCanvasData,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n} from \"../interfaces\";\n\nexport function expandTemplateEdges({\n nodes,\n // Here expanded edges should be excluded.\n edges,\n rootId,\n}: BuilderCanvasData): BuilderRuntimeEdge[] {\n const newEdges = edges.slice();\n const reorderedEdgesMap = new WeakMap<BuilderRuntimeEdge, number>();\n\n const walk = (\n uid: number,\n callback: (\n node: BuilderRuntimeNode,\n childEdges: BuilderRuntimeEdge[]\n ) => void\n ): void => {\n const node = nodes.find((item) => item.$$uid === uid);\n const childEdges = sortBy(\n edges.filter((edge) => edge.parent === node.$$uid),\n (edge) => edge.sort\n );\n callback(node, childEdges);\n for (const edge of childEdges) {\n walk(edge.child, callback);\n }\n };\n\n const expandEdgesThroughTemplateChain = (\n node: BuilderRuntimeNode,\n mountPoint: string,\n childUid: number\n ): void => {\n let proxySlotConf: CustomTemplateProxySlot;\n let delegateToParentUid: number;\n if (\n node.$$isExpandableTemplate &&\n node.$$templateProxy?.slots &&\n hasOwnProperty(node.$$templateProxy.slots, mountPoint) &&\n (proxySlotConf = node.$$templateProxy.slots[mountPoint]) &&\n (delegateToParentUid = node.$$templateRefToUid.get(proxySlotConf.ref))\n ) {\n const nextNode = nodes.find((n) => n.$$uid === delegateToParentUid);\n const nextMountPoint = proxySlotConf.refSlot;\n if (nextNode.$$isExpandableTemplate) {\n expandEdgesThroughTemplateChain(nextNode, nextMountPoint, childUid);\n } else {\n const expandedEdge: BuilderRuntimeEdge = {\n child: childUid,\n parent: delegateToParentUid,\n mountPoint: nextMountPoint,\n sort: undefined,\n $$isTemplateExpanded: true,\n };\n const siblingEdges = sortBy(\n newEdges.filter((edge) => edge.parent === delegateToParentUid),\n (edge) => reorderedEdgesMap.get(edge) ?? edge.sort\n );\n const internalEdges = siblingEdges.filter(\n (edge) => edge.$$isTemplateInternal\n );\n // For more details about refPosition implementation detail,\n // see `packages/brick-kit/src/core/CustomTemplates/expandCustomTemplate.ts`.\n const refPosition = proxySlotConf.refPosition ?? -1;\n const clampedRefPosition = clamp(\n refPosition < 0\n ? internalEdges.length + 1 + refPosition\n : refPosition,\n 0,\n internalEdges.length\n );\n siblingEdges.splice(\n clampedRefPosition < internalEdges.length\n ? siblingEdges.findIndex(\n (edge) => edge === internalEdges[clampedRefPosition]\n )\n : siblingEdges.length,\n 0,\n expandedEdge\n );\n siblingEdges.forEach((edge, index) => {\n reorderedEdgesMap.set(edge, index);\n });\n newEdges.push(expandedEdge);\n }\n }\n };\n\n walk(rootId, (node, childEdges) => {\n if (!node.$$isExpandableTemplate) {\n return;\n }\n for (const childEdge of childEdges) {\n // Recursively expand templates.\n expandEdgesThroughTemplateChain(\n node,\n childEdge.mountPoint,\n childEdge.child\n );\n }\n });\n\n if (newEdges.length > edges.length) {\n return newEdges.map((edge) => {\n const sort = reorderedEdgesMap.get(edge);\n return sort === undefined\n ? edge\n : {\n ...edge,\n sort,\n };\n });\n }\n\n return edges;\n}\n","import { BuilderCanvasData, BuilderRuntimeEdge } from \"../interfaces\";\nimport { expandTemplateEdges } from \"./expandTemplateEdges\";\n\nexport function reorderBuilderEdges(\n { rootId, nodes, edges }: BuilderCanvasData,\n {\n parentUid,\n nodeUids,\n }: {\n parentUid: number;\n nodeUids: number[];\n }\n): BuilderRuntimeEdge[] {\n // When we do edge-reordering, we simply remove existed\n // expanded edges and re-expand them.\n const edgesExcludeExpanded = edges.filter(\n (edge) => !edge.$$isTemplateExpanded\n );\n\n return expandTemplateEdges({\n rootId,\n nodes,\n edges: edgesExcludeExpanded.map((edge) => {\n // `nodeUids` are sorted, so reorder related edges based on it.\n const index =\n edge.parent === parentUid ? nodeUids.indexOf(edge.child) : -1;\n return index >= 0\n ? {\n ...edge,\n sort: index,\n }\n : edge;\n }),\n });\n}\n","import { BuilderCanvasData, BuilderRuntimeEdge } from \"../interfaces\";\n\nexport function deleteNodeFromTree(\n nodeUid: number,\n { rootId, nodes, edges }: BuilderCanvasData\n): BuilderCanvasData {\n const idsToDelete = new Set<number>();\n collectIdsToDelete(nodeUid, edges, idsToDelete);\n return {\n rootId,\n nodes: nodes.filter((node) => !idsToDelete.has(node.$$uid)),\n edges: edges.filter(\n (edge) => !idsToDelete.has(edge.parent) && !idsToDelete.has(edge.child)\n ),\n };\n}\n\nfunction collectIdsToDelete(\n nodeUid: number,\n edges: BuilderRuntimeEdge[],\n idsToDelete: Set<number>\n): void {\n idsToDelete.add(nodeUid);\n const ids = new Set<number>();\n for (const edge of edges) {\n if (edge.parent === nodeUid) {\n ids.add(edge.child);\n }\n }\n for (const id of ids) {\n collectIdsToDelete(id, edges, idsToDelete);\n }\n}\n","import { BuilderRuntimeNode } from \"../interfaces\";\nimport {\n BrickEventHandler,\n ExecuteCustomBrickEventHandler,\n MessageConf,\n} from \"@next-core/brick-types\";\nimport { isEmpty } from \"lodash\";\n\nexport type RelatedNodesBasedOnEventsMap = Map<\n number,\n {\n upstreamNodes: Set<number>;\n downstreamNodes: Set<number>;\n }\n>;\n\nexport function getRelatedNodesBasedOnEvents(\n nodes: BuilderRuntimeNode[],\n rootNodeIsCustomTemplate?: boolean\n): RelatedNodesBasedOnEventsMap {\n const nodesMap: RelatedNodesBasedOnEventsMap = new Map();\n\n const targetMap = new Map<string, number>();\n const targetRefMap = new Map<string, number>();\n for (const n of nodes) {\n nodesMap.set(n.$$uid, {\n upstreamNodes: new Set<number>(),\n downstreamNodes: new Set<number>(),\n });\n for (const selector of n.$$matchedSelectors) {\n if (!targetMap.get(selector)) {\n targetMap.set(selector, n.$$uid);\n }\n }\n if (rootNodeIsCustomTemplate) {\n if (n.ref) {\n targetRefMap.set(n.ref as string, n.$$uid);\n }\n }\n }\n\n for (const node of nodes) {\n let handlers: BrickEventHandler[] = [];\n if (!isEmpty(node.$$parsedEvents)) {\n handlers = Object.values(node.$$parsedEvents).flat();\n }\n if (!isEmpty(node.$$parsedLifeCycle)) {\n handlers = handlers.concat(\n Object.entries(node.$$parsedLifeCycle).flatMap(\n ([lifeCycleName, lifeCycleConf]) => {\n switch (lifeCycleName) {\n case \"onBeforePageLoad\":\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onBeforePageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n return lifeCycleConf as BrickEventHandler[];\n case \"onMessage\":\n return ([] as MessageConf[])\n .concat(lifeCycleConf)\n .flatMap((messageConf) =>\n ([] as BrickEventHandler[]).concat(messageConf.handlers)\n );\n default:\n // eslint-disable-next-line no-console\n console.warn(`unknown lifeCycle: ${lifeCycleName}`);\n return [];\n }\n }\n )\n );\n }\n if (handlers.length > 0) {\n collectRelatedNodes(node, handlers, nodesMap, targetMap, targetRefMap);\n }\n }\n\n return nodesMap;\n}\n\nfunction collectRelatedNodes(\n node: BuilderRuntimeNode,\n handlers: BrickEventHandler[],\n nodesMap: RelatedNodesBasedOnEventsMap,\n targetMap: Map<string, number>,\n targetRefMap: Map<string, number>\n): void {\n for (const handler of handlers as ExecuteCustomBrickEventHandler[]) {\n if (handler) {\n if (handler.target) {\n const targetNodeUid = targetMap.get(handler.target as string);\n if (targetNodeUid) {\n nodesMap.get(node.$$uid).downstreamNodes.add(targetNodeUid);\n nodesMap.get(targetNodeUid).upstreamNodes.add(node.$$uid);\n }\n } else if (handler.targetRef) {\n const targetRefNodeUid = targetRefMap.get(handler.targetRef);\n if (targetRefNodeUid) {\n nodesMap.get(node.$$uid).downstreamNodes.add(targetRefNodeUid);\n nodesMap.get(targetRefNodeUid).upstreamNodes.add(node.$$uid);\n }\n }\n if (handler.callback) {\n for (const callbackHandlers of Object.values(handler.callback)) {\n collectRelatedNodes(\n node,\n [].concat(callbackHandlers),\n nodesMap,\n targetMap,\n targetRefMap\n );\n }\n }\n }\n }\n}\n","import { cloneDeep, upperFirst } from \"lodash\";\nimport { normalizeBuilderNode } from \"@next-core/brick-utils\";\nimport { BuilderRouteOrBrickNode } from \"@next-core/brick-types\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { isBrickNode } from \"../assertions\";\n\nconst nodeIgnoreFields = [\"parent\", \"children\", \"graphInfo\", \"mountPoint\"];\n\n// Match evaluations and placeholders,\n// E.g.: `<% QUERY.x %>` or `${QUERY.x}`.\nconst computationRegExp = /[<{]/;\n\nexport function getBuilderNode(\n nodeData: BuilderRouteOrBrickNode,\n nodeUid: number,\n isTemplateInternalNode?: boolean\n): BuilderRuntimeNode {\n const matchedSelectors: string[] = [];\n\n if (nodeData.brick) {\n matchedSelectors.push((nodeData.brick as string).replace(/\\./g, \"\\\\.\"));\n }\n\n const normalized = normalizeBuilderNode(nodeData);\n\n const jsonFieldsInBrick = [\"properties\", \"events\", \"lifeCycle\"];\n const parsedFields: [string, unknown][] = [];\n let parsedId: string;\n let parsedTestId: string;\n\n for (const field of jsonFieldsInBrick) {\n const parsed = cloneDeep(\n (normalized as Record<string, unknown>)?.[field]\n ) as Record<string, unknown>;\n parsedFields.push([`$$parsed${upperFirst(field)}`, parsed ?? {}]);\n\n if (field === \"properties\") {\n let tempParsedId: string;\n let tempParsedTestId: string;\n if (\n ((tempParsedId = parsed?.id as string),\n typeof tempParsedId === \"string\") &&\n !computationRegExp.test(tempParsedId)\n ) {\n parsedId = tempParsedId;\n matchedSelectors.push(`#${parsedId}`);\n } else if (\n ((tempParsedTestId = (parsed?.dataset as Record<string, string>)\n ?.testid),\n typeof tempParsedTestId === \"string\") &&\n !computationRegExp.test(tempParsedTestId)\n ) {\n parsedTestId = tempParsedTestId;\n }\n }\n }\n\n return Object.fromEntries(\n Object.entries(nodeData)\n .filter((entry) => !nodeIgnoreFields.includes(entry[0]))\n .concat([\n [\n \"alias\",\n nodeData.alias ||\n (isBrickNode(nodeData)\n ? parsedId || parsedTestId || nodeData.brick.split(\".\").pop()\n : undefined),\n ],\n [\"$$uid\", nodeUid],\n [\"$$matchedSelectors\", matchedSelectors],\n [\"$$isTemplateInternalNode\", isTemplateInternalNode],\n [\"$$normalized\", normalized],\n ])\n .concat(parsedFields)\n ) as BuilderRuntimeNode;\n}\n","import { sortBy } from \"lodash\";\nimport { hasOwnProperty } from \"@next-core/brick-utils\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderCustomTemplateNode,\n CustomTemplateProxyProperty,\n CustomTemplateProxyBasicProperty,\n Story,\n} from \"@next-core/brick-types\";\nimport { BuilderRuntimeEdge, BuilderRuntimeNode } from \"../interfaces\";\nimport { getBuilderNode } from \"./getBuilderNode\";\nimport { getUniqueNodeId } from \"./getUniqueNodeId\";\nimport { isBrickNode } from \"../assertions\";\n\nexport function getAppendingNodesAndEdges(\n nodeData: BuilderRouteOrBrickNode,\n nodeUid: number,\n templateSourceMap: Map<string, BuilderCustomTemplateNode>,\n storyList: Story[] = []\n): {\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n} {\n const nodes: BuilderRuntimeNode[] = [];\n const edges: BuilderRuntimeEdge[] = [];\n const walk = (\n nodeData: BuilderRouteOrBrickNode,\n currentUid: number,\n processedTemplateSet: Set<string>,\n isTemplateInternalNode?: boolean,\n inheritedTemplateRefToUid?: Map<string, number>\n ): void => {\n const builderNode = getBuilderNode(\n nodeData,\n currentUid,\n isTemplateInternalNode\n );\n nodes.push(builderNode);\n\n if (inheritedTemplateRefToUid && builderNode.ref) {\n inheritedTemplateRefToUid.set(builderNode.ref as string, currentUid);\n }\n\n let templateSource: BuilderCustomTemplateNode;\n\n if (\n isBrickNode(builderNode) &&\n ((!builderNode.brick.includes(\".\") &&\n builderNode.brick.startsWith(\"tpl-\") &&\n !processedTemplateSet.has(builderNode.brick) &&\n (templateSource = templateSourceMap?.get(builderNode.brick)) &&\n templateSource.children?.length > 0) ||\n (builderNode.brick.includes(\".tpl-\") &&\n (templateSource = storyList?.find(\n (item) => item.storyId === builderNode.brick\n )?.originData) &&\n templateSource.children?.length > 0))\n ) {\n // Avoid nesting the same templates.\n processedTemplateSet.add(builderNode.brick);\n builderNode.$$isExpandableTemplate = true;\n builderNode.$$templateProxy =\n templateSource.proxy && JSON.parse(templateSource.proxy);\n const templateRefToUid = new Map<string, number>();\n builderNode.$$templateRefToUid = templateRefToUid;\n\n const sortedChildren = sortBy(templateSource.children, [\n (item) => item.sort ?? -Infinity,\n ]);\n sortedChildren.forEach((child, index) => {\n const childUid = getUniqueNodeId();\n walk(\n child,\n childUid,\n // Each child should be a branch.\n new Set(processedTemplateSet),\n true,\n templateRefToUid\n );\n edges.push({\n child: childUid,\n parent: currentUid,\n mountPoint: \"\",\n sort: index,\n $$isTemplateInternal: true,\n });\n });\n\n if (!builderNode.$$isTemplateInternalNode) {\n // Here all internal nodes of the template including nested templates are ready.\n const processDelegatingSlots = (\n cursorNode: BuilderRuntimeNode,\n mountPoint?: string,\n rootMountPoint?: string\n ): void => {\n if (cursorNode.$$templateProxy?.slots) {\n const slotEntries = Object.entries(\n cursorNode.$$templateProxy?.slots\n ).filter(\n (entry) => mountPoint === undefined || entry[0] === mountPoint\n );\n for (const [slotName, slotConf] of slotEntries) {\n const refUid = cursorNode.$$templateRefToUid.get(slotConf.ref);\n if (refUid) {\n const refNode = nodes.find((node) => node.$$uid === refUid);\n if (refNode.$$isExpandableTemplate) {\n processDelegatingSlots(refNode, slotConf.refSlot, slotName);\n } else {\n if (!refNode.$$delegatedSlots) {\n refNode.$$delegatedSlots = new Map();\n }\n let delegatedSlotsByRefSlot = refNode.$$delegatedSlots.get(\n slotConf.refSlot\n );\n if (!delegatedSlotsByRefSlot) {\n delegatedSlotsByRefSlot = [];\n refNode.$$delegatedSlots.set(\n slotConf.refSlot,\n delegatedSlotsByRefSlot\n );\n }\n delegatedSlotsByRefSlot.push({\n templateUid: builderNode.$$uid,\n templateMountPoint: rootMountPoint || slotName,\n });\n }\n }\n }\n }\n };\n processDelegatingSlots(builderNode);\n\n const processDelegatingProperties = (\n cursorNode: BuilderRuntimeNode,\n previousPropertyName?: string\n ): void => {\n if (cursorNode.$$templateProxy?.properties) {\n const propertyEntries = Object.entries(\n cursorNode.$$templateProxy?.properties\n ).filter(\n (entry) =>\n previousPropertyName === undefined ||\n entry[0] === previousPropertyName\n );\n for (const [propertyName, propertyConf] of propertyEntries) {\n if (\n hasOwnProperty(cursorNode.$$parsedProperties, propertyName) &&\n isBasicRefProperty(propertyConf)\n ) {\n const refUid = cursorNode.$$templateRefToUid.get(\n propertyConf.ref\n );\n const propertyValue =\n cursorNode.$$parsedProperties[propertyName];\n if (refUid) {\n const refNode = nodes.find((node) => node.$$uid === refUid);\n refNode.$$parsedProperties[propertyConf.refProperty] =\n propertyValue;\n if (refNode.$$isExpandableTemplate) {\n processDelegatingProperties(\n refNode,\n propertyConf.refProperty\n );\n }\n }\n }\n }\n }\n };\n processDelegatingProperties(builderNode);\n }\n }\n\n if (Array.isArray(nodeData.children)) {\n // For routes and custom-templates, their children are fixed\n // and mount points should be ignored. To unify tree edge\n // data structure, just override their mount points.\n let overrideChildrenMountPoint: string;\n switch (builderNode.type) {\n case \"bricks\":\n case \"custom-template\":\n overrideChildrenMountPoint = \"bricks\";\n break;\n case \"routes\":\n overrideChildrenMountPoint = \"routes\";\n break;\n }\n const sortedChildren = sortBy(nodeData.children, [\n (item) => item.sort ?? -Infinity,\n ]);\n sortedChildren.forEach((child, index) => {\n const childUid = getUniqueNodeId();\n walk(\n child,\n childUid,\n // Each child should be a branch.\n new Set(processedTemplateSet),\n isTemplateInternalNode,\n inheritedTemplateRefToUid\n );\n edges.push({\n child: childUid,\n parent: currentUid,\n mountPoint: overrideChildrenMountPoint ?? child.mountPoint,\n sort: index,\n $$isTemplateInternal: isTemplateInternalNode,\n $$isTemplateDelegated: builderNode.$$isExpandableTemplate,\n });\n });\n }\n };\n walk(nodeData, nodeUid, new Set());\n return {\n nodes,\n edges,\n };\n}\n\nexport function isBasicRefProperty(\n propRef: CustomTemplateProxyProperty\n): propRef is CustomTemplateProxyBasicProperty {\n return (\n !!(propRef as CustomTemplateProxyBasicProperty).ref &&\n !!(propRef as CustomTemplateProxyBasicProperty).refProperty\n );\n}\n","import { BuilderRuntimeNode } from \"../interfaces\";\n\nexport function isParentExpandableTemplate(\n nodes: BuilderRuntimeNode[],\n parentUid: number\n): boolean {\n return nodes.find((node) => node.$$uid === parentUid).$$isExpandableTemplate;\n}\n","import { omit } from \"lodash\";\nimport EventTarget from \"@ungap/event-target\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderRouteNode,\n Story,\n BuilderCustomTemplateNode,\n} from \"@next-core/brick-types\";\nimport { JsonStorage } from \"@next-core/brick-utils\";\nimport {\n AbstractBuilderDataManager,\n BuilderCanvasData,\n BuilderContextMenuStatus,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n EventDetailOfNodeAdd,\n EventDetailOfNodeAddStored,\n EventDetailOfNodeMove,\n EventDetailOfNodeReorder,\n EventDetailOfContextUpdated,\n SnippetNodeDetail,\n EventDetailOfSnippetApply,\n EventDetailOfSnippetApplyStored,\n SharedEditorConf,\n BuilderDroppingStatus,\n} from \"../interfaces\";\nimport { getBuilderNode } from \"./getBuilderNode\";\nimport { getUniqueNodeId } from \"./getUniqueNodeId\";\nimport { reorderBuilderEdges } from \"./reorderBuilderEdges\";\nimport { deleteNodeFromTree } from \"./deleteNodeFromTree\";\nimport {\n getRelatedNodesBasedOnEvents,\n RelatedNodesBasedOnEventsMap,\n} from \"../processors/getRelatedNodesBasedOnEvents\";\nimport { expandTemplateEdges } from \"./expandTemplateEdges\";\nimport { getAppendingNodesAndEdges } from \"./getAppendingNodesAndEdges\";\nimport { isParentExpandableTemplate } from \"./isParentExpandableTemplate\";\n\nenum BuilderInternalEventType {\n NODE_ADD = \"builder.node.add\",\n NODE_MOVE = \"builder.node.move\",\n NODE_REORDER = \"builder.node.reorder\",\n NODE_CLICK = \"builder.node.click\",\n SNIPPET_APPLY = \"builder.snippet.apply\",\n CONTEXT_MENU_CHANGE = \"builder.contextMenu.change\",\n DATA_CHANGE = \"builder.data.change\",\n SHARED_EDITOR_LIST_CHANGE = \"builder.sharedEditorList.change\",\n ROUTE_LIST_CHANGE = \"builder.routeList.change\",\n HOVER_NODE_CHANGE = \"builder.hoverNode.change\",\n SHOW_RELATED_NODES_BASED_ON_EVENTS = \"builder.showRelatedNodesBasedOnEvents.change\",\n HIGHLIGHT_NODES_CHANGE = \"builder.highlightNodes.change\",\n OUTLINE_DISABLED_NODES_CHANGE = \"builder.outlineDisabledNodes.change\",\n DROPPING_STATUS_CHANGE = \"builder.droppingStatus.change\",\n}\n\nconst storageKeyOfOutlineDisabledNodes = \"builder-outline-disabled-nodes\";\n\nexport class BuilderDataManager implements AbstractBuilderDataManager {\n private data: BuilderCanvasData = {\n rootId: null,\n nodes: [],\n edges: [],\n };\n\n private hoverNodeUid: number;\n\n private sharedEditorList: SharedEditorConf[];\n\n private routeList: BuilderRouteNode[];\n\n private storyList: Story[];\n\n private readonly eventTarget = new EventTarget();\n\n private contextMenuStatus: BuilderContextMenuStatus = {\n active: false,\n };\n\n private showRelatedNodesBasedOnEvents: boolean;\n\n private relatedNodesBasedOnEventsMap: RelatedNodesBasedOnEventsMap;\n\n private highlightNodes: Set<number> = new Set();\n\n private templateSourceMap: Map<string, BuilderCustomTemplateNode>;\n\n private droppingStatus: BuilderDroppingStatus = new Map();\n\n private readonly localJsonStorage = new JsonStorage<{\n [storageKeyOfOutlineDisabledNodes]: string[];\n }>(localStorage);\n\n private readonly outlineDisabledNodes: Set<string> = new Set(\n this.localJsonStorage.getItem(storageKeyOfOutlineDisabledNodes) ?? []\n );\n\n getData(): BuilderCanvasData {\n return this.data;\n }\n\n getContextMenuStatus(): BuilderContextMenuStatus {\n return this.contextMenuStatus;\n }\n\n getRelatedNodesBasedOnEventsMap(): RelatedNodesBasedOnEventsMap {\n return this.relatedNodesBasedOnEventsMap;\n }\n\n sharedEditorListInit(data: SharedEditorConf[]): void {\n this.sharedEditorList = data;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE)\n );\n }\n\n getSharedEditorList(): SharedEditorConf[] {\n return this.sharedEditorList ?? [];\n }\n\n onSharedEditorListChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE,\n fn\n );\n };\n }\n\n routeListInit(data: BuilderRouteNode[]): void {\n this.routeList = data;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.ROUTE_LIST_CHANGE)\n );\n }\n\n getRouteList(): BuilderRouteNode[] {\n return this.routeList ?? [];\n }\n\n storyListInit(data: Story[]): void {\n this.storyList = data;\n }\n\n getStoryList(): Story[] {\n return this.storyList;\n }\n\n onRouteListChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.ROUTE_LIST_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.ROUTE_LIST_CHANGE,\n fn\n );\n };\n }\n\n dataInit(\n root: BuilderRuntimeNode,\n templateSourceMap?: Map<string, BuilderCustomTemplateNode>\n ): void {\n this.templateSourceMap = templateSourceMap;\n const rootId = getUniqueNodeId();\n const newData = {\n rootId,\n ...getAppendingNodesAndEdges(\n root,\n rootId,\n templateSourceMap,\n this.storyList\n ),\n };\n this.data = {\n ...newData,\n edges: expandTemplateEdges(newData),\n };\n this.triggerDataChange();\n }\n\n private triggerDataChange(): void {\n const { rootId, nodes } = this.data;\n const rootNode = nodes.find((node) => node.$$uid === rootId);\n const rootNodeIsCustomTemplate = rootNode.type === \"custom-template\";\n this.relatedNodesBasedOnEventsMap = getRelatedNodesBasedOnEvents(\n nodes,\n rootNodeIsCustomTemplate\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.DATA_CHANGE)\n );\n }\n\n runAddNodeAction = (detail: EventDetailOfNodeAdd) => {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData } = detail;\n\n const { nodes: addNodes, edges: addEdges } = getAppendingNodesAndEdges(\n omit(nodeData, [\n \"parent\",\n ]) as Partial<BuilderRouteOrBrickNode> as BuilderRouteOrBrickNode,\n nodeUid,\n this.templateSourceMap,\n this.getStoryList()\n );\n\n const newNodes = nodes.concat(addNodes);\n const newEdges = edges\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n })\n .concat(addEdges);\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n };\n\n updateBrick(detail: EventDetailOfNodeAdd) {\n this.data = deleteNodeFromTree(detail.nodeUid, this.data);\n\n this.runAddNodeAction(detail);\n }\n\n nodeAdd(detail: EventDetailOfNodeAdd): void {\n this.runAddNodeAction(detail);\n\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_ADD, { detail })\n );\n }\n\n nodeAddStored(detail: EventDetailOfNodeAddStored): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, nodeData } = detail;\n this.data = {\n rootId,\n nodes: nodes.map((node) =>\n node.$$uid === nodeUid\n ? { ...node, id: nodeData.id, instanceId: nodeData.instanceId }\n : node\n ),\n edges,\n };\n this.triggerDataChange();\n }\n\n snippetApply(detail: EventDetailOfSnippetApply): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeDetails, parentUid, nodeUids } = detail;\n\n const newNodes: BuilderRuntimeNode[] = nodes.slice();\n const newEdges: BuilderRuntimeEdge[] = edges.slice();\n\n const walk = ({\n parentUid,\n nodeUid,\n nodeData,\n children,\n }: SnippetNodeDetail): void => {\n const { nodes: appendingNodes, edges: appendingEdges } =\n getAppendingNodesAndEdges(\n omit(nodeData, [\n \"parent\",\n ]) as Partial<BuilderRouteOrBrickNode> as BuilderRouteOrBrickNode,\n nodeUid,\n this.templateSourceMap,\n this.storyList\n );\n newNodes.push(...appendingNodes);\n newEdges.push(\n {\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: nodeData.sort,\n $$isTemplateDelegated: isParentExpandableTemplate(\n newNodes,\n parentUid\n ),\n },\n ...appendingEdges\n );\n for (const item of children) {\n walk(item);\n }\n };\n\n for (const item of nodeDetails) {\n walk(item);\n }\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.SNIPPET_APPLY, { detail })\n );\n }\n\n snippetApplyStored(detail: EventDetailOfSnippetApplyStored): void {\n const { rootId, nodes, edges } = this.data;\n const { flattenNodeDetails } = detail;\n this.data = {\n rootId,\n nodes: nodes.map((node) => {\n const found = flattenNodeDetails.find((n) => n.nodeUid === node.$$uid);\n return found\n ? {\n ...node,\n id: found.nodeData.id,\n instanceId: found.nodeData.instanceId,\n }\n : node;\n }),\n edges,\n };\n this.triggerDataChange();\n }\n\n nodeMove(detail: EventDetailOfNodeMove): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData } = detail;\n const newData = {\n rootId,\n nodes,\n edges: edges\n .filter((edge) => edge.child !== nodeUid)\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n }),\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_MOVE, { detail })\n );\n }\n\n contextUpdated(detail: EventDetailOfContextUpdated): void {\n const { rootId, nodes, edges } = this.data;\n this.data = {\n rootId,\n edges,\n nodes: nodes.map((node) =>\n node.$$uid === rootId ? { ...node, context: detail.context } : node\n ),\n };\n this.triggerDataChange();\n }\n\n nodeReorder(detail: EventDetailOfNodeReorder): void {\n const { nodeUids, parentUid } = detail;\n this.data = {\n ...this.data,\n edges: reorderBuilderEdges(this.data, { parentUid, nodeUids }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_REORDER, { detail })\n );\n }\n\n nodeDelete(detail: BuilderRuntimeNode): void {\n this.data = deleteNodeFromTree(detail.$$uid, this.data);\n this.triggerDataChange();\n }\n\n nodeClick(detail: BuilderRuntimeNode): void {\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_CLICK, { detail })\n );\n }\n\n contextMenuChange(detail: BuilderContextMenuStatus): void {\n this.contextMenuStatus = detail;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.CONTEXT_MENU_CHANGE)\n );\n }\n\n onDataChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(BuilderInternalEventType.DATA_CHANGE, fn);\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.DATA_CHANGE,\n fn\n );\n };\n }\n\n onNodeAdd(\n fn: (event: CustomEvent<EventDetailOfNodeAdd>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_ADD,\n fn as EventListener\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_ADD,\n fn as EventListener\n );\n };\n }\n\n onSnippetApply(\n fn: (event: CustomEvent<EventDetailOfSnippetApply>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SNIPPET_APPLY,\n fn as EventListener\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SNIPPET_APPLY,\n fn as EventListener\n );\n };\n }\n\n onNodeReorder(\n fn: (event: CustomEvent<EventDetailOfNodeReorder>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_REORDER,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_REORDER,\n fn as EventListener\n );\n };\n }\n\n onNodeMove(\n fn: (event: CustomEvent<EventDetailOfNodeMove>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_MOVE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_MOVE,\n fn as EventListener\n );\n };\n }\n\n onNodeClick(\n fn: (event: CustomEvent<BuilderRuntimeNode>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n };\n }\n\n onContextMenuChange(\n fn: (event: CustomEvent<BuilderContextMenuStatus>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n };\n }\n\n setShowRelatedNodesBasedOnEvents(show: boolean): void {\n this.showRelatedNodesBasedOnEvents = show;\n this.eventTarget.dispatchEvent(\n new CustomEvent(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS\n )\n );\n }\n\n getShowRelatedNodesBasedOnEvents(): boolean {\n return this.showRelatedNodesBasedOnEvents;\n }\n\n onShowRelatedNodesBasedOnEventsChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n };\n }\n\n setHoverNodeUid(uid: number): void {\n if (this.hoverNodeUid !== uid) {\n this.hoverNodeUid = uid;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.HOVER_NODE_CHANGE)\n );\n }\n }\n\n getHoverNodeUid(): number {\n return this.hoverNodeUid;\n }\n\n onHoverNodeChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n };\n }\n\n toggleOutline(nodeInstanceId: string): void {\n if (this.outlineDisabledNodes.has(nodeInstanceId)) {\n this.outlineDisabledNodes.delete(nodeInstanceId);\n } else {\n this.outlineDisabledNodes.add(nodeInstanceId);\n }\n this.localJsonStorage.setItem(\n storageKeyOfOutlineDisabledNodes,\n Array.from(this.outlineDisabledNodes)\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE)\n );\n }\n\n isOutlineEnabled(nodeInstanceId: string): boolean {\n return !this.outlineDisabledNodes.has(nodeInstanceId);\n }\n\n onOutlineEnabledNodesChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE,\n fn\n );\n };\n }\n\n setHighlightNodes(nodeUids: Set<number>): void {\n this.highlightNodes = nodeUids;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE)\n );\n }\n\n getHighlightNodes(): Set<number> {\n return this.highlightNodes;\n }\n\n onHighlightNodesChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE,\n fn\n );\n };\n }\n\n updateDroppingStatus(\n nodeUid: number,\n mountPoint: string,\n isDraggingOver: boolean\n ): void {\n const nodeStatus = this.droppingStatus.get(nodeUid);\n this.droppingStatus = new Map(\n Array.from(this.droppingStatus.entries()).concat([\n [\n nodeUid,\n new Map(\n (nodeStatus ? Array.from(nodeStatus) : []).concat([\n [mountPoint, isDraggingOver],\n ])\n ),\n ],\n ])\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.DROPPING_STATUS_CHANGE)\n );\n\n // When dragging nodes over `EditorContainer`, the `mouseout` events\n // are not triggered, which causes hover status does not get cleared.\n // So we manually reset hover status once dragging starts.\n if (\n this.hoverNodeUid &&\n Array.from(this.droppingStatus.values())\n .flatMap((nodeStatus) => Array.from(nodeStatus.values()))\n .some(Boolean)\n ) {\n this.setHoverNodeUid(undefined);\n }\n }\n\n getDroppingStatus(): BuilderDroppingStatus {\n return this.droppingStatus;\n }\n\n onDroppingStatusChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.DROPPING_STATUS_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.DROPPING_STATUS_CHANGE,\n fn\n );\n };\n }\n}\n","import React from \"react\";\nimport { BuilderDataManager } from \"./internal/BuilderDataManager\";\n\nexport interface ContextOfBuilder {\n manager?: BuilderDataManager;\n}\n\nexport const BuilderContext = React.createContext<ContextOfBuilder>({});\n\nexport function createBuilderContext(): ContextOfBuilder {\n return {\n manager: new BuilderDataManager(),\n };\n}\n","import React from \"react\";\nimport { BuilderContext } from \"../BuilderContext\";\nimport { BuilderDataManager } from \"../internal/BuilderDataManager\";\n\nexport function useBuilderDataManager(): BuilderDataManager {\n const { manager } = React.useContext(BuilderContext);\n if (!manager) {\n throw new Error(\"Expected builder data context\");\n }\n return manager;\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderCanvasData } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useBuilderData(): BuilderCanvasData {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getData());\n useEffect(\n () =>\n manager.onDataChange(() => {\n setData(manager.getData());\n }),\n [manager]\n );\n return data;\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderNode<P = Record<string, unknown>>({\n nodeUid,\n isRoot,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n}): BuilderRuntimeNode<P> {\n const { rootId, nodes } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(\n () =>\n nodes.find((node) => node.$$uid === currentUid) as BuilderRuntimeNode<P>,\n [nodes, currentUid]\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderContextMenuStatus } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useBuilderContextMenuStatus(): BuilderContextMenuStatus {\n const manager = useBuilderDataManager();\n const [status, setStatus] = useState(manager.getContextMenuStatus());\n useEffect(\n () =>\n manager.onContextMenuChange(() => {\n setStatus(manager.getContextMenuStatus());\n }),\n [manager]\n );\n return status;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useShowRelatedNodesBasedOnEvents(): boolean {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getShowRelatedNodesBasedOnEvents());\n useEffect(\n () =>\n manager.onShowRelatedNodesBasedOnEventsChange(() => {\n setData(manager.getShowRelatedNodesBasedOnEvents());\n }),\n [manager]\n );\n return data;\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import editorContainerStyles from \"./EditorContainer.module.css\";\n\nexport function isCurrentTargetByClassName(\n targetElement: HTMLElement,\n currentElement: HTMLElement\n): boolean {\n // Traverse DOM from bottom to top.\n let element = targetElement;\n while (element) {\n if (element === currentElement) {\n return true;\n }\n if (\n element.classList.contains(editorContainerStyles.editorContainer) &&\n !element.classList.contains(editorContainerStyles.isTemplateInternalNode)\n ) {\n // It's not the current target if\n // matches another editor container first.\n return false;\n }\n element = element.parentElement;\n }\n return false;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useHoverNodeUid(): number {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getHoverNodeUid());\n useEffect(\n () =>\n manager.onHoverNodeChange(() => {\n setData(manager.getHoverNodeUid());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useHighlightNodes(): Set<number> {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getHighlightNodes());\n useEffect(\n () =>\n manager.onHighlightNodesChange(() => {\n setData(manager.getHighlightNodes());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderDroppingStatus } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useDroppingStatus(): BuilderDroppingStatus {\n const manager = useBuilderDataManager();\n const [droppingStatus, setDroppingStatus] = useState(\n manager.getDroppingStatus()\n );\n useEffect(\n () =>\n manager.onDroppingStatusChange(() => {\n setDroppingStatus(manager.getDroppingStatus());\n }),\n [manager]\n );\n return droppingStatus;\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { EditorBrickType } from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport { useBuilderDataManager } from \"../hooks/useBuilderDataManager\";\nimport { useBuilderContextMenuStatus } from \"../hooks/useBuilderContextMenuStatus\";\nimport { useShowRelatedNodesBasedOnEvents } from \"../hooks/useShowRelatedNodesBasedOnEvents\";\nimport { isCurrentTargetByClassName } from \"./isCurrentTargetByClassName\";\nimport { useHoverNodeUid } from \"../hooks/useHoverNodeUid\";\nimport { useHighlightNodes } from \"../hooks/useHighlightNodes\";\nimport { useDroppingStatus } from \"../hooks/useDroppingStatus\";\n\nimport styles from \"./EditorContainer.module.css\";\n\ninterface EditorContainerProps {\n nodeUid: number;\n type?: EditorBrickType;\n isTransparentContainer?: boolean;\n editorContainerStyle?: React.CSSProperties;\n editorBodyStyle?: React.CSSProperties;\n}\n\nexport function EditorContainer({\n nodeUid,\n type,\n isTransparentContainer,\n editorContainerStyle,\n editorBodyStyle,\n children,\n}: React.PropsWithChildren<EditorContainerProps>): React.ReactElement {\n const editorContainerRef = useRef<HTMLDivElement>();\n const highlightNodes = useHighlightNodes();\n const node = useBuilderNode({ nodeUid });\n const [isUpstreamNode, setIsUpstreamNode] = useState(false);\n const [isDownstreamNode, setIsDownstreamNode] = useState(false);\n const contextMenuStatus = useBuilderContextMenuStatus();\n const hoverNodeUid = useHoverNodeUid();\n const showRelatedEvents = useShowRelatedNodesBasedOnEvents();\n const manager = useBuilderDataManager();\n const [hover, setHover] = useState(hoverNodeUid === nodeUid);\n const editorType = type ?? EditorBrickType.DEFAULT;\n const hoverNodeUidRef = useRef(hoverNodeUid);\n const droppingStatus = useDroppingStatus();\n\n useEffect(() => {\n hoverNodeUidRef.current = hoverNodeUid;\n }, [hoverNodeUid]);\n\n const handleMouseOver = useCallback(\n (event: MouseEvent) => {\n event.stopPropagation();\n setHover(true);\n if (hoverNodeUidRef.current !== nodeUid) {\n manager.setHoverNodeUid(nodeUid);\n }\n },\n [nodeUid, manager]\n );\n\n const handleMouseOut = useCallback(\n (event: MouseEvent) => {\n event.stopPropagation();\n setHover(false);\n if (hoverNodeUidRef.current === nodeUid) {\n manager.setHoverNodeUid(undefined);\n }\n },\n [nodeUid, manager]\n );\n\n useEffect(() => {\n if (node.$$isTemplateInternalNode) {\n return;\n }\n // Manually bind listeners since events which cross custom-elements\n // seem not working in React v16.\n const editorContainer = editorContainerRef.current;\n editorContainer.addEventListener(\"mouseover\", handleMouseOver);\n editorContainer.addEventListener(\"mouseout\", handleMouseOut);\n return () => {\n editorContainer.removeEventListener(\"mouseover\", handleMouseOver);\n editorContainer.removeEventListener(\"mouseout\", handleMouseOut);\n };\n }, [handleMouseOver, handleMouseOut, node]);\n\n useEffect(() => {\n if (node.$$isTemplateInternalNode) {\n return;\n }\n setHover(hoverNodeUid === nodeUid);\n if (showRelatedEvents) {\n const relatedNodes = manager.getRelatedNodesBasedOnEventsMap();\n const isUpstreamNode = relatedNodes\n .get(hoverNodeUid)\n ?.upstreamNodes.has(nodeUid);\n setIsUpstreamNode(isUpstreamNode);\n const isDownstreamNode = relatedNodes\n .get(hoverNodeUid)\n ?.downstreamNodes.has(nodeUid);\n setIsDownstreamNode(isDownstreamNode);\n }\n }, [hoverNodeUid, node, nodeUid, showRelatedEvents, manager]);\n\n const isCurrentTarget = useCallback(\n (event: React.MouseEvent) =>\n !node.$$isTemplateInternalNode &&\n isCurrentTargetByClassName(\n event.target as HTMLElement,\n editorContainerRef.current\n ),\n [node]\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (isCurrentTarget(event)) {\n manager.nodeClick(node);\n }\n },\n [isCurrentTarget, manager, node]\n );\n\n const handleContextMenu = useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (isCurrentTarget(event)) {\n event.preventDefault();\n manager.contextMenuChange({\n active: true,\n node,\n x: event.clientX,\n y: event.clientY,\n });\n }\n },\n [isCurrentTarget, manager, node]\n );\n\n return (\n <div\n className={classNames(styles.editorContainer, styles[editorType], {\n [styles.transparentContainer]: isTransparentContainer,\n [styles.dropping]: Array.from(\n droppingStatus.get(nodeUid)?.values() ?? []\n ).some(Boolean),\n [styles.hover]: hover,\n [styles.active]:\n contextMenuStatus.active && contextMenuStatus.node.$$uid === nodeUid,\n [styles.isDownstreamNode]: !hover && isDownstreamNode,\n [styles.isUpstreamNode]: !hover && isUpstreamNode,\n [styles.highlight]: highlightNodes.has(nodeUid),\n [styles.isTemplateInternalNode]: node.$$isTemplateInternalNode,\n })}\n style={editorContainerStyle}\n ref={editorContainerRef}\n onClick={handleClick}\n onContextMenu={handleContextMenu}\n >\n <div className={styles.nodeAlias}>\n {!hover &&\n (isDownstreamNode ? (\n <span className={styles.arrow}>↓</span>\n ) : isUpstreamNode ? (\n <span className={styles.arrow}>↑</span>\n ) : null)}\n {node.alias || node.brick}\n </div>\n <div className={styles.editorBody} style={editorBodyStyle}>\n {children}\n </div>\n </div>\n );\n}\n","import { developHelper } from \"@next-core/brick-kit\";\nimport { isBrickNode, isRouteNode } from \"../assertions\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\n\nconst ANY_BRICK_EDITOR = \"basic-bricks.any-brick--editor\";\nconst ANY_ROUTE_EDITOR = \"basic-bricks.any-route--editor\";\n\n/**\n * Get editor brick name by node.\n *\n * @param node - Builder node.\n * @param editor - Using shared editor.\n *\n * @returns\n *\n * Returns editor brick name if the node is a brick, will fallback to `basic-bricks.any-brick--editor`\n * if the relevant editor brick is not found.\n *\n * Or returns `basic-bricks.any-route--editor` if the node is a route.\n *\n * And returns undefined if load failed.\n */\nexport async function getEditorBrick(\n node: BuilderRuntimeNode,\n editor?: string\n): Promise<string> {\n const tryEditorBricks: string[] = [];\n if (isRouteNode(node)) {\n tryEditorBricks.push(ANY_ROUTE_EDITOR);\n } else if (isBrickNode(node)) {\n if (node.brick.includes(\"-\")) {\n tryEditorBricks.push(`${node.brick}--editor`);\n }\n\n if (editor) {\n tryEditorBricks.push(editor);\n }\n\n tryEditorBricks.push(ANY_BRICK_EDITOR);\n } else {\n // Currently there should be no custom-template nodes to be rendered as editor.\n throw new Error(`Unsupported node type: ${node.type}`);\n }\n\n for (const editorBrick of tryEditorBricks) {\n try {\n await developHelper.loadEditorBricks([editorBrick]);\n } catch (error) {\n throw new Error(`Load editor brick \"${editorBrick}\" failed`);\n }\n if (customElements.get(editorBrick)) {\n return editorBrick;\n }\n }\n\n throw new Error(`Editor brick \"${tryEditorBricks.join(\", \")}\" not found`);\n}\n","import { useMemo } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\nimport { Story } from \"@next-core/brick-types\";\n\nexport function useStoryList(): Story[] {\n const manager = useBuilderDataManager();\n const data = useMemo(() => manager.getStoryList(), [manager]);\n\n return data;\n}\n","import { BuilderRuntimeNode } from \"../interfaces\";\nimport { Story, StoryDoc } from \"@next-core/brick-types\";\n\nexport function getBrickDoc(\n node: BuilderRuntimeNode,\n storyList: Story[]\n): StoryDoc {\n const find = storyList?.find((item) => item.storyId === node.brick);\n\n return find?.doc as StoryDoc;\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\nimport { SharedEditorConf } from \"../interfaces\";\n\nexport function useSharedEditorMap(): Map<string, SharedEditorConf> {\n const manager = useBuilderDataManager();\n\n const getSharedEditorMap = useCallback(\n (): Map<string, SharedEditorConf> =>\n new Map(manager.getSharedEditorList().map((conf) => [conf.id, conf])),\n [manager]\n );\n\n const [data, setData] = useState(getSharedEditorMap());\n\n useEffect(\n () =>\n manager.onSharedEditorListChange(() => {\n setData(getSharedEditorMap());\n }),\n [getSharedEditorMap, manager]\n );\n\n return data;\n}\n","import React, { useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { useDrag } from \"react-dnd\";\nimport { BrickAsComponent, getRuntime } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { getEditorBrick } from \"./getEditorBrick\";\nimport {\n BuilderDataTransferType,\n BuilderRuntimeNode,\n EditorSelfLayout,\n EditorSlotContentLayout,\n} from \"../interfaces\";\nimport { EditorBrickElementConstructor } from \"../EditorElementFactory\";\nimport { useBuilderData } from \"../hooks/useBuilderData\";\nimport { useStoryList } from \"../hooks/useStoryList\";\nimport { getBrickDoc } from \"./getBrickDoc\";\nimport { useSharedEditorMap } from \"../hooks/useSharedEditorMap\";\nimport { isBrickNode } from \"../assertions\";\n\nimport styles from \"./EditorBrickAsComponent.module.css\";\n\ninterface EditorBrickAsComponentProps {\n node: BuilderRuntimeNode;\n slotContentLayout?: EditorSlotContentLayout;\n}\n\nexport function EditorBrickAsComponent({\n node,\n slotContentLayout,\n}: EditorBrickAsComponentProps): React.ReactElement {\n const [initialized, setInitialized] = React.useState(false);\n const [editorBrick, setEditorBrick] = React.useState<string>();\n const [loadEditorError, setLoadEditorError] = React.useState<string>();\n const { edges } = useBuilderData();\n const storyList = useStoryList();\n const hasChildren = React.useMemo(\n () => edges.some((edge) => edge.parent === node.$$uid),\n [node, edges]\n );\n\n const installedBricksEnabled = useMemo(\n () => getRuntime().getFeatureFlags()[\"next-builder-installed-bricks\"],\n []\n );\n\n const brickDoc = useMemo(\n () => (installedBricksEnabled ? null : getBrickDoc(node, storyList)),\n [installedBricksEnabled, node, storyList]\n );\n\n const editorMap = useSharedEditorMap();\n const editorConf = useMemo(\n () =>\n installedBricksEnabled && isBrickNode(node)\n ? editorMap.get(node.brick)\n : null,\n [editorMap, installedBricksEnabled, node]\n );\n\n React.useEffect(() => {\n (async () => {\n setInitialized(false);\n let editorName: string;\n let editorError: string;\n try {\n editorName = await getEditorBrick(\n node,\n installedBricksEnabled ? editorConf?.editor : brickDoc?.editor\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n editorError = (error as Error).message;\n }\n setEditorBrick(editorName);\n setLoadEditorError(editorError);\n setInitialized(true);\n })();\n }, [brickDoc, editorConf, installedBricksEnabled, node]);\n\n const brickConf = React.useMemo<UseBrickConf>(\n () => ({\n brick: editorBrick,\n properties: {\n nodeUid: node.$$uid,\n editorProps: installedBricksEnabled\n ? editorConf?.editorProps\n : brickDoc?.editorProps,\n },\n }),\n [brickDoc, editorBrick, editorConf, installedBricksEnabled, node.$$uid]\n );\n\n const selfLayout = React.useMemo(() => {\n let layout: EditorSelfLayout;\n if (initialized && editorBrick) {\n const editorConstructor = customElements.get(\n editorBrick\n ) as EditorBrickElementConstructor;\n layout = editorConstructor.selfLayout;\n }\n // For bricks with no editors, display as a container if it has children.\n return (\n layout ??\n (hasChildren ? EditorSelfLayout.CONTAINER : EditorSelfLayout.INLINE)\n );\n }, [initialized, editorBrick, hasChildren]);\n\n const [{ isDragging }, dragRef] = useDrag({\n item: {\n type: BuilderDataTransferType.NODE_TO_MOVE,\n nodeUid: node.$$uid,\n nodeInstanceId: node.instanceId,\n nodeId: node.id,\n },\n options: {\n dropEffect: \"move\",\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n return initialized ? (\n editorBrick ? (\n <div\n className={classNames({\n [styles.slotContentLayoutBlock]:\n slotContentLayout === EditorSlotContentLayout.BLOCK,\n [styles.slotContentLayoutInline]:\n slotContentLayout === EditorSlotContentLayout.INLINE,\n // [styles.slotContentLayoutGrid]: slotContentLayout === EditorSlotContentLayout.GRID,\n [styles.selfLayoutInline]: selfLayout === EditorSelfLayout.INLINE,\n [styles.selfLayoutBlock]: selfLayout === EditorSelfLayout.BLOCK,\n [styles.selfLayoutContainer]:\n selfLayout === EditorSelfLayout.CONTAINER,\n [styles.dragging]: isDragging,\n __isTemplateInternalNode: node.$$isTemplateInternalNode,\n })}\n >\n <div\n ref={node.$$isTemplateInternalNode ? undefined : dragRef}\n draggable={!node.$$isTemplateInternalNode}\n className={classNames({\n [styles.baseView]:\n node.brick === \"basic-bricks.micro-view\" ||\n node.brick === \"basic-bricks.micro-app\" ||\n node.brick === \"basic-bricks.easy-view\",\n })}\n >\n <BrickAsComponent useBrick={brickConf} />\n </div>\n </div>\n ) : (\n <span>{loadEditorError}</span>\n )\n ) : (\n <span>Loading...</span>\n );\n}\n","import { useMemo } from \"react\";\nimport { sortBy } from \"lodash\";\nimport {\n BuilderGroupedChildNode,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n} from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n doNotExpandTemplates,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n}): BuilderGroupedChildNode[] {\n const { rootId, nodes, edges } = useBuilderData();\n return useMemo(\n () =>\n getBuilderGroupedChildNodes({\n nodes,\n edges,\n nodeUid: isRoot ? rootId : nodeUid,\n doNotExpandTemplates,\n }),\n [doNotExpandTemplates, edges, isRoot, nodeUid, nodes, rootId]\n );\n}\n\nexport function getBuilderGroupedChildNodes({\n nodeUid,\n nodes,\n edges,\n doNotExpandTemplates,\n}: {\n nodeUid: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n doNotExpandTemplates?: boolean;\n}): BuilderGroupedChildNode[] {\n const groups = new Map<string, BuilderRuntimeNode[]>();\n const relatedEdges = sortBy(\n edges.filter(\n (edge) =>\n edge.parent === nodeUid &&\n (doNotExpandTemplates\n ? !edge.$$isTemplateInternal\n : !edge.$$isTemplateDelegated)\n ),\n [(edge) => edge.sort]\n );\n for (const edge of relatedEdges) {\n const childNode = nodes.find((node) => node.$$uid === edge.child);\n if (groups.has(edge.mountPoint)) {\n groups.get(edge.mountPoint).push(childNode);\n } else {\n groups.set(edge.mountPoint, [childNode]);\n }\n }\n return Array.from(groups.entries()).map(([mountPoint, childNodes]) => ({\n mountPoint,\n childNodes,\n }));\n}\n","import { useCallback } from \"react\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport type CanDrop = (draggingUid: number, nodeUid: number) => boolean;\n\n/**\n * Returns whether the current dragging node can be dropped\n * in specific node.\n *\n * This is useful for checking available drop zone and preventing\n * dragging a node into its internal mount points.\n */\nexport function useCanDrop(): CanDrop {\n const { edges } = useBuilderData();\n return useCallback(\n (draggingUid: number, nodeUid: number) => {\n const traverse = (parentId: number): boolean => {\n if (parentId === nodeUid) {\n return false;\n }\n return !edges.some((edge) => {\n if (edge.parent === parentId) {\n return !traverse(edge.child);\n }\n return false;\n });\n };\n return traverse(draggingUid);\n },\n [edges]\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nexport interface DropPosition {\n rect: DropPositionRect;\n cursor: DropPositionCursor;\n}\n\nexport interface DropPositionRect {\n top: number;\n bottom: number;\n left: number;\n right: number;\n}\n\nexport interface DropPositionCursor {\n index: number;\n y: number;\n isVertical?: boolean;\n x?: number;\n height?: number;\n}\n\nexport interface DropGridRow {\n cells: DropGridCell[];\n top?: number;\n bottom?: number;\n // isInline?: boolean;\n}\n\nexport interface DropGridCell extends DropPositionRect {\n index: number;\n}\n\nconst defaultGapHalf = 6;\n\nexport function getDropPositions(\n dropZone: HTMLElement,\n dropZoneGrid: HTMLElement\n): DropPosition[] {\n const zoneRect = dropZone.getBoundingClientRect();\n // const gridRect = dropZoneGrid.getBoundingClientRect();\n const positions: DropPosition[] = [];\n const gridItemList = Array.from(dropZoneGrid.children).filter(\n (item) => !item.classList.contains(\"__isTemplateInternalNode\")\n );\n if (gridItemList.length > 0) {\n let currentRow: DropGridRow = {\n cells: [],\n };\n const rows: DropGridRow[] = [currentRow];\n gridItemList.forEach((gridItem, index) => {\n const rect = gridItem.getBoundingClientRect();\n const cell: DropGridCell = {\n index,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right,\n };\n const prevCell =\n currentRow.cells.length > 0 &&\n currentRow.cells[currentRow.cells.length - 1];\n if (\n !prevCell ||\n (compareApproximately(rect.left, prevCell.right) > 0 &&\n compareApproximately(rect.top, prevCell.bottom) < 0)\n ) {\n currentRow.cells.push(cell);\n currentRow.top = Math.min(currentRow.top ?? Infinity, rect.top);\n currentRow.bottom = Math.max(\n currentRow.bottom ?? -Infinity,\n rect.bottom\n );\n } else {\n currentRow = {\n cells: [cell],\n top: rect.top,\n bottom: rect.bottom,\n };\n rows.push(currentRow);\n }\n });\n // console.log(rows);\n\n let lastRectBottom = zoneRect.top;\n let nextCursorTop = zoneRect.top;\n rows.forEach((row, rowIndex) => {\n if (row.cells.length === 1) {\n const cell = row.cells[0];\n const rectBottom = (cell.top + cell.bottom) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index,\n y: (nextCursorTop + cell.top) / 2 - zoneRect.top,\n },\n });\n lastRectBottom = rectBottom;\n nextCursorTop = cell.bottom;\n\n // Append one more insert position after reached the end.\n if (rowIndex === rows.length - 1) {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: zoneRect.bottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index + 1,\n y:\n Math.min(\n cell.bottom + defaultGapHalf,\n (cell.bottom + zoneRect.bottom) / 2\n ) - zoneRect.top,\n },\n });\n } else if (rows[rowIndex + 1].cells.length > 1) {\n const nextRow = rows[rowIndex + 1];\n const rectBottom = (cell.bottom + nextRow.top) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index + 1,\n y: rectBottom - zoneRect.top,\n },\n });\n lastRectBottom = rectBottom;\n }\n } else {\n let lastRectRight = zoneRect.left;\n let nextCursorLeft = zoneRect.left;\n const rectBottom =\n rowIndex < rows.length - 1\n ? (rows[rowIndex + 1].top + row.bottom) / 2\n : zoneRect.bottom;\n const cursorDefault: Pick<\n DropPositionCursor,\n \"isVertical\" | \"y\" | \"height\"\n > = {\n isVertical: true,\n y: row.top - zoneRect.top,\n height: row.bottom - row.top,\n };\n row.cells.forEach((cell, cellIndex) => {\n const rectRight = (cell.left + cell.right) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: lastRectRight,\n right: rectRight,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index,\n x: (nextCursorLeft + cell.left) / 2 - zoneRect.left,\n },\n });\n lastRectRight = rectRight;\n nextCursorLeft = cell.right;\n\n // Append one more insert position after reached the row end.\n if (cellIndex === row.cells.length - 1) {\n if (rowIndex === rows.length - 1) {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: zoneRect.bottom,\n left: lastRectRight,\n right: zoneRect.right,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index + 1,\n x:\n Math.min(nextCursorLeft + defaultGapHalf, zoneRect.right) -\n zoneRect.left,\n },\n });\n } else {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: lastRectRight,\n right: zoneRect.right,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index + 1,\n x:\n Math.min(nextCursorLeft + defaultGapHalf, zoneRect.right) -\n zoneRect.left,\n },\n });\n }\n }\n });\n lastRectBottom = rectBottom;\n nextCursorTop = row.bottom;\n }\n });\n }\n return positions;\n}\n\nexport function getDropPosition(\n x: number,\n y: number,\n dropZone: HTMLElement,\n dropZoneGrid: HTMLElement\n): DropPositionCursor {\n const positions = getDropPositions(dropZone, dropZoneGrid);\n for (const { rect, cursor } of positions) {\n if (\n x >= rect.left &&\n x <= rect.right &&\n y >= rect.top &&\n y <= rect.bottom\n ) {\n // console.log((event.target as HTMLElement).tagName, cursor.isVertical, cursor.index);\n return cursor;\n }\n }\n\n return {\n index: 0,\n y: 5,\n };\n}\n\nfunction compareApproximately(a: number, b: number): number {\n const diff = a - b;\n return Math.abs(diff) < 1 ? 0 : diff;\n}\n","import { BuilderGroupedChildNode } from \"../interfaces\";\n\nexport interface SortedIdsAfterDropped {\n nodeUids: number[];\n nodeIds: string[];\n}\n\nexport interface DroppingInfo {\n draggingNodeUid: number | number[];\n draggingNodeId: string | null;\n draggingIndex?: number;\n droppingMountPoint: string;\n droppingSiblingGroups: BuilderGroupedChildNode[];\n droppingIndex: number;\n}\n\n/**\n * Get sorted uids and ids of all children of the dropping parent node.\n *\n * @remark\n *\n * When dropping a node from library (add a node) or from a position\n * to a new position (move a node), we only reorder the children of\n * the dropping mount point. But the reorder API requires to reorder\n * all the children of the dropping parent, which maybe across multiple\n * mount points. So we also keep the original order among sibling mount\n * points at the same time.\n *\n * `draggingNodeId` will be `null` when adding a node.\n *\n * Params `droppingInfo.droppingIndex` and `droppingInfo.draggingIndex`\n * is relative to the belonged mount point.\n *\n * And `droppingInfo.draggingIndex` is required when moving a node\n * inside a mount point.\n *\n * ```\n * ▸ micro-view\n * ├ toolbar\n * │ │ ←─ [0]\n * │ ├ button-a <0>\n * │ │ ←─ [1]\n * │ └ input-b <1>\n * │ ←─ [2]\n * └ content\n * │ ←─ [0]\n * ├ table-a <0>\n * │ ←─ [1]\n * ├ grid-b <1>\n * │ ←─ [2]\n * └ tabs-c <2>\n * ←─ [3]\n * <m>: draggingIndex\n * [n]: droppingIndex\n * ```\n *\n * @param droppingInfo - Dropping info.\n *\n * @returns Both sorted uids and ids.\n */\nexport function getSortedIdsAfterDropped(\n droppingInfo: DroppingInfo\n): SortedIdsAfterDropped {\n const {\n draggingNodeUid,\n draggingNodeId,\n draggingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n droppingIndex,\n } = droppingInfo;\n // When applying a snippet, the dragging nodes will be an array.\n const draggingNodeUids = Array.isArray(draggingNodeUid)\n ? draggingNodeUid\n : [draggingNodeUid];\n const fullChildNodes = droppingSiblingGroups.flatMap(\n (group) => group.childNodes\n );\n const nodeUids = droppingSiblingGroups.flatMap((group) => {\n const uids = group.childNodes\n .map((item) => item.$$uid)\n .filter((uid) => !draggingNodeUids.includes(uid));\n if (group.mountPoint === droppingMountPoint) {\n uids.splice(\n (draggingIndex ?? -1) >= 0 && droppingIndex > draggingIndex\n ? droppingIndex - 1\n : droppingIndex,\n 0,\n ...draggingNodeUids\n );\n }\n return uids;\n });\n const nodeIds = nodeUids.map((uid) =>\n draggingNodeUids.includes(uid)\n ? draggingNodeId\n : fullChildNodes.find((item) => item.$$uid === uid).id\n );\n return { nodeUids, nodeIds };\n}\n","import yaml from \"js-yaml\";\nimport { BrickConf } from \"@next-core/brick-types\";\nimport { SnippetNodeInstance } from \"../interfaces\";\n\nconst jsonFieldsInBrick = [\n \"properties\",\n \"events\",\n \"lifeCycle\",\n \"params\",\n \"if\",\n \"transform\",\n];\nconst yamlFieldsInBrick = [\"permissionsPreCheck\", \"transformFrom\"];\nconst ignoredFieldsInBrick = [\n \"brick\",\n \"template\",\n \"portal\",\n \"slots\",\n \"id\",\n \"children\",\n \"instanceId\",\n];\n\nexport interface ReverseNormalizeContext {\n isPortalCanvas: boolean;\n nodeData: {\n type: \"brick\" | \"template\" | \"provider\";\n parent: string;\n mountPoint: string;\n sort: number;\n };\n}\n\n// The reverse operation of *normalize*.\n// https://github.com/easyops-cn/next-basics/blob/5a6710d567821bcb4a0c71e22d55212193d8b0cb/bricks/next-builder/src/shared/storyboard/buildStoryboard.ts#L394\nexport function reverseNormalize(\n brickConf: BrickConf,\n ctx: ReverseNormalizeContext\n): SnippetNodeInstance {\n return Object.fromEntries(\n Object.entries(brickConf)\n .map<[string, unknown]>(([key, value]) =>\n value === undefined || ignoredFieldsInBrick.includes(key)\n ? undefined\n : jsonFieldsInBrick.includes(key)\n ? [key, JSON.stringify(value)]\n : yamlFieldsInBrick.includes(key)\n ? [key, yaml.safeDump(value)]\n : [key, value]\n )\n .filter(Boolean)\n .concat(Object.entries(ctx.nodeData), [\n [\n \"brick\",\n ctx.nodeData.type === \"template\"\n ? brickConf.template\n : brickConf.brick,\n ],\n [\"portal\", ctx.isPortalCanvas || brickConf.portal],\n ])\n ) as SnippetNodeInstance;\n}\n","import { BrickConf, SlotConfOfBricks } from \"@next-core/brick-types\";\nimport { SnippetNodeDetail } from \"../interfaces\";\nimport { getUniqueNodeId } from \"../internal/getUniqueNodeId\";\nimport { reverseNormalize } from \"./reverseNormalize\";\n\nexport function getSnippetNodeDetail({\n parent,\n parentUid,\n mountPoint,\n nodeUid,\n brickConf,\n isPortalCanvas,\n sort,\n}: {\n parent?: string;\n parentUid: number;\n mountPoint: string;\n nodeUid: number;\n brickConf: BrickConf;\n isPortalCanvas?: boolean;\n sort?: number;\n}): SnippetNodeDetail {\n const type = brickConf.template\n ? \"template\"\n : brickConf.bg\n ? \"provider\"\n : \"brick\";\n\n return {\n nodeUid,\n parentUid,\n nodeData: reverseNormalize(brickConf, {\n isPortalCanvas,\n nodeData: {\n type,\n parent,\n mountPoint,\n sort,\n },\n }),\n children: brickConf.slots\n ? Object.entries(brickConf.slots)\n .flatMap(([mountPoint, slotConf]) =>\n (slotConf as SlotConfOfBricks).bricks.map((childBrickConf) => ({\n childBrickConf,\n mountPoint,\n }))\n )\n .map(({ childBrickConf, mountPoint }, index) =>\n getSnippetNodeDetail({\n parentUid: nodeUid,\n mountPoint,\n nodeUid: getUniqueNodeId(),\n brickConf: childBrickConf,\n sort: index,\n })\n )\n : [],\n };\n}\n","import {\n BuilderDataTransferPayloadOfNodeToAdd,\n BuilderDataTransferPayloadOfNodeToMove,\n BuilderDataTransferPayloadOfSnippetToApply,\n BuilderDataTransferType,\n BuilderGroupedChildNode,\n BuilderRuntimeNode,\n} from \"../interfaces\";\nimport { BuilderDataManager } from \"../internal/BuilderDataManager\";\nimport { getUniqueNodeId } from \"../internal/getUniqueNodeId\";\nimport { getSortedIdsAfterDropped } from \"../processors/getSortedIdsAfterDropped\";\nimport { getSnippetNodeDetail } from \"./getSnippetNodeDetail\";\n\nexport interface HandleDropParams {\n manager: BuilderDataManager;\n type: BuilderDataTransferType;\n data:\n | BuilderDataTransferPayloadOfNodeToAdd\n | BuilderDataTransferPayloadOfNodeToMove\n | BuilderDataTransferPayloadOfSnippetToApply;\n droppingIndex: number;\n droppingParentUid: number;\n droppingParentInstanceId: string;\n droppingMountPoint: string;\n droppingChildNodes: BuilderRuntimeNode[];\n droppingSiblingGroups: BuilderGroupedChildNode[];\n isPortalCanvas?: boolean;\n}\n\nexport function processDrop({\n manager,\n type,\n data,\n droppingIndex,\n droppingParentUid,\n droppingParentInstanceId,\n droppingMountPoint,\n droppingChildNodes,\n droppingSiblingGroups,\n isPortalCanvas,\n}: HandleDropParams): void {\n if (type === BuilderDataTransferType.NODE_TO_ADD) {\n // Drag a new node into canvas.\n const { brickType = \"brick\", brick } =\n data as BuilderDataTransferPayloadOfNodeToAdd;\n const draggingNodeUid = getUniqueNodeId();\n manager.nodeAdd({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId: null,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n nodeUid: draggingNodeUid,\n parentUid: droppingParentUid,\n nodeData: {\n parent: droppingParentInstanceId,\n type: brickType,\n brick,\n mountPoint: droppingMountPoint,\n bg: !isPortalCanvas && brickType === \"provider\" ? true : undefined,\n portal: isPortalCanvas,\n },\n });\n } else if (type === BuilderDataTransferType.SNIPPET_TO_APPLY) {\n const { bricks } = data as BuilderDataTransferPayloadOfSnippetToApply;\n // https://stackoverflow.com/questions/5501581/javascript-new-arrayn-and-array-prototype-map-weirdness\n const draggingNodeUids = [...new Array(bricks.length)].map(() =>\n getUniqueNodeId()\n );\n manager.snippetApply({\n ...getSortedIdsAfterDropped({\n draggingNodeUid: draggingNodeUids,\n draggingNodeId: null,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n parentUid: droppingParentUid,\n nodeDetails: bricks.map((brickConf, index) =>\n getSnippetNodeDetail({\n parent: droppingParentInstanceId,\n parentUid: droppingParentUid,\n mountPoint: droppingMountPoint,\n nodeUid: draggingNodeUids[index],\n brickConf,\n isPortalCanvas,\n })\n ),\n });\n } else if (type === BuilderDataTransferType.NODE_TO_MOVE) {\n const {\n nodeUid: draggingNodeUid,\n nodeId: draggingNodeId,\n nodeInstanceId: draggingNodeInstanceId,\n } = data as BuilderDataTransferPayloadOfNodeToMove;\n\n const draggingIndex = droppingChildNodes.findIndex(\n (item) => item.$$uid === draggingNodeUid\n );\n // If found dragging node in the same drop zone,\n // then apply a node reorder, otherwise apply a node move.\n if (draggingIndex >= 0) {\n // If the index is not changed, then there is nothing to do.\n if (\n droppingIndex !== draggingIndex &&\n droppingIndex !== draggingIndex + 1\n ) {\n manager.nodeReorder({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId,\n draggingIndex,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n parentUid: droppingParentUid,\n });\n }\n } else {\n manager.nodeMove({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n nodeUid: draggingNodeUid,\n parentUid: droppingParentUid,\n nodeInstanceId: draggingNodeInstanceId,\n nodeData: {\n parent: droppingParentInstanceId,\n mountPoint: droppingMountPoint,\n },\n });\n }\n }\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\n\nexport function useCanvasList(\n rootChildNodes: BuilderRuntimeNode[]\n): BuilderRuntimeNode[][] {\n return useMemo(() => {\n const mainCanvas: BuilderRuntimeNode[] = [];\n const portalCanvasList: BuilderRuntimeNode[][] = [];\n for (const child of rootChildNodes) {\n if (child.portal) {\n portalCanvasList.push([child]);\n } else {\n mainCanvas.push(child);\n }\n }\n return [mainCanvas, ...portalCanvasList, []];\n }, [rootChildNodes]);\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport { clamp } from \"lodash\";\nimport classNames from \"classnames\";\nimport { DragObjectWithType, useDrop } from \"react-dnd\";\nimport { EditorBrickAsComponent } from \"../EditorBrickAsComponent/EditorBrickAsComponent\";\nimport {\n BuilderCanvasSettings,\n BuilderDataTransferPayloadOfNodeToAdd,\n BuilderDataTransferPayloadOfNodeToMove,\n BuilderDataTransferType,\n BuilderGroupedChildNode,\n BuilderRuntimeNode,\n EditorSlotContentLayout,\n TemplateDelegatedContext,\n} from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport {\n getBuilderGroupedChildNodes,\n useBuilderGroupedChildNodes,\n} from \"../hooks/useBuilderGroupedChildNodes\";\nimport { useCanDrop } from \"../hooks/useCanDrop\";\nimport { DropPositionCursor, getDropPosition } from \"./getDropPosition\";\nimport { processDrop } from \"./processDrop\";\nimport { useBuilderDataManager } from \"../hooks/useBuilderDataManager\";\nimport { useCanvasList } from \"../hooks/useCanvasList\";\nimport { useBuilderData } from \"../hooks/useBuilderData\";\nimport { useBuilderContextMenuStatus } from \"../hooks/useBuilderContextMenuStatus\";\nimport { isCurrentTargetByClassName } from \"../EditorContainer/isCurrentTargetByClassName\";\n\nimport styles from \"./DropZone.module.css\";\n\nexport interface DropZoneProps {\n nodeUid?: number;\n isRoot?: boolean;\n separateCanvas?: boolean;\n isPortalCanvas?: boolean;\n independentPortalCanvas?: boolean;\n canvasIndex?: number;\n mountPoint: string;\n fullscreen?: boolean;\n delegatedContext?: TemplateDelegatedContext;\n dropZoneStyle?: React.CSSProperties;\n dropZoneBodyStyle?: React.CSSProperties;\n slotContentLayout?: EditorSlotContentLayout;\n showOutlineIfEmpty?: boolean;\n}\n\nexport interface DroppingContext {\n droppingParentUid: number;\n droppingParentInstanceId: string;\n droppingMountPoint: string;\n droppingChildNodes: BuilderRuntimeNode[];\n droppingSiblingGroups: BuilderGroupedChildNode[];\n}\n\nexport function DropZone({\n nodeUid,\n isRoot,\n separateCanvas,\n isPortalCanvas,\n independentPortalCanvas,\n canvasIndex,\n mountPoint,\n fullscreen,\n delegatedContext,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n}: DropZoneProps): React.ReactElement {\n const dropZoneBody = React.useRef<HTMLDivElement>();\n const [dropPositionCursor, setDropPositionCursor] =\n React.useState<DropPositionCursor>(null);\n const dropPositionCursorRef = React.useRef<DropPositionCursor>();\n const contextMenuStatus = useBuilderContextMenuStatus();\n const manager = useBuilderDataManager();\n const node = useBuilderNode({ nodeUid, isRoot });\n const groupedChildNodes = useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n });\n\n const isGeneralizedPortalCanvas = independentPortalCanvas\n ? canvasIndex > 0\n : isPortalCanvas;\n const hasTabs = separateCanvas || independentPortalCanvas;\n\n const canDrop = useCanDrop();\n const refinedSlotContentLayout =\n slotContentLayout ?? EditorSlotContentLayout.BLOCK;\n\n const selfChildNodes = React.useMemo(\n () =>\n groupedChildNodes.find((group) => group.mountPoint === mountPoint)\n ?.childNodes ?? [],\n [groupedChildNodes, mountPoint]\n );\n\n const canvasList = useCanvasList(selfChildNodes);\n\n const selfChildNodesInCurrentCanvas = React.useMemo(\n () =>\n separateCanvas\n ? selfChildNodes.filter((child) =>\n Boolean(Number(Boolean(isPortalCanvas)) ^ Number(!child.portal))\n )\n : independentPortalCanvas\n ? canvasList[clamp(canvasIndex ?? 0, 0, canvasList.length - 1)]\n : selfChildNodes,\n [\n canvasIndex,\n independentPortalCanvas,\n isPortalCanvas,\n selfChildNodes,\n canvasList,\n separateCanvas,\n ]\n );\n\n const canvasSettings = React.useMemo(\n () =>\n selfChildNodesInCurrentCanvas[0]?.$$parsedProperties\n ._canvas_ as BuilderCanvasSettings,\n [selfChildNodesInCurrentCanvas]\n );\n\n const getDroppingIndexInFullCanvas = React.useCallback(\n (droppingIndexInCurrentCanvas: number) => {\n if (!hasTabs) {\n return droppingIndexInCurrentCanvas;\n }\n if (selfChildNodesInCurrentCanvas.length > 0) {\n const cursorNode =\n selfChildNodesInCurrentCanvas[\n droppingIndexInCurrentCanvas === 0\n ? 0\n : droppingIndexInCurrentCanvas - 1\n ];\n return (\n selfChildNodes.findIndex((child) => child === cursorNode) +\n (droppingIndexInCurrentCanvas === 0 ? 0 : 1)\n );\n }\n return isGeneralizedPortalCanvas ? selfChildNodes.length : 0;\n },\n [\n hasTabs,\n selfChildNodesInCurrentCanvas,\n isGeneralizedPortalCanvas,\n selfChildNodes,\n ]\n );\n\n const { nodes, edges } = useBuilderData();\n\n const getDroppingContext = React.useCallback(() => {\n if (delegatedContext) {\n const siblingGroups = getBuilderGroupedChildNodes({\n nodeUid: delegatedContext.templateUid,\n nodes,\n edges,\n doNotExpandTemplates: true,\n });\n return {\n droppingParentUid: delegatedContext.templateUid,\n droppingParentInstanceId: nodes.find(\n (item) => item.$$uid === delegatedContext.templateUid\n ).instanceId,\n droppingMountPoint: delegatedContext.templateMountPoint,\n droppingChildNodes:\n siblingGroups.find(\n (group) => group.mountPoint === delegatedContext.templateMountPoint\n )?.childNodes ?? [],\n droppingSiblingGroups: siblingGroups,\n };\n }\n return {\n droppingParentUid: node.$$uid,\n droppingParentInstanceId: node.instanceId,\n droppingMountPoint: mountPoint,\n droppingChildNodes: selfChildNodes,\n droppingSiblingGroups: groupedChildNodes,\n };\n }, [\n delegatedContext,\n edges,\n groupedChildNodes,\n mountPoint,\n node,\n nodes,\n selfChildNodes,\n ]);\n\n const [{ isDraggingOverCurrent }, dropRef] = useDrop({\n accept: [\n BuilderDataTransferType.NODE_TO_ADD,\n BuilderDataTransferType.NODE_TO_MOVE,\n BuilderDataTransferType.SNIPPET_TO_APPLY,\n ],\n canDrop: (\n item: DragObjectWithType &\n (\n | BuilderDataTransferPayloadOfNodeToAdd\n | BuilderDataTransferPayloadOfNodeToMove\n )\n ) =>\n independentPortalCanvas && isGeneralizedPortalCanvas\n ? selfChildNodesInCurrentCanvas.length === 0\n : item.type === BuilderDataTransferType.NODE_TO_ADD ||\n item.type === BuilderDataTransferType.SNIPPET_TO_APPLY ||\n isRoot ||\n canDrop(\n (item as BuilderDataTransferPayloadOfNodeToMove).nodeUid,\n nodeUid\n ),\n collect: (monitor) => ({\n isDraggingOverCurrent:\n monitor.isOver({ shallow: true }) && monitor.canDrop(),\n }),\n hover: (item, monitor) => {\n if (monitor.isOver({ shallow: true }) && monitor.canDrop()) {\n const { x, y } = monitor.getClientOffset();\n dropPositionCursorRef.current = getDropPosition(\n x,\n y,\n dropZoneBody.current.parentElement,\n dropZoneBody.current\n );\n setDropPositionCursor(dropPositionCursorRef.current);\n }\n },\n drop: (item, monitor) => {\n if (!monitor.didDrop()) {\n const { type, ...data } = item;\n processDrop({\n type: type as BuilderDataTransferType,\n data,\n droppingIndex: getDroppingIndexInFullCanvas(\n dropPositionCursorRef.current.index\n ),\n isPortalCanvas: isGeneralizedPortalCanvas,\n manager,\n ...getDroppingContext(),\n });\n }\n },\n });\n\n React.useEffect(() => {\n manager.updateDroppingStatus(\n delegatedContext ? delegatedContext.templateUid : node.$$uid,\n delegatedContext ? delegatedContext.templateMountPoint : mountPoint,\n isDraggingOverCurrent\n );\n }, [isDraggingOverCurrent, mountPoint, manager, delegatedContext, node]);\n\n const droppable =\n !!delegatedContext ||\n !(node.$$isExpandableTemplate || node.$$isTemplateInternalNode);\n\n const dropZoneRef = React.useRef<HTMLElement>();\n\n const dropZoneRefCallback = React.useCallback(\n (element: HTMLElement) => {\n dropZoneRef.current = element;\n if (droppable) {\n dropRef(element);\n }\n },\n [dropRef, droppable]\n );\n\n const handleContextMenu = React.useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (\n !isGeneralizedPortalCanvas &&\n isCurrentTargetByClassName(\n event.target as HTMLElement,\n dropZoneRef.current\n )\n ) {\n event.preventDefault();\n manager.contextMenuChange({\n active: true,\n node,\n x: event.clientX,\n y: event.clientY,\n });\n }\n },\n [isGeneralizedPortalCanvas, manager, node]\n );\n\n return (\n <div\n ref={dropZoneRefCallback}\n className={classNames(\n styles.dropZone,\n isRoot\n ? classNames(\n styles.isRoot,\n canvasSettings?.mode &&\n String(canvasSettings.mode)\n .split(/\\s+/g)\n .map((mode) => styles[`mode-${mode}`]),\n {\n [styles.fullscreen]: fullscreen,\n [styles.hasTabs]: hasTabs,\n }\n )\n : styles.isSlot,\n {\n [styles.isPortalCanvas]: isGeneralizedPortalCanvas,\n [styles.dropping]: isDraggingOverCurrent,\n [styles.active]:\n isRoot &&\n contextMenuStatus.active &&\n contextMenuStatus.node.$$uid === node.$$uid,\n [styles.showOutlineIfEmpty]:\n !isRoot && showOutlineIfEmpty && selfChildNodes.length === 0,\n [styles.slotContentLayoutBlock]:\n refinedSlotContentLayout === EditorSlotContentLayout.BLOCK,\n [styles.slotContentLayoutInline]:\n refinedSlotContentLayout === EditorSlotContentLayout.INLINE,\n [styles.slotContentLayoutGrid]:\n refinedSlotContentLayout === EditorSlotContentLayout.GRID,\n }\n )}\n style={dropZoneStyle}\n onContextMenu={isRoot ? handleContextMenu : null}\n >\n <div\n ref={dropZoneBody}\n className={styles.dropZoneBody}\n style={dropZoneBodyStyle}\n >\n {selfChildNodesInCurrentCanvas.map((child) => (\n <EditorBrickAsComponent\n key={child.$$uid}\n node={child}\n slotContentLayout={refinedSlotContentLayout}\n />\n ))}\n </div>\n {\n <div\n className={classNames(\n styles.dropCursor,\n dropPositionCursor?.isVertical\n ? styles.dropCursorVertical\n : styles.dropCursorHorizontal\n )}\n style={{\n top: dropPositionCursor?.y,\n left: dropPositionCursor?.x,\n height: dropPositionCursor?.height,\n }}\n ></div>\n }\n </div>\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React, { useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { DropZone } from \"../DropZone/DropZone\";\nimport { EditorSlotContentLayout } from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport { useDroppingStatus } from \"../hooks/useDroppingStatus\";\n\nimport styles from \"./SlotContainer.module.css\";\n\nexport interface SlotContainerProps {\n nodeUid: number;\n slotName: string;\n slotContainerStyle?: React.CSSProperties;\n dropZoneStyle?: React.CSSProperties;\n dropZoneBodyStyle?: React.CSSProperties;\n slotContentLayout?: EditorSlotContentLayout;\n showOutlineIfEmpty?: boolean;\n}\n\nexport function SlotContainer({\n nodeUid,\n slotName,\n slotContainerStyle,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n}: SlotContainerProps): React.ReactElement {\n const node = useBuilderNode({ nodeUid });\n const droppingStatus = useDroppingStatus();\n\n const delegatedContext = useMemo(() => {\n const delegatedSlots = node.$$delegatedSlots?.get(slotName);\n // Ignore when there are more than one delegated slots on a single slot.\n return delegatedSlots?.length === 1 ? delegatedSlots[0] : null;\n }, [node, slotName]);\n\n return (\n <div\n className={classNames(styles.slotContainer, {\n [styles.dropping]: droppingStatus\n .get(delegatedContext ? delegatedContext.templateUid : nodeUid)\n ?.get(\n delegatedContext ? delegatedContext.templateMountPoint : slotName\n ),\n })}\n style={slotContainerStyle}\n >\n <div className={styles.slotName}>\n {delegatedContext ? delegatedContext.templateMountPoint : slotName}\n </div>\n <DropZone\n nodeUid={nodeUid}\n mountPoint={slotName}\n delegatedContext={delegatedContext}\n dropZoneStyle={dropZoneStyle}\n dropZoneBodyStyle={dropZoneBodyStyle}\n slotContentLayout={slotContentLayout}\n showOutlineIfEmpty={showOutlineIfEmpty}\n />\n </div>\n );\n}\n","// See https://github.com/react-dnd/react-dnd/blob/main/packages/react-dnd/src/common/DndProvider.tsx\nimport React from \"react\";\nimport {\n BuilderContext,\n ContextOfBuilder,\n createBuilderContext,\n} from \"./BuilderContext\";\n\nexport const BuilderProvider = React.memo(LegacyBuilderProvider);\n\nconst instanceSymbol = Symbol.for(\"__BRICK_NEXT_BUILDER_CONTEXT_INSTANCE__\");\nfunction createSingletonBuilderContext(): ContextOfBuilder {\n const ctx = window as any;\n if (!ctx[instanceSymbol]) {\n ctx[instanceSymbol] = createBuilderContext();\n }\n return ctx[instanceSymbol];\n}\n\nlet refCount = 0;\n\nfunction LegacyBuilderProvider({\n children,\n}: React.PropsWithChildren<any>): React.ReactElement {\n const context = createSingletonBuilderContext();\n\n /**\n * If the global context was used to store the DND context\n * then where theres no more references to it we should\n * clean it up to avoid memory leaks\n */\n React.useEffect(() => {\n refCount++;\n\n return () => {\n refCount--;\n\n if (refCount === 0) {\n (window as any)[instanceSymbol] = null;\n }\n };\n }, []);\n\n return (\n <BuilderContext.Provider value={context}>\n {children}\n </BuilderContext.Provider>\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { UpdatingElement, property, BrickWrapper } from \"@next-core/brick-kit\";\nimport { StoryDoc } from \"@next-core/brick-types\";\nimport { EditorSelfLayout } from \"./interfaces\";\nimport { BuilderProvider } from \"./BuilderProvider\";\n\nexport interface EditorComponentProps {\n nodeUid: number;\n editorProps?: StoryDoc[\"editorProps\"];\n}\n\nexport type EditorComponentType = React.FunctionComponent<EditorComponentProps>;\n\nexport interface EditorBrickElement extends HTMLElement {\n nodeUid: number;\n}\n\nexport interface EditorBrickElementConstructor {\n new (): EditorBrickElement;\n readonly selfLayout: EditorSelfLayout;\n}\n\nexport interface EditorElementOptions {\n brickStyle?: Record<string, string>;\n selfLayout?: EditorSelfLayout;\n}\n\nexport function EditorElementFactory(\n EditorComponent: EditorComponentType,\n options?: EditorElementOptions\n): EditorBrickElementConstructor {\n class NewEditorElement extends UpdatingElement {\n static get selfLayout(): EditorSelfLayout {\n return options?.selfLayout;\n }\n\n @property({ type: Number })\n nodeUid: number;\n\n @property({ attribute: false })\n editorProps: StoryDoc[\"editorProps\"];\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n if (options?.brickStyle) {\n for (const [key, value] of Object.entries(options.brickStyle)) {\n (this.style as unknown as Record<string, string>)[key] = value;\n }\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected && this.nodeUid) {\n ReactDOM.render(\n <BrickWrapper>\n <BuilderProvider>\n <DndProvider backend={HTML5Backend}>\n <EditorComponent\n nodeUid={this.nodeUid}\n editorProps={this.editorProps}\n />\n </DndProvider>\n </BuilderProvider>\n </BrickWrapper>,\n this\n );\n }\n }\n }\n return NewEditorElement;\n}\n","import { createContext, Dispatch, SetStateAction } from \"react\";\n\n// It indicates which mount point of a container is active dropping zone.\ntype DroppingStatus = {\n [mountPoint: string]: boolean;\n};\n\ninterface ContextOfDroppingStatus {\n droppingStatus?: DroppingStatus;\n setDroppingStatus?: Dispatch<SetStateAction<DroppingStatus>>;\n}\n\n// Todo(steve): remove this file.\n/** @deprecated no more usage but for compatibility only. */\nexport const DroppingStatusContext = createContext<ContextOfDroppingStatus>({});\n","import { useMemo } from \"react\";\nimport { sortBy } from \"lodash\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderNodeMountPoints({\n nodeUid,\n isRoot,\n doNotExpandTemplates,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n}): string[] {\n const { rootId, edges } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(() => {\n const mountPoints = new Set<string>();\n const relatedEdges = sortBy(\n edges.filter(\n (edge) =>\n edge.parent === currentUid &&\n (doNotExpandTemplates\n ? !edge.$$isTemplateInternal\n : !edge.$$isTemplateDelegated)\n ),\n [(edge) => edge.sort]\n );\n for (const edge of relatedEdges) {\n mountPoints.add(edge.mountPoint);\n }\n return Array.from(mountPoints);\n }, [currentUid, edges, doNotExpandTemplates]);\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderParentNode(nodeUid: number): BuilderRuntimeNode {\n const { nodes, edges } = useBuilderData();\n return useMemo(() => {\n const parentUid = edges.find(\n (edge) => edge.child === nodeUid && !edge.$$isTemplateExpanded\n ).parent;\n return nodes.find((node) => node.$$uid === parentUid);\n }, [edges, nodeUid, nodes]);\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\nimport { BuilderRouteNode } from \"@next-core/brick-types\";\n\nexport function useRouteList(): BuilderRouteNode[] {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getRouteList());\n useEffect(\n () =>\n manager.onRouteListChange(() => {\n setData(manager.getRouteList());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useOutlineEnabled(\n nodeInstanceId: string,\n inapplicable?: boolean\n): boolean {\n const manager = useBuilderDataManager();\n const [enabled, setEnabled] = useState(\n inapplicable ? false : manager.isOutlineEnabled(nodeInstanceId)\n );\n useEffect(() => {\n if (!inapplicable) {\n return manager.onOutlineEnabledNodesChange(() => {\n setEnabled(manager.isOutlineEnabled(nodeInstanceId));\n });\n }\n }, [inapplicable, manager, nodeInstanceId]);\n return enabled;\n}\n"],"names":["BuilderDataTransferType","EditorBrickType","EditorSelfLayout","EditorSlotContentLayout","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","window","self","EventTarget","constructor","wm","create","defineProperty","proto","define","type","listener","options","secret","get","listeners","target","event","slice","some","dispatch","currentTarget","splice","set","name","value","configurable","writable","info","once","removeEventListener","handleEvent","_stopImmediatePropagationFlag","WeakMap","uniqueIdCursor","getUniqueNodeId","expandTemplateEdges","nodes","edges","rootId","newEdges","reorderedEdgesMap","walk","uid","callback","node","find","item","$$uid","childEdges","sortBy","filter","edge","parent","sort","child","expandEdgesThroughTemplateChain","mountPoint","childUid","proxySlotConf","delegateToParentUid","$$isExpandableTemplate","$$templateProxy","slots","$$templateRefToUid","ref","nextNode","n","nextMountPoint","refSlot","expandedEdge","undefined","$$isTemplateExpanded","siblingEdges","internalEdges","$$isTemplateInternal","refPosition","clampedRefPosition","clamp","findIndex","forEach","index","childEdge","map","reorderBuilderEdges","parentUid","nodeUids","edgesExcludeExpanded","indexOf","deleteNodeFromTree","nodeUid","idsToDelete","Set","collectIdsToDelete","has","add","ids","id","getRelatedNodesBasedOnEvents","rootNodeIsCustomTemplate","nodesMap","Map","targetMap","targetRefMap","upstreamNodes","downstreamNodes","selector","$$matchedSelectors","handlers","isEmpty","$$parsedEvents","values","flat","$$parsedLifeCycle","concat","entries","flatMap","lifeCycleName","lifeCycleConf","messageConf","console","warn","collectRelatedNodes","handler","targetNodeUid","targetRef","targetRefNodeUid","callbackHandlers","nodeIgnoreFields","computationRegExp","getBuilderNode","nodeData","isTemplateInternalNode","matchedSelectors","brick","replace","normalized","normalizeBuilderNode","jsonFieldsInBrick","parsedFields","parsedId","parsedTestId","field","parsed","cloneDeep","upperFirst","tempParsedId","tempParsedTestId","test","dataset","testid","fromEntries","entry","includes","alias","isBrickNode","split","pop","getAppendingNodesAndEdges","templateSourceMap","storyList","currentUid","processedTemplateSet","inheritedTemplateRefToUid","builderNode","templateSource","startsWith","children","storyId","originData","proxy","JSON","parse","templateRefToUid","sortedChildren","Infinity","$$isTemplateInternalNode","processDelegatingSlots","cursorNode","rootMountPoint","slotEntries","slotName","slotConf","refUid","refNode","$$delegatedSlots","delegatedSlotsByRefSlot","templateUid","templateMountPoint","processDelegatingProperties","previousPropertyName","properties","propertyEntries","propertyName","propertyConf","$$parsedProperties","isBasicRefProperty","propertyValue","refProperty","overrideChildrenMountPoint","$$isTemplateDelegated","propRef","isParentExpandableTemplate","BuilderInternalEventType","storageKeyOfOutlineDisabledNodes","BuilderDataManager","active","JsonStorage","localStorage","localJsonStorage","getItem","detail","data","addNodes","addEdges","omit","getStoryList","newNodes","newData","triggerDataChange","getData","getContextMenuStatus","contextMenuStatus","getRelatedNodesBasedOnEventsMap","relatedNodesBasedOnEventsMap","sharedEditorListInit","sharedEditorList","eventTarget","dispatchEvent","CustomEvent","SHARED_EDITOR_LIST_CHANGE","getSharedEditorList","onSharedEditorListChange","fn","addEventListener","routeListInit","routeList","ROUTE_LIST_CHANGE","getRouteList","storyListInit","onRouteListChange","dataInit","root","rootNode","DATA_CHANGE","updateBrick","runAddNodeAction","nodeAdd","NODE_ADD","nodeAddStored","instanceId","snippetApply","nodeDetails","appendingNodes","appendingEdges","SNIPPET_APPLY","snippetApplyStored","flattenNodeDetails","found","nodeMove","NODE_MOVE","contextUpdated","context","nodeReorder","NODE_REORDER","nodeDelete","nodeClick","NODE_CLICK","contextMenuChange","CONTEXT_MENU_CHANGE","onDataChange","onNodeAdd","onSnippetApply","onNodeReorder","onNodeMove","onNodeClick","onContextMenuChange","setShowRelatedNodesBasedOnEvents","show","showRelatedNodesBasedOnEvents","SHOW_RELATED_NODES_BASED_ON_EVENTS","getShowRelatedNodesBasedOnEvents","onShowRelatedNodesBasedOnEventsChange","setHoverNodeUid","hoverNodeUid","HOVER_NODE_CHANGE","getHoverNodeUid","onHoverNodeChange","toggleOutline","nodeInstanceId","outlineDisabledNodes","delete","setItem","from","OUTLINE_DISABLED_NODES_CHANGE","isOutlineEnabled","onOutlineEnabledNodesChange","setHighlightNodes","highlightNodes","HIGHLIGHT_NODES_CHANGE","getHighlightNodes","onHighlightNodesChange","updateDroppingStatus","isDraggingOver","nodeStatus","droppingStatus","DROPPING_STATUS_CHANGE","Boolean","getDroppingStatus","onDroppingStatusChange","BuilderContext","React","createContext","createBuilderContext","manager","useBuilderDataManager","useContext","Error","useBuilderData","setData","useState","useEffect","useBuilderNode","isRoot","useMemo","useBuilderContextMenuStatus","status","setStatus","useShowRelatedNodesBasedOnEvents","styleInject","css","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","isCurrentTargetByClassName","targetElement","currentElement","element","classList","contains","editorContainerStyles","editorContainer","parentElement","useHoverNodeUid","useHighlightNodes","useDroppingStatus","setDroppingStatus","EditorContainer","isTransparentContainer","editorContainerStyle","editorBodyStyle","editorContainerRef","useRef","isUpstreamNode","setIsUpstreamNode","isDownstreamNode","setIsDownstreamNode","showRelatedEvents","hover","setHover","editorType","DEFAULT","hoverNodeUidRef","current","handleMouseOver","useCallback","stopPropagation","handleMouseOut","relatedNodes","isCurrentTarget","handleClick","handleContextMenu","preventDefault","x","clientX","y","clientY","styles","transparentContainer","dropping","highlight","nodeAlias","arrow","editorBody","ANY_BRICK_EDITOR","ANY_ROUTE_EDITOR","getEditorBrick","editor","tryEditorBricks","isRouteNode","editorBrick","developHelper","loadEditorBricks","error","customElements","useStoryList","getBrickDoc","doc","useSharedEditorMap","getSharedEditorMap","conf","EditorBrickAsComponent","slotContentLayout","initialized","setInitialized","setEditorBrick","loadEditorError","setLoadEditorError","hasChildren","installedBricksEnabled","getRuntime","getFeatureFlags","brickDoc","editorMap","editorConf","editorName","editorError","message","brickConf","editorProps","selfLayout","layout","editorConstructor","CONTAINER","INLINE","isDragging","dragRef","useDrag","NODE_TO_MOVE","nodeId","dropEffect","collect","monitor","slotContentLayoutBlock","BLOCK","slotContentLayoutInline","selfLayoutInline","selfLayoutBlock","selfLayoutContainer","dragging","__isTemplateInternalNode","baseView","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","relatedEdges","childNode","childNodes","useCanDrop","draggingUid","traverse","parentId","defaultGapHalf","getDropPositions","dropZone","dropZoneGrid","zoneRect","getBoundingClientRect","positions","gridItemList","currentRow","cells","rows","gridItem","rect","cell","top","bottom","left","right","prevCell","compareApproximately","Math","min","max","lastRectBottom","nextCursorTop","row","rowIndex","rectBottom","cursor","nextRow","lastRectRight","nextCursorLeft","cursorDefault","isVertical","height","cellIndex","rectRight","getDropPosition","a","b","diff","abs","getSortedIdsAfterDropped","droppingInfo","draggingNodeUid","draggingNodeId","draggingIndex","droppingMountPoint","droppingSiblingGroups","droppingIndex","draggingNodeUids","fullChildNodes","group","uids","nodeIds","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","ctx","stringify","yaml","safeDump","template","isPortalCanvas","portal","getSnippetNodeDetail","bg","bricks","childBrickConf","processDrop","droppingParentUid","droppingParentInstanceId","droppingChildNodes","NODE_TO_ADD","brickType","SNIPPET_TO_APPLY","draggingNodeInstanceId","useCanvasList","rootChildNodes","mainCanvas","portalCanvasList","DropZone","separateCanvas","independentPortalCanvas","canvasIndex","fullscreen","delegatedContext","dropZoneStyle","dropZoneBodyStyle","showOutlineIfEmpty","dropZoneBody","dropPositionCursor","setDropPositionCursor","dropPositionCursorRef","groupedChildNodes","isGeneralizedPortalCanvas","hasTabs","canDrop","refinedSlotContentLayout","selfChildNodes","canvasList","selfChildNodesInCurrentCanvas","Number","canvasSettings","_canvas_","getDroppingIndexInFullCanvas","droppingIndexInCurrentCanvas","getDroppingContext","siblingGroups","isDraggingOverCurrent","dropRef","useDrop","accept","isOver","shallow","getClientOffset","drop","didDrop","droppable","dropZoneRef","dropZoneRefCallback","mode","String","isSlot","slotContentLayoutGrid","GRID","dropCursor","dropCursorVertical","dropCursorHorizontal","SlotContainer","slotContainerStyle","delegatedSlots","slotContainer","BuilderProvider","memo","LegacyBuilderProvider","instanceSymbol","Symbol","for","createSingletonBuilderContext","refCount","EditorElementFactory","EditorComponent","NewEditorElement","property","attribute","display","brickStyle","_render","ReactDOM","unmountComponentAtNode","isConnected","render","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","mountPoints","useBuilderParentNode","useRouteList","useOutlineEnabled","inapplicable","enabled","setEnabled"],"mappings":"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"}