@next-core/editor-bricks-helper 0.39.30 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
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.40.0](https://github.com/easyops-cn/next-core/compare/@next-core/editor-bricks-helper@0.39.32...@next-core/editor-bricks-helper@0.40.0) (2022-06-02)
7
+
8
+
9
+ ### Features
10
+
11
+ * **BuilderDataManager:** support workbench move ([d6f892e](https://github.com/easyops-cn/next-core/commit/d6f892e684586873098fa1790001b4c8c8d690db))
12
+ * **BuilderDataManager:** support workbench move ([e37f490](https://github.com/easyops-cn/next-core/commit/e37f490c5580182da3638ad9ffa81267b51638aa))
13
+
14
+
15
+
16
+
17
+
18
+ ## [0.39.32](https://github.com/easyops-cn/next-core/compare/@next-core/editor-bricks-helper@0.39.31...@next-core/editor-bricks-helper@0.39.32) (2022-06-01)
19
+
20
+ **Note:** Version bump only for package @next-core/editor-bricks-helper
21
+
22
+
23
+
24
+
25
+
26
+ ## [0.39.31](https://github.com/easyops-cn/next-core/compare/@next-core/editor-bricks-helper@0.39.30...@next-core/editor-bricks-helper@0.39.31) (2022-05-27)
27
+
28
+ **Note:** Version bump only for package @next-core/editor-bricks-helper
29
+
30
+
31
+
32
+
33
+
6
34
  ## [0.39.30](https://github.com/easyops-cn/next-core/compare/@next-core/editor-bricks-helper@0.39.29...@next-core/editor-bricks-helper@0.39.30) (2022-05-26)
7
35
 
8
36
  **Note:** Version bump only for package @next-core/editor-bricks-helper
@@ -678,6 +678,7 @@
678
678
  BuilderInternalEventType["HIGHLIGHT_NODES_CHANGE"] = "builder.highlightNodes.change";
679
679
  BuilderInternalEventType["OUTLINE_DISABLED_NODES_CHANGE"] = "builder.outlineDisabledNodes.change";
680
680
  BuilderInternalEventType["DROPPING_STATUS_CHANGE"] = "builder.droppingStatus.change";
681
+ BuilderInternalEventType["WORKBENCH_TREE_NODE_MOVE"] = "workbench.tree.node.move";
681
682
  })(BuilderInternalEventType || (BuilderInternalEventType = {}));
682
683
 
683
684
  var storageKeyOfOutlineDisabledNodes = "builder-outline-disabled-nodes";
@@ -1063,6 +1064,93 @@
1063
1064
  var orderedEdges = lodash.sortBy(relatedEdges, edge => mountPoints.indexOf(edge.mountPoint), edge => orderedSiblingEdges.indexOf(edge));
1064
1065
  this.reorder(parentUid, orderedEdges);
1065
1066
  }
1067
+
1068
+ workbenchTreeNodeMove(detail) {
1069
+ var {
1070
+ rootId,
1071
+ nodes,
1072
+ edges,
1073
+ wrapperNode
1074
+ } = this.data;
1075
+ var {
1076
+ dragNodeUid,
1077
+ dragOverNodeUid,
1078
+ dragParentNodeUid,
1079
+ dragStatus
1080
+ } = detail;
1081
+ var isDragRoot = dragOverNodeUid === rootId;
1082
+ var nodeData = nodes.find(item => item.$$uid === dragNodeUid);
1083
+ var dragEdge = edges.find(item => item.child === dragNodeUid);
1084
+ var dragOverEdge = edges.find(item => item.child === dragOverNodeUid);
1085
+ /**
1086
+ * 如果是根节点, 则mountPoint强制等于 bricks
1087
+ * 如果是属于拖动进某个节点中, 则使用原mountPoint
1088
+ * 其他情况, 使用被拖拽节点的mountPoint
1089
+ */
1090
+
1091
+ var mountPoint = isDragRoot ? "bricks" : dragStatus === "inside" ? dragEdge.mountPoint : dragOverEdge.mountPoint;
1092
+ var parentEdge = edges.find(item => item.child === dragOverNodeUid);
1093
+ /**
1094
+ * 如果是根节点, parentUid强制等于rootId
1095
+ * 如果是拖动进某个节点, 则当前节点为该节点parent
1096
+ * 否则, 等于该节点的父节点
1097
+ */
1098
+
1099
+ var parentUid = isDragRoot ? rootId : dragStatus === "inside" ? parentEdge.child : parentEdge.parent;
1100
+ var parnetNodeData = nodes.find(item => item.$$uid === parentUid); // 找到节点父亲等于拖动节点的父节点(寻找兄弟节点)
1101
+
1102
+ var siblingEdge = edges.filter(edge => edge.child !== dragNodeUid && edge.parent === parentUid);
1103
+ var sortUids = lodash.sortBy(siblingEdge, "sort").map(item => item.child);
1104
+ var sortNodeIds = sortUids.map(item => {
1105
+ return nodes.find(node => node.$$uid === item).id;
1106
+ });
1107
+ var sortIndex;
1108
+
1109
+ if (dragStatus === "inside") {
1110
+ sortIndex = siblingEdge.length ? Math.max(...siblingEdge.map(item => item.sort)) + 1 : 0; // 插入默认插最后
1111
+
1112
+ sortNodeIds.push(nodeData.id);
1113
+ } else if (dragStatus === "top" || dragStatus === "bottom") {
1114
+ var _dragEdge = edges.find(edge => edge.child === dragNodeUid);
1115
+
1116
+ var overIndex = sortUids.findIndex(item => item === dragOverNodeUid);
1117
+ sortIndex = dragStatus === "top" ? overIndex : overIndex + 1; // 排序修正
1118
+
1119
+ sortNodeIds.splice(sortIndex, 0, nodeData.id);
1120
+ sortUids.splice(sortIndex, 0, _dragEdge.child);
1121
+ }
1122
+
1123
+ var newData = {
1124
+ rootId,
1125
+ nodes,
1126
+ edges: edges.filter(edge => edge.child !== dragNodeUid).concat({
1127
+ parent: dragParentNodeUid,
1128
+ child: dragNodeUid,
1129
+ mountPoint: mountPoint,
1130
+ sort: sortIndex,
1131
+ $$isTemplateDelegated: isParentExpandableTemplate(nodes, dragParentNodeUid)
1132
+ }),
1133
+ wrapperNode
1134
+ };
1135
+ this.data = _objectSpread__default["default"](_objectSpread__default["default"]({}, newData), {}, {
1136
+ edges: reorderBuilderEdges(newData, {
1137
+ parentUid,
1138
+ nodeUids: sortUids
1139
+ })
1140
+ });
1141
+ this.triggerDataChange();
1142
+ this.eventTarget.dispatchEvent(new CustomEvent(BuilderInternalEventType.WORKBENCH_TREE_NODE_MOVE, {
1143
+ detail: {
1144
+ nodeUid: dragNodeUid,
1145
+ nodeInstanceId: nodeData.instanceId,
1146
+ nodeIds: sortNodeIds,
1147
+ nodeData: {
1148
+ parent: parnetNodeData.instanceId,
1149
+ mountPoint: mountPoint
1150
+ }
1151
+ }
1152
+ }));
1153
+ }
1066
1154
  /**
1067
1155
  * Move mount-point up or down.
1068
1156
  */
@@ -1196,6 +1284,13 @@
1196
1284
  };
1197
1285
  }
1198
1286
 
1287
+ onWorkbenchTreeNodeMove(fn) {
1288
+ this.eventTarget.addEventListener(BuilderInternalEventType.WORKBENCH_TREE_NODE_MOVE, fn);
1289
+ return () => {
1290
+ this.eventTarget.removeEventListener(BuilderInternalEventType.WORKBENCH_TREE_NODE_MOVE, fn);
1291
+ };
1292
+ }
1293
+
1199
1294
  onNodeClick(fn) {
1200
1295
  this.eventTarget.addEventListener(BuilderInternalEventType.NODE_CLICK, fn);
1201
1296
  return () => {