@next-dll/editor-bricks-helper 0.23.56 → 0.23.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [0.23.
|
|
6
|
+
## [0.23.60](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.59...@next-dll/editor-bricks-helper@0.23.60) (2021-12-17)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
9
9
|
|
|
@@ -11,142 +11,90 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
## [0.23.
|
|
14
|
+
## [0.23.59](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.58...@next-dll/editor-bricks-helper@0.23.59) (2021-12-15)
|
|
15
15
|
|
|
16
16
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
17
17
|
|
|
18
|
+
## [0.23.58](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.57...@next-dll/editor-bricks-helper@0.23.58) (2021-12-13)
|
|
18
19
|
|
|
20
|
+
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
19
21
|
|
|
22
|
+
## [0.23.57](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.56...@next-dll/editor-bricks-helper@0.23.57) (2021-12-09)
|
|
20
23
|
|
|
24
|
+
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
21
25
|
|
|
22
|
-
## [0.23.
|
|
26
|
+
## [0.23.56](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.55...@next-dll/editor-bricks-helper@0.23.56) (2021-12-06)
|
|
23
27
|
|
|
24
28
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
25
29
|
|
|
30
|
+
## [0.23.55](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.54...@next-dll/editor-bricks-helper@0.23.55) (2021-12-06)
|
|
26
31
|
|
|
32
|
+
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
27
33
|
|
|
34
|
+
## [0.23.54](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.53...@next-dll/editor-bricks-helper@0.23.54) (2021-12-05)
|
|
28
35
|
|
|
36
|
+
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
29
37
|
|
|
30
38
|
## [0.23.53](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.52...@next-dll/editor-bricks-helper@0.23.53) (2021-12-03)
|
|
31
39
|
|
|
32
40
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
33
41
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
42
|
## [0.23.52](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.51...@next-dll/editor-bricks-helper@0.23.52) (2021-12-03)
|
|
39
43
|
|
|
40
44
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
41
45
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
46
|
## [0.23.51](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.50...@next-dll/editor-bricks-helper@0.23.51) (2021-12-01)
|
|
47
47
|
|
|
48
48
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
50
|
## [0.23.50](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.49...@next-dll/editor-bricks-helper@0.23.50) (2021-11-29)
|
|
55
51
|
|
|
56
52
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
57
53
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
54
|
## [0.23.49](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.48...@next-dll/editor-bricks-helper@0.23.49) (2021-11-26)
|
|
63
55
|
|
|
64
56
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
65
57
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
58
|
## [0.23.48](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.47...@next-dll/editor-bricks-helper@0.23.48) (2021-11-25)
|
|
71
59
|
|
|
72
60
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
73
61
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
62
|
## [0.23.47](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.46...@next-dll/editor-bricks-helper@0.23.47) (2021-11-25)
|
|
79
63
|
|
|
80
64
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
81
65
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
66
|
## [0.23.46](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.45...@next-dll/editor-bricks-helper@0.23.46) (2021-11-25)
|
|
87
67
|
|
|
88
68
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
89
69
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
70
|
## [0.23.45](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.44...@next-dll/editor-bricks-helper@0.23.45) (2021-11-25)
|
|
95
71
|
|
|
96
72
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
97
73
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
74
|
## [0.23.44](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.43...@next-dll/editor-bricks-helper@0.23.44) (2021-11-23)
|
|
103
75
|
|
|
104
76
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
105
77
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
78
|
## [0.23.43](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.42...@next-dll/editor-bricks-helper@0.23.43) (2021-11-23)
|
|
111
79
|
|
|
112
80
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
113
81
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
82
|
## [0.23.42](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.41...@next-dll/editor-bricks-helper@0.23.42) (2021-11-23)
|
|
119
83
|
|
|
120
84
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
121
85
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
86
|
## [0.23.41](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.40...@next-dll/editor-bricks-helper@0.23.41) (2021-11-19)
|
|
127
87
|
|
|
128
88
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
129
89
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
90
|
## [0.23.40](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.39...@next-dll/editor-bricks-helper@0.23.40) (2021-11-18)
|
|
135
91
|
|
|
136
92
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
137
93
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
94
|
## [0.23.39](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.38...@next-dll/editor-bricks-helper@0.23.39) (2021-11-18)
|
|
143
95
|
|
|
144
96
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
145
97
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
98
|
## [0.23.38](https://github.com/easyops-cn/next-core/compare/@next-dll/editor-bricks-helper@0.23.37...@next-dll/editor-bricks-helper@0.23.38) (2021-11-16)
|
|
151
99
|
|
|
152
100
|
**Note:** Version bump only for package @next-dll/editor-bricks-helper
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://[name]/dll-of-editor-bricks-helper.682fa293.js"],"names":["DllOfEditorBricksHelper","modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","/8r5","DllOfReactDnd","0","3tO9","A+yw","ACCw","IYwU","LvDl","QILm","WnDu","__webpack_exports__","BuilderDataTransferType","BuilderProvider","DropZone","DroppingStatusContext","EditorBrickType","EditorContainer","EditorElementFactory","EditorSelfLayout","EditorSlotContentLayout","SlotContainer","getSortedIdsAfterDropped","useBuilderContextMenuStatus","useBuilderData","useBuilderDataManager","useBuilderGroupedChildNodes","useBuilderNode","useBuilderNodeMountPoints","useBuilderParentNode","useCanDrop","useCanvasList","useHighlightNodes","useHoverNodeUid","useOutlineEnabled","useRouteList","useShowRelatedNodesBasedOnEvents","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","_babel_runtime_helpers_objectSpread2__WEBPACK_IMPORTED_MODULE_1__","_babel_runtime_helpers_objectSpread2__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","lodash__WEBPACK_IMPORTED_MODULE_3__","_next_core_brick_utils__WEBPACK_IMPORTED_MODULE_4__","_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_5__","_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_5___default","react_dnd__WEBPACK_IMPORTED_MODULE_6__","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_7__","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_7___default","_next_core_brick_kit__WEBPACK_IMPORTED_MODULE_8__","js_yaml__WEBPACK_IMPORTED_MODULE_9__","js_yaml__WEBPACK_IMPORTED_MODULE_9___default","_babel_runtime_helpers_decorate__WEBPACK_IMPORTED_MODULE_10__","_babel_runtime_helpers_decorate__WEBPACK_IMPORTED_MODULE_10___default","react_dom__WEBPACK_IMPORTED_MODULE_11__","react_dom__WEBPACK_IMPORTED_MODULE_11___default","react_dnd_html5_backend__WEBPACK_IMPORTED_MODULE_12__","classnames","hasOwn","classNames","classes","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","join","default","window","self","EventTarget","constructor","wm","proto","set","this","define","target","configurable","writable","dispatch","info","options","once","removeEventListener","type","listener","handleEvent","_stopImmediatePropagationFlag","secret","listeners","event","slice","some","currentTarget","splice","WeakMap","EventTarget$1","uniqueIdCursor","getUniqueNodeId","expandTemplateEdges","_ref","nodes","edges","rootId","newEdges","reorderedEdgesMap","walk","uid","callback","node","find","item","$$uid","childEdges","filter","edge","parent","sort","child","expandEdgesThroughTemplateChain","mountPoint","childUid","_node$$$templateProxy","proxySlotConf","delegateToParentUid","$$isExpandableTemplate","$$templateProxy","slots","$$templateRefToUid","ref","nextNode","nextMountPoint","refSlot","_proxySlotConf$refPos","expandedEdge","undefined","$$isTemplateExpanded","siblingEdges","_reorderedEdgesMap$ge","internalEdges","$$isTemplateInternal","refPosition","clampedRefPosition","findIndex","forEach","index","childEdge","map","reorderBuilderEdges","_ref2","parentUid","nodeUids","indexOf","deleteNodeFromTree","nodeUid","idsToDelete","Set","collectIdsToDelete","add","ids","id","has","collectRelatedNodes","handlers","nodesMap","targetMap","targetRefMap","handler","targetNodeUid","downstreamNodes","upstreamNodes","targetRef","targetRefNodeUid","callbackHandlers","values","concat","BuilderInternalEventType","nodeIgnoreFields","getBuilderNode","nodeData","isTemplateInternalNode","_nodeData$alias","matchedSelectors","brick","replace","normalized","parsedFields","field","parsed","test","fromEntries","entries","entry","includes","alias","split","pop","getAppendingNodesAndEdges","templateSourceMap","storyList","currentUid","processedTemplateSet","inheritedTemplateRefToUid","_templateSource$child","_storyList$find","_templateSource$child2","templateSource","builderNode","startsWith","children","storyId","originData","proxy","JSON","parse","templateRefToUid","Map","_item$sort","Infinity","$$isTemplateInternalNode","processDelegatingSlots","cursorNode","rootMountPoint","_cursorNode$$$templat","_cursorNode$$$templat2","slotEntries","_loop","slotName","slotConf","refUid","refNode","$$delegatedSlots","delegatedSlotsByRefSlot","templateUid","templateMountPoint","processDelegatingProperties","previousPropertyName","_cursorNode$$$templat3","properties","_cursorNode$$$templat4","propertyEntries","propertyName","propertyConf","$$parsedProperties","isBasicRefProperty","propertyValue","refProperty","overrideChildrenMountPoint","_item$sort2","_overrideChildrenMoun","$$isTemplateDelegated","propRef","isParentExpandableTemplate","BuilderDataManager","[object Object]","_this$localJsonStorag","active","localStorage","localJsonStorage","getItem","detail","data","addNodes","addEdges","getStoryList","newData","triggerDataChange","contextMenuStatus","relatedNodesBasedOnEventsMap","sharedEditorList","eventTarget","dispatchEvent","CustomEvent","SHARED_EDITOR_LIST_CHANGE","_this$sharedEditorLis","fn","addEventListener","routeList","ROUTE_LIST_CHANGE","_this$routeList","root","rootNodeIsCustomTemplate","selector","$$matchedSelectors","$$parsedEvents","flat","$$parsedLifeCycle","flatMap","lifeCycleName","lifeCycleConf","messageConf","console","warn","getRelatedNodesBasedOnEvents","DATA_CHANGE","runAddNodeAction","NODE_ADD","instanceId","nodeDetails","newNodes","appendingNodes","appendingEdges","SNIPPET_APPLY","flattenNodeDetails","found","NODE_MOVE","context","NODE_REORDER","NODE_CLICK","CONTEXT_MENU_CHANGE","show","showRelatedNodesBasedOnEvents","SHOW_RELATED_NODES_BASED_ON_EVENTS","hoverNodeUid","HOVER_NODE_CHANGE","nodeInstanceId","outlineDisabledNodes","delete","setItem","from","OUTLINE_DISABLED_NODES_CHANGE","highlightNodes","HIGHLIGHT_NODES_CHANGE","isDraggingOver","nodeStatus","droppingStatus","DROPPING_STATUS_CHANGE","Boolean","setHoverNodeUid","BuilderContext","a","createContext","manager","useContext","Error","setData","getData","onDataChange","isRoot","status","setStatus","getContextMenuStatus","onContextMenuChange","getShowRelatedNodesBasedOnEvents","onShowRelatedNodesBasedOnEventsChange","styleInject","css","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","styles$3","editorContainer","nodeAlias","highlight","hover","dropping","editorBody","transparentContainer","isUpstreamNode","isDownstreamNode","arrow","isCurrentTargetByClassName","targetElement","currentElement","element","classList","contains","parentElement","getHoverNodeUid","onHoverNodeChange","getHighlightNodes","onHighlightNodesChange","useDroppingStatus","setDroppingStatus","getDroppingStatus","onDroppingStatusChange","_droppingStatus$get$v","_droppingStatus$get","isTransparentContainer","editorContainerStyle","editorBodyStyle","editorContainerRef","setIsUpstreamNode","setIsDownstreamNode","showRelatedEvents","setHover","editorType","DEFAULT","hoverNodeUidRef","current","handleMouseOver","stopPropagation","handleMouseOut","_relatedNodes$get","_relatedNodes$get2","relatedNodes","getRelatedNodesBasedOnEventsMap","_isUpstreamNode","_isDownstreamNode","isCurrentTarget","handleClick","nodeClick","handleContextMenu","preventDefault","contextMenuChange","x","clientX","y","clientY","className","onClick","onContextMenu","_getEditorBrick","editor","tryEditorBricks","editorBrick","loadEditorBricks","error","customElements","styles$2","EditorBrickAsComponent","slotContentLayout","initialized","setInitialized","useState","setEditorBrick","loadEditorError","setLoadEditorError","hasChildren","useMemo","installedBricksEnabled","getFeatureFlags","brickDoc","doc","getBrickDoc","editorMap","getSharedEditorMap","getSharedEditorList","conf","onSharedEditorListChange","useSharedEditorMap","editorConf","useEffect","editorName","editorError","_x","_x2","getEditorBrick","message","brickConf","editorProps","selfLayout","_layout","layout","CONTAINER","INLINE","isDragging","dragRef","NODE_TO_MOVE","nodeId","dropEffect","collect","monitor","BLOCK","__isTemplateInternalNode","draggable","useBrick","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","relatedEdges","childNode","_ref3","childNodes","draggingUid","traverse","parentId","getDropPosition","dropZone","dropZoneGrid","positions","zoneRect","getBoundingClientRect","gridItemList","currentRow","cells","rows","gridItem","_currentRow$top","_currentRow$bottom","rect","cell","top","bottom","left","right","prevCell","compareApproximately","Math","min","max","lastRectBottom","nextCursorTop","row","rowIndex","rectBottom","cursor","nextRow","_rectBottom","lastRectRight","nextCursorLeft","_rectBottom2","cursorDefault","isVertical","height","cellIndex","rectRight","getDropPositions","b","diff","abs","droppingInfo","draggingNodeUid","draggingNodeId","draggingIndex","droppingMountPoint","droppingSiblingGroups","droppingIndex","draggingNodeUids","fullChildNodes","group","uids","nodeIds","jsonFieldsInBrick","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","ctx","stringify","safeDump","template","isPortalCanvas","portal","processDrop","droppingParentUid","droppingParentInstanceId","droppingChildNodes","NODE_TO_ADD","brickType","nodeAdd","bg","SNIPPET_TO_APPLY","bricks","snippetApply","getSnippetNodeDetail","childBrickConf","_draggingNodeUid","draggingNodeInstanceId","nodeReorder","nodeMove","rootChildNodes","mainCanvas","portalCanvasList","styles$1","isSlot","showOutlineIfEmpty","dropZoneBody","fullscreen","hasTabs","slotContentLayoutBlock","slotContentLayoutInline","slotContentLayoutGrid","mode-dialog","mode-large","mode-small","mode-drawer","dropCursor","dropCursorHorizontal","dropCursorVertical","_excluded","separateCanvas","independentPortalCanvas","canvasIndex","delegatedContext","dropZoneStyle","dropZoneBodyStyle","useRef","dropPositionCursor","setDropPositionCursor","dropPositionCursorRef","groupedChildNodes","isGeneralizedPortalCanvas","canDrop","refinedSlotContentLayout","selfChildNodes","_groupedChildNodes$fi","_groupedChildNodes$fi2","canvasList","selfChildNodesInCurrentCanvas","Number","canvasSettings","_selfChildNodesInCurr","_canvas_","getDroppingIndexInFullCanvas","useCallback","droppingIndexInCurrentCanvas","getDroppingContext","_siblingGroups$find$c","_siblingGroups$find","siblingGroups","isDraggingOverCurrent","dropRef","accept","isOver","shallow","getClientOffset","drop","didDrop","updateDroppingStatus","droppable","dropZoneRef","dropZoneRefCallback","String","GRID","styles","slotContainerStyle","_node$$$delegatedSlot","delegatedSlots","memo","LegacyBuilderProvider","instanceSymbol","for","createSingletonBuilderContext","refCount","Provider","EditorComponent","_initialize","_UpdatingElement","F","super","kind","static","decorators","attribute","display","brickStyle","_render","unmountComponentAtNode","isConnected","render","backend","mountPoints","getRouteList","onRouteListChange","inapplicable","enabled","setEnabled","isOutlineEnabled","onOutlineEnabledNodesChange","XuQu","dll","ZR4k","i8i4","lSNA","q1tI","qJlv","tYg3","yXPU"],"mappings":"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","file":"dll-of-editor-bricks-helper.77e2477a.js","sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://[name]/webpack/bootstrap","webpack://[name]/external \"DllOfReactDnd\"","webpack://[name]/delegated ./node_modules/@babel/runtime/helpers/objectSpread2.js from dll-reference dll","webpack://[name]/delegated ./node_modules/@next-core/brick-utils/dist/index.esm.js from dll-reference dll","webpack://[name]/delegated ./node_modules/@babel/runtime/helpers/decorate.js from dll-reference dll","webpack://[name]/delegated ./node_modules/react-dnd/dist/esm/index.js from dll-reference DllOfReactDnd","webpack://[name]/delegated ./node_modules/lodash/lodash.js from dll-reference dll","webpack://[name]/delegated ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js from dll-reference dll","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/interfaces.ts","webpack://[name]/./node_modules/node_modules/classnames/index.js","webpack://[name]/./node_modules/node_modules/@ungap/event-target/esm/index.js","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/internal/getUniqueNodeId.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/internal/expandTemplateEdges.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/internal/reorderBuilderEdges.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/internal/deleteNodeFromTree.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/processors/getRelatedNodesBasedOnEvents.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/internal/getBuilderNode.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/internal/BuilderDataManager.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/internal/getAppendingNodesAndEdges.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/internal/isParentExpandableTemplate.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/BuilderContext.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useBuilderDataManager.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useBuilderData.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useBuilderNode.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useBuilderContextMenuStatus.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useShowRelatedNodesBasedOnEvents.ts","webpack://[name]/./node_modules/node_modules/style-inject/dist/style-inject.es.js","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/EditorContainer/isCurrentTargetByClassName.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useHoverNodeUid.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useHighlightNodes.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useDroppingStatus.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/EditorContainer/EditorContainer.tsx","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/EditorBrickAsComponent/getEditorBrick.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/EditorBrickAsComponent/EditorBrickAsComponent.tsx","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useStoryList.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/EditorBrickAsComponent/getBrickDoc.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useSharedEditorMap.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useBuilderGroupedChildNodes.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useCanDrop.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/DropZone/getDropPosition.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/processors/getSortedIdsAfterDropped.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/DropZone/reverseNormalize.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/DropZone/processDrop.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/DropZone/getSnippetNodeDetail.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useCanvasList.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/DropZone/DropZone.tsx","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/SlotContainer/SlotContainer.tsx","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/BuilderProvider.tsx","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/EditorElementFactory.tsx","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/DroppingStatusContext.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useBuilderNodeMountPoints.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useBuilderParentNode.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useRouteList.ts","webpack://[name]/./node_modules/@next-core/editor-bricks-helper/src/hooks/useOutlineEnabled.ts","webpack://[name]/external \"dll\"","webpack://[name]/delegated ./node_modules/js-yaml/index.js from dll-reference dll","webpack://[name]/delegated ./node_modules/react-dom/index.js from dll-reference dll","webpack://[name]/delegated ./node_modules/@babel/runtime/helpers/defineProperty.js from dll-reference dll","webpack://[name]/delegated ./node_modules/react/index.js from dll-reference DllOfReactDnd","webpack://[name]/delegated ./node_modules/react-dnd-html5-backend/dist/esm/index.js from dll-reference DllOfReactDnd","webpack://[name]/delegated ./node_modules/@next-core/brick-kit/dist/index.esm.js from dll-reference dll","webpack://[name]/delegated ./node_modules/@babel/runtime/helpers/asyncToGenerator.js from dll-reference dll"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","DllOfReactDnd","BuilderDataTransferType","EditorBrickType","EditorSelfLayout","EditorSlotContentLayout","hasOwn","classNames","classes","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","join","default","window","self","EventTarget","constructor","wm","proto","set","this","define","target","configurable","writable","dispatch","info","options","once","removeEventListener","type","listener","handleEvent","_stopImmediatePropagationFlag","secret","listeners","event","slice","some","currentTarget","splice","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","nextMountPoint","refSlot","expandedEdge","undefined","$$isTemplateExpanded","siblingEdges","internalEdges","$$isTemplateInternal","refPosition","clampedRefPosition","clamp","findIndex","forEach","index","childEdge","map","reorderBuilderEdges","parentUid","nodeUids","indexOf","deleteNodeFromTree","nodeUid","idsToDelete","Set","collectIdsToDelete","add","ids","id","has","collectRelatedNodes","handlers","nodesMap","targetMap","targetRefMap","handler","targetNodeUid","downstreamNodes","upstreamNodes","targetRef","targetRefNodeUid","callbackHandlers","values","concat","BuilderInternalEventType","nodeIgnoreFields","getBuilderNode","nodeData","isTemplateInternalNode","matchedSelectors","brick","replace","normalized","normalizeBuilderNode","parsedFields","field","parsed","cloneDeep","upperFirst","test","fromEntries","entries","entry","includes","alias","isBrickNode","split","pop","getAppendingNodesAndEdges","templateSourceMap","storyList","currentUid","processedTemplateSet","inheritedTemplateRefToUid","templateSource","builderNode","startsWith","children","storyId","originData","proxy","JSON","parse","templateRefToUid","Map","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","BuilderDataManager","active","JsonStorage","localStorage","localJsonStorage","getItem","detail","data","addNodes","addEdges","omit","getStoryList","newData","triggerDataChange","getData","getContextMenuStatus","contextMenuStatus","getRelatedNodesBasedOnEventsMap","relatedNodesBasedOnEventsMap","sharedEditorListInit","sharedEditorList","eventTarget","dispatchEvent","CustomEvent","SHARED_EDITOR_LIST_CHANGE","getSharedEditorList","onSharedEditorListChange","fn","addEventListener","routeListInit","routeList","ROUTE_LIST_CHANGE","getRouteList","storyListInit","onRouteListChange","dataInit","root","rootNodeIsCustomTemplate","selector","$$matchedSelectors","isEmpty","$$parsedEvents","flat","$$parsedLifeCycle","flatMap","lifeCycleName","lifeCycleConf","messageConf","console","warn","getRelatedNodesBasedOnEvents","DATA_CHANGE","updateBrick","runAddNodeAction","nodeAdd","NODE_ADD","nodeAddStored","instanceId","snippetApply","nodeDetails","newNodes","appendingNodes","appendingEdges","SNIPPET_APPLY","snippetApplyStored","flattenNodeDetails","found","nodeMove","NODE_MOVE","contextUpdated","context","nodeReorder","NODE_REORDER","nodeDelete","nodeClick","NODE_CLICK","contextMenuChange","CONTEXT_MENU_CHANGE","onDataChange","onNodeAdd","onSnippetApply","onNodeReorder","onNodeMove","onNodeClick","onContextMenuChange","setShowRelatedNodesBasedOnEvents","show","showRelatedNodesBasedOnEvents","SHOW_RELATED_NODES_BASED_ON_EVENTS","getShowRelatedNodesBasedOnEvents","onShowRelatedNodesBasedOnEventsChange","setHoverNodeUid","hoverNodeUid","HOVER_NODE_CHANGE","getHoverNodeUid","onHoverNodeChange","toggleOutline","nodeInstanceId","outlineDisabledNodes","delete","setItem","from","OUTLINE_DISABLED_NODES_CHANGE","isOutlineEnabled","onOutlineEnabledNodesChange","setHighlightNodes","highlightNodes","HIGHLIGHT_NODES_CHANGE","getHighlightNodes","onHighlightNodesChange","updateDroppingStatus","isDraggingOver","nodeStatus","droppingStatus","DROPPING_STATUS_CHANGE","Boolean","getDroppingStatus","onDroppingStatusChange","BuilderContext","React","createContext","useBuilderDataManager","manager","useContext","Error","useBuilderData","setData","useState","useEffect","useBuilderNode","isRoot","useMemo","useBuilderContextMenuStatus","status","setStatus","useShowRelatedNodesBasedOnEvents","styleInject","css","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","isCurrentTargetByClassName","targetElement","currentElement","element","classList","contains","editorContainerStyles","editorContainer","parentElement","useHoverNodeUid","useHighlightNodes","useDroppingStatus","setDroppingStatus","EditorContainer","isTransparentContainer","editorContainerStyle","editorBodyStyle","editorContainerRef","useRef","isUpstreamNode","setIsUpstreamNode","isDownstreamNode","setIsDownstreamNode","showRelatedEvents","hover","setHover","editorType","DEFAULT","hoverNodeUidRef","current","handleMouseOver","useCallback","stopPropagation","handleMouseOut","relatedNodes","isCurrentTarget","handleClick","handleContextMenu","preventDefault","x","clientX","y","clientY","className","styles","transparentContainer","dropping","highlight","onClick","onContextMenu","nodeAlias","arrow","editorBody","editor","tryEditorBricks","isRouteNode","editorBrick","developHelper","loadEditorBricks","error","customElements","EditorBrickAsComponent","slotContentLayout","initialized","setInitialized","setEditorBrick","loadEditorError","setLoadEditorError","hasChildren","installedBricksEnabled","getRuntime","getFeatureFlags","brickDoc","doc","getBrickDoc","editorMap","getSharedEditorMap","conf","useSharedEditorMap","editorConf","editorName","editorError","getEditorBrick","message","brickConf","editorProps","selfLayout","layout","CONTAINER","INLINE","isDragging","dragRef","useDrag","NODE_TO_MOVE","nodeId","dropEffect","collect","monitor","BLOCK","__isTemplateInternalNode","draggable","useBrick","useBuilderGroupedChildNodes","doNotExpandTemplates","getBuilderGroupedChildNodes","groups","relatedEdges","childNode","childNodes","useCanDrop","draggingUid","traverse","parentId","getDropPosition","dropZone","dropZoneGrid","positions","zoneRect","getBoundingClientRect","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","getDropPositions","a","b","diff","abs","getSortedIdsAfterDropped","droppingInfo","draggingNodeUid","draggingNodeId","draggingIndex","droppingMountPoint","droppingSiblingGroups","droppingIndex","draggingNodeUids","fullChildNodes","group","uids","nodeIds","jsonFieldsInBrick","yamlFieldsInBrick","ignoredFieldsInBrick","reverseNormalize","ctx","stringify","yaml","safeDump","template","isPortalCanvas","portal","processDrop","droppingParentUid","droppingParentInstanceId","droppingChildNodes","NODE_TO_ADD","brickType","bg","SNIPPET_TO_APPLY","bricks","getSnippetNodeDetail","childBrickConf","draggingNodeInstanceId","useCanvasList","rootChildNodes","mainCanvas","portalCanvasList","DropZone","separateCanvas","independentPortalCanvas","canvasIndex","fullscreen","delegatedContext","dropZoneStyle","dropZoneBodyStyle","showOutlineIfEmpty","dropZoneBody","dropPositionCursor","setDropPositionCursor","dropPositionCursorRef","groupedChildNodes","isGeneralizedPortalCanvas","hasTabs","canDrop","refinedSlotContentLayout","selfChildNodes","canvasList","selfChildNodesInCurrentCanvas","Number","canvasSettings","_canvas_","getDroppingIndexInFullCanvas","droppingIndexInCurrentCanvas","getDroppingContext","siblingGroups","isDraggingOverCurrent","dropRef","useDrop","accept","isOver","shallow","getClientOffset","drop","didDrop","droppable","dropZoneRef","dropZoneRefCallback","String","isSlot","slotContentLayoutBlock","slotContentLayoutInline","slotContentLayoutGrid","GRID","dropCursor","dropCursorVertical","dropCursorHorizontal","SlotContainer","slotContainerStyle","delegatedSlots","BuilderProvider","memo","LegacyBuilderProvider","instanceSymbol","for","createSingletonBuilderContext","refCount","Provider","EditorElementFactory","EditorComponent","attribute","display","brickStyle","_render","ReactDOM","unmountComponentAtNode","isConnected","render","backend","HTML5Backend","UpdatingElement","DroppingStatusContext","useBuilderNodeMountPoints","mountPoints","useBuilderParentNode","useRouteList","useOutlineEnabled","inapplicable","enabled","setEnabled","dll"],"mappings":"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","file":"dll-of-editor-bricks-helper.77e2477a.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","module.exports = DllOfReactDnd;","module.exports = (__webpack_require__(\"XuQu\"))(\"3tO9\");","module.exports = (__webpack_require__(\"XuQu\"))(\"A+yw\");","module.exports = (__webpack_require__(\"XuQu\"))(\"ACCw\");","module.exports = (__webpack_require__(\"/8r5\"))(\"IYwU\");","module.exports = (__webpack_require__(\"XuQu\"))(\"LvDl\");","module.exports = (__webpack_require__(\"XuQu\"))(\"QILm\");","import {\n BrickEventsMap,\n BuilderRouteOrBrickNode,\n CustomTemplateProxy,\n ContextConf,\n BuilderRouteNode,\n BrickLifeCycle,\n BrickConf,\n RouteConf,\n} from \"@next-core/brick-types\";\n\nexport interface BuilderCanvasData {\n rootId: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n}\n\nexport interface BuilderCanvasSettings {\n mode: \"page\" | \"dialog\";\n}\n\nexport type BuilderRuntimeNode<P = Record<string, unknown>> =\n BuilderRouteOrBrickNode & {\n $$uid?: number;\n $$parsedProperties?: P;\n $$parsedEvents?: BrickEventsMap;\n $$parsedLifeCycle?: BrickLifeCycle;\n $$matchedSelectors?: string[];\n $$isTemplateInternalNode?: boolean;\n $$isExpandableTemplate?: boolean;\n $$templateProxy?: CustomTemplateProxy;\n $$templateRefToUid?: Map<string, number>;\n $$delegatedSlots?: Map<string, TemplateDelegatedContext[]>;\n $$normalized?: BrickConf | RouteConf | null;\n };\n\nexport interface BuilderRuntimeEdge {\n child: number;\n parent: number;\n mountPoint: string;\n sort: number;\n $$isTemplateInternal?: boolean;\n $$isTemplateDelegated?: boolean;\n $$isTemplateExpanded?: boolean;\n}\n\nexport interface TemplateDelegatedContext {\n templateUid: number;\n templateMountPoint: string;\n}\n\nexport interface BuilderGroupedChildNode {\n mountPoint: string;\n childNodes: BuilderRuntimeNode[];\n}\n\nexport interface EventDetailOfNodeAdd {\n nodeUid: number;\n parentUid: number;\n nodeUids: number[];\n nodeIds: string[];\n nodeData: NodeInstance;\n}\n\nexport interface EventDetailOfContextUpdated {\n context: ContextConf[];\n}\n\nexport interface NodeInstance {\n parent: string;\n type: \"brick\" | \"provider\" | \"template\";\n brick: string;\n mountPoint: string;\n bg?: boolean;\n portal?: boolean;\n properties?: string;\n events?: string;\n lifeCycle?: string;\n sort?: number;\n}\n\nexport interface EventDetailOfNodeAddStored {\n nodeUid: number;\n nodeData: BuilderRouteOrBrickNode;\n}\n\nexport interface EventDetailOfSnippetApply {\n parentUid: number;\n /** First level node only. */\n nodeUids: number[];\n /** First level node only. */\n nodeIds: string[];\n nodeDetails: SnippetNodeDetail[];\n}\n\nexport interface SnippetNodeDetail {\n nodeUid: number;\n parentUid: number;\n nodeData: SnippetNodeInstance;\n children: SnippetNodeDetail[];\n}\n\nexport type SnippetNodeInstance = Omit<NodeInstance, \"parent\"> & {\n parent?: string;\n};\n\nexport interface EventDetailOfSnippetApplyStored {\n flattenNodeDetails: EventDetailOfNodeAddStored[];\n}\n\nexport type EventDetailOfNodeMove = Omit<EventDetailOfNodeAdd, \"nodeData\"> & {\n nodeInstanceId: string;\n nodeData: {\n parent: string;\n mountPoint: string;\n };\n};\n\nexport interface EventDetailOfNodeReorder {\n nodeUids: number[];\n parentUid: number;\n nodeIds: string[];\n}\n\nexport interface EventDetailOfNodeDragStart {\n nodeUid: number;\n}\n\nexport interface BuilderContextMenuStatus {\n active: boolean;\n node?: BuilderRuntimeNode;\n /** `x` is relative to the viewport. */\n x?: number;\n /** `y` is relative to the viewport. */\n y?: number;\n}\n\nexport enum BuilderDataTransferType {\n NODE_TO_ADD = \"builder/node-to-add\",\n NODE_TO_MOVE = \"builder/node-to-move\",\n SNIPPET_TO_APPLY = \"builder/snippet-to-apply\",\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToAdd {\n brickType?: \"brick\" | \"provider\" | \"template\";\n brick: string;\n}\n\nexport interface BuilderDataTransferPayloadOfNodeToMove {\n nodeUid: number;\n nodeInstanceId: string;\n nodeId: string;\n}\n\nexport interface BuilderDataTransferPayloadOfSnippetToApply {\n bricks: BrickConf[];\n}\n\nexport enum EditorBrickType {\n DEFAULT = \"editorOfDefault\",\n CONTAINER = \"editorOfContainer\",\n TRANSPARENT_CONTAINER = \"editorOfTransparentContainer\",\n}\n\nexport enum EditorSelfLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n CONTAINER = \"container\",\n}\n\nexport enum EditorSlotContentLayout {\n BLOCK = \"block\",\n INLINE = \"inline\",\n GRID = \"grid\",\n}\n\nexport interface SharedEditorConf {\n id: string;\n editor: string;\n editorProps?: Record<string, unknown>;\n}\n\nexport type BuilderDroppingStatus = Map<number, Map<string, boolean>>;\n\nexport interface AbstractBuilderDataManager {\n getData(): BuilderCanvasData;\n getRouteList(): BuilderRouteNode[];\n getContextMenuStatus(): BuilderContextMenuStatus;\n dataInit(root: BuilderRuntimeNode): void;\n sharedEditorListInit(data: SharedEditorConf[]): void;\n routeListInit(data: BuilderRouteNode[]): void;\n nodeAdd(detail: EventDetailOfNodeAdd): void;\n nodeAddStored(detail: EventDetailOfNodeAddStored): void;\n snippetApply(detail: EventDetailOfSnippetApply): void;\n snippetApplyStored(detail: EventDetailOfSnippetApplyStored): void;\n nodeMove(detail: EventDetailOfNodeMove): void;\n nodeReorder(detail: EventDetailOfNodeReorder): void;\n nodeDelete(detail: BuilderRuntimeNode): void;\n nodeClick(detail: BuilderRuntimeNode): void;\n contextUpdated(detail: EventDetailOfContextUpdated): void;\n onDataChange(fn: EventListener): () => void;\n onNodeAdd(fn: (event: CustomEvent<EventDetailOfNodeAdd>) => void): () => void;\n onNodeReorder(\n fn: (event: CustomEvent<EventDetailOfNodeReorder>) => void\n ): () => void;\n onNodeMove(\n fn: (event: CustomEvent<EventDetailOfNodeMove>) => void\n ): () => void;\n onNodeClick(fn: (event: CustomEvent<BuilderRuntimeNode>) => void): () => void;\n onContextMenuChange(\n fn: (event: CustomEvent<BuilderContextMenuStatus>) => void\n ): () => void;\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\ntry {\n self.EventTarget = (new EventTarget).constructor;\n} catch(EventTarget) {\n (function (Object, wm) {\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var proto = EventTarget.prototype;\n define(proto, 'addEventListener', function (type, listener, options) {\n for (var\n secret = wm.get(this),\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener)\n return;\n }\n listeners.push({target: this, listener: listener, options: options});\n });\n define(proto, 'dispatchEvent', function (event) {\n var secret = wm.get(this);\n var listeners = secret[event.type];\n if (listeners) {\n define(event, 'target', this);\n define(event, 'currentTarget', this);\n listeners.slice(0).some(dispatch, event);\n delete event.currentTarget;\n delete event.target;\n }\n return true;\n });\n define(proto, 'removeEventListener', function (type, listener) {\n for (var\n secret = wm.get(this),\n /* istanbul ignore next */\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener) {\n listeners.splice(i, 1);\n return;\n }\n }\n });\n self.EventTarget = EventTarget;\n function EventTarget() {'use strict';\n wm.set(this, create(null));\n }\n function define(target, name, value) {\n defineProperty(\n target,\n name,\n {\n configurable: true,\n writable: true,\n value: value\n }\n );\n }\n function dispatch(info) {\n var options = info.options;\n if (options && options.once)\n info.target.removeEventListener(this.type, info.listener);\n if (typeof info.listener === 'function')\n info.listener.call(info.target, this);\n else\n info.listener.handleEvent(this);\n return this._stopImmediatePropagationFlag;\n }\n }(Object, new WeakMap));\n}\nexport default self.EventTarget;\n","let uniqueIdCursor = 0;\n\nexport function getUniqueNodeId(): number {\n return (uniqueIdCursor += 1);\n}\n","import { clamp, sortBy } from \"lodash\";\nimport { CustomTemplateProxySlot } from \"@next-core/brick-types\";\nimport { hasOwnProperty } from \"@next-core/brick-utils\";\nimport {\n BuilderCanvasData,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n} from \"../interfaces\";\n\nexport function expandTemplateEdges({\n nodes,\n // Here expanded edges should be excluded.\n edges,\n rootId,\n}: BuilderCanvasData): BuilderRuntimeEdge[] {\n const newEdges = edges.slice();\n const reorderedEdgesMap = new WeakMap<BuilderRuntimeEdge, number>();\n\n const walk = (\n uid: number,\n callback: (\n node: BuilderRuntimeNode,\n childEdges: BuilderRuntimeEdge[]\n ) => void\n ): void => {\n const node = nodes.find((item) => item.$$uid === uid);\n const childEdges = sortBy(\n edges.filter((edge) => edge.parent === node.$$uid),\n (edge) => edge.sort\n );\n callback(node, childEdges);\n for (const edge of childEdges) {\n walk(edge.child, callback);\n }\n };\n\n const expandEdgesThroughTemplateChain = (\n node: BuilderRuntimeNode,\n mountPoint: string,\n childUid: number\n ): void => {\n let proxySlotConf: CustomTemplateProxySlot;\n let delegateToParentUid: number;\n if (\n node.$$isExpandableTemplate &&\n node.$$templateProxy?.slots &&\n hasOwnProperty(node.$$templateProxy.slots, mountPoint) &&\n (proxySlotConf = node.$$templateProxy.slots[mountPoint]) &&\n (delegateToParentUid = node.$$templateRefToUid.get(proxySlotConf.ref))\n ) {\n const nextNode = nodes.find((n) => n.$$uid === delegateToParentUid);\n const nextMountPoint = proxySlotConf.refSlot;\n if (nextNode.$$isExpandableTemplate) {\n expandEdgesThroughTemplateChain(nextNode, nextMountPoint, childUid);\n } else {\n const expandedEdge: BuilderRuntimeEdge = {\n child: childUid,\n parent: delegateToParentUid,\n mountPoint: nextMountPoint,\n sort: undefined,\n $$isTemplateExpanded: true,\n };\n const siblingEdges = sortBy(\n newEdges.filter((edge) => edge.parent === delegateToParentUid),\n (edge) => reorderedEdgesMap.get(edge) ?? edge.sort\n );\n const internalEdges = siblingEdges.filter(\n (edge) => edge.$$isTemplateInternal\n );\n // For more details about refPosition implementation detail,\n // see `packages/brick-kit/src/core/CustomTemplates/expandCustomTemplate.ts`.\n const refPosition = proxySlotConf.refPosition ?? -1;\n const clampedRefPosition = clamp(\n refPosition < 0\n ? internalEdges.length + 1 + refPosition\n : refPosition,\n 0,\n internalEdges.length\n );\n siblingEdges.splice(\n clampedRefPosition < internalEdges.length\n ? siblingEdges.findIndex(\n (edge) => edge === internalEdges[clampedRefPosition]\n )\n : siblingEdges.length,\n 0,\n expandedEdge\n );\n siblingEdges.forEach((edge, index) => {\n reorderedEdgesMap.set(edge, index);\n });\n newEdges.push(expandedEdge);\n }\n }\n };\n\n walk(rootId, (node, childEdges) => {\n if (!node.$$isExpandableTemplate) {\n return;\n }\n for (const childEdge of childEdges) {\n // Recursively expand templates.\n expandEdgesThroughTemplateChain(\n node,\n childEdge.mountPoint,\n childEdge.child\n );\n }\n });\n\n if (newEdges.length > edges.length) {\n return newEdges.map((edge) => {\n const sort = reorderedEdgesMap.get(edge);\n return sort === undefined\n ? edge\n : {\n ...edge,\n sort,\n };\n });\n }\n\n return edges;\n}\n","import { BuilderCanvasData, BuilderRuntimeEdge } from \"../interfaces\";\nimport { expandTemplateEdges } from \"./expandTemplateEdges\";\n\nexport function reorderBuilderEdges(\n { rootId, nodes, edges }: BuilderCanvasData,\n {\n parentUid,\n nodeUids,\n }: {\n parentUid: number;\n nodeUids: number[];\n }\n): BuilderRuntimeEdge[] {\n // When we do edge-reordering, we simply remove existed\n // expanded edges and re-expand them.\n const edgesExcludeExpanded = edges.filter(\n (edge) => !edge.$$isTemplateExpanded\n );\n\n return expandTemplateEdges({\n rootId,\n nodes,\n edges: edgesExcludeExpanded.map((edge) => {\n // `nodeUids` are sorted, so reorder related edges based on it.\n const index =\n edge.parent === parentUid ? nodeUids.indexOf(edge.child) : -1;\n return index >= 0\n ? {\n ...edge,\n sort: index,\n }\n : edge;\n }),\n });\n}\n","import { BuilderCanvasData, BuilderRuntimeEdge } from \"../interfaces\";\n\nexport function deleteNodeFromTree(\n nodeUid: number,\n { rootId, nodes, edges }: BuilderCanvasData\n): BuilderCanvasData {\n const idsToDelete = new Set<number>();\n collectIdsToDelete(nodeUid, edges, idsToDelete);\n return {\n rootId,\n nodes: nodes.filter((node) => !idsToDelete.has(node.$$uid)),\n edges: edges.filter(\n (edge) => !idsToDelete.has(edge.parent) && !idsToDelete.has(edge.child)\n ),\n };\n}\n\nfunction collectIdsToDelete(\n nodeUid: number,\n edges: BuilderRuntimeEdge[],\n idsToDelete: Set<number>\n): void {\n idsToDelete.add(nodeUid);\n const ids = new Set<number>();\n for (const edge of edges) {\n if (edge.parent === nodeUid) {\n ids.add(edge.child);\n }\n }\n for (const id of ids) {\n collectIdsToDelete(id, edges, idsToDelete);\n }\n}\n","import { BuilderRuntimeNode } from \"../interfaces\";\nimport {\n BrickEventHandler,\n ExecuteCustomBrickEventHandler,\n MessageConf,\n} from \"@next-core/brick-types\";\nimport { isEmpty } from \"lodash\";\n\nexport type RelatedNodesBasedOnEventsMap = Map<\n number,\n {\n upstreamNodes: Set<number>;\n downstreamNodes: Set<number>;\n }\n>;\n\nexport function getRelatedNodesBasedOnEvents(\n nodes: BuilderRuntimeNode[],\n rootNodeIsCustomTemplate?: boolean\n): RelatedNodesBasedOnEventsMap {\n const nodesMap: RelatedNodesBasedOnEventsMap = new Map();\n\n const targetMap = new Map<string, number>();\n const targetRefMap = new Map<string, number>();\n for (const n of nodes) {\n nodesMap.set(n.$$uid, {\n upstreamNodes: new Set<number>(),\n downstreamNodes: new Set<number>(),\n });\n for (const selector of n.$$matchedSelectors) {\n if (!targetMap.get(selector)) {\n targetMap.set(selector, n.$$uid);\n }\n }\n if (rootNodeIsCustomTemplate) {\n if (n.ref) {\n targetRefMap.set(n.ref as string, n.$$uid);\n }\n }\n }\n\n for (const node of nodes) {\n let handlers: BrickEventHandler[] = [];\n if (!isEmpty(node.$$parsedEvents)) {\n handlers = Object.values(node.$$parsedEvents).flat();\n }\n if (!isEmpty(node.$$parsedLifeCycle)) {\n handlers = handlers.concat(\n Object.entries(node.$$parsedLifeCycle).flatMap(\n ([lifeCycleName, lifeCycleConf]) => {\n switch (lifeCycleName) {\n case \"onBeforePageLoad\":\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onBeforePageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n return lifeCycleConf as BrickEventHandler[];\n case \"onMessage\":\n return ([] as MessageConf[])\n .concat(lifeCycleConf)\n .flatMap((messageConf) =>\n ([] as BrickEventHandler[]).concat(messageConf.handlers)\n );\n default:\n // eslint-disable-next-line no-console\n console.warn(`unknown lifeCycle: ${lifeCycleName}`);\n return [];\n }\n }\n )\n );\n }\n if (handlers.length > 0) {\n collectRelatedNodes(node, handlers, nodesMap, targetMap, targetRefMap);\n }\n }\n\n return nodesMap;\n}\n\nfunction collectRelatedNodes(\n node: BuilderRuntimeNode,\n handlers: BrickEventHandler[],\n nodesMap: RelatedNodesBasedOnEventsMap,\n targetMap: Map<string, number>,\n targetRefMap: Map<string, number>\n): void {\n for (const handler of handlers as ExecuteCustomBrickEventHandler[]) {\n if (handler) {\n if (handler.target) {\n const targetNodeUid = targetMap.get(handler.target as string);\n if (targetNodeUid) {\n nodesMap.get(node.$$uid).downstreamNodes.add(targetNodeUid);\n nodesMap.get(targetNodeUid).upstreamNodes.add(node.$$uid);\n }\n } else if (handler.targetRef) {\n const targetRefNodeUid = targetRefMap.get(handler.targetRef);\n if (targetRefNodeUid) {\n nodesMap.get(node.$$uid).downstreamNodes.add(targetRefNodeUid);\n nodesMap.get(targetRefNodeUid).upstreamNodes.add(node.$$uid);\n }\n }\n if (handler.callback) {\n for (const callbackHandlers of Object.values(handler.callback)) {\n collectRelatedNodes(\n node,\n [].concat(callbackHandlers),\n nodesMap,\n targetMap,\n targetRefMap\n );\n }\n }\n }\n }\n}\n","import { cloneDeep, upperFirst } from \"lodash\";\nimport { normalizeBuilderNode } from \"@next-core/brick-utils\";\nimport { BuilderRouteOrBrickNode } from \"@next-core/brick-types\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { isBrickNode } from \"../assertions\";\n\nconst nodeIgnoreFields = [\"parent\", \"children\", \"graphInfo\", \"mountPoint\"];\n\nexport function getBuilderNode(\n nodeData: BuilderRouteOrBrickNode,\n nodeUid: number,\n isTemplateInternalNode?: boolean\n): BuilderRuntimeNode {\n const matchedSelectors: string[] = [];\n\n if (nodeData.brick) {\n matchedSelectors.push((nodeData.brick as string).replace(/\\./g, \"\\\\.\"));\n }\n\n const normalized = normalizeBuilderNode(nodeData);\n\n const jsonFieldsInBrick = [\"properties\", \"events\", \"lifeCycle\"];\n const parsedFields: [string, unknown][] = [];\n\n for (const field of jsonFieldsInBrick) {\n const parsed = cloneDeep(\n (normalized as Record<string, unknown>)?.[field]\n ) as Record<string, unknown>;\n parsedFields.push([`$$parsed${upperFirst(field)}`, parsed ?? {}]);\n\n if (\n field === \"properties\" &&\n parsed?.id &&\n typeof parsed.id === \"string\" &&\n // Ignore evaluations and placeholders,\n // E.g.: `<% QUERY.x %>` or `${QUERY.x}`.\n !/[<{]/.test(parsed.id)\n ) {\n matchedSelectors.push(`#${parsed.id}`);\n }\n }\n\n return Object.fromEntries(\n Object.entries(nodeData)\n .filter((entry) => !nodeIgnoreFields.includes(entry[0]))\n .concat([\n [\n \"alias\",\n nodeData.alias ??\n (isBrickNode(nodeData)\n ? nodeData.brick.split(\".\").pop()\n : undefined),\n ],\n [\"$$uid\", nodeUid],\n [\"$$matchedSelectors\", matchedSelectors],\n [\"$$isTemplateInternalNode\", isTemplateInternalNode],\n [\"$$normalized\", normalized],\n ])\n .concat(parsedFields)\n ) as BuilderRuntimeNode;\n}\n","import { omit } from \"lodash\";\nimport EventTarget from \"@ungap/event-target\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderRouteNode,\n Story,\n BuilderCustomTemplateNode,\n} from \"@next-core/brick-types\";\nimport { JsonStorage } from \"@next-core/brick-utils\";\nimport {\n AbstractBuilderDataManager,\n BuilderCanvasData,\n BuilderContextMenuStatus,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n EventDetailOfNodeAdd,\n EventDetailOfNodeAddStored,\n EventDetailOfNodeMove,\n EventDetailOfNodeReorder,\n EventDetailOfContextUpdated,\n SnippetNodeDetail,\n EventDetailOfSnippetApply,\n EventDetailOfSnippetApplyStored,\n SharedEditorConf,\n BuilderDroppingStatus,\n} from \"../interfaces\";\nimport { getBuilderNode } from \"./getBuilderNode\";\nimport { getUniqueNodeId } from \"./getUniqueNodeId\";\nimport { reorderBuilderEdges } from \"./reorderBuilderEdges\";\nimport { deleteNodeFromTree } from \"./deleteNodeFromTree\";\nimport {\n getRelatedNodesBasedOnEvents,\n RelatedNodesBasedOnEventsMap,\n} from \"../processors/getRelatedNodesBasedOnEvents\";\nimport { expandTemplateEdges } from \"./expandTemplateEdges\";\nimport { getAppendingNodesAndEdges } from \"./getAppendingNodesAndEdges\";\nimport { isParentExpandableTemplate } from \"./isParentExpandableTemplate\";\n\nenum BuilderInternalEventType {\n NODE_ADD = \"builder.node.add\",\n NODE_MOVE = \"builder.node.move\",\n NODE_REORDER = \"builder.node.reorder\",\n NODE_CLICK = \"builder.node.click\",\n SNIPPET_APPLY = \"builder.snippet.apply\",\n CONTEXT_MENU_CHANGE = \"builder.contextMenu.change\",\n DATA_CHANGE = \"builder.data.change\",\n SHARED_EDITOR_LIST_CHANGE = \"builder.sharedEditorList.change\",\n ROUTE_LIST_CHANGE = \"builder.routeList.change\",\n HOVER_NODE_CHANGE = \"builder.hoverNode.change\",\n SHOW_RELATED_NODES_BASED_ON_EVENTS = \"builder.showRelatedNodesBasedOnEvents.change\",\n HIGHLIGHT_NODES_CHANGE = \"builder.highlightNodes.change\",\n OUTLINE_DISABLED_NODES_CHANGE = \"builder.outlineDisabledNodes.change\",\n DROPPING_STATUS_CHANGE = \"builder.droppingStatus.change\",\n}\n\nconst storageKeyOfOutlineDisabledNodes = \"builder-outline-disabled-nodes\";\n\nexport class BuilderDataManager implements AbstractBuilderDataManager {\n private data: BuilderCanvasData = {\n rootId: null,\n nodes: [],\n edges: [],\n };\n\n private hoverNodeUid: number;\n\n private sharedEditorList: SharedEditorConf[];\n\n private routeList: BuilderRouteNode[];\n\n private storyList: Story[];\n\n private readonly eventTarget = new EventTarget();\n\n private contextMenuStatus: BuilderContextMenuStatus = {\n active: false,\n };\n\n private showRelatedNodesBasedOnEvents: boolean;\n\n private relatedNodesBasedOnEventsMap: RelatedNodesBasedOnEventsMap;\n\n private highlightNodes: Set<number> = new Set();\n\n private templateSourceMap: Map<string, BuilderCustomTemplateNode>;\n\n private droppingStatus: BuilderDroppingStatus = new Map();\n\n private readonly localJsonStorage = new JsonStorage<{\n [storageKeyOfOutlineDisabledNodes]: string[];\n }>(localStorage);\n\n private readonly outlineDisabledNodes: Set<string> = new Set(\n this.localJsonStorage.getItem(storageKeyOfOutlineDisabledNodes) ?? []\n );\n\n getData(): BuilderCanvasData {\n return this.data;\n }\n\n getContextMenuStatus(): BuilderContextMenuStatus {\n return this.contextMenuStatus;\n }\n\n getRelatedNodesBasedOnEventsMap(): RelatedNodesBasedOnEventsMap {\n return this.relatedNodesBasedOnEventsMap;\n }\n\n sharedEditorListInit(data: SharedEditorConf[]): void {\n this.sharedEditorList = data;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE)\n );\n }\n\n getSharedEditorList(): SharedEditorConf[] {\n return this.sharedEditorList ?? [];\n }\n\n onSharedEditorListChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SHARED_EDITOR_LIST_CHANGE,\n fn\n );\n };\n }\n\n routeListInit(data: BuilderRouteNode[]): void {\n this.routeList = data;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.ROUTE_LIST_CHANGE)\n );\n }\n\n getRouteList(): BuilderRouteNode[] {\n return this.routeList ?? [];\n }\n\n storyListInit(data: Story[]): void {\n this.storyList = data;\n }\n\n getStoryList(): Story[] {\n return this.storyList;\n }\n\n onRouteListChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.ROUTE_LIST_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.ROUTE_LIST_CHANGE,\n fn\n );\n };\n }\n\n dataInit(\n root: BuilderRuntimeNode,\n templateSourceMap?: Map<string, BuilderCustomTemplateNode>\n ): void {\n this.templateSourceMap = templateSourceMap;\n const rootId = getUniqueNodeId();\n const newData = {\n rootId,\n ...getAppendingNodesAndEdges(\n root,\n rootId,\n templateSourceMap,\n this.storyList\n ),\n };\n this.data = {\n ...newData,\n edges: expandTemplateEdges(newData),\n };\n this.triggerDataChange();\n }\n\n private triggerDataChange(): void {\n const { rootId, nodes } = this.data;\n const rootNode = nodes.find((node) => node.$$uid === rootId);\n const rootNodeIsCustomTemplate = rootNode.type === \"custom-template\";\n this.relatedNodesBasedOnEventsMap = getRelatedNodesBasedOnEvents(\n nodes,\n rootNodeIsCustomTemplate\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.DATA_CHANGE)\n );\n }\n\n runAddNodeAction = (detail: EventDetailOfNodeAdd) => {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData } = detail;\n\n const { nodes: addNodes, edges: addEdges } = getAppendingNodesAndEdges(\n omit(nodeData, [\n \"parent\",\n ]) as Partial<BuilderRouteOrBrickNode> as BuilderRouteOrBrickNode,\n nodeUid,\n this.templateSourceMap,\n this.getStoryList()\n );\n\n const newNodes = nodes.concat(addNodes);\n const newEdges = edges\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n })\n .concat(addEdges);\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n };\n\n updateBrick(detail: EventDetailOfNodeAdd) {\n this.data = deleteNodeFromTree(detail.nodeUid, this.data);\n\n this.runAddNodeAction(detail);\n }\n\n nodeAdd(detail: EventDetailOfNodeAdd): void {\n this.runAddNodeAction(detail);\n\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_ADD, { detail })\n );\n }\n\n nodeAddStored(detail: EventDetailOfNodeAddStored): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, nodeData } = detail;\n this.data = {\n rootId,\n nodes: nodes.map((node) =>\n node.$$uid === nodeUid\n ? { ...node, id: nodeData.id, instanceId: nodeData.instanceId }\n : node\n ),\n edges,\n };\n this.triggerDataChange();\n }\n\n snippetApply(detail: EventDetailOfSnippetApply): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeDetails, parentUid, nodeUids } = detail;\n\n const newNodes: BuilderRuntimeNode[] = nodes.slice();\n const newEdges: BuilderRuntimeEdge[] = edges.slice();\n\n const walk = ({\n parentUid,\n nodeUid,\n nodeData,\n children,\n }: SnippetNodeDetail): void => {\n const { nodes: appendingNodes, edges: appendingEdges } =\n getAppendingNodesAndEdges(\n omit(nodeData, [\n \"parent\",\n ]) as Partial<BuilderRouteOrBrickNode> as BuilderRouteOrBrickNode,\n nodeUid,\n this.templateSourceMap,\n this.storyList\n );\n newNodes.push(...appendingNodes);\n newEdges.push(\n {\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: nodeData.sort,\n $$isTemplateDelegated: isParentExpandableTemplate(\n newNodes,\n parentUid\n ),\n },\n ...appendingEdges\n );\n for (const item of children) {\n walk(item);\n }\n };\n\n for (const item of nodeDetails) {\n walk(item);\n }\n\n const newData = {\n rootId,\n nodes: newNodes,\n edges: newEdges,\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.SNIPPET_APPLY, { detail })\n );\n }\n\n snippetApplyStored(detail: EventDetailOfSnippetApplyStored): void {\n const { rootId, nodes, edges } = this.data;\n const { flattenNodeDetails } = detail;\n this.data = {\n rootId,\n nodes: nodes.map((node) => {\n const found = flattenNodeDetails.find((n) => n.nodeUid === node.$$uid);\n return found\n ? {\n ...node,\n id: found.nodeData.id,\n instanceId: found.nodeData.instanceId,\n }\n : node;\n }),\n edges,\n };\n this.triggerDataChange();\n }\n\n nodeMove(detail: EventDetailOfNodeMove): void {\n const { rootId, nodes, edges } = this.data;\n const { nodeUid, parentUid, nodeUids, nodeData } = detail;\n const newData = {\n rootId,\n nodes,\n edges: edges\n .filter((edge) => edge.child !== nodeUid)\n .concat({\n parent: parentUid,\n child: nodeUid,\n mountPoint: nodeData.mountPoint,\n sort: undefined,\n $$isTemplateDelegated: isParentExpandableTemplate(nodes, parentUid),\n }),\n };\n this.data = {\n ...newData,\n edges: reorderBuilderEdges(newData, {\n parentUid,\n nodeUids,\n }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_MOVE, { detail })\n );\n }\n\n contextUpdated(detail: EventDetailOfContextUpdated): void {\n const { rootId, nodes, edges } = this.data;\n this.data = {\n rootId,\n edges,\n nodes: nodes.map((node) =>\n node.$$uid === rootId ? { ...node, context: detail.context } : node\n ),\n };\n this.triggerDataChange();\n }\n\n nodeReorder(detail: EventDetailOfNodeReorder): void {\n const { nodeUids, parentUid } = detail;\n this.data = {\n ...this.data,\n edges: reorderBuilderEdges(this.data, { parentUid, nodeUids }),\n };\n this.triggerDataChange();\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_REORDER, { detail })\n );\n }\n\n nodeDelete(detail: BuilderRuntimeNode): void {\n this.data = deleteNodeFromTree(detail.$$uid, this.data);\n this.triggerDataChange();\n }\n\n nodeClick(detail: BuilderRuntimeNode): void {\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.NODE_CLICK, { detail })\n );\n }\n\n contextMenuChange(detail: BuilderContextMenuStatus): void {\n this.contextMenuStatus = detail;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.CONTEXT_MENU_CHANGE)\n );\n }\n\n onDataChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(BuilderInternalEventType.DATA_CHANGE, fn);\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.DATA_CHANGE,\n fn\n );\n };\n }\n\n onNodeAdd(\n fn: (event: CustomEvent<EventDetailOfNodeAdd>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_ADD,\n fn as EventListener\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_ADD,\n fn as EventListener\n );\n };\n }\n\n onSnippetApply(\n fn: (event: CustomEvent<EventDetailOfSnippetApply>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SNIPPET_APPLY,\n fn as EventListener\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SNIPPET_APPLY,\n fn as EventListener\n );\n };\n }\n\n onNodeReorder(\n fn: (event: CustomEvent<EventDetailOfNodeReorder>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_REORDER,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_REORDER,\n fn as EventListener\n );\n };\n }\n\n onNodeMove(\n fn: (event: CustomEvent<EventDetailOfNodeMove>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_MOVE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_MOVE,\n fn as EventListener\n );\n };\n }\n\n onNodeClick(\n fn: (event: CustomEvent<BuilderRuntimeNode>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.NODE_CLICK,\n fn as EventListener\n );\n };\n }\n\n onContextMenuChange(\n fn: (event: CustomEvent<BuilderContextMenuStatus>) => void\n ): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n return () => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.CONTEXT_MENU_CHANGE,\n fn as EventListener\n );\n };\n }\n\n setShowRelatedNodesBasedOnEvents(show: boolean): void {\n this.showRelatedNodesBasedOnEvents = show;\n this.eventTarget.dispatchEvent(\n new CustomEvent(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS\n )\n );\n }\n\n getShowRelatedNodesBasedOnEvents(): boolean {\n return this.showRelatedNodesBasedOnEvents;\n }\n\n onShowRelatedNodesBasedOnEventsChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.SHOW_RELATED_NODES_BASED_ON_EVENTS,\n fn\n );\n };\n }\n\n setHoverNodeUid(uid: number): void {\n if (this.hoverNodeUid !== uid) {\n this.hoverNodeUid = uid;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.HOVER_NODE_CHANGE)\n );\n }\n }\n\n getHoverNodeUid(): number {\n return this.hoverNodeUid;\n }\n\n onHoverNodeChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.HOVER_NODE_CHANGE,\n fn\n );\n };\n }\n\n toggleOutline(nodeInstanceId: string): void {\n if (this.outlineDisabledNodes.has(nodeInstanceId)) {\n this.outlineDisabledNodes.delete(nodeInstanceId);\n } else {\n this.outlineDisabledNodes.add(nodeInstanceId);\n }\n this.localJsonStorage.setItem(\n storageKeyOfOutlineDisabledNodes,\n Array.from(this.outlineDisabledNodes)\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE)\n );\n }\n\n isOutlineEnabled(nodeInstanceId: string): boolean {\n return !this.outlineDisabledNodes.has(nodeInstanceId);\n }\n\n onOutlineEnabledNodesChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.OUTLINE_DISABLED_NODES_CHANGE,\n fn\n );\n };\n }\n\n setHighlightNodes(nodeUids: Set<number>): void {\n this.highlightNodes = nodeUids;\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE)\n );\n }\n\n getHighlightNodes(): Set<number> {\n return this.highlightNodes;\n }\n\n onHighlightNodesChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.HIGHLIGHT_NODES_CHANGE,\n fn\n );\n };\n }\n\n updateDroppingStatus(\n nodeUid: number,\n mountPoint: string,\n isDraggingOver: boolean\n ): void {\n const nodeStatus = this.droppingStatus.get(nodeUid);\n this.droppingStatus = new Map(\n Array.from(this.droppingStatus.entries()).concat([\n [\n nodeUid,\n new Map(\n (nodeStatus ? Array.from(nodeStatus) : []).concat([\n [mountPoint, isDraggingOver],\n ])\n ),\n ],\n ])\n );\n this.eventTarget.dispatchEvent(\n new CustomEvent(BuilderInternalEventType.DROPPING_STATUS_CHANGE)\n );\n\n // When dragging nodes over `EditorContainer`, the `mouseout` events\n // are not triggered, which causes hover status does not get cleared.\n // So we manually reset hover status once dragging starts.\n if (\n this.hoverNodeUid &&\n Array.from(this.droppingStatus.values())\n .flatMap((nodeStatus) => Array.from(nodeStatus.values()))\n .some(Boolean)\n ) {\n this.setHoverNodeUid(undefined);\n }\n }\n\n getDroppingStatus(): BuilderDroppingStatus {\n return this.droppingStatus;\n }\n\n onDroppingStatusChange(fn: EventListener): () => void {\n this.eventTarget.addEventListener(\n BuilderInternalEventType.DROPPING_STATUS_CHANGE,\n fn\n );\n return (): void => {\n this.eventTarget.removeEventListener(\n BuilderInternalEventType.DROPPING_STATUS_CHANGE,\n fn\n );\n };\n }\n}\n","import { sortBy } from \"lodash\";\nimport { hasOwnProperty } from \"@next-core/brick-utils\";\nimport {\n BuilderRouteOrBrickNode,\n BuilderCustomTemplateNode,\n CustomTemplateProxyProperty,\n CustomTemplateProxyBasicProperty,\n Story,\n} from \"@next-core/brick-types\";\nimport { BuilderRuntimeEdge, BuilderRuntimeNode } from \"../interfaces\";\nimport { getBuilderNode } from \"./getBuilderNode\";\nimport { getUniqueNodeId } from \"./getUniqueNodeId\";\nimport { isBrickNode } from \"../assertions\";\n\nexport function getAppendingNodesAndEdges(\n nodeData: BuilderRouteOrBrickNode,\n nodeUid: number,\n templateSourceMap: Map<string, BuilderCustomTemplateNode>,\n storyList: Story[] = []\n): {\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n} {\n const nodes: BuilderRuntimeNode[] = [];\n const edges: BuilderRuntimeEdge[] = [];\n const walk = (\n nodeData: BuilderRouteOrBrickNode,\n currentUid: number,\n processedTemplateSet: Set<string>,\n isTemplateInternalNode?: boolean,\n inheritedTemplateRefToUid?: Map<string, number>\n ): void => {\n const builderNode = getBuilderNode(\n nodeData,\n currentUid,\n isTemplateInternalNode\n );\n nodes.push(builderNode);\n\n if (inheritedTemplateRefToUid && builderNode.ref) {\n inheritedTemplateRefToUid.set(builderNode.ref as string, currentUid);\n }\n\n let templateSource: BuilderCustomTemplateNode;\n\n if (\n isBrickNode(builderNode) &&\n ((!builderNode.brick.includes(\".\") &&\n builderNode.brick.startsWith(\"tpl-\") &&\n !processedTemplateSet.has(builderNode.brick) &&\n (templateSource = templateSourceMap?.get(builderNode.brick)) &&\n templateSource.children?.length > 0) ||\n (builderNode.brick.includes(\".tpl-\") &&\n (templateSource = storyList?.find(\n (item) => item.storyId === builderNode.brick\n )?.originData) &&\n templateSource.children?.length > 0))\n ) {\n // Avoid nesting the same templates.\n processedTemplateSet.add(builderNode.brick);\n builderNode.$$isExpandableTemplate = true;\n builderNode.$$templateProxy =\n templateSource.proxy && JSON.parse(templateSource.proxy);\n const templateRefToUid = new Map<string, number>();\n builderNode.$$templateRefToUid = templateRefToUid;\n\n const sortedChildren = sortBy(templateSource.children, [\n (item) => item.sort ?? -Infinity,\n ]);\n sortedChildren.forEach((child, index) => {\n const childUid = getUniqueNodeId();\n walk(\n child,\n childUid,\n // Each child should be a branch.\n new Set(processedTemplateSet),\n true,\n templateRefToUid\n );\n edges.push({\n child: childUid,\n parent: currentUid,\n mountPoint: \"\",\n sort: index,\n $$isTemplateInternal: true,\n });\n });\n\n if (!builderNode.$$isTemplateInternalNode) {\n // Here all internal nodes of the template including nested templates are ready.\n const processDelegatingSlots = (\n cursorNode: BuilderRuntimeNode,\n mountPoint?: string,\n rootMountPoint?: string\n ): void => {\n if (cursorNode.$$templateProxy?.slots) {\n const slotEntries = Object.entries(\n cursorNode.$$templateProxy?.slots\n ).filter(\n (entry) => mountPoint === undefined || entry[0] === mountPoint\n );\n for (const [slotName, slotConf] of slotEntries) {\n const refUid = cursorNode.$$templateRefToUid.get(slotConf.ref);\n if (refUid) {\n const refNode = nodes.find((node) => node.$$uid === refUid);\n if (refNode.$$isExpandableTemplate) {\n processDelegatingSlots(refNode, slotConf.refSlot, slotName);\n } else {\n if (!refNode.$$delegatedSlots) {\n refNode.$$delegatedSlots = new Map();\n }\n let delegatedSlotsByRefSlot = refNode.$$delegatedSlots.get(\n slotConf.refSlot\n );\n if (!delegatedSlotsByRefSlot) {\n delegatedSlotsByRefSlot = [];\n refNode.$$delegatedSlots.set(\n slotConf.refSlot,\n delegatedSlotsByRefSlot\n );\n }\n delegatedSlotsByRefSlot.push({\n templateUid: builderNode.$$uid,\n templateMountPoint: rootMountPoint || slotName,\n });\n }\n }\n }\n }\n };\n processDelegatingSlots(builderNode);\n\n const processDelegatingProperties = (\n cursorNode: BuilderRuntimeNode,\n previousPropertyName?: string\n ): void => {\n if (cursorNode.$$templateProxy?.properties) {\n const propertyEntries = Object.entries(\n cursorNode.$$templateProxy?.properties\n ).filter(\n (entry) =>\n previousPropertyName === undefined ||\n entry[0] === previousPropertyName\n );\n for (const [propertyName, propertyConf] of propertyEntries) {\n if (\n hasOwnProperty(cursorNode.$$parsedProperties, propertyName) &&\n isBasicRefProperty(propertyConf)\n ) {\n const refUid = cursorNode.$$templateRefToUid.get(\n propertyConf.ref\n );\n const propertyValue =\n cursorNode.$$parsedProperties[propertyName];\n if (refUid) {\n const refNode = nodes.find((node) => node.$$uid === refUid);\n refNode.$$parsedProperties[propertyConf.refProperty] =\n propertyValue;\n if (refNode.$$isExpandableTemplate) {\n processDelegatingProperties(\n refNode,\n propertyConf.refProperty\n );\n }\n }\n }\n }\n }\n };\n processDelegatingProperties(builderNode);\n }\n }\n\n if (Array.isArray(nodeData.children)) {\n // For routes and custom-templates, their children are fixed\n // and mount points should be ignored. To unify tree edge\n // data structure, just override their mount points.\n let overrideChildrenMountPoint: string;\n switch (builderNode.type) {\n case \"bricks\":\n case \"custom-template\":\n overrideChildrenMountPoint = \"bricks\";\n break;\n case \"routes\":\n overrideChildrenMountPoint = \"routes\";\n break;\n }\n const sortedChildren = sortBy(nodeData.children, [\n (item) => item.sort ?? -Infinity,\n ]);\n sortedChildren.forEach((child, index) => {\n const childUid = getUniqueNodeId();\n walk(\n child,\n childUid,\n // Each child should be a branch.\n new Set(processedTemplateSet),\n isTemplateInternalNode,\n inheritedTemplateRefToUid\n );\n edges.push({\n child: childUid,\n parent: currentUid,\n mountPoint: overrideChildrenMountPoint ?? child.mountPoint,\n sort: index,\n $$isTemplateInternal: isTemplateInternalNode,\n $$isTemplateDelegated: builderNode.$$isExpandableTemplate,\n });\n });\n }\n };\n walk(nodeData, nodeUid, new Set());\n return {\n nodes,\n edges,\n };\n}\n\nexport function isBasicRefProperty(\n propRef: CustomTemplateProxyProperty\n): propRef is CustomTemplateProxyBasicProperty {\n return (\n !!(propRef as CustomTemplateProxyBasicProperty).ref &&\n !!(propRef as CustomTemplateProxyBasicProperty).refProperty\n );\n}\n","import { BuilderRuntimeNode } from \"../interfaces\";\n\nexport function isParentExpandableTemplate(\n nodes: BuilderRuntimeNode[],\n parentUid: number\n): boolean {\n return nodes.find((node) => node.$$uid === parentUid).$$isExpandableTemplate;\n}\n","import React from \"react\";\nimport { BuilderDataManager } from \"./internal/BuilderDataManager\";\n\nexport interface ContextOfBuilder {\n manager?: BuilderDataManager;\n}\n\nexport const BuilderContext = React.createContext<ContextOfBuilder>({});\n\nexport function createBuilderContext(): ContextOfBuilder {\n return {\n manager: new BuilderDataManager(),\n };\n}\n","import React from \"react\";\nimport { BuilderContext } from \"../BuilderContext\";\nimport { BuilderDataManager } from \"../internal/BuilderDataManager\";\n\nexport function useBuilderDataManager(): BuilderDataManager {\n const { manager } = React.useContext(BuilderContext);\n if (!manager) {\n throw new Error(\"Expected builder data context\");\n }\n return manager;\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderCanvasData } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useBuilderData(): BuilderCanvasData {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getData());\n useEffect(\n () =>\n manager.onDataChange(() => {\n setData(manager.getData());\n }),\n [manager]\n );\n return data;\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderNode<P = Record<string, unknown>>({\n nodeUid,\n isRoot,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n}): BuilderRuntimeNode<P> {\n const { rootId, nodes } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(\n () =>\n nodes.find((node) => node.$$uid === currentUid) as BuilderRuntimeNode<P>,\n [nodes, currentUid]\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderContextMenuStatus } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useBuilderContextMenuStatus(): BuilderContextMenuStatus {\n const manager = useBuilderDataManager();\n const [status, setStatus] = useState(manager.getContextMenuStatus());\n useEffect(\n () =>\n manager.onContextMenuChange(() => {\n setStatus(manager.getContextMenuStatus());\n }),\n [manager]\n );\n return status;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useShowRelatedNodesBasedOnEvents(): boolean {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getShowRelatedNodesBasedOnEvents());\n useEffect(\n () =>\n manager.onShowRelatedNodesBasedOnEventsChange(() => {\n setData(manager.getShowRelatedNodesBasedOnEvents());\n }),\n [manager]\n );\n return data;\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import editorContainerStyles from \"./EditorContainer.module.css\";\n\nexport function isCurrentTargetByClassName(\n targetElement: HTMLElement,\n currentElement: HTMLElement\n): boolean {\n // Traverse DOM from bottom to top.\n let element = targetElement;\n while (element) {\n if (element === currentElement) {\n return true;\n }\n if (\n element.classList.contains(editorContainerStyles.editorContainer) &&\n !element.classList.contains(editorContainerStyles.isTemplateInternalNode)\n ) {\n // It's not the current target if\n // matches another editor container first.\n return false;\n }\n element = element.parentElement;\n }\n return false;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useHoverNodeUid(): number {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getHoverNodeUid());\n useEffect(\n () =>\n manager.onHoverNodeChange(() => {\n setData(manager.getHoverNodeUid());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useHighlightNodes(): Set<number> {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getHighlightNodes());\n useEffect(\n () =>\n manager.onHighlightNodesChange(() => {\n setData(manager.getHighlightNodes());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { BuilderDroppingStatus } from \"../interfaces\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useDroppingStatus(): BuilderDroppingStatus {\n const manager = useBuilderDataManager();\n const [droppingStatus, setDroppingStatus] = useState(\n manager.getDroppingStatus()\n );\n useEffect(\n () =>\n manager.onDroppingStatusChange(() => {\n setDroppingStatus(manager.getDroppingStatus());\n }),\n [manager]\n );\n return droppingStatus;\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { EditorBrickType } from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport { useBuilderDataManager } from \"../hooks/useBuilderDataManager\";\nimport { useBuilderContextMenuStatus } from \"../hooks/useBuilderContextMenuStatus\";\nimport { useShowRelatedNodesBasedOnEvents } from \"../hooks/useShowRelatedNodesBasedOnEvents\";\nimport { isCurrentTargetByClassName } from \"./isCurrentTargetByClassName\";\nimport { useHoverNodeUid } from \"../hooks/useHoverNodeUid\";\nimport { useHighlightNodes } from \"../hooks/useHighlightNodes\";\nimport { useDroppingStatus } from \"../hooks/useDroppingStatus\";\n\nimport styles from \"./EditorContainer.module.css\";\n\ninterface EditorContainerProps {\n nodeUid: number;\n type?: EditorBrickType;\n isTransparentContainer?: boolean;\n editorContainerStyle?: React.CSSProperties;\n editorBodyStyle?: React.CSSProperties;\n}\n\nexport function EditorContainer({\n nodeUid,\n type,\n isTransparentContainer,\n editorContainerStyle,\n editorBodyStyle,\n children,\n}: React.PropsWithChildren<EditorContainerProps>): React.ReactElement {\n const editorContainerRef = useRef<HTMLDivElement>();\n const highlightNodes = useHighlightNodes();\n const node = useBuilderNode({ nodeUid });\n const [isUpstreamNode, setIsUpstreamNode] = useState(false);\n const [isDownstreamNode, setIsDownstreamNode] = useState(false);\n const contextMenuStatus = useBuilderContextMenuStatus();\n const hoverNodeUid = useHoverNodeUid();\n const showRelatedEvents = useShowRelatedNodesBasedOnEvents();\n const manager = useBuilderDataManager();\n const [hover, setHover] = useState(hoverNodeUid === nodeUid);\n const editorType = type ?? EditorBrickType.DEFAULT;\n const hoverNodeUidRef = useRef(hoverNodeUid);\n const droppingStatus = useDroppingStatus();\n\n useEffect(() => {\n hoverNodeUidRef.current = hoverNodeUid;\n }, [hoverNodeUid]);\n\n const handleMouseOver = useCallback(\n (event: MouseEvent) => {\n event.stopPropagation();\n setHover(true);\n if (hoverNodeUidRef.current !== nodeUid) {\n manager.setHoverNodeUid(nodeUid);\n }\n },\n [nodeUid, manager]\n );\n\n const handleMouseOut = useCallback(\n (event: MouseEvent) => {\n event.stopPropagation();\n setHover(false);\n if (hoverNodeUidRef.current === nodeUid) {\n manager.setHoverNodeUid(undefined);\n }\n },\n [nodeUid, manager]\n );\n\n useEffect(() => {\n if (node.$$isTemplateInternalNode) {\n return;\n }\n // Manually bind listeners since events which cross custom-elements\n // seem not working in React v16.\n const editorContainer = editorContainerRef.current;\n editorContainer.addEventListener(\"mouseover\", handleMouseOver);\n editorContainer.addEventListener(\"mouseout\", handleMouseOut);\n return () => {\n editorContainer.removeEventListener(\"mouseover\", handleMouseOver);\n editorContainer.removeEventListener(\"mouseout\", handleMouseOut);\n };\n }, [handleMouseOver, handleMouseOut, node]);\n\n useEffect(() => {\n if (node.$$isTemplateInternalNode) {\n return;\n }\n setHover(hoverNodeUid === nodeUid);\n if (showRelatedEvents) {\n const relatedNodes = manager.getRelatedNodesBasedOnEventsMap();\n const isUpstreamNode = relatedNodes\n .get(hoverNodeUid)\n ?.upstreamNodes.has(nodeUid);\n setIsUpstreamNode(isUpstreamNode);\n const isDownstreamNode = relatedNodes\n .get(hoverNodeUid)\n ?.downstreamNodes.has(nodeUid);\n setIsDownstreamNode(isDownstreamNode);\n }\n }, [hoverNodeUid, node, nodeUid, showRelatedEvents, manager]);\n\n const isCurrentTarget = useCallback(\n (event: React.MouseEvent) =>\n !node.$$isTemplateInternalNode &&\n isCurrentTargetByClassName(\n event.target as HTMLElement,\n editorContainerRef.current\n ),\n [node]\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (isCurrentTarget(event)) {\n manager.nodeClick(node);\n }\n },\n [isCurrentTarget, manager, node]\n );\n\n const handleContextMenu = useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (isCurrentTarget(event)) {\n event.preventDefault();\n manager.contextMenuChange({\n active: true,\n node,\n x: event.clientX,\n y: event.clientY,\n });\n }\n },\n [isCurrentTarget, manager, node]\n );\n\n return (\n <div\n className={classNames(styles.editorContainer, styles[editorType], {\n [styles.transparentContainer]: isTransparentContainer,\n [styles.dropping]: Array.from(\n droppingStatus.get(nodeUid)?.values() ?? []\n ).some(Boolean),\n [styles.hover]: hover,\n [styles.active]:\n contextMenuStatus.active && contextMenuStatus.node.$$uid === nodeUid,\n [styles.isDownstreamNode]: !hover && isDownstreamNode,\n [styles.isUpstreamNode]: !hover && isUpstreamNode,\n [styles.highlight]: highlightNodes.has(nodeUid),\n [styles.isTemplateInternalNode]: node.$$isTemplateInternalNode,\n })}\n style={editorContainerStyle}\n ref={editorContainerRef}\n onClick={handleClick}\n onContextMenu={handleContextMenu}\n >\n <div className={styles.nodeAlias}>\n {!hover &&\n (isDownstreamNode ? (\n <span className={styles.arrow}>↓</span>\n ) : isUpstreamNode ? (\n <span className={styles.arrow}>↑</span>\n ) : null)}\n {node.alias || node.brick}\n </div>\n <div className={styles.editorBody} style={editorBodyStyle}>\n {children}\n </div>\n </div>\n );\n}\n","import { developHelper } from \"@next-core/brick-kit\";\nimport { isBrickNode, isRouteNode } from \"../assertions\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\n\nconst ANY_BRICK_EDITOR = \"basic-bricks.any-brick--editor\";\nconst ANY_ROUTE_EDITOR = \"basic-bricks.any-route--editor\";\n\n/**\n * Get editor brick name by node.\n *\n * @param node - Builder node.\n * @param editor - Using shared editor.\n *\n * @returns\n *\n * Returns editor brick name if the node is a brick, will fallback to `basic-bricks.any-brick--editor`\n * if the relevant editor brick is not found.\n *\n * Or returns `basic-bricks.any-route--editor` if the node is a route.\n *\n * And returns undefined if load failed.\n */\nexport async function getEditorBrick(\n node: BuilderRuntimeNode,\n editor?: string\n): Promise<string> {\n const tryEditorBricks: string[] = [];\n if (isRouteNode(node)) {\n tryEditorBricks.push(ANY_ROUTE_EDITOR);\n } else if (isBrickNode(node)) {\n if (node.brick.includes(\"-\")) {\n tryEditorBricks.push(`${node.brick}--editor`);\n }\n\n if (editor) {\n tryEditorBricks.push(editor);\n }\n\n tryEditorBricks.push(ANY_BRICK_EDITOR);\n } else {\n // Currently there should be no custom-template nodes to be rendered as editor.\n throw new Error(`Unsupported node type: ${node.type}`);\n }\n\n for (const editorBrick of tryEditorBricks) {\n try {\n await developHelper.loadEditorBricks([editorBrick]);\n } catch (error) {\n throw new Error(`Load editor brick \"${editorBrick}\" failed`);\n }\n if (customElements.get(editorBrick)) {\n return editorBrick;\n }\n }\n\n throw new Error(`Editor brick \"${tryEditorBricks.join(\", \")}\" not found`);\n}\n","import React, { useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { useDrag } from \"react-dnd\";\nimport { BrickAsComponent, getRuntime } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { getEditorBrick } from \"./getEditorBrick\";\nimport {\n BuilderDataTransferType,\n BuilderRuntimeNode,\n EditorSelfLayout,\n EditorSlotContentLayout,\n} from \"../interfaces\";\nimport { EditorBrickElementConstructor } from \"../EditorElementFactory\";\nimport { useBuilderData } from \"../hooks/useBuilderData\";\nimport { useStoryList } from \"../hooks/useStoryList\";\nimport { getBrickDoc } from \"./getBrickDoc\";\nimport { useSharedEditorMap } from \"../hooks/useSharedEditorMap\";\nimport { isBrickNode } from \"../assertions\";\n\nimport styles from \"./EditorBrickAsComponent.module.css\";\n\ninterface EditorBrickAsComponentProps {\n node: BuilderRuntimeNode;\n slotContentLayout?: EditorSlotContentLayout;\n}\n\nexport function EditorBrickAsComponent({\n node,\n slotContentLayout,\n}: EditorBrickAsComponentProps): React.ReactElement {\n const [initialized, setInitialized] = React.useState(false);\n const [editorBrick, setEditorBrick] = React.useState<string>();\n const [loadEditorError, setLoadEditorError] = React.useState<string>();\n const { edges } = useBuilderData();\n const storyList = useStoryList();\n const hasChildren = React.useMemo(\n () => edges.some((edge) => edge.parent === node.$$uid),\n [node, edges]\n );\n\n const installedBricksEnabled = useMemo(\n () => getRuntime().getFeatureFlags()[\"next-builder-installed-bricks\"],\n []\n );\n\n const brickDoc = useMemo(\n () => (installedBricksEnabled ? null : getBrickDoc(node, storyList)),\n [installedBricksEnabled, node, storyList]\n );\n\n const editorMap = useSharedEditorMap();\n const editorConf = useMemo(\n () =>\n installedBricksEnabled && isBrickNode(node)\n ? editorMap.get(node.brick)\n : null,\n [editorMap, installedBricksEnabled, node]\n );\n\n React.useEffect(() => {\n (async () => {\n setInitialized(false);\n let editorName: string;\n let editorError: string;\n try {\n editorName = await getEditorBrick(\n node,\n installedBricksEnabled ? editorConf?.editor : brickDoc?.editor\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n editorError = (error as Error).message;\n }\n setEditorBrick(editorName);\n setLoadEditorError(editorError);\n setInitialized(true);\n })();\n }, [brickDoc, editorConf, installedBricksEnabled, node]);\n\n const brickConf = React.useMemo<UseBrickConf>(\n () => ({\n brick: editorBrick,\n properties: {\n nodeUid: node.$$uid,\n editorProps: installedBricksEnabled\n ? editorConf?.editorProps\n : brickDoc?.editorProps,\n },\n }),\n [brickDoc, editorBrick, editorConf, installedBricksEnabled, node.$$uid]\n );\n\n const selfLayout = React.useMemo(() => {\n let layout: EditorSelfLayout;\n if (initialized && editorBrick) {\n const editorConstructor = customElements.get(\n editorBrick\n ) as EditorBrickElementConstructor;\n layout = editorConstructor.selfLayout;\n }\n // For bricks with no editors, display as a container if it has children.\n return (\n layout ??\n (hasChildren ? EditorSelfLayout.CONTAINER : EditorSelfLayout.INLINE)\n );\n }, [initialized, editorBrick, hasChildren]);\n\n const [{ isDragging }, dragRef] = useDrag({\n item: {\n type: BuilderDataTransferType.NODE_TO_MOVE,\n nodeUid: node.$$uid,\n nodeInstanceId: node.instanceId,\n nodeId: node.id,\n },\n options: {\n dropEffect: \"move\",\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n return initialized ? (\n editorBrick ? (\n <div\n className={classNames({\n [styles.slotContentLayoutBlock]:\n slotContentLayout === EditorSlotContentLayout.BLOCK,\n [styles.slotContentLayoutInline]:\n slotContentLayout === EditorSlotContentLayout.INLINE,\n // [styles.slotContentLayoutGrid]: slotContentLayout === EditorSlotContentLayout.GRID,\n [styles.selfLayoutInline]: selfLayout === EditorSelfLayout.INLINE,\n [styles.selfLayoutBlock]: selfLayout === EditorSelfLayout.BLOCK,\n [styles.selfLayoutContainer]:\n selfLayout === EditorSelfLayout.CONTAINER,\n [styles.dragging]: isDragging,\n __isTemplateInternalNode: node.$$isTemplateInternalNode,\n })}\n >\n <div\n ref={node.$$isTemplateInternalNode ? undefined : dragRef}\n draggable={!node.$$isTemplateInternalNode}\n className={classNames({\n [styles.baseView]:\n node.brick === \"basic-bricks.micro-view\" ||\n node.brick === \"basic-bricks.micro-app\" ||\n node.brick === \"basic-bricks.easy-view\",\n })}\n >\n <BrickAsComponent useBrick={brickConf} />\n </div>\n </div>\n ) : (\n <span>{loadEditorError}</span>\n )\n ) : (\n <span>Loading...</span>\n );\n}\n","import { useMemo } from \"react\";\nimport { 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 { useMemo } from \"react\";\nimport { sortBy } from \"lodash\";\nimport {\n BuilderGroupedChildNode,\n BuilderRuntimeEdge,\n BuilderRuntimeNode,\n} from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n doNotExpandTemplates,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n}): BuilderGroupedChildNode[] {\n const { rootId, nodes, edges } = useBuilderData();\n return useMemo(\n () =>\n getBuilderGroupedChildNodes({\n nodes,\n edges,\n nodeUid: isRoot ? rootId : nodeUid,\n doNotExpandTemplates,\n }),\n [doNotExpandTemplates, edges, isRoot, nodeUid, nodes, rootId]\n );\n}\n\nexport function getBuilderGroupedChildNodes({\n nodeUid,\n nodes,\n edges,\n doNotExpandTemplates,\n}: {\n nodeUid: number;\n nodes: BuilderRuntimeNode[];\n edges: BuilderRuntimeEdge[];\n doNotExpandTemplates?: boolean;\n}): BuilderGroupedChildNode[] {\n const groups = new Map<string, BuilderRuntimeNode[]>();\n const relatedEdges = sortBy(\n edges.filter(\n (edge) =>\n edge.parent === nodeUid &&\n (doNotExpandTemplates\n ? !edge.$$isTemplateInternal\n : !edge.$$isTemplateDelegated)\n ),\n [(edge) => edge.sort]\n );\n for (const edge of relatedEdges) {\n const childNode = nodes.find((node) => node.$$uid === edge.child);\n if (groups.has(edge.mountPoint)) {\n groups.get(edge.mountPoint).push(childNode);\n } else {\n groups.set(edge.mountPoint, [childNode]);\n }\n }\n return Array.from(groups.entries()).map(([mountPoint, childNodes]) => ({\n mountPoint,\n childNodes,\n }));\n}\n","import { useCallback } from \"react\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport type CanDrop = (draggingUid: number, nodeUid: number) => boolean;\n\n/**\n * Returns whether the current dragging node can be dropped\n * in specific node.\n *\n * This is useful for checking available drop zone and preventing\n * dragging a node into its internal mount points.\n */\nexport function useCanDrop(): CanDrop {\n const { edges } = useBuilderData();\n return useCallback(\n (draggingUid: number, nodeUid: number) => {\n const traverse = (parentId: number): boolean => {\n if (parentId === nodeUid) {\n return false;\n }\n return !edges.some((edge) => {\n if (edge.parent === parentId) {\n return !traverse(edge.child);\n }\n return false;\n });\n };\n return traverse(draggingUid);\n },\n [edges]\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nexport interface DropPosition {\n rect: DropPositionRect;\n cursor: DropPositionCursor;\n}\n\nexport interface DropPositionRect {\n top: number;\n bottom: number;\n left: number;\n right: number;\n}\n\nexport interface DropPositionCursor {\n index: number;\n y: number;\n isVertical?: boolean;\n x?: number;\n height?: number;\n}\n\nexport interface DropGridRow {\n cells: DropGridCell[];\n top?: number;\n bottom?: number;\n // isInline?: boolean;\n}\n\nexport interface DropGridCell extends DropPositionRect {\n index: number;\n}\n\nconst defaultGapHalf = 6;\n\nexport function getDropPositions(\n dropZone: HTMLElement,\n dropZoneGrid: HTMLElement\n): DropPosition[] {\n const zoneRect = dropZone.getBoundingClientRect();\n // const gridRect = dropZoneGrid.getBoundingClientRect();\n const positions: DropPosition[] = [];\n const gridItemList = Array.from(dropZoneGrid.children).filter(\n (item) => !item.classList.contains(\"__isTemplateInternalNode\")\n );\n if (gridItemList.length > 0) {\n let currentRow: DropGridRow = {\n cells: [],\n };\n const rows: DropGridRow[] = [currentRow];\n gridItemList.forEach((gridItem, index) => {\n const rect = gridItem.getBoundingClientRect();\n const cell: DropGridCell = {\n index,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right,\n };\n const prevCell =\n currentRow.cells.length > 0 &&\n currentRow.cells[currentRow.cells.length - 1];\n if (\n !prevCell ||\n (compareApproximately(rect.left, prevCell.right) > 0 &&\n compareApproximately(rect.top, prevCell.bottom) < 0)\n ) {\n currentRow.cells.push(cell);\n currentRow.top = Math.min(currentRow.top ?? Infinity, rect.top);\n currentRow.bottom = Math.max(\n currentRow.bottom ?? -Infinity,\n rect.bottom\n );\n } else {\n currentRow = {\n cells: [cell],\n top: rect.top,\n bottom: rect.bottom,\n };\n rows.push(currentRow);\n }\n });\n // console.log(rows);\n\n let lastRectBottom = zoneRect.top;\n let nextCursorTop = zoneRect.top;\n rows.forEach((row, rowIndex) => {\n if (row.cells.length === 1) {\n const cell = row.cells[0];\n const rectBottom = (cell.top + cell.bottom) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index,\n y: (nextCursorTop + cell.top) / 2 - zoneRect.top,\n },\n });\n lastRectBottom = rectBottom;\n nextCursorTop = cell.bottom;\n\n // Append one more insert position after reached the end.\n if (rowIndex === rows.length - 1) {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: zoneRect.bottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index + 1,\n y:\n Math.min(\n cell.bottom + defaultGapHalf,\n (cell.bottom + zoneRect.bottom) / 2\n ) - zoneRect.top,\n },\n });\n } else if (rows[rowIndex + 1].cells.length > 1) {\n const nextRow = rows[rowIndex + 1];\n const rectBottom = (cell.bottom + nextRow.top) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: zoneRect.left,\n right: zoneRect.right,\n },\n cursor: {\n index: cell.index + 1,\n y: rectBottom - zoneRect.top,\n },\n });\n lastRectBottom = rectBottom;\n }\n } else {\n let lastRectRight = zoneRect.left;\n let nextCursorLeft = zoneRect.left;\n const rectBottom =\n rowIndex < rows.length - 1\n ? (rows[rowIndex + 1].top + row.bottom) / 2\n : zoneRect.bottom;\n const cursorDefault: Pick<\n DropPositionCursor,\n \"isVertical\" | \"y\" | \"height\"\n > = {\n isVertical: true,\n y: row.top - zoneRect.top,\n height: row.bottom - row.top,\n };\n row.cells.forEach((cell, cellIndex) => {\n const rectRight = (cell.left + cell.right) / 2;\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: lastRectRight,\n right: rectRight,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index,\n x: (nextCursorLeft + cell.left) / 2 - zoneRect.left,\n },\n });\n lastRectRight = rectRight;\n nextCursorLeft = cell.right;\n\n // Append one more insert position after reached the row end.\n if (cellIndex === row.cells.length - 1) {\n if (rowIndex === rows.length - 1) {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: zoneRect.bottom,\n left: lastRectRight,\n right: zoneRect.right,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index + 1,\n x:\n Math.min(nextCursorLeft + defaultGapHalf, zoneRect.right) -\n zoneRect.left,\n },\n });\n } else {\n positions.push({\n rect: {\n top: lastRectBottom,\n bottom: rectBottom,\n left: lastRectRight,\n right: zoneRect.right,\n },\n cursor: {\n ...cursorDefault,\n index: cell.index + 1,\n x:\n Math.min(nextCursorLeft + defaultGapHalf, zoneRect.right) -\n zoneRect.left,\n },\n });\n }\n }\n });\n lastRectBottom = rectBottom;\n nextCursorTop = row.bottom;\n }\n });\n }\n return positions;\n}\n\nexport function getDropPosition(\n x: number,\n y: number,\n dropZone: HTMLElement,\n dropZoneGrid: HTMLElement\n): DropPositionCursor {\n const positions = getDropPositions(dropZone, dropZoneGrid);\n for (const { rect, cursor } of positions) {\n if (\n x >= rect.left &&\n x <= rect.right &&\n y >= rect.top &&\n y <= rect.bottom\n ) {\n // console.log((event.target as HTMLElement).tagName, cursor.isVertical, cursor.index);\n return cursor;\n }\n }\n\n return {\n index: 0,\n y: 5,\n };\n}\n\nfunction compareApproximately(a: number, b: number): number {\n const diff = a - b;\n return Math.abs(diff) < 1 ? 0 : diff;\n}\n","import { BuilderGroupedChildNode } from \"../interfaces\";\n\nexport interface SortedIdsAfterDropped {\n nodeUids: number[];\n nodeIds: string[];\n}\n\nexport interface DroppingInfo {\n draggingNodeUid: number | number[];\n draggingNodeId: string | null;\n draggingIndex?: number;\n droppingMountPoint: string;\n droppingSiblingGroups: BuilderGroupedChildNode[];\n droppingIndex: number;\n}\n\n/**\n * Get sorted uids and ids of all children of the dropping parent node.\n *\n * @remark\n *\n * When dropping a node from library (add a node) or from a position\n * to a new position (move a node), we only reorder the children of\n * the dropping mount point. But the reorder API requires to reorder\n * all the children of the dropping parent, which maybe across multiple\n * mount points. So we also keep the original order among sibling mount\n * points at the same time.\n *\n * `draggingNodeId` will be `null` when adding a node.\n *\n * Params `droppingInfo.droppingIndex` and `droppingInfo.draggingIndex`\n * is relative to the belonged mount point.\n *\n * And `droppingInfo.draggingIndex` is required when moving a node\n * inside a mount point.\n *\n * ```\n * ▸ micro-view\n * ├ toolbar\n * │ │ ←─ [0]\n * │ ├ button-a <0>\n * │ │ ←─ [1]\n * │ └ input-b <1>\n * │ ←─ [2]\n * └ content\n * │ ←─ [0]\n * ├ table-a <0>\n * │ ←─ [1]\n * ├ grid-b <1>\n * │ ←─ [2]\n * └ tabs-c <2>\n * ←─ [3]\n * <m>: draggingIndex\n * [n]: droppingIndex\n * ```\n *\n * @param droppingInfo - Dropping info.\n *\n * @returns Both sorted uids and ids.\n */\nexport function getSortedIdsAfterDropped(\n droppingInfo: DroppingInfo\n): SortedIdsAfterDropped {\n const {\n draggingNodeUid,\n draggingNodeId,\n draggingIndex,\n droppingMountPoint,\n droppingSiblingGroups,\n droppingIndex,\n } = droppingInfo;\n // When applying a snippet, the dragging nodes will be an array.\n const draggingNodeUids = Array.isArray(draggingNodeUid)\n ? draggingNodeUid\n : [draggingNodeUid];\n const fullChildNodes = droppingSiblingGroups.flatMap(\n (group) => group.childNodes\n );\n const nodeUids = droppingSiblingGroups.flatMap((group) => {\n const uids = group.childNodes\n .map((item) => item.$$uid)\n .filter((uid) => !draggingNodeUids.includes(uid));\n if (group.mountPoint === droppingMountPoint) {\n uids.splice(\n (draggingIndex ?? -1) >= 0 && droppingIndex > draggingIndex\n ? droppingIndex - 1\n : droppingIndex,\n 0,\n ...draggingNodeUids\n );\n }\n return uids;\n });\n const nodeIds = nodeUids.map((uid) =>\n draggingNodeUids.includes(uid)\n ? draggingNodeId\n : fullChildNodes.find((item) => item.$$uid === uid).id\n );\n return { nodeUids, nodeIds };\n}\n","import yaml from \"js-yaml\";\nimport { BrickConf } from \"@next-core/brick-types\";\nimport { SnippetNodeInstance } from \"../interfaces\";\n\nconst jsonFieldsInBrick = [\n \"properties\",\n \"events\",\n \"lifeCycle\",\n \"params\",\n \"if\",\n \"transform\",\n];\nconst yamlFieldsInBrick = [\"permissionsPreCheck\", \"transformFrom\"];\nconst ignoredFieldsInBrick = [\n \"brick\",\n \"template\",\n \"portal\",\n \"slots\",\n \"id\",\n \"children\",\n \"instanceId\",\n];\n\nexport interface ReverseNormalizeContext {\n isPortalCanvas: boolean;\n nodeData: {\n type: \"brick\" | \"template\" | \"provider\";\n parent: string;\n mountPoint: string;\n sort: number;\n };\n}\n\n// The reverse operation of *normalize*.\n// https://github.com/easyops-cn/next-basics/blob/5a6710d567821bcb4a0c71e22d55212193d8b0cb/bricks/next-builder/src/shared/storyboard/buildStoryboard.ts#L394\nexport function reverseNormalize(\n brickConf: BrickConf,\n ctx: ReverseNormalizeContext\n): SnippetNodeInstance {\n return Object.fromEntries(\n Object.entries(brickConf)\n .map<[string, unknown]>(([key, value]) =>\n value === undefined || ignoredFieldsInBrick.includes(key)\n ? undefined\n : jsonFieldsInBrick.includes(key)\n ? [key, JSON.stringify(value)]\n : yamlFieldsInBrick.includes(key)\n ? [key, yaml.safeDump(value)]\n : [key, value]\n )\n .filter(Boolean)\n .concat(Object.entries(ctx.nodeData), [\n [\n \"brick\",\n ctx.nodeData.type === \"template\"\n ? brickConf.template\n : brickConf.brick,\n ],\n [\"portal\", ctx.isPortalCanvas || brickConf.portal],\n ])\n ) as SnippetNodeInstance;\n}\n","import {\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 { 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 { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\n\nexport function useCanvasList(\n rootChildNodes: BuilderRuntimeNode[]\n): BuilderRuntimeNode[][] {\n return useMemo(() => {\n const mainCanvas: BuilderRuntimeNode[] = [];\n const portalCanvasList: BuilderRuntimeNode[][] = [];\n for (const child of rootChildNodes) {\n if (child.portal) {\n portalCanvasList.push([child]);\n } else {\n mainCanvas.push(child);\n }\n }\n return [mainCanvas, ...portalCanvasList, []];\n }, [rootChildNodes]);\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport { clamp } from \"lodash\";\nimport classNames from \"classnames\";\nimport { DragObjectWithType, useDrop } from \"react-dnd\";\nimport { EditorBrickAsComponent } from \"../EditorBrickAsComponent/EditorBrickAsComponent\";\nimport {\n BuilderCanvasSettings,\n BuilderDataTransferPayloadOfNodeToAdd,\n BuilderDataTransferPayloadOfNodeToMove,\n BuilderDataTransferType,\n BuilderGroupedChildNode,\n BuilderRuntimeNode,\n EditorSlotContentLayout,\n TemplateDelegatedContext,\n} from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport {\n getBuilderGroupedChildNodes,\n useBuilderGroupedChildNodes,\n} from \"../hooks/useBuilderGroupedChildNodes\";\nimport { useCanDrop } from \"../hooks/useCanDrop\";\nimport { DropPositionCursor, getDropPosition } from \"./getDropPosition\";\nimport { processDrop } from \"./processDrop\";\nimport { useBuilderDataManager } from \"../hooks/useBuilderDataManager\";\nimport { useCanvasList } from \"../hooks/useCanvasList\";\nimport { useBuilderData } from \"../hooks/useBuilderData\";\nimport { useBuilderContextMenuStatus } from \"../hooks/useBuilderContextMenuStatus\";\nimport { isCurrentTargetByClassName } from \"../EditorContainer/isCurrentTargetByClassName\";\n\nimport styles from \"./DropZone.module.css\";\n\nexport interface DropZoneProps {\n nodeUid?: number;\n isRoot?: boolean;\n separateCanvas?: boolean;\n isPortalCanvas?: boolean;\n independentPortalCanvas?: boolean;\n canvasIndex?: number;\n mountPoint: string;\n fullscreen?: boolean;\n delegatedContext?: TemplateDelegatedContext;\n dropZoneStyle?: React.CSSProperties;\n dropZoneBodyStyle?: React.CSSProperties;\n slotContentLayout?: EditorSlotContentLayout;\n showOutlineIfEmpty?: boolean;\n}\n\nexport interface DroppingContext {\n droppingParentUid: number;\n droppingParentInstanceId: string;\n droppingMountPoint: string;\n droppingChildNodes: BuilderRuntimeNode[];\n droppingSiblingGroups: BuilderGroupedChildNode[];\n}\n\nexport function DropZone({\n nodeUid,\n isRoot,\n separateCanvas,\n isPortalCanvas,\n independentPortalCanvas,\n canvasIndex,\n mountPoint,\n fullscreen,\n delegatedContext,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n}: DropZoneProps): React.ReactElement {\n const dropZoneBody = React.useRef<HTMLDivElement>();\n const [dropPositionCursor, setDropPositionCursor] =\n React.useState<DropPositionCursor>(null);\n const dropPositionCursorRef = React.useRef<DropPositionCursor>();\n const contextMenuStatus = useBuilderContextMenuStatus();\n const manager = useBuilderDataManager();\n const node = useBuilderNode({ nodeUid, isRoot });\n const groupedChildNodes = useBuilderGroupedChildNodes({\n nodeUid,\n isRoot,\n });\n\n const isGeneralizedPortalCanvas = independentPortalCanvas\n ? canvasIndex > 0\n : isPortalCanvas;\n const hasTabs = separateCanvas || independentPortalCanvas;\n\n const canDrop = useCanDrop();\n const refinedSlotContentLayout =\n slotContentLayout ?? EditorSlotContentLayout.BLOCK;\n\n const selfChildNodes = React.useMemo(\n () =>\n groupedChildNodes.find((group) => group.mountPoint === mountPoint)\n ?.childNodes ?? [],\n [groupedChildNodes, mountPoint]\n );\n\n const canvasList = useCanvasList(selfChildNodes);\n\n const selfChildNodesInCurrentCanvas = React.useMemo(\n () =>\n separateCanvas\n ? selfChildNodes.filter((child) =>\n Boolean(Number(Boolean(isPortalCanvas)) ^ Number(!child.portal))\n )\n : independentPortalCanvas\n ? canvasList[clamp(canvasIndex ?? 0, 0, canvasList.length - 1)]\n : selfChildNodes,\n [\n canvasIndex,\n independentPortalCanvas,\n isPortalCanvas,\n selfChildNodes,\n canvasList,\n separateCanvas,\n ]\n );\n\n const canvasSettings = React.useMemo(\n () =>\n selfChildNodesInCurrentCanvas[0]?.$$parsedProperties\n ._canvas_ as BuilderCanvasSettings,\n [selfChildNodesInCurrentCanvas]\n );\n\n const getDroppingIndexInFullCanvas = React.useCallback(\n (droppingIndexInCurrentCanvas: number) => {\n if (!hasTabs) {\n return droppingIndexInCurrentCanvas;\n }\n if (selfChildNodesInCurrentCanvas.length > 0) {\n const cursorNode =\n selfChildNodesInCurrentCanvas[\n droppingIndexInCurrentCanvas === 0\n ? 0\n : droppingIndexInCurrentCanvas - 1\n ];\n return (\n selfChildNodes.findIndex((child) => child === cursorNode) +\n (droppingIndexInCurrentCanvas === 0 ? 0 : 1)\n );\n }\n return isGeneralizedPortalCanvas ? selfChildNodes.length : 0;\n },\n [\n hasTabs,\n selfChildNodesInCurrentCanvas,\n isGeneralizedPortalCanvas,\n selfChildNodes,\n ]\n );\n\n const { nodes, edges } = useBuilderData();\n\n const getDroppingContext = React.useCallback(() => {\n if (delegatedContext) {\n const siblingGroups = getBuilderGroupedChildNodes({\n nodeUid: delegatedContext.templateUid,\n nodes,\n edges,\n doNotExpandTemplates: true,\n });\n return {\n droppingParentUid: delegatedContext.templateUid,\n droppingParentInstanceId: nodes.find(\n (item) => item.$$uid === delegatedContext.templateUid\n ).instanceId,\n droppingMountPoint: delegatedContext.templateMountPoint,\n droppingChildNodes:\n siblingGroups.find(\n (group) => group.mountPoint === delegatedContext.templateMountPoint\n )?.childNodes ?? [],\n droppingSiblingGroups: siblingGroups,\n };\n }\n return {\n droppingParentUid: node.$$uid,\n droppingParentInstanceId: node.instanceId,\n droppingMountPoint: mountPoint,\n droppingChildNodes: selfChildNodes,\n droppingSiblingGroups: groupedChildNodes,\n };\n }, [\n delegatedContext,\n edges,\n groupedChildNodes,\n mountPoint,\n node,\n nodes,\n selfChildNodes,\n ]);\n\n const [{ isDraggingOverCurrent }, dropRef] = useDrop({\n accept: [\n BuilderDataTransferType.NODE_TO_ADD,\n BuilderDataTransferType.NODE_TO_MOVE,\n BuilderDataTransferType.SNIPPET_TO_APPLY,\n ],\n canDrop: (\n item: DragObjectWithType &\n (\n | BuilderDataTransferPayloadOfNodeToAdd\n | BuilderDataTransferPayloadOfNodeToMove\n )\n ) =>\n independentPortalCanvas && isGeneralizedPortalCanvas\n ? selfChildNodesInCurrentCanvas.length === 0\n : item.type === BuilderDataTransferType.NODE_TO_ADD ||\n item.type === BuilderDataTransferType.SNIPPET_TO_APPLY ||\n isRoot ||\n canDrop(\n (item as BuilderDataTransferPayloadOfNodeToMove).nodeUid,\n nodeUid\n ),\n collect: (monitor) => ({\n isDraggingOverCurrent:\n monitor.isOver({ shallow: true }) && monitor.canDrop(),\n }),\n hover: (item, monitor) => {\n if (monitor.isOver({ shallow: true }) && monitor.canDrop()) {\n const { x, y } = monitor.getClientOffset();\n dropPositionCursorRef.current = getDropPosition(\n x,\n y,\n dropZoneBody.current.parentElement,\n dropZoneBody.current\n );\n setDropPositionCursor(dropPositionCursorRef.current);\n }\n },\n drop: (item, monitor) => {\n if (!monitor.didDrop()) {\n const { type, ...data } = item;\n processDrop({\n type: type as BuilderDataTransferType,\n data,\n droppingIndex: getDroppingIndexInFullCanvas(\n dropPositionCursorRef.current.index\n ),\n isPortalCanvas: isGeneralizedPortalCanvas,\n manager,\n ...getDroppingContext(),\n });\n }\n },\n });\n\n React.useEffect(() => {\n manager.updateDroppingStatus(\n delegatedContext ? delegatedContext.templateUid : node.$$uid,\n delegatedContext ? delegatedContext.templateMountPoint : mountPoint,\n isDraggingOverCurrent\n );\n }, [isDraggingOverCurrent, mountPoint, manager, delegatedContext, node]);\n\n const droppable =\n !!delegatedContext ||\n !(node.$$isExpandableTemplate || node.$$isTemplateInternalNode);\n\n const dropZoneRef = React.useRef<HTMLElement>();\n\n const dropZoneRefCallback = React.useCallback(\n (element: HTMLElement) => {\n dropZoneRef.current = element;\n if (droppable) {\n dropRef(element);\n }\n },\n [dropRef, droppable]\n );\n\n const handleContextMenu = React.useCallback(\n (event: React.MouseEvent) => {\n // `event.stopPropagation()` not working across bricks.\n if (\n !isGeneralizedPortalCanvas &&\n isCurrentTargetByClassName(\n event.target as HTMLElement,\n dropZoneRef.current\n )\n ) {\n event.preventDefault();\n manager.contextMenuChange({\n active: true,\n node,\n x: event.clientX,\n y: event.clientY,\n });\n }\n },\n [isGeneralizedPortalCanvas, manager, node]\n );\n\n return (\n <div\n ref={dropZoneRefCallback}\n className={classNames(\n styles.dropZone,\n isRoot\n ? classNames(\n styles.isRoot,\n canvasSettings?.mode &&\n String(canvasSettings.mode)\n .split(/\\s+/g)\n .map((mode) => styles[`mode-${mode}`]),\n {\n [styles.fullscreen]: fullscreen,\n [styles.hasTabs]: hasTabs,\n }\n )\n : styles.isSlot,\n {\n [styles.isPortalCanvas]: isGeneralizedPortalCanvas,\n [styles.dropping]: isDraggingOverCurrent,\n [styles.active]:\n isRoot &&\n contextMenuStatus.active &&\n contextMenuStatus.node.$$uid === node.$$uid,\n [styles.showOutlineIfEmpty]:\n !isRoot && showOutlineIfEmpty && selfChildNodes.length === 0,\n [styles.slotContentLayoutBlock]:\n refinedSlotContentLayout === EditorSlotContentLayout.BLOCK,\n [styles.slotContentLayoutInline]:\n refinedSlotContentLayout === EditorSlotContentLayout.INLINE,\n [styles.slotContentLayoutGrid]:\n refinedSlotContentLayout === EditorSlotContentLayout.GRID,\n }\n )}\n style={dropZoneStyle}\n onContextMenu={isRoot ? handleContextMenu : null}\n >\n <div\n ref={dropZoneBody}\n className={styles.dropZoneBody}\n style={dropZoneBodyStyle}\n >\n {selfChildNodesInCurrentCanvas.map((child) => (\n <EditorBrickAsComponent\n key={child.$$uid}\n node={child}\n slotContentLayout={refinedSlotContentLayout}\n />\n ))}\n </div>\n {\n <div\n className={classNames(\n styles.dropCursor,\n dropPositionCursor?.isVertical\n ? styles.dropCursorVertical\n : styles.dropCursorHorizontal\n )}\n style={{\n top: dropPositionCursor?.y,\n left: dropPositionCursor?.x,\n height: dropPositionCursor?.height,\n }}\n ></div>\n }\n </div>\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React, { useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { DropZone } from \"../DropZone/DropZone\";\nimport { EditorSlotContentLayout } from \"../interfaces\";\nimport { useBuilderNode } from \"../hooks/useBuilderNode\";\nimport { useDroppingStatus } from \"../hooks/useDroppingStatus\";\n\nimport styles from \"./SlotContainer.module.css\";\n\nexport interface SlotContainerProps {\n nodeUid: number;\n slotName: string;\n slotContainerStyle?: React.CSSProperties;\n dropZoneStyle?: React.CSSProperties;\n dropZoneBodyStyle?: React.CSSProperties;\n slotContentLayout?: EditorSlotContentLayout;\n showOutlineIfEmpty?: boolean;\n}\n\nexport function SlotContainer({\n nodeUid,\n slotName,\n slotContainerStyle,\n dropZoneStyle,\n dropZoneBodyStyle,\n slotContentLayout,\n showOutlineIfEmpty,\n}: SlotContainerProps): React.ReactElement {\n const node = useBuilderNode({ nodeUid });\n const droppingStatus = useDroppingStatus();\n\n const delegatedContext = useMemo(() => {\n const delegatedSlots = node.$$delegatedSlots?.get(slotName);\n // Ignore when there are more than one delegated slots on a single slot.\n return delegatedSlots?.length === 1 ? delegatedSlots[0] : null;\n }, [node, slotName]);\n\n return (\n <div\n className={classNames(styles.slotContainer, {\n [styles.dropping]: droppingStatus\n .get(delegatedContext ? delegatedContext.templateUid : nodeUid)\n ?.get(\n delegatedContext ? delegatedContext.templateMountPoint : slotName\n ),\n })}\n style={slotContainerStyle}\n >\n <div className={styles.slotName}>\n {delegatedContext ? delegatedContext.templateMountPoint : slotName}\n </div>\n <DropZone\n nodeUid={nodeUid}\n mountPoint={slotName}\n delegatedContext={delegatedContext}\n dropZoneStyle={dropZoneStyle}\n dropZoneBodyStyle={dropZoneBodyStyle}\n slotContentLayout={slotContentLayout}\n showOutlineIfEmpty={showOutlineIfEmpty}\n />\n </div>\n );\n}\n","// See https://github.com/react-dnd/react-dnd/blob/main/packages/react-dnd/src/common/DndProvider.tsx\nimport React from \"react\";\nimport {\n BuilderContext,\n ContextOfBuilder,\n createBuilderContext,\n} from \"./BuilderContext\";\n\nexport const BuilderProvider = React.memo(LegacyBuilderProvider);\n\nconst instanceSymbol = Symbol.for(\"__BRICK_NEXT_BUILDER_CONTEXT_INSTANCE__\");\nfunction createSingletonBuilderContext(): ContextOfBuilder {\n const ctx = window as any;\n if (!ctx[instanceSymbol]) {\n ctx[instanceSymbol] = createBuilderContext();\n }\n return ctx[instanceSymbol];\n}\n\nlet refCount = 0;\n\nfunction LegacyBuilderProvider({\n children,\n}: React.PropsWithChildren<any>): React.ReactElement {\n const context = createSingletonBuilderContext();\n\n /**\n * If the global context was used to store the DND context\n * then where theres no more references to it we should\n * clean it up to avoid memory leaks\n */\n React.useEffect(() => {\n refCount++;\n\n return () => {\n refCount--;\n\n if (refCount === 0) {\n (window as any)[instanceSymbol] = null;\n }\n };\n }, []);\n\n return (\n <BuilderContext.Provider value={context}>\n {children}\n </BuilderContext.Provider>\n );\n}\n","/* istanbul-ignore-file */\n// Todo(steve): Ignore tests temporarily for potential breaking change in the future.\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { UpdatingElement, property, BrickWrapper } from \"@next-core/brick-kit\";\nimport { StoryDoc } from \"@next-core/brick-types\";\nimport { EditorSelfLayout } from \"./interfaces\";\nimport { BuilderProvider } from \"./BuilderProvider\";\n\nexport interface EditorComponentProps {\n nodeUid: number;\n editorProps?: StoryDoc[\"editorProps\"];\n}\n\nexport type EditorComponentType = React.FunctionComponent<EditorComponentProps>;\n\nexport interface EditorBrickElement extends HTMLElement {\n nodeUid: number;\n}\n\nexport interface EditorBrickElementConstructor {\n new (): EditorBrickElement;\n readonly selfLayout: EditorSelfLayout;\n}\n\nexport interface EditorElementOptions {\n brickStyle?: Record<string, string>;\n selfLayout?: EditorSelfLayout;\n}\n\nexport function EditorElementFactory(\n EditorComponent: EditorComponentType,\n options?: EditorElementOptions\n): EditorBrickElementConstructor {\n class NewEditorElement extends UpdatingElement {\n static get selfLayout(): EditorSelfLayout {\n return options?.selfLayout;\n }\n\n @property({ type: Number })\n nodeUid: number;\n\n @property({ attribute: false })\n editorProps: StoryDoc[\"editorProps\"];\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n if (options?.brickStyle) {\n for (const [key, value] of Object.entries(options.brickStyle)) {\n (this.style as unknown as Record<string, string>)[key] = value;\n }\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected && this.nodeUid) {\n ReactDOM.render(\n <BrickWrapper>\n <BuilderProvider>\n <DndProvider backend={HTML5Backend}>\n <EditorComponent\n nodeUid={this.nodeUid}\n editorProps={this.editorProps}\n />\n </DndProvider>\n </BuilderProvider>\n </BrickWrapper>,\n this\n );\n }\n }\n }\n return NewEditorElement;\n}\n","import { createContext, Dispatch, SetStateAction } from \"react\";\n\n// It indicates which mount point of a container is active dropping zone.\ntype DroppingStatus = {\n [mountPoint: string]: boolean;\n};\n\ninterface ContextOfDroppingStatus {\n droppingStatus?: DroppingStatus;\n setDroppingStatus?: Dispatch<SetStateAction<DroppingStatus>>;\n}\n\n// Todo(steve): remove this file.\n/** @deprecated no more usage but for compatibility only. */\nexport const DroppingStatusContext = createContext<ContextOfDroppingStatus>({});\n","import { useMemo } from \"react\";\nimport { sortBy } from \"lodash\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderNodeMountPoints({\n nodeUid,\n isRoot,\n doNotExpandTemplates,\n}: {\n nodeUid?: number;\n isRoot?: boolean;\n doNotExpandTemplates?: boolean;\n}): string[] {\n const { rootId, edges } = useBuilderData();\n const currentUid = isRoot ? rootId : nodeUid;\n return useMemo(() => {\n const mountPoints = new Set<string>();\n const relatedEdges = sortBy(\n edges.filter(\n (edge) =>\n edge.parent === currentUid &&\n (doNotExpandTemplates\n ? !edge.$$isTemplateInternal\n : !edge.$$isTemplateDelegated)\n ),\n [(edge) => edge.sort]\n );\n for (const edge of relatedEdges) {\n mountPoints.add(edge.mountPoint);\n }\n return Array.from(mountPoints);\n }, [currentUid, edges, doNotExpandTemplates]);\n}\n","import { useMemo } from \"react\";\nimport { BuilderRuntimeNode } from \"../interfaces\";\nimport { useBuilderData } from \"./useBuilderData\";\n\nexport function useBuilderParentNode(nodeUid: number): BuilderRuntimeNode {\n const { nodes, edges } = useBuilderData();\n return useMemo(() => {\n const parentUid = edges.find(\n (edge) => edge.child === nodeUid && !edge.$$isTemplateExpanded\n ).parent;\n return nodes.find((node) => node.$$uid === parentUid);\n }, [edges, nodeUid, nodes]);\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\nimport { BuilderRouteNode } from \"@next-core/brick-types\";\n\nexport function useRouteList(): BuilderRouteNode[] {\n const manager = useBuilderDataManager();\n const [data, setData] = useState(manager.getRouteList());\n useEffect(\n () =>\n manager.onRouteListChange(() => {\n setData(manager.getRouteList());\n }),\n [manager]\n );\n return data;\n}\n","import { useEffect, useState } from \"react\";\nimport { useBuilderDataManager } from \"./useBuilderDataManager\";\n\nexport function useOutlineEnabled(\n nodeInstanceId: string,\n inapplicable?: boolean\n): boolean {\n const manager = useBuilderDataManager();\n const [enabled, setEnabled] = useState(\n inapplicable ? false : manager.isOutlineEnabled(nodeInstanceId)\n );\n useEffect(() => {\n if (!inapplicable) {\n return manager.onOutlineEnabledNodesChange(() => {\n setEnabled(manager.isOutlineEnabled(nodeInstanceId));\n });\n }\n }, [inapplicable, manager, nodeInstanceId]);\n return enabled;\n}\n","module.exports = dll;","module.exports = (__webpack_require__(\"XuQu\"))(\"ZR4k\");","module.exports = (__webpack_require__(\"XuQu\"))(\"i8i4\");","module.exports = (__webpack_require__(\"XuQu\"))(\"lSNA\");","module.exports = (__webpack_require__(\"/8r5\"))(\"q1tI\");","module.exports = (__webpack_require__(\"/8r5\"))(\"qJlv\");","module.exports = (__webpack_require__(\"XuQu\"))(\"tYg3\");","module.exports = (__webpack_require__(\"XuQu\"))(\"yXPU\");"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-dll/editor-bricks-helper",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.60",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-core/tree/master/dll/editor-bricks-helper",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"postbuild": "dll-differ"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@next-core/editor-bricks-helper": "^0.32.
|
|
18
|
+
"@next-core/editor-bricks-helper": "^0.32.36"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@next-core/brick-dll": "^2.26.
|
|
22
|
-
"@next-core/webpack-config-factory": "^2.14.
|
|
23
|
-
"@next-dll/react-dnd": "^0.1.
|
|
21
|
+
"@next-core/brick-dll": "^2.26.26",
|
|
22
|
+
"@next-core/webpack-config-factory": "^2.14.6",
|
|
23
|
+
"@next-dll/react-dnd": "^0.1.228"
|
|
24
24
|
},
|
|
25
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "7cda848a0251c7b3aa54b37f73c9608454364fed"
|
|
26
26
|
}
|