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

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_defineProperty(e, r, t) {
17464
+ function _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,8 +17500,6 @@ 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";
17505
17503
  EVENTS["NODE_CHECKED"] = "nodeChecked";
17506
17504
  EVENTS["NODE_CLICK"] = "nodeClick";
17507
17505
  EVENTS["NODE_COLLAPSE"] = "nodeCollapse";
@@ -17517,7 +17515,7 @@ var EVENTS;
17517
17515
  var EMPTY = function EMPTY() {
17518
17516
  return true;
17519
17517
  };
17520
- 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_DRAG_START, EMPTY), EVENTS.NODE_DRAG_OVER, EMPTY), EVENTS.NODE_DRAG_LEAVE, EMPTY), EVENTS.NODE_DRAG_SORT, EMPTY), defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(_TreeEmitEventsType, EVENTS.NODE_DROP, EMPTY), EVENTS.NODE_ENTER_VIEW, EMPTY), EVENTS.NODE_SELECTED, EMPTY));
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
17519
  /**
17522
17520
  * 节点扩展属性
17523
17521
  */
@@ -17544,7 +17542,7 @@ var NODE_ATTRIBUTES;
17544
17542
  NODE_ATTRIBUTES["TREE_NODE_ATTR"] = "__attr__";
17545
17543
  NODE_ATTRIBUTES["UUID"] = "__uuid";
17546
17544
  })(NODE_ATTRIBUTES || (NODE_ATTRIBUTES = {}));
17547
- 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');
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
17546
  /**
17549
17547
  * 节点点击可执行行为配置
17550
17548
  */
@@ -17590,7 +17588,7 @@ var treeProps = {
17590
17588
  label: shared_namespaceObject.PropTypes.oneOfType([shared_namespaceObject.PropTypes.func.def(undefined), shared_namespaceObject.PropTypes.string.def('label')]),
17591
17589
  /**
17592
17590
  * 每个树节点用来作为唯一标识的属性,此标识应该是唯一的
17593
- * 启用拖拽、异步、受控选中/勾选等复杂能力时强烈建议显式设置
17591
+ * 如果设置系统会默认自动生成唯一id
17594
17592
  */
17595
17593
  nodeKey: shared_namespaceObject.PropTypes.string.def(undefined),
17596
17594
  /**
@@ -17625,10 +17623,6 @@ var treeProps = {
17625
17623
  * 默认 true
17626
17624
  */
17627
17625
  prefixIcon: shared_namespaceObject.PropTypes.oneOfType([shared_namespaceObject.PropTypes.func.def(function () {}), shared_namespaceObject.PropTypes.bool.def(false)]).def(true),
17628
- /**
17629
- * 当树数据需要由外部接管更新时的统一回调
17630
- */
17631
- onDataChange: Function,
17632
17626
  /**
17633
17627
  * 异步加载节点数据配置
17634
17628
  * @param callback 请求数据回调函数,函数返回 Promise
@@ -17780,18 +17774,9 @@ var treeProps = {
17780
17774
  */
17781
17775
  keepSlotData: shared_namespaceObject.PropTypes.bool.def(false),
17782
17776
  /**
17783
- * 是否启用父子节点勾选联动
17784
- * true: 父子联动
17785
- * false: 父子不联动(语义与行业常见 checkStrictly 相反,为兼容历史行为暂保留)
17777
+ * 在显示复选框的情况下,是否严格的遵循父子互相关联的做法
17786
17778
  */
17787
17779
  checkStrictly: shared_namespaceObject.PropTypes.bool.def(true),
17788
- /**
17789
- * 是否深度监听 props.data 变化
17790
- * - false (默认): 仅监听 props.data 引用变化,性能更优
17791
- * - true: 深度监听 props.data 内部节点变化(已废弃,将在下个主版本移除)
17792
- * @deprecated 请使用 onDataChange 回调更新数据,避免直接修改 props.data 内部节点
17793
- */
17794
- deepWatch: shared_namespaceObject.PropTypes.bool.def(false),
17795
17780
  /**
17796
17781
  * 是否开启监听Tree节点进入Tree容器可视区域
17797
17782
  */
@@ -18063,7 +18048,7 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18063
18048
  console.warn('node is not in schema, please check', id, node);
18064
18049
  return;
18065
18050
  }
18066
- flatData.schema.set(node, Object.assign({}, getSchemaVal(node), defineProperty_defineProperty({}, attr, val)));
18051
+ flatData.schema.set(node, Object.assign({}, getSchemaVal(node), _defineProperty({}, attr, val)));
18067
18052
  };
18068
18053
  var getNodeById = function getNodeById(id) {
18069
18054
  return flatData.data.find(function (item) {
@@ -18194,18 +18179,14 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18194
18179
  return Array.isArray(pre) ? pre[index] : pre[props.children][index];
18195
18180
  }, props.data);
18196
18181
  if (uid) {
18197
- Object.assign(target, defineProperty_defineProperty({}, NODE_ATTRIBUTES.UUID, uid));
18182
+ Object.assign(target, _defineProperty({}, NODE_ATTRIBUTES.UUID, uid));
18198
18183
  }
18199
18184
  return target;
18200
18185
  };
18201
18186
  var getChildNodes = function getChildNodes(node) {
18202
- var children = [];
18203
- flatData.data.forEach(function (item) {
18204
- if (getParentNode(item) === node) {
18205
- children.push(item);
18206
- }
18187
+ return flatData.data.filter(function (item) {
18188
+ return getParentNode(item) === node;
18207
18189
  });
18208
- return children;
18209
18190
  };
18210
18191
  var getSourceNodeByUID = function getSourceNodeByUID(uid) {
18211
18192
  return flatData.data.find(function (item) {
@@ -18218,7 +18199,7 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18218
18199
  target = getSourceNodeByUID(target);
18219
18200
  }
18220
18201
  if (isRootNode(target)) {
18221
- return defineProperty_defineProperty({}, props.children, props.data);
18202
+ return _defineProperty({}, props.children, props.data);
18222
18203
  }
18223
18204
  return getParentNode(target);
18224
18205
  };
@@ -18228,10 +18209,10 @@ const icon_namespaceObject = icon_x({ ["DownShape"]: () => __WEBPACK_EXTERNAL_MO
18228
18209
  * @returns
18229
18210
  */
18230
18211
  var resolveScopedSlotParam = function resolveScopedSlotParam(item) {
18231
- 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)));
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)));
18232
18213
  };
18233
18214
  var extendNodeAttr = function extendNodeAttr(item) {
18234
- return Object.assign({}, item, defineProperty_defineProperty({}, NODE_ATTRIBUTES.TREE_NODE_ATTR, resolveScopedSlotParam(item)));
18215
+ return Object.assign({}, item, _defineProperty({}, NODE_ATTRIBUTES.TREE_NODE_ATTR, resolveScopedSlotParam(item)));
18235
18216
  };
18236
18217
  var extendNodeScopedData = function extendNodeScopedData(item) {
18237
18218
  return {
@@ -18339,13 +18320,9 @@ function _toConsumableArray(r) {
18339
18320
 
18340
18321
 
18341
18322
 
18342
-
18343
18323
  var _this = undefined;
18344
- 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; } } }; }
18345
- 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; } }
18346
- 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; }
18347
18324
  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; }
18348
- 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; }
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; }
18349
18326
  /*
18350
18327
  * Tencent is pleased to support the open source community by making
18351
18328
  * 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
@@ -18374,23 +18351,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
18374
18351
 
18375
18352
 
18376
18353
  var DEFAULT_LEVLE_LINE = '1px dashed #c3cdd7';
18377
- var _cloneTreeNode = function cloneTreeNode(node) {
18378
- if (Array.isArray(node)) {
18379
- return node.map(function (item) {
18380
- return _cloneTreeNode(item);
18381
- });
18382
- }
18383
- if (node && _typeof(node) === 'object') {
18384
- return Object.keys(node).reduce(function (acc, key) {
18385
- var value = node[key];
18386
- acc[key] = Array.isArray(value) ? value.map(function (item) {
18387
- return _cloneTreeNode(item);
18388
- }) : value;
18389
- return acc;
18390
- }, {});
18391
- }
18392
- return node;
18393
- };
18394
18354
  /**
18395
18355
  * 获取配置项可为Bool|String|Function类型,如果为Bool则配置默认值
18396
18356
  * @param props
@@ -18502,7 +18462,7 @@ var getNodeItemClass = function getNodeItemClass(item, schema, props) {
18502
18462
  __is_open = _ref.__is_open;
18503
18463
  var _usePrefix = (0,config_provider_namespaceObject.usePrefix)(),
18504
18464
  resolveClassName = _usePrefix.resolveClassName;
18505
- return defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty({
18465
+ return _defineProperty(_defineProperty(_defineProperty(_defineProperty({
18506
18466
  'is-root': __is_root
18507
18467
  }, "".concat(resolveClassName('tree-node')), true), 'is-open', __is_open), 'is-virtual-render', props.virtualRender), 'level-line', props.levelLine && showTree);
18508
18468
  };
@@ -18518,7 +18478,7 @@ var getNodeRowClass = function getNodeRowClass(item, schema) {
18518
18478
  __is_selected = _ref3.__is_selected;
18519
18479
  var _usePrefix2 = (0,config_provider_namespaceObject.usePrefix)(),
18520
18480
  resolveClassName = _usePrefix2.resolveClassName;
18521
- return defineProperty_defineProperty({
18481
+ return _defineProperty({
18522
18482
  'is-checked': __is_checked,
18523
18483
  'is-selected': __is_selected,
18524
18484
  'node-folder': item.is_folder,
@@ -18536,187 +18496,6 @@ var getNodeRowClass = function getNodeRowClass(item, schema) {
18536
18496
  var updateTreeNode = function updateTreeNode(path, treeData, childKey, nodekey, nodeValue) {
18537
18497
  assignTreeNode(path, treeData, childKey, _defineProperty({}, nodekey, nodeValue));
18538
18498
  };
18539
- var _cloneTreeData = function cloneTreeData() {
18540
- var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18541
- var childKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'children';
18542
- return (treeData || []).map(function (node) {
18543
- var clonedNode = _cloneTreeNode(node);
18544
- if (Array.isArray(node === null || node === void 0 ? void 0 : node[childKey])) {
18545
- clonedNode[childKey] = _cloneTreeData(node[childKey], childKey);
18546
- }
18547
- return clonedNode;
18548
- });
18549
- };
18550
-
18551
- var _findNodeById = function findNodeById() {
18552
- var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18553
- var nodeId = arguments.length > 1 ? arguments[1] : undefined;
18554
- var nodeKey = arguments.length > 2 ? arguments[2] : undefined;
18555
- var childKey = arguments.length > 3 ? arguments[3] : undefined;
18556
- var _iterator = _createForOfIteratorHelper(treeData),
18557
- _step;
18558
- try {
18559
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
18560
- var node = _step.value;
18561
- if ((node === null || node === void 0 ? void 0 : node[nodeKey]) === nodeId) {
18562
- return node;
18563
- }
18564
- var children = node === null || node === void 0 ? void 0 : node[childKey];
18565
- if (Array.isArray(children) && children.length) {
18566
- var target = _findNodeById(children, nodeId, nodeKey, childKey);
18567
- if (target) {
18568
- return target;
18569
- }
18570
- }
18571
- }
18572
- } catch (err) {
18573
- _iterator.e(err);
18574
- } finally {
18575
- _iterator.f();
18576
- }
18577
- return null;
18578
- };
18579
-
18580
- var mutateTreeById = function mutateTreeById() {
18581
- var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18582
- var nodeId = arguments.length > 1 ? arguments[1] : undefined;
18583
- var nodeKey = arguments.length > 2 ? arguments[2] : undefined;
18584
- var childKey = arguments.length > 3 ? arguments[3] : undefined;
18585
- var updater = arguments.length > 4 ? arguments[4] : undefined;
18586
- var target = _findNodeById(treeData, nodeId, nodeKey, childKey);
18587
- if (target) {
18588
- updater(target);
18589
- }
18590
- return treeData;
18591
- };
18592
- var removeTreeNodeById = function removeTreeNodeById() {
18593
- var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18594
- var nodeId = arguments.length > 1 ? arguments[1] : undefined;
18595
- var nodeKey = arguments.length > 2 ? arguments[2] : undefined;
18596
- var childKey = arguments.length > 3 ? arguments[3] : undefined;
18597
- var _loop = function loop(list, parentNode) {
18598
- for (var index = 0; index < list.length; index++) {
18599
- var current = list[index];
18600
- if ((current === null || current === void 0 ? void 0 : current[nodeKey]) === nodeId) {
18601
- var _list$splice = list.splice(index, 1),
18602
- _list$splice2 = _slicedToArray(_list$splice, 1),
18603
- node = _list$splice2[0];
18604
- return {
18605
- node: node,
18606
- parentNode: parentNode,
18607
- index: index
18608
- };
18609
- }
18610
- var children = current === null || current === void 0 ? void 0 : current[childKey];
18611
- if (Array.isArray(children) && children.length) {
18612
- var _result = _loop(children, current);
18613
- if (_result.node) {
18614
- return _result;
18615
- }
18616
- }
18617
- }
18618
- return {
18619
- node: null,
18620
- parentNode: null,
18621
- index: -1
18622
- };
18623
- };
18624
- var result = _loop(treeData, null);
18625
- return _objectSpread(_objectSpread({}, result), {}, {
18626
- data: treeData
18627
- });
18628
- };
18629
- var insertTreeNodeById = function insertTreeNodeById() {
18630
- var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18631
- var node = arguments.length > 1 ? arguments[1] : undefined;
18632
- var targetNodeId = arguments.length > 2 ? arguments[2] : undefined;
18633
- var nodeKey = arguments.length > 3 ? arguments[3] : undefined;
18634
- var childKey = arguments.length > 4 ? arguments[4] : undefined;
18635
- var options = arguments.length > 5 ? arguments[5] : undefined;
18636
- var dropType = options.dropType,
18637
- _options$willInsertAf = options.willInsertAfter,
18638
- willInsertAfter = _options$willInsertAf === void 0 ? true : _options$willInsertAf;
18639
- if (dropType === 'child') {
18640
- var targetNode = _findNodeById(treeData, targetNodeId, nodeKey, childKey);
18641
- if (!targetNode) {
18642
- return {
18643
- data: treeData,
18644
- parentNode: null,
18645
- targetNode: null,
18646
- index: -1
18647
- };
18648
- }
18649
- if (!Array.isArray(targetNode[childKey])) {
18650
- targetNode[childKey] = [];
18651
- }
18652
- var targetChildren = targetNode[childKey];
18653
- targetChildren.push(node);
18654
- return {
18655
- data: treeData,
18656
- parentNode: targetNode,
18657
- targetNode: targetNode,
18658
- index: targetChildren.length - 1
18659
- };
18660
- }
18661
- var _loop2 = function loop(list, parentNode) {
18662
- for (var index = 0; index < list.length; index++) {
18663
- var current = list[index];
18664
- if ((current === null || current === void 0 ? void 0 : current[nodeKey]) === targetNodeId) {
18665
- var insertIndex = willInsertAfter ? index + 1 : index;
18666
- list.splice(insertIndex, 0, node);
18667
- return {
18668
- parentNode: parentNode,
18669
- targetNode: current,
18670
- index: insertIndex
18671
- };
18672
- }
18673
- var children = current === null || current === void 0 ? void 0 : current[childKey];
18674
- if (Array.isArray(children) && children.length) {
18675
- var _result2 = _loop2(children, current);
18676
- if (_result2.targetNode) {
18677
- return _result2;
18678
- }
18679
- }
18680
- }
18681
- return {
18682
- parentNode: null,
18683
- targetNode: null,
18684
- index: -1
18685
- };
18686
- };
18687
- var result = _loop2(treeData, null);
18688
- return _objectSpread({
18689
- data: treeData
18690
- }, result);
18691
- };
18692
- var moveTreeNodeById = function moveTreeNodeById() {
18693
- var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18694
- var nodeId = arguments.length > 1 ? arguments[1] : undefined;
18695
- var targetNodeId = arguments.length > 2 ? arguments[2] : undefined;
18696
- var nodeKey = arguments.length > 3 ? arguments[3] : undefined;
18697
- var childKey = arguments.length > 4 ? arguments[4] : undefined;
18698
- var options = arguments.length > 5 ? arguments[5] : undefined;
18699
- var nextTreeData = _cloneTreeData(treeData, childKey);
18700
- var removeResult = removeTreeNodeById(nextTreeData, nodeId, nodeKey, childKey);
18701
- if (!removeResult.node) {
18702
- return null;
18703
- }
18704
- var insertResult = insertTreeNodeById(nextTreeData, removeResult.node, targetNodeId, nodeKey, childKey, options);
18705
- if (!insertResult.targetNode && options.dropType !== 'child') {
18706
- return null;
18707
- }
18708
- return {
18709
- trigger: 'drag',
18710
- data: nextTreeData,
18711
- node: removeResult.node,
18712
- targetNode: insertResult.targetNode,
18713
- parentNode: insertResult.parentNode,
18714
- oldParentNode: removeResult.parentNode,
18715
- dropType: options.dropType,
18716
- sourceIndex: removeResult.index,
18717
- targetIndex: insertResult.index
18718
- };
18719
- };
18720
18499
  /**
18721
18500
  * 根据路径更新指定节点Child-Data
18722
18501
  * @param path 节点路径
@@ -18735,7 +18514,9 @@ var assignTreeNode = function assignTreeNode(path, treeData, childKey, assignVal
18735
18514
  var resolveNodeItem = function resolveNodeItem(node) {
18736
18515
  if (node === undefined || node === null) {
18737
18516
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
18738
- return defineProperty_defineProperty({}, NODE_ATTRIBUTES.IS_NULL, true);
18517
+ return {
18518
+ __IS_NULL: true
18519
+ };
18739
18520
  }
18740
18521
  return node;
18741
18522
  };
@@ -18787,42 +18568,23 @@ var showCheckbox = function showCheckbox(props, node) {
18787
18568
 
18788
18569
 
18789
18570
 
18790
- /* harmony default export */ const use_node_async = (function (props, flatData, ctx) {
18571
+ /* harmony default export */ const use_node_async = (function (props, flatData) {
18791
18572
  var _useNodeAttribute = use_node_attribute(flatData, props),
18792
18573
  setNodeAttr = _useNodeAttribute.setNodeAttr,
18793
- getNodeId = _useNodeAttribute.getNodeId,
18574
+ getNodePath = _useNodeAttribute.getNodePath,
18794
18575
  getNodeAttr = _useNodeAttribute.getNodeAttr,
18795
18576
  resolveScopedSlotParam = _useNodeAttribute.resolveScopedSlotParam,
18796
18577
  setTreeNodeLoading = _useNodeAttribute.setTreeNodeLoading;
18797
- var requestVersionMap = new Map();
18798
- var emitTreeDataChange = function emitTreeDataChange(payload) {
18799
- var _props$onDataChange;
18800
- (_props$onDataChange = props.onDataChange) === null || _props$onDataChange === void 0 || _props$onDataChange.call(props, payload);
18801
- ctx === null || ctx === void 0 || ctx.emit(EVENTS.NODE_ASYNC_LOAD, payload);
18802
- };
18803
18578
  /**
18804
18579
  * 处理异步加载节点数据返回结果
18805
18580
  * @param resp 异步请求返回结果
18806
18581
  * @param item 当前节点
18807
18582
  */
18808
- var setNodeRemoteLoad = function setNodeRemoteLoad(resp, item, requestVersion) {
18583
+ var setNodeRemoteLoad = function setNodeRemoteLoad(resp, item) {
18809
18584
  if (_typeof(resp) === 'object' && resp !== null) {
18810
- var nodeId = getNodeId(item);
18811
- if (requestVersion !== undefined && requestVersionMap.get(nodeId) !== requestVersion) {
18812
- return Promise.resolve(resp);
18813
- }
18814
18585
  setNodeAttr(item, NODE_ATTRIBUTES.IS_OPEN, true);
18815
18586
  var nodeValue = Array.isArray(resp) ? resp : [resp];
18816
- var nextTreeData = _cloneTreeData(props.data, props.children);
18817
- mutateTreeById(nextTreeData, nodeId, props.nodeKey || NODE_ATTRIBUTES.UUID, props.children, function (targetNode) {
18818
- targetNode[props.children] = nodeValue;
18819
- });
18820
- emitTreeDataChange({
18821
- trigger: 'async',
18822
- data: nextTreeData,
18823
- node: item,
18824
- parentNode: item
18825
- });
18587
+ updateTreeNode(getNodePath(item), props.data, props.children, props.children, nodeValue);
18826
18588
  return Promise.resolve(resp);
18827
18589
  }
18828
18590
  return Promise.resolve(resp);
@@ -18833,39 +18595,29 @@ var showCheckbox = function showCheckbox(props, node) {
18833
18595
  callback = _ref$callback === void 0 ? null : _ref$callback,
18834
18596
  _ref$cache = _ref.cache,
18835
18597
  cache = _ref$cache === void 0 ? true : _ref$cache;
18598
+ /** 如果是异步请求加载 */
18836
18599
  if (typeof callback === 'function' && getNodeAttr(item, NODE_ATTRIBUTES.IS_ASYNC)) {
18837
- var nodeId = getNodeId(item);
18838
- var requestVersion = (requestVersionMap.get(nodeId) || 0) + 1;
18839
- requestVersionMap.set(nodeId, requestVersion);
18600
+ /** 用于注释当前节点是否已经初始化过 */
18840
18601
  setNodeAttr(item, NODE_ATTRIBUTES.IS_ASYNC_INIT, true);
18841
18602
  if (!getNodeAttr(item, NODE_ATTRIBUTES.IS_CACHED)) {
18842
18603
  setNodeAttr(item, NODE_ATTRIBUTES.IS_CACHED, cache);
18843
18604
  var dataAttr = resolveScopedSlotParam(item);
18844
18605
  var callbackResult = callback(item, function (resp) {
18845
- return setNodeRemoteLoad(resp, item, requestVersion);
18606
+ return setNodeRemoteLoad(resp, item);
18846
18607
  }, dataAttr);
18847
18608
  if (_typeof(callbackResult) === 'object' && callbackResult !== null) {
18848
18609
  setTreeNodeLoading(item, true);
18849
18610
  if (callbackResult instanceof Promise) {
18850
18611
  return Promise.resolve(callbackResult.then(function (resp) {
18851
- return setNodeRemoteLoad(resp, item, requestVersion);
18612
+ return setNodeRemoteLoad(resp, item);
18852
18613
  })["catch"](function (err) {
18853
- if (requestVersionMap.get(nodeId) === requestVersion) {
18854
- ctx === null || ctx === void 0 || ctx.emit(EVENTS.NODE_ASYNC_LOAD_ERROR, {
18855
- node: item,
18856
- error: err,
18857
- requestVersion: requestVersion
18858
- });
18859
- }
18860
- return false;
18614
+ return console.error('load remote data error:', err);
18861
18615
  })["finally"](function () {
18862
- if (requestVersionMap.get(nodeId) === requestVersion) {
18863
- setTreeNodeLoading(item, false);
18864
- setNodeAttr(item, NODE_ATTRIBUTES.IS_CACHED, true);
18865
- }
18616
+ setTreeNodeLoading(item, false);
18617
+ setNodeAttr(item, NODE_ATTRIBUTES.IS_CACHED, true);
18866
18618
  }));
18867
18619
  }
18868
- setNodeRemoteLoad(callbackResult, item, requestVersion);
18620
+ setNodeRemoteLoad(callbackResult, item);
18869
18621
  setTreeNodeLoading(item, false);
18870
18622
  return Promise.resolve(true);
18871
18623
  }
@@ -18934,10 +18686,6 @@ var use_node_action_this = undefined;
18934
18686
 
18935
18687
  /* harmony default export */ const use_node_action = (function (props, ctx, flatData, _renderData, initOption) {
18936
18688
  // const checkedNodes = [];
18937
- var getSelectedNodeId = function getSelectedNodeId() {
18938
- var _props$selected;
18939
- return (_props$selected = props.selected) !== null && _props$selected !== void 0 ? _props$selected : selectedNodeId;
18940
- };
18941
18689
  var selectedNodeId = props.selected;
18942
18690
  var _useNodeAttribute = use_node_attribute(flatData, props),
18943
18691
  setNodeAttr = _useNodeAttribute.setNodeAttr,
@@ -18960,7 +18708,7 @@ var use_node_action_this = undefined;
18960
18708
  var _usePrefix = (0,config_provider_namespaceObject.usePrefix)(),
18961
18709
  resolveClassName = _usePrefix.resolveClassName;
18962
18710
  var registerNextLoop = initOption.registerNextLoop;
18963
- var _useNodeAsync = use_node_async(props, flatData, ctx),
18711
+ var _useNodeAsync = use_node_async(props, flatData),
18964
18712
  asyncNodeClick = _useNodeAsync.asyncNodeClick,
18965
18713
  deepAutoOpen = _useNodeAsync.deepAutoOpen;
18966
18714
  /**
@@ -19103,7 +18851,6 @@ var use_node_action_this = undefined;
19103
18851
  if (value) {
19104
18852
  setNodeAttr(item, NODE_ATTRIBUTES.IS_INDETERMINATE, false);
19105
18853
  }
19106
- // 历史语义:checkStrictly=true 表示启用父子联动
19107
18854
  if (props.checkStrictly) {
19108
18855
  _deepUpdateChildNode(item, [NODE_ATTRIBUTES.IS_CHECKED, NODE_ATTRIBUTES.IS_INDETERMINATE], [!!value, false]);
19109
18856
  _updateParentChecked(item, value);
@@ -19284,7 +19031,7 @@ var use_node_action_this = undefined;
19284
19031
  var _flatData$data$find;
19285
19032
  resolvedItem = (_flatData$data$find = flatData.data.find(function (item) {
19286
19033
  return getNodeId(item) === resolvedItem;
19287
- })) !== null && _flatData$data$find !== void 0 ? _flatData$data$find : defineProperty_defineProperty({}, NODE_ATTRIBUTES.IS_NULL, true);
19034
+ })) !== null && _flatData$data$find !== void 0 ? _flatData$data$find : _defineProperty({}, NODE_ATTRIBUTES.IS_NULL, true);
19288
19035
  }
19289
19036
  if (resolvedItem[NODE_ATTRIBUTES.IS_NULL]) {
19290
19037
  return;
@@ -19293,23 +19040,19 @@ var use_node_action_this = undefined;
19293
19040
  console.warn('props.selectable is false or undefined, please set selectable with true');
19294
19041
  return;
19295
19042
  }
19296
- var currentSelectedNodeId = getSelectedNodeId();
19297
- if (currentSelectedNodeId !== null && currentSelectedNodeId !== undefined) {
19298
- setNodeAttrById(currentSelectedNodeId, NODE_ATTRIBUTES.IS_SELECTED, !selected);
19043
+ if (selectedNodeId !== null && selectedNodeId !== undefined) {
19044
+ setNodeAttrById(selectedNodeId, NODE_ATTRIBUTES.IS_SELECTED, !selected);
19299
19045
  }
19300
- if (props.selected && props.selected !== currentSelectedNodeId) {
19046
+ if (props.selected && props.selected !== selectedNodeId) {
19301
19047
  setNodeAttrById(props.selected, NODE_ATTRIBUTES.IS_SELECTED, !selected);
19302
19048
  }
19303
19049
  setNodeAttr(resolvedItem, NODE_ATTRIBUTES.IS_SELECTED, selected);
19304
- if (props.selected === undefined) {
19305
- selectedNodeId = getNodeId(resolvedItem);
19306
- }
19050
+ selectedNodeId = getNodeId(resolvedItem);
19307
19051
  if (triggerEvent) {
19308
- var payload = {
19052
+ ctx.emit(EVENTS.NODE_SELECTED, {
19309
19053
  selected: selected,
19310
19054
  node: resolvedItem
19311
- };
19312
- ctx.emit(EVENTS.NODE_SELECTED, payload);
19055
+ });
19313
19056
  }
19314
19057
  /**
19315
19058
  * 如果设置了自动展开
@@ -22904,17 +22647,14 @@ Sortable.mount(Remove, Revert);
22904
22647
 
22905
22648
 
22906
22649
 
22907
- /* harmony default export */ const use_node_drag = (function (props, ctx, root, flatData, options) {
22650
+ /* harmony default export */ const use_node_drag = (function (props, ctx, root, flatData) {
22908
22651
  var _useNodeAttribute = use_node_attribute(flatData, props),
22909
22652
  getSourceNodeByUID = _useNodeAttribute.getSourceNodeByUID,
22910
22653
  getParentNode = _useNodeAttribute.getParentNode,
22911
22654
  extendNodeAttr = _useNodeAttribute.extendNodeAttr,
22655
+ setNodeAttr = _useNodeAttribute.setNodeAttr,
22912
22656
  getNodeAttr = _useNodeAttribute.getNodeAttr,
22913
- getNodeId = _useNodeAttribute.getNodeId,
22914
- setNodeAttr = _useNodeAttribute.setNodeAttr;
22915
- var _ref = options || {},
22916
- moveTreeNodeById = _ref.moveTreeNodeById,
22917
- onTreeDataChange = _ref.onTreeDataChange;
22657
+ getRootNodeList = _useNodeAttribute.getRootNodeList;
22918
22658
  var _usePrefix = (0,config_provider_namespaceObject.usePrefix)(),
22919
22659
  resolveClassName = _usePrefix.resolveClassName;
22920
22660
  var isNeedCheckDraggable = (0,external_vue_namespaceObject.computed)(function () {
@@ -23022,12 +22762,24 @@ Sortable.mount(Remove, Revert);
23022
22762
  }
23023
22763
  });
23024
22764
  };
23025
- var emitTreeDataChange = function emitTreeDataChange(payload) {
23026
- if (!payload) {
23027
- return null;
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
+ }
23028
22782
  }
23029
- onTreeDataChange === null || onTreeDataChange === void 0 || onTreeDataChange(payload);
23030
- return payload;
23031
22783
  };
23032
22784
  /**
23033
22785
  * 更新节点的 HAS_CHILD 属性
@@ -23067,36 +22819,52 @@ Sortable.mount(Remove, Revert);
23067
22819
  return 'child';
23068
22820
  };
23069
22821
  /**
23070
- * 将源数据树结构重新展开为 flatData(DFS 顺序)
23071
- * 同时重新计算所有节点属性(深度、路径、索引等)
23072
- * 与 v1 版本保持一致:从 props.data 出发进行遍历,不依赖旧 schema 状态
22822
+ * 将源数据树结构重新展开为 flatData(BFS 顺序)
22823
+ * 这是唯一需要的 flatData 更新方式:修改 children 后重新展平
23073
22824
  */
23074
- var rebuildFlatDataWithAttributes = function rebuildFlatDataWithAttributes() {
22825
+ var rebuildFlatData = function rebuildFlatData() {
23075
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() {
23076
22843
  var orderIndex = 0;
23077
- var _traverse = function traverse(nodes, level, parentPath, parent) {
23078
- for (var i = 0; i < nodes.length; i++) {
23079
- var node = nodes[i];
22844
+ var _setNodeAttribute = function setNodeAttribute(nodeList, level, parentPath, parent) {
22845
+ for (var i = 0; i < nodeList.length; i++) {
22846
+ var node = nodeList[i];
23080
22847
  var path = parentPath !== '' ? "".concat(parentPath, "-").concat(i) : "".concat(i);
23081
- // 重新构建 flatData
23082
- newFlatData.push(node);
23083
- // 重新计算所有节点属性
23084
22848
  setNodeAttr(node, NODE_ATTRIBUTES.INDEX, orderIndex);
23085
22849
  setNodeAttr(node, NODE_ATTRIBUTES.ORDER, orderIndex);
23086
22850
  setNodeAttr(node, NODE_ATTRIBUTES.DEPTH, level);
23087
22851
  setNodeAttr(node, NODE_ATTRIBUTES.PATH, path);
23088
22852
  setNodeAttr(node, NODE_ATTRIBUTES.IS_ROOT, level === 0);
23089
22853
  setNodeAttr(node, NODE_ATTRIBUTES.PARENT, parent);
23090
- setNodeAttr(node, NODE_ATTRIBUTES.HAS_CHILD, !!(node[props.children] || []).length);
22854
+ if (!parent) {
22855
+ // 根节点:检查是否有子节点
22856
+ var _children = node[props.children];
22857
+ setNodeAttr(node, NODE_ATTRIBUTES.HAS_CHILD, !!(_children && _children.length > 0));
22858
+ }
23091
22859
  orderIndex += 1;
23092
- var children = node[props.children] || [];
23093
- if (children.length > 0) {
23094
- _traverse(children, level + 1, path, node);
22860
+ var children = node[props.children];
22861
+ if (children && children.length > 0) {
22862
+ _setNodeAttribute(children, level + 1, path, node);
23095
22863
  }
23096
22864
  }
23097
22865
  };
23098
- _traverse(props.data, 0, '', null);
23099
- flatData.data = newFlatData;
22866
+ var rootNodeList = getRootNodeList();
22867
+ _setNodeAttribute(rootNodeList, 0, '', null);
23100
22868
  };
23101
22869
  /**
23102
22870
  * 拖拽排序:同级节点间排序(dragSort 模式)
@@ -23105,29 +22873,36 @@ Sortable.mount(Remove, Revert);
23105
22873
  var dragSortData = function dragSortData(sourceNodeData, targetNodeData, willInsertAfter, savedOpenStates) {
23106
22874
  var sourceParent = getParentNode(sourceNodeData);
23107
22875
  var targetParent = getParentNode(targetNodeData);
23108
- if (props.dragSortMode === 'next' && sourceParent !== targetParent) return null;
23109
- var payload = emitTreeDataChange(moveTreeNodeById === null || moveTreeNodeById === void 0 ? void 0 : moveTreeNodeById(props.data, getNodeId(sourceNodeData), getNodeId(targetNodeData), props.nodeKey || NODE_ATTRIBUTES.UUID, props.children, {
23110
- dropType: 'sort',
23111
- willInsertAfter: willInsertAfter
23112
- }));
23113
- if (!payload) {
23114
- return null;
23115
- }
23116
- rebuildFlatDataWithAttributes();
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
23117
22899
  updateHasChildAttr(sourceParent);
22900
+ // 6. 恢复展开状态
23118
22901
  restoreAllOpenStates(savedOpenStates);
23119
- var dragSortPayload = {
22902
+ ctx.emit(EVENTS.NODE_DRAG_SORT, {
23120
22903
  sourceNode: sourceNodeData,
23121
- targetNode: targetNodeData,
23122
- sourceIndex: payload.sourceIndex,
23123
- targetIndex: payload.targetIndex,
23124
- data: payload.data,
23125
- parentNode: payload.parentNode,
23126
- oldParentNode: payload.oldParentNode,
23127
- dropType: payload.dropType
23128
- };
23129
- ctx.emit(EVENTS.NODE_DRAG_SORT, dragSortPayload);
23130
- return payload;
22904
+ targetNode: targetNodeData
22905
+ });
23131
22906
  };
23132
22907
  /**
23133
22908
  * 将源节点作为目标节点的子节点
@@ -23135,17 +22910,22 @@ Sortable.mount(Remove, Revert);
23135
22910
  */
23136
22911
  var dragAsChildNode = function dragAsChildNode(sourceNodeData, targetNodeData, savedOpenStates) {
23137
22912
  var sourceParent = getParentNode(sourceNodeData);
23138
- var payload = emitTreeDataChange(moveTreeNodeById === null || moveTreeNodeById === void 0 ? void 0 : moveTreeNodeById(props.data, getNodeId(sourceNodeData), getNodeId(targetNodeData), props.nodeKey || NODE_ATTRIBUTES.UUID, props.children, {
23139
- dropType: 'child'
23140
- }));
23141
- if (!payload) {
23142
- return null;
23143
- }
23144
- rebuildFlatDataWithAttributes();
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. 更新属性
23145
22924
  updateHasChildAttr(sourceParent);
23146
22925
  setNodeAttr(targetNodeData, NODE_ATTRIBUTES.HAS_CHILD, true);
22926
+ // 5. 恢复展开状态
23147
22927
  restoreAllOpenStates(savedOpenStates);
23148
- return payload;
22928
+ ctx.emit(EVENTS.NODE_DROP, sourceNodeData, targetNodeData, 'child');
23149
22929
  };
23150
22930
  /**
23151
22931
  * 将源节点作为目标节点的同级节点插入(可跨级)
@@ -23154,18 +22934,32 @@ Sortable.mount(Remove, Revert);
23154
22934
  var dragAsSiblingNode = function dragAsSiblingNode(sourceNodeData, targetNodeData, willInsertAfter, savedOpenStates) {
23155
22935
  var sourceParent = getParentNode(sourceNodeData);
23156
22936
  var targetParent = getParentNode(targetNodeData);
23157
- var payload = emitTreeDataChange(moveTreeNodeById === null || moveTreeNodeById === void 0 ? void 0 : moveTreeNodeById(props.data, getNodeId(sourceNodeData), getNodeId(targetNodeData), props.nodeKey || NODE_ATTRIBUTES.UUID, props.children, {
23158
- dropType: 'move',
23159
- willInsertAfter: willInsertAfter
23160
- }));
23161
- if (!payload) {
23162
- return null;
23163
- }
23164
- rebuildFlatDataWithAttributes();
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. 更新属性
23165
22958
  updateHasChildAttr(sourceParent);
23166
22959
  updateHasChildAttr(targetParent);
22960
+ // 6. 恢复展开状态
23167
22961
  restoreAllOpenStates(savedOpenStates);
23168
- return payload;
22962
+ ctx.emit(EVENTS.NODE_DROP, sourceNodeData, targetNodeData, 'move');
23169
22963
  };
23170
22964
  /**
23171
22965
  * 检查是否禁止拖拽
@@ -23242,8 +23036,7 @@ Sortable.mount(Remove, Revert);
23242
23036
  }
23243
23037
  var sourceNodeData = getSourceNodeByUID(dragNodeId);
23244
23038
  var targetNodeData = getSourceNodeByUID(targetNodeId);
23245
- var targetEl = evt.related;
23246
- if (!sourceNodeData || !targetNodeData || !targetEl) {
23039
+ if (!sourceNodeData || !targetNodeData) {
23247
23040
  cleanup();
23248
23041
  return;
23249
23042
  }
@@ -23253,32 +23046,17 @@ Sortable.mount(Remove, Revert);
23253
23046
  }
23254
23047
  // 保存展开状态
23255
23048
  var savedOpenStates = saveAllOpenStates();
23256
- var payload = null;
23049
+ // 根据放置类型执行对应操作
23257
23050
  if (currentDropType === 'child') {
23258
- payload = dragAsChildNode(sourceNodeData, targetNodeData, savedOpenStates);
23051
+ dragAsChildNode(sourceNodeData, targetNodeData, savedOpenStates);
23259
23052
  } else if (currentDropType === 'sort') {
23260
- payload = dragSortData(sourceNodeData, targetNodeData, currentWillInsertAfter, savedOpenStates);
23053
+ dragSortData(sourceNodeData, targetNodeData, currentWillInsertAfter, savedOpenStates);
23261
23054
  } else {
23262
- payload = dragAsSiblingNode(sourceNodeData, targetNodeData, currentWillInsertAfter, savedOpenStates);
23263
- }
23264
- if (!payload) {
23265
- cleanup();
23266
- return;
23055
+ // move: 跨级移动为同级节点
23056
+ dragAsSiblingNode(sourceNodeData, targetNodeData, currentWillInsertAfter, savedOpenStates);
23267
23057
  }
23268
23058
  var targetData = extendNodeAttr(targetNodeData);
23269
- var dropPayload = {
23270
- event: evt,
23271
- element: targetEl,
23272
- targetNode: targetData,
23273
- sourceNode: sourceNodeData,
23274
- data: payload.data,
23275
- parentNode: payload.parentNode,
23276
- oldParentNode: payload.oldParentNode,
23277
- dropType: payload.dropType,
23278
- sourceIndex: payload.sourceIndex,
23279
- targetIndex: payload.targetIndex
23280
- };
23281
- ctx.emit(EVENTS.NODE_DROP, dropPayload);
23059
+ ctx.emit(EVENTS.NODE_DROP, evt, evt.item, targetData);
23282
23060
  cleanup();
23283
23061
  },
23284
23062
  onMove: function onMove(evt, originalEvent) {
@@ -23336,6 +23114,12 @@ Sortable.mount(Remove, Revert);
23336
23114
  * 拖拽结束后移除节点的选中状态,避免拖拽完毕节点保持选中
23337
23115
  */
23338
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
+ }
23122
+ }
23339
23123
  dragNodeId = '';
23340
23124
  currentDropType = 'move';
23341
23125
  currentRelatedId = '';
@@ -23579,16 +23363,8 @@ var use_tree_init_this = undefined;
23579
23363
 
23580
23364
 
23581
23365
 
23582
- var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23583
- var _props$async, _props$checked;
23584
- var needsStableNodeKey = !!props.draggable || !!props.dragSort || !!((_props$async = props.async) !== null && _props$async !== void 0 && _props$async.callback) || props.selected !== undefined || !!((_props$checked = props.checked) !== null && _props$checked !== void 0 && _props$checked.length);
23585
- if (needsStableNodeKey && !props.nodeKey) {
23586
- console.warn('[Tree] `nodeKey` is recommended when using drag, async, selected, or checked state.');
23587
- }
23588
- };
23589
23366
  /* harmony default export */ const use_tree_init = (function (props) {
23590
- var _props$async4;
23591
- warnRequiredNodeKey(props);
23367
+ var _props$async3;
23592
23368
  /**
23593
23369
  * 扁平化当前数据
23594
23370
  * @param treeData 树形结构数据
@@ -23603,10 +23379,6 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23603
23379
  var checkedList = [];
23604
23380
  var outputData = [];
23605
23381
  var order = 0;
23606
- // TODO P2: 考虑将 WeakMap<TreeNode, meta> 切换为 Map<nodeKey, meta>
23607
- // 优势:序列化友好、跨实例共享、避免对象引用泄漏
23608
- // 劣势:需要手动管理内存、依赖 nodeKey 唯一性
23609
- // 当前保留 WeakMap 以保证兼容性和自动 GC
23610
23382
  var treeSchema = new WeakMap();
23611
23383
  /**
23612
23384
  * 递归更新节点属性
@@ -23627,7 +23399,7 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23627
23399
  if (target[attrName] === attrValue) {
23628
23400
  return;
23629
23401
  }
23630
- Object.assign(target, defineProperty_defineProperty({}, attrName, attrValue));
23402
+ Object.assign(target, _defineProperty({}, attrName, attrValue));
23631
23403
  loopUpdateNodeAttr(target[NODE_ATTRIBUTES.PARENT], attrName, attrValue, callFn);
23632
23404
  }
23633
23405
  }
@@ -23645,7 +23417,7 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23645
23417
  * 如果传入数据没有设置相关属性值
23646
23418
  * 这里会自动生成
23647
23419
  */
23648
- var cachedDefaultVal = defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty({}, NODE_ATTRIBUTES.IS_OPEN, function () {
23420
+ var cachedDefaultVal = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, NODE_ATTRIBUTES.IS_OPEN, function () {
23649
23421
  return !!props.expandAll;
23650
23422
  }), NODE_ATTRIBUTES.IS_CHECKED, function () {
23651
23423
  return false;
@@ -23768,7 +23540,7 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23768
23540
  */
23769
23541
  isOpened = isNodeOpend(uuid, item, parent);
23770
23542
  }
23771
- 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));
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));
23772
23544
  attributes[NODE_ATTRIBUTES.IS_CHECKED] = isCheckedNode(item, uuid, attributes);
23773
23545
  if (attributes[NODE_ATTRIBUTES.IS_CHECKED]) {
23774
23546
  checkedList.push(item);
@@ -23784,7 +23556,6 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23784
23556
  }
23785
23557
  }
23786
23558
  flatten(treeData !== null && treeData !== void 0 ? treeData : data);
23787
- // 历史语义:checkStrictly=true 表示启用父子联动
23788
23559
  if (props.showCheckbox !== false && props.checkStrictly) {
23789
23560
  checkedList === null || checkedList === void 0 || checkedList.forEach(function (value) {
23790
23561
  loopUpdateNodeAttr(value, NODE_ATTRIBUTES.IS_CHECKED, true, loopUpdateCheckedEvent);
@@ -23872,17 +23643,15 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23872
23643
  };
23873
23644
  /**
23874
23645
  * 监听组件配置Data改变
23875
- * 注意:外部应通过 onDataChange 回调更新数据,而非直接修改 props.data 内部节点
23876
- * 默认不使用 deep: true 以避免不必要的深度遍历开销
23877
23646
  */
23878
23647
  (0,external_vue_namespaceObject.watch)(function () {
23879
- return props.data;
23648
+ return [props.data];
23880
23649
  }, function (newData) {
23881
- var _props$async2, _props$async3;
23882
- var formatData = getFlatdata(newData, flatData.schema);
23650
+ var _props$async, _props$async2;
23651
+ var formatData = getFlatdata(newData[0], flatData.schema);
23883
23652
  flatData.data = formatData[0];
23884
23653
  flatData.schema = formatData[1];
23885
- if ((_props$async2 = props.async) !== null && _props$async2 !== void 0 && _props$async2.callback && ((_props$async3 = props.async) === null || _props$async3 === void 0 ? void 0 : _props$async3.deepAutoOpen) === 'every') {
23654
+ 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') {
23886
23655
  deepAutoOpen();
23887
23656
  }
23888
23657
  /**
@@ -23891,12 +23660,8 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23891
23660
  */
23892
23661
  executeNextEvent();
23893
23662
  }, {
23894
- deep: props.deepWatch
23663
+ deep: true
23895
23664
  });
23896
- // deepWatch 已废弃警告
23897
- if (props.deepWatch) {
23898
- console.warn('[BkTree] deepWatch is deprecated and will be removed in the next major version. ' + 'Please use onDataChange callback to update data instead of directly modifying props.data internal nodes.');
23899
- }
23900
23665
  if (props.selectable) {
23901
23666
  (0,external_vue_namespaceObject.onMounted)(function () {
23902
23667
  (0,external_vue_namespaceObject.watch)(function () {
@@ -23924,7 +23689,7 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23924
23689
  registerNextLoop('afterDataUpdate', callFn);
23925
23690
  };
23926
23691
  /** 如果设置了异步请求 */
23927
- if ((_props$async4 = props.async) !== null && _props$async4 !== void 0 && _props$async4.callback) {
23692
+ if ((_props$async3 = props.async) !== null && _props$async3 !== void 0 && _props$async3.callback) {
23928
23693
  deepAutoOpen();
23929
23694
  }
23930
23695
  return {
@@ -23990,10 +23755,6 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
23990
23755
  flatData = _useTreeInit.flatData,
23991
23756
  onSelected = _useTreeInit.onSelected,
23992
23757
  registerNextLoop = _useTreeInit.registerNextLoop;
23993
- var handleTreeDataChange = function handleTreeDataChange(payload) {
23994
- var _props$onDataChange;
23995
- (_props$onDataChange = props.onDataChange) === null || _props$onDataChange === void 0 || _props$onDataChange.call(props, payload);
23996
- };
23997
23758
  var _useNodeAttribute = use_node_attribute(flatData, props),
23998
23759
  checkNodeIsOpen = _useNodeAttribute.checkNodeIsOpen,
23999
23760
  isRootNode = _useNodeAttribute.isRootNode,
@@ -24118,7 +23879,7 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
24118
23879
  if (checked) {
24119
23880
  setNodeAction(resolvedNode, NODE_ATTRIBUTES.IS_INDETERMINATE, false);
24120
23881
  }
24121
- // 历史语义:checkStrictly=true 表示启用父子联动
23882
+ // 如果设置了 checkStrictly,需要同步更新子节点和父节点的状态
24122
23883
  if (props.checkStrictly) {
24123
23884
  deepUpdateChildNode(resolvedNode, [NODE_ATTRIBUTES.IS_CHECKED, NODE_ATTRIBUTES.IS_INDETERMINATE], [checked, false]);
24124
23885
  updateParentChecked(resolvedNode, checked);
@@ -24135,46 +23896,32 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
24135
23896
  onSelected(function (newData) {
24136
23897
  setSelect(newData, true, props.autoOpenParentNode, true);
24137
23898
  });
24138
- var buildChildrenIndex = function buildChildrenIndex() {
24139
- var childrenMap = new Map();
24140
- flatData.data.forEach(function (node) {
24141
- var _getParentNode;
24142
- var parentNode = (_getParentNode = getParentNode(node)) !== null && _getParentNode !== void 0 ? _getParentNode : null;
24143
- if (!childrenMap.has(parentNode)) {
24144
- childrenMap.set(parentNode, []);
24145
- }
24146
- childrenMap.get(parentNode).push(node);
24147
- });
24148
- return childrenMap;
24149
- };
24150
23899
  /**
24151
23900
  * 根据最新的schema生成最新的Tree结构数据
24152
23901
  * @returns
24153
23902
  */
24154
23903
  var getLastTreeDataBySchema = function getLastTreeDataBySchema() {
24155
- var _childrenMap$get2;
24156
- var childrenMap = buildChildrenIndex();
24157
23904
  var _loopData = function loopData(rootNodeList) {
24158
23905
  return (rootNodeList !== null && rootNodeList !== void 0 ? rootNodeList : []).map(function (node) {
24159
- var _childrenMap$get;
24160
23906
  var copyData = (0,lodash.cloneDeep)(node);
24161
23907
  if (!copyData) {
24162
23908
  return copyData;
24163
23909
  }
24164
- var children = (_childrenMap$get = childrenMap.get(node)) !== null && _childrenMap$get !== void 0 ? _childrenMap$get : [];
23910
+ var children = flatData.data.filter(function (item) {
23911
+ return getParentNode(item) === node;
23912
+ });
24165
23913
  copyData[props.children] = _loopData(children);
24166
23914
  return copyData;
24167
23915
  });
24168
23916
  };
24169
- return _loopData((_childrenMap$get2 = childrenMap.get(null)) !== null && _childrenMap$get2 !== void 0 ? _childrenMap$get2 : getRootNodeList());
23917
+ return _loopData(getRootNodeList());
24170
23918
  };
24171
23919
  /**
24172
23920
  * 获取当前树形结构相关数据
24173
23921
  * @param newTree 如果启用了排序,拖拽功能,这里数据结构会改变,需要设置为true,获取最新的数据
24174
23922
  * @returns
24175
23923
  */
24176
- var getData = function getData() {
24177
- var newTree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
23924
+ var getData = function getData(newTree) {
24178
23925
  if (!newTree) {
24179
23926
  return flatData;
24180
23927
  }
@@ -24273,10 +24020,7 @@ var warnRequiredNodeKey = function warnRequiredNodeKey(props) {
24273
24020
  });
24274
24021
  var _useEmpty = use_empty(props),
24275
24022
  renderEmpty = _useEmpty.renderEmpty;
24276
- use_node_drag(props, ctx, root, flatData, {
24277
- moveTreeNodeById: moveTreeNodeById,
24278
- onTreeDataChange: handleTreeDataChange
24279
- });
24023
+ use_node_drag(props, ctx, root, flatData);
24280
24024
  var renderTreeContent = function renderTreeContent(scopedData) {
24281
24025
  var _ctx$slots$empty, _ctx$slots$empty2, _ctx$slots;
24282
24026
  if (scopedData.length) {