@next-core/editor-bricks-helper 0.39.14 → 0.39.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.bundle.js","sources":["../src/interfaces.ts","../../../node_modules/classnames/index.js","../../../node_modules/@ungap/event-target/esm/index.js","../src/internal/getUniqueNodeId.ts","../src/internal/expandTemplateEdges.ts","../src/internal/reorderBuilderEdges.ts","../src/internal/deleteNodeFromTree.ts","../src/processors/getRelatedNodesBasedOnEvents.ts","../src/internal/getBuilderNode.ts","../src/internal/getAppendingNodesAndEdges.ts","../src/internal/isParentExpandableTemplate.ts","../src/internal/BuilderDataManager.ts","../src/BuilderContext.ts","../src/hooks/useBuilderDataManager.ts","../src/hooks/useBuilderData.ts","../src/hooks/useBuilderNode.ts","../src/hooks/useBuilderContextMenuStatus.ts","../src/hooks/useShowRelatedNodesBasedOnEvents.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/EditorContainer/isCurrentTargetByClassName.ts","../src/hooks/useHoverNodeUid.ts","../src/hooks/useHighlightNodes.ts","../src/hooks/useDroppingStatus.ts","../src/EditorContainer/EditorContainer.tsx","../src/EditorBrickAsComponent/getEditorBrick.ts","../src/hooks/useStoryList.ts","../src/EditorBrickAsComponent/getBrickDoc.ts","../src/hooks/useSharedEditorMap.ts","../src/EditorBrickAsComponent/EditorBrickAsComponent.tsx","../src/hooks/useBuilderGroupedChildNodes.ts","../src/hooks/useCanDrop.ts","../src/DropZone/getDropPosition.ts","../src/processors/getSortedIdsAfterDropped.ts","../src/DropZone/reverseNormalize.ts","../src/DropZone/getSnippetNodeDetail.ts","../src/DropZone/processDrop.ts","../src/hooks/useCanvasList.ts","../src/DropZone/DropZone.tsx","../src/SlotContainer/SlotContainer.tsx","../src/BuilderProvider.tsx","../src/EditorElementFactory.tsx","../src/DroppingStatusContext.ts","../src/hooks/useBuilderNodeMountPoints.ts","../src/hooks/useBuilderParentNode.ts","../src/hooks/useRouteList.ts","../src/hooks/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}\n\nexport interface EventDetailOfContextUpdated {\n context: ContextConf[];\n}\n\nexport interface NodeInstance {\n parent: string;\n type: \"brick\" | \"provider\" | \"template\";\n brick: string;\n mountPoint: string;\n bg?: boolean;\n portal?: boolean;\n properties?: string;\n events?: string;\n lifeCycle?: string;\n sort?: number;\n}\n\nexport interface EventDetailOfNodeAddStored {\n nodeUid: number;\n nodeData: BuilderRouteOrBrickNode;\n}\n\nexport interface EventDetailOfSnippetApply {\n parentUid: number;\n /** First level node only. */\n nodeUids: number[];\n /** First level node only. */\n nodeIds: string[];\n nodeDetails: SnippetNodeDetail[];\n}\n\nexport interface SnippetNodeDetail {\n nodeUid: number;\n parentUid: number;\n nodeData: SnippetNodeInstance;\n children: SnippetNodeDetail[];\n}\n\nexport type SnippetNodeInstance = Omit<NodeInstance, \"parent\"> & {\n parent?: string;\n};\n\nexport interface EventDetailOfSnippetApplyStored {\n flattenNodeDetails: EventDetailOfNodeAddStored[];\n}\n\nexport type EventDetailOfNodeMove = Omit<EventDetailOfNodeAdd, \"nodeData\"> & {\n nodeInstanceId: string;\n nodeData: {\n parent: string;\n mountPoint: string;\n };\n};\n\nexport interface EventDetailOfNodeReorder {\n nodeUids: number[];\n parentUid: number;\n nodeIds: string[];\n}\n\nexport interface EventDetailOfNodeDragStart {\n nodeUid: number;\n}\n\nexport interface BuilderContextMenuStatus {\n active: boolean;\n node?: BuilderRuntimeNode;\n /** `x` is relative to the viewport. */\n x?: number;\n /** `y` is relative to the viewport. */\n y?: number;\n}\n\nexport enum BuilderDataTransferType {\n NODE_TO_ADD = \"builder/node-to-add\",\n NODE_TO_MOVE = \"builder/node-to-move\",\n SNIPPET_TO_APPLY = \"builder/snippet-to-apply\",\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToAdd {\n brickType?: \"brick\" | \"provider\" | \"template\";\n brick: string;\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToMove {\n nodeUid: number;\n nodeInstanceId: string;\n nodeId: string;\n}\n\nexport interface BuilderDataTransferPayloadOfSnippetToApply {\n bricks: BrickConf[];\n}\n\nexport enum EditorBrickType {\n DEFAULT = \"editorOfDefault\",\n CONTAINER = \"editorOfContainer\",\n TRANSPARENT_CONTAINER = \"editorOfTransparentContainer\",\n}\n\nexport enum EditorSelfLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n CONTAINER = \"container\",\n}\n\nexport enum EditorSlotContentLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n GRID = \"grid\",\n}\n\nexport interface SharedEditorConf {\n id: string;\n editor: string;\n editorProps?: Record<string, unknown>;\n}\n\nexport type BuilderDroppingStatus = Map<number, Map<string, boolean>>;\n","/*!\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 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 { 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} 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\";\n\nenum BuilderInternalEventType {\n NODE_ADD = \"builder.node.add\",\n NODE_MOVE = \"builder.node.move\",\n NODE_REORDER = \"builder.node.reorder\",\n NODE_CLICK = \"builder.node.click\",\n SNIPPET_APPLY = \"builder.snippet.apply\",\n CONTEXT_MENU_CHANGE = \"builder.contextMenu.change\",\n DATA_CHANGE = \"builder.data.change\",\n SHARED_EDITOR_LIST_CHANGE = \"builder.sharedEditorList.change\",\n ROUTE_LIST_CHANGE = \"builder.routeList.change\",\n HOVER_NODE_CHANGE = \"builder.hoverNode.change\",\n 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}\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 );\n }\n\n private runAddNodeAction(detail: EventDetailOfNodeAdd): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData } = detail;\n\n const { nodes: addNodes, edges: addEdges } = getAppendingNodesAndEdges(\n omit(nodeData, [\n \"parent\",\n ]) as Partial<BuilderRouteOrBrickNode> as BuilderRouteOrBrickNode,\n nodeUid,\n this.templateSourceMap,\n this.getStoryList()\n );\n const newNodes = nodes.concat(addNodes);\n const newEdges = edges\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n })\n .concat(addEdges);\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n 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 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 }\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 },\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 onNodeClick(\n fn: (event: CustomEvent<BuilderRuntimeNode>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n };\n }\n\n onContextMenuChange(\n fn: (event: CustomEvent<BuilderContextMenuStatus>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n };\n }\n\n setShowRelatedNodesBasedOnEvents(show: boolean): void {\n this.showRelatedNodesBasedOnEvents = show;\n this.eventTarget.dispatchEvent(\n new CustomEvent(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS\n )\n );\n }\n\n getShowRelatedNodesBasedOnEvents(): boolean {\n return this.showRelatedNodesBasedOnEvents;\n }\n\n onShowRelatedNodesBasedOnEventsChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n };\n }\n\n setHoverNodeUid(uid: number): void {\n if (this.hoverNodeUid !== uid) {\n this.hoverNodeUid = uid;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.HOVER_NODE_CHANGE)\n );\n }\n }\n\n getHoverNodeUid(): number {\n return this.hoverNodeUid;\n }\n\n onHoverNodeChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n };\n }\n\n 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 yaml from \"js-yaml\";\nimport { BrickConf } from \"@next-core/brick-types\";\nimport { SnippetNodeInstance } from \"../interfaces\";\n\nconst jsonFieldsInBrick = [\n \"properties\",\n \"events\",\n \"lifeCycle\",\n \"params\",\n \"if\",\n \"transform\",\n];\nconst yamlFieldsInBrick = [\"permissionsPreCheck\", \"transformFrom\"];\nconst ignoredFieldsInBrick = [\n \"brick\",\n \"template\",\n \"portal\",\n \"slots\",\n \"id\",\n \"children\",\n \"instanceId\",\n];\n\nexport interface ReverseNormalizeContext {\n isPortalCanvas: boolean;\n nodeData: {\n type: \"brick\" | \"template\" | \"provider\";\n parent: string;\n mountPoint: string;\n sort: number;\n };\n}\n\n// The reverse operation of *normalize*.\n// https://github.com/easyops-cn/next-basics/blob/5a6710d567821bcb4a0c71e22d55212193d8b0cb/bricks/next-builder/src/shared/storyboard/buildStoryboard.ts#L394\nexport function reverseNormalize(\n brickConf: BrickConf,\n ctx: ReverseNormalizeContext\n): SnippetNodeInstance {\n return Object.fromEntries(\n Object.entries(brickConf)\n .map<[string, unknown]>(([key, value]) =>\n value === undefined || ignoredFieldsInBrick.includes(key)\n ? undefined\n : jsonFieldsInBrick.includes(key)\n ? [key, JSON.stringify(value)]\n : yamlFieldsInBrick.includes(key)\n ? [key, yaml.safeDump(value)]\n : [key, value]\n )\n .filter(Boolean)\n .concat(Object.entries(ctx.nodeData), [\n [\n \"brick\",\n ctx.nodeData.type === \"template\"\n ? brickConf.template\n : brickConf.brick,\n ],\n [\"portal\", ctx.isPortalCanvas || brickConf.portal],\n ])\n ) as SnippetNodeInstance;\n}\n","import { BrickConf, SlotConfOfBricks } from \"@next-core/brick-types\";\nimport { SnippetNodeDetail } from \"../interfaces\";\nimport { getUniqueNodeId } from \"../internal/getUniqueNodeId\";\nimport { reverseNormalize } from \"./reverseNormalize\";\n\nexport function getSnippetNodeDetail({\n parent,\n parentUid,\n mountPoint,\n nodeUid,\n brickConf,\n isPortalCanvas,\n sort,\n}: {\n parent?: string;\n parentUid: number;\n mountPoint: string;\n nodeUid: number;\n brickConf: BrickConf;\n isPortalCanvas?: boolean;\n sort?: number;\n}): SnippetNodeDetail {\n const type = brickConf.template\n ? \"template\"\n : brickConf.bg\n ? \"provider\"\n : \"brick\";\n\n return {\n nodeUid,\n parentUid,\n nodeData: reverseNormalize(brickConf, {\n isPortalCanvas,\n nodeData: {\n type,\n parent,\n mountPoint,\n sort,\n },\n }),\n children: brickConf.slots\n ? Object.entries(brickConf.slots)\n .flatMap(([mountPoint, slotConf]) =>\n (slotConf as SlotConfOfBricks).bricks.map((childBrickConf) => ({\n childBrickConf,\n mountPoint,\n }))\n )\n .map(({ childBrickConf, mountPoint }, index) =>\n getSnippetNodeDetail({\n parentUid: nodeUid,\n mountPoint,\n nodeUid: getUniqueNodeId(),\n brickConf: childBrickConf,\n sort: index,\n })\n )\n : [],\n };\n}\n","import {\n BuilderDataTransferPayloadOfNodeToAdd,\n BuilderDataTransferPayloadOfNodeToMove,\n BuilderDataTransferPayloadOfSnippetToApply,\n BuilderDataTransferType,\n BuilderGroupedChildNode,\n BuilderRuntimeNode,\n} from \"../interfaces\";\nimport { BuilderDataManager } from \"../internal/BuilderDataManager\";\nimport { getUniqueNodeId } from \"../internal/getUniqueNodeId\";\nimport { getSortedIdsAfterDropped } from \"../processors/getSortedIdsAfterDropped\";\nimport { getSnippetNodeDetail } from \"./getSnippetNodeDetail\";\n\nexport interface HandleDropParams {\n manager: BuilderDataManager;\n type: BuilderDataTransferType;\n data:\n | BuilderDataTransferPayloadOfNodeToAdd\n | BuilderDataTransferPayloadOfNodeToMove\n | BuilderDataTransferPayloadOfSnippetToApply;\n droppingIndex: number;\n droppingParentUid: number;\n droppingParentInstanceId: string;\n droppingMountPoint: string;\n droppingChildNodes: BuilderRuntimeNode[];\n droppingSiblingGroups: BuilderGroupedChildNode[];\n isPortalCanvas?: boolean;\n}\n\nexport function processDrop({\n manager,\n type,\n data,\n droppingIndex,\n droppingParentUid,\n droppingParentInstanceId,\n droppingMountPoint,\n droppingChildNodes,\n droppingSiblingGroups,\n isPortalCanvas,\n}: HandleDropParams): void {\n if (type === BuilderDataTransferType.NODE_TO_ADD) {\n // Drag a new node into canvas.\n const { brickType = \"brick\", brick } =\n data as BuilderDataTransferPayloadOfNodeToAdd;\n const draggingNodeUid = getUniqueNodeId();\n manager.nodeAdd({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId: null,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n nodeUid: draggingNodeUid,\n parentUid: droppingParentUid,\n nodeData: {\n parent: droppingParentInstanceId,\n type: brickType,\n brick,\n mountPoint: droppingMountPoint,\n bg: !isPortalCanvas && brickType === \"provider\" ? true : undefined,\n portal: isPortalCanvas,\n },\n });\n } else if (type === BuilderDataTransferType.SNIPPET_TO_APPLY) {\n const { bricks } = data as BuilderDataTransferPayloadOfSnippetToApply;\n // https://stackoverflow.com/questions/5501581/javascript-new-arrayn-and-array-prototype-map-weirdness\n const draggingNodeUids = [...new Array(bricks.length)].map(() =>\n getUniqueNodeId()\n );\n manager.snippetApply({\n ...getSortedIdsAfterDropped({\n draggingNodeUid: draggingNodeUids,\n draggingNodeId: null,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n parentUid: droppingParentUid,\n nodeDetails: bricks.map((brickConf, index) =>\n getSnippetNodeDetail({\n parent: droppingParentInstanceId,\n parentUid: droppingParentUid,\n mountPoint: droppingMountPoint,\n nodeUid: draggingNodeUids[index],\n brickConf,\n isPortalCanvas,\n })\n ),\n });\n } else if (type === BuilderDataTransferType.NODE_TO_MOVE) {\n const {\n nodeUid: draggingNodeUid,\n nodeId: draggingNodeId,\n nodeInstanceId: draggingNodeInstanceId,\n } = data as BuilderDataTransferPayloadOfNodeToMove;\n\n const draggingIndex = droppingChildNodes.findIndex(\n (item) => item.$$uid === draggingNodeUid\n );\n // If found dragging node in the same drop zone,\n // then apply a node reorder, otherwise apply a node move.\n if (draggingIndex >= 0) {\n // If the index is not changed, then there is nothing to do.\n if (\n droppingIndex !== draggingIndex &&\n droppingIndex !== draggingIndex + 1\n ) {\n manager.nodeReorder({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId,\n draggingIndex,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n parentUid: droppingParentUid,\n });\n }\n } else {\n manager.nodeMove({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n nodeUid: draggingNodeUid,\n parentUid: droppingParentUid,\n nodeInstanceId: draggingNodeInstanceId,\n nodeData: {\n parent: droppingParentInstanceId,\n mountPoint: droppingMountPoint,\n },\n });\n }\n }\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\n\nexport function useCanvasList(\n rootChildNodes: BuilderRuntimeNode[]\n): BuilderRuntimeNode[][] {\n return useMemo(() => {\n const mainCanvas: BuilderRuntimeNode[] = [];\n const portalCanvasList: BuilderRuntimeNode[][] = [];\n for (const child of rootChildNodes) {\n if (child.portal) {\n portalCanvasList.push([child]);\n } else {\n mainCanvas.push(child);\n }\n }\n return [mainCanvas, ...portalCanvasList, []];\n }, [rootChildNodes]);\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport { clamp, 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","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","runAddNodeAction","detail","addNodes","addEdges","omit","newNodes","updateBrick","redirectMountPoint","instanceId","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","moveMountPoint","orderedMountPoints","childUids","childIds","NODE_REORDER","nodeIds","contextUpdated","context","nodeReorder","nodeDelete","nodeClick","setActiveNodeUid","NODE_CLICK","contextMenuChange","CONTEXT_MENU_CHANGE","onDataChange","onNodeAdd","onSnippetApply","onNodeReorder","onNodeMove","onNodeClick","onContextMenuChange","setShowRelatedNodesBasedOnEvents","show","showRelatedNodesBasedOnEvents","SHOW_RELATED_NODES_BASED_ON_EVENTS","getShowRelatedNodesBasedOnEvents","onShowRelatedNodesBasedOnEventsChange","setHoverNodeUid","hoverNodeUid","HOVER_NODE_CHANGE","getHoverNodeUid","onHoverNodeChange","activeNodeUid","ACTIVE_NODE_CHANGE","getActiveNodeUid","onActiveNodeChange","toggleOutline","nodeInstanceId","outlineDisabledNodes","delete","setItem","from","OUTLINE_DISABLED_NODES_CHANGE","isOutlineEnabled","onOutlineEnabledNodesChange","setHighlightNodes","highlightNodes","HIGHLIGHT_NODES_CHANGE","getHighlightNodes","onHighlightNodesChange","updateDroppingStatus","isDraggingOver","nodeStatus","droppingStatus","DROPPING_STATUS_CHANGE","Boolean","getDroppingStatus","onDroppingStatusChange","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","isRouteNode","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","brickConf","editorProps","selfLayout","layout","editorConstructor","CONTAINER","INLINE","isDragging","dragRef","useDrag","NODE_TO_MOVE","nodeId","dropEffect","collect","monitor","slotContentLayoutBlock","BLOCK","slotContentLayoutInline","selfLayoutInline","selfLayoutBlock","selfLayoutContainer","dragging","__isTemplateInternalNode","baseView","BrickAsComponent","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","childNode","childNodes","useCanDrop","draggingUid","traverse","parentId","defaultGapHalf","getDropPositions","dropZone","dropZoneGrid","zoneRect","getBoundingClientRect","positions","gridItemList","currentRow","cells","rows","gridItem","rect","cell","top","bottom","left","right","prevCell","compareApproximately","Math","min","max","lastRectBottom","nextCursorTop","row","rowIndex","rectBottom","cursor","nextRow","lastRectRight","nextCursorLeft","cursorDefault","isVertical","height","cellIndex","rectRight","getDropPosition","a","b","diff","abs","getSortedIdsAfterDropped","droppingInfo","draggingNodeUid","draggingNodeId","draggingIndex","droppingMountPoint","droppingSiblingGroups","droppingIndex","draggingNodeUids","fullChildNodes","group","uids","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","ctx","stringify","yaml","safeDump","template","isPortalCanvas","portal","getSnippetNodeDetail","bg","bricks","childBrickConf","processDrop","droppingParentUid","droppingParentInstanceId","droppingChildNodes","NODE_TO_ADD","brickType","SNIPPET_TO_APPLY","draggingNodeInstanceId","useCanvasList","rootChildNodes","mainCanvas","portalCanvasList","DropZone","separateCanvas","independentPortalCanvas","canvasIndex","fullscreen","delegatedContext","dropZoneStyle","dropZoneBodyStyle","showOutlineIfEmpty","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","BrickWrapper","DndProvider","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","useBuilderParentNode","useRouteList","useActiveNodeUid","useOutlineEnabled","inapplicable","enabled","setEnabled"],"mappings":"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"}
1
+ {"version":3,"file":"index.bundle.js","sources":["../src/interfaces.ts","../../../node_modules/classnames/index.js","../../../node_modules/@ungap/event-target/esm/index.js","../src/internal/getUniqueNodeId.ts","../src/internal/expandTemplateEdges.ts","../src/internal/reorderBuilderEdges.ts","../src/internal/deleteNodeFromTree.ts","../src/processors/getRelatedNodesBasedOnEvents.ts","../src/internal/getBuilderNode.ts","../src/internal/getAppendingNodesAndEdges.ts","../src/internal/isParentExpandableTemplate.ts","../src/internal/BuilderDataManager.ts","../src/BuilderContext.ts","../src/hooks/useBuilderDataManager.ts","../src/hooks/useBuilderData.ts","../src/hooks/useBuilderNode.ts","../src/hooks/useBuilderContextMenuStatus.ts","../src/hooks/useShowRelatedNodesBasedOnEvents.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/EditorContainer/isCurrentTargetByClassName.ts","../src/hooks/useHoverNodeUid.ts","../src/hooks/useHighlightNodes.ts","../src/hooks/useDroppingStatus.ts","../src/EditorContainer/EditorContainer.tsx","../src/EditorBrickAsComponent/getEditorBrick.ts","../src/hooks/useStoryList.ts","../src/EditorBrickAsComponent/getBrickDoc.ts","../src/hooks/useSharedEditorMap.ts","../src/EditorBrickAsComponent/EditorBrickAsComponent.tsx","../src/hooks/useBuilderGroupedChildNodes.ts","../src/hooks/useCanDrop.ts","../src/DropZone/getDropPosition.ts","../src/processors/getSortedIdsAfterDropped.ts","../src/DropZone/reverseNormalize.ts","../src/DropZone/getSnippetNodeDetail.ts","../src/DropZone/processDrop.ts","../src/hooks/useCanvasList.ts","../src/DropZone/DropZone.tsx","../src/SlotContainer/SlotContainer.tsx","../src/BuilderProvider.tsx","../src/EditorElementFactory.tsx","../src/DroppingStatusContext.ts","../src/hooks/useBuilderNodeMountPoints.ts","../src/hooks/useBuilderParentNode.ts","../src/hooks/useRouteList.ts","../src/hooks/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}\n\nexport interface EventDetailOfContextUpdated {\n context: ContextConf[];\n}\n\nexport interface NodeInstance {\n parent: string;\n type: \"brick\" | \"provider\" | \"template\";\n brick: string;\n mountPoint: string;\n bg?: boolean;\n portal?: boolean;\n properties?: string;\n events?: string;\n lifeCycle?: string;\n sort?: number;\n}\n\nexport interface EventDetailOfNodeAddStored {\n nodeUid: number;\n nodeData: BuilderRouteOrBrickNode;\n}\n\nexport interface EventDetailOfSnippetApply {\n parentUid: number;\n /** First level node only. */\n nodeUids: number[];\n /** First level node only. */\n nodeIds: string[];\n nodeDetails: SnippetNodeDetail[];\n}\n\nexport interface SnippetNodeDetail {\n nodeUid: number;\n parentUid: number;\n nodeData: SnippetNodeInstance;\n children: SnippetNodeDetail[];\n}\n\nexport type SnippetNodeInstance = Omit<NodeInstance, \"parent\"> & {\n parent?: string;\n};\n\nexport interface EventDetailOfSnippetApplyStored {\n flattenNodeDetails: EventDetailOfNodeAddStored[];\n}\n\nexport type EventDetailOfNodeMove = Omit<EventDetailOfNodeAdd, \"nodeData\"> & {\n nodeInstanceId: string;\n nodeData: {\n parent: string;\n mountPoint: string;\n };\n};\n\nexport interface EventDetailOfNodeReorder {\n nodeUids: number[];\n parentUid: number;\n nodeIds: string[];\n}\n\nexport interface EventDetailOfNodeDragStart {\n nodeUid: number;\n}\n\nexport interface BuilderContextMenuStatus {\n active: boolean;\n node?: BuilderRuntimeNode;\n /** `x` is relative to the viewport. */\n x?: number;\n /** `y` is relative to the viewport. */\n y?: number;\n}\n\nexport enum BuilderDataTransferType {\n NODE_TO_ADD = \"builder/node-to-add\",\n NODE_TO_MOVE = \"builder/node-to-move\",\n SNIPPET_TO_APPLY = \"builder/snippet-to-apply\",\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToAdd {\n brickType?: \"brick\" | \"provider\" | \"template\";\n brick: string;\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToMove {\n nodeUid: number;\n nodeInstanceId: string;\n nodeId: string;\n}\n\nexport interface BuilderDataTransferPayloadOfSnippetToApply {\n bricks: BrickConf[];\n}\n\nexport enum EditorBrickType {\n DEFAULT = \"editorOfDefault\",\n CONTAINER = \"editorOfContainer\",\n TRANSPARENT_CONTAINER = \"editorOfTransparentContainer\",\n}\n\nexport enum EditorSelfLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n CONTAINER = \"container\",\n}\n\nexport enum EditorSlotContentLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n GRID = \"grid\",\n}\n\nexport interface SharedEditorConf {\n id: string;\n editor: string;\n editorProps?: Record<string, unknown>;\n}\n\nexport type BuilderDroppingStatus = Map<number, Map<string, boolean>>;\n","/*!\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 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 { 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} 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\";\n\nenum BuilderInternalEventType {\n NODE_ADD = \"builder.node.add\",\n NODE_MOVE = \"builder.node.move\",\n NODE_REORDER = \"builder.node.reorder\",\n NODE_CLICK = \"builder.node.click\",\n SNIPPET_APPLY = \"builder.snippet.apply\",\n CONTEXT_MENU_CHANGE = \"builder.contextMenu.change\",\n DATA_CHANGE = \"builder.data.change\",\n SHARED_EDITOR_LIST_CHANGE = \"builder.sharedEditorList.change\",\n ROUTE_LIST_CHANGE = \"builder.routeList.change\",\n HOVER_NODE_CHANGE = \"builder.hoverNode.change\",\n 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}\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 );\n }\n\n private runAddNodeAction(detail: EventDetailOfNodeAdd): void {\n const { rootId, nodes, edges, wrapperNode } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData } = detail;\n\n const { nodes: addNodes, edges: addEdges } = getAppendingNodesAndEdges(\n omit(nodeData, [\n \"parent\",\n ]) as Partial<BuilderRouteOrBrickNode> as BuilderRouteOrBrickNode,\n nodeUid,\n this.templateSourceMap,\n this.getStoryList()\n );\n const newNodes = nodes.concat(addNodes);\n const newEdges = edges\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n })\n .concat(addEdges);\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n 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 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 }\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 },\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 onNodeClick(\n fn: (event: CustomEvent<BuilderRuntimeNode>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n };\n }\n\n onContextMenuChange(\n fn: (event: CustomEvent<BuilderContextMenuStatus>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n };\n }\n\n setShowRelatedNodesBasedOnEvents(show: boolean): void {\n this.showRelatedNodesBasedOnEvents = show;\n this.eventTarget.dispatchEvent(\n new CustomEvent(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS\n )\n );\n }\n\n getShowRelatedNodesBasedOnEvents(): boolean {\n return this.showRelatedNodesBasedOnEvents;\n }\n\n onShowRelatedNodesBasedOnEventsChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n };\n }\n\n setHoverNodeUid(uid: number): void {\n if (this.hoverNodeUid !== uid) {\n this.hoverNodeUid = uid;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.HOVER_NODE_CHANGE)\n );\n }\n }\n\n getHoverNodeUid(): number {\n return this.hoverNodeUid;\n }\n\n onHoverNodeChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n };\n }\n\n 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 yaml from \"js-yaml\";\nimport { BrickConf } from \"@next-core/brick-types\";\nimport { SnippetNodeInstance } from \"../interfaces\";\n\nconst jsonFieldsInBrick = [\n \"properties\",\n \"events\",\n \"lifeCycle\",\n \"params\",\n \"if\",\n \"transform\",\n];\nconst yamlFieldsInBrick = [\"permissionsPreCheck\", \"transformFrom\"];\nconst ignoredFieldsInBrick = [\n \"brick\",\n \"template\",\n \"portal\",\n \"slots\",\n \"id\",\n \"children\",\n \"instanceId\",\n];\n\nexport interface ReverseNormalizeContext {\n isPortalCanvas: boolean;\n nodeData: {\n type: \"brick\" | \"template\" | \"provider\";\n parent: string;\n mountPoint: string;\n sort: number;\n };\n}\n\n// The reverse operation of *normalize*.\n// https://github.com/easyops-cn/next-basics/blob/5a6710d567821bcb4a0c71e22d55212193d8b0cb/bricks/next-builder/src/shared/storyboard/buildStoryboard.ts#L394\nexport function reverseNormalize(\n brickConf: BrickConf,\n ctx: ReverseNormalizeContext\n): SnippetNodeInstance {\n return Object.fromEntries(\n Object.entries(brickConf)\n .map<[string, unknown]>(([key, value]) =>\n value === undefined || ignoredFieldsInBrick.includes(key)\n ? undefined\n : jsonFieldsInBrick.includes(key)\n ? [key, JSON.stringify(value)]\n : yamlFieldsInBrick.includes(key)\n ? [key, yaml.safeDump(value)]\n : [key, value]\n )\n .filter(Boolean)\n .concat(Object.entries(ctx.nodeData), [\n [\n \"brick\",\n ctx.nodeData.type === \"template\"\n ? brickConf.template\n : brickConf.brick,\n ],\n [\"portal\", ctx.isPortalCanvas || brickConf.portal],\n ])\n ) as SnippetNodeInstance;\n}\n","import { BrickConf, SlotConfOfBricks } from \"@next-core/brick-types\";\nimport { SnippetNodeDetail } from \"../interfaces\";\nimport { getUniqueNodeId } from \"../internal/getUniqueNodeId\";\nimport { reverseNormalize } from \"./reverseNormalize\";\n\nexport function getSnippetNodeDetail({\n parent,\n parentUid,\n mountPoint,\n nodeUid,\n brickConf,\n isPortalCanvas,\n sort,\n}: {\n parent?: string;\n parentUid: number;\n mountPoint: string;\n nodeUid: number;\n brickConf: BrickConf;\n isPortalCanvas?: boolean;\n sort?: number;\n}): SnippetNodeDetail {\n const type = brickConf.template\n ? \"template\"\n : brickConf.bg\n ? \"provider\"\n : \"brick\";\n\n return {\n nodeUid,\n parentUid,\n nodeData: reverseNormalize(brickConf, {\n isPortalCanvas,\n nodeData: {\n type,\n parent,\n mountPoint,\n sort,\n },\n }),\n children: brickConf.slots\n ? Object.entries(brickConf.slots)\n .flatMap(([mountPoint, slotConf]) =>\n (slotConf as SlotConfOfBricks).bricks.map((childBrickConf) => ({\n childBrickConf,\n mountPoint,\n }))\n )\n .map(({ childBrickConf, mountPoint }, index) =>\n getSnippetNodeDetail({\n parentUid: nodeUid,\n mountPoint,\n nodeUid: getUniqueNodeId(),\n brickConf: childBrickConf,\n sort: index,\n })\n )\n : [],\n };\n}\n","import {\n BuilderDataTransferPayloadOfNodeToAdd,\n BuilderDataTransferPayloadOfNodeToMove,\n BuilderDataTransferPayloadOfSnippetToApply,\n BuilderDataTransferType,\n BuilderGroupedChildNode,\n BuilderRuntimeNode,\n} from \"../interfaces\";\nimport { BuilderDataManager } from \"../internal/BuilderDataManager\";\nimport { getUniqueNodeId } from \"../internal/getUniqueNodeId\";\nimport { getSortedIdsAfterDropped } from \"../processors/getSortedIdsAfterDropped\";\nimport { getSnippetNodeDetail } from \"./getSnippetNodeDetail\";\n\nexport interface HandleDropParams {\n manager: BuilderDataManager;\n type: BuilderDataTransferType;\n data:\n | BuilderDataTransferPayloadOfNodeToAdd\n | BuilderDataTransferPayloadOfNodeToMove\n | BuilderDataTransferPayloadOfSnippetToApply;\n droppingIndex: number;\n droppingParentUid: number;\n droppingParentInstanceId: string;\n droppingMountPoint: string;\n droppingChildNodes: BuilderRuntimeNode[];\n droppingSiblingGroups: BuilderGroupedChildNode[];\n isPortalCanvas?: boolean;\n}\n\nexport function processDrop({\n manager,\n type,\n data,\n droppingIndex,\n droppingParentUid,\n droppingParentInstanceId,\n droppingMountPoint,\n droppingChildNodes,\n droppingSiblingGroups,\n isPortalCanvas,\n}: HandleDropParams): void {\n if (type === BuilderDataTransferType.NODE_TO_ADD) {\n // Drag a new node into canvas.\n const { brickType = \"brick\", brick } =\n data as BuilderDataTransferPayloadOfNodeToAdd;\n const draggingNodeUid = getUniqueNodeId();\n manager.nodeAdd({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId: null,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n nodeUid: draggingNodeUid,\n parentUid: droppingParentUid,\n nodeData: {\n parent: droppingParentInstanceId,\n type: brickType,\n brick,\n mountPoint: droppingMountPoint,\n bg: !isPortalCanvas && brickType === \"provider\" ? true : undefined,\n portal: isPortalCanvas,\n },\n });\n } else if (type === BuilderDataTransferType.SNIPPET_TO_APPLY) {\n const { bricks } = data as BuilderDataTransferPayloadOfSnippetToApply;\n // https://stackoverflow.com/questions/5501581/javascript-new-arrayn-and-array-prototype-map-weirdness\n const draggingNodeUids = [...new Array(bricks.length)].map(() =>\n getUniqueNodeId()\n );\n manager.snippetApply({\n ...getSortedIdsAfterDropped({\n draggingNodeUid: draggingNodeUids,\n draggingNodeId: null,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n parentUid: droppingParentUid,\n nodeDetails: bricks.map((brickConf, index) =>\n getSnippetNodeDetail({\n parent: droppingParentInstanceId,\n parentUid: droppingParentUid,\n mountPoint: droppingMountPoint,\n nodeUid: draggingNodeUids[index],\n brickConf,\n isPortalCanvas,\n })\n ),\n });\n } else if (type === BuilderDataTransferType.NODE_TO_MOVE) {\n const {\n nodeUid: draggingNodeUid,\n nodeId: draggingNodeId,\n nodeInstanceId: draggingNodeInstanceId,\n } = data as BuilderDataTransferPayloadOfNodeToMove;\n\n const draggingIndex = droppingChildNodes.findIndex(\n (item) => item.$$uid === draggingNodeUid\n );\n // If found dragging node in the same drop zone,\n // then apply a node reorder, otherwise apply a node move.\n if (draggingIndex >= 0) {\n // If the index is not changed, then there is nothing to do.\n if (\n droppingIndex !== draggingIndex &&\n droppingIndex !== draggingIndex + 1\n ) {\n manager.nodeReorder({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId,\n draggingIndex,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n parentUid: droppingParentUid,\n });\n }\n } else {\n manager.nodeMove({\n ...getSortedIdsAfterDropped({\n draggingNodeUid,\n draggingNodeId,\n droppingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n }),\n nodeUid: draggingNodeUid,\n parentUid: droppingParentUid,\n nodeInstanceId: draggingNodeInstanceId,\n nodeData: {\n parent: droppingParentInstanceId,\n mountPoint: droppingMountPoint,\n },\n });\n }\n }\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\n\nexport function useCanvasList(\n rootChildNodes: BuilderRuntimeNode[]\n): BuilderRuntimeNode[][] {\n return useMemo(() => {\n const mainCanvas: BuilderRuntimeNode[] = [];\n const portalCanvasList: BuilderRuntimeNode[][] = [];\n for (const child of rootChildNodes) {\n if (child.portal) {\n portalCanvasList.push([child]);\n } else {\n mainCanvas.push(child);\n }\n }\n return [mainCanvas, ...portalCanvasList, []];\n }, [rootChildNodes]);\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport { clamp, isEmpty } from \"lodash\";\nimport classNames from \"classnames\";\nimport { DragObjectWithType, useDrop } from \"react-dnd\";\nimport { EditorBrickAsComponent } from \"../EditorBrickAsComponent/EditorBrickAsComponent\";\nimport {\n BuilderCanvasSettings,\n BuilderDataTransferPayloadOfNodeToAdd,\n BuilderDataTransferPayloadOfNodeToMove,\n BuilderDataTransferType,\n BuilderGroupedChildNode,\n BuilderRuntimeNode,\n EditorSlotContentLayout,\n TemplateDelegatedContext,\n} from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport {\n getBuilderGroupedChildNodes,\n useBuilderGroupedChildNodes,\n} from \"../hooks/useBuilderGroupedChildNodes\";\nimport { useCanDrop } from \"../hooks/useCanDrop\";\nimport { DropPositionCursor, getDropPosition } from \"./getDropPosition\";\nimport { processDrop } from \"./processDrop\";\nimport { useBuilderDataManager } from \"../hooks/useBuilderDataManager\";\nimport { useCanvasList } from \"../hooks/useCanvasList\";\nimport { useBuilderData } from \"../hooks/useBuilderData\";\nimport { useBuilderContextMenuStatus } from \"../hooks/useBuilderContextMenuStatus\";\nimport { isCurrentTargetByClassName } from \"../EditorContainer/isCurrentTargetByClassName\";\n\nimport styles from \"./DropZone.module.css\";\n\nexport interface DropZoneProps {\n nodeUid?: number;\n isRoot?: boolean;\n separateCanvas?: boolean;\n isPortalCanvas?: boolean;\n independentPortalCanvas?: boolean;\n canvasIndex?: number;\n mountPoint: string;\n fullscreen?: boolean;\n delegatedContext?: TemplateDelegatedContext;\n dropZoneStyle?: React.CSSProperties;\n dropZoneBodyStyle?: React.CSSProperties;\n slotContentLayout?: EditorSlotContentLayout;\n showOutlineIfEmpty?: boolean;\n hiddenWrapper?: boolean;\n emptyClassName?: string;\n}\n\nexport interface DroppingContext {\n droppingParentUid: number;\n droppingParentInstanceId: string;\n droppingMountPoint: string;\n droppingChildNodes: BuilderRuntimeNode[];\n droppingSiblingGroups: BuilderGroupedChildNode[];\n}\n\nexport function DropZone({\n nodeUid,\n isRoot,\n separateCanvas,\n isPortalCanvas,\n independentPortalCanvas,\n canvasIndex,\n mountPoint,\n fullscreen,\n delegatedContext,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n hiddenWrapper = true,\n emptyClassName,\n}: DropZoneProps): React.ReactElement {\n const dropZoneBody = React.useRef<HTMLDivElement>();\n const [dropPositionCursor, setDropPositionCursor] =\n React.useState<DropPositionCursor>(null);\n const dropPositionCursorRef = React.useRef<DropPositionCursor>();\n const contextMenuStatus = useBuilderContextMenuStatus();\n const manager = useBuilderDataManager();\n const { nodes, edges, wrapperNode } = useBuilderData();\n const isWrapper = hiddenWrapper && isRoot && !isEmpty(wrapperNode);\n const node = useBuilderNode({ nodeUid, isRoot, isWrapper });\n const groupedChildNodes = useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n doNotExpandTemplates: isWrapper,\n isWrapper,\n });\n\n const isGeneralizedPortalCanvas = independentPortalCanvas\n ? canvasIndex > 0\n : isPortalCanvas;\n const hasTabs = separateCanvas || independentPortalCanvas;\n\n const canDrop = useCanDrop();\n const refinedSlotContentLayout =\n slotContentLayout ?? EditorSlotContentLayout.BLOCK;\n\n const selfChildNodes = React.useMemo(\n () =>\n groupedChildNodes.find((group) => group.mountPoint === mountPoint)\n ?.childNodes ?? [],\n [groupedChildNodes, mountPoint]\n );\n\n const canvasList = useCanvasList(selfChildNodes);\n\n const selfChildNodesInCurrentCanvas = React.useMemo(\n () =>\n separateCanvas\n ? selfChildNodes.filter((child) =>\n Boolean(Number(Boolean(isPortalCanvas)) ^ Number(!child.portal))\n )\n : independentPortalCanvas\n ? canvasList[clamp(canvasIndex ?? 0, 0, canvasList.length - 1)]\n : selfChildNodes,\n [\n canvasIndex,\n independentPortalCanvas,\n isPortalCanvas,\n selfChildNodes,\n canvasList,\n separateCanvas,\n ]\n );\n\n const canvasSettings = React.useMemo(\n () =>\n selfChildNodesInCurrentCanvas[0]?.$$parsedProperties\n ._canvas_ as BuilderCanvasSettings,\n [selfChildNodesInCurrentCanvas]\n );\n\n const getDroppingIndexInFullCanvas = React.useCallback(\n (droppingIndexInCurrentCanvas: number) => {\n if (!hasTabs) {\n return droppingIndexInCurrentCanvas;\n }\n if (selfChildNodesInCurrentCanvas.length > 0) {\n const cursorNode =\n selfChildNodesInCurrentCanvas[\n droppingIndexInCurrentCanvas === 0\n ? 0\n : droppingIndexInCurrentCanvas - 1\n ];\n return (\n selfChildNodes.findIndex((child) => child === cursorNode) +\n (droppingIndexInCurrentCanvas === 0 ? 0 : 1)\n );\n }\n return isGeneralizedPortalCanvas ? selfChildNodes.length : 0;\n },\n [\n hasTabs,\n selfChildNodesInCurrentCanvas,\n isGeneralizedPortalCanvas,\n selfChildNodes,\n ]\n );\n\n const getDroppingContext = React.useCallback(() => {\n if (delegatedContext) {\n const siblingGroups = getBuilderGroupedChildNodes({\n nodeUid: delegatedContext.templateUid,\n nodes,\n edges,\n doNotExpandTemplates: true,\n });\n return {\n droppingParentUid: delegatedContext.templateUid,\n droppingParentInstanceId: nodes.find(\n (item) => item.$$uid === delegatedContext.templateUid\n ).instanceId,\n droppingMountPoint: delegatedContext.templateMountPoint,\n droppingChildNodes:\n siblingGroups.find(\n (group) => group.mountPoint === delegatedContext.templateMountPoint\n )?.childNodes ?? [],\n droppingSiblingGroups: siblingGroups,\n };\n }\n return {\n droppingParentUid: node.$$uid,\n droppingParentInstanceId: isWrapper\n ? wrapperNode.instanceId\n : node.instanceId,\n droppingMountPoint: mountPoint,\n droppingChildNodes: selfChildNodes,\n droppingSiblingGroups: groupedChildNodes,\n };\n }, [\n delegatedContext,\n edges,\n groupedChildNodes,\n mountPoint,\n node,\n nodes,\n selfChildNodes,\n isWrapper,\n wrapperNode,\n ]);\n\n const [{ isDraggingOverCurrent }, dropRef] = useDrop({\n accept: [\n BuilderDataTransferType.NODE_TO_ADD,\n BuilderDataTransferType.NODE_TO_MOVE,\n BuilderDataTransferType.SNIPPET_TO_APPLY,\n ],\n canDrop: (\n item: DragObjectWithType &\n (\n | BuilderDataTransferPayloadOfNodeToAdd\n | BuilderDataTransferPayloadOfNodeToMove\n )\n ) =>\n independentPortalCanvas && isGeneralizedPortalCanvas\n ? selfChildNodesInCurrentCanvas.length === 0\n : item.type === BuilderDataTransferType.NODE_TO_ADD ||\n item.type === BuilderDataTransferType.SNIPPET_TO_APPLY ||\n isRoot ||\n canDrop(\n (item as BuilderDataTransferPayloadOfNodeToMove).nodeUid,\n nodeUid\n ),\n collect: (monitor) => ({\n isDraggingOverCurrent:\n monitor.isOver({ shallow: true }) && monitor.canDrop(),\n }),\n hover: (item, monitor) => {\n if (monitor.isOver({ shallow: true }) && monitor.canDrop()) {\n const { x, y } = monitor.getClientOffset();\n dropPositionCursorRef.current = getDropPosition(\n x,\n y,\n dropZoneBody.current.parentElement,\n dropZoneBody.current\n );\n setDropPositionCursor(dropPositionCursorRef.current);\n }\n },\n drop: (item, monitor) => {\n if (!monitor.didDrop()) {\n const { type, ...data } = item;\n processDrop({\n type: type as BuilderDataTransferType,\n data,\n droppingIndex: getDroppingIndexInFullCanvas(\n dropPositionCursorRef.current.index\n ),\n isPortalCanvas: isGeneralizedPortalCanvas,\n manager,\n ...getDroppingContext(),\n });\n }\n },\n });\n\n React.useEffect(() => {\n manager.updateDroppingStatus(\n delegatedContext ? delegatedContext.templateUid : node.$$uid,\n delegatedContext ? delegatedContext.templateMountPoint : mountPoint,\n isDraggingOverCurrent\n );\n }, [isDraggingOverCurrent, mountPoint, manager, delegatedContext, node]);\n\n const droppable =\n !!delegatedContext ||\n isWrapper ||\n !(node.$$isExpandableTemplate || node.$$isTemplateInternalNode);\n\n const dropZoneRef = React.useRef<HTMLElement>();\n\n const dropZoneRefCallback = React.useCallback(\n (element: HTMLElement) => {\n dropZoneRef.current = element;\n if (droppable) {\n dropRef(element);\n }\n },\n [dropRef, droppable]\n );\n\n const handleContextMenu = React.useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (\n !isGeneralizedPortalCanvas &&\n isCurrentTargetByClassName(\n event.target as HTMLElement,\n dropZoneRef.current\n )\n ) {\n event.preventDefault();\n manager.contextMenuChange({\n active: true,\n node,\n x: event.clientX,\n y: event.clientY,\n });\n }\n },\n [isGeneralizedPortalCanvas, manager, node]\n );\n\n return (\n <div\n ref={dropZoneRefCallback}\n className={classNames(\n styles.dropZone,\n isRoot\n ? classNames(\n styles.isRoot,\n canvasSettings?.mode &&\n String(canvasSettings.mode)\n .split(/\\s+/g)\n .map((mode) => styles[`mode-${mode}`]),\n {\n [styles.fullscreen]: fullscreen,\n [styles.hasTabs]: hasTabs,\n }\n )\n : styles.isSlot,\n {\n [styles.isPortalCanvas]: isGeneralizedPortalCanvas,\n [styles.dropping]: isDraggingOverCurrent,\n [styles.active]:\n isRoot &&\n contextMenuStatus.active &&\n contextMenuStatus.node.$$uid === node.$$uid,\n [styles.showOutlineIfEmpty]:\n !isRoot && showOutlineIfEmpty && selfChildNodes.length === 0,\n [styles.slotContentLayoutBlock]:\n refinedSlotContentLayout === EditorSlotContentLayout.BLOCK,\n [styles.slotContentLayoutInline]:\n refinedSlotContentLayout === EditorSlotContentLayout.INLINE,\n [styles.slotContentLayoutGrid]:\n refinedSlotContentLayout === EditorSlotContentLayout.GRID,\n }\n )}\n style={dropZoneStyle}\n onContextMenu={isRoot ? handleContextMenu : null}\n >\n <div\n ref={dropZoneBody}\n className={classNames(\n styles.dropZoneBody,\n selfChildNodesInCurrentCanvas.length === 0 && emptyClassName\n )}\n data-slot-id={mountPoint}\n style={dropZoneBodyStyle}\n >\n {selfChildNodesInCurrentCanvas.map((child) => (\n <EditorBrickAsComponent\n key={child.$$uid}\n node={child}\n slotContentLayout={refinedSlotContentLayout}\n />\n ))}\n </div>\n {\n <div\n className={classNames(\n styles.dropCursor,\n dropPositionCursor?.isVertical\n ? styles.dropCursorVertical\n : styles.dropCursorHorizontal\n )}\n style={{\n top: dropPositionCursor?.y,\n left: dropPositionCursor?.x,\n height: dropPositionCursor?.height,\n }}\n ></div>\n }\n </div>\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React, { useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { DropZone } from \"../DropZone/DropZone\";\nimport { EditorSlotContentLayout } from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport { useDroppingStatus } from \"../hooks/useDroppingStatus\";\n\nimport styles from \"./SlotContainer.module.css\";\n\nexport interface SlotContainerProps {\n nodeUid: number;\n slotName: string;\n slotContainerStyle?: React.CSSProperties;\n dropZoneStyle?: React.CSSProperties;\n dropZoneBodyStyle?: React.CSSProperties;\n slotContentLayout?: EditorSlotContentLayout;\n showOutlineIfEmpty?: boolean;\n emptyClassName?: string;\n}\n\nexport function SlotContainer({\n nodeUid,\n slotName,\n slotContainerStyle,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n emptyClassName,\n}: SlotContainerProps): React.ReactElement {\n const node = useBuilderNode({ nodeUid });\n const droppingStatus = useDroppingStatus();\n\n const delegatedContext = useMemo(() => {\n const delegatedSlots = node.$$delegatedSlots?.get(slotName);\n // Ignore when there are more than one delegated slots on a single slot.\n return delegatedSlots?.length === 1 ? delegatedSlots[0] : null;\n }, [node, slotName]);\n\n return (\n <div\n className={classNames(styles.slotContainer, {\n [styles.dropping]: droppingStatus\n .get(delegatedContext ? delegatedContext.templateUid : nodeUid)\n ?.get(\n delegatedContext ? delegatedContext.templateMountPoint : slotName\n ),\n })}\n style={slotContainerStyle}\n >\n <div className={styles.slotName}>\n {delegatedContext ? delegatedContext.templateMountPoint : slotName}\n </div>\n <DropZone\n nodeUid={nodeUid}\n mountPoint={slotName}\n delegatedContext={delegatedContext}\n dropZoneStyle={dropZoneStyle}\n dropZoneBodyStyle={dropZoneBodyStyle}\n slotContentLayout={slotContentLayout}\n showOutlineIfEmpty={showOutlineIfEmpty}\n emptyClassName={emptyClassName}\n />\n </div>\n );\n}\n","// See https://github.com/react-dnd/react-dnd/blob/main/packages/react-dnd/src/common/DndProvider.tsx\nimport React from \"react\";\nimport {\n BuilderContext,\n ContextOfBuilder,\n createBuilderContext,\n} from \"./BuilderContext\";\n\nexport const BuilderProvider = React.memo(LegacyBuilderProvider);\n\nconst instanceSymbol = Symbol.for(\"__BRICK_NEXT_BUILDER_CONTEXT_INSTANCE__\");\nfunction createSingletonBuilderContext(): ContextOfBuilder {\n const ctx = window as any;\n if (!ctx[instanceSymbol]) {\n ctx[instanceSymbol] = createBuilderContext();\n }\n return ctx[instanceSymbol];\n}\n\nlet refCount = 0;\n\nfunction LegacyBuilderProvider({\n children,\n}: React.PropsWithChildren<any>): React.ReactElement {\n const context = createSingletonBuilderContext();\n\n /**\n * If the global context was used to store the DND context\n * then where theres no more references to it we should\n * clean it up to avoid memory leaks\n */\n React.useEffect(() => {\n refCount++;\n\n return () => {\n refCount--;\n\n if (refCount === 0) {\n (window as any)[instanceSymbol] = null;\n }\n };\n }, []);\n\n return (\n <BuilderContext.Provider value={context}>\n {children}\n </BuilderContext.Provider>\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { UpdatingElement, property, BrickWrapper } from \"@next-core/brick-kit\";\nimport { StoryDoc } from \"@next-core/brick-types\";\nimport { EditorSelfLayout } from \"./interfaces\";\nimport { BuilderProvider } from \"./BuilderProvider\";\n\nexport interface EditorComponentProps {\n nodeUid: number;\n editorProps?: StoryDoc[\"editorProps\"];\n}\n\nexport type EditorComponentType = React.FunctionComponent<EditorComponentProps>;\n\nexport interface EditorBrickElement extends HTMLElement {\n nodeUid: number;\n}\n\nexport interface EditorBrickElementConstructor {\n new (): EditorBrickElement;\n readonly selfLayout: EditorSelfLayout;\n}\n\nexport interface EditorElementOptions {\n brickStyle?: Record<string, string>;\n selfLayout?: EditorSelfLayout;\n}\n\nexport function EditorElementFactory(\n EditorComponent: EditorComponentType,\n options?: EditorElementOptions\n): EditorBrickElementConstructor {\n class NewEditorElement extends UpdatingElement {\n static get selfLayout(): EditorSelfLayout {\n return options?.selfLayout;\n }\n\n @property({ type: Number })\n nodeUid: number;\n\n @property({ attribute: false })\n editorProps: StoryDoc[\"editorProps\"];\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n if (options?.brickStyle) {\n for (const [key, value] of Object.entries(options.brickStyle)) {\n (this.style as unknown as Record<string, string>)[key] = value;\n }\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected && this.nodeUid) {\n ReactDOM.render(\n <BrickWrapper>\n <BuilderProvider>\n <DndProvider backend={HTML5Backend}>\n <EditorComponent\n nodeUid={this.nodeUid}\n editorProps={this.editorProps}\n />\n </DndProvider>\n </BuilderProvider>\n </BrickWrapper>,\n this\n );\n }\n }\n }\n return NewEditorElement;\n}\n","import { createContext, Dispatch, SetStateAction } from \"react\";\n\n// It indicates which mount point of a container is active dropping zone.\ntype DroppingStatus = {\n [mountPoint: string]: boolean;\n};\n\ninterface ContextOfDroppingStatus {\n droppingStatus?: DroppingStatus;\n setDroppingStatus?: Dispatch<SetStateAction<DroppingStatus>>;\n}\n\n// Todo(steve): remove this file.\n/** @deprecated no more usage but for compatibility only. */\nexport const DroppingStatusContext = createContext<ContextOfDroppingStatus>({});\n","import { useMemo } from \"react\";\nimport { sortBy } from \"lodash\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderNodeMountPoints({\n nodeUid,\n isRoot,\n doNotExpandTemplates,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n}): string[] {\n const { rootId, edges } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(() => {\n const mountPoints = new Set<string>();\n const relatedEdges = sortBy(\n edges.filter(\n (edge) =>\n edge.parent === currentUid &&\n (doNotExpandTemplates\n ? !edge.$$isTemplateInternal\n : !edge.$$isTemplateDelegated)\n ),\n [(edge) => edge.sort]\n );\n for (const edge of relatedEdges) {\n mountPoints.add(edge.mountPoint);\n }\n return Array.from(mountPoints);\n }, [currentUid, edges, doNotExpandTemplates]);\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderParentNode(nodeUid: number): BuilderRuntimeNode {\n const { nodes, edges } = useBuilderData();\n return useMemo(() => {\n const parentUid = edges.find(\n (edge) => edge.child === nodeUid && !edge.$$isTemplateExpanded\n ).parent;\n return nodes.find((node) => node.$$uid === parentUid);\n }, [edges, nodeUid, nodes]);\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\nimport { BuilderRouteNode } from \"@next-core/brick-types\";\n\nexport function useRouteList(): BuilderRouteNode[] {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getRouteList());\n useEffect(\n () =>\n manager.onRouteListChange(() => {\n setData(manager.getRouteList());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useActiveNodeUid(): number {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getActiveNodeUid());\n useEffect(\n () =>\n manager.onActiveNodeChange(() => {\n setData(manager.getActiveNodeUid());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useOutlineEnabled(\n nodeInstanceId: string,\n inapplicable?: boolean\n): boolean {\n const manager = useBuilderDataManager();\n const [enabled, setEnabled] = useState(\n inapplicable ? false : manager.isOutlineEnabled(nodeInstanceId)\n );\n useEffect(() => {\n if (!inapplicable) {\n return manager.onOutlineEnabledNodesChange(() => {\n setEnabled(manager.isOutlineEnabled(nodeInstanceId));\n });\n }\n }, [inapplicable, manager, nodeInstanceId]);\n return enabled;\n}\n"],"names":["BuilderDataTransferType","EditorBrickType","EditorSelfLayout","EditorSlotContentLayout","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","window","self","EventTarget","constructor","wm","create","defineProperty","proto","define","type","listener","options","secret","get","listeners","target","event","slice","some","dispatch","currentTarget","splice","set","name","value","configurable","writable","info","once","removeEventListener","handleEvent","_stopImmediatePropagationFlag","WeakMap","uniqueIdCursor","getUniqueNodeId","expandTemplateEdges","nodes","edges","rootId","newEdges","reorderedEdgesMap","walk","uid","callback","node","find","item","$$uid","childEdges","sortBy","filter","edge","parent","sort","child","expandEdgesThroughTemplateChain","mountPoint","childUid","proxySlotConf","delegateToParentUid","$$isExpandableTemplate","$$templateProxy","slots","$$templateRefToUid","ref","nextNode","n","nextMountPoint","refSlot","expandedEdge","undefined","$$isTemplateExpanded","siblingEdges","internalEdges","$$isTemplateInternal","refPosition","clampedRefPosition","clamp","findIndex","forEach","index","childEdge","map","reorderBuilderEdges","parentUid","nodeUids","edgesExcludeExpanded","indexOf","_objectSpread","deleteNodeFromTree","nodeUid","wrapperNode","idsToDelete","Set","collectIdsToDelete","has","add","ids","id","getRelatedNodesBasedOnEvents","rootNodeIsCustomTemplate","nodesMap","Map","targetMap","targetRefMap","upstreamNodes","downstreamNodes","selector","$$matchedSelectors","handlers","isEmpty","$$parsedEvents","values","flat","$$parsedLifeCycle","concat","entries","flatMap","lifeCycleName","lifeCycleConf","messageConf","console","warn","collectRelatedNodes","handler","targetNodeUid","targetRef","targetRefNodeUid","callbackHandlers","nodeIgnoreFields","computationRegExp","getBuilderNode","nodeData","isTemplateInternalNode","matchedSelectors","brick","replace","normalized","normalizeBuilderNode","jsonFieldsInBrick","parsedFields","parsedId","parsedTestId","field","parsed","cloneDeep","upperFirst","tempParsedId","tempParsedTestId","dataset","testid","test","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","BuilderInternalEventType","storageKeyOfOutlineDisabledNodes","BuilderDataManager","_defineProperty","active","JsonStorage","localStorage","localJsonStorage","getItem","getData","data","getContextMenuStatus","contextMenuStatus","getRelatedNodesBasedOnEventsMap","relatedNodesBasedOnEventsMap","sharedEditorListInit","sharedEditorList","eventTarget","dispatchEvent","CustomEvent","SHARED_EDITOR_LIST_CHANGE","getSharedEditorList","onSharedEditorListChange","fn","addEventListener","routeListInit","routeList","ROUTE_LIST_CHANGE","getRouteList","storyListInit","getStoryList","onRouteListChange","dataInit","root","newData","triggerDataChange","rootNode","DATA_CHANGE","runAddNodeAction","detail","addNodes","addEdges","omit","newNodes","updateBrick","redirectMountPoint","instanceId","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","moveMountPoint","orderedMountPoints","childUids","childIds","NODE_REORDER","nodeIds","contextUpdated","context","nodeReorder","nodeDelete","nodeClick","setActiveNodeUid","NODE_CLICK","contextMenuChange","CONTEXT_MENU_CHANGE","onDataChange","onNodeAdd","onSnippetApply","onNodeReorder","onNodeMove","onNodeClick","onContextMenuChange","setShowRelatedNodesBasedOnEvents","show","showRelatedNodesBasedOnEvents","SHOW_RELATED_NODES_BASED_ON_EVENTS","getShowRelatedNodesBasedOnEvents","onShowRelatedNodesBasedOnEventsChange","setHoverNodeUid","hoverNodeUid","HOVER_NODE_CHANGE","getHoverNodeUid","onHoverNodeChange","activeNodeUid","ACTIVE_NODE_CHANGE","getActiveNodeUid","onActiveNodeChange","toggleOutline","nodeInstanceId","outlineDisabledNodes","delete","setItem","from","OUTLINE_DISABLED_NODES_CHANGE","isOutlineEnabled","onOutlineEnabledNodesChange","setHighlightNodes","highlightNodes","HIGHLIGHT_NODES_CHANGE","getHighlightNodes","onHighlightNodesChange","updateDroppingStatus","isDraggingOver","nodeStatus","droppingStatus","DROPPING_STATUS_CHANGE","Boolean","getDroppingStatus","onDroppingStatusChange","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","isRouteNode","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","_asyncToGenerator","editorName","editorError","message","brickConf","editorProps","selfLayout","layout","editorConstructor","CONTAINER","INLINE","isDragging","dragRef","useDrag","NODE_TO_MOVE","nodeId","dropEffect","collect","monitor","slotContentLayoutBlock","BLOCK","slotContentLayoutInline","selfLayoutInline","selfLayoutBlock","selfLayoutContainer","dragging","__isTemplateInternalNode","baseView","BrickAsComponent","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","childNode","childNodes","useCanDrop","draggingUid","traverse","parentId","defaultGapHalf","getDropPositions","dropZone","dropZoneGrid","zoneRect","getBoundingClientRect","positions","gridItemList","currentRow","cells","rows","gridItem","rect","cell","top","bottom","left","right","prevCell","compareApproximately","Math","min","max","lastRectBottom","nextCursorTop","row","rowIndex","rectBottom","cursor","nextRow","lastRectRight","nextCursorLeft","cursorDefault","isVertical","height","cellIndex","rectRight","getDropPosition","a","b","diff","abs","getSortedIdsAfterDropped","droppingInfo","draggingNodeUid","draggingNodeId","draggingIndex","droppingMountPoint","droppingSiblingGroups","droppingIndex","draggingNodeUids","fullChildNodes","group","uids","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","ctx","stringify","yaml","safeDump","template","isPortalCanvas","portal","getSnippetNodeDetail","bg","bricks","childBrickConf","processDrop","droppingParentUid","droppingParentInstanceId","droppingChildNodes","NODE_TO_ADD","brickType","SNIPPET_TO_APPLY","draggingNodeInstanceId","useCanvasList","rootChildNodes","mainCanvas","portalCanvasList","DropZone","separateCanvas","independentPortalCanvas","canvasIndex","fullscreen","delegatedContext","dropZoneStyle","dropZoneBodyStyle","showOutlineIfEmpty","hiddenWrapper","emptyClassName","dropZoneBody","dropPositionCursor","setDropPositionCursor","dropPositionCursorRef","groupedChildNodes","isGeneralizedPortalCanvas","hasTabs","canDrop","refinedSlotContentLayout","selfChildNodes","canvasList","selfChildNodesInCurrentCanvas","Number","canvasSettings","_canvas_","getDroppingIndexInFullCanvas","droppingIndexInCurrentCanvas","getDroppingContext","siblingGroups","isDraggingOverCurrent","dropRef","useDrop","accept","isOver","shallow","getClientOffset","drop","didDrop","droppable","dropZoneRef","dropZoneRefCallback","mode","String","isSlot","slotContentLayoutGrid","GRID","dropCursor","dropCursorVertical","dropCursorHorizontal","SlotContainer","slotContainerStyle","delegatedSlots","slotContainer","BuilderProvider","memo","LegacyBuilderProvider","instanceSymbol","Symbol","for","createSingletonBuilderContext","refCount","EditorElementFactory","EditorComponent","NewEditorElement","_decorate","property","attribute","display","brickStyle","_render","ReactDOM","unmountComponentAtNode","isConnected","render","BrickWrapper","DndProvider","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","useBuilderParentNode","useRouteList","useActiveNodeUid","useOutlineEnabled","inapplicable","enabled","setEnabled"],"mappings":"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"}