bkui-vue 2.1.0-dev-beta.10 → 2.1.0-dev-beta.11

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/lib/tree/index.js CHANGED
@@ -17461,7 +17461,7 @@ function toPropertyKey(t) {
17461
17461
 
17462
17462
  ;// CONCATENATED MODULE: ../../node_modules/@babel/runtime/helpers/esm/defineProperty.js
17463
17463
 
17464
- function _defineProperty(e, r, t) {
17464
+ function defineProperty_defineProperty(e, r, t) {
17465
17465
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
17466
17466
  value: t,
17467
17467
  enumerable: !0,
@@ -17500,9 +17500,12 @@ var _TreeEmitEventsType;
17500
17500
  */
17501
17501
  var EVENTS;
17502
17502
  (function (EVENTS) {
17503
+ EVENTS["NODE_ASYNC_LOAD"] = "nodeAsyncLoad";
17504
+ EVENTS["NODE_ASYNC_LOAD_ERROR"] = "nodeAsyncLoadError";
17503
17505
  EVENTS["NODE_CHECKED"] = "nodeChecked";
17504
17506
  EVENTS["NODE_CLICK"] = "nodeClick";
17505
17507
  EVENTS["NODE_COLLAPSE"] = "nodeCollapse";
17508
+ EVENTS["NODE_DATA_CHANGE"] = "nodeDataChange";
17506
17509
  EVENTS["NODE_DRAG_LEAVE"] = "nodeDragLeave";
17507
17510
  EVENTS["NODE_DRAG_OVER"] = "nodeDragOver";
17508
17511
  EVENTS["NODE_DRAG_SORT"] = "nodeDragSort";
@@ -17515,7 +17518,7 @@ var EVENTS;
17515
17518
  var EMPTY = function EMPTY() {
17516
17519
  return true;
17517
17520
  };
17518
- var TreeEmitEventsType = (_TreeEmitEventsType = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_TreeEmitEventsType, EVENTS.NODE_CLICK, EMPTY), EVENTS.NODE_COLLAPSE, EMPTY), EVENTS.NODE_EXPAND, EMPTY), EVENTS.NODE_CHECKED, EMPTY), EVENTS.NODE_DRAG_START, EMPTY), EVENTS.NODE_DRAG_OVER, EMPTY), EVENTS.NODE_DRAG_LEAVE, EMPTY), EVENTS.NODE_DRAG_SORT, EMPTY), EVENTS.NODE_DROP, EMPTY), EVENTS.NODE_ENTER_VIEW, EMPTY), _defineProperty(_TreeEmitEventsType, EVENTS.NODE_SELECTED, EMPTY));
17521
+ var TreeEmitEventsType = (_TreeEmitEventsType = {}, defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(_TreeEmitEventsType, EVENTS.NODE_ASYNC_LOAD, EMPTY), EVENTS.NODE_ASYNC_LOAD_ERROR, EMPTY), EVENTS.NODE_CLICK, EMPTY), EVENTS.NODE_COLLAPSE, EMPTY), EVENTS.NODE_EXPAND, EMPTY), EVENTS.NODE_CHECKED, EMPTY), EVENTS.NODE_DATA_CHANGE, EMPTY), EVENTS.NODE_DRAG_START, EMPTY), EVENTS.NODE_DRAG_OVER, EMPTY), EVENTS.NODE_DRAG_LEAVE, EMPTY), defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(_TreeEmitEventsType, EVENTS.NODE_DRAG_SORT, EMPTY), EVENTS.NODE_DROP, EMPTY), EVENTS.NODE_ENTER_VIEW, EMPTY), EVENTS.NODE_SELECTED, EMPTY));
17519
17522
  /**
17520
17523
  * 节点扩展属性
17521
17524
  */
@@ -17542,7 +17545,7 @@ var NODE_ATTRIBUTES;
17542
17545
  NODE_ATTRIBUTES["TREE_NODE_ATTR"] = "__attr__";
17543
17546
  NODE_ATTRIBUTES["UUID"] = "__uuid";
17544
17547
  })(NODE_ATTRIBUTES || (NODE_ATTRIBUTES = {}));
17545
- var NODE_SOURCE_ATTRS = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, NODE_ATTRIBUTES.IS_OPEN, 'isOpen'), NODE_ATTRIBUTES.IS_SELECTED, 'selected'), NODE_ATTRIBUTES.IS_MATCH, 'isMatch'), NODE_ATTRIBUTES.HAS_CHILD, 'hasChild'), NODE_ATTRIBUTES.IS_CHECKED, 'checked'), NODE_ATTRIBUTES.IS_ASYNC, 'async'), NODE_ATTRIBUTES.IS_LOADING, 'loading'), NODE_ATTRIBUTES.IS_ROOT, 'isRoot');
17548
+ var NODE_SOURCE_ATTRS = defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty({}, NODE_ATTRIBUTES.IS_OPEN, 'isOpen'), NODE_ATTRIBUTES.IS_SELECTED, 'selected'), NODE_ATTRIBUTES.IS_MATCH, 'isMatch'), NODE_ATTRIBUTES.HAS_CHILD, 'hasChild'), NODE_ATTRIBUTES.IS_CHECKED, 'checked'), NODE_ATTRIBUTES.IS_ASYNC, 'async'), NODE_ATTRIBUTES.IS_LOADING, 'loading'), NODE_ATTRIBUTES.IS_ROOT, 'isRoot');
17546
17549
  /**
17547
17550
  * 节点点击可执行行为配置
17548
17551
  */
@@ -17623,6 +17626,10 @@ var treeProps = {
17623
17626
  * 默认 true
17624
17627
  */
17625
17628
  prefixIcon: shared_namespaceObject.PropTypes.oneOfType([shared_namespaceObject.PropTypes.func.def(function () {}), shared_namespaceObject.PropTypes.bool.def(false)]).def(true),
17629
+ /**
17630
+ * 当树数据需要由外部接管更新时的统一回调
17631
+ */
17632
+ onDataChange: Function,
17626
17633
  /**
17627
17634
  * 异步加载节点数据配置
17628
17635
  * @param callback 请求数据回调函数,函数返回 Promise
@@ -17777,6 +17784,10 @@ var treeProps = {
17777
17784
  * 在显示复选框的情况下,是否严格的遵循父子互相关联的做法
17778
17785
  */
17779
17786
  checkStrictly: shared_namespaceObject.PropTypes.bool.def(true),
17787
+ /**
17788
+ * 是否开启父子勾选级联;未传时沿用 checkStrictly 历史语义
17789
+ */
17790
+ cascade: shared_namespaceObject.PropTypes.bool.def(undefined),
17780
17791
  /**
17781
17792
  * 是否开启监听Tree节点进入Tree容器可视区域
17782
17793
  */
@@ -18026,16 +18037,10 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18026
18037
  var getSchemaVal = function getSchemaVal(node) {
18027
18038
  return flatData.schema.get(node);
18028
18039
  };
18029
- /**
18030
- * 获取节点属性
18031
- * @param node 当前节点
18032
- * @param attr 节点属性
18033
- * @returns
18034
- */
18035
- var getNodeAttr = function getNodeAttr(node, attr) {
18040
+ function getNodeAttr(node, attr) {
18036
18041
  var _getSchemaVal;
18037
- return (_getSchemaVal = getSchemaVal(node)) === null || _getSchemaVal === void 0 ? void 0 : _getSchemaVal[attr];
18038
- };
18042
+ return node ? (_getSchemaVal = getSchemaVal(node)) === null || _getSchemaVal === void 0 ? void 0 : _getSchemaVal[attr] : undefined;
18043
+ }
18039
18044
  /**
18040
18045
  * 设置节点属性
18041
18046
  * @param node 指定节点
@@ -18048,11 +18053,12 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18048
18053
  console.warn('node is not in schema, please check', id, node);
18049
18054
  return;
18050
18055
  }
18051
- flatData.schema.set(node, Object.assign({}, getSchemaVal(node), _defineProperty({}, attr, val)));
18056
+ flatData.schema.set(node, Object.assign({}, getSchemaVal(node), defineProperty_defineProperty({}, attr, val)));
18052
18057
  };
18053
18058
  var getNodeById = function getNodeById(id) {
18054
- return flatData.data.find(function (item) {
18055
- return getNodeId(item) === id;
18059
+ var _flatData$nodeMap$get, _flatData$nodeMap;
18060
+ return (_flatData$nodeMap$get = (_flatData$nodeMap = flatData.nodeMap) === null || _flatData$nodeMap === void 0 ? void 0 : _flatData$nodeMap.get("".concat(id))) !== null && _flatData$nodeMap$get !== void 0 ? _flatData$nodeMap$get : flatData.data.find(function (item) {
18061
+ return "".concat(getNodeId(item)) === "".concat(id);
18056
18062
  });
18057
18063
  };
18058
18064
  var setNodeAttrById = function setNodeAttrById(id, attr, val) {
@@ -18071,33 +18077,31 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18071
18077
  return getNodeAttr(node, NODE_ATTRIBUTES.UUID);
18072
18078
  };
18073
18079
  var isNodeOpened = function isNodeOpened(node) {
18074
- return getNodeAttr(node, NODE_ATTRIBUTES.IS_OPEN);
18080
+ return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_OPEN);
18075
18081
  };
18076
18082
  var hasChildNode = function hasChildNode(node) {
18077
- return getNodeAttr(node, NODE_ATTRIBUTES.HAS_CHILD);
18083
+ return !!getNodeAttr(node, NODE_ATTRIBUTES.HAS_CHILD);
18078
18084
  };
18079
18085
  var isNodeMatched = function isNodeMatched(node) {
18080
- return getNodeAttr(node, NODE_ATTRIBUTES.IS_MATCH);
18086
+ return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_MATCH);
18081
18087
  };
18082
18088
  var isNodeChecked = function isNodeChecked(node) {
18083
- return getNodeAttr(node, NODE_ATTRIBUTES.IS_CHECKED);
18089
+ return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_CHECKED);
18084
18090
  };
18085
18091
  var getNodeParentId = function getNodeParentId(node) {
18086
18092
  return getNodeAttr(getNodeAttr(node, NODE_ATTRIBUTES.PARENT), NODE_ATTRIBUTES.UUID);
18087
18093
  };
18088
18094
  var isNodeLoading = function isNodeLoading(node) {
18089
- return getNodeAttr(node, NODE_ATTRIBUTES.IS_LOADING);
18095
+ return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_LOADING);
18090
18096
  };
18091
18097
  var getParentNode = function getParentNode(node) {
18092
18098
  return getNodeAttr(node, NODE_ATTRIBUTES.PARENT);
18093
18099
  };
18094
18100
  var isMatchedNode = function isMatchedNode(node) {
18095
- return getNodeAttr(node, NODE_ATTRIBUTES.IS_MATCH);
18101
+ return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_MATCH);
18096
18102
  };
18097
18103
  var getNodeAttrById = function getNodeAttrById(id, attr) {
18098
- var target = flatData.data.find(function (item) {
18099
- return getNodeId(item) === id;
18100
- });
18104
+ var target = getNodeById(id);
18101
18105
  return getNodeAttr(target, attr);
18102
18106
  };
18103
18107
  /**
@@ -18118,20 +18122,16 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18118
18122
  };
18119
18123
  var isRootNode = function isRootNode(node) {
18120
18124
  if (typeof node === 'string') {
18121
- return getNodeAttrById(node, NODE_ATTRIBUTES.IS_ROOT);
18125
+ return !!getNodeAttrById(node, NODE_ATTRIBUTES.IS_ROOT);
18122
18126
  }
18123
- return getNodeAttr(node, NODE_ATTRIBUTES.IS_ROOT);
18127
+ return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_ROOT);
18124
18128
  };
18125
18129
  var getNodeParentIdById = function getNodeParentIdById(id) {
18126
- var target = flatData.data.find(function (item) {
18127
- return getNodeId(item) === id;
18128
- });
18130
+ var target = getNodeById(id);
18129
18131
  return getNodeParentId(target);
18130
18132
  };
18131
18133
  var getNodePathById = function getNodePathById(id) {
18132
- var target = flatData.data.find(function (item) {
18133
- return getNodeId(item) === id;
18134
- });
18134
+ var target = getNodeById(id);
18135
18135
  return getNodePath(target);
18136
18136
  };
18137
18137
  var setTreeNodeLoading = function setTreeNodeLoading(node, value) {
@@ -18179,19 +18179,18 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18179
18179
  return Array.isArray(pre) ? pre[index] : pre[props.children][index];
18180
18180
  }, props.data);
18181
18181
  if (uid) {
18182
- Object.assign(target, _defineProperty({}, NODE_ATTRIBUTES.UUID, uid));
18182
+ Object.assign(target, defineProperty_defineProperty({}, NODE_ATTRIBUTES.UUID, uid));
18183
18183
  }
18184
18184
  return target;
18185
18185
  };
18186
18186
  var getChildNodes = function getChildNodes(node) {
18187
- return flatData.data.filter(function (item) {
18187
+ var _flatData$childMap$ge, _flatData$childMap;
18188
+ return (_flatData$childMap$ge = (_flatData$childMap = flatData.childMap) === null || _flatData$childMap === void 0 ? void 0 : _flatData$childMap.get(node)) !== null && _flatData$childMap$ge !== void 0 ? _flatData$childMap$ge : flatData.data.filter(function (item) {
18188
18189
  return getParentNode(item) === node;
18189
18190
  });
18190
18191
  };
18191
18192
  var getSourceNodeByUID = function getSourceNodeByUID(uid) {
18192
- return flatData.data.find(function (item) {
18193
- return getNodeId(item) === uid;
18194
- });
18193
+ return getNodeById(uid);
18195
18194
  };
18196
18195
  var getParentNodeData = function getParentNodeData(node) {
18197
18196
  var target = node;
@@ -18199,7 +18198,7 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18199
18198
  target = getSourceNodeByUID(target);
18200
18199
  }
18201
18200
  if (isRootNode(target)) {
18202
- return _defineProperty({}, props.children, props.data);
18201
+ return defineProperty_defineProperty({}, props.children, props.data);
18203
18202
  }
18204
18203
  return getParentNode(target);
18205
18204
  };
@@ -18209,10 +18208,10 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18209
18208
  * @returns
18210
18209
  */
18211
18210
  var resolveScopedSlotParam = function resolveScopedSlotParam(item) {
18212
- return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_LOADING], getNodeAttr(item, NODE_ATTRIBUTES.IS_LOADING)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.HAS_CHILD], hasChildNode(item)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_MATCH], isNodeMatched(item)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_CHECKED], isNodeChecked(item)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_OPEN], isNodeOpened(item)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_ROOT], isRootNode(item)), "fullPath", getNodeAttr(item, NODE_ATTRIBUTES.PATH)), "uuid", getNodeId(item)), "parent", getNodeAttr(item, NODE_ATTRIBUTES.PARENT)), "parentId", getNodeId(getNodeAttr(item, NODE_ATTRIBUTES.PARENT)));
18211
+ return defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty({}, NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_LOADING], getNodeAttr(item, NODE_ATTRIBUTES.IS_LOADING)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.HAS_CHILD], hasChildNode(item)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_MATCH], isNodeMatched(item)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_CHECKED], isNodeChecked(item)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_OPEN], isNodeOpened(item)), NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_ROOT], isRootNode(item)), "fullPath", getNodeAttr(item, NODE_ATTRIBUTES.PATH)), "uuid", getNodeId(item)), "parent", getNodeAttr(item, NODE_ATTRIBUTES.PARENT)), "parentId", getNodeId(getNodeAttr(item, NODE_ATTRIBUTES.PARENT)));
18213
18212
  };
18214
18213
  var extendNodeAttr = function extendNodeAttr(item) {
18215
- return Object.assign({}, item, _defineProperty({}, NODE_ATTRIBUTES.TREE_NODE_ATTR, resolveScopedSlotParam(item)));
18214
+ return Object.assign({}, item, defineProperty_defineProperty({}, NODE_ATTRIBUTES.TREE_NODE_ATTR, resolveScopedSlotParam(item)));
18216
18215
  };
18217
18216
  var extendNodeScopedData = function extendNodeScopedData(item) {
18218
18217
  return {
@@ -18226,7 +18225,6 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18226
18225
  * @returns
18227
18226
  */
18228
18227
  var getIntersectionResponse = function getIntersectionResponse(target) {
18229
- var _parent$props$childre;
18230
18228
  if (!target) {
18231
18229
  return null;
18232
18230
  }
@@ -18237,7 +18235,8 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18237
18235
  var level = getNodeAttr(node, NODE_ATTRIBUTES.DEPTH);
18238
18236
  var isRoot = getNodeAttr(node, NODE_ATTRIBUTES.IS_ROOT);
18239
18237
  var parent = getNodeAttr(node, NODE_ATTRIBUTES.PARENT);
18240
- var index = isRoot ? getNodeAttr(node, NODE_ATTRIBUTES.INDEX) : parent === null || parent === void 0 || (_parent$props$childre = parent[props.children]) === null || _parent$props$childre === void 0 ? void 0 : _parent$props$childre.findIndex(function (child) {
18238
+ var children = parent === null || parent === void 0 ? void 0 : parent[props.children];
18239
+ var index = isRoot ? getNodeAttr(node, NODE_ATTRIBUTES.INDEX) : children === null || children === void 0 ? void 0 : children.findIndex(function (child) {
18241
18240
  return child === node;
18242
18241
  });
18243
18242
  return {
@@ -18250,7 +18249,8 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18250
18249
  };
18251
18250
  };
18252
18251
  var getRootNodeList = function getRootNodeList() {
18253
- return flatData.data.filter(function (item) {
18252
+ var _flatData$rootNodes;
18253
+ return (_flatData$rootNodes = flatData.rootNodes) !== null && _flatData$rootNodes !== void 0 ? _flatData$rootNodes : flatData.data.filter(function (item) {
18254
18254
  return isRootNode(item);
18255
18255
  });
18256
18256
  };
@@ -18320,9 +18320,13 @@ function _toConsumableArray(r) {
18320
18320
 
18321
18321
 
18322
18322
 
18323
+
18323
18324
  var _this = undefined;
18325
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = util_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
18326
+ function util_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return util_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? util_arrayLikeToArray(r, a) : void 0; } }
18327
+ function util_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
18324
18328
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18325
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18329
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18326
18330
  /*
18327
18331
  * Tencent is pleased to support the open source community by making
18328
18332
  * 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
@@ -18462,7 +18466,7 @@ var getNodeItemClass = function getNodeItemClass(item, schema, props) {
18462
18466
  __is_open = _ref.__is_open;
18463
18467
  var _usePrefix = (0,config_provider_namespaceObject.usePrefix)(),
18464
18468
  resolveClassName = _usePrefix.resolveClassName;
18465
- return _defineProperty(_defineProperty(_defineProperty(_defineProperty({
18469
+ return defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty({
18466
18470
  'is-root': __is_root
18467
18471
  }, "".concat(resolveClassName('tree-node')), true), 'is-open', __is_open), 'is-virtual-render', props.virtualRender), 'level-line', props.levelLine && showTree);
18468
18472
  };
@@ -18475,11 +18479,13 @@ var getNodeRowClass = function getNodeRowClass(item, schema) {
18475
18479
  // eslint-disable-next-line @typescript-eslint/naming-convention
18476
18480
  var _ref3 = schema.get(item) || {},
18477
18481
  __is_checked = _ref3.__is_checked,
18482
+ __is_indeterminate = _ref3.__is_indeterminate,
18478
18483
  __is_selected = _ref3.__is_selected;
18479
18484
  var _usePrefix2 = (0,config_provider_namespaceObject.usePrefix)(),
18480
18485
  resolveClassName = _usePrefix2.resolveClassName;
18481
- return _defineProperty({
18486
+ return defineProperty_defineProperty({
18482
18487
  'is-checked': __is_checked,
18488
+ 'is-indeterminate': __is_indeterminate,
18483
18489
  'is-selected': __is_selected,
18484
18490
  'node-folder': item.is_folder,
18485
18491
  'node-leaf': item.is_leaf
@@ -18496,6 +18502,211 @@ var getNodeRowClass = function getNodeRowClass(item, schema) {
18496
18502
  var updateTreeNode = function updateTreeNode(path, treeData, childKey, nodekey, nodeValue) {
18497
18503
  assignTreeNode(path, treeData, childKey, _defineProperty({}, nodekey, nodeValue));
18498
18504
  };
18505
+ var _cloneTreeNode = function cloneTreeNode(node) {
18506
+ if (Array.isArray(node)) {
18507
+ return node.map(function (item) {
18508
+ return _cloneTreeNode(item);
18509
+ });
18510
+ }
18511
+ if (node && _typeof(node) === 'object') {
18512
+ return Object.keys(node).reduce(function (acc, key) {
18513
+ var value = node[key];
18514
+ acc[key] = Array.isArray(value) ? value.slice() : value;
18515
+ return acc;
18516
+ }, {});
18517
+ }
18518
+ return node;
18519
+ };
18520
+ var _cloneTreeData = function cloneTreeData() {
18521
+ var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18522
+ var childKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'children';
18523
+ return (treeData || []).map(function (node) {
18524
+ var clonedNode = _cloneTreeNode(node);
18525
+ if (Array.isArray(node === null || node === void 0 ? void 0 : node[childKey])) {
18526
+ clonedNode[childKey] = _cloneTreeData(node[childKey], childKey);
18527
+ }
18528
+ return clonedNode;
18529
+ });
18530
+ };
18531
+
18532
+ var isSameNodeId = function isSameNodeId(left, right) {
18533
+ if (left === right) {
18534
+ return true;
18535
+ }
18536
+ if (left === undefined || left === null || right === undefined || right === null) {
18537
+ return false;
18538
+ }
18539
+ return "".concat(left) === "".concat(right);
18540
+ };
18541
+ var _findNodeById = function findNodeById() {
18542
+ var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18543
+ var nodeId = arguments.length > 1 ? arguments[1] : undefined;
18544
+ var nodeKey = arguments.length > 2 ? arguments[2] : undefined;
18545
+ var childKey = arguments.length > 3 ? arguments[3] : undefined;
18546
+ var _iterator = _createForOfIteratorHelper(treeData),
18547
+ _step;
18548
+ try {
18549
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
18550
+ var node = _step.value;
18551
+ if (isSameNodeId(node === null || node === void 0 ? void 0 : node[nodeKey], nodeId)) {
18552
+ return node;
18553
+ }
18554
+ var children = node === null || node === void 0 ? void 0 : node[childKey];
18555
+ if (Array.isArray(children) && children.length) {
18556
+ var target = _findNodeById(children, nodeId, nodeKey, childKey);
18557
+ if (target) {
18558
+ return target;
18559
+ }
18560
+ }
18561
+ }
18562
+ } catch (err) {
18563
+ _iterator.e(err);
18564
+ } finally {
18565
+ _iterator.f();
18566
+ }
18567
+ return null;
18568
+ };
18569
+
18570
+ var mutateTreeById = function mutateTreeById() {
18571
+ var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18572
+ var nodeId = arguments.length > 1 ? arguments[1] : undefined;
18573
+ var nodeKey = arguments.length > 2 ? arguments[2] : undefined;
18574
+ var childKey = arguments.length > 3 ? arguments[3] : undefined;
18575
+ var updater = arguments.length > 4 ? arguments[4] : undefined;
18576
+ var target = _findNodeById(treeData, nodeId, nodeKey, childKey);
18577
+ if (target) {
18578
+ updater(target);
18579
+ }
18580
+ return treeData;
18581
+ };
18582
+ var removeTreeNodeById = function removeTreeNodeById() {
18583
+ var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18584
+ var nodeId = arguments.length > 1 ? arguments[1] : undefined;
18585
+ var nodeKey = arguments.length > 2 ? arguments[2] : undefined;
18586
+ var childKey = arguments.length > 3 ? arguments[3] : undefined;
18587
+ var _loop = function loop(list, parentNode) {
18588
+ for (var index = 0; index < list.length; index++) {
18589
+ var current = list[index];
18590
+ if (isSameNodeId(current === null || current === void 0 ? void 0 : current[nodeKey], nodeId)) {
18591
+ var _list$splice = list.splice(index, 1),
18592
+ _list$splice2 = _slicedToArray(_list$splice, 1),
18593
+ node = _list$splice2[0];
18594
+ return {
18595
+ node: node,
18596
+ parentNode: parentNode,
18597
+ index: index
18598
+ };
18599
+ }
18600
+ var children = current === null || current === void 0 ? void 0 : current[childKey];
18601
+ if (Array.isArray(children) && children.length) {
18602
+ var _result = _loop(children, current);
18603
+ if (_result.node) {
18604
+ return _result;
18605
+ }
18606
+ }
18607
+ }
18608
+ return {
18609
+ node: null,
18610
+ parentNode: null,
18611
+ index: -1
18612
+ };
18613
+ };
18614
+ var result = _loop(treeData, null);
18615
+ return _objectSpread(_objectSpread({}, result), {}, {
18616
+ data: treeData
18617
+ });
18618
+ };
18619
+ var insertTreeNodeById = function insertTreeNodeById() {
18620
+ var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18621
+ var node = arguments.length > 1 ? arguments[1] : undefined;
18622
+ var targetNodeId = arguments.length > 2 ? arguments[2] : undefined;
18623
+ var nodeKey = arguments.length > 3 ? arguments[3] : undefined;
18624
+ var childKey = arguments.length > 4 ? arguments[4] : undefined;
18625
+ var options = arguments.length > 5 ? arguments[5] : undefined;
18626
+ var dropType = options.dropType,
18627
+ _options$willInsertAf = options.willInsertAfter,
18628
+ willInsertAfter = _options$willInsertAf === void 0 ? true : _options$willInsertAf;
18629
+ if (dropType === 'child') {
18630
+ var targetNode = _findNodeById(treeData, targetNodeId, nodeKey, childKey);
18631
+ if (!targetNode) {
18632
+ return {
18633
+ data: treeData,
18634
+ parentNode: null,
18635
+ targetNode: null,
18636
+ index: -1
18637
+ };
18638
+ }
18639
+ if (!Array.isArray(targetNode[childKey])) {
18640
+ targetNode[childKey] = [];
18641
+ }
18642
+ var targetChildren = targetNode[childKey];
18643
+ targetChildren.push(node);
18644
+ return {
18645
+ data: treeData,
18646
+ parentNode: targetNode,
18647
+ targetNode: targetNode,
18648
+ index: targetChildren.length - 1
18649
+ };
18650
+ }
18651
+ var _loop2 = function loop(list, parentNode) {
18652
+ for (var index = 0; index < list.length; index++) {
18653
+ var current = list[index];
18654
+ if (isSameNodeId(current === null || current === void 0 ? void 0 : current[nodeKey], targetNodeId)) {
18655
+ var insertIndex = willInsertAfter ? index + 1 : index;
18656
+ list.splice(insertIndex, 0, node);
18657
+ return {
18658
+ parentNode: parentNode,
18659
+ targetNode: current,
18660
+ index: insertIndex
18661
+ };
18662
+ }
18663
+ var children = current === null || current === void 0 ? void 0 : current[childKey];
18664
+ if (Array.isArray(children) && children.length) {
18665
+ var _result2 = _loop2(children, current);
18666
+ if (_result2.targetNode) {
18667
+ return _result2;
18668
+ }
18669
+ }
18670
+ }
18671
+ return {
18672
+ parentNode: null,
18673
+ targetNode: null,
18674
+ index: -1
18675
+ };
18676
+ };
18677
+ var result = _loop2(treeData, null);
18678
+ return _objectSpread({
18679
+ data: treeData
18680
+ }, result);
18681
+ };
18682
+ var moveTreeNodeById = function moveTreeNodeById() {
18683
+ var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18684
+ var nodeId = arguments.length > 1 ? arguments[1] : undefined;
18685
+ var targetNodeId = arguments.length > 2 ? arguments[2] : undefined;
18686
+ var nodeKey = arguments.length > 3 ? arguments[3] : undefined;
18687
+ var childKey = arguments.length > 4 ? arguments[4] : undefined;
18688
+ var options = arguments.length > 5 ? arguments[5] : undefined;
18689
+ var nextTreeData = _cloneTreeData(treeData, childKey);
18690
+ var removeResult = removeTreeNodeById(nextTreeData, nodeId, nodeKey, childKey);
18691
+ if (!removeResult.node) {
18692
+ return null;
18693
+ }
18694
+ var insertResult = insertTreeNodeById(nextTreeData, removeResult.node, targetNodeId, nodeKey, childKey, options);
18695
+ if (!insertResult.targetNode) {
18696
+ return null;
18697
+ }
18698
+ return {
18699
+ trigger: 'drag',
18700
+ data: nextTreeData,
18701
+ node: removeResult.node,
18702
+ targetNode: insertResult.targetNode,
18703
+ parentNode: insertResult.parentNode,
18704
+ oldParentNode: removeResult.parentNode,
18705
+ dropType: options.dropType,
18706
+ sourceIndex: removeResult.index,
18707
+ targetIndex: insertResult.index
18708
+ };
18709
+ };
18499
18710
  /**
18500
18711
  * 根据路径更新指定节点Child-Data
18501
18712
  * @param path 节点路径
@@ -18527,7 +18738,7 @@ var _resolvePropIsMatched = function resolvePropIsMatched(node, prop, id) {
18527
18738
  });
18528
18739
  }
18529
18740
  if (typeof prop === 'string' || typeof prop === 'number') {
18530
- return prop === id;
18741
+ return isSameNodeId(prop, id);
18531
18742
  }
18532
18743
  return node === prop;
18533
18744
  };
@@ -18538,8 +18749,15 @@ var showCheckbox = function showCheckbox(props, node) {
18538
18749
  }
18539
18750
  return props.showCheckbox;
18540
18751
  };
18752
+ var isCascadeEnabled = function isCascadeEnabled(props) {
18753
+ if (typeof props.cascade === 'boolean') {
18754
+ return props.cascade;
18755
+ }
18756
+ return !!props.checkStrictly;
18757
+ };
18541
18758
  ;// CONCATENATED MODULE: ../../packages/tree/src/use-node-async.tsx
18542
18759
 
18760
+
18543
18761
  /*
18544
18762
  * Tencent is pleased to support the open source community by making
18545
18763
  * 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
@@ -18547,44 +18765,60 @@ var showCheckbox = function showCheckbox(props, node) {
18547
18765
  * Copyright (C) 2025 Tencent. All rights reserved.
18548
18766
  *
18549
18767
  * 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) is licensed under the MIT License.
18550
- *
18551
- * License for 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition):
18552
- *
18553
- * ---------------------------------------------------
18554
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
18555
- * documentation files (the "Software"), to deal in the Software without restriction, including without limitation
18556
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
18557
- * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
18558
- *
18559
- * The above copyright notice and this permission notice shall be included in all copies or substantial portions of
18560
- * the Software.
18561
- *
18562
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
18563
- * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18564
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18565
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18566
- * IN THE SOFTWARE.
18567
18768
  */
18568
18769
 
18569
18770
 
18570
18771
 
18571
- /* harmony default export */ const use_node_async = (function (props, flatData) {
18772
+ /* harmony default export */ const use_node_async = (function (props, flatData, ctx) {
18773
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
18572
18774
  var _useNodeAttribute = use_node_attribute(flatData, props),
18573
18775
  setNodeAttr = _useNodeAttribute.setNodeAttr,
18776
+ getNodeId = _useNodeAttribute.getNodeId,
18574
18777
  getNodePath = _useNodeAttribute.getNodePath,
18575
18778
  getNodeAttr = _useNodeAttribute.getNodeAttr,
18576
18779
  resolveScopedSlotParam = _useNodeAttribute.resolveScopedSlotParam,
18577
18780
  setTreeNodeLoading = _useNodeAttribute.setTreeNodeLoading;
18578
- /**
18579
- * 处理异步加载节点数据返回结果
18580
- * @param resp 异步请求返回结果
18581
- * @param item 当前节点
18582
- */
18583
- var setNodeRemoteLoad = function setNodeRemoteLoad(resp, item) {
18781
+ var requestVersionMap = new Map();
18782
+ var emitTreeDataChange = function emitTreeDataChange(payload) {
18783
+ var _options$onTreeDataCh;
18784
+ (_options$onTreeDataCh = options.onTreeDataChange) === null || _options$onTreeDataCh === void 0 || _options$onTreeDataCh.call(options, payload);
18785
+ ctx === null || ctx === void 0 || ctx.emit(EVENTS.NODE_ASYNC_LOAD, payload);
18786
+ };
18787
+ var setNodeRemoteLoad = function setNodeRemoteLoad(resp, item, requestVersion) {
18584
18788
  if (_typeof(resp) === 'object' && resp !== null) {
18789
+ var _options$getTreeData, _options$getTreeData2;
18790
+ var nodeId = "".concat(getNodeId(item));
18791
+ if (requestVersion !== undefined && requestVersionMap.get(nodeId) !== requestVersion) {
18792
+ return Promise.resolve(resp);
18793
+ }
18585
18794
  setNodeAttr(item, NODE_ATTRIBUTES.IS_OPEN, true);
18586
18795
  var nodeValue = Array.isArray(resp) ? resp : [resp];
18587
- updateTreeNode(getNodePath(item), props.data, props.children, props.children, nodeValue);
18796
+ if (!options.onTreeDataChange) {
18797
+ mutateTreeById(props.data, nodeId, props.nodeKey || NODE_ATTRIBUTES.UUID, props.children, function (targetNode) {
18798
+ targetNode[props.children] = nodeValue;
18799
+ });
18800
+ if (!props.nodeKey && getNodePath(item)) {
18801
+ // nodeKey 缺失时保留旧版按 path 写入的兜底行为。
18802
+ var paths = "".concat(getNodePath(item)).split('-');
18803
+ var targetNode = paths.reduce(function (pre, nodeIndex) {
18804
+ var index = Number(nodeIndex);
18805
+ return Array.isArray(pre) ? pre[index] : pre[props.children][index];
18806
+ }, props.data);
18807
+ Object.assign(targetNode, defineProperty_defineProperty({}, props.children, nodeValue));
18808
+ }
18809
+ return Promise.resolve(resp);
18810
+ }
18811
+ var nextTreeData = _cloneTreeData((_options$getTreeData = (_options$getTreeData2 = options.getTreeData) === null || _options$getTreeData2 === void 0 ? void 0 : _options$getTreeData2.call(options)) !== null && _options$getTreeData !== void 0 ? _options$getTreeData : props.data, props.children);
18812
+ mutateTreeById(nextTreeData, nodeId, props.nodeKey || NODE_ATTRIBUTES.UUID, props.children, function (targetNode) {
18813
+ targetNode[NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_OPEN]] = true;
18814
+ targetNode[props.children] = nodeValue;
18815
+ });
18816
+ emitTreeDataChange({
18817
+ trigger: 'async',
18818
+ data: nextTreeData,
18819
+ node: item,
18820
+ parentNode: item
18821
+ });
18588
18822
  return Promise.resolve(resp);
18589
18823
  }
18590
18824
  return Promise.resolve(resp);
@@ -18595,29 +18829,39 @@ var showCheckbox = function showCheckbox(props, node) {
18595
18829
  callback = _ref$callback === void 0 ? null : _ref$callback,
18596
18830
  _ref$cache = _ref.cache,
18597
18831
  cache = _ref$cache === void 0 ? true : _ref$cache;
18598
- /** 如果是异步请求加载 */
18599
18832
  if (typeof callback === 'function' && getNodeAttr(item, NODE_ATTRIBUTES.IS_ASYNC)) {
18600
- /** 用于注释当前节点是否已经初始化过 */
18833
+ var nodeId = "".concat(getNodeId(item));
18834
+ var requestVersion = (requestVersionMap.get(nodeId) || 0) + 1;
18835
+ requestVersionMap.set(nodeId, requestVersion);
18601
18836
  setNodeAttr(item, NODE_ATTRIBUTES.IS_ASYNC_INIT, true);
18602
18837
  if (!getNodeAttr(item, NODE_ATTRIBUTES.IS_CACHED)) {
18603
18838
  setNodeAttr(item, NODE_ATTRIBUTES.IS_CACHED, cache);
18604
18839
  var dataAttr = resolveScopedSlotParam(item);
18605
18840
  var callbackResult = callback(item, function (resp) {
18606
- return setNodeRemoteLoad(resp, item);
18841
+ return setNodeRemoteLoad(resp, item, requestVersion);
18607
18842
  }, dataAttr);
18608
18843
  if (_typeof(callbackResult) === 'object' && callbackResult !== null) {
18609
18844
  setTreeNodeLoading(item, true);
18610
18845
  if (callbackResult instanceof Promise) {
18611
18846
  return Promise.resolve(callbackResult.then(function (resp) {
18612
- return setNodeRemoteLoad(resp, item);
18613
- })["catch"](function (err) {
18614
- return console.error('load remote data error:', err);
18847
+ return setNodeRemoteLoad(resp, item, requestVersion);
18848
+ })["catch"](function (error) {
18849
+ if (requestVersionMap.get(nodeId) === requestVersion) {
18850
+ ctx === null || ctx === void 0 || ctx.emit(EVENTS.NODE_ASYNC_LOAD_ERROR, {
18851
+ node: item,
18852
+ error: error,
18853
+ requestVersion: requestVersion
18854
+ });
18855
+ }
18856
+ return false;
18615
18857
  })["finally"](function () {
18616
- setTreeNodeLoading(item, false);
18617
- setNodeAttr(item, NODE_ATTRIBUTES.IS_CACHED, true);
18858
+ if (requestVersionMap.get(nodeId) === requestVersion) {
18859
+ setTreeNodeLoading(item, false);
18860
+ setNodeAttr(item, NODE_ATTRIBUTES.IS_CACHED, true);
18861
+ }
18618
18862
  }));
18619
18863
  }
18620
- setNodeRemoteLoad(callbackResult, item);
18864
+ setNodeRemoteLoad(callbackResult, item, requestVersion);
18621
18865
  setTreeNodeLoading(item, false);
18622
18866
  return Promise.resolve(true);
18623
18867
  }
@@ -18627,7 +18871,6 @@ var showCheckbox = function showCheckbox(props, node) {
18627
18871
  return Promise.resolve(true);
18628
18872
  };
18629
18873
  var _deepAutoOpen = function deepAutoOpen() {
18630
- /** 过滤节点为异步加载 & 默认为展开 & 没有初始化过的节点 */
18631
18874
  var autoOpenNodes = flatData.data.filter(function (item) {
18632
18875
  return getNodeAttr(item, NODE_ATTRIBUTES.IS_ASYNC) && item[NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_OPEN]] && !getNodeAttr(item, NODE_ATTRIBUTES.IS_ASYNC_INIT);
18633
18876
  });
@@ -18708,7 +18951,7 @@ var use_node_action_this = undefined;
18708
18951
  var _usePrefix = (0,config_provider_namespaceObject.usePrefix)(),
18709
18952
  resolveClassName = _usePrefix.resolveClassName;
18710
18953
  var registerNextLoop = initOption.registerNextLoop;
18711
- var _useNodeAsync = use_node_async(props, flatData),
18954
+ var _useNodeAsync = use_node_async(props, flatData, ctx, initOption),
18712
18955
  asyncNodeClick = _useNodeAsync.asyncNodeClick,
18713
18956
  deepAutoOpen = _useNodeAsync.deepAutoOpen;
18714
18957
  /**
@@ -18810,17 +19053,18 @@ var use_node_action_this = undefined;
18810
19053
  };
18811
19054
  var _updateParentChecked = function updateParentChecked(item, isChecked) {
18812
19055
  var parent = getParentNode(item);
18813
- if (parent) {
18814
- var isNeedChecked = isChecked ? isChecked : (getChildNodes(parent) || []).some(function (node) {
18815
- return isNodeChecked(node);
18816
- });
18817
- setNodeAttr(parent, NODE_ATTRIBUTES.IS_CHECKED, isNeedChecked);
18818
- setNodeAttr(parent, NODE_ATTRIBUTES.IS_INDETERMINATE, (getChildNodes(parent) || []).some(function (node) {
18819
- return !isNodeChecked(node) || isIndeterminate(node);
18820
- }));
18821
- if (!isRootNode(parent)) {
18822
- _updateParentChecked(parent, isChecked);
18823
- }
19056
+ if (!parent) {
19057
+ return;
19058
+ }
19059
+ var isNeedChecked = isChecked ? isChecked : (getChildNodes(parent) || []).some(function (node) {
19060
+ return isNodeChecked(node);
19061
+ });
19062
+ setNodeAttr(parent, NODE_ATTRIBUTES.IS_CHECKED, isNeedChecked);
19063
+ setNodeAttr(parent, NODE_ATTRIBUTES.IS_INDETERMINATE, (getChildNodes(parent) || []).some(function (node) {
19064
+ return !isNodeChecked(node) || isIndeterminate(node);
19065
+ }));
19066
+ if (!isRootNode(parent)) {
19067
+ _updateParentChecked(parent, isChecked);
18824
19068
  }
18825
19069
  };
18826
19070
  var _deepUpdateChildNode = function deepUpdateChildNode(node, attr, value) {
@@ -18954,6 +19198,9 @@ var use_node_action_this = undefined;
18954
19198
  });
18955
19199
  if (!isRootNode(resolvedItem)) {
18956
19200
  var parent = getParentNode(resolvedItem);
19201
+ if (!parent) {
19202
+ return;
19203
+ }
18957
19204
  attrNames.forEach(function (name, index) {
18958
19205
  var parentVal = getNodeAttr(parent, name);
18959
19206
  if (parentVal !== value) {
@@ -19029,9 +19276,10 @@ var use_node_action_this = undefined;
19029
19276
  var resolvedItem = resolveNodeItem(nodeList[0]);
19030
19277
  if (typeof resolvedItem === 'string' || typeof resolvedItem === 'number' || _typeof(resolvedItem) === 'symbol') {
19031
19278
  var _flatData$data$find;
19279
+ var nodeId = resolvedItem;
19032
19280
  resolvedItem = (_flatData$data$find = flatData.data.find(function (item) {
19033
- return getNodeId(item) === resolvedItem;
19034
- })) !== null && _flatData$data$find !== void 0 ? _flatData$data$find : _defineProperty({}, NODE_ATTRIBUTES.IS_NULL, true);
19281
+ return getNodeId(item) === nodeId;
19282
+ })) !== null && _flatData$data$find !== void 0 ? _flatData$data$find : defineProperty_defineProperty({}, NODE_ATTRIBUTES.IS_NULL, true);
19035
19283
  }
19036
19284
  if (resolvedItem[NODE_ATTRIBUTES.IS_NULL]) {
19037
19285
  return;
@@ -22624,37 +22872,20 @@ Sortable.mount(Remove, Revert);
22624
22872
  * Copyright (C) 2025 Tencent. All rights reserved.
22625
22873
  *
22626
22874
  * 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) is licensed under the MIT License.
22627
- *
22628
- * License for 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition):
22629
- *
22630
- * ---------------------------------------------------
22631
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
22632
- * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
22633
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
22634
- * permit persons to whom the Software is furnished to do so, subject to the following conditions:
22635
- *
22636
- * The above copyright notice and this permission notice shall be included in all copies or substantial portions of
22637
- * the Software.
22638
- *
22639
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
22640
- * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22641
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
22642
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22643
- * IN THE SOFTWARE.
22644
22875
  */
22645
22876
 
22646
22877
 
22647
22878
 
22648
22879
 
22649
22880
 
22881
+
22650
22882
  /* harmony default export */ const use_node_drag = (function (props, ctx, root, flatData) {
22883
+ var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
22651
22884
  var _useNodeAttribute = use_node_attribute(flatData, props),
22652
22885
  getSourceNodeByUID = _useNodeAttribute.getSourceNodeByUID,
22653
22886
  getParentNode = _useNodeAttribute.getParentNode,
22654
22887
  extendNodeAttr = _useNodeAttribute.extendNodeAttr,
22655
- setNodeAttr = _useNodeAttribute.setNodeAttr,
22656
- getNodeAttr = _useNodeAttribute.getNodeAttr,
22657
- getRootNodeList = _useNodeAttribute.getRootNodeList;
22888
+ getNodeId = _useNodeAttribute.getNodeId;
22658
22889
  var _usePrefix = (0,config_provider_namespaceObject.usePrefix)(),
22659
22890
  resolveClassName = _usePrefix.resolveClassName;
22660
22891
  var isNeedCheckDraggable = (0,external_vue_namespaceObject.computed)(function () {
@@ -22666,20 +22897,12 @@ Sortable.mount(Remove, Revert);
22666
22897
  var dragThreshold = props.dragThreshold || 0.2;
22667
22898
  var sortableInstance = null;
22668
22899
  var dragNodeId = '';
22669
- /** 当前拖拽的放置类型,在 onMove 中实时计算,onEnd 中消费 */
22670
22900
  var currentDropType = 'move';
22671
- /** 当前拖拽目标节点 ID,在 onMove 中实时计算,onEnd 中消费 */
22672
22901
  var currentRelatedId = '';
22673
- /** sortablejs willInsertAfter,在 onMove 中记录,onEnd 中消费 */
22902
+ var currentRelatedEl = null;
22674
22903
  var currentWillInsertAfter = true;
22675
- var isDragging = (0,external_vue_namespaceObject.ref)(false);
22676
- /**
22677
- * 放置指示器 DOM 元素(动态创建的线条/高亮)
22678
- */
22679
22904
  var indicatorEl = null;
22680
- /**
22681
- * 创建放置指示器元素
22682
- */
22905
+ var isDragging = (0,external_vue_namespaceObject.ref)(false);
22683
22906
  var createIndicator = function createIndicator() {
22684
22907
  if (indicatorEl) return indicatorEl;
22685
22908
  indicatorEl = document.createElement('div');
@@ -22687,25 +22910,20 @@ Sortable.mount(Remove, Revert);
22687
22910
  document.body.appendChild(indicatorEl);
22688
22911
  return indicatorEl;
22689
22912
  };
22690
- /**
22691
- * 移除放置指示器元素
22692
- */
22693
22913
  var removeIndicator = function removeIndicator() {
22914
+ var _indicatorEl;
22915
+ (_indicatorEl = indicatorEl) === null || _indicatorEl === void 0 || _indicatorEl.remove();
22916
+ indicatorEl = null;
22917
+ };
22918
+ var hideIndicator = function hideIndicator() {
22694
22919
  if (indicatorEl) {
22695
- indicatorEl.remove();
22696
- indicatorEl = null;
22920
+ indicatorEl.style.display = 'none';
22697
22921
  }
22698
22922
  };
22699
- /**
22700
- * 更新指示器位置和样式
22701
- * - sort/move: 显示水平线(两端圆点),指示插入位置
22702
- * - child: 显示在目标节点内部的高亮边框,指示嵌入为子节点
22703
- */
22704
22923
  var updateIndicator = function updateIndicator(targetEl, dropType, willInsertAfter) {
22705
22924
  var indicator = createIndicator();
22706
22925
  var rect = targetEl.getBoundingClientRect();
22707
22926
  if (dropType === 'child') {
22708
- // 作为子节点:显示在目标节点内部的高亮边框
22709
22927
  indicator.className = "".concat(resolveClassName('tree-drop-indicator'), " ").concat(resolveClassName('tree-drop-inner'));
22710
22928
  Object.assign(indicator.style, {
22711
22929
  display: '',
@@ -22717,290 +22935,101 @@ Sortable.mount(Remove, Revert);
22717
22935
  pointerEvents: 'none',
22718
22936
  zIndex: '9999'
22719
22937
  });
22720
- } else {
22721
- // 作为同级(sort/move):显示水平线 + 两端圆点
22722
- var lineTop = willInsertAfter ? rect.bottom : rect.top;
22723
- indicator.className = "".concat(resolveClassName('tree-drop-indicator'), " ").concat(resolveClassName('tree-drop-line'));
22724
- Object.assign(indicator.style, {
22725
- display: '',
22726
- position: 'fixed',
22727
- left: "".concat(rect.left, "px"),
22728
- top: "".concat(lineTop - 1, "px"),
22729
- width: "".concat(rect.width, "px"),
22730
- height: '2px',
22731
- pointerEvents: 'none',
22732
- zIndex: '9999'
22733
- });
22734
- }
22735
- };
22736
- /**
22737
- * 隐藏指示器
22738
- */
22739
- var hideIndicator = function hideIndicator() {
22740
- if (indicatorEl) {
22741
- indicatorEl.style.display = 'none';
22938
+ return;
22742
22939
  }
22743
- };
22744
- /**
22745
- * 保存所有节点的展开状态
22746
- */
22747
- var saveAllOpenStates = function saveAllOpenStates() {
22748
- var openStates = new Map();
22749
- flatData.data.forEach(function (node) {
22750
- var isOpen = getNodeAttr(node, NODE_ATTRIBUTES.IS_OPEN);
22751
- openStates.set(node, isOpen);
22752
- });
22753
- return openStates;
22754
- };
22755
- /**
22756
- * 恢复所有节点的展开状态
22757
- */
22758
- var restoreAllOpenStates = function restoreAllOpenStates(openStates) {
22759
- openStates.forEach(function (isOpen, node) {
22760
- if (flatData.schema.has(node)) {
22761
- setNodeAttr(node, NODE_ATTRIBUTES.IS_OPEN, isOpen);
22762
- }
22940
+ var lineTop = willInsertAfter ? rect.bottom : rect.top;
22941
+ indicator.className = "".concat(resolveClassName('tree-drop-indicator'), " ").concat(resolveClassName('tree-drop-line'));
22942
+ Object.assign(indicator.style, {
22943
+ display: '',
22944
+ position: 'fixed',
22945
+ left: "".concat(rect.left, "px"),
22946
+ top: "".concat(lineTop - 1, "px"),
22947
+ width: "".concat(rect.width, "px"),
22948
+ height: '2px',
22949
+ pointerEvents: 'none',
22950
+ zIndex: '9999'
22763
22951
  });
22764
22952
  };
22765
- /**
22766
- * 从父节点的 children 数组中移除指定节点
22767
- */
22768
- var removeFromParentChildren = function removeFromParentChildren(node, parent) {
22769
- if (!parent) {
22770
- var index = props.data.indexOf(node);
22771
- if (index > -1) {
22772
- props.data.splice(index, 1);
22773
- }
22774
- } else {
22775
- var children = parent[props.children];
22776
- if (children) {
22777
- var _index = children.indexOf(node);
22778
- if (_index > -1) {
22779
- children.splice(_index, 1);
22780
- }
22781
- }
22782
- }
22783
- };
22784
- /**
22785
- * 更新节点的 HAS_CHILD 属性
22786
- */
22787
- var updateHasChildAttr = function updateHasChildAttr(node) {
22788
- if (!node) return;
22789
- var children = node[props.children];
22790
- var hasChildren = children && children.length > 0;
22791
- setNodeAttr(node, NODE_ATTRIBUTES.HAS_CHILD, hasChildren);
22792
- };
22793
- /**
22794
- * 根据 onMove 中的鼠标位置计算放置类型
22795
- *
22796
- * 两种模式:
22797
- * 1. dragSort 模式(仅排序,不支持改变层级):
22798
- * - 上方/下方区域 → sort(同级排序)
22799
- * - 中间区域 → sort(同级排序,不支持 child)
22800
- *
22801
- * 2. draggable 模式(支持排序和改变层级):
22802
- * - 上方/下方区域 → move(作为同级节点)
22803
- * - 中间区域 → child(作为子节点)
22804
- */
22805
22953
  var calcDropType = function calcDropType(clientY, targetEl) {
22806
- var rect = targetEl.getBoundingClientRect();
22807
- var offsetY = clientY - rect.top;
22808
- var threshold = rect.height * dragThreshold;
22809
22954
  if (props.dragSort) {
22810
- // dragSort 模式:仅支持同级排序,不支持改变层级
22811
22955
  return 'sort';
22812
22956
  }
22813
- // draggable 模式:支持排序和改变层级
22814
- if (offsetY < threshold) {
22815
- return 'move';
22816
- } else if (offsetY > rect.height - threshold) {
22957
+ var rect = targetEl.getBoundingClientRect();
22958
+ var offsetY = clientY - rect.top;
22959
+ var threshold = rect.height * dragThreshold;
22960
+ if (offsetY < threshold || offsetY > rect.height - threshold) {
22817
22961
  return 'move';
22818
22962
  }
22819
22963
  return 'child';
22820
22964
  };
22821
- /**
22822
- * 将源数据树结构重新展开为 flatData(BFS 顺序)
22823
- * 这是唯一需要的 flatData 更新方式:修改 children 后重新展平
22824
- */
22825
- var rebuildFlatData = function rebuildFlatData() {
22826
- var newFlatData = [];
22827
- var _traverse = function traverse(nodes) {
22828
- nodes.forEach(function (node) {
22829
- newFlatData.push(node);
22830
- var children = node[props.children];
22831
- if (children && children.length > 0) {
22832
- _traverse(children);
22833
- }
22834
- });
22835
- };
22836
- _traverse(props.data);
22837
- flatData.data = newFlatData;
22838
- };
22839
- /**
22840
- * 重新计算所有节点属性(深度、路径、索引等)
22841
- */
22842
- var recalculateNodeAttributes = function recalculateNodeAttributes() {
22843
- var orderIndex = 0;
22844
- var _setNodeAttribute = function setNodeAttribute(nodeList, level, parentPath, parent) {
22845
- for (var i = 0; i < nodeList.length; i++) {
22846
- var node = nodeList[i];
22847
- var path = parentPath !== '' ? "".concat(parentPath, "-").concat(i) : "".concat(i);
22848
- setNodeAttr(node, NODE_ATTRIBUTES.INDEX, orderIndex);
22849
- setNodeAttr(node, NODE_ATTRIBUTES.ORDER, orderIndex);
22850
- setNodeAttr(node, NODE_ATTRIBUTES.DEPTH, level);
22851
- setNodeAttr(node, NODE_ATTRIBUTES.PATH, path);
22852
- setNodeAttr(node, NODE_ATTRIBUTES.IS_ROOT, level === 0);
22853
- setNodeAttr(node, NODE_ATTRIBUTES.PARENT, parent);
22854
- if (!parent) {
22855
- // 根节点:检查是否有子节点
22856
- var _children = node[props.children];
22857
- setNodeAttr(node, NODE_ATTRIBUTES.HAS_CHILD, !!(_children && _children.length > 0));
22858
- }
22859
- orderIndex += 1;
22860
- var children = node[props.children];
22861
- if (children && children.length > 0) {
22862
- _setNodeAttribute(children, level + 1, path, node);
22863
- }
22864
- }
22865
- };
22866
- var rootNodeList = getRootNodeList();
22867
- _setNodeAttribute(rootNodeList, 0, '', null);
22868
- };
22869
- /**
22870
- * 拖拽排序:同级节点间排序(dragSort 模式)
22871
- * 直接操作 children 数组:移除源节点 -> 插入到目标节点前/后
22872
- */
22873
- var dragSortData = function dragSortData(sourceNodeData, targetNodeData, willInsertAfter, savedOpenStates) {
22874
- var sourceParent = getParentNode(sourceNodeData);
22875
- var targetParent = getParentNode(targetNodeData);
22876
- // 只允许同父节点下排序
22877
- if (props.dragSortMode === 'next' && sourceParent !== targetParent) return;
22878
- // 1. 从原位置移除
22879
- removeFromParentChildren(sourceNodeData, sourceParent);
22880
- // 2. 获取目标所在的 children 数组
22881
- var targetChildren;
22882
- if (!targetParent) {
22883
- targetChildren = props.data;
22884
- } else {
22885
- targetChildren = targetParent[props.children];
22886
- if (!targetChildren) {
22887
- targetParent[props.children] = [];
22888
- targetChildren = targetParent[props.children];
22889
- }
22890
- }
22891
- // 3. 在目标节点前/后插入源节点
22892
- var targetIndexInParent = targetChildren.indexOf(targetNodeData);
22893
- var insertIndex = willInsertAfter ? targetIndexInParent + 1 : targetIndexInParent;
22894
- targetChildren.splice(insertIndex, 0, sourceNodeData);
22895
- // 4. 重新构建 flatData 并计算属性
22896
- rebuildFlatData();
22897
- recalculateNodeAttributes();
22898
- // 5. 更新源父节点的 HAS_CHILD
22899
- updateHasChildAttr(sourceParent);
22900
- // 6. 恢复展开状态
22901
- restoreAllOpenStates(savedOpenStates);
22902
- ctx.emit(EVENTS.NODE_DRAG_SORT, {
22903
- sourceNode: sourceNodeData,
22904
- targetNode: targetNodeData
22905
- });
22906
- };
22907
- /**
22908
- * 将源节点作为目标节点的子节点
22909
- * 直接操作 children 数组:移除源节点 -> push 到目标节点 children
22910
- */
22911
- var dragAsChildNode = function dragAsChildNode(sourceNodeData, targetNodeData, savedOpenStates) {
22912
- var sourceParent = getParentNode(sourceNodeData);
22913
- // 1. 从原位置移除
22914
- removeFromParentChildren(sourceNodeData, sourceParent);
22915
- // 2. 初始化目标节点的 children 并 push
22916
- if (!targetNodeData[props.children]) {
22917
- targetNodeData[props.children] = [];
22918
- }
22919
- targetNodeData[props.children].push(sourceNodeData);
22920
- // 3. 重新构建 flatData 并计算属性
22921
- rebuildFlatData();
22922
- recalculateNodeAttributes();
22923
- // 4. 更新属性
22924
- updateHasChildAttr(sourceParent);
22925
- setNodeAttr(targetNodeData, NODE_ATTRIBUTES.HAS_CHILD, true);
22926
- // 5. 恢复展开状态
22927
- restoreAllOpenStates(savedOpenStates);
22928
- ctx.emit(EVENTS.NODE_DROP, sourceNodeData, targetNodeData, 'child');
22929
- };
22930
- /**
22931
- * 将源节点作为目标节点的同级节点插入(可跨级)
22932
- * 直接操作 children 数组:移除源节点 -> 在目标节点前/后插入
22933
- */
22934
- var dragAsSiblingNode = function dragAsSiblingNode(sourceNodeData, targetNodeData, willInsertAfter, savedOpenStates) {
22935
- var sourceParent = getParentNode(sourceNodeData);
22936
- var targetParent = getParentNode(targetNodeData);
22937
- // 1. 从原位置移除
22938
- removeFromParentChildren(sourceNodeData, sourceParent);
22939
- // 2. 获取目标所在的 children 数组
22940
- var targetChildren;
22941
- if (!targetParent) {
22942
- targetChildren = props.data;
22943
- } else {
22944
- targetChildren = targetParent[props.children];
22945
- if (!targetChildren) {
22946
- targetParent[props.children] = [];
22947
- targetChildren = targetParent[props.children];
22948
- }
22949
- }
22950
- // 3. 在目标节点前/后插入源节点
22951
- var targetIndexInParent = targetChildren.indexOf(targetNodeData);
22952
- var insertIndex = willInsertAfter ? targetIndexInParent + 1 : targetIndexInParent;
22953
- targetChildren.splice(insertIndex, 0, sourceNodeData);
22954
- // 4. 重新构建 flatData 并计算属性
22955
- rebuildFlatData();
22956
- recalculateNodeAttributes();
22957
- // 5. 更新属性
22958
- updateHasChildAttr(sourceParent);
22959
- updateHasChildAttr(targetParent);
22960
- // 6. 恢复展开状态
22961
- restoreAllOpenStates(savedOpenStates);
22962
- ctx.emit(EVENTS.NODE_DROP, sourceNodeData, targetNodeData, 'move');
22963
- };
22964
- /**
22965
- * 检查是否禁止拖拽
22966
- */
22967
22965
  var isDragDisabled = function isDragDisabled(nodeId) {
22968
22966
  var _props$disableDrag;
22969
22967
  var nodeData = getSourceNodeByUID(nodeId);
22970
22968
  if (!nodeData) return true;
22971
22969
  if (isNeedCheckDraggable.value && (_props$disableDrag = props.disableDrag) !== null && _props$disableDrag !== void 0 && _props$disableDrag.call(props, nodeData)) return true;
22972
- if (nodeData.draggable === false) return true;
22970
+ return nodeData.draggable === false;
22971
+ };
22972
+ var isDescendantTarget = function isDescendantTarget(draggedData, relatedData) {
22973
+ var parent = getParentNode(relatedData);
22974
+ while (parent) {
22975
+ if (parent === draggedData) return true;
22976
+ parent = getParentNode(parent);
22977
+ }
22973
22978
  return false;
22974
22979
  };
22975
- /**
22976
- * 检查是否禁止放置
22977
- */
22978
22980
  var isDropDisabled = function isDropDisabled(draggedId, relatedId, dropType) {
22979
22981
  var _props$disableDrop;
22980
22982
  var draggedData = getSourceNodeByUID(draggedId);
22981
22983
  var relatedData = extendNodeAttr(getSourceNodeByUID(relatedId));
22982
- if (isNeedCheckDroppable.value && (_props$disableDrop = props.disableDrop) !== null && _props$disableDrop !== void 0 && _props$disableDrop.call(props, draggedData, dropType, relatedData)) return true;
22983
- return false;
22984
+ if (!draggedData || !relatedData) return true;
22985
+ return !!(isNeedCheckDroppable.value && (_props$disableDrop = props.disableDrop) !== null && _props$disableDrop !== void 0 && _props$disableDrop.call(props, draggedData, dropType, relatedData));
22984
22986
  };
22985
- /**
22986
- * 恢复 sortablejs 的 DOM 操作
22987
- * 因为我们由数据驱动 Vue 更新,需要先恢复 sortablejs 已做的 DOM 移动
22988
- */
22989
22987
  var restoreSortableDOM = function restoreSortableDOM(evt) {
22990
22988
  var item = evt.item,
22991
22989
  from = evt.from,
22990
+ to = evt.to,
22992
22991
  oldIndex = evt.oldIndex,
22993
22992
  newIndex = evt.newIndex;
22994
- if (oldIndex === undefined || newIndex === undefined || !from || oldIndex === newIndex) return;
22995
- if (newIndex < oldIndex) {
22993
+ if (oldIndex === undefined || !from) return;
22994
+ var sameContainer = from === to;
22995
+ if (sameContainer && oldIndex === newIndex) return;
22996
+ if (!sameContainer && to && item.parentNode === to) {
22997
+ to.removeChild(item);
22998
+ }
22999
+ if (sameContainer && newIndex !== undefined && newIndex < oldIndex) {
22996
23000
  from.insertBefore(item, from.children[oldIndex + 1] || null);
22997
23001
  } else {
22998
23002
  from.insertBefore(item, from.children[oldIndex] || null);
22999
23003
  }
23000
23004
  };
23001
- /**
23002
- * 初始化 Sortable 实例
23003
- */
23005
+ var emitTreeDataChange = function emitTreeDataChange(payload) {
23006
+ var _options$onTreeDataCh;
23007
+ if (!payload) return null;
23008
+ (_options$onTreeDataCh = options.onTreeDataChange) === null || _options$onTreeDataCh === void 0 || _options$onTreeDataCh.call(options, payload);
23009
+ return payload;
23010
+ };
23011
+ var moveNode = function moveNode(sourceNodeData, targetNodeData, dropType) {
23012
+ var _options$getTreeData, _options$getTreeData2;
23013
+ var willInsertAfter = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
23014
+ return emitTreeDataChange(moveTreeNodeById((_options$getTreeData = (_options$getTreeData2 = options.getTreeData) === null || _options$getTreeData2 === void 0 ? void 0 : _options$getTreeData2.call(options)) !== null && _options$getTreeData !== void 0 ? _options$getTreeData : props.data, "".concat(getNodeId(sourceNodeData)), "".concat(getNodeId(targetNodeData)), props.nodeKey || NODE_ATTRIBUTES.UUID, props.children, {
23015
+ dropType: dropType,
23016
+ willInsertAfter: willInsertAfter
23017
+ }));
23018
+ };
23019
+ var cleanup = function cleanup() {
23020
+ dragNodeId = '';
23021
+ currentDropType = 'move';
23022
+ currentRelatedId = '';
23023
+ currentRelatedEl = null;
23024
+ currentWillInsertAfter = true;
23025
+ isDragging.value = false;
23026
+ removeIndicator();
23027
+ };
23028
+ var destroySortable = function destroySortable() {
23029
+ var _sortableInstance;
23030
+ (_sortableInstance = sortableInstance) === null || _sortableInstance === void 0 || _sortableInstance.destroy();
23031
+ sortableInstance = null;
23032
+ };
23004
23033
  var initSortable = function initSortable() {
23005
23034
  if (!root.value) return;
23006
23035
  var container = root.value.$el;
@@ -23015,125 +23044,121 @@ Sortable.mount(Remove, Revert);
23015
23044
  filter: ".".concat(resolveClassName('tree-drag-disabled')),
23016
23045
  onStart: function onStart(evt) {
23017
23046
  var nodeId = evt.item.getAttribute('data-tree-node');
23018
- if (!nodeId || isDragDisabled(nodeId)) return;
23047
+ if (!nodeId || isDragDisabled(nodeId)) {
23048
+ return;
23049
+ }
23019
23050
  dragNodeId = nodeId;
23020
- isDragging.value = true;
23021
23051
  currentDropType = props.dragSort ? 'sort' : 'move';
23022
23052
  currentRelatedId = '';
23053
+ currentRelatedEl = null;
23023
23054
  currentWillInsertAfter = true;
23024
- ctx.emit(EVENTS.NODE_DRAG_START, evt, evt.item);
23055
+ isDragging.value = true;
23056
+ ctx.emit(EVENTS.NODE_DRAG_START, extendNodeAttr(getSourceNodeByUID(nodeId)), evt);
23057
+ },
23058
+ onMove: function onMove(evt, originalEvent) {
23059
+ var _evt$willInsertAfter;
23060
+ var relatedEl = evt.related;
23061
+ var draggedEl = evt.dragged;
23062
+ var relatedId = relatedEl === null || relatedEl === void 0 ? void 0 : relatedEl.getAttribute('data-tree-node');
23063
+ var draggedId = draggedEl === null || draggedEl === void 0 ? void 0 : draggedEl.getAttribute('data-tree-node');
23064
+ if (!relatedId || !draggedId) return -1;
23065
+ var draggedData = getSourceNodeByUID(draggedId);
23066
+ var relatedData = getSourceNodeByUID(relatedId);
23067
+ if (!draggedData || !relatedData || draggedId === relatedId || isDescendantTarget(draggedData, relatedData)) {
23068
+ return -1;
23069
+ }
23070
+ var dropType = calcDropType(originalEvent.clientY, relatedEl);
23071
+ if (dropType === 'sort' && props.dragSortMode === 'next' && getParentNode(draggedData) !== getParentNode(relatedData)) {
23072
+ return -1;
23073
+ }
23074
+ if (isDropDisabled(draggedId, relatedId, dropType)) return -1;
23075
+ currentDropType = dropType;
23076
+ currentRelatedId = relatedId;
23077
+ currentRelatedEl = relatedEl;
23078
+ currentWillInsertAfter = (_evt$willInsertAfter = evt.willInsertAfter) !== null && _evt$willInsertAfter !== void 0 ? _evt$willInsertAfter : true;
23079
+ updateIndicator(relatedEl, dropType, currentWillInsertAfter);
23080
+ ctx.emit(EVENTS.NODE_DRAG_OVER, extendNodeAttr(relatedData), originalEvent, relatedEl);
23081
+ return true;
23025
23082
  },
23026
23083
  onEnd: function onEnd(evt) {
23027
- // 恢复 sortablejs 的 DOM 移动,由数据驱动 Vue 更新
23028
23084
  restoreSortableDOM(evt);
23029
- // 隐藏指示器
23030
23085
  hideIndicator();
23031
- // 使用 onMove 中实时计算的放置信息
23032
- var targetNodeId = currentRelatedId;
23033
- if (!targetNodeId || !dragNodeId || dragNodeId === targetNodeId) {
23086
+ var sourceNodeData = getSourceNodeByUID(dragNodeId);
23087
+ var targetNodeData = getSourceNodeByUID(currentRelatedId);
23088
+ var targetEl = currentRelatedEl;
23089
+ if (!sourceNodeData || !targetNodeData || !targetEl || dragNodeId === currentRelatedId) {
23034
23090
  cleanup();
23035
23091
  return;
23036
23092
  }
23037
- var sourceNodeData = getSourceNodeByUID(dragNodeId);
23038
- var targetNodeData = getSourceNodeByUID(targetNodeId);
23039
- if (!sourceNodeData || !targetNodeData) {
23093
+ if (isDropDisabled(dragNodeId, currentRelatedId, currentDropType)) {
23040
23094
  cleanup();
23041
23095
  return;
23042
23096
  }
23043
- if (isDropDisabled(dragNodeId, targetNodeId, currentDropType)) {
23097
+ var payload = moveNode(sourceNodeData, targetNodeData, currentDropType, currentWillInsertAfter);
23098
+ if (!payload) {
23044
23099
  cleanup();
23045
23100
  return;
23046
23101
  }
23047
- // 保存展开状态
23048
- var savedOpenStates = saveAllOpenStates();
23049
- // 根据放置类型执行对应操作
23050
- if (currentDropType === 'child') {
23051
- dragAsChildNode(sourceNodeData, targetNodeData, savedOpenStates);
23052
- } else if (currentDropType === 'sort') {
23053
- dragSortData(sourceNodeData, targetNodeData, currentWillInsertAfter, savedOpenStates);
23054
- } else {
23055
- // move: 跨级移动为同级节点
23056
- dragAsSiblingNode(sourceNodeData, targetNodeData, currentWillInsertAfter, savedOpenStates);
23102
+ if (currentDropType === 'sort') {
23103
+ var dragSortPayload = {
23104
+ sourceNode: sourceNodeData,
23105
+ targetNode: targetNodeData,
23106
+ sourceIndex: payload.sourceIndex,
23107
+ targetIndex: payload.targetIndex,
23108
+ data: payload.data,
23109
+ parentNode: payload.parentNode,
23110
+ oldParentNode: payload.oldParentNode,
23111
+ dropType: payload.dropType
23112
+ };
23113
+ ctx.emit(EVENTS.NODE_DRAG_SORT, dragSortPayload);
23057
23114
  }
23058
- var targetData = extendNodeAttr(targetNodeData);
23059
- ctx.emit(EVENTS.NODE_DROP, evt, evt.item, targetData);
23115
+ var dropPayload = {
23116
+ event: evt,
23117
+ element: targetEl,
23118
+ targetNode: extendNodeAttr(targetNodeData),
23119
+ sourceNode: sourceNodeData,
23120
+ data: payload.data,
23121
+ parentNode: payload.parentNode,
23122
+ oldParentNode: payload.oldParentNode,
23123
+ dropType: payload.dropType,
23124
+ sourceIndex: payload.sourceIndex,
23125
+ targetIndex: payload.targetIndex
23126
+ };
23127
+ ctx.emit(EVENTS.NODE_DROP, dropPayload);
23060
23128
  cleanup();
23061
23129
  },
23062
- onMove: function onMove(evt, originalEvent) {
23063
- var _evt$willInsertAfter;
23064
- var relatedEl = evt.related;
23065
- var draggedEl = evt.dragged;
23066
- var relatedId = relatedEl.getAttribute('data-tree-node');
23067
- var draggedId = draggedEl.getAttribute('data-tree-node');
23068
- if (!relatedId || !draggedId) return -1;
23069
- // 不能拖到自己的子节点中
23070
- var draggedData = getSourceNodeByUID(draggedId);
23071
- if (draggedData) {
23072
- var relatedData = getSourceNodeByUID(relatedId);
23073
- var parent = getParentNode(relatedData);
23074
- while (parent) {
23075
- if (parent === draggedData) return -1;
23076
- parent = getParentNode(parent);
23077
- }
23078
- }
23079
- // 使用 originalEvent 坐标实时计算放置类型
23080
- var clientY = originalEvent.clientY;
23081
- var dropType = calcDropType(clientY, relatedEl);
23082
- // dragSort 模式下:如果源节点和目标节点不同父且 dragSortMode === 'next',禁止放置
23083
- if (dropType === 'sort' && props.dragSortMode === 'next') {
23084
- var sourceParent = getParentNode(getSourceNodeByUID(draggedId));
23085
- var targetParent = getParentNode(getSourceNodeByUID(relatedId));
23086
- if (sourceParent !== targetParent) return -1;
23130
+ onUnchoose: function onUnchoose(evt) {
23131
+ var _evt$item;
23132
+ var nodeId = ((_evt$item = evt.item) === null || _evt$item === void 0 ? void 0 : _evt$item.getAttribute('data-tree-node')) || dragNodeId;
23133
+ var nodeData = nodeId ? getSourceNodeByUID(nodeId) : null;
23134
+ if (nodeData) {
23135
+ ctx.emit(EVENTS.NODE_DRAG_LEAVE, extendNodeAttr(nodeData), evt);
23087
23136
  }
23088
- // 检查是否禁止放置
23089
- if (isDropDisabled(draggedId, relatedId, dropType)) return -1;
23090
- // 记录当前放置信息,供 onEnd 消费
23091
- // evt.willInsertAfter 是 sortablejs 提供的原生属性,
23092
- // 表示拖拽元素将被插入到目标元素之后(true)还是之前(false)
23093
- currentDropType = dropType;
23094
- currentRelatedId = relatedId;
23095
- currentWillInsertAfter = (_evt$willInsertAfter = evt.willInsertAfter) !== null && _evt$willInsertAfter !== void 0 ? _evt$willInsertAfter : true;
23096
- // 使用 overlay 指示器显示放置位置
23097
- updateIndicator(relatedEl, dropType, currentWillInsertAfter);
23098
- ctx.emit(EVENTS.NODE_DRAG_OVER, originalEvent, relatedEl, extendNodeAttr(getSourceNodeByUID(relatedId)));
23099
- return true;
23100
23137
  }
23101
23138
  });
23102
23139
  };
23103
- /**
23104
- * 销毁 Sortable 实例
23105
- */
23106
- var destroySortable = function destroySortable() {
23107
- if (sortableInstance) {
23108
- sortableInstance.destroy();
23109
- sortableInstance = null;
23110
- }
23111
- };
23112
- /**
23113
- * 清理拖拽状态
23114
- * 拖拽结束后移除节点的选中状态,避免拖拽完毕节点保持选中
23115
- */
23116
- var cleanup = function cleanup() {
23117
- if (dragNodeId) {
23118
- var dragNode = getSourceNodeByUID(dragNodeId);
23119
- if (dragNode) {
23120
- setNodeAttr(dragNode, NODE_ATTRIBUTES.IS_SELECTED, false);
23121
- }
23140
+ var syncSortable = function syncSortable() {
23141
+ if (props.draggable || props.dragSort) {
23142
+ initSortable();
23143
+ } else {
23144
+ destroySortable();
23145
+ removeIndicator();
23122
23146
  }
23123
- dragNodeId = '';
23124
- currentDropType = 'move';
23125
- currentRelatedId = '';
23126
- currentWillInsertAfter = true;
23127
- isDragging.value = false;
23128
- removeIndicator();
23129
23147
  };
23130
23148
  (0,external_vue_namespaceObject.onMounted)(function () {
23131
- if ((props.draggable || props.dragSort) && root.value) {
23149
+ if (props.draggable || props.dragSort) {
23132
23150
  (0,external_vue_namespaceObject.nextTick)(function () {
23133
- initSortable();
23151
+ return initSortable();
23134
23152
  });
23135
23153
  }
23136
23154
  });
23155
+ (0,external_vue_namespaceObject.watch)(function () {
23156
+ return [props.draggable, props.dragSort];
23157
+ }, function () {
23158
+ return (0,external_vue_namespaceObject.nextTick)(function () {
23159
+ return syncSortable();
23160
+ });
23161
+ });
23137
23162
  (0,external_vue_namespaceObject.onUnmounted)(function () {
23138
23163
  destroySortable();
23139
23164
  removeIndicator();
@@ -23380,6 +23405,9 @@ var use_tree_init_this = undefined;
23380
23405
  var outputData = [];
23381
23406
  var order = 0;
23382
23407
  var treeSchema = new WeakMap();
23408
+ var nodeMap = new Map();
23409
+ var childMap = new WeakMap();
23410
+ var rootNodes = [];
23383
23411
  /**
23384
23412
  * 递归更新节点属性
23385
23413
  * @param node 当前节点
@@ -23399,7 +23427,7 @@ var use_tree_init_this = undefined;
23399
23427
  if (target[attrName] === attrValue) {
23400
23428
  return;
23401
23429
  }
23402
- Object.assign(target, _defineProperty({}, attrName, attrValue));
23430
+ Object.assign(target, defineProperty_defineProperty({}, attrName, attrValue));
23403
23431
  loopUpdateNodeAttr(target[NODE_ATTRIBUTES.PARENT], attrName, attrValue, callFn);
23404
23432
  }
23405
23433
  }
@@ -23417,7 +23445,7 @@ var use_tree_init_this = undefined;
23417
23445
  * 如果传入数据没有设置相关属性值
23418
23446
  * 这里会自动生成
23419
23447
  */
23420
- var cachedDefaultVal = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, NODE_ATTRIBUTES.IS_OPEN, function () {
23448
+ var cachedDefaultVal = defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty({}, NODE_ATTRIBUTES.IS_OPEN, function () {
23421
23449
  return !!props.expandAll;
23422
23450
  }), NODE_ATTRIBUTES.IS_CHECKED, function () {
23423
23451
  return false;
@@ -23522,6 +23550,12 @@ var use_tree_init_this = undefined;
23522
23550
  var currentPath = path !== null ? "".concat(path, "-").concat(i) : "".concat(i);
23523
23551
  var uuid = "".concat(getUid(item));
23524
23552
  var hasChildren = !!(item[children] || []).length;
23553
+ if (!props.nodeKey) {
23554
+ item[NODE_ATTRIBUTES.UUID] = uuid;
23555
+ }
23556
+ if (nodeMap.has(uuid)) {
23557
+ console.warn("[bk-tree] duplicate node key \"".concat(uuid, "\" found, please check nodeKey."));
23558
+ }
23525
23559
  /**
23526
23560
  * 当前节点设置是否为展开状态
23527
23561
  */
@@ -23540,12 +23574,20 @@ var use_tree_init_this = undefined;
23540
23574
  */
23541
23575
  isOpened = isNodeOpend(uuid, item, parent);
23542
23576
  }
23543
- var attributes = (_attributes = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_attributes, NODE_ATTRIBUTES.DEPTH, depth), NODE_ATTRIBUTES.INDEX, order), NODE_ATTRIBUTES.UUID, uuid), NODE_ATTRIBUTES.PARENT, parent), NODE_ATTRIBUTES.HAS_CHILD, hasChildren), NODE_ATTRIBUTES.PATH, currentPath), NODE_ATTRIBUTES.IS_ROOT, parent === null), NODE_ATTRIBUTES.ORDER, order), NODE_ATTRIBUTES.IS_SELECTED, isCachedTreeNodeSelected(uuid, item)), NODE_ATTRIBUTES.IS_MATCH, getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_MATCH)), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_attributes, NODE_ATTRIBUTES.IS_OPEN, isOpened), NODE_ATTRIBUTES.IS_CHECKED, undefined), NODE_ATTRIBUTES.IS_CACHED, getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_CACHED)), NODE_ATTRIBUTES.IS_ASYNC, getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_ASYNC)), NODE_ATTRIBUTES.IS_LOADING, getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_LOADING)), NODE_ATTRIBUTES.IS_INDETERMINATE, false));
23577
+ var attributes = (_attributes = {}, defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(_attributes, NODE_ATTRIBUTES.DEPTH, depth), NODE_ATTRIBUTES.INDEX, order), NODE_ATTRIBUTES.UUID, uuid), NODE_ATTRIBUTES.PARENT, parent), NODE_ATTRIBUTES.HAS_CHILD, hasChildren), NODE_ATTRIBUTES.PATH, currentPath), NODE_ATTRIBUTES.IS_ROOT, parent === null), NODE_ATTRIBUTES.ORDER, order), NODE_ATTRIBUTES.IS_SELECTED, isCachedTreeNodeSelected(uuid, item)), NODE_ATTRIBUTES.IS_MATCH, getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_MATCH)), defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(_attributes, NODE_ATTRIBUTES.IS_OPEN, isOpened), NODE_ATTRIBUTES.IS_CHECKED, undefined), NODE_ATTRIBUTES.IS_CACHED, getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_CACHED)), NODE_ATTRIBUTES.IS_ASYNC, getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_ASYNC)), NODE_ATTRIBUTES.IS_LOADING, getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_LOADING)), NODE_ATTRIBUTES.IS_INDETERMINATE, false));
23544
23578
  attributes[NODE_ATTRIBUTES.IS_CHECKED] = isCheckedNode(item, uuid, attributes);
23545
23579
  if (attributes[NODE_ATTRIBUTES.IS_CHECKED]) {
23546
23580
  checkedList.push(item);
23547
23581
  }
23548
23582
  treeSchema.set(item, attributes);
23583
+ nodeMap.set(uuid, item);
23584
+ if (parent === null) {
23585
+ rootNodes.push(item);
23586
+ } else {
23587
+ var siblings = childMap.get(parent) || [];
23588
+ siblings.push(item);
23589
+ childMap.set(parent, siblings);
23590
+ }
23549
23591
  outputData.push(item);
23550
23592
  order += 1;
23551
23593
  if (Object.prototype.hasOwnProperty.call(item, children)) {
@@ -23561,7 +23603,7 @@ var use_tree_init_this = undefined;
23561
23603
  loopUpdateNodeAttr(value, NODE_ATTRIBUTES.IS_CHECKED, true, loopUpdateCheckedEvent);
23562
23604
  });
23563
23605
  }
23564
- return [outputData, treeSchema];
23606
+ return [outputData, treeSchema, nodeMap, childMap, rootNodes];
23565
23607
  };
23566
23608
  var formatData = getFlatdata();
23567
23609
  var nextLoopEvents = new Map();
@@ -23574,6 +23616,9 @@ var use_tree_init_this = undefined;
23574
23616
  var flatData = (0,external_vue_namespaceObject.reactive)({
23575
23617
  data: formatData[0],
23576
23618
  schema: formatData[1],
23619
+ nodeMap: formatData[2],
23620
+ childMap: formatData[3],
23621
+ rootNodes: formatData[4],
23577
23622
  levelLineSchema: {}
23578
23623
  });
23579
23624
  var _useNodeAsync = use_node_async(props, flatData),
@@ -23644,13 +23689,20 @@ var use_tree_init_this = undefined;
23644
23689
  /**
23645
23690
  * 监听组件配置Data改变
23646
23691
  */
23692
+ var rebuildData = function rebuildData(treeData) {
23693
+ var cachedSchema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : flatData.schema;
23694
+ var formatData = getFlatdata(treeData, cachedSchema);
23695
+ flatData.data = formatData[0];
23696
+ flatData.schema = formatData[1];
23697
+ flatData.nodeMap = formatData[2];
23698
+ flatData.childMap = formatData[3];
23699
+ flatData.rootNodes = formatData[4];
23700
+ };
23647
23701
  (0,external_vue_namespaceObject.watch)(function () {
23648
23702
  return [props.data];
23649
23703
  }, function (newData) {
23650
23704
  var _props$async, _props$async2;
23651
- var formatData = getFlatdata(newData[0], flatData.schema);
23652
- flatData.data = formatData[0];
23653
- flatData.schema = formatData[1];
23705
+ rebuildData(newData[0], flatData.schema);
23654
23706
  if ((_props$async = props.async) !== null && _props$async !== void 0 && _props$async.callback && ((_props$async2 = props.async) === null || _props$async2 === void 0 ? void 0 : _props$async2.deepAutoOpen) === 'every') {
23655
23707
  deepAutoOpen();
23656
23708
  }
@@ -23698,6 +23750,7 @@ var use_tree_init_this = undefined;
23698
23750
  deepAutoOpen: deepAutoOpen,
23699
23751
  afterDataUpdate: afterDataUpdate,
23700
23752
  registerNextLoop: registerNextLoop,
23753
+ rebuildData: rebuildData,
23701
23754
  onSelected: onSelected
23702
23755
  };
23703
23756
  });
@@ -23751,9 +23804,11 @@ var use_tree_init_this = undefined;
23751
23804
  emits: TreeEmitEventsType,
23752
23805
  setup: function setup(props, ctx) {
23753
23806
  var root = (0,external_vue_namespaceObject.ref)();
23807
+ var treeDataRef = (0,external_vue_namespaceObject.ref)(props.data);
23754
23808
  var _useTreeInit = use_tree_init(props),
23755
23809
  flatData = _useTreeInit.flatData,
23756
23810
  onSelected = _useTreeInit.onSelected,
23811
+ rebuildData = _useTreeInit.rebuildData,
23757
23812
  registerNextLoop = _useTreeInit.registerNextLoop;
23758
23813
  var _useNodeAttribute = use_node_attribute(flatData, props),
23759
23814
  checkNodeIsOpen = _useNodeAttribute.checkNodeIsOpen,
@@ -23809,7 +23864,18 @@ var use_tree_init_this = undefined;
23809
23864
  var _useIntersectionObser = use_intersection_observer(props),
23810
23865
  getLastVisibleElement = _useIntersectionObser.getLastVisibleElement,
23811
23866
  intersectionObserver = _useIntersectionObser.intersectionObserver;
23867
+ var onTreeDataChange = function onTreeDataChange(payload) {
23868
+ var _payload$data, _props$onDataChange;
23869
+ treeDataRef.value = (_payload$data = payload.data) !== null && _payload$data !== void 0 ? _payload$data : [];
23870
+ rebuildData(treeDataRef.value);
23871
+ ctx.emit(EVENTS.NODE_DATA_CHANGE, payload);
23872
+ (_props$onDataChange = props.onDataChange) === null || _props$onDataChange === void 0 || _props$onDataChange.call(props, payload);
23873
+ };
23812
23874
  var _useNodeAction = use_node_action(props, ctx, flatData, renderData, {
23875
+ getTreeData: function getTreeData() {
23876
+ return treeDataRef.value;
23877
+ },
23878
+ onTreeDataChange: onTreeDataChange,
23813
23879
  registerNextLoop: registerNextLoop
23814
23880
  }),
23815
23881
  renderTreeNode = _useNodeAction.renderTreeNode,
@@ -23896,6 +23962,11 @@ var use_tree_init_this = undefined;
23896
23962
  onSelected(function (newData) {
23897
23963
  setSelect(newData, true, props.autoOpenParentNode, true);
23898
23964
  });
23965
+ (0,external_vue_namespaceObject.watch)(function () {
23966
+ return props.data;
23967
+ }, function (value) {
23968
+ treeDataRef.value = value;
23969
+ });
23899
23970
  /**
23900
23971
  * 根据最新的schema生成最新的Tree结构数据
23901
23972
  * @returns
@@ -24020,7 +24091,12 @@ var use_tree_init_this = undefined;
24020
24091
  });
24021
24092
  var _useEmpty = use_empty(props),
24022
24093
  renderEmpty = _useEmpty.renderEmpty;
24023
- use_node_drag(props, ctx, root, flatData);
24094
+ use_node_drag(props, ctx, root, flatData, {
24095
+ getTreeData: function getTreeData() {
24096
+ return treeDataRef.value;
24097
+ },
24098
+ onTreeDataChange: onTreeDataChange
24099
+ });
24024
24100
  var renderTreeContent = function renderTreeContent(scopedData) {
24025
24101
  var _ctx$slots$empty, _ctx$slots$empty2, _ctx$slots;
24026
24102
  if (scopedData.length) {