@next-core/editor-bricks-helper 0.50.96 → 0.50.98

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.bundle.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/DropZone/reverseNormalize.ts","../src/DropZone/getSnippetNodeDetail.ts","../src/internal/getObjectIdByNode.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/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/useActiveNodeUid.ts","../src/hooks/useOutlineEnabled.ts"],"sourcesContent":["import {\n BrickEventsMap,\n BuilderRouteOrBrickNode,\n CustomTemplateProxy,\n ContextConf,\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 wrapperNode?: BuilderRuntimeNode;\n}\n\nexport interface BuilderCanvasSettings {\n mode: \"page\" | \"dialog\";\n}\n\nexport type BuilderRuntimeNode<P = Record<string, unknown>> =\n BuilderRouteOrBrickNode & {\n displayName?: string;\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 $$unreachable?: boolean;\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 sort?: number;\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 type EventDetailOfWorkbenchTreeNodeMove = {\n nodeUid: number;\n nodeInstanceId: string;\n nodeIds: string[];\n objectId: string;\n nodeData?: {\n parent: string;\n mountPoint: string;\n };\n};\n\nexport type dragStatus = \"inside\" | \"top\" | \"bottom\";\n\nexport interface WorkbenchNodeData extends NodeInstance {\n instanceId: string;\n id: string;\n}\nexport interface WorkbenchNodeAdd {\n nodeData: WorkbenchNodeData & {\n bricks: BrickConf[];\n $$uid?: number;\n };\n mountPoint: string;\n dragOverInstanceId: string;\n /**\n * @deprecated 请使用 parent。\n * @internal\n */\n parentInstanceId?: string;\n parent: string;\n dragStatus: dragStatus;\n sortData?: {\n nodeUids: number[];\n nodeIds: string[];\n nodeInstanceIds: string[];\n };\n}\nexport interface WorkbenchTreeNodeMoveProps {\n dragNodeUid: number;\n dragOverNodeUid: number;\n dragParentNodeUid: number;\n dragStatus: \"inside\" | \"top\" | \"bottom\";\n}\n\nexport interface EventDetailOfNodeReorder {\n nodeUids: number[];\n parentUid: number;\n nodeIds: string[];\n objectId?: 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","/*!\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, wrapperNode }: 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 wrapperNode: wrapperNode?.$$uid === nodeUid ? null : wrapperNode,\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 for (const ref of [].concat(handler.targetRef)) {\n const targetRefNodeUid = targetRefMap.get(ref);\n if (targetRefNodeUid) {\n nodesMap.get(node.$$uid).downstreamNodes.add(targetRefNodeUid);\n nodesMap.get(targetRefNodeUid).upstreamNodes.add(node.$$uid);\n }\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 {\n computeConstantCondition,\n normalizeBuilderNode,\n} from \"@next-core/brick-utils\";\nimport { BuilderRouteOrBrickNode } from \"@next-core/brick-types\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { isBrickNode, isRouteNode } 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 ((tempParsedTestId = (parsed?.dataset as Record<string, string>)\n ?.testid),\n typeof tempParsedTestId === \"string\") &&\n !computationRegExp.test(tempParsedTestId)\n ) {\n parsedTestId = tempParsedTestId;\n } else if (\n ((tempParsedId = parsed?.id as string),\n typeof tempParsedId === \"string\") &&\n !computationRegExp.test(tempParsedId)\n ) {\n parsedId = tempParsedId;\n matchedSelectors.push(`#${parsedId}`);\n }\n }\n }\n\n const isBrick = isBrickNode(nodeData);\n const brickName = isBrick ? nodeData.brick.split(\".\").pop() : null;\n\n let unreachable = false;\n if (normalized?.if !== undefined && (isBrick || isRouteNode(nodeData))) {\n const check = { if: normalized.if };\n computeConstantCondition(check);\n if (check.if === false) {\n unreachable = true;\n }\n }\n\n return Object.fromEntries(\n Object.entries(nodeData)\n .filter((entry) => !nodeIgnoreFields.includes(entry[0]))\n .concat([\n [\n \"displayName\",\n // Ignore alias which equals to brick name.\n (!(isBrick && nodeData.alias === brickName) && nodeData.alias) ||\n (isBrick\n ? nodeData.ref || parsedTestId || parsedId || brickName\n : undefined),\n ],\n [\"$$uid\", nodeUid],\n [\"$$matchedSelectors\", matchedSelectors],\n [\"$$isTemplateInternalNode\", isTemplateInternalNode],\n [\"$$normalized\", normalized],\n [\"$$unreachable\", unreachable],\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 TemplateLayoutType,\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 isRoot?: boolean\n): {\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n wrapperNode?: BuilderRuntimeNode;\n} {\n const nodes: BuilderRuntimeNode[] = [];\n const edges: BuilderRuntimeEdge[] = [];\n let wrapperNode: BuilderRuntimeNode;\n\n const walk = (\n nodeData: BuilderRouteOrBrickNode,\n currentUid: number,\n processedTemplateSet: Set<string>,\n isTemplateInternalNode?: boolean,\n inheritedTemplateRefToUid?: Map<string, number>,\n layoutType?: TemplateLayoutType\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 ) {\n if (templateSource.layoutType === \"wrapper\") {\n builderNode.layoutType = \"wrapper\";\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 layoutType\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 case \"snippet\":\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 for (let i = 0; i < nodes.length; i++) {\n // 布局模板属于第一层\n const item = nodes[i];\n if (\n item.layoutType === \"wrapper\" &&\n isRoot &&\n edges.find((edge) => edge.child === item.$$uid).parent === nodeUid\n ) {\n if (!wrapperNode) {\n wrapperNode = item;\n }\n break;\n }\n }\n return {\n nodes,\n edges,\n wrapperNode,\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 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 { BuilderRuntimeNode } from \"../interfaces\";\nimport {\n isRouteNode,\n isBrickNode,\n isCustomTemplateNode,\n isSnippetNode,\n} from \"@next-core/brick-utils\";\n\nexport const getObjectIdByNode = (node: BuilderRuntimeNode): string => {\n if (isRouteNode(node)) return \"STORYBOARD_ROUTE\";\n if (isBrickNode(node)) return \"STORYBOARD_BRICK\";\n if (isCustomTemplateNode(node)) return \"STORYBOARD_TEMPLATE\";\n if (isSnippetNode(node)) return \"STORYBOARD_SNIPPET\";\n};\n","import { omit, sortBy } from \"lodash\";\nimport EventTarget from \"@ungap/event-target\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderRouteNode,\n Story,\n BuilderCustomTemplateNode,\n} from \"@next-core/brick-types\";\nimport { computeConstantCondition, JsonStorage } from \"@next-core/brick-utils\";\nimport {\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 WorkbenchTreeNodeMoveProps,\n EventDetailOfWorkbenchTreeNodeMove,\n WorkbenchNodeAdd,\n} from \"../interfaces\";\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\";\nimport { getSnippetNodeDetail } from \"../DropZone/getSnippetNodeDetail\";\nimport { getObjectIdByNode } from \"./getObjectIdByNode\";\nimport { isBrickNode, isRouteNode } from \"../assertions\";\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 NODE_UPDATE = \"builder.node.update\",\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 ACTIVE_NODE_CHANGE = \"builder.activeNode.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 WORKBENCH_TREE_NODE_MOVE = \"workbench.tree.node.move\",\n}\n\nconst storageKeyOfOutlineDisabledNodes = \"builder-outline-disabled-nodes\";\n\nexport class BuilderDataManager {\n private data: BuilderCanvasData = {\n rootId: null,\n nodes: [],\n edges: [],\n wrapperNode: null,\n };\n\n private hoverNodeUid: number;\n private activeNodeUid: 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 true\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 detail: this.data,\n })\n );\n }\n\n private runAddNodeAction(detail: EventDetailOfNodeAdd): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData, sort } = 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 const newNodes = nodes.concat(addNodes);\n const newEdges = edges\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: sort ?? undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n })\n .concat(addEdges);\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n wrapperNode,\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): void {\n this.data = deleteNodeFromTree(detail.nodeUid, this.data);\n\n this.runAddNodeAction(detail);\n }\n\n updateNode(instanceId: string, detail: BuilderRuntimeNode): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n const updateNode = nodes.find((item) => item.instanceId === instanceId);\n const newNodes = nodes.map((item) => {\n if (item.instanceId === instanceId) {\n let unreachable = false;\n const normalized = detail.$$normalized;\n if (\n normalized?.if !== undefined &&\n (isBrickNode(item) || isRouteNode(item))\n ) {\n const check = { if: normalized.if };\n computeConstantCondition(check);\n if (check.if === false) {\n unreachable = true;\n }\n }\n return {\n ...item,\n ...detail,\n $$unreachable: unreachable,\n };\n }\n return item;\n });\n const newEdges =\n detail.mountPoint === undefined || detail.mountPoint === null\n ? edges\n : edges.map((item) => {\n if (item.child === updateNode.$$uid) {\n return {\n ...item,\n mountPoint: detail.mountPoint,\n };\n }\n return item;\n });\n this.data = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n wrapperNode,\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_UPDATE, {\n detail: this.data,\n })\n );\n }\n\n private redirectMountPoint(\n detail: EventDetailOfNodeAdd | EventDetailOfNodeMove | SnippetNodeDetail\n ): void {\n const { rootId, wrapperNode } = this.data;\n if (detail.parentUid === rootId) {\n detail.nodeData.mountPoint = \"bricks\";\n }\n if (wrapperNode && wrapperNode.instanceId === detail.nodeData.parent) {\n detail.nodeData.mountPoint = \"content\";\n }\n }\n\n private redirectSnippetMountPoint(detail: EventDetailOfSnippetApply): void {\n detail.nodeDetails?.forEach((item) => {\n this.redirectMountPoint(item);\n });\n }\n\n nodeAdd(detail: EventDetailOfNodeAdd): void {\n this.redirectMountPoint(detail);\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, wrapperNode } = 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 wrapperNode,\n };\n this.triggerDataChange();\n }\n\n snippetApply(detail: EventDetailOfSnippetApply): void {\n this.redirectSnippetMountPoint(detail);\n const { rootId, nodes, edges, wrapperNode } = 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 wrapperNode,\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, wrapperNode } = 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 wrapperNode,\n };\n this.triggerDataChange();\n }\n\n /**\n * Move node anywhere by drag-n-drop.\n * @deprecated use `moveNode` instead.\n */\n nodeMove(detail: EventDetailOfNodeMove): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n this.redirectMountPoint(detail);\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 wrapperNode,\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 /**\n * Move node up or down.\n */\n moveNode(\n { $$uid: nodeUid }: BuilderRuntimeNode,\n direction: \"up\" | \"down\"\n ): void {\n const { parent: parentUid, mountPoint } = this.data.edges.find(\n (edge) => edge.child === nodeUid\n );\n const { relatedEdges, mountPoints } = getRelatedEdgesAndMountPoint(\n this.data.edges,\n parentUid\n );\n /** Edges of the same mount-point */\n const siblingEdges = relatedEdges.filter(\n (edge) => edge.mountPoint === mountPoint\n );\n const index = siblingEdges.findIndex((edge) => edge.child === nodeUid);\n const orderedSiblingEdges = moveItemInList(siblingEdges, index, direction);\n if (!orderedSiblingEdges) {\n return;\n }\n const orderedEdges = sortBy(\n relatedEdges,\n (edge) => mountPoints.indexOf(edge.mountPoint),\n (edge) => orderedSiblingEdges.indexOf(edge)\n );\n this.reorder(parentUid, orderedEdges);\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_UPDATE, {\n detail: this.data,\n })\n );\n }\n\n private getDragInfo({\n nodeData,\n dragNodeUid,\n dragOverNodeUid,\n dragStatus,\n }: {\n nodeData: BuilderRuntimeNode;\n dragNodeUid: number;\n dragOverNodeUid: number;\n dragStatus: string;\n }) {\n const { rootId, nodes, edges } = this.data;\n const isDragRoot = dragOverNodeUid === rootId;\n /*\n * 如果找不到edge, 则为新增状态, 否则为移动状态\n */\n const dragEdge = edges.find((item) => item.child === dragNodeUid);\n const dragOverEdge = edges.find((item) => item.child === dragOverNodeUid);\n /**\n * 如果是根节点, 则mountPoint强制等于 bricks\n * 如果是属于拖动进某个节点中, 默认使用 content\n * 其他情况, 使用被拖拽节点的mountPoint\n */\n const mountPoint = isDragRoot\n ? \"bricks\"\n : dragStatus === \"inside\"\n ? \"\"\n : dragOverEdge.mountPoint;\n\n const parentEdge = edges.find((item) => item.child === dragOverNodeUid);\n /**\n * 如果是根节点, parentUid强制等于rootId\n * 如果是拖动进某个节点, 则当前节点为该节点parent\n * 否则, 等于该节点的父节点\n */\n const parentUid = isDragRoot\n ? rootId\n : dragStatus === \"inside\"\n ? parentEdge.child\n : parentEdge.parent;\n const parnetNodeData = nodes.find((item) => item.$$uid === parentUid);\n // 找到节点父亲等于拖动节点的父节点(寻找兄弟节点)\n const siblingEdge = edges.filter(\n (edge) => edge.child !== dragNodeUid && edge.parent === parentUid\n );\n const sortUids = sortBy(siblingEdge, \"sort\").map((item) => item.child);\n const sortNodeIds: string[] = [];\n const sortNodeInstanceIds: string[] = [];\n sortUids.forEach((item) => {\n const node = nodes.find((node) => node.$$uid === item);\n sortNodeIds.push(node.id);\n sortNodeInstanceIds.push(node.instanceId);\n });\n let sortIndex: number;\n if (dragStatus === \"inside\") {\n sortIndex = siblingEdge.length\n ? Math.max(...siblingEdge.map((item) => item.sort)) + 1\n : 0;\n // 插入默认插最后\n sortNodeIds.push(nodeData.id);\n sortNodeInstanceIds.push(nodeData.instanceId);\n } else if (dragStatus === \"top\" || dragStatus === \"bottom\") {\n const overIndex = sortUids.findIndex((item) => item === dragOverNodeUid);\n sortIndex = dragStatus === \"top\" ? overIndex : overIndex + 1;\n // 排序修正\n sortNodeIds.splice(sortIndex, 0, nodeData.id);\n // 如果是新增的情况下, 没有edge, 则取dragNodeUid(新创建的uid)\n sortUids.splice(sortIndex, 0, dragEdge?.child ?? dragNodeUid);\n sortNodeInstanceIds.splice(sortIndex, 0, nodeData.instanceId);\n }\n\n return {\n parentUid,\n mountPoint,\n sortIndex,\n parnetNodeData,\n sortUids,\n sortNodeIds,\n sortNodeInstanceIds,\n };\n }\n\n workbenchNodeAdd(\n detail: WorkbenchNodeAdd,\n isNeedUpdateSnippet = true\n ): void | EventDetailOfSnippetApply {\n const { nodes, edges, rootId } = this.data;\n const { nodeData, dragOverInstanceId, dragStatus, mountPoint } = detail;\n if (nodeData.instanceId && !nodeData.instanceId.startsWith(\"mock\")) {\n // move\n } else {\n // insert\n const parentInstanceId = detail.parent || detail.parentInstanceId;\n const newNodeUid = nodeData.$$uid || getUniqueNodeId();\n const overNode = nodes.find(\n (item) => item.instanceId === dragOverInstanceId\n );\n let dragOverNodeUid = overNode.$$uid;\n let realDragStatus = dragStatus;\n if (dragOverNodeUid === rootId) {\n realDragStatus = \"inside\";\n } else {\n const overEdge = edges.find((item) => item.child === dragOverNodeUid);\n const overParentNode = nodes.find((item) =>\n dragStatus === \"inside\"\n ? item.$$uid === overEdge.child\n : item.$$uid === overEdge.parent\n );\n\n if (overParentNode.instanceId !== parentInstanceId) {\n // 如果instanceId不相同, 说明父元素被修改, dragStatus强制等于inside, uid也需要切换成实际父元素的uid\n realDragStatus = \"inside\";\n dragOverNodeUid = nodes.find(\n (item) => item.instanceId === parentInstanceId\n ).$$uid;\n }\n }\n\n const {\n parentUid,\n sortIndex,\n sortUids: nodeUids,\n sortNodeIds: nodeIds,\n sortNodeInstanceIds: nodeInstanceIds,\n } = this.getDragInfo({\n nodeData: {\n id: nodeData.id ?? null,\n instanceId: nodeData.instanceId ?? null,\n } as BuilderRuntimeNode,\n dragNodeUid: newNodeUid,\n dragOverNodeUid,\n dragStatus: realDragStatus,\n });\n\n nodeData.parent = parentInstanceId;\n nodeData.mountPoint = mountPoint;\n nodeData.sort = sortIndex;\n\n if (nodeData.bricks) {\n // snippet\n const snippetData = {\n parentUid,\n nodeDetails: nodeData.bricks.map((brickConf) =>\n getSnippetNodeDetail({\n parent: parentInstanceId,\n parentUid: parentUid,\n mountPoint: mountPoint,\n nodeUid: newNodeUid,\n brickConf: brickConf,\n isPortalCanvas: false,\n })\n ),\n nodeIds,\n nodeUids,\n };\n if (isNeedUpdateSnippet) {\n this.snippetApply(snippetData);\n } else {\n return snippetData;\n }\n }\n\n this.runAddNodeAction({\n nodeUid: newNodeUid,\n parentUid,\n nodeUids,\n nodeIds,\n nodeData,\n sort: sortIndex,\n });\n const sortData = {\n nodeUids,\n nodeInstanceIds,\n nodeIds,\n };\n detail.sortData = sortData;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_ADD, {\n detail: {\n nodeUid: newNodeUid,\n parentUid,\n nodeUids,\n nodeInstanceIds,\n nodeIds,\n nodeData,\n },\n })\n );\n }\n }\n\n workbenchTreeNodeMove(detail: WorkbenchTreeNodeMoveProps): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n const { dragNodeUid, dragOverNodeUid, dragStatus } = detail;\n const nodeData = nodes.find((item) => item.$$uid === dragNodeUid);\n const originEdge = edges.find((edge) => edge.child === nodeData.$$uid);\n const originParentUid = originEdge.parent;\n const originParentNode = nodes.find(\n (node) => node.$$uid === originParentUid\n );\n const {\n parentUid,\n parnetNodeData,\n mountPoint,\n sortIndex,\n sortUids: nodeUids,\n sortNodeIds: nodeIds,\n } = this.getDragInfo({\n nodeData,\n dragNodeUid,\n dragOverNodeUid,\n dragStatus,\n });\n\n const newData = {\n rootId,\n nodes,\n edges: edges\n .filter((edge) => edge.child !== dragNodeUid)\n .concat({\n parent: parentUid,\n child: dragNodeUid,\n mountPoint: mountPoint,\n sort: sortIndex,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n }),\n wrapperNode,\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<EventDetailOfWorkbenchTreeNodeMove>(\n BuilderInternalEventType.WORKBENCH_TREE_NODE_MOVE,\n {\n detail: {\n nodeUid: dragNodeUid,\n nodeInstanceId: nodeData.instanceId,\n nodeIds,\n ...(originParentNode.instanceId !== parnetNodeData.instanceId ||\n originEdge.mountPoint !== mountPoint\n ? {\n nodeData: {\n parent: parnetNodeData.instanceId,\n mountPoint: mountPoint,\n },\n }\n : {}),\n objectId: getObjectIdByNode(nodeData),\n },\n }\n )\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_UPDATE, {\n detail: this.data,\n })\n );\n }\n\n /**\n * Move mount-point up or down.\n */\n moveMountPoint(\n { $$uid: parentUid }: BuilderRuntimeNode,\n mountPoint: string,\n direction: \"up\" | \"down\"\n ): void {\n const { relatedEdges, mountPoints } = getRelatedEdgesAndMountPoint(\n this.data.edges,\n parentUid\n );\n const index = mountPoints.indexOf(mountPoint);\n const orderedMountPoints = moveItemInList(mountPoints, index, direction);\n if (!orderedMountPoints) {\n return;\n }\n const orderedEdges = sortBy(\n relatedEdges,\n (edge) => orderedMountPoints.indexOf(edge.mountPoint),\n \"sort\"\n );\n this.reorder(parentUid, orderedEdges);\n }\n\n private reorder(parentUid: number, orderedEdges: BuilderRuntimeEdge[]): void {\n const { nodes } = this.data;\n const childUids = orderedEdges.map((edge) => edge.child);\n this.data = {\n ...this.data,\n edges: reorderBuilderEdges(this.data, { parentUid, nodeUids: childUids }),\n };\n this.triggerDataChange();\n const childIds = childUids\n .map((uid) => nodes.find((node) => node.$$uid === uid))\n .map((node) => node.id);\n this.eventTarget.dispatchEvent(\n new CustomEvent<EventDetailOfNodeReorder>(\n BuilderInternalEventType.NODE_REORDER,\n {\n detail: {\n nodeUids: childUids,\n parentUid,\n nodeIds: childIds,\n objectId: getObjectIdByNode(\n nodes.find((node) => node.$$uid === parentUid)\n ),\n },\n }\n )\n );\n }\n\n contextUpdated(detail: EventDetailOfContextUpdated): void {\n const { rootId, nodes, edges, wrapperNode } = 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 wrapperNode,\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.setActiveNodeUid(detail.$$uid);\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 onWorkbenchTreeNodeMove(\n fn: (event: CustomEvent<EventDetailOfNodeMove>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.WORKBENCH_TREE_NODE_MOVE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.WORKBENCH_TREE_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 onNodeUpdate(\n fn: (event: CustomEvent<BuilderCanvasData>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_UPDATE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_UPDATE,\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 setActiveNodeUid(uid: number): void {\n if (this.activeNodeUid !== uid) {\n this.activeNodeUid = uid;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.ACTIVE_NODE_CHANGE)\n );\n }\n }\n\n getActiveNodeUid(): number {\n return this.activeNodeUid;\n }\n\n onActiveNodeChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.ACTIVE_NODE_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.ACTIVE_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\nfunction getRelatedEdgesAndMountPoint(\n edges: BuilderRuntimeEdge[],\n parentUid: number\n): {\n /** Edges of the same parent */\n relatedEdges: BuilderRuntimeEdge[];\n /** Mount-point of the same parent */\n mountPoints: string[];\n} {\n const relatedEdges = sortBy(\n edges.filter(\n (edge) => edge.parent === parentUid && !edge.$$isTemplateExpanded\n ),\n \"sort\"\n );\n const mountPointSet = new Set<string>();\n for (const edge of relatedEdges) {\n mountPointSet.add(edge.mountPoint);\n }\n const mountPoints = Array.from(mountPointSet);\n return { relatedEdges, mountPoints };\n}\n\nfunction moveItemInList<T>(\n list: T[],\n index: number,\n direction: \"up\" | \"down\"\n): T[] | undefined {\n let upperIndex: number;\n if (direction === \"up\") {\n if (index <= 0) {\n return;\n }\n upperIndex = index - 1;\n } else {\n if (index === -1 || index >= list.length - 1) {\n return;\n }\n upperIndex = index;\n }\n return [\n ...list.slice(0, upperIndex),\n list[upperIndex + 1],\n list[upperIndex],\n ...list.slice(upperIndex + 2),\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 isWrapper,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n isWrapper?: boolean;\n}): BuilderRuntimeNode<P> {\n const { rootId, nodes, wrapperNode } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(() => {\n if (isWrapper) {\n return wrapperNode as BuilderRuntimeNode<P>;\n }\n return nodes.find(\n (node) => node.$$uid === currentUid\n ) as BuilderRuntimeNode<P>;\n }, [nodes, currentUid, isWrapper, wrapperNode]);\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 isWrapper,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n isWrapper?: boolean;\n}): BuilderGroupedChildNode[] {\n const { rootId, nodes, edges, wrapperNode } = useBuilderData();\n return useMemo(\n () =>\n getBuilderGroupedChildNodes({\n nodes,\n edges,\n nodeUid: isRoot ? (isWrapper ? wrapperNode.$$uid : rootId) : nodeUid,\n doNotExpandTemplates,\n isWrapper: isWrapper,\n }),\n [\n doNotExpandTemplates,\n edges,\n isRoot,\n nodeUid,\n nodes,\n rootId,\n isWrapper,\n wrapperNode,\n ]\n );\n}\n\nexport function getBuilderGroupedChildNodes({\n nodeUid,\n nodes,\n edges,\n doNotExpandTemplates,\n isWrapper,\n}: {\n nodeUid: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n doNotExpandTemplates?: boolean;\n isWrapper?: 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: isWrapper ? \"bricks\" : 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 {\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, isEmpty } 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 hiddenWrapper?: boolean;\n emptyClassName?: string;\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 hiddenWrapper = true,\n emptyClassName,\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 { nodes, edges, wrapperNode } = useBuilderData();\n const isWrapper = hiddenWrapper && isRoot && !isEmpty(wrapperNode);\n const node = useBuilderNode({ nodeUid, isRoot, isWrapper });\n const groupedChildNodes = useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n doNotExpandTemplates: isWrapper,\n isWrapper,\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 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: isWrapper\n ? wrapperNode.instanceId\n : 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 isWrapper,\n wrapperNode,\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 isWrapper ||\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={classNames(\n styles.dropZoneBody,\n selfChildNodesInCurrentCanvas.length === 0 && emptyClassName\n )}\n data-slot-id={mountPoint}\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 emptyClassName?: string;\n}\n\nexport function SlotContainer({\n nodeUid,\n slotName,\n slotContainerStyle,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n emptyClassName,\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 emptyClassName={emptyClassName}\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 useActiveNodeUid(): number {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getActiveNodeUid());\n useEffect(\n () =>\n manager.onActiveNodeChange(() => {\n setData(manager.getActiveNodeUid());\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","_objectSpread","deleteNodeFromTree","nodeUid","wrapperNode","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","dataset","testid","test","isBrick","isBrickNode","brickName","split","pop","unreachable","if","isRouteNode","check","computeConstantCondition","fromEntries","entry","includes","alias","getAppendingNodesAndEdges","templateSourceMap","isRoot","currentUid","processedTemplateSet","inheritedTemplateRefToUid","layoutType","builderNode","templateSource","startsWith","children","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","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","brickConf","ctx","stringify","yaml","safeDump","Boolean","template","isPortalCanvas","portal","getSnippetNodeDetail","bg","bricks","childBrickConf","getObjectIdByNode","isCustomTemplateNode","isSnippetNode","BuilderInternalEventType","storageKeyOfOutlineDisabledNodes","BuilderDataManager","_defineProperty","active","JsonStorage","localStorage","localJsonStorage","getItem","getData","data","getContextMenuStatus","contextMenuStatus","getRelatedNodesBasedOnEventsMap","relatedNodesBasedOnEventsMap","sharedEditorListInit","sharedEditorList","eventTarget","dispatchEvent","CustomEvent","SHARED_EDITOR_LIST_CHANGE","getSharedEditorList","onSharedEditorListChange","fn","addEventListener","routeListInit","routeList","ROUTE_LIST_CHANGE","getRouteList","storyListInit","storyList","getStoryList","onRouteListChange","dataInit","root","newData","triggerDataChange","rootNode","DATA_CHANGE","detail","runAddNodeAction","addNodes","addEdges","omit","newNodes","updateBrick","updateNode","instanceId","$$normalized","$$unreachable","NODE_UPDATE","redirectMountPoint","redirectSnippetMountPoint","nodeDetails","nodeAdd","NODE_ADD","nodeAddStored","snippetApply","appendingNodes","appendingEdges","SNIPPET_APPLY","snippetApplyStored","flattenNodeDetails","found","nodeMove","NODE_MOVE","moveNode","direction","relatedEdges","mountPoints","getRelatedEdgesAndMountPoint","orderedSiblingEdges","moveItemInList","orderedEdges","reorder","getDragInfo","dragNodeUid","dragOverNodeUid","dragStatus","isDragRoot","dragEdge","dragOverEdge","parentEdge","parnetNodeData","siblingEdge","sortUids","sortNodeIds","sortNodeInstanceIds","sortIndex","Math","max","overIndex","workbenchNodeAdd","isNeedUpdateSnippet","dragOverInstanceId","parentInstanceId","newNodeUid","overNode","realDragStatus","overEdge","overParentNode","nodeIds","nodeInstanceIds","snippetData","sortData","workbenchTreeNodeMove","originEdge","originParentUid","originParentNode","WORKBENCH_TREE_NODE_MOVE","nodeInstanceId","objectId","moveMountPoint","orderedMountPoints","childUids","childIds","NODE_REORDER","contextUpdated","context","nodeReorder","nodeDelete","nodeClick","setActiveNodeUid","NODE_CLICK","contextMenuChange","CONTEXT_MENU_CHANGE","onDataChange","onNodeAdd","onSnippetApply","onNodeReorder","onNodeMove","onWorkbenchTreeNodeMove","onNodeClick","onNodeUpdate","onContextMenuChange","setShowRelatedNodesBasedOnEvents","show","showRelatedNodesBasedOnEvents","SHOW_RELATED_NODES_BASED_ON_EVENTS","getShowRelatedNodesBasedOnEvents","onShowRelatedNodesBasedOnEventsChange","setHoverNodeUid","hoverNodeUid","HOVER_NODE_CHANGE","getHoverNodeUid","onHoverNodeChange","activeNodeUid","ACTIVE_NODE_CHANGE","getActiveNodeUid","onActiveNodeChange","toggleOutline","outlineDisabledNodes","delete","setItem","from","OUTLINE_DISABLED_NODES_CHANGE","isOutlineEnabled","onOutlineEnabledNodesChange","setHighlightNodes","highlightNodes","HIGHLIGHT_NODES_CHANGE","getHighlightNodes","onHighlightNodesChange","updateDroppingStatus","isDraggingOver","nodeStatus","droppingStatus","DROPPING_STATUS_CHANGE","getDroppingStatus","onDroppingStatusChange","mountPointSet","list","upperIndex","BuilderContext","React","createContext","createBuilderContext","manager","useBuilderDataManager","useContext","Error","useBuilderData","setData","useState","useEffect","useBuilderNode","isWrapper","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","_asyncToGenerator","editor","tryEditorBricks","editorBrick","developHelper","loadEditorBricks","error","customElements","useStoryList","getBrickDoc","storyId","doc","useSharedEditorMap","getSharedEditorMap","conf","EditorBrickAsComponent","slotContentLayout","initialized","setInitialized","setEditorBrick","loadEditorError","setLoadEditorError","hasChildren","installedBricksEnabled","getRuntime","getFeatureFlags","brickDoc","editorMap","editorConf","editorName","editorError","message","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","BrickAsComponent","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","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","min","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","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","hiddenWrapper","emptyClassName","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","_decorate","property","attribute","display","brickStyle","_render","ReactDOM","unmountComponentAtNode","isConnected","render","BrickWrapper","DndProvider","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","useBuilderParentNode","useRouteList","useActiveNodeUid","useOutlineEnabled","inapplicable","enabled","setEnabled"],"mappings":"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"}
1
+ {"version":3,"file":"index.bundle.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/DropZone/reverseNormalize.ts","../src/DropZone/getSnippetNodeDetail.ts","../src/internal/getObjectIdByNode.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/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/useActiveNodeUid.ts","../src/hooks/useOutlineEnabled.ts"],"sourcesContent":["import {\n BrickEventsMap,\n BuilderRouteOrBrickNode,\n CustomTemplateProxy,\n ContextConf,\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 wrapperNode?: BuilderRuntimeNode;\n}\n\nexport interface BuilderCanvasSettings {\n mode: \"page\" | \"dialog\";\n}\n\nexport type BuilderRuntimeNode<P = Record<string, unknown>> =\n BuilderRouteOrBrickNode & {\n displayName?: string;\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 $$unreachable?: boolean;\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 sort?: number;\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 type EventDetailOfWorkbenchTreeNodeMove = {\n nodeUid: number;\n nodeInstanceId: string;\n nodeIds: string[];\n objectId: string;\n nodeData?: {\n parent: string;\n mountPoint: string;\n };\n};\n\nexport type dragStatus = \"inside\" | \"top\" | \"bottom\";\n\nexport interface WorkbenchNodeData extends NodeInstance {\n instanceId: string;\n id: string;\n}\nexport interface WorkbenchNodeAdd {\n nodeData: WorkbenchNodeData & {\n bricks: BrickConf[];\n $$uid?: number;\n };\n mountPoint: string;\n dragOverInstanceId: string;\n /**\n * @deprecated 请使用 parent。\n * @internal\n */\n parentInstanceId?: string;\n parent: string;\n dragStatus: dragStatus;\n sortData?: {\n nodeUids: number[];\n nodeIds: string[];\n nodeInstanceIds: string[];\n };\n}\nexport interface WorkbenchTreeNodeMoveProps {\n dragNodeUid: number;\n dragOverNodeUid: number;\n dragParentNodeUid: number;\n dragStatus: \"inside\" | \"top\" | \"bottom\";\n}\n\nexport interface EventDetailOfNodeReorder {\n nodeUids: number[];\n parentUid: number;\n nodeIds: string[];\n objectId?: 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","/*!\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, wrapperNode }: 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 wrapperNode: wrapperNode?.$$uid === nodeUid ? null : wrapperNode,\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 for (const ref of [].concat(handler.targetRef)) {\n const targetRefNodeUid = targetRefMap.get(ref);\n if (targetRefNodeUid) {\n nodesMap.get(node.$$uid).downstreamNodes.add(targetRefNodeUid);\n nodesMap.get(targetRefNodeUid).upstreamNodes.add(node.$$uid);\n }\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 {\n computeConstantCondition,\n normalizeBuilderNode,\n} from \"@next-core/brick-utils\";\nimport { BuilderRouteOrBrickNode } from \"@next-core/brick-types\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { isBrickNode, isRouteNode } 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 ((tempParsedTestId = (parsed?.dataset as Record<string, string>)\n ?.testid),\n typeof tempParsedTestId === \"string\") &&\n !computationRegExp.test(tempParsedTestId)\n ) {\n parsedTestId = tempParsedTestId;\n } else if (\n ((tempParsedId = parsed?.id as string),\n typeof tempParsedId === \"string\") &&\n !computationRegExp.test(tempParsedId)\n ) {\n parsedId = tempParsedId;\n matchedSelectors.push(`#${parsedId}`);\n }\n }\n }\n\n const isBrick = isBrickNode(nodeData);\n const brickName = isBrick ? nodeData.brick.split(\".\").pop() : null;\n\n let unreachable = false;\n if (normalized?.if !== undefined && (isBrick || isRouteNode(nodeData))) {\n const check = { if: normalized.if };\n computeConstantCondition(check);\n if (check.if === false) {\n unreachable = true;\n }\n }\n\n return Object.fromEntries(\n Object.entries(nodeData)\n .filter((entry) => !nodeIgnoreFields.includes(entry[0]))\n .concat([\n [\n \"displayName\",\n // Ignore alias which equals to brick name.\n (!(isBrick && nodeData.alias === brickName) && nodeData.alias) ||\n (isBrick\n ? nodeData.ref || parsedTestId || parsedId || brickName\n : undefined),\n ],\n [\"$$uid\", nodeUid],\n [\"$$matchedSelectors\", matchedSelectors],\n [\"$$isTemplateInternalNode\", isTemplateInternalNode],\n [\"$$normalized\", normalized],\n [\"$$unreachable\", unreachable],\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 TemplateLayoutType,\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 isRoot?: boolean\n): {\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n wrapperNode?: BuilderRuntimeNode;\n} {\n const nodes: BuilderRuntimeNode[] = [];\n const edges: BuilderRuntimeEdge[] = [];\n let wrapperNode: BuilderRuntimeNode;\n\n const walk = (\n nodeData: BuilderRouteOrBrickNode,\n currentUid: number,\n processedTemplateSet: Set<string>,\n isTemplateInternalNode?: boolean,\n inheritedTemplateRefToUid?: Map<string, number>,\n layoutType?: TemplateLayoutType\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 ) {\n if (templateSource.layoutType === \"wrapper\") {\n builderNode.layoutType = \"wrapper\";\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 layoutType\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 case \"snippet\":\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 for (let i = 0; i < nodes.length; i++) {\n // 布局模板属于第一层\n const item = nodes[i];\n if (\n item.layoutType === \"wrapper\" &&\n isRoot &&\n edges.find((edge) => edge.child === item.$$uid).parent === nodeUid\n ) {\n if (!wrapperNode) {\n wrapperNode = item;\n }\n break;\n }\n }\n return {\n nodes,\n edges,\n wrapperNode,\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 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 \"dataSource\",\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 { BuilderRuntimeNode } from \"../interfaces\";\nimport {\n isRouteNode,\n isBrickNode,\n isCustomTemplateNode,\n isSnippetNode,\n} from \"@next-core/brick-utils\";\n\nexport const getObjectIdByNode = (node: BuilderRuntimeNode): string => {\n if (isRouteNode(node)) return \"STORYBOARD_ROUTE\";\n if (isBrickNode(node)) return \"STORYBOARD_BRICK\";\n if (isCustomTemplateNode(node)) return \"STORYBOARD_TEMPLATE\";\n if (isSnippetNode(node)) return \"STORYBOARD_SNIPPET\";\n};\n","import { omit, sortBy } from \"lodash\";\nimport EventTarget from \"@ungap/event-target\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderRouteNode,\n Story,\n BuilderCustomTemplateNode,\n} from \"@next-core/brick-types\";\nimport { computeConstantCondition, JsonStorage } from \"@next-core/brick-utils\";\nimport {\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 WorkbenchTreeNodeMoveProps,\n EventDetailOfWorkbenchTreeNodeMove,\n WorkbenchNodeAdd,\n} from \"../interfaces\";\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\";\nimport { getSnippetNodeDetail } from \"../DropZone/getSnippetNodeDetail\";\nimport { getObjectIdByNode } from \"./getObjectIdByNode\";\nimport { isBrickNode, isRouteNode } from \"../assertions\";\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 NODE_UPDATE = \"builder.node.update\",\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 ACTIVE_NODE_CHANGE = \"builder.activeNode.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 WORKBENCH_TREE_NODE_MOVE = \"workbench.tree.node.move\",\n}\n\nconst storageKeyOfOutlineDisabledNodes = \"builder-outline-disabled-nodes\";\n\nexport class BuilderDataManager {\n private data: BuilderCanvasData = {\n rootId: null,\n nodes: [],\n edges: [],\n wrapperNode: null,\n };\n\n private hoverNodeUid: number;\n private activeNodeUid: 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 true\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 detail: this.data,\n })\n );\n }\n\n private runAddNodeAction(detail: EventDetailOfNodeAdd): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData, sort } = 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 const newNodes = nodes.concat(addNodes);\n const newEdges = edges\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: sort ?? undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n })\n .concat(addEdges);\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n wrapperNode,\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): void {\n this.data = deleteNodeFromTree(detail.nodeUid, this.data);\n\n this.runAddNodeAction(detail);\n }\n\n updateNode(instanceId: string, detail: BuilderRuntimeNode): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n const updateNode = nodes.find((item) => item.instanceId === instanceId);\n const newNodes = nodes.map((item) => {\n if (item.instanceId === instanceId) {\n let unreachable = false;\n const normalized = detail.$$normalized;\n if (\n normalized?.if !== undefined &&\n (isBrickNode(item) || isRouteNode(item))\n ) {\n const check = { if: normalized.if };\n computeConstantCondition(check);\n if (check.if === false) {\n unreachable = true;\n }\n }\n return {\n ...item,\n ...detail,\n $$unreachable: unreachable,\n };\n }\n return item;\n });\n const newEdges =\n detail.mountPoint === undefined || detail.mountPoint === null\n ? edges\n : edges.map((item) => {\n if (item.child === updateNode.$$uid) {\n return {\n ...item,\n mountPoint: detail.mountPoint,\n };\n }\n return item;\n });\n this.data = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n wrapperNode,\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_UPDATE, {\n detail: this.data,\n })\n );\n }\n\n private redirectMountPoint(\n detail: EventDetailOfNodeAdd | EventDetailOfNodeMove | SnippetNodeDetail\n ): void {\n const { rootId, wrapperNode } = this.data;\n if (detail.parentUid === rootId) {\n detail.nodeData.mountPoint = \"bricks\";\n }\n if (wrapperNode && wrapperNode.instanceId === detail.nodeData.parent) {\n detail.nodeData.mountPoint = \"content\";\n }\n }\n\n private redirectSnippetMountPoint(detail: EventDetailOfSnippetApply): void {\n detail.nodeDetails?.forEach((item) => {\n this.redirectMountPoint(item);\n });\n }\n\n nodeAdd(detail: EventDetailOfNodeAdd): void {\n this.redirectMountPoint(detail);\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, wrapperNode } = 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 wrapperNode,\n };\n this.triggerDataChange();\n }\n\n snippetApply(detail: EventDetailOfSnippetApply): void {\n this.redirectSnippetMountPoint(detail);\n const { rootId, nodes, edges, wrapperNode } = 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 wrapperNode,\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, wrapperNode } = 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 wrapperNode,\n };\n this.triggerDataChange();\n }\n\n /**\n * Move node anywhere by drag-n-drop.\n * @deprecated use `moveNode` instead.\n */\n nodeMove(detail: EventDetailOfNodeMove): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n this.redirectMountPoint(detail);\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 wrapperNode,\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 /**\n * Move node up or down.\n */\n moveNode(\n { $$uid: nodeUid }: BuilderRuntimeNode,\n direction: \"up\" | \"down\"\n ): void {\n const { parent: parentUid, mountPoint } = this.data.edges.find(\n (edge) => edge.child === nodeUid\n );\n const { relatedEdges, mountPoints } = getRelatedEdgesAndMountPoint(\n this.data.edges,\n parentUid\n );\n /** Edges of the same mount-point */\n const siblingEdges = relatedEdges.filter(\n (edge) => edge.mountPoint === mountPoint\n );\n const index = siblingEdges.findIndex((edge) => edge.child === nodeUid);\n const orderedSiblingEdges = moveItemInList(siblingEdges, index, direction);\n if (!orderedSiblingEdges) {\n return;\n }\n const orderedEdges = sortBy(\n relatedEdges,\n (edge) => mountPoints.indexOf(edge.mountPoint),\n (edge) => orderedSiblingEdges.indexOf(edge)\n );\n this.reorder(parentUid, orderedEdges);\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_UPDATE, {\n detail: this.data,\n })\n );\n }\n\n private getDragInfo({\n nodeData,\n dragNodeUid,\n dragOverNodeUid,\n dragStatus,\n }: {\n nodeData: BuilderRuntimeNode;\n dragNodeUid: number;\n dragOverNodeUid: number;\n dragStatus: string;\n }) {\n const { rootId, nodes, edges } = this.data;\n const isDragRoot = dragOverNodeUid === rootId;\n /*\n * 如果找不到edge, 则为新增状态, 否则为移动状态\n */\n const dragEdge = edges.find((item) => item.child === dragNodeUid);\n const dragOverEdge = edges.find((item) => item.child === dragOverNodeUid);\n /**\n * 如果是根节点, 则mountPoint强制等于 bricks\n * 如果是属于拖动进某个节点中, 默认使用 content\n * 其他情况, 使用被拖拽节点的mountPoint\n */\n const mountPoint = isDragRoot\n ? \"bricks\"\n : dragStatus === \"inside\"\n ? \"\"\n : dragOverEdge.mountPoint;\n\n const parentEdge = edges.find((item) => item.child === dragOverNodeUid);\n /**\n * 如果是根节点, parentUid强制等于rootId\n * 如果是拖动进某个节点, 则当前节点为该节点parent\n * 否则, 等于该节点的父节点\n */\n const parentUid = isDragRoot\n ? rootId\n : dragStatus === \"inside\"\n ? parentEdge.child\n : parentEdge.parent;\n const parnetNodeData = nodes.find((item) => item.$$uid === parentUid);\n // 找到节点父亲等于拖动节点的父节点(寻找兄弟节点)\n const siblingEdge = edges.filter(\n (edge) => edge.child !== dragNodeUid && edge.parent === parentUid\n );\n const sortUids = sortBy(siblingEdge, \"sort\").map((item) => item.child);\n const sortNodeIds: string[] = [];\n const sortNodeInstanceIds: string[] = [];\n sortUids.forEach((item) => {\n const node = nodes.find((node) => node.$$uid === item);\n sortNodeIds.push(node.id);\n sortNodeInstanceIds.push(node.instanceId);\n });\n let sortIndex: number;\n if (dragStatus === \"inside\") {\n sortIndex = siblingEdge.length\n ? Math.max(...siblingEdge.map((item) => item.sort)) + 1\n : 0;\n // 插入默认插最后\n sortNodeIds.push(nodeData.id);\n sortNodeInstanceIds.push(nodeData.instanceId);\n } else if (dragStatus === \"top\" || dragStatus === \"bottom\") {\n const overIndex = sortUids.findIndex((item) => item === dragOverNodeUid);\n sortIndex = dragStatus === \"top\" ? overIndex : overIndex + 1;\n // 排序修正\n sortNodeIds.splice(sortIndex, 0, nodeData.id);\n // 如果是新增的情况下, 没有edge, 则取dragNodeUid(新创建的uid)\n sortUids.splice(sortIndex, 0, dragEdge?.child ?? dragNodeUid);\n sortNodeInstanceIds.splice(sortIndex, 0, nodeData.instanceId);\n }\n\n return {\n parentUid,\n mountPoint,\n sortIndex,\n parnetNodeData,\n sortUids,\n sortNodeIds,\n sortNodeInstanceIds,\n };\n }\n\n workbenchNodeAdd(\n detail: WorkbenchNodeAdd,\n isNeedUpdateSnippet = true\n ): void | EventDetailOfSnippetApply {\n const { nodes, edges, rootId } = this.data;\n const { nodeData, dragOverInstanceId, dragStatus, mountPoint } = detail;\n if (nodeData.instanceId && !nodeData.instanceId.startsWith(\"mock\")) {\n // move\n } else {\n // insert\n const parentInstanceId = detail.parent || detail.parentInstanceId;\n const newNodeUid = nodeData.$$uid || getUniqueNodeId();\n const overNode = nodes.find(\n (item) => item.instanceId === dragOverInstanceId\n );\n let dragOverNodeUid = overNode.$$uid;\n let realDragStatus = dragStatus;\n if (dragOverNodeUid === rootId) {\n realDragStatus = \"inside\";\n } else {\n const overEdge = edges.find((item) => item.child === dragOverNodeUid);\n const overParentNode = nodes.find((item) =>\n dragStatus === \"inside\"\n ? item.$$uid === overEdge.child\n : item.$$uid === overEdge.parent\n );\n\n if (overParentNode.instanceId !== parentInstanceId) {\n // 如果instanceId不相同, 说明父元素被修改, dragStatus强制等于inside, uid也需要切换成实际父元素的uid\n realDragStatus = \"inside\";\n dragOverNodeUid = nodes.find(\n (item) => item.instanceId === parentInstanceId\n ).$$uid;\n }\n }\n\n const {\n parentUid,\n sortIndex,\n sortUids: nodeUids,\n sortNodeIds: nodeIds,\n sortNodeInstanceIds: nodeInstanceIds,\n } = this.getDragInfo({\n nodeData: {\n id: nodeData.id ?? null,\n instanceId: nodeData.instanceId ?? null,\n } as BuilderRuntimeNode,\n dragNodeUid: newNodeUid,\n dragOverNodeUid,\n dragStatus: realDragStatus,\n });\n\n nodeData.parent = parentInstanceId;\n nodeData.mountPoint = mountPoint;\n nodeData.sort = sortIndex;\n\n if (nodeData.bricks) {\n // snippet\n const snippetData = {\n parentUid,\n nodeDetails: nodeData.bricks.map((brickConf) =>\n getSnippetNodeDetail({\n parent: parentInstanceId,\n parentUid: parentUid,\n mountPoint: mountPoint,\n nodeUid: newNodeUid,\n brickConf: brickConf,\n isPortalCanvas: false,\n })\n ),\n nodeIds,\n nodeUids,\n };\n if (isNeedUpdateSnippet) {\n this.snippetApply(snippetData);\n } else {\n return snippetData;\n }\n }\n\n this.runAddNodeAction({\n nodeUid: newNodeUid,\n parentUid,\n nodeUids,\n nodeIds,\n nodeData,\n sort: sortIndex,\n });\n const sortData = {\n nodeUids,\n nodeInstanceIds,\n nodeIds,\n };\n detail.sortData = sortData;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_ADD, {\n detail: {\n nodeUid: newNodeUid,\n parentUid,\n nodeUids,\n nodeInstanceIds,\n nodeIds,\n nodeData,\n },\n })\n );\n }\n }\n\n workbenchTreeNodeMove(detail: WorkbenchTreeNodeMoveProps): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n const { dragNodeUid, dragOverNodeUid, dragStatus } = detail;\n const nodeData = nodes.find((item) => item.$$uid === dragNodeUid);\n const originEdge = edges.find((edge) => edge.child === nodeData.$$uid);\n const originParentUid = originEdge.parent;\n const originParentNode = nodes.find(\n (node) => node.$$uid === originParentUid\n );\n const {\n parentUid,\n parnetNodeData,\n mountPoint,\n sortIndex,\n sortUids: nodeUids,\n sortNodeIds: nodeIds,\n } = this.getDragInfo({\n nodeData,\n dragNodeUid,\n dragOverNodeUid,\n dragStatus,\n });\n\n const newData = {\n rootId,\n nodes,\n edges: edges\n .filter((edge) => edge.child !== dragNodeUid)\n .concat({\n parent: parentUid,\n child: dragNodeUid,\n mountPoint: mountPoint,\n sort: sortIndex,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n }),\n wrapperNode,\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<EventDetailOfWorkbenchTreeNodeMove>(\n BuilderInternalEventType.WORKBENCH_TREE_NODE_MOVE,\n {\n detail: {\n nodeUid: dragNodeUid,\n nodeInstanceId: nodeData.instanceId,\n nodeIds,\n ...(originParentNode.instanceId !== parnetNodeData.instanceId ||\n originEdge.mountPoint !== mountPoint\n ? {\n nodeData: {\n parent: parnetNodeData.instanceId,\n mountPoint: mountPoint,\n },\n }\n : {}),\n objectId: getObjectIdByNode(nodeData),\n },\n }\n )\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_UPDATE, {\n detail: this.data,\n })\n );\n }\n\n /**\n * Move mount-point up or down.\n */\n moveMountPoint(\n { $$uid: parentUid }: BuilderRuntimeNode,\n mountPoint: string,\n direction: \"up\" | \"down\"\n ): void {\n const { relatedEdges, mountPoints } = getRelatedEdgesAndMountPoint(\n this.data.edges,\n parentUid\n );\n const index = mountPoints.indexOf(mountPoint);\n const orderedMountPoints = moveItemInList(mountPoints, index, direction);\n if (!orderedMountPoints) {\n return;\n }\n const orderedEdges = sortBy(\n relatedEdges,\n (edge) => orderedMountPoints.indexOf(edge.mountPoint),\n \"sort\"\n );\n this.reorder(parentUid, orderedEdges);\n }\n\n private reorder(parentUid: number, orderedEdges: BuilderRuntimeEdge[]): void {\n const { nodes } = this.data;\n const childUids = orderedEdges.map((edge) => edge.child);\n this.data = {\n ...this.data,\n edges: reorderBuilderEdges(this.data, { parentUid, nodeUids: childUids }),\n };\n this.triggerDataChange();\n const childIds = childUids\n .map((uid) => nodes.find((node) => node.$$uid === uid))\n .map((node) => node.id);\n this.eventTarget.dispatchEvent(\n new CustomEvent<EventDetailOfNodeReorder>(\n BuilderInternalEventType.NODE_REORDER,\n {\n detail: {\n nodeUids: childUids,\n parentUid,\n nodeIds: childIds,\n objectId: getObjectIdByNode(\n nodes.find((node) => node.$$uid === parentUid)\n ),\n },\n }\n )\n );\n }\n\n contextUpdated(detail: EventDetailOfContextUpdated): void {\n const { rootId, nodes, edges, wrapperNode } = 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 wrapperNode,\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.setActiveNodeUid(detail.$$uid);\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 onWorkbenchTreeNodeMove(\n fn: (event: CustomEvent<EventDetailOfNodeMove>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.WORKBENCH_TREE_NODE_MOVE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.WORKBENCH_TREE_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 onNodeUpdate(\n fn: (event: CustomEvent<BuilderCanvasData>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_UPDATE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_UPDATE,\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 setActiveNodeUid(uid: number): void {\n if (this.activeNodeUid !== uid) {\n this.activeNodeUid = uid;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.ACTIVE_NODE_CHANGE)\n );\n }\n }\n\n getActiveNodeUid(): number {\n return this.activeNodeUid;\n }\n\n onActiveNodeChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.ACTIVE_NODE_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.ACTIVE_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\nfunction getRelatedEdgesAndMountPoint(\n edges: BuilderRuntimeEdge[],\n parentUid: number\n): {\n /** Edges of the same parent */\n relatedEdges: BuilderRuntimeEdge[];\n /** Mount-point of the same parent */\n mountPoints: string[];\n} {\n const relatedEdges = sortBy(\n edges.filter(\n (edge) => edge.parent === parentUid && !edge.$$isTemplateExpanded\n ),\n \"sort\"\n );\n const mountPointSet = new Set<string>();\n for (const edge of relatedEdges) {\n mountPointSet.add(edge.mountPoint);\n }\n const mountPoints = Array.from(mountPointSet);\n return { relatedEdges, mountPoints };\n}\n\nfunction moveItemInList<T>(\n list: T[],\n index: number,\n direction: \"up\" | \"down\"\n): T[] | undefined {\n let upperIndex: number;\n if (direction === \"up\") {\n if (index <= 0) {\n return;\n }\n upperIndex = index - 1;\n } else {\n if (index === -1 || index >= list.length - 1) {\n return;\n }\n upperIndex = index;\n }\n return [\n ...list.slice(0, upperIndex),\n list[upperIndex + 1],\n list[upperIndex],\n ...list.slice(upperIndex + 2),\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 isWrapper,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n isWrapper?: boolean;\n}): BuilderRuntimeNode<P> {\n const { rootId, nodes, wrapperNode } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(() => {\n if (isWrapper) {\n return wrapperNode as BuilderRuntimeNode<P>;\n }\n return nodes.find(\n (node) => node.$$uid === currentUid\n ) as BuilderRuntimeNode<P>;\n }, [nodes, currentUid, isWrapper, wrapperNode]);\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 isWrapper,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n isWrapper?: boolean;\n}): BuilderGroupedChildNode[] {\n const { rootId, nodes, edges, wrapperNode } = useBuilderData();\n return useMemo(\n () =>\n getBuilderGroupedChildNodes({\n nodes,\n edges,\n nodeUid: isRoot ? (isWrapper ? wrapperNode.$$uid : rootId) : nodeUid,\n doNotExpandTemplates,\n isWrapper: isWrapper,\n }),\n [\n doNotExpandTemplates,\n edges,\n isRoot,\n nodeUid,\n nodes,\n rootId,\n isWrapper,\n wrapperNode,\n ]\n );\n}\n\nexport function getBuilderGroupedChildNodes({\n nodeUid,\n nodes,\n edges,\n doNotExpandTemplates,\n isWrapper,\n}: {\n nodeUid: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n doNotExpandTemplates?: boolean;\n isWrapper?: 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: isWrapper ? \"bricks\" : 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 {\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, isEmpty } 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 hiddenWrapper?: boolean;\n emptyClassName?: string;\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 hiddenWrapper = true,\n emptyClassName,\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 { nodes, edges, wrapperNode } = useBuilderData();\n const isWrapper = hiddenWrapper && isRoot && !isEmpty(wrapperNode);\n const node = useBuilderNode({ nodeUid, isRoot, isWrapper });\n const groupedChildNodes = useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n doNotExpandTemplates: isWrapper,\n isWrapper,\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 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: isWrapper\n ? wrapperNode.instanceId\n : 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 isWrapper,\n wrapperNode,\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 isWrapper ||\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={classNames(\n styles.dropZoneBody,\n selfChildNodesInCurrentCanvas.length === 0 && emptyClassName\n )}\n data-slot-id={mountPoint}\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 emptyClassName?: string;\n}\n\nexport function SlotContainer({\n nodeUid,\n slotName,\n slotContainerStyle,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n emptyClassName,\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 emptyClassName={emptyClassName}\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 useActiveNodeUid(): number {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getActiveNodeUid());\n useEffect(\n () =>\n manager.onActiveNodeChange(() => {\n setData(manager.getActiveNodeUid());\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","_objectSpread","deleteNodeFromTree","nodeUid","wrapperNode","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","dataset","testid","test","isBrick","isBrickNode","brickName","split","pop","unreachable","if","isRouteNode","check","computeConstantCondition","fromEntries","entry","includes","alias","getAppendingNodesAndEdges","templateSourceMap","isRoot","currentUid","processedTemplateSet","inheritedTemplateRefToUid","layoutType","builderNode","templateSource","startsWith","children","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","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","brickConf","ctx","stringify","yaml","safeDump","Boolean","template","isPortalCanvas","portal","getSnippetNodeDetail","bg","bricks","childBrickConf","getObjectIdByNode","isCustomTemplateNode","isSnippetNode","BuilderInternalEventType","storageKeyOfOutlineDisabledNodes","BuilderDataManager","_defineProperty","active","JsonStorage","localStorage","localJsonStorage","getItem","getData","data","getContextMenuStatus","contextMenuStatus","getRelatedNodesBasedOnEventsMap","relatedNodesBasedOnEventsMap","sharedEditorListInit","sharedEditorList","eventTarget","dispatchEvent","CustomEvent","SHARED_EDITOR_LIST_CHANGE","getSharedEditorList","onSharedEditorListChange","fn","addEventListener","routeListInit","routeList","ROUTE_LIST_CHANGE","getRouteList","storyListInit","storyList","getStoryList","onRouteListChange","dataInit","root","newData","triggerDataChange","rootNode","DATA_CHANGE","detail","runAddNodeAction","addNodes","addEdges","omit","newNodes","updateBrick","updateNode","instanceId","$$normalized","$$unreachable","NODE_UPDATE","redirectMountPoint","redirectSnippetMountPoint","nodeDetails","nodeAdd","NODE_ADD","nodeAddStored","snippetApply","appendingNodes","appendingEdges","SNIPPET_APPLY","snippetApplyStored","flattenNodeDetails","found","nodeMove","NODE_MOVE","moveNode","direction","relatedEdges","mountPoints","getRelatedEdgesAndMountPoint","orderedSiblingEdges","moveItemInList","orderedEdges","reorder","getDragInfo","dragNodeUid","dragOverNodeUid","dragStatus","isDragRoot","dragEdge","dragOverEdge","parentEdge","parnetNodeData","siblingEdge","sortUids","sortNodeIds","sortNodeInstanceIds","sortIndex","Math","max","overIndex","workbenchNodeAdd","isNeedUpdateSnippet","dragOverInstanceId","parentInstanceId","newNodeUid","overNode","realDragStatus","overEdge","overParentNode","nodeIds","nodeInstanceIds","snippetData","sortData","workbenchTreeNodeMove","originEdge","originParentUid","originParentNode","WORKBENCH_TREE_NODE_MOVE","nodeInstanceId","objectId","moveMountPoint","orderedMountPoints","childUids","childIds","NODE_REORDER","contextUpdated","context","nodeReorder","nodeDelete","nodeClick","setActiveNodeUid","NODE_CLICK","contextMenuChange","CONTEXT_MENU_CHANGE","onDataChange","onNodeAdd","onSnippetApply","onNodeReorder","onNodeMove","onWorkbenchTreeNodeMove","onNodeClick","onNodeUpdate","onContextMenuChange","setShowRelatedNodesBasedOnEvents","show","showRelatedNodesBasedOnEvents","SHOW_RELATED_NODES_BASED_ON_EVENTS","getShowRelatedNodesBasedOnEvents","onShowRelatedNodesBasedOnEventsChange","setHoverNodeUid","hoverNodeUid","HOVER_NODE_CHANGE","getHoverNodeUid","onHoverNodeChange","activeNodeUid","ACTIVE_NODE_CHANGE","getActiveNodeUid","onActiveNodeChange","toggleOutline","outlineDisabledNodes","delete","setItem","from","OUTLINE_DISABLED_NODES_CHANGE","isOutlineEnabled","onOutlineEnabledNodesChange","setHighlightNodes","highlightNodes","HIGHLIGHT_NODES_CHANGE","getHighlightNodes","onHighlightNodesChange","updateDroppingStatus","isDraggingOver","nodeStatus","droppingStatus","DROPPING_STATUS_CHANGE","getDroppingStatus","onDroppingStatusChange","mountPointSet","list","upperIndex","BuilderContext","React","createContext","createBuilderContext","manager","useBuilderDataManager","useContext","Error","useBuilderData","setData","useState","useEffect","useBuilderNode","isWrapper","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","_asyncToGenerator","editor","tryEditorBricks","editorBrick","developHelper","loadEditorBricks","error","customElements","useStoryList","getBrickDoc","storyId","doc","useSharedEditorMap","getSharedEditorMap","conf","EditorBrickAsComponent","slotContentLayout","initialized","setInitialized","setEditorBrick","loadEditorError","setLoadEditorError","hasChildren","installedBricksEnabled","getRuntime","getFeatureFlags","brickDoc","editorMap","editorConf","editorName","editorError","message","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","BrickAsComponent","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","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","min","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","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","hiddenWrapper","emptyClassName","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","_decorate","property","attribute","display","brickStyle","_render","ReactDOM","unmountComponentAtNode","isConnected","render","BrickWrapper","DndProvider","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","useBuilderParentNode","useRouteList","useActiveNodeUid","useOutlineEnabled","inapplicable","enabled","setEnabled"],"mappings":"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"}