@next-core/editor-bricks-helper 0.47.26 → 0.47.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/interfaces.ts","../../../node_modules/classnames/index.js","../../../node_modules/@ungap/event-target/esm/index.js","../src/internal/getUniqueNodeId.ts","../src/internal/expandTemplateEdges.ts","../src/internal/reorderBuilderEdges.ts","../src/internal/deleteNodeFromTree.ts","../src/processors/getRelatedNodesBasedOnEvents.ts","../src/internal/getBuilderNode.ts","../src/internal/getAppendingNodesAndEdges.ts","../src/internal/isParentExpandableTemplate.ts","../src/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 BuilderRouteNode,\n BrickLifeCycle,\n BrickConf,\n RouteConf,\n} from \"@next-core/brick-types\";\n\nexport interface BuilderCanvasData {\n rootId: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n wrapperNode?: BuilderRuntimeNode;\n}\n\nexport interface BuilderCanvasSettings {\n mode: \"page\" | \"dialog\";\n}\n\nexport type BuilderRuntimeNode<P = Record<string, unknown>> =\n BuilderRouteOrBrickNode & {\n $$uid?: number;\n $$parsedProperties?: P;\n $$parsedEvents?: BrickEventsMap;\n $$parsedLifeCycle?: BrickLifeCycle;\n $$matchedSelectors?: string[];\n $$isTemplateInternalNode?: boolean;\n $$isExpandableTemplate?: boolean;\n $$templateProxy?: CustomTemplateProxy;\n $$templateRefToUid?: Map<string, number>;\n $$delegatedSlots?: Map<string, TemplateDelegatedContext[]>;\n $$normalized?: BrickConf | RouteConf | null;\n };\n\nexport interface BuilderRuntimeEdge {\n child: number;\n parent: number;\n mountPoint: string;\n sort: number;\n $$isTemplateInternal?: boolean;\n $$isTemplateDelegated?: boolean;\n $$isTemplateExpanded?: boolean;\n}\n\nexport interface TemplateDelegatedContext {\n templateUid: number;\n templateMountPoint: string;\n}\n\nexport interface BuilderGroupedChildNode {\n mountPoint: string;\n childNodes: BuilderRuntimeNode[];\n}\n\nexport interface EventDetailOfNodeAdd {\n nodeUid: number;\n parentUid: number;\n nodeUids: number[];\n nodeIds: string[];\n nodeData: NodeInstance;\n 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 { normalizeBuilderNode } from \"@next-core/brick-utils\";\nimport { BuilderRouteOrBrickNode } from \"@next-core/brick-types\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { isBrickNode } from \"../assertions\";\n\nconst nodeIgnoreFields = [\"parent\", \"children\", \"graphInfo\", \"mountPoint\"];\n\n// Match evaluations and placeholders,\n// E.g.: `<% QUERY.x %>` or `${QUERY.x}`.\nconst computationRegExp = /[<{]/;\n\nexport function getBuilderNode(\n nodeData: BuilderRouteOrBrickNode,\n nodeUid: number,\n isTemplateInternalNode?: boolean\n): BuilderRuntimeNode {\n const matchedSelectors: string[] = [];\n\n if (nodeData.brick) {\n matchedSelectors.push((nodeData.brick as string).replace(/\\./g, \"\\\\.\"));\n }\n\n const normalized = normalizeBuilderNode(nodeData);\n\n const jsonFieldsInBrick = [\"properties\", \"events\", \"lifeCycle\"];\n const parsedFields: [string, unknown][] = [];\n let parsedId: string;\n let parsedTestId: string;\n\n for (const field of jsonFieldsInBrick) {\n const parsed = cloneDeep(\n (normalized as Record<string, unknown>)?.[field]\n ) as Record<string, unknown>;\n parsedFields.push([`$$parsed${upperFirst(field)}`, parsed ?? {}]);\n\n if (field === \"properties\") {\n let tempParsedId: string;\n let tempParsedTestId: string;\n if (\n ((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 return Object.fromEntries(\n Object.entries(nodeData)\n .filter((entry) => !nodeIgnoreFields.includes(entry[0]))\n .concat([\n [\n \"alias\",\n nodeData.alias ||\n (isBrickNode(nodeData)\n ? nodeData.ref ||\n parsedTestId ||\n parsedId ||\n nodeData.brick.split(\".\").pop()\n : undefined),\n ],\n [\"$$uid\", nodeUid],\n [\"$$matchedSelectors\", matchedSelectors],\n [\"$$isTemplateInternalNode\", isTemplateInternalNode],\n [\"$$normalized\", normalized],\n ])\n .concat(parsedFields)\n ) as BuilderRuntimeNode;\n}\n","import { sortBy } from \"lodash\";\nimport { hasOwnProperty } from \"@next-core/brick-utils\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderCustomTemplateNode,\n CustomTemplateProxyProperty,\n CustomTemplateProxyBasicProperty,\n Story,\n 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 (builderNode.brick.includes(\".tpl-\") &&\n (templateSource = storyList?.find(\n (item) => item.storyId === builderNode.brick\n )?.originData) &&\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 { 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\";\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 return {\n ...item,\n ...detail,\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.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 ? \"content\"\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 const isWidget = node.brick.split(\".\")[1]?.startsWith(\"tpl-\");\n tryEditorBricks.push(`${node.brick}--editor`);\n isWidget && tryEditorBricks.push(`editors-of-${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 node.brick === \"frame-bricks.side-bar\",\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","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","fromEntries","entry","includes","alias","isBrickNode","split","pop","getAppendingNodesAndEdges","templateSourceMap","storyList","isRoot","currentUid","processedTemplateSet","inheritedTemplateRefToUid","layoutType","builderNode","templateSource","startsWith","children","storyId","originData","proxy","JSON","parse","templateRefToUid","sortedChildren","Infinity","$$isTemplateInternalNode","processDelegatingSlots","cursorNode","rootMountPoint","slotEntries","slotName","slotConf","refUid","refNode","$$delegatedSlots","delegatedSlotsByRefSlot","templateUid","templateMountPoint","processDelegatingProperties","previousPropertyName","properties","propertyEntries","propertyName","propertyConf","$$parsedProperties","isBasicRefProperty","propertyValue","refProperty","overrideChildrenMountPoint","$$isTemplateDelegated","propRef","isParentExpandableTemplate","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","brickConf","ctx","stringify","yaml","safeDump","Boolean","template","isPortalCanvas","portal","getSnippetNodeDetail","bg","bricks","childBrickConf","getObjectIdByNode","isRouteNode","isCustomTemplateNode","isSnippetNode","BuilderInternalEventType","storageKeyOfOutlineDisabledNodes","BuilderDataManager","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","getStoryList","onRouteListChange","dataInit","root","newData","triggerDataChange","rootNode","DATA_CHANGE","detail","runAddNodeAction","addNodes","addEdges","omit","newNodes","updateBrick","updateNode","instanceId","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","editor","tryEditorBricks","isWidget","editorBrick","developHelper","loadEditorBricks","error","customElements","useStoryList","getBrickDoc","doc","useSharedEditorMap","getSharedEditorMap","conf","EditorBrickAsComponent","slotContentLayout","initialized","setInitialized","setEditorBrick","loadEditorError","setLoadEditorError","hasChildren","installedBricksEnabled","getRuntime","getFeatureFlags","brickDoc","editorMap","editorConf","editorName","editorError","message","editorProps","selfLayout","layout","editorConstructor","CONTAINER","INLINE","isDragging","dragRef","useDrag","NODE_TO_MOVE","nodeId","dropEffect","collect","monitor","slotContentLayoutBlock","BLOCK","slotContentLayoutInline","selfLayoutInline","selfLayoutBlock","selfLayoutContainer","dragging","__isTemplateInternalNode","baseView","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","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","property","attribute","display","brickStyle","_render","ReactDOM","unmountComponentAtNode","isConnected","render","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","useBuilderParentNode","useRouteList","useActiveNodeUid","useOutlineEnabled","inapplicable","enabled","setEnabled"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/interfaces.ts","../../../node_modules/classnames/index.js","../../../node_modules/@ungap/event-target/esm/index.js","../src/internal/getUniqueNodeId.ts","../src/internal/expandTemplateEdges.ts","../src/internal/reorderBuilderEdges.ts","../src/internal/deleteNodeFromTree.ts","../src/processors/getRelatedNodesBasedOnEvents.ts","../src/internal/getBuilderNode.ts","../src/internal/getAppendingNodesAndEdges.ts","../src/internal/isParentExpandableTemplate.ts","../src/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 BuilderRouteNode,\n BrickLifeCycle,\n BrickConf,\n RouteConf,\n} from \"@next-core/brick-types\";\n\nexport interface BuilderCanvasData {\n rootId: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n wrapperNode?: BuilderRuntimeNode;\n}\n\nexport interface BuilderCanvasSettings {\n mode: \"page\" | \"dialog\";\n}\n\nexport type BuilderRuntimeNode<P = Record<string, unknown>> =\n BuilderRouteOrBrickNode & {\n $$uid?: number;\n $$parsedProperties?: P;\n $$parsedEvents?: BrickEventsMap;\n $$parsedLifeCycle?: BrickLifeCycle;\n $$matchedSelectors?: string[];\n $$isTemplateInternalNode?: boolean;\n $$isExpandableTemplate?: boolean;\n $$templateProxy?: CustomTemplateProxy;\n $$templateRefToUid?: Map<string, number>;\n $$delegatedSlots?: Map<string, TemplateDelegatedContext[]>;\n $$normalized?: BrickConf | RouteConf | null;\n };\n\nexport interface BuilderRuntimeEdge {\n child: number;\n parent: number;\n mountPoint: string;\n sort: number;\n $$isTemplateInternal?: boolean;\n $$isTemplateDelegated?: boolean;\n $$isTemplateExpanded?: boolean;\n}\n\nexport interface TemplateDelegatedContext {\n templateUid: number;\n templateMountPoint: string;\n}\n\nexport interface BuilderGroupedChildNode {\n mountPoint: string;\n childNodes: BuilderRuntimeNode[];\n}\n\nexport interface EventDetailOfNodeAdd {\n nodeUid: number;\n parentUid: number;\n nodeUids: number[];\n nodeIds: string[];\n nodeData: NodeInstance;\n 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 { normalizeBuilderNode } from \"@next-core/brick-utils\";\nimport { BuilderRouteOrBrickNode } from \"@next-core/brick-types\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { isBrickNode } from \"../assertions\";\n\nconst nodeIgnoreFields = [\"parent\", \"children\", \"graphInfo\", \"mountPoint\"];\n\n// Match evaluations and placeholders,\n// E.g.: `<% QUERY.x %>` or `${QUERY.x}`.\nconst computationRegExp = /[<{]/;\n\nexport function getBuilderNode(\n nodeData: BuilderRouteOrBrickNode,\n nodeUid: number,\n isTemplateInternalNode?: boolean\n): BuilderRuntimeNode {\n const matchedSelectors: string[] = [];\n\n if (nodeData.brick) {\n matchedSelectors.push((nodeData.brick as string).replace(/\\./g, \"\\\\.\"));\n }\n\n const normalized = normalizeBuilderNode(nodeData);\n\n const jsonFieldsInBrick = [\"properties\", \"events\", \"lifeCycle\"];\n const parsedFields: [string, unknown][] = [];\n let parsedId: string;\n let parsedTestId: string;\n\n for (const field of jsonFieldsInBrick) {\n const parsed = cloneDeep(\n (normalized as Record<string, unknown>)?.[field]\n ) as Record<string, unknown>;\n parsedFields.push([`$$parsed${upperFirst(field)}`, parsed ?? {}]);\n\n if (field === \"properties\") {\n let tempParsedId: string;\n let tempParsedTestId: string;\n if (\n ((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 return Object.fromEntries(\n Object.entries(nodeData)\n .filter((entry) => !nodeIgnoreFields.includes(entry[0]))\n .concat([\n [\n \"alias\",\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 ])\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 (builderNode.brick.includes(\".tpl-\") &&\n (templateSource = storyList?.find(\n (item) => item.storyId === builderNode.brick\n )?.originData) &&\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 { 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\";\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 return {\n ...item,\n ...detail,\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.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 ? \"content\"\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 const isWidget = node.brick.split(\".\")[1]?.startsWith(\"tpl-\");\n tryEditorBricks.push(`${node.brick}--editor`);\n isWidget && tryEditorBricks.push(`editors-of-${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 node.brick === \"frame-bricks.side-bar\",\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","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","fromEntries","entry","includes","alias","getAppendingNodesAndEdges","templateSourceMap","storyList","isRoot","currentUid","processedTemplateSet","inheritedTemplateRefToUid","layoutType","builderNode","templateSource","startsWith","children","storyId","originData","proxy","JSON","parse","templateRefToUid","sortedChildren","Infinity","$$isTemplateInternalNode","processDelegatingSlots","cursorNode","rootMountPoint","slotEntries","slotName","slotConf","refUid","refNode","$$delegatedSlots","delegatedSlotsByRefSlot","templateUid","templateMountPoint","processDelegatingProperties","previousPropertyName","properties","propertyEntries","propertyName","propertyConf","$$parsedProperties","isBasicRefProperty","propertyValue","refProperty","overrideChildrenMountPoint","$$isTemplateDelegated","propRef","isParentExpandableTemplate","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","brickConf","ctx","stringify","yaml","safeDump","Boolean","template","isPortalCanvas","portal","getSnippetNodeDetail","bg","bricks","childBrickConf","getObjectIdByNode","isRouteNode","isCustomTemplateNode","isSnippetNode","BuilderInternalEventType","storageKeyOfOutlineDisabledNodes","BuilderDataManager","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","getStoryList","onRouteListChange","dataInit","root","newData","triggerDataChange","rootNode","DATA_CHANGE","detail","runAddNodeAction","addNodes","addEdges","omit","newNodes","updateBrick","updateNode","instanceId","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","editor","tryEditorBricks","isWidget","editorBrick","developHelper","loadEditorBricks","error","customElements","useStoryList","getBrickDoc","doc","useSharedEditorMap","getSharedEditorMap","conf","EditorBrickAsComponent","slotContentLayout","initialized","setInitialized","setEditorBrick","loadEditorError","setLoadEditorError","hasChildren","installedBricksEnabled","getRuntime","getFeatureFlags","brickDoc","editorMap","editorConf","editorName","editorError","message","editorProps","selfLayout","layout","editorConstructor","CONTAINER","INLINE","isDragging","dragRef","useDrag","NODE_TO_MOVE","nodeId","dropEffect","collect","monitor","slotContentLayoutBlock","BLOCK","slotContentLayoutInline","selfLayoutInline","selfLayoutBlock","selfLayoutContainer","dragging","__isTemplateInternalNode","baseView","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","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","property","attribute","display","brickStyle","_render","ReactDOM","unmountComponentAtNode","isConnected","render","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","useBuilderParentNode","useRouteList","useActiveNodeUid","useOutlineEnabled","inapplicable","enabled","setEnabled"],"mappings":"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"}