bkui-vue 3.0.3 → 3.0.4-beta.2
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/dist/index.cjs.js +10 -10
- package/dist/index.esm.js +6181 -5770
- package/dist/index.umd.js +9 -9
- package/dist/style.css +1 -1
- package/dist/style.variable.css +1 -1
- package/lib/index.js +1 -1
- package/lib/packages/select/index.d.ts +24 -0
- package/lib/packages/select/select.d.ts +14 -0
- package/lib/packages/tree/index.d.ts +12 -0
- package/lib/packages/tree/props.d.ts +8 -0
- package/lib/packages/tree/tree-node-row.d.ts +54 -0
- package/lib/packages/tree/tree.d.ts +7 -0
- package/lib/packages/tree/use-checked-state.d.ts +29 -0
- package/lib/packages/tree/use-node-action.d.ts +8 -1
- package/lib/packages/tree/use-node-attribute.d.ts +20 -9
- package/lib/packages/tree/use-search.d.ts +2 -0
- package/lib/packages/tree/use-tree-init.d.ts +4 -21
- package/lib/packages/tree/use-visible-nodes.d.ts +34 -0
- package/lib/packages/tree/util.d.ts +10 -6
- package/lib/select/index.js +14 -5
- package/lib/select/select.css +7 -0
- package/lib/select/select.less +9 -0
- package/lib/select/select.variable.css +7 -0
- package/lib/tree/index.js +1364 -381
- package/lib/tree/tree.css +24 -5
- package/lib/tree/tree.less +24 -5
- package/lib/tree/tree.variable.css +24 -5
- package/package.json +1 -1
package/lib/tree/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../styles/reset.css";
|
|
2
2
|
import "./tree.less";
|
|
3
3
|
import { PropTypes as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__, debounce as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_debounce__, withInstall as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_withInstall__ } from "../shared";
|
|
4
|
-
import { computed as __WEBPACK_EXTERNAL_MODULE_vue_computed__, createVNode as __WEBPACK_EXTERNAL_MODULE_vue_createVNode__, defineComponent as __WEBPACK_EXTERNAL_MODULE_vue_defineComponent__, h as __WEBPACK_EXTERNAL_MODULE_vue_h__, isVNode as __WEBPACK_EXTERNAL_MODULE_vue_isVNode__, nextTick as __WEBPACK_EXTERNAL_MODULE_vue_nextTick__, onMounted as __WEBPACK_EXTERNAL_MODULE_vue_onMounted__, onUnmounted as __WEBPACK_EXTERNAL_MODULE_vue_onUnmounted__, reactive as __WEBPACK_EXTERNAL_MODULE_vue_reactive__, ref as __WEBPACK_EXTERNAL_MODULE_vue_ref__, toRef as __WEBPACK_EXTERNAL_MODULE_vue_toRef__, watch as __WEBPACK_EXTERNAL_MODULE_vue_watch__ } from "vue";
|
|
4
|
+
import { computed as __WEBPACK_EXTERNAL_MODULE_vue_computed__, createVNode as __WEBPACK_EXTERNAL_MODULE_vue_createVNode__, defineComponent as __WEBPACK_EXTERNAL_MODULE_vue_defineComponent__, h as __WEBPACK_EXTERNAL_MODULE_vue_h__, isVNode as __WEBPACK_EXTERNAL_MODULE_vue_isVNode__, markRaw as __WEBPACK_EXTERNAL_MODULE_vue_markRaw__, nextTick as __WEBPACK_EXTERNAL_MODULE_vue_nextTick__, onMounted as __WEBPACK_EXTERNAL_MODULE_vue_onMounted__, onUnmounted as __WEBPACK_EXTERNAL_MODULE_vue_onUnmounted__, reactive as __WEBPACK_EXTERNAL_MODULE_vue_reactive__, ref as __WEBPACK_EXTERNAL_MODULE_vue_ref__, shallowReactive as __WEBPACK_EXTERNAL_MODULE_vue_shallowReactive__, shallowRef as __WEBPACK_EXTERNAL_MODULE_vue_shallowRef__, toRaw as __WEBPACK_EXTERNAL_MODULE_vue_toRaw__, toRef as __WEBPACK_EXTERNAL_MODULE_vue_toRef__, watch as __WEBPACK_EXTERNAL_MODULE_vue_watch__ } from "vue";
|
|
5
5
|
import { usePrefix as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3_usePrefix__ } from "../config-provider";
|
|
6
6
|
import { default as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_virtual_render_927587a8_default__ } from "../virtual-render";
|
|
7
7
|
import "../virtual-render/virtual-render.less";
|
|
@@ -17334,8 +17334,6 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
17334
17334
|
|
|
17335
17335
|
;// external "../shared"
|
|
17336
17336
|
|
|
17337
|
-
;// external "vue"
|
|
17338
|
-
|
|
17339
17337
|
;// ../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
|
|
17340
17338
|
function _arrayWithHoles(r) {
|
|
17341
17339
|
if (Array.isArray(r)) return r;
|
|
@@ -17401,6 +17399,8 @@ function _slicedToArray(r, e) {
|
|
|
17401
17399
|
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
17402
17400
|
}
|
|
17403
17401
|
|
|
17402
|
+
;// external "vue"
|
|
17403
|
+
|
|
17404
17404
|
;// external "../config-provider"
|
|
17405
17405
|
|
|
17406
17406
|
;// external "../virtual-render"
|
|
@@ -17601,6 +17601,12 @@ var treeProps = {
|
|
|
17601
17601
|
* 默认虚拟滚动是开启的,数据量大的情况下有利于性能优化,可以通过设置 virtualRender = false 关闭虚拟滚动
|
|
17602
17602
|
*/
|
|
17603
17603
|
virtualRender: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.bool.def(false),
|
|
17604
|
+
/**
|
|
17605
|
+
* 是否深度监听 data 内部变更(原地 push/改 children 等)
|
|
17606
|
+
* 默认 false:仅监听 data 引用变化,大数据量下性能更好
|
|
17607
|
+
* 若业务依赖「不换引用、原地改树」自动刷新,可设为 true(小数据场景)
|
|
17608
|
+
*/
|
|
17609
|
+
watchDataDeep: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.bool.def(false),
|
|
17604
17610
|
/**
|
|
17605
17611
|
* 当前节点标识图标
|
|
17606
17612
|
* 默认 true
|
|
@@ -17781,6 +17787,69 @@ var treeProps = {
|
|
|
17781
17787
|
callback: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.func.def(undefined)
|
|
17782
17788
|
})]).def(false)
|
|
17783
17789
|
};
|
|
17790
|
+
;// ../../packages/tree/src/tree-node-row.tsx
|
|
17791
|
+
/*
|
|
17792
|
+
* Tencent is pleased to support the open source community by making
|
|
17793
|
+
* 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
|
|
17794
|
+
*
|
|
17795
|
+
* Copyright (C) 2025 Tencent. All rights reserved.
|
|
17796
|
+
*
|
|
17797
|
+
* 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) is licensed under the MIT License.
|
|
17798
|
+
*
|
|
17799
|
+
* License for 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition):
|
|
17800
|
+
*
|
|
17801
|
+
* ---------------------------------------------------
|
|
17802
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
17803
|
+
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation
|
|
17804
|
+
* the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
|
|
17805
|
+
* to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
17806
|
+
*
|
|
17807
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of
|
|
17808
|
+
* the Software.
|
|
17809
|
+
*
|
|
17810
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
17811
|
+
* THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17812
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
17813
|
+
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
17814
|
+
* IN THE SOFTWARE.
|
|
17815
|
+
*/
|
|
17816
|
+
|
|
17817
|
+
/**
|
|
17818
|
+
* 独立树行组件:仅在 version / globalVersion 变化时重渲染。
|
|
17819
|
+
* 展开/选中时避免所有可见行的自定义插槽被连带重跑。
|
|
17820
|
+
*/
|
|
17821
|
+
/* harmony default export */ const tree_node_row = (__WEBPACK_EXTERNAL_MODULE_vue_defineComponent__({
|
|
17822
|
+
name: 'BkTreeNodeRow',
|
|
17823
|
+
props: {
|
|
17824
|
+
item: {
|
|
17825
|
+
type: Object,
|
|
17826
|
+
required: true
|
|
17827
|
+
},
|
|
17828
|
+
showTree: {
|
|
17829
|
+
type: Boolean,
|
|
17830
|
+
"default": true
|
|
17831
|
+
},
|
|
17832
|
+
version: {
|
|
17833
|
+
type: Number,
|
|
17834
|
+
"default": 0
|
|
17835
|
+
},
|
|
17836
|
+
globalVersion: {
|
|
17837
|
+
type: Number,
|
|
17838
|
+
"default": 0
|
|
17839
|
+
},
|
|
17840
|
+
renderFn: {
|
|
17841
|
+
type: Function,
|
|
17842
|
+
required: true
|
|
17843
|
+
}
|
|
17844
|
+
},
|
|
17845
|
+
setup: function setup(props) {
|
|
17846
|
+
return function () {
|
|
17847
|
+
void props.version;
|
|
17848
|
+
void props.globalVersion;
|
|
17849
|
+
return props.renderFn(props.item, props.showTree);
|
|
17850
|
+
};
|
|
17851
|
+
}
|
|
17852
|
+
}));
|
|
17784
17853
|
;// external "../exception"
|
|
17785
17854
|
|
|
17786
17855
|
;// external "../exception/exception.less"
|
|
@@ -17971,6 +18040,208 @@ var treeProps = {
|
|
|
17971
18040
|
|
|
17972
18041
|
;// external "../icon"
|
|
17973
18042
|
|
|
18043
|
+
;// ../../packages/tree/src/use-checked-state.ts
|
|
18044
|
+
/*
|
|
18045
|
+
* Tencent is pleased to support the open source community by making
|
|
18046
|
+
* 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
|
|
18047
|
+
*
|
|
18048
|
+
* Copyright (C) 2025 Tencent. All rights reserved.
|
|
18049
|
+
*
|
|
18050
|
+
* 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) is licensed under the MIT License.
|
|
18051
|
+
*
|
|
18052
|
+
* License for 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition):
|
|
18053
|
+
*
|
|
18054
|
+
* ---------------------------------------------------
|
|
18055
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
18056
|
+
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation
|
|
18057
|
+
* the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
|
|
18058
|
+
* to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
18059
|
+
*
|
|
18060
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of
|
|
18061
|
+
* the Software.
|
|
18062
|
+
*
|
|
18063
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
18064
|
+
* THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18065
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
18066
|
+
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
18067
|
+
* IN THE SOFTWARE.
|
|
18068
|
+
*/
|
|
18069
|
+
|
|
18070
|
+
/**
|
|
18071
|
+
* 勾选状态增量维护:
|
|
18072
|
+
* - checked/indeterminate 用 Set 跟踪,避免每次 emit 全表 filter O(N)
|
|
18073
|
+
* - 子树更新按 flatData 的 DFS 连续区间扫描,避免递归调用开销
|
|
18074
|
+
*/
|
|
18075
|
+
/* harmony default export */ const use_checked_state = (function (flatData, helpers) {
|
|
18076
|
+
var getChildNodes = helpers.getChildNodes,
|
|
18077
|
+
getNodeAttr = helpers.getNodeAttr,
|
|
18078
|
+
getParentNode = helpers.getParentNode,
|
|
18079
|
+
getSchemaVal = helpers.getSchemaVal,
|
|
18080
|
+
isRootNode = helpers.isRootNode;
|
|
18081
|
+
var checkedSet = new Set();
|
|
18082
|
+
var indeterminateSet = new Set();
|
|
18083
|
+
var syncNodeToSets = function syncNodeToSets(node) {
|
|
18084
|
+
var schema = getSchemaVal(node);
|
|
18085
|
+
if (!schema) {
|
|
18086
|
+
return;
|
|
18087
|
+
}
|
|
18088
|
+
var checked = !!schema[NODE_ATTRIBUTES.IS_CHECKED];
|
|
18089
|
+
var indeterminate = checked && !!schema[NODE_ATTRIBUTES.IS_INDETERMINATE];
|
|
18090
|
+
if (checked) {
|
|
18091
|
+
checkedSet.add(node);
|
|
18092
|
+
} else {
|
|
18093
|
+
checkedSet["delete"](node);
|
|
18094
|
+
}
|
|
18095
|
+
if (indeterminate) {
|
|
18096
|
+
indeterminateSet.add(node);
|
|
18097
|
+
} else {
|
|
18098
|
+
indeterminateSet["delete"](node);
|
|
18099
|
+
}
|
|
18100
|
+
};
|
|
18101
|
+
var setNodeCheckedState = function setNodeCheckedState(node, checked) {
|
|
18102
|
+
var indeterminate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
18103
|
+
var schema = getSchemaVal(node);
|
|
18104
|
+
if (!schema) {
|
|
18105
|
+
return false;
|
|
18106
|
+
}
|
|
18107
|
+
var nextChecked = !!checked;
|
|
18108
|
+
var nextIndeterminate = nextChecked && !!indeterminate;
|
|
18109
|
+
var prevChecked = !!schema[NODE_ATTRIBUTES.IS_CHECKED];
|
|
18110
|
+
var prevIndeterminate = !!schema[NODE_ATTRIBUTES.IS_INDETERMINATE];
|
|
18111
|
+
if (prevChecked === nextChecked && prevIndeterminate === nextIndeterminate) {
|
|
18112
|
+
return false;
|
|
18113
|
+
}
|
|
18114
|
+
schema[NODE_ATTRIBUTES.IS_CHECKED] = nextChecked;
|
|
18115
|
+
schema[NODE_ATTRIBUTES.IS_INDETERMINATE] = nextIndeterminate;
|
|
18116
|
+
if (nextChecked) {
|
|
18117
|
+
checkedSet.add(node);
|
|
18118
|
+
} else {
|
|
18119
|
+
checkedSet["delete"](node);
|
|
18120
|
+
}
|
|
18121
|
+
if (nextIndeterminate) {
|
|
18122
|
+
indeterminateSet.add(node);
|
|
18123
|
+
} else {
|
|
18124
|
+
indeterminateSet["delete"](node);
|
|
18125
|
+
}
|
|
18126
|
+
return true;
|
|
18127
|
+
};
|
|
18128
|
+
/** 基于 flatten 收集的 checkedList 重建,避免无勾选时全表扫描 */
|
|
18129
|
+
var rebuildCheckedSetsFromList = function rebuildCheckedSetsFromList() {
|
|
18130
|
+
var nodes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
18131
|
+
checkedSet.clear();
|
|
18132
|
+
indeterminateSet.clear();
|
|
18133
|
+
for (var i = 0, len = nodes.length; i < len; i++) {
|
|
18134
|
+
var node = nodes[i];
|
|
18135
|
+
syncNodeToSets(node);
|
|
18136
|
+
var parent = getParentNode(node);
|
|
18137
|
+
while (parent) {
|
|
18138
|
+
syncNodeToSets(parent);
|
|
18139
|
+
parent = getParentNode(parent);
|
|
18140
|
+
}
|
|
18141
|
+
}
|
|
18142
|
+
};
|
|
18143
|
+
/**
|
|
18144
|
+
* flatData 为 DFS 序,INDEX 即数组下标;后代是一段连续区间。
|
|
18145
|
+
*/
|
|
18146
|
+
var forEachDescendant = function forEachDescendant(node, fn) {
|
|
18147
|
+
var _getNodeAttr, _getNodeAttr2;
|
|
18148
|
+
var data = flatData.data;
|
|
18149
|
+
var start = ((_getNodeAttr = getNodeAttr(node, NODE_ATTRIBUTES.INDEX)) !== null && _getNodeAttr !== void 0 ? _getNodeAttr : -1) + 1;
|
|
18150
|
+
if (start <= 0) {
|
|
18151
|
+
return;
|
|
18152
|
+
}
|
|
18153
|
+
var nodeDepth = (_getNodeAttr2 = getNodeAttr(node, NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr2 !== void 0 ? _getNodeAttr2 : 0;
|
|
18154
|
+
for (var i = start; i < data.length; i++) {
|
|
18155
|
+
var _getNodeAttr3;
|
|
18156
|
+
var child = data[i];
|
|
18157
|
+
var depth = (_getNodeAttr3 = getNodeAttr(child, NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr3 !== void 0 ? _getNodeAttr3 : 0;
|
|
18158
|
+
if (depth <= nodeDepth) {
|
|
18159
|
+
break;
|
|
18160
|
+
}
|
|
18161
|
+
fn(child);
|
|
18162
|
+
}
|
|
18163
|
+
};
|
|
18164
|
+
var setDescendantChecked = function setDescendantChecked(node, checked) {
|
|
18165
|
+
forEachDescendant(node, function (child) {
|
|
18166
|
+
setNodeCheckedState(child, checked, false);
|
|
18167
|
+
});
|
|
18168
|
+
};
|
|
18169
|
+
var isNodeChecked = function isNodeChecked(node) {
|
|
18170
|
+
return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_CHECKED);
|
|
18171
|
+
};
|
|
18172
|
+
var isNodeIndeterminate = function isNodeIndeterminate(node) {
|
|
18173
|
+
return isNodeChecked(node) && !!getNodeAttr(node, NODE_ATTRIBUTES.IS_INDETERMINATE);
|
|
18174
|
+
};
|
|
18175
|
+
/**
|
|
18176
|
+
* 自底向上更新祖先勾选 / 半选,复杂度 O(depth × 兄弟数)
|
|
18177
|
+
*/
|
|
18178
|
+
var _updateParentChecked = function updateParentChecked(item) {
|
|
18179
|
+
var parent = getParentNode(item);
|
|
18180
|
+
if (!parent) {
|
|
18181
|
+
return;
|
|
18182
|
+
}
|
|
18183
|
+
var children = getChildNodes(parent) || [];
|
|
18184
|
+
var hasChecked = false;
|
|
18185
|
+
var hasUncheckedOrIndeterminate = false;
|
|
18186
|
+
for (var i = 0, len = children.length; i < len; i++) {
|
|
18187
|
+
var child = children[i];
|
|
18188
|
+
var childChecked = isNodeChecked(child);
|
|
18189
|
+
if (childChecked) {
|
|
18190
|
+
hasChecked = true;
|
|
18191
|
+
}
|
|
18192
|
+
if (!childChecked || isNodeIndeterminate(child)) {
|
|
18193
|
+
hasUncheckedOrIndeterminate = true;
|
|
18194
|
+
}
|
|
18195
|
+
// 半选态已确定,可提前结束
|
|
18196
|
+
if (hasChecked && hasUncheckedOrIndeterminate) {
|
|
18197
|
+
break;
|
|
18198
|
+
}
|
|
18199
|
+
}
|
|
18200
|
+
setNodeCheckedState(parent, hasChecked, hasChecked && hasUncheckedOrIndeterminate);
|
|
18201
|
+
if (!isRootNode(parent)) {
|
|
18202
|
+
_updateParentChecked(parent);
|
|
18203
|
+
}
|
|
18204
|
+
};
|
|
18205
|
+
var getCheckedEmitPayload = function getCheckedEmitPayload() {
|
|
18206
|
+
return [Array.from(checkedSet), Array.from(indeterminateSet)];
|
|
18207
|
+
};
|
|
18208
|
+
var rebuildCheckedSets = function rebuildCheckedSets() {
|
|
18209
|
+
checkedSet.clear();
|
|
18210
|
+
indeterminateSet.clear();
|
|
18211
|
+
var data = flatData.data;
|
|
18212
|
+
for (var i = 0, len = data.length; i < len; i++) {
|
|
18213
|
+
syncNodeToSets(data[i]);
|
|
18214
|
+
}
|
|
18215
|
+
};
|
|
18216
|
+
var clearAllCheckedState = function clearAllCheckedState() {
|
|
18217
|
+
checkedSet.forEach(function (node) {
|
|
18218
|
+
var schema = getSchemaVal(node);
|
|
18219
|
+
if (schema) {
|
|
18220
|
+
schema[NODE_ATTRIBUTES.IS_CHECKED] = false;
|
|
18221
|
+
schema[NODE_ATTRIBUTES.IS_INDETERMINATE] = false;
|
|
18222
|
+
}
|
|
18223
|
+
});
|
|
18224
|
+
indeterminateSet.clear();
|
|
18225
|
+
checkedSet.clear();
|
|
18226
|
+
};
|
|
18227
|
+
// 初始化:优先用 flatten 结果,避免空勾选时扫百万节点
|
|
18228
|
+
rebuildCheckedSetsFromList(flatData.checkedList || []);
|
|
18229
|
+
flatData.syncCheckedState = syncNodeToSets;
|
|
18230
|
+
return {
|
|
18231
|
+
checkedSet: checkedSet,
|
|
18232
|
+
indeterminateSet: indeterminateSet,
|
|
18233
|
+
syncNodeToSets: syncNodeToSets,
|
|
18234
|
+
setNodeCheckedState: setNodeCheckedState,
|
|
18235
|
+
setDescendantChecked: setDescendantChecked,
|
|
18236
|
+
forEachDescendant: forEachDescendant,
|
|
18237
|
+
updateParentChecked: _updateParentChecked,
|
|
18238
|
+
getCheckedEmitPayload: getCheckedEmitPayload,
|
|
18239
|
+
rebuildCheckedSets: rebuildCheckedSets,
|
|
18240
|
+
rebuildCheckedSetsFromList: rebuildCheckedSetsFromList,
|
|
18241
|
+
clearAllCheckedState: clearAllCheckedState,
|
|
18242
|
+
isNodeIndeterminate: isNodeIndeterminate
|
|
18243
|
+
};
|
|
18244
|
+
});
|
|
17974
18245
|
;// ../../packages/tree/src/use-node-attribute.tsx
|
|
17975
18246
|
|
|
17976
18247
|
|
|
@@ -18001,59 +18272,129 @@ var treeProps = {
|
|
|
18001
18272
|
*/
|
|
18002
18273
|
|
|
18003
18274
|
|
|
18275
|
+
|
|
18004
18276
|
/* harmony default export */ const use_node_attribute = (function (flatData, props) {
|
|
18277
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
18278
|
+
/**
|
|
18279
|
+
* WeakMap 以对象引用为 key;Vue Proxy 与 raw 不是同一引用,需同时兼容
|
|
18280
|
+
*/
|
|
18281
|
+
var resolveSchemaNode = function resolveSchemaNode(node) {
|
|
18282
|
+
if (!node) {
|
|
18283
|
+
return null;
|
|
18284
|
+
}
|
|
18285
|
+
if (flatData.schema.has(node)) {
|
|
18286
|
+
return node;
|
|
18287
|
+
}
|
|
18288
|
+
var raw = __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(node);
|
|
18289
|
+
if (raw && raw !== node && flatData.schema.has(raw)) {
|
|
18290
|
+
return raw;
|
|
18291
|
+
}
|
|
18292
|
+
return null;
|
|
18293
|
+
};
|
|
18005
18294
|
/**
|
|
18006
18295
|
* 获取Schema中指定的对象值
|
|
18007
18296
|
* @param key
|
|
18008
18297
|
* @returns
|
|
18009
18298
|
*/
|
|
18010
18299
|
var getSchemaVal = function getSchemaVal(node) {
|
|
18011
|
-
|
|
18300
|
+
var schemaNode = resolveSchemaNode(node);
|
|
18301
|
+
return schemaNode ? flatData.schema.get(schemaNode) : undefined;
|
|
18012
18302
|
};
|
|
18013
18303
|
function getNodeAttr(node, attr) {
|
|
18014
18304
|
var _getSchemaVal;
|
|
18015
18305
|
return node ? (_getSchemaVal = getSchemaVal(node)) === null || _getSchemaVal === void 0 ? void 0 : _getSchemaVal[attr] : undefined;
|
|
18016
18306
|
}
|
|
18017
18307
|
/**
|
|
18018
|
-
*
|
|
18308
|
+
* 设置节点属性(原地更新 schema,避免每次 Object.assign 新对象)
|
|
18019
18309
|
* @param node 指定节点
|
|
18020
18310
|
* @param attr 节点属性
|
|
18021
18311
|
* @param val 属性值
|
|
18022
18312
|
* @returns
|
|
18023
18313
|
*/
|
|
18024
18314
|
var setNodeAttr = function setNodeAttr(node, attr, val, id) {
|
|
18025
|
-
|
|
18315
|
+
var setOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
18316
|
+
var schemaNode = resolveSchemaNode(node);
|
|
18317
|
+
if (!schemaNode) {
|
|
18026
18318
|
console.warn('node is not in schema, please check', id, node);
|
|
18027
18319
|
return;
|
|
18028
18320
|
}
|
|
18029
|
-
flatData.schema.
|
|
18321
|
+
var schemaVal = flatData.schema.get(schemaNode);
|
|
18322
|
+
if (!schemaVal) {
|
|
18323
|
+
return;
|
|
18324
|
+
}
|
|
18325
|
+
if (schemaVal[attr] === val) {
|
|
18326
|
+
return;
|
|
18327
|
+
}
|
|
18328
|
+
if (attr === NODE_ATTRIBUTES.IS_OPEN) {
|
|
18329
|
+
var prevOpen = !!schemaVal[attr];
|
|
18330
|
+
var nextOpen = !!val;
|
|
18331
|
+
if (prevOpen !== nextOpen) {
|
|
18332
|
+
flatData.openCount = (flatData.openCount || 0) + (nextOpen ? 1 : -1);
|
|
18333
|
+
}
|
|
18334
|
+
}
|
|
18335
|
+
schemaVal[attr] = val;
|
|
18336
|
+
if (attr === NODE_ATTRIBUTES.IS_CHECKED || attr === NODE_ATTRIBUTES.IS_INDETERMINATE) {
|
|
18337
|
+
var _flatData$syncChecked;
|
|
18338
|
+
(_flatData$syncChecked = flatData.syncCheckedState) === null || _flatData$syncChecked === void 0 || _flatData$syncChecked.call(flatData, node);
|
|
18339
|
+
}
|
|
18340
|
+
if (!setOptions.silent) {
|
|
18341
|
+
var _options$onSchemaChan, _flatData$notifySchem;
|
|
18342
|
+
(_options$onSchemaChan = options.onSchemaChange) === null || _options$onSchemaChan === void 0 || _options$onSchemaChan.call(options, node, attr, val);
|
|
18343
|
+
(_flatData$notifySchem = flatData.notifySchemaChange) === null || _flatData$notifySchem === void 0 || _flatData$notifySchem.call(flatData, node, attr, val);
|
|
18344
|
+
}
|
|
18030
18345
|
};
|
|
18031
18346
|
var getNodeById = function getNodeById(id) {
|
|
18032
|
-
var _flatData$nodeMap
|
|
18033
|
-
|
|
18034
|
-
return
|
|
18035
|
-
}
|
|
18347
|
+
var _flatData$nodeMap;
|
|
18348
|
+
if (id === undefined || id === null || id === '') {
|
|
18349
|
+
return undefined;
|
|
18350
|
+
}
|
|
18351
|
+
// 禁止回退 flatData.data.find(百万节点 O(N))
|
|
18352
|
+
return (_flatData$nodeMap = flatData.nodeMap) === null || _flatData$nodeMap === void 0 ? void 0 : _flatData$nodeMap.get("".concat(id));
|
|
18036
18353
|
};
|
|
18037
|
-
var setNodeAttrById = function setNodeAttrById(id, attr, val) {
|
|
18354
|
+
var setNodeAttrById = function setNodeAttrById(id, attr, val, setOptions) {
|
|
18038
18355
|
if (Array.isArray(id)) {
|
|
18039
18356
|
Array.prototype.forEach.call(id, function (item) {
|
|
18040
|
-
return setNodeAttr(getNodeById(item), attr, val, id);
|
|
18357
|
+
return setNodeAttr(getNodeById(item), attr, val, id, setOptions);
|
|
18041
18358
|
});
|
|
18042
18359
|
return;
|
|
18043
18360
|
}
|
|
18044
|
-
|
|
18361
|
+
var node = getNodeById(id);
|
|
18362
|
+
if (!node) {
|
|
18363
|
+
return;
|
|
18364
|
+
}
|
|
18365
|
+
setNodeAttr(node, attr, val, id, setOptions);
|
|
18045
18366
|
};
|
|
18046
18367
|
var getNodePath = function getNodePath(node) {
|
|
18047
18368
|
return getNodeAttr(node, NODE_ATTRIBUTES.PATH);
|
|
18048
18369
|
};
|
|
18049
18370
|
var getNodeId = function getNodeId(node) {
|
|
18050
|
-
|
|
18371
|
+
var schemaId = getNodeAttr(node, NODE_ATTRIBUTES.UUID);
|
|
18372
|
+
if (schemaId !== undefined && schemaId !== null && schemaId !== '') {
|
|
18373
|
+
return schemaId;
|
|
18374
|
+
}
|
|
18375
|
+
if (!node) {
|
|
18376
|
+
return undefined;
|
|
18377
|
+
}
|
|
18378
|
+
if (props !== null && props !== void 0 && props.nodeKey && node[props.nodeKey] !== undefined && node[props.nodeKey] !== null) {
|
|
18379
|
+
return node[props.nodeKey];
|
|
18380
|
+
}
|
|
18381
|
+
return node[NODE_ATTRIBUTES.UUID];
|
|
18051
18382
|
};
|
|
18052
18383
|
var isNodeOpened = function isNodeOpened(node) {
|
|
18053
18384
|
return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_OPEN);
|
|
18054
18385
|
};
|
|
18055
18386
|
var hasChildNode = function hasChildNode(node) {
|
|
18056
|
-
|
|
18387
|
+
var _flatData$childMap$ge, _flatData$childMap, _rawNode$childKey, _node$childKey;
|
|
18388
|
+
if (!!getNodeAttr(node, NODE_ATTRIBUTES.HAS_CHILD)) {
|
|
18389
|
+
return true;
|
|
18390
|
+
}
|
|
18391
|
+
var schemaNode = resolveSchemaNode(node);
|
|
18392
|
+
if (schemaNode && ((_flatData$childMap$ge = (_flatData$childMap = flatData.childMap) === null || _flatData$childMap === void 0 || (_flatData$childMap = _flatData$childMap.get(schemaNode)) === null || _flatData$childMap === void 0 ? void 0 : _flatData$childMap.length) !== null && _flatData$childMap$ge !== void 0 ? _flatData$childMap$ge : 0) > 0) {
|
|
18393
|
+
return true;
|
|
18394
|
+
}
|
|
18395
|
+
var childKey = (props === null || props === void 0 ? void 0 : props.children) || 'children';
|
|
18396
|
+
var rawNode = __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(node);
|
|
18397
|
+
return !!(rawNode !== null && rawNode !== void 0 && (_rawNode$childKey = rawNode[childKey]) !== null && _rawNode$childKey !== void 0 && _rawNode$childKey.length || node !== null && node !== void 0 && (_node$childKey = node[childKey]) !== null && _node$childKey !== void 0 && _node$childKey.length);
|
|
18057
18398
|
};
|
|
18058
18399
|
var isNodeMatched = function isNodeMatched(node) {
|
|
18059
18400
|
return !!getNodeAttr(node, NODE_ATTRIBUTES.IS_MATCH);
|
|
@@ -18094,10 +18435,18 @@ var treeProps = {
|
|
|
18094
18435
|
return getNodeAttr(node, NODE_ATTRIBUTES.INDEX);
|
|
18095
18436
|
};
|
|
18096
18437
|
var isRootNode = function isRootNode(node) {
|
|
18438
|
+
var _flatData$rootNodes;
|
|
18097
18439
|
if (typeof node === 'string') {
|
|
18098
18440
|
return !!getNodeAttrById(node, NODE_ATTRIBUTES.IS_ROOT);
|
|
18099
18441
|
}
|
|
18100
|
-
|
|
18442
|
+
if (!!getNodeAttr(node, NODE_ATTRIBUTES.IS_ROOT)) {
|
|
18443
|
+
return true;
|
|
18444
|
+
}
|
|
18445
|
+
if (getNodeAttr(node, NODE_ATTRIBUTES.PARENT)) {
|
|
18446
|
+
return false;
|
|
18447
|
+
}
|
|
18448
|
+
var schemaNode = resolveSchemaNode(node);
|
|
18449
|
+
return !!schemaNode && !!((_flatData$rootNodes = flatData.rootNodes) !== null && _flatData$rootNodes !== void 0 && _flatData$rootNodes.includes(schemaNode));
|
|
18101
18450
|
};
|
|
18102
18451
|
var getNodeParentIdById = function getNodeParentIdById(id) {
|
|
18103
18452
|
var target = getNodeById(id);
|
|
@@ -18117,11 +18466,11 @@ var treeProps = {
|
|
|
18117
18466
|
* @returns
|
|
18118
18467
|
*/
|
|
18119
18468
|
var isItemOpen = function isItemOpen(item) {
|
|
18120
|
-
if (_typeof(item) === 'object') {
|
|
18469
|
+
if (_typeof(item) === 'object' && item !== null) {
|
|
18121
18470
|
return isNodeOpened(item);
|
|
18122
18471
|
}
|
|
18123
18472
|
if (typeof item === 'string') {
|
|
18124
|
-
return getNodeAttrById(item, NODE_ATTRIBUTES.IS_OPEN);
|
|
18473
|
+
return !!getNodeAttrById(item, NODE_ATTRIBUTES.IS_OPEN);
|
|
18125
18474
|
}
|
|
18126
18475
|
return false;
|
|
18127
18476
|
};
|
|
@@ -18157,10 +18506,15 @@ var treeProps = {
|
|
|
18157
18506
|
return target;
|
|
18158
18507
|
};
|
|
18159
18508
|
var getChildNodes = function getChildNodes(node) {
|
|
18160
|
-
var _flatData$childMap$
|
|
18161
|
-
|
|
18162
|
-
|
|
18163
|
-
|
|
18509
|
+
var _resolveSchemaNode, _flatData$childMap$ge2, _flatData$childMap2, _flatData$childMap3;
|
|
18510
|
+
var schemaNode = (_resolveSchemaNode = resolveSchemaNode(node)) !== null && _resolveSchemaNode !== void 0 ? _resolveSchemaNode : __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(node);
|
|
18511
|
+
var mapped = (_flatData$childMap$ge2 = (_flatData$childMap2 = flatData.childMap) === null || _flatData$childMap2 === void 0 ? void 0 : _flatData$childMap2.get(schemaNode)) !== null && _flatData$childMap$ge2 !== void 0 ? _flatData$childMap$ge2 : (_flatData$childMap3 = flatData.childMap) === null || _flatData$childMap3 === void 0 ? void 0 : _flatData$childMap3.get(node);
|
|
18512
|
+
if (mapped) {
|
|
18513
|
+
return mapped;
|
|
18514
|
+
}
|
|
18515
|
+
// 禁止回退 flatData.data.filter(百万节点 O(N));直接读源数据 children
|
|
18516
|
+
var childKey = (props === null || props === void 0 ? void 0 : props.children) || 'children';
|
|
18517
|
+
return (schemaNode === null || schemaNode === void 0 ? void 0 : schemaNode[childKey]) || (node === null || node === void 0 ? void 0 : node[childKey]) || [];
|
|
18164
18518
|
};
|
|
18165
18519
|
var getSourceNodeByUID = function getSourceNodeByUID(uid) {
|
|
18166
18520
|
return getNodeById(uid);
|
|
@@ -18184,13 +18538,17 @@ var treeProps = {
|
|
|
18184
18538
|
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)));
|
|
18185
18539
|
};
|
|
18186
18540
|
var extendNodeAttr = function extendNodeAttr(item) {
|
|
18187
|
-
return Object.assign({}, item, _defineProperty({}, NODE_ATTRIBUTES.TREE_NODE_ATTR, resolveScopedSlotParam(item)));
|
|
18541
|
+
return __WEBPACK_EXTERNAL_MODULE_vue_markRaw__(Object.assign({}, __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(item), _defineProperty({}, NODE_ATTRIBUTES.TREE_NODE_ATTR, resolveScopedSlotParam(item))));
|
|
18188
18542
|
};
|
|
18543
|
+
/**
|
|
18544
|
+
* 插槽参数:data 使用 toRaw,避免深层 Proxy;整体 markRaw,降低自定义渲染时的响应式开销。
|
|
18545
|
+
* 注意:data 仍持有原 children 引用,业务侧勿对整棵 data 做 JSON.stringify。
|
|
18546
|
+
*/
|
|
18189
18547
|
var extendNodeScopedData = function extendNodeScopedData(item) {
|
|
18190
|
-
return {
|
|
18191
|
-
data: item,
|
|
18548
|
+
return __WEBPACK_EXTERNAL_MODULE_vue_markRaw__({
|
|
18549
|
+
data: __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(item),
|
|
18192
18550
|
attributes: resolveScopedSlotParam(item)
|
|
18193
|
-
};
|
|
18551
|
+
});
|
|
18194
18552
|
};
|
|
18195
18553
|
/**
|
|
18196
18554
|
* 组装进入可视区域元素返回数据
|
|
@@ -18222,8 +18580,8 @@ var treeProps = {
|
|
|
18222
18580
|
};
|
|
18223
18581
|
};
|
|
18224
18582
|
var getRootNodeList = function getRootNodeList() {
|
|
18225
|
-
var _flatData$
|
|
18226
|
-
return (_flatData$
|
|
18583
|
+
var _flatData$rootNodes2;
|
|
18584
|
+
return (_flatData$rootNodes2 = flatData.rootNodes) !== null && _flatData$rootNodes2 !== void 0 ? _flatData$rootNodes2 : flatData.data.filter(function (item) {
|
|
18227
18585
|
return isRootNode(item);
|
|
18228
18586
|
});
|
|
18229
18587
|
};
|
|
@@ -18291,6 +18649,7 @@ function _toConsumableArray(r) {
|
|
|
18291
18649
|
|
|
18292
18650
|
;// ../../packages/tree/src/util.ts
|
|
18293
18651
|
/* unused harmony import specifier */ var util_defineProperty;
|
|
18652
|
+
/* unused harmony import specifier */ var util_typeof;
|
|
18294
18653
|
|
|
18295
18654
|
|
|
18296
18655
|
|
|
@@ -18328,6 +18687,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
18328
18687
|
*/
|
|
18329
18688
|
|
|
18330
18689
|
|
|
18690
|
+
|
|
18331
18691
|
var DEFAULT_LEVLE_LINE = '1px dashed #c3cdd7';
|
|
18332
18692
|
/**
|
|
18333
18693
|
* 获取配置项可为Bool|String|Function类型,如果为Bool则配置默认值
|
|
@@ -18410,10 +18770,10 @@ var getTreeStyle = function getTreeStyle(item, props) {
|
|
|
18410
18770
|
* @returns
|
|
18411
18771
|
*/
|
|
18412
18772
|
var getNodeItemStyle = function getNodeItemStyle(item, props, flatData) {
|
|
18413
|
-
var _schema$get;
|
|
18773
|
+
var _schema$get$NODE_ATTR, _schema$get, _schema$get2;
|
|
18414
18774
|
var showTree = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
18415
18775
|
var schema = flatData.schema;
|
|
18416
|
-
var depth = (_schema$get = schema.get(item)) === null || _schema$get === void 0 ? void 0 : _schema$get[NODE_ATTRIBUTES.DEPTH];
|
|
18776
|
+
var depth = (_schema$get$NODE_ATTR = (_schema$get = schema.get(item)) === null || _schema$get === void 0 ? void 0 : _schema$get[NODE_ATTRIBUTES.DEPTH]) !== null && _schema$get$NODE_ATTR !== void 0 ? _schema$get$NODE_ATTR : (_schema$get2 = schema.get(__WEBPACK_EXTERNAL_MODULE_vue_toRaw__(item))) === null || _schema$get2 === void 0 ? void 0 : _schema$get2[NODE_ATTRIBUTES.DEPTH];
|
|
18417
18777
|
if (showTree) {
|
|
18418
18778
|
var args = ['node'];
|
|
18419
18779
|
var levelLine = function levelLine() {
|
|
@@ -18432,16 +18792,23 @@ var getNodeItemStyle = function getNodeItemStyle(item, props, flatData) {
|
|
|
18432
18792
|
* @param item
|
|
18433
18793
|
* @returns
|
|
18434
18794
|
*/
|
|
18795
|
+
var getSchemaAttr = function getSchemaAttr(schema, item) {
|
|
18796
|
+
return schema.get(item) || schema.get(__WEBPACK_EXTERNAL_MODULE_vue_toRaw__(item)) || {};
|
|
18797
|
+
};
|
|
18435
18798
|
var getNodeItemClass = function getNodeItemClass(item, schema, props) {
|
|
18436
18799
|
var showTree = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
18800
|
+
var schemaAttr = getSchemaAttr(schema, item);
|
|
18437
18801
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
18438
|
-
var
|
|
18439
|
-
|
|
18440
|
-
|
|
18802
|
+
var __is_root = schemaAttr.__is_root,
|
|
18803
|
+
__is_open = schemaAttr.__is_open,
|
|
18804
|
+
__parent = schemaAttr.__parent,
|
|
18805
|
+
__depth = schemaAttr.__depth;
|
|
18806
|
+
// 根节点必须带 is-root,否则会命中子节点连线样式(左侧伪元素横线堆叠成“竖线”)
|
|
18807
|
+
var isRoot = __is_root !== null && __is_root !== void 0 ? __is_root : __parent == null && (__depth === 0 || __depth === undefined);
|
|
18441
18808
|
var _usePrefix = __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3_usePrefix__(),
|
|
18442
18809
|
resolveClassName = _usePrefix.resolveClassName;
|
|
18443
18810
|
return _defineProperty(_defineProperty(_defineProperty(_defineProperty({
|
|
18444
|
-
'is-root':
|
|
18811
|
+
'is-root': !!isRoot
|
|
18445
18812
|
}, "".concat(resolveClassName('tree-node')), true), 'is-open', __is_open), 'is-virtual-render', props.virtualRender), 'level-line', props.levelLine && showTree);
|
|
18446
18813
|
};
|
|
18447
18814
|
/**
|
|
@@ -18451,10 +18818,10 @@ var getNodeItemClass = function getNodeItemClass(item, schema, props) {
|
|
|
18451
18818
|
*/
|
|
18452
18819
|
var getNodeRowClass = function getNodeRowClass(item, schema) {
|
|
18453
18820
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
18454
|
-
var
|
|
18455
|
-
__is_checked =
|
|
18456
|
-
__is_indeterminate =
|
|
18457
|
-
__is_selected =
|
|
18821
|
+
var _getSchemaAttr = getSchemaAttr(schema, item),
|
|
18822
|
+
__is_checked = _getSchemaAttr.__is_checked,
|
|
18823
|
+
__is_indeterminate = _getSchemaAttr.__is_indeterminate,
|
|
18824
|
+
__is_selected = _getSchemaAttr.__is_selected;
|
|
18458
18825
|
var _usePrefix2 = __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3_usePrefix__(),
|
|
18459
18826
|
resolveClassName = _usePrefix2.resolveClassName;
|
|
18460
18827
|
return _defineProperty({
|
|
@@ -18482,7 +18849,7 @@ var _cloneTreeNode = function cloneTreeNode(node) {
|
|
|
18482
18849
|
return _cloneTreeNode(item);
|
|
18483
18850
|
});
|
|
18484
18851
|
}
|
|
18485
|
-
if (node &&
|
|
18852
|
+
if (node && util_typeof(node) === 'object') {
|
|
18486
18853
|
return Object.keys(node).reduce(function (acc, key) {
|
|
18487
18854
|
var value = node[key];
|
|
18488
18855
|
acc[key] = Array.isArray(value) ? value.slice() : value;
|
|
@@ -18660,18 +19027,18 @@ var moveTreeNodeById = function moveTreeNodeById() {
|
|
|
18660
19027
|
var nodeKey = arguments.length > 3 ? arguments[3] : undefined;
|
|
18661
19028
|
var childKey = arguments.length > 4 ? arguments[4] : undefined;
|
|
18662
19029
|
var options = arguments.length > 5 ? arguments[5] : undefined;
|
|
18663
|
-
|
|
18664
|
-
var removeResult = removeTreeNodeById(
|
|
19030
|
+
// 原地移动,避免百万节点全量 cloneTreeData
|
|
19031
|
+
var removeResult = removeTreeNodeById(treeData, nodeId, nodeKey, childKey);
|
|
18665
19032
|
if (!removeResult.node) {
|
|
18666
19033
|
return null;
|
|
18667
19034
|
}
|
|
18668
|
-
var insertResult = insertTreeNodeById(
|
|
19035
|
+
var insertResult = insertTreeNodeById(treeData, removeResult.node, targetNodeId, nodeKey, childKey, options);
|
|
18669
19036
|
if (!insertResult.targetNode) {
|
|
18670
19037
|
return null;
|
|
18671
19038
|
}
|
|
18672
19039
|
return {
|
|
18673
19040
|
trigger: 'drag',
|
|
18674
|
-
data:
|
|
19041
|
+
data: treeData,
|
|
18675
19042
|
node: removeResult.node,
|
|
18676
19043
|
targetNode: insertResult.targetNode,
|
|
18677
19044
|
parentNode: insertResult.parentNode,
|
|
@@ -18782,7 +19149,8 @@ var isCascadeEnabled = function isCascadeEnabled(props) {
|
|
|
18782
19149
|
}
|
|
18783
19150
|
return Promise.resolve(resp);
|
|
18784
19151
|
}
|
|
18785
|
-
|
|
19152
|
+
// 原地写入子节点,避免百万节点全量 cloneTreeData
|
|
19153
|
+
var nextTreeData = (_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;
|
|
18786
19154
|
mutateTreeById(nextTreeData, nodeId, props.nodeKey || NODE_ATTRIBUTES.UUID, props.children, function (targetNode) {
|
|
18787
19155
|
targetNode[NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_OPEN]] = true;
|
|
18788
19156
|
targetNode[props.children] = nodeValue;
|
|
@@ -18866,6 +19234,7 @@ var isCascadeEnabled = function isCascadeEnabled(props) {
|
|
|
18866
19234
|
;// ../../packages/tree/src/use-node-action.tsx
|
|
18867
19235
|
|
|
18868
19236
|
|
|
19237
|
+
|
|
18869
19238
|
var use_node_action_this = undefined;
|
|
18870
19239
|
/*
|
|
18871
19240
|
* Tencent is pleased to support the open source community by making
|
|
@@ -18901,13 +19270,14 @@ var use_node_action_this = undefined;
|
|
|
18901
19270
|
|
|
18902
19271
|
|
|
18903
19272
|
|
|
19273
|
+
|
|
18904
19274
|
/* harmony default export */ const use_node_action = (function (props, ctx, flatData, _renderData, initOption) {
|
|
18905
19275
|
// const checkedNodes = [];
|
|
18906
19276
|
var selectedNodeId = props.selected;
|
|
19277
|
+
var selectedNode = null;
|
|
18907
19278
|
var _useNodeAttribute = use_node_attribute(flatData, props),
|
|
18908
19279
|
setNodeAttr = _useNodeAttribute.setNodeAttr,
|
|
18909
19280
|
setNodeAttrById = _useNodeAttribute.setNodeAttrById,
|
|
18910
|
-
getNodePath = _useNodeAttribute.getNodePath,
|
|
18911
19281
|
getSchemaVal = _useNodeAttribute.getSchemaVal,
|
|
18912
19282
|
getNodeAttr = _useNodeAttribute.getNodeAttr,
|
|
18913
19283
|
getNodeId = _useNodeAttribute.getNodeId,
|
|
@@ -18921,10 +19291,28 @@ var use_node_action_this = undefined;
|
|
|
18921
19291
|
getParentNode = _useNodeAttribute.getParentNode,
|
|
18922
19292
|
resolveScopedSlotParam = _useNodeAttribute.resolveScopedSlotParam,
|
|
18923
19293
|
extendNodeAttr = _useNodeAttribute.extendNodeAttr,
|
|
18924
|
-
extendNodeScopedData = _useNodeAttribute.extendNodeScopedData
|
|
19294
|
+
extendNodeScopedData = _useNodeAttribute.extendNodeScopedData,
|
|
19295
|
+
getRootNodeList = _useNodeAttribute.getRootNodeList;
|
|
18925
19296
|
var _usePrefix = __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3_usePrefix__(),
|
|
18926
19297
|
resolveClassName = _usePrefix.resolveClassName;
|
|
18927
|
-
var registerNextLoop = initOption.registerNextLoop
|
|
19298
|
+
var registerNextLoop = initOption.registerNextLoop,
|
|
19299
|
+
syncNodeOpenState = initOption.syncNodeOpenState,
|
|
19300
|
+
scheduleUiRefresh = initOption.scheduleUiRefresh;
|
|
19301
|
+
var _useCheckedState = use_checked_state(flatData, {
|
|
19302
|
+
getChildNodes: getChildNodes,
|
|
19303
|
+
getNodeAttr: getNodeAttr,
|
|
19304
|
+
getParentNode: getParentNode,
|
|
19305
|
+
getSchemaVal: getSchemaVal,
|
|
19306
|
+
isRootNode: isRootNode
|
|
19307
|
+
}),
|
|
19308
|
+
setNodeCheckedState = _useCheckedState.setNodeCheckedState,
|
|
19309
|
+
setDescendantChecked = _useCheckedState.setDescendantChecked,
|
|
19310
|
+
forEachDescendant = _useCheckedState.forEachDescendant,
|
|
19311
|
+
updateParentChecked = _useCheckedState.updateParentChecked,
|
|
19312
|
+
getCheckedEmitPayload = _useCheckedState.getCheckedEmitPayload,
|
|
19313
|
+
rebuildCheckedSetsFromList = _useCheckedState.rebuildCheckedSetsFromList,
|
|
19314
|
+
clearAllCheckedState = _useCheckedState.clearAllCheckedState,
|
|
19315
|
+
isNodeIndeterminate = _useCheckedState.isNodeIndeterminate;
|
|
18928
19316
|
var _useNodeAsync = use_node_async(props, flatData, ctx, initOption),
|
|
18929
19317
|
asyncNodeClick = _useNodeAsync.asyncNodeClick,
|
|
18930
19318
|
deepAutoOpen = _useNodeAsync.deepAutoOpen;
|
|
@@ -19025,32 +19413,20 @@ var use_node_action_this = undefined;
|
|
|
19025
19413
|
}
|
|
19026
19414
|
return null;
|
|
19027
19415
|
};
|
|
19028
|
-
var
|
|
19029
|
-
|
|
19030
|
-
|
|
19031
|
-
return;
|
|
19032
|
-
}
|
|
19033
|
-
var isNeedChecked = isChecked ? isChecked : (getChildNodes(parent) || []).some(function (node) {
|
|
19034
|
-
return isNodeChecked(node);
|
|
19035
|
-
});
|
|
19036
|
-
setNodeAttr(parent, NODE_ATTRIBUTES.IS_CHECKED, isNeedChecked);
|
|
19037
|
-
setNodeAttr(parent, NODE_ATTRIBUTES.IS_INDETERMINATE, (getChildNodes(parent) || []).some(function (node) {
|
|
19038
|
-
return !isNodeChecked(node) || isIndeterminate(node);
|
|
19039
|
-
}));
|
|
19040
|
-
if (!isRootNode(parent)) {
|
|
19041
|
-
_updateParentChecked(parent, isChecked);
|
|
19042
|
-
}
|
|
19043
|
-
};
|
|
19044
|
-
var _deepUpdateChildNode = function deepUpdateChildNode(node, attr, value) {
|
|
19045
|
-
getChildNodes(node).forEach(function (chid) {
|
|
19416
|
+
var deepUpdateChildNode = function deepUpdateChildNode(node, attr, value) {
|
|
19417
|
+
// 按 DFS 连续区间扫描后代,避免递归 forEach
|
|
19418
|
+
forEachDescendant(node, function (chid) {
|
|
19046
19419
|
if (Array.isArray(attr)) {
|
|
19047
19420
|
attr.forEach(function (val, index) {
|
|
19048
|
-
setNodeAttr(chid, val, value[index]
|
|
19421
|
+
setNodeAttr(chid, val, value[index], undefined, {
|
|
19422
|
+
silent: true
|
|
19423
|
+
});
|
|
19049
19424
|
});
|
|
19050
19425
|
} else {
|
|
19051
|
-
setNodeAttr(chid, attr, value
|
|
19426
|
+
setNodeAttr(chid, attr, value, undefined, {
|
|
19427
|
+
silent: true
|
|
19428
|
+
});
|
|
19052
19429
|
}
|
|
19053
|
-
_deepUpdateChildNode(chid, attr, value);
|
|
19054
19430
|
});
|
|
19055
19431
|
};
|
|
19056
19432
|
var isRemoteFnExec = function isRemoteFnExec(event) {
|
|
@@ -19061,27 +19437,45 @@ var use_node_action_this = undefined;
|
|
|
19061
19437
|
}
|
|
19062
19438
|
return true;
|
|
19063
19439
|
};
|
|
19440
|
+
var emitCheckedChange = function emitCheckedChange() {
|
|
19441
|
+
// 先让勾选 UI 刷新,再异步抛出列表,避免百万级 Array.from 阻塞交互
|
|
19442
|
+
__WEBPACK_EXTERNAL_MODULE_vue_nextTick__(function () {
|
|
19443
|
+
var _getCheckedEmitPayloa = getCheckedEmitPayload(),
|
|
19444
|
+
_getCheckedEmitPayloa2 = _slicedToArray(_getCheckedEmitPayloa, 2),
|
|
19445
|
+
checkedNodes = _getCheckedEmitPayloa2[0],
|
|
19446
|
+
indeterminateNodes = _getCheckedEmitPayloa2[1];
|
|
19447
|
+
ctx.emit(EVENTS.NODE_CHECKED, checkedNodes, indeterminateNodes);
|
|
19448
|
+
});
|
|
19449
|
+
};
|
|
19450
|
+
var applyCheckedChange = function applyCheckedChange(item, value) {
|
|
19451
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
19452
|
+
var checked = !!value;
|
|
19453
|
+
setNodeCheckedState(item, checked, false);
|
|
19454
|
+
if (isCascadeEnabled(props)) {
|
|
19455
|
+
setDescendantChecked(item, checked);
|
|
19456
|
+
updateParentChecked(item);
|
|
19457
|
+
}
|
|
19458
|
+
if (options.refresh !== false) {
|
|
19459
|
+
// 级联勾选可能影响大量节点,走全局刷新;单节点勾选只刷新当前行
|
|
19460
|
+
if (isCascadeEnabled(props)) {
|
|
19461
|
+
scheduleUiRefresh === null || scheduleUiRefresh === void 0 || scheduleUiRefresh();
|
|
19462
|
+
} else {
|
|
19463
|
+
scheduleUiRefresh === null || scheduleUiRefresh === void 0 || scheduleUiRefresh(item);
|
|
19464
|
+
}
|
|
19465
|
+
}
|
|
19466
|
+
if (options.emitEvent !== false) {
|
|
19467
|
+
emitCheckedChange();
|
|
19468
|
+
}
|
|
19469
|
+
};
|
|
19064
19470
|
var handleNodeItemCheckboxChange = function handleNodeItemCheckboxChange(item, value, event) {
|
|
19065
19471
|
event === null || event === void 0 || event.preventDefault();
|
|
19066
19472
|
event === null || event === void 0 || event.stopImmediatePropagation();
|
|
19067
19473
|
event === null || event === void 0 || event.stopPropagation();
|
|
19068
|
-
|
|
19069
|
-
if (value) {
|
|
19070
|
-
setNodeAttr(item, NODE_ATTRIBUTES.IS_INDETERMINATE, false);
|
|
19071
|
-
}
|
|
19072
|
-
if (props.checkStrictly) {
|
|
19073
|
-
_deepUpdateChildNode(item, [NODE_ATTRIBUTES.IS_CHECKED, NODE_ATTRIBUTES.IS_INDETERMINATE], [!!value, false]);
|
|
19074
|
-
_updateParentChecked(item, value);
|
|
19075
|
-
}
|
|
19076
|
-
ctx.emit(EVENTS.NODE_CHECKED, flatData.data.filter(function (t) {
|
|
19077
|
-
return isNodeChecked(t);
|
|
19078
|
-
}), flatData.data.filter(function (t) {
|
|
19079
|
-
return isIndeterminate(t);
|
|
19080
|
-
}));
|
|
19474
|
+
applyCheckedChange(item, value);
|
|
19081
19475
|
handleNodeContentClick(item, event, 'checked');
|
|
19082
19476
|
};
|
|
19083
19477
|
var isIndeterminate = function isIndeterminate(item) {
|
|
19084
|
-
return
|
|
19478
|
+
return isNodeIndeterminate(item);
|
|
19085
19479
|
};
|
|
19086
19480
|
var getCheckboxRender = function getCheckboxRender(item) {
|
|
19087
19481
|
if (!showCheckbox(props, extendNodeScopedData(item))) {
|
|
@@ -19110,14 +19504,15 @@ var use_node_action_this = undefined;
|
|
|
19110
19504
|
var e = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
19111
19505
|
var fireEmit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
19112
19506
|
var newVal = isOpen === null ? !isItemOpen(item) : !!isOpen;
|
|
19507
|
+
setNodeAttr(item, NODE_ATTRIBUTES.IS_OPEN, newVal, undefined, {
|
|
19508
|
+
silent: true
|
|
19509
|
+
});
|
|
19113
19510
|
/**
|
|
19114
|
-
*
|
|
19115
|
-
*
|
|
19511
|
+
* 增量维护可见列表:
|
|
19512
|
+
* - 展开:插入子节点
|
|
19513
|
+
* - 收起:移除可见后代,并仅重置可见区间内的 IS_OPEN(不再扫 flat 全量子树)
|
|
19116
19514
|
*/
|
|
19117
|
-
|
|
19118
|
-
_deepUpdateChildNode(item, NODE_ATTRIBUTES.IS_OPEN, newVal);
|
|
19119
|
-
}
|
|
19120
|
-
setNodeAttr(item, NODE_ATTRIBUTES.IS_OPEN, newVal);
|
|
19515
|
+
syncNodeOpenState === null || syncNodeOpenState === void 0 || syncNodeOpenState(item, newVal);
|
|
19121
19516
|
if (fireEmit) {
|
|
19122
19517
|
var emitEvent = isItemOpen(item) ? EVENTS.NODE_EXPAND : EVENTS.NODE_COLLAPSE;
|
|
19123
19518
|
ctx.emit(emitEvent, item, resolveScopedSlotParam(item), getSchemaVal(item), e);
|
|
@@ -19149,7 +19544,24 @@ var use_node_action_this = undefined;
|
|
|
19149
19544
|
var setOpen = function setOpen(item) {
|
|
19150
19545
|
var isOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
19151
19546
|
var autoOpenParents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
19152
|
-
|
|
19547
|
+
var resolvedItem = resolveNodeItem(item);
|
|
19548
|
+
if (resolvedItem[NODE_ATTRIBUTES.IS_NULL]) {
|
|
19549
|
+
return;
|
|
19550
|
+
}
|
|
19551
|
+
if (autoOpenParents && isOpen && !isRootNode(resolvedItem)) {
|
|
19552
|
+
var parents = [];
|
|
19553
|
+
var parent = getParentNode(resolvedItem);
|
|
19554
|
+
while (parent) {
|
|
19555
|
+
parents.unshift(parent);
|
|
19556
|
+
parent = getParentNode(parent);
|
|
19557
|
+
}
|
|
19558
|
+
parents.forEach(function (node) {
|
|
19559
|
+
if (!isItemOpen(node)) {
|
|
19560
|
+
setNodeOpened(node, true, null, false);
|
|
19561
|
+
}
|
|
19562
|
+
});
|
|
19563
|
+
}
|
|
19564
|
+
setNodeOpened(resolvedItem, isOpen, null, false);
|
|
19153
19565
|
};
|
|
19154
19566
|
/**
|
|
19155
19567
|
* 递归处理当前节点以及父级节点属性值
|
|
@@ -19249,11 +19661,10 @@ var use_node_action_this = undefined;
|
|
|
19249
19661
|
}
|
|
19250
19662
|
var resolvedItem = resolveNodeItem(nodeList[0]);
|
|
19251
19663
|
if (typeof resolvedItem === 'number' || typeof resolvedItem === 'string' || _typeof(resolvedItem) === 'symbol') {
|
|
19252
|
-
var _flatData$
|
|
19253
|
-
var nodeId = resolvedItem;
|
|
19254
|
-
|
|
19255
|
-
|
|
19256
|
-
})) !== null && _flatData$data$find !== void 0 ? _flatData$data$find : _defineProperty({}, NODE_ATTRIBUTES.IS_NULL, true);
|
|
19664
|
+
var _flatData$nodeMap$get, _flatData$nodeMap;
|
|
19665
|
+
var nodeId = String(resolvedItem);
|
|
19666
|
+
// 只走 nodeMap,禁止 data.find O(N)
|
|
19667
|
+
resolvedItem = (_flatData$nodeMap$get = (_flatData$nodeMap = flatData.nodeMap) === null || _flatData$nodeMap === void 0 ? void 0 : _flatData$nodeMap.get(nodeId)) !== null && _flatData$nodeMap$get !== void 0 ? _flatData$nodeMap$get : _defineProperty({}, NODE_ATTRIBUTES.IS_NULL, true);
|
|
19257
19668
|
}
|
|
19258
19669
|
if (resolvedItem[NODE_ATTRIBUTES.IS_NULL]) {
|
|
19259
19670
|
return;
|
|
@@ -19262,14 +19673,28 @@ var use_node_action_this = undefined;
|
|
|
19262
19673
|
console.warn('props.selectable is false or undefined, please set selectable with true');
|
|
19263
19674
|
return;
|
|
19264
19675
|
}
|
|
19265
|
-
|
|
19266
|
-
|
|
19676
|
+
// 取消旧选中:优先用缓存节点引用,避免 setNodeAttrById → 全表查找
|
|
19677
|
+
if (selectedNode && selectedNode !== resolvedItem) {
|
|
19678
|
+
setNodeAttr(selectedNode, NODE_ATTRIBUTES.IS_SELECTED, false, undefined, {
|
|
19679
|
+
silent: true
|
|
19680
|
+
});
|
|
19681
|
+
scheduleUiRefresh === null || scheduleUiRefresh === void 0 || scheduleUiRefresh(selectedNode);
|
|
19682
|
+
} else if (selectedNodeId !== null && selectedNodeId !== undefined && "".concat(selectedNodeId) !== "".concat(getNodeId(resolvedItem))) {
|
|
19683
|
+
setNodeAttrById(selectedNodeId, NODE_ATTRIBUTES.IS_SELECTED, false, {
|
|
19684
|
+
silent: true
|
|
19685
|
+
});
|
|
19267
19686
|
}
|
|
19268
|
-
if (props.selected && props.selected !== selectedNodeId) {
|
|
19269
|
-
setNodeAttrById(props.selected, NODE_ATTRIBUTES.IS_SELECTED,
|
|
19687
|
+
if (props.selected && props.selected !== selectedNodeId && "".concat(props.selected) !== "".concat(getNodeId(resolvedItem))) {
|
|
19688
|
+
setNodeAttrById(props.selected, NODE_ATTRIBUTES.IS_SELECTED, false, {
|
|
19689
|
+
silent: true
|
|
19690
|
+
});
|
|
19270
19691
|
}
|
|
19271
|
-
setNodeAttr(resolvedItem, NODE_ATTRIBUTES.IS_SELECTED, selected
|
|
19692
|
+
setNodeAttr(resolvedItem, NODE_ATTRIBUTES.IS_SELECTED, selected, undefined, {
|
|
19693
|
+
silent: true
|
|
19694
|
+
});
|
|
19695
|
+
selectedNode = resolvedItem;
|
|
19272
19696
|
selectedNodeId = getNodeId(resolvedItem);
|
|
19697
|
+
scheduleUiRefresh === null || scheduleUiRefresh === void 0 || scheduleUiRefresh(resolvedItem);
|
|
19273
19698
|
if (triggerEvent) {
|
|
19274
19699
|
ctx.emit(EVENTS.NODE_SELECTED, {
|
|
19275
19700
|
selected: selected,
|
|
@@ -19358,23 +19783,30 @@ var use_node_action_this = undefined;
|
|
|
19358
19783
|
* @returns
|
|
19359
19784
|
*/
|
|
19360
19785
|
var filterNextNode = function filterNextNode(depth, node) {
|
|
19786
|
+
var _getNodeAttr;
|
|
19361
19787
|
if (isRootNode(node)) {
|
|
19362
19788
|
return false;
|
|
19363
19789
|
}
|
|
19364
|
-
var
|
|
19365
|
-
|
|
19366
|
-
|
|
19367
|
-
// 如果是判定当前节点,则必须要有一条线
|
|
19368
|
-
if (currentPath === nodepath) {
|
|
19790
|
+
var nodeDepth = (_getNodeAttr = getNodeAttr(node, NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr !== void 0 ? _getNodeAttr : 0;
|
|
19791
|
+
// 当前节点所在 depth:必有连线
|
|
19792
|
+
if (depth === nodeDepth) {
|
|
19369
19793
|
return true;
|
|
19370
19794
|
}
|
|
19371
|
-
|
|
19372
|
-
|
|
19373
|
-
|
|
19374
|
-
|
|
19375
|
-
|
|
19376
|
-
|
|
19377
|
-
|
|
19795
|
+
if (depth > nodeDepth) {
|
|
19796
|
+
return false;
|
|
19797
|
+
}
|
|
19798
|
+
// 取 depth 层祖先,判断其是否存在下一个兄弟节点 —— O(depth) 替代全表 some
|
|
19799
|
+
var ancestor = node;
|
|
19800
|
+
for (var i = nodeDepth; i > depth; i--) {
|
|
19801
|
+
ancestor = getParentNode(ancestor);
|
|
19802
|
+
if (!ancestor) {
|
|
19803
|
+
return false;
|
|
19804
|
+
}
|
|
19805
|
+
}
|
|
19806
|
+
var parent = getParentNode(ancestor);
|
|
19807
|
+
var siblings = parent ? getChildNodes(parent) : getRootNodeList();
|
|
19808
|
+
var idx = siblings.indexOf(ancestor);
|
|
19809
|
+
return idx >= 0 && idx < siblings.length - 1;
|
|
19378
19810
|
};
|
|
19379
19811
|
/**
|
|
19380
19812
|
* 获取层级连线
|
|
@@ -19382,16 +19814,20 @@ var use_node_action_this = undefined;
|
|
|
19382
19814
|
* @returns
|
|
19383
19815
|
*/
|
|
19384
19816
|
var getVirtualLines = function getVirtualLines(node) {
|
|
19385
|
-
var
|
|
19817
|
+
var _getNodeAttr2;
|
|
19386
19818
|
if (!props.levelLine) {
|
|
19387
19819
|
return null;
|
|
19388
19820
|
}
|
|
19821
|
+
// 根节点不渲染层级连线(与基础用法一致)
|
|
19822
|
+
if (isRootNode(node)) {
|
|
19823
|
+
return null;
|
|
19824
|
+
}
|
|
19389
19825
|
var getNodeLineStyle = function getNodeLineStyle(dpth) {
|
|
19390
19826
|
return {
|
|
19391
19827
|
'--depth': dpth
|
|
19392
19828
|
};
|
|
19393
19829
|
};
|
|
19394
|
-
var maxDeep = ((
|
|
19830
|
+
var maxDeep = ((_getNodeAttr2 = getNodeAttr(node, NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr2 !== void 0 ? _getNodeAttr2 : 0) + 1;
|
|
19395
19831
|
return new Array(maxDeep).fill('').map(function (_, index) {
|
|
19396
19832
|
return index;
|
|
19397
19833
|
}).filter(function (depth) {
|
|
@@ -19470,8 +19906,12 @@ var use_node_action_this = undefined;
|
|
|
19470
19906
|
setOpen: setOpen,
|
|
19471
19907
|
setNodeAttribute: _setNodeAttribute,
|
|
19472
19908
|
isIndeterminate: isIndeterminate,
|
|
19473
|
-
deepUpdateChildNode:
|
|
19474
|
-
updateParentChecked:
|
|
19909
|
+
deepUpdateChildNode: deepUpdateChildNode,
|
|
19910
|
+
updateParentChecked: updateParentChecked,
|
|
19911
|
+
applyCheckedChange: applyCheckedChange,
|
|
19912
|
+
emitCheckedChange: emitCheckedChange,
|
|
19913
|
+
rebuildCheckedSetsFromList: rebuildCheckedSetsFromList,
|
|
19914
|
+
clearAllCheckedState: clearAllCheckedState
|
|
19475
19915
|
};
|
|
19476
19916
|
});
|
|
19477
19917
|
;// ../../packages/tree/src/use-node-drag.tsx
|
|
@@ -19812,7 +20252,6 @@ var use_node_action_this = undefined;
|
|
|
19812
20252
|
});
|
|
19813
20253
|
;// ../../packages/tree/src/use-search.tsx
|
|
19814
20254
|
|
|
19815
|
-
var use_search_this = undefined;
|
|
19816
20255
|
/*
|
|
19817
20256
|
* Tencent is pleased to support the open source community by making
|
|
19818
20257
|
* 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
|
|
@@ -19847,15 +20286,11 @@ var use_search_this = undefined;
|
|
|
19847
20286
|
var exactMatch = function exactMatch(matchValue, itemValue) {
|
|
19848
20287
|
return matchValue === itemValue;
|
|
19849
20288
|
};
|
|
19850
|
-
var
|
|
19851
|
-
|
|
19852
|
-
return new RegExp("".concat(matchValue), 'i').test("".concat(itemValue));
|
|
19853
|
-
} catch (_unused) {
|
|
19854
|
-
return "".concat(itemValue).toLowerCase().includes("".concat(matchValue).toLowerCase());
|
|
19855
|
-
}
|
|
20289
|
+
var fuzzyMatchWithRegex = function fuzzyMatchWithRegex(regex, itemValue) {
|
|
20290
|
+
return regex.test("".concat(itemValue));
|
|
19856
20291
|
};
|
|
19857
|
-
var
|
|
19858
|
-
return
|
|
20292
|
+
var fuzzyMatchIncludes = function fuzzyMatchIncludes(matchValue, itemValue) {
|
|
20293
|
+
return "".concat(itemValue).toLowerCase().includes(matchValue);
|
|
19859
20294
|
};
|
|
19860
20295
|
var isSearchDisabled = __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
19861
20296
|
return refSearch.value === undefined || refSearch.value === false;
|
|
@@ -19864,10 +20299,9 @@ var use_search_this = undefined;
|
|
|
19864
20299
|
if (refSearch.value && _typeof(refSearch.value) === 'object') {
|
|
19865
20300
|
return refSearch.value;
|
|
19866
20301
|
}
|
|
19867
|
-
|
|
20302
|
+
return {
|
|
19868
20303
|
value: ''
|
|
19869
20304
|
};
|
|
19870
|
-
return emptyOption;
|
|
19871
20305
|
});
|
|
19872
20306
|
var resultType = __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
19873
20307
|
var _searchOption$value$r;
|
|
@@ -19877,41 +20311,84 @@ var use_search_this = undefined;
|
|
|
19877
20311
|
var _searchOption$value$s;
|
|
19878
20312
|
return (_searchOption$value$s = searchOption.value.showChildNodes) !== null && _searchOption$value$s !== void 0 ? _searchOption$value$s : false;
|
|
19879
20313
|
});
|
|
19880
|
-
|
|
20314
|
+
/** 只暴露原始检索值,供外部浅层 watch,避免 deep watch 整个 search 对象 */
|
|
20315
|
+
var searchValue = __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
19881
20316
|
var _searchOption$value$v;
|
|
20317
|
+
if (isSearchDisabled.value) {
|
|
20318
|
+
return '';
|
|
20319
|
+
}
|
|
19882
20320
|
if (isCommonType(refSearch.value)) {
|
|
19883
20321
|
return refSearch.value;
|
|
19884
20322
|
}
|
|
19885
20323
|
return (_searchOption$value$v = searchOption.value.value) !== null && _searchOption$value$v !== void 0 ? _searchOption$value$v : '';
|
|
19886
|
-
};
|
|
19887
|
-
var
|
|
20324
|
+
});
|
|
20325
|
+
var isSearchActive = __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
20326
|
+
return !isSearchDisabled.value && "".concat(searchValue.value).length > 0;
|
|
20327
|
+
});
|
|
20328
|
+
var isTreeUI = __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
20329
|
+
return resultType.value === 'tree';
|
|
20330
|
+
});
|
|
20331
|
+
/**
|
|
20332
|
+
* 为一次检索创建匹配器(模糊匹配只编译一次正则),避免百万节点循环内重复 new RegExp。
|
|
20333
|
+
*/
|
|
20334
|
+
var createMatcher = function createMatcher() {
|
|
19888
20335
|
if (isSearchDisabled.value) {
|
|
19889
|
-
return
|
|
20336
|
+
return function () {
|
|
20337
|
+
return true;
|
|
20338
|
+
};
|
|
19890
20339
|
}
|
|
19891
|
-
var value =
|
|
20340
|
+
var value = searchValue.value;
|
|
19892
20341
|
if ("".concat(value).length === 0) {
|
|
19893
|
-
return
|
|
20342
|
+
return function () {
|
|
20343
|
+
return false;
|
|
20344
|
+
};
|
|
19894
20345
|
}
|
|
19895
20346
|
if (isCommonType(refSearch.value)) {
|
|
19896
|
-
|
|
20347
|
+
var _text = "".concat(value);
|
|
20348
|
+
try {
|
|
20349
|
+
var regex = new RegExp(_text, 'i');
|
|
20350
|
+
return function (itemValue) {
|
|
20351
|
+
return fuzzyMatchWithRegex(regex, itemValue);
|
|
20352
|
+
};
|
|
20353
|
+
} catch (_unused) {
|
|
20354
|
+
var lower = _text.toLowerCase();
|
|
20355
|
+
return function (itemValue) {
|
|
20356
|
+
return fuzzyMatchIncludes(lower, itemValue);
|
|
20357
|
+
};
|
|
20358
|
+
}
|
|
19897
20359
|
}
|
|
19898
20360
|
var _searchOption$value$m = searchOption.value.match,
|
|
19899
20361
|
match = _searchOption$value$m === void 0 ? 'fuzzy' : _searchOption$value$m;
|
|
19900
|
-
|
|
19901
|
-
|
|
19902
|
-
|
|
19903
|
-
|
|
19904
|
-
var isSearchActive = __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
19905
|
-
if (isSearchDisabled.value) {
|
|
19906
|
-
return false;
|
|
20362
|
+
if (typeof match === 'function') {
|
|
20363
|
+
return function (itemValue, item) {
|
|
20364
|
+
return !!match(value, itemValue, item);
|
|
20365
|
+
};
|
|
19907
20366
|
}
|
|
19908
|
-
|
|
19909
|
-
|
|
19910
|
-
|
|
19911
|
-
|
|
19912
|
-
|
|
19913
|
-
|
|
19914
|
-
|
|
20367
|
+
if (match === 'full') {
|
|
20368
|
+
return function (itemValue) {
|
|
20369
|
+
return exactMatch(value, itemValue);
|
|
20370
|
+
};
|
|
20371
|
+
}
|
|
20372
|
+
var text = "".concat(value);
|
|
20373
|
+
try {
|
|
20374
|
+
var _regex = new RegExp(text, 'i');
|
|
20375
|
+
return function (itemValue) {
|
|
20376
|
+
return fuzzyMatchWithRegex(_regex, itemValue);
|
|
20377
|
+
};
|
|
20378
|
+
} catch (_unused2) {
|
|
20379
|
+
var _lower = text.toLowerCase();
|
|
20380
|
+
return function (itemValue) {
|
|
20381
|
+
return fuzzyMatchIncludes(_lower, itemValue);
|
|
20382
|
+
};
|
|
20383
|
+
}
|
|
20384
|
+
};
|
|
20385
|
+
var searchFn = function searchFn(itemValue, item) {
|
|
20386
|
+
return createMatcher()(itemValue, item);
|
|
20387
|
+
};
|
|
20388
|
+
return {
|
|
20389
|
+
searchFn: searchFn,
|
|
20390
|
+
createMatcher: createMatcher,
|
|
20391
|
+
searchValue: searchValue,
|
|
19915
20392
|
refSearch: refSearch,
|
|
19916
20393
|
isSearchActive: isSearchActive,
|
|
19917
20394
|
isSearchDisabled: isSearchDisabled,
|
|
@@ -20043,6 +20520,16 @@ var use_tree_init_this = undefined;
|
|
|
20043
20520
|
|
|
20044
20521
|
|
|
20045
20522
|
|
|
20523
|
+
var toRawStore = function toRawStore(value) {
|
|
20524
|
+
return __WEBPACK_EXTERNAL_MODULE_vue_markRaw__(value);
|
|
20525
|
+
};
|
|
20526
|
+
var SOURCE_IS_OPEN = NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_OPEN];
|
|
20527
|
+
var SOURCE_IS_CHECKED = NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_CHECKED];
|
|
20528
|
+
var SOURCE_IS_SELECTED = NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_SELECTED];
|
|
20529
|
+
var SOURCE_IS_ASYNC = NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_ASYNC];
|
|
20530
|
+
var SOURCE_IS_MATCH = NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_MATCH];
|
|
20531
|
+
var SOURCE_IS_CACHED = NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_CACHED];
|
|
20532
|
+
var SOURCE_IS_LOADING = NODE_SOURCE_ATTRS[NODE_ATTRIBUTES.IS_LOADING];
|
|
20046
20533
|
/* harmony default export */ const use_tree_init = (function (props) {
|
|
20047
20534
|
var _props$async3;
|
|
20048
20535
|
/**
|
|
@@ -20059,6 +20546,7 @@ var use_tree_init_this = undefined;
|
|
|
20059
20546
|
var checkedList = [];
|
|
20060
20547
|
var outputData = [];
|
|
20061
20548
|
var order = 0;
|
|
20549
|
+
var openCount = 0;
|
|
20062
20550
|
var treeSchema = new WeakMap();
|
|
20063
20551
|
var nodeMap = new Map();
|
|
20064
20552
|
var childMap = new WeakMap();
|
|
@@ -20082,111 +20570,59 @@ var use_tree_init_this = undefined;
|
|
|
20082
20570
|
if (target[attrName] === attrValue) {
|
|
20083
20571
|
return;
|
|
20084
20572
|
}
|
|
20085
|
-
|
|
20573
|
+
if (attrName === NODE_ATTRIBUTES.IS_OPEN) {
|
|
20574
|
+
var prevOpen = !!target[attrName];
|
|
20575
|
+
var nextOpen = !!attrValue;
|
|
20576
|
+
if (prevOpen !== nextOpen) {
|
|
20577
|
+
openCount += nextOpen ? 1 : -1;
|
|
20578
|
+
}
|
|
20579
|
+
}
|
|
20580
|
+
target[attrName] = attrValue;
|
|
20086
20581
|
loopUpdateNodeAttr(target[NODE_ATTRIBUTES.PARENT], attrName, attrValue, callFn);
|
|
20087
20582
|
}
|
|
20088
20583
|
}
|
|
20089
20584
|
}
|
|
20090
20585
|
}
|
|
20586
|
+
var nodeKey = props.nodeKey;
|
|
20587
|
+
var expandAll = !!props.expandAll;
|
|
20588
|
+
var autoOpenParentNode = !!props.autoOpenParentNode;
|
|
20589
|
+
var selectable = !!props.selectable;
|
|
20590
|
+
var hasCheckedProp = Array.isArray(props.checked) && props.checked.length > 0;
|
|
20591
|
+
var hasSelectedProp = props.selected !== undefined && props.selected !== null;
|
|
20592
|
+
var checkboxEnabled = props.showCheckbox !== false && !!props.showCheckbox;
|
|
20593
|
+
var useCache = !!cachedSchema;
|
|
20091
20594
|
function getUid(item) {
|
|
20092
|
-
|
|
20093
|
-
|
|
20094
|
-
|
|
20595
|
+
if (typeof nodeKey === 'string') {
|
|
20596
|
+
var keyVal = item[nodeKey];
|
|
20597
|
+
if (keyVal !== undefined && keyVal !== null && keyVal !== '') {
|
|
20598
|
+
return keyVal;
|
|
20599
|
+
}
|
|
20095
20600
|
}
|
|
20096
|
-
return
|
|
20601
|
+
return item[NODE_ATTRIBUTES.UUID] || esm_browser_v4();
|
|
20097
20602
|
}
|
|
20098
|
-
|
|
20099
|
-
|
|
20100
|
-
* 如果传入数据没有设置相关属性值
|
|
20101
|
-
* 这里会自动生成
|
|
20102
|
-
*/
|
|
20103
|
-
var cachedDefaultVal = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, NODE_ATTRIBUTES.IS_OPEN, function () {
|
|
20104
|
-
return !!props.expandAll;
|
|
20105
|
-
}), NODE_ATTRIBUTES.IS_CHECKED, function () {
|
|
20106
|
-
return false;
|
|
20107
|
-
}), NODE_ATTRIBUTES.IS_MATCH, function () {
|
|
20108
|
-
return false;
|
|
20109
|
-
}), NODE_ATTRIBUTES.IS_SELECTED, function (node, uuid) {
|
|
20110
|
-
return _resolvePropIsMatched(node, props.selected, uuid);
|
|
20111
|
-
}), NODE_ATTRIBUTES.IS_CACHED, function () {
|
|
20112
|
-
return false;
|
|
20113
|
-
}), NODE_ATTRIBUTES.IS_ASYNC, function () {
|
|
20114
|
-
return null;
|
|
20115
|
-
}), NODE_ATTRIBUTES.IS_LOADING, function () {
|
|
20116
|
-
return false;
|
|
20117
|
-
});
|
|
20118
|
-
/**
|
|
20119
|
-
* 根据Props设置和已缓存数据解析当前节点对应属性值
|
|
20120
|
-
* @param uuid 当前节点id
|
|
20121
|
-
* @param node 当前节点
|
|
20122
|
-
* @param cachedAttr 当前节点属性名称
|
|
20123
|
-
* @param defVal 默认值
|
|
20124
|
-
*/
|
|
20125
|
-
function getCachedTreeNodeAttr(uuid, node, cachedAttr) {
|
|
20126
|
-
var _cachedSchema$get;
|
|
20127
|
-
var defVal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
|
|
20128
|
-
var defaultValue = defVal;
|
|
20129
|
-
// 设置默认值
|
|
20130
|
-
if (defVal === undefined && typeof cachedDefaultVal[cachedAttr] === 'function') {
|
|
20131
|
-
defaultValue = cachedDefaultVal[cachedAttr](node, uuid);
|
|
20132
|
-
}
|
|
20133
|
-
// 通过映射配置,检查当前数据是否设置相关属性值
|
|
20134
|
-
// 如果传入数据设置了相关属性值,则返回传入数据设置值
|
|
20135
|
-
var sourceAttr = NODE_SOURCE_ATTRS[cachedAttr];
|
|
20136
|
-
if (Object.prototype.hasOwnProperty.call(node, sourceAttr)) {
|
|
20603
|
+
function resolveAttr(node, sourceAttr, cachedAttr, defaultValue) {
|
|
20604
|
+
if (sourceAttr in node) {
|
|
20137
20605
|
return node[sourceAttr];
|
|
20138
20606
|
}
|
|
20139
|
-
|
|
20140
|
-
|
|
20141
|
-
|
|
20142
|
-
|
|
20143
|
-
|
|
20144
|
-
|
|
20145
|
-
|
|
20146
|
-
|
|
20147
|
-
if (result === undefined || result === null) {
|
|
20148
|
-
result = defaultValue;
|
|
20149
|
-
}
|
|
20150
|
-
return result;
|
|
20151
|
-
}
|
|
20152
|
-
/**
|
|
20153
|
-
* 当前节点是否是选中状态
|
|
20154
|
-
* @param uuid 当前节点id
|
|
20155
|
-
* @param node 当前节点
|
|
20156
|
-
* @returns
|
|
20157
|
-
*/
|
|
20158
|
-
function isCachedTreeNodeSelected(uuid, node) {
|
|
20159
|
-
if (!props.selectable) {
|
|
20160
|
-
return false;
|
|
20161
|
-
}
|
|
20162
|
-
var isMatch = _resolvePropIsMatched(node, props.selected, uuid);
|
|
20163
|
-
return getCachedTreeNodeAttr(uuid, node, NODE_ATTRIBUTES.IS_SELECTED, isMatch);
|
|
20164
|
-
}
|
|
20165
|
-
function isNodeOpend(uuid, item, parent) {
|
|
20166
|
-
var _treeSchema$get;
|
|
20167
|
-
var isItemOpened = getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_OPEN);
|
|
20168
|
-
var isParentOpened = treeSchema.has(parent) ? (_treeSchema$get = treeSchema.get(parent)) === null || _treeSchema$get === void 0 ? void 0 : _treeSchema$get[NODE_ATTRIBUTES.IS_OPEN] : true;
|
|
20169
|
-
return isItemOpened && isParentOpened;
|
|
20170
|
-
}
|
|
20171
|
-
function isCheckedNode(node, uuid, attributes) {
|
|
20172
|
-
var isChecked = showCheckbox(props, {
|
|
20173
|
-
data: node,
|
|
20174
|
-
attributes: attributes
|
|
20175
|
-
});
|
|
20176
|
-
if (!isChecked) {
|
|
20177
|
-
return false;
|
|
20607
|
+
if (useCache) {
|
|
20608
|
+
var cached = cachedSchema.get(node);
|
|
20609
|
+
if (cached) {
|
|
20610
|
+
var cachedVal = cached[cachedAttr];
|
|
20611
|
+
if (cachedVal !== undefined && cachedVal !== null) {
|
|
20612
|
+
return cachedVal;
|
|
20613
|
+
}
|
|
20614
|
+
}
|
|
20178
20615
|
}
|
|
20179
|
-
|
|
20180
|
-
return getCachedTreeNodeAttr(uuid, node, NODE_ATTRIBUTES.IS_CHECKED, isMatch);
|
|
20616
|
+
return defaultValue;
|
|
20181
20617
|
}
|
|
20182
20618
|
function validateIsOpenLoopFn(targetAttr) {
|
|
20183
20619
|
var _targetAttr$NODE_ATTR;
|
|
20184
20620
|
return !((_targetAttr$NODE_ATTR = targetAttr === null || targetAttr === void 0 ? void 0 : targetAttr[NODE_ATTRIBUTES.IS_OPEN]) !== null && _targetAttr$NODE_ATTR !== void 0 ? _targetAttr$NODE_ATTR : false);
|
|
20185
20621
|
}
|
|
20186
20622
|
function loopUpdateCheckedEvent(target, _attrName, _attrValue, node) {
|
|
20187
|
-
target[NODE_ATTRIBUTES.IS_INDETERMINATE] = (node[
|
|
20188
|
-
var _treeSchema$get$NODE_, _treeSchema$
|
|
20189
|
-
return !((_treeSchema$get$NODE_ = (_treeSchema$
|
|
20623
|
+
target[NODE_ATTRIBUTES.IS_INDETERMINATE] = (node[children] || []).some(function (child) {
|
|
20624
|
+
var _treeSchema$get$NODE_, _treeSchema$get;
|
|
20625
|
+
return !((_treeSchema$get$NODE_ = (_treeSchema$get = treeSchema.get(child)) === null || _treeSchema$get === void 0 ? void 0 : _treeSchema$get[NODE_ATTRIBUTES.IS_CHECKED]) !== null && _treeSchema$get$NODE_ !== void 0 ? _treeSchema$get$NODE_ : false);
|
|
20190
20626
|
});
|
|
20191
20627
|
return true;
|
|
20192
20628
|
}
|
|
@@ -20196,69 +20632,85 @@ var use_tree_init_this = undefined;
|
|
|
20196
20632
|
var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
20197
20633
|
var arrLength = array.length;
|
|
20198
20634
|
for (var i = 0; i < arrLength; i++) {
|
|
20635
|
+
var _attributes;
|
|
20199
20636
|
var item = array[i];
|
|
20637
|
+
if (item === null || item === undefined) {
|
|
20638
|
+
continue;
|
|
20639
|
+
}
|
|
20200
20640
|
if (Array.isArray(item)) {
|
|
20201
20641
|
flatten(item, depth, parent, path);
|
|
20642
|
+
continue;
|
|
20643
|
+
}
|
|
20644
|
+
if (_typeof(item) !== 'object') {
|
|
20645
|
+
continue;
|
|
20646
|
+
}
|
|
20647
|
+
// 统一用 raw 作为 WeakMap key,避免 Proxy/raw 不一致导致 schema 全量失效
|
|
20648
|
+
var rawItem = __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(item);
|
|
20649
|
+
var currentPath = path !== null ? "".concat(path, "-").concat(i) : "".concat(i);
|
|
20650
|
+
var uuid = "".concat(getUid(rawItem));
|
|
20651
|
+
var childList = rawItem[children];
|
|
20652
|
+
var hasChildren = !!(childList && childList.length);
|
|
20653
|
+
if (!nodeKey) {
|
|
20654
|
+
rawItem[NODE_ATTRIBUTES.UUID] = uuid;
|
|
20655
|
+
}
|
|
20656
|
+
var isOpened = !!resolveAttr(rawItem, SOURCE_IS_OPEN, NODE_ATTRIBUTES.IS_OPEN, expandAll);
|
|
20657
|
+
if (autoOpenParentNode) {
|
|
20658
|
+
if (isOpened && parent) {
|
|
20659
|
+
loopUpdateNodeAttr(parent, NODE_ATTRIBUTES.IS_OPEN, true, validateIsOpenLoopFn);
|
|
20660
|
+
}
|
|
20661
|
+
} else if (parent) {
|
|
20662
|
+
var _treeSchema$get2;
|
|
20663
|
+
var parentOpened = !!((_treeSchema$get2 = treeSchema.get(parent)) !== null && _treeSchema$get2 !== void 0 && _treeSchema$get2[NODE_ATTRIBUTES.IS_OPEN]);
|
|
20664
|
+
isOpened = isOpened && parentOpened;
|
|
20665
|
+
}
|
|
20666
|
+
var isSelected = false;
|
|
20667
|
+
if (selectable) {
|
|
20668
|
+
var selectedDefault = hasSelectedProp ? _resolvePropIsMatched(rawItem, props.selected, uuid) : false;
|
|
20669
|
+
isSelected = !!resolveAttr(rawItem, SOURCE_IS_SELECTED, NODE_ATTRIBUTES.IS_SELECTED, selectedDefault);
|
|
20670
|
+
}
|
|
20671
|
+
var isChecked = false;
|
|
20672
|
+
if (checkboxEnabled) {
|
|
20673
|
+
var canCheck = showCheckbox(props, {
|
|
20674
|
+
data: rawItem
|
|
20675
|
+
});
|
|
20676
|
+
if (canCheck) {
|
|
20677
|
+
var checkedDefault = hasCheckedProp ? _resolvePropIsMatched(rawItem, props.checked, uuid) : false;
|
|
20678
|
+
isChecked = !!resolveAttr(rawItem, SOURCE_IS_CHECKED, NODE_ATTRIBUTES.IS_CHECKED, checkedDefault);
|
|
20679
|
+
}
|
|
20680
|
+
}
|
|
20681
|
+
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, isSelected), NODE_ATTRIBUTES.IS_MATCH, !!resolveAttr(rawItem, SOURCE_IS_MATCH, NODE_ATTRIBUTES.IS_MATCH, false)), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_attributes, NODE_ATTRIBUTES.IS_OPEN, isOpened), NODE_ATTRIBUTES.IS_CHECKED, isChecked), NODE_ATTRIBUTES.IS_CACHED, !!resolveAttr(rawItem, SOURCE_IS_CACHED, NODE_ATTRIBUTES.IS_CACHED, false)), NODE_ATTRIBUTES.IS_ASYNC, resolveAttr(rawItem, SOURCE_IS_ASYNC, NODE_ATTRIBUTES.IS_ASYNC, null)), NODE_ATTRIBUTES.IS_LOADING, !!resolveAttr(rawItem, SOURCE_IS_LOADING, NODE_ATTRIBUTES.IS_LOADING, false)), NODE_ATTRIBUTES.IS_INDETERMINATE, false));
|
|
20682
|
+
if (isChecked) {
|
|
20683
|
+
checkedList.push(rawItem);
|
|
20684
|
+
}
|
|
20685
|
+
if (isOpened) {
|
|
20686
|
+
openCount += 1;
|
|
20687
|
+
}
|
|
20688
|
+
treeSchema.set(rawItem, attributes);
|
|
20689
|
+
nodeMap.set(uuid, rawItem);
|
|
20690
|
+
if (parent === null) {
|
|
20691
|
+
rootNodes.push(rawItem);
|
|
20202
20692
|
} else {
|
|
20203
|
-
|
|
20204
|
-
|
|
20205
|
-
|
|
20206
|
-
|
|
20207
|
-
var hasChildren = !!(item[children] || []).length;
|
|
20208
|
-
if (!props.nodeKey) {
|
|
20209
|
-
item[NODE_ATTRIBUTES.UUID] = uuid;
|
|
20210
|
-
}
|
|
20211
|
-
if (nodeMap.has(uuid)) {
|
|
20212
|
-
console.warn("[bk-tree] duplicate node key \"".concat(uuid, "\" found, please check nodeKey."));
|
|
20213
|
-
}
|
|
20214
|
-
/**
|
|
20215
|
-
* 当前节点设置是否为展开状态
|
|
20216
|
-
*/
|
|
20217
|
-
var isOpened = getCachedTreeNodeAttr(uuid, item, NODE_ATTRIBUTES.IS_OPEN);
|
|
20218
|
-
/**
|
|
20219
|
-
* 如果初始化发现当前属性为展开或者选中 & 设置了 autoOpenParentNode = true
|
|
20220
|
-
* 此时需要设置当前节点的所有父级节点都为展开状态
|
|
20221
|
-
*/
|
|
20222
|
-
if (props.autoOpenParentNode) {
|
|
20223
|
-
isOpened && loopUpdateNodeAttr(parent, NODE_ATTRIBUTES.IS_OPEN, true, validateIsOpenLoopFn);
|
|
20224
|
-
} else {
|
|
20225
|
-
/**
|
|
20226
|
-
* 如果没有设置自动展开所有父级
|
|
20227
|
-
* 此时需要判定当前节点是否可以展开状态需要同时判定父级是否展开
|
|
20228
|
-
* 如果父级不是展开状态,此节点不能展示,应该也是关闭状态,只有当父级展开时,此节点才为展开状态
|
|
20229
|
-
*/
|
|
20230
|
-
isOpened = isNodeOpend(uuid, item, parent);
|
|
20231
|
-
}
|
|
20232
|
-
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));
|
|
20233
|
-
attributes[NODE_ATTRIBUTES.IS_CHECKED] = isCheckedNode(item, uuid, attributes);
|
|
20234
|
-
if (attributes[NODE_ATTRIBUTES.IS_CHECKED]) {
|
|
20235
|
-
checkedList.push(item);
|
|
20236
|
-
}
|
|
20237
|
-
treeSchema.set(item, attributes);
|
|
20238
|
-
nodeMap.set(uuid, item);
|
|
20239
|
-
if (parent === null) {
|
|
20240
|
-
rootNodes.push(item);
|
|
20241
|
-
} else {
|
|
20242
|
-
var siblings = childMap.get(parent) || [];
|
|
20243
|
-
siblings.push(item);
|
|
20244
|
-
childMap.set(parent, siblings);
|
|
20245
|
-
}
|
|
20246
|
-
outputData.push(item);
|
|
20247
|
-
order += 1;
|
|
20248
|
-
if (Object.prototype.hasOwnProperty.call(item, children)) {
|
|
20249
|
-
flatten(item[children] || [], depth + 1, item, currentPath);
|
|
20250
|
-
}
|
|
20693
|
+
var siblings = childMap.get(parent);
|
|
20694
|
+
if (!siblings) {
|
|
20695
|
+
siblings = [];
|
|
20696
|
+
childMap.set(parent, siblings);
|
|
20251
20697
|
}
|
|
20698
|
+
siblings.push(rawItem);
|
|
20699
|
+
}
|
|
20700
|
+
outputData.push(rawItem);
|
|
20701
|
+
order += 1;
|
|
20702
|
+
if (hasChildren) {
|
|
20703
|
+
flatten(childList, depth + 1, rawItem, currentPath);
|
|
20252
20704
|
}
|
|
20253
20705
|
}
|
|
20254
20706
|
}
|
|
20255
20707
|
flatten(treeData !== null && treeData !== void 0 ? treeData : data);
|
|
20256
|
-
if (
|
|
20257
|
-
checkedList
|
|
20708
|
+
if (checkboxEnabled && props.checkStrictly) {
|
|
20709
|
+
checkedList.forEach(function (value) {
|
|
20258
20710
|
loopUpdateNodeAttr(value, NODE_ATTRIBUTES.IS_CHECKED, true, loopUpdateCheckedEvent);
|
|
20259
20711
|
});
|
|
20260
20712
|
}
|
|
20261
|
-
return [outputData, treeSchema, nodeMap, childMap, rootNodes];
|
|
20713
|
+
return [outputData, treeSchema, nodeMap, childMap, rootNodes, openCount, checkedList];
|
|
20262
20714
|
};
|
|
20263
20715
|
var formatData = getFlatdata();
|
|
20264
20716
|
var nextLoopEvents = new Map();
|
|
@@ -20266,14 +20718,17 @@ var use_tree_init_this = undefined;
|
|
|
20266
20718
|
var afterSelectWatch = [];
|
|
20267
20719
|
/**
|
|
20268
20720
|
* 扁平化数据
|
|
20269
|
-
*
|
|
20721
|
+
* shallowReactive:只跟踪 data/rootNodes 等字段替换,避免百万节点被深代理
|
|
20722
|
+
* schema/nodeMap/childMap 使用 markRaw,避免 WeakMap get/set 进入依赖收集
|
|
20270
20723
|
*/
|
|
20271
|
-
var flatData =
|
|
20724
|
+
var flatData = __WEBPACK_EXTERNAL_MODULE_vue_shallowReactive__({
|
|
20272
20725
|
data: formatData[0],
|
|
20273
|
-
schema: formatData[1],
|
|
20274
|
-
nodeMap: formatData[2],
|
|
20275
|
-
childMap: formatData[3],
|
|
20726
|
+
schema: toRawStore(formatData[1]),
|
|
20727
|
+
nodeMap: toRawStore(formatData[2]),
|
|
20728
|
+
childMap: toRawStore(formatData[3]),
|
|
20276
20729
|
rootNodes: formatData[4],
|
|
20730
|
+
openCount: formatData[5] || 0,
|
|
20731
|
+
checkedList: formatData[6] || [],
|
|
20277
20732
|
levelLineSchema: {}
|
|
20278
20733
|
});
|
|
20279
20734
|
var _useNodeAsync = use_node_async(props, flatData),
|
|
@@ -20344,30 +20799,39 @@ var use_tree_init_this = undefined;
|
|
|
20344
20799
|
/**
|
|
20345
20800
|
* 监听组件配置Data改变
|
|
20346
20801
|
*/
|
|
20802
|
+
var afterRebuildCallbacks = [];
|
|
20803
|
+
var onAfterRebuild = function onAfterRebuild(callback) {
|
|
20804
|
+
afterRebuildCallbacks.push(callback);
|
|
20805
|
+
};
|
|
20347
20806
|
var rebuildData = function rebuildData(treeData) {
|
|
20348
20807
|
var cachedSchema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : flatData.schema;
|
|
20349
|
-
var
|
|
20350
|
-
|
|
20351
|
-
flatData.schema =
|
|
20352
|
-
flatData.nodeMap =
|
|
20353
|
-
flatData.childMap =
|
|
20354
|
-
flatData.rootNodes =
|
|
20808
|
+
var next = getFlatdata(treeData, cachedSchema);
|
|
20809
|
+
// 先替换 schema/maps,再替换 data,避免 data watcher 读到旧 schema
|
|
20810
|
+
flatData.schema = toRawStore(next[1]);
|
|
20811
|
+
flatData.nodeMap = toRawStore(next[2]);
|
|
20812
|
+
flatData.childMap = toRawStore(next[3]);
|
|
20813
|
+
flatData.rootNodes = next[4];
|
|
20814
|
+
flatData.openCount = next[5] || 0;
|
|
20815
|
+
flatData.checkedList = next[6] || [];
|
|
20816
|
+
flatData.data = next[0];
|
|
20817
|
+
afterRebuildCallbacks.forEach(function (callback) {
|
|
20818
|
+
return callback();
|
|
20819
|
+
});
|
|
20355
20820
|
};
|
|
20821
|
+
// watchDataDeep=false(默认):仅监听 data 引用变化,大数据量友好
|
|
20822
|
+
// watchDataDeep=true:深度监听原地变更;百万节点下会明显变慢,仅建议小数据使用
|
|
20823
|
+
// 组件内部拖拽/异步仍走 onTreeDataChange → rebuildData
|
|
20356
20824
|
__WEBPACK_EXTERNAL_MODULE_vue_watch__(function () {
|
|
20357
|
-
return
|
|
20825
|
+
return props.data;
|
|
20358
20826
|
}, function (newData) {
|
|
20359
20827
|
var _props$async, _props$async2;
|
|
20360
|
-
rebuildData(newData
|
|
20828
|
+
rebuildData(newData, flatData.schema);
|
|
20361
20829
|
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') {
|
|
20362
20830
|
deepAutoOpen();
|
|
20363
20831
|
}
|
|
20364
|
-
/**
|
|
20365
|
-
* 执行缓存下来的周期函数
|
|
20366
|
-
* 保证data改变之后执行相关操作
|
|
20367
|
-
*/
|
|
20368
20832
|
executeNextEvent();
|
|
20369
20833
|
}, {
|
|
20370
|
-
deep:
|
|
20834
|
+
deep: !!props.watchDataDeep
|
|
20371
20835
|
});
|
|
20372
20836
|
if (props.selectable) {
|
|
20373
20837
|
__WEBPACK_EXTERNAL_MODULE_vue_onMounted__(function () {
|
|
@@ -20406,12 +20870,351 @@ var use_tree_init_this = undefined;
|
|
|
20406
20870
|
afterDataUpdate: afterDataUpdate,
|
|
20407
20871
|
registerNextLoop: registerNextLoop,
|
|
20408
20872
|
rebuildData: rebuildData,
|
|
20873
|
+
onAfterRebuild: onAfterRebuild,
|
|
20409
20874
|
onSelected: onSelected
|
|
20410
20875
|
};
|
|
20411
20876
|
});
|
|
20412
|
-
;// ../../packages/tree/src/
|
|
20877
|
+
;// ../../packages/tree/src/use-visible-nodes.ts
|
|
20878
|
+
/*
|
|
20879
|
+
* Tencent is pleased to support the open source community by making
|
|
20880
|
+
* 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
|
|
20881
|
+
*
|
|
20882
|
+
* Copyright (C) 2025 Tencent. All rights reserved.
|
|
20883
|
+
*
|
|
20884
|
+
* 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) is licensed under the MIT License.
|
|
20885
|
+
*
|
|
20886
|
+
* License for 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition):
|
|
20887
|
+
*
|
|
20888
|
+
* ---------------------------------------------------
|
|
20889
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
20890
|
+
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation
|
|
20891
|
+
* the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
|
|
20892
|
+
* to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
20893
|
+
*
|
|
20894
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of
|
|
20895
|
+
* the Software.
|
|
20896
|
+
*
|
|
20897
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
20898
|
+
* THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20899
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
20900
|
+
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
20901
|
+
* IN THE SOFTWARE.
|
|
20902
|
+
*/
|
|
20413
20903
|
|
|
20414
20904
|
|
|
20905
|
+
/** 单次批量节点刷新超过该阈值时回退全局刷新,避免响应式写爆 */
|
|
20906
|
+
var NODE_UI_REFRESH_GLOBAL_THRESHOLD = 50;
|
|
20907
|
+
/**
|
|
20908
|
+
* 增量维护树的可见节点列表,避免每次展开都对全量 flatData 做 O(N) filter。
|
|
20909
|
+
* 展开/收起复杂度接近 O(受影响的可见子节点数),禁止回退到全表扫描。
|
|
20910
|
+
*
|
|
20911
|
+
* UI 刷新支持按节点粒度 bump,避免自定义插槽时全量可见行重跑。
|
|
20912
|
+
*/
|
|
20913
|
+
/* harmony default export */ const use_visible_nodes = (function (flatData, helpers) {
|
|
20914
|
+
var checkNodeIsOpen = helpers.checkNodeIsOpen,
|
|
20915
|
+
getChildNodes = helpers.getChildNodes,
|
|
20916
|
+
getNodeAttr = helpers.getNodeAttr,
|
|
20917
|
+
getNodeId = helpers.getNodeId,
|
|
20918
|
+
getNodeOrder = helpers.getNodeOrder,
|
|
20919
|
+
getSchemaVal = helpers.getSchemaVal,
|
|
20920
|
+
isNodeOpened = helpers.isNodeOpened;
|
|
20921
|
+
var visibleNodes = __WEBPACK_EXTERNAL_MODULE_vue_shallowRef__([]);
|
|
20922
|
+
/** 全量 UI 版本:级联勾选等大批量变更时使用 */
|
|
20923
|
+
var uiVersion = __WEBPACK_EXTERNAL_MODULE_vue_shallowRef__(0);
|
|
20924
|
+
/** 任意 UI 刷新的唤醒信号:驱动 Tree 重渲染,具体行是否更新由 nodeUiVersions 决定 */
|
|
20925
|
+
var uiTick = __WEBPACK_EXTERNAL_MODULE_vue_shallowRef__(0);
|
|
20926
|
+
/** 按节点 UI 版本:选中/展开图标等局部变更时只更新对应行 */
|
|
20927
|
+
var nodeUiVersions = __WEBPACK_EXTERNAL_MODULE_vue_reactive__({});
|
|
20928
|
+
var uiFlushScheduled = false;
|
|
20929
|
+
var pendingGlobal = false;
|
|
20930
|
+
var pendingNodeIds = new Set();
|
|
20931
|
+
var emitListChange = function emitListChange(next) {
|
|
20932
|
+
visibleNodes.value = next;
|
|
20933
|
+
};
|
|
20934
|
+
var resolveNodeId = function resolveNodeId(node) {
|
|
20935
|
+
var id = getNodeId(node);
|
|
20936
|
+
return id === undefined || id === null ? '' : "".concat(id);
|
|
20937
|
+
};
|
|
20938
|
+
var flushUiRefresh = function flushUiRefresh() {
|
|
20939
|
+
uiFlushScheduled = false;
|
|
20940
|
+
var useGlobal = pendingGlobal || pendingNodeIds.size > NODE_UI_REFRESH_GLOBAL_THRESHOLD;
|
|
20941
|
+
if (useGlobal) {
|
|
20942
|
+
uiVersion.value += 1;
|
|
20943
|
+
} else {
|
|
20944
|
+
pendingNodeIds.forEach(function (id) {
|
|
20945
|
+
if (!id) {
|
|
20946
|
+
return;
|
|
20947
|
+
}
|
|
20948
|
+
nodeUiVersions[id] = (nodeUiVersions[id] || 0) + 1;
|
|
20949
|
+
});
|
|
20950
|
+
}
|
|
20951
|
+
pendingGlobal = false;
|
|
20952
|
+
pendingNodeIds.clear();
|
|
20953
|
+
// 唤醒 Tree → VirtualRender 插槽重跑;未 bump 的 TreeNodeRow 会因 props 不变而跳过
|
|
20954
|
+
uiTick.value += 1;
|
|
20955
|
+
};
|
|
20956
|
+
/**
|
|
20957
|
+
* 调度 UI 刷新:
|
|
20958
|
+
* - 传入 node:仅刷新该行(自定义插槽场景下避免全表 slot 重跑)
|
|
20959
|
+
* - 不传 node:全局刷新
|
|
20960
|
+
*/
|
|
20961
|
+
var scheduleUiRefresh = function scheduleUiRefresh(node) {
|
|
20962
|
+
if (node) {
|
|
20963
|
+
var id = resolveNodeId(node);
|
|
20964
|
+
if (id) {
|
|
20965
|
+
pendingNodeIds.add(id);
|
|
20966
|
+
} else {
|
|
20967
|
+
pendingGlobal = true;
|
|
20968
|
+
}
|
|
20969
|
+
} else {
|
|
20970
|
+
pendingGlobal = true;
|
|
20971
|
+
}
|
|
20972
|
+
if (uiFlushScheduled) {
|
|
20973
|
+
return;
|
|
20974
|
+
}
|
|
20975
|
+
uiFlushScheduled = true;
|
|
20976
|
+
__WEBPACK_EXTERNAL_MODULE_vue_nextTick__(flushUiRefresh);
|
|
20977
|
+
};
|
|
20978
|
+
var getNodeUiVersion = function getNodeUiVersion(node) {
|
|
20979
|
+
var id = resolveNodeId(node);
|
|
20980
|
+
return id ? nodeUiVersions[id] || 0 : 0;
|
|
20981
|
+
};
|
|
20982
|
+
var rebuildVisibleNodes = function rebuildVisibleNodes(filterFn) {
|
|
20983
|
+
var _flatData$rootNodes;
|
|
20984
|
+
if (!filterFn && (flatData.openCount || 0) <= 0 && (_flatData$rootNodes = flatData.rootNodes) !== null && _flatData$rootNodes !== void 0 && _flatData$rootNodes.length) {
|
|
20985
|
+
emitListChange(flatData.rootNodes.slice());
|
|
20986
|
+
return;
|
|
20987
|
+
}
|
|
20988
|
+
var predicate = filterFn !== null && filterFn !== void 0 ? filterFn : checkNodeIsOpen;
|
|
20989
|
+
var next = [];
|
|
20990
|
+
var data = flatData.data;
|
|
20991
|
+
for (var i = 0, len = data.length; i < len; i++) {
|
|
20992
|
+
var item = data[i];
|
|
20993
|
+
if (predicate(item)) {
|
|
20994
|
+
next.push(item);
|
|
20995
|
+
}
|
|
20996
|
+
}
|
|
20997
|
+
emitListChange(next);
|
|
20998
|
+
};
|
|
20999
|
+
/** 直接设置可见列表(搜索态按候选集过滤后使用,避免再扫全表) */
|
|
21000
|
+
var setVisibleNodes = function setVisibleNodes(nodes) {
|
|
21001
|
+
emitListChange(nodes.slice());
|
|
21002
|
+
};
|
|
21003
|
+
var _collectOpenedBranch = function collectOpenedBranch(node, result) {
|
|
21004
|
+
var children = getChildNodes(node);
|
|
21005
|
+
for (var i = 0, len = children.length; i < len; i++) {
|
|
21006
|
+
var child = children[i];
|
|
21007
|
+
result.push(child);
|
|
21008
|
+
if (isNodeOpened(child)) {
|
|
21009
|
+
_collectOpenedBranch(child, result);
|
|
21010
|
+
}
|
|
21011
|
+
}
|
|
21012
|
+
};
|
|
21013
|
+
/** 在 flatData(DFS 序)中按 ORDER 二分定位 */
|
|
21014
|
+
var findFlatIndexByOrder = function findFlatIndexByOrder(targetOrder) {
|
|
21015
|
+
var data = flatData.data;
|
|
21016
|
+
var low = 0;
|
|
21017
|
+
var high = data.length - 1;
|
|
21018
|
+
while (low <= high) {
|
|
21019
|
+
var mid = low + high >> 1;
|
|
21020
|
+
var midOrder = Number(getNodeOrder(data[mid]));
|
|
21021
|
+
if (midOrder === targetOrder) {
|
|
21022
|
+
return mid;
|
|
21023
|
+
}
|
|
21024
|
+
if (midOrder < targetOrder) {
|
|
21025
|
+
low = mid + 1;
|
|
21026
|
+
} else {
|
|
21027
|
+
high = mid - 1;
|
|
21028
|
+
}
|
|
21029
|
+
}
|
|
21030
|
+
return -1;
|
|
21031
|
+
};
|
|
21032
|
+
/**
|
|
21033
|
+
* 收起时清除 flat 连续子孙区间内的 IS_OPEN(O(子树))。
|
|
21034
|
+
* 避免「可见区外仍保持 IS_OPEN」导致再次展开时 collectOpenedBranch 一次插入巨量子树。
|
|
21035
|
+
*/
|
|
21036
|
+
var resetFlatDescendantOpenState = function resetFlatDescendantOpenState(node) {
|
|
21037
|
+
var _getNodeAttr;
|
|
21038
|
+
var nodeOrder = Number(getNodeOrder(node));
|
|
21039
|
+
var nodeDepth = Number((_getNodeAttr = getNodeAttr(node, NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr !== void 0 ? _getNodeAttr : 0);
|
|
21040
|
+
if (Number.isNaN(nodeOrder)) {
|
|
21041
|
+
return;
|
|
21042
|
+
}
|
|
21043
|
+
var start = findFlatIndexByOrder(nodeOrder) + 1;
|
|
21044
|
+
if (start <= 0) {
|
|
21045
|
+
return;
|
|
21046
|
+
}
|
|
21047
|
+
var data = flatData.data;
|
|
21048
|
+
for (var i = start, len = data.length; i < len; i++) {
|
|
21049
|
+
var _getNodeAttr2;
|
|
21050
|
+
var depth = Number((_getNodeAttr2 = getNodeAttr(data[i], NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr2 !== void 0 ? _getNodeAttr2 : -1);
|
|
21051
|
+
if (depth <= nodeDepth) {
|
|
21052
|
+
break;
|
|
21053
|
+
}
|
|
21054
|
+
var schema = getSchemaVal(data[i]);
|
|
21055
|
+
if (!(schema !== null && schema !== void 0 && schema[NODE_ATTRIBUTES.IS_OPEN])) {
|
|
21056
|
+
continue;
|
|
21057
|
+
}
|
|
21058
|
+
schema[NODE_ATTRIBUTES.IS_OPEN] = false;
|
|
21059
|
+
if ((flatData.openCount || 0) > 0) {
|
|
21060
|
+
flatData.openCount -= 1;
|
|
21061
|
+
}
|
|
21062
|
+
}
|
|
21063
|
+
};
|
|
21064
|
+
/** 仅在可见列表内线性查找,O(V),禁止回退扫 flat 全表 */
|
|
21065
|
+
var findVisibleIndexLinear = function findVisibleIndexLinear(node) {
|
|
21066
|
+
var list = visibleNodes.value;
|
|
21067
|
+
var rawNode = __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(node);
|
|
21068
|
+
for (var i = 0, len = list.length; i < len; i++) {
|
|
21069
|
+
var current = list[i];
|
|
21070
|
+
if (current === node || current === rawNode || __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(current) === rawNode) {
|
|
21071
|
+
return i;
|
|
21072
|
+
}
|
|
21073
|
+
}
|
|
21074
|
+
return -1;
|
|
21075
|
+
};
|
|
21076
|
+
/**
|
|
21077
|
+
* 按唯一 ORDER 二分定位,兼容 Proxy/raw 引用不一致。
|
|
21078
|
+
* 找不到时最多回退可见列表线性查找,不得 O(N) rebuild。
|
|
21079
|
+
*/
|
|
21080
|
+
var findVisibleIndex = function findVisibleIndex(node) {
|
|
21081
|
+
var _getNodeOrder;
|
|
21082
|
+
var list = visibleNodes.value;
|
|
21083
|
+
if (!list.length) {
|
|
21084
|
+
return -1;
|
|
21085
|
+
}
|
|
21086
|
+
var rawNode = __WEBPACK_EXTERNAL_MODULE_vue_toRaw__(node);
|
|
21087
|
+
var targetOrder = (_getNodeOrder = getNodeOrder(rawNode)) !== null && _getNodeOrder !== void 0 ? _getNodeOrder : getNodeOrder(node);
|
|
21088
|
+
if (targetOrder === undefined || targetOrder === null || Number.isNaN(Number(targetOrder))) {
|
|
21089
|
+
return findVisibleIndexLinear(node);
|
|
21090
|
+
}
|
|
21091
|
+
var low = 0;
|
|
21092
|
+
var high = list.length - 1;
|
|
21093
|
+
while (low <= high) {
|
|
21094
|
+
var mid = low + high >> 1;
|
|
21095
|
+
var midOrder = Number(getNodeOrder(list[mid]));
|
|
21096
|
+
if (midOrder === Number(targetOrder)) {
|
|
21097
|
+
return mid;
|
|
21098
|
+
}
|
|
21099
|
+
if (midOrder < Number(targetOrder)) {
|
|
21100
|
+
low = mid + 1;
|
|
21101
|
+
} else {
|
|
21102
|
+
high = mid - 1;
|
|
21103
|
+
}
|
|
21104
|
+
}
|
|
21105
|
+
return findVisibleIndexLinear(node);
|
|
21106
|
+
};
|
|
21107
|
+
var closeOpenedInRange = function closeOpenedInRange(list, start, end) {
|
|
21108
|
+
for (var i = start; i < end; i++) {
|
|
21109
|
+
var schema = getSchemaVal(list[i]);
|
|
21110
|
+
if (!(schema !== null && schema !== void 0 && schema[NODE_ATTRIBUTES.IS_OPEN])) {
|
|
21111
|
+
continue;
|
|
21112
|
+
}
|
|
21113
|
+
schema[NODE_ATTRIBUTES.IS_OPEN] = false;
|
|
21114
|
+
if ((flatData.openCount || 0) > 0) {
|
|
21115
|
+
flatData.openCount -= 1;
|
|
21116
|
+
}
|
|
21117
|
+
}
|
|
21118
|
+
};
|
|
21119
|
+
/**
|
|
21120
|
+
* 展开节点:默认只插入直接子节点。
|
|
21121
|
+
* 若直接子节点自身已展开,再按需带上其已展开子树;
|
|
21122
|
+
* 配合 collapse 时清除 flat 子孙 IS_OPEN,避免一次插入数十万节点。
|
|
21123
|
+
*/
|
|
21124
|
+
var expandVisibleNode = function expandVisibleNode(node) {
|
|
21125
|
+
var _getNodeAttr3;
|
|
21126
|
+
var index = findVisibleIndex(node);
|
|
21127
|
+
if (index < 0) {
|
|
21128
|
+
scheduleUiRefresh(node);
|
|
21129
|
+
return;
|
|
21130
|
+
}
|
|
21131
|
+
var list = visibleNodes.value;
|
|
21132
|
+
var nodeDepth = Number((_getNodeAttr3 = getNodeAttr(node, NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr3 !== void 0 ? _getNodeAttr3 : 0);
|
|
21133
|
+
var next = list[index + 1];
|
|
21134
|
+
if (next) {
|
|
21135
|
+
var _getNodeAttr4;
|
|
21136
|
+
var nextDepth = Number((_getNodeAttr4 = getNodeAttr(next, NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr4 !== void 0 ? _getNodeAttr4 : -1);
|
|
21137
|
+
if (nextDepth > nodeDepth) {
|
|
21138
|
+
scheduleUiRefresh(node);
|
|
21139
|
+
return;
|
|
21140
|
+
}
|
|
21141
|
+
}
|
|
21142
|
+
var children = getChildNodes(node);
|
|
21143
|
+
if (!children.length) {
|
|
21144
|
+
scheduleUiRefresh(node);
|
|
21145
|
+
return;
|
|
21146
|
+
}
|
|
21147
|
+
// 只展开一层:已打开的子节点再带上其子树(收起时已清子孙 IS_OPEN,通常不会很大)
|
|
21148
|
+
var insertNodes = [];
|
|
21149
|
+
for (var i = 0, len = children.length; i < len; i++) {
|
|
21150
|
+
var child = children[i];
|
|
21151
|
+
insertNodes.push(child);
|
|
21152
|
+
if (isNodeOpened(child)) {
|
|
21153
|
+
_collectOpenedBranch(child, insertNodes);
|
|
21154
|
+
}
|
|
21155
|
+
}
|
|
21156
|
+
emitListChange(list.slice(0, index + 1).concat(insertNodes, list.slice(index + 1)));
|
|
21157
|
+
scheduleUiRefresh(node);
|
|
21158
|
+
};
|
|
21159
|
+
/**
|
|
21160
|
+
* 收起节点:
|
|
21161
|
+
* 1) 清除 flat 子孙 IS_OPEN(防止再次展开时拖入巨量子树)
|
|
21162
|
+
* 2) 从可见列表移除该区间
|
|
21163
|
+
*/
|
|
21164
|
+
var collapseVisibleNode = function collapseVisibleNode(node) {
|
|
21165
|
+
var _getNodeAttr5;
|
|
21166
|
+
var index = findVisibleIndex(node);
|
|
21167
|
+
if (index < 0) {
|
|
21168
|
+
// 即使不在可见列表,也清掉 flat 子孙 open,保持状态一致
|
|
21169
|
+
resetFlatDescendantOpenState(node);
|
|
21170
|
+
scheduleUiRefresh(node);
|
|
21171
|
+
return;
|
|
21172
|
+
}
|
|
21173
|
+
var list = visibleNodes.value;
|
|
21174
|
+
var nodeDepth = Number((_getNodeAttr5 = getNodeAttr(node, NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr5 !== void 0 ? _getNodeAttr5 : 0);
|
|
21175
|
+
var end = index + 1;
|
|
21176
|
+
while (end < list.length) {
|
|
21177
|
+
var _getNodeAttr6;
|
|
21178
|
+
var depth = Number((_getNodeAttr6 = getNodeAttr(list[end], NODE_ATTRIBUTES.DEPTH)) !== null && _getNodeAttr6 !== void 0 ? _getNodeAttr6 : -1);
|
|
21179
|
+
if (depth <= nodeDepth) {
|
|
21180
|
+
break;
|
|
21181
|
+
}
|
|
21182
|
+
end += 1;
|
|
21183
|
+
}
|
|
21184
|
+
// 先清 flat 子孙,再改可见列表(closeOpenedInRange 对已关闭节点是 no-op)
|
|
21185
|
+
resetFlatDescendantOpenState(node);
|
|
21186
|
+
if (end === index + 1) {
|
|
21187
|
+
scheduleUiRefresh(node);
|
|
21188
|
+
return;
|
|
21189
|
+
}
|
|
21190
|
+
closeOpenedInRange(list, index + 1, end);
|
|
21191
|
+
emitListChange(list.slice(0, index + 1).concat(list.slice(end)));
|
|
21192
|
+
scheduleUiRefresh(node);
|
|
21193
|
+
};
|
|
21194
|
+
var syncNodeOpenState = function syncNodeOpenState(node, isOpen) {
|
|
21195
|
+
if (isOpen) {
|
|
21196
|
+
expandVisibleNode(node);
|
|
21197
|
+
return;
|
|
21198
|
+
}
|
|
21199
|
+
collapseVisibleNode(node);
|
|
21200
|
+
};
|
|
21201
|
+
rebuildVisibleNodes();
|
|
21202
|
+
return {
|
|
21203
|
+
visibleNodes: visibleNodes,
|
|
21204
|
+
uiVersion: uiVersion,
|
|
21205
|
+
uiTick: uiTick,
|
|
21206
|
+
nodeUiVersions: nodeUiVersions,
|
|
21207
|
+
getNodeUiVersion: getNodeUiVersion,
|
|
21208
|
+
rebuildVisibleNodes: rebuildVisibleNodes,
|
|
21209
|
+
setVisibleNodes: setVisibleNodes,
|
|
21210
|
+
expandVisibleNode: expandVisibleNode,
|
|
21211
|
+
collapseVisibleNode: collapseVisibleNode,
|
|
21212
|
+
syncNodeOpenState: syncNodeOpenState,
|
|
21213
|
+
scheduleUiRefresh: scheduleUiRefresh
|
|
21214
|
+
};
|
|
21215
|
+
});
|
|
21216
|
+
;// ../../packages/tree/src/tree.tsx
|
|
21217
|
+
|
|
20415
21218
|
/*
|
|
20416
21219
|
* Tencent is pleased to support the open source community by making
|
|
20417
21220
|
* 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
|
|
@@ -20453,6 +21256,8 @@ var use_tree_init_this = undefined;
|
|
|
20453
21256
|
|
|
20454
21257
|
|
|
20455
21258
|
|
|
21259
|
+
|
|
21260
|
+
|
|
20456
21261
|
/* harmony default export */ const tree = (__WEBPACK_EXTERNAL_MODULE_vue_defineComponent__({
|
|
20457
21262
|
name: 'Tree',
|
|
20458
21263
|
props: treeProps,
|
|
@@ -20464,7 +21269,8 @@ var use_tree_init_this = undefined;
|
|
|
20464
21269
|
flatData = _useTreeInit.flatData,
|
|
20465
21270
|
onSelected = _useTreeInit.onSelected,
|
|
20466
21271
|
rebuildData = _useTreeInit.rebuildData,
|
|
20467
|
-
registerNextLoop = _useTreeInit.registerNextLoop
|
|
21272
|
+
registerNextLoop = _useTreeInit.registerNextLoop,
|
|
21273
|
+
onAfterRebuild = _useTreeInit.onAfterRebuild;
|
|
20468
21274
|
var _useNodeAttribute = use_node_attribute(flatData, props),
|
|
20469
21275
|
checkNodeIsOpen = _useNodeAttribute.checkNodeIsOpen,
|
|
20470
21276
|
isRootNode = _useNodeAttribute.isRootNode,
|
|
@@ -20477,18 +21283,101 @@ var use_tree_init_this = undefined;
|
|
|
20477
21283
|
getNodeById = _useNodeAttribute.getNodeById,
|
|
20478
21284
|
getParentNode = _useNodeAttribute.getParentNode,
|
|
20479
21285
|
getRootNodeList = _useNodeAttribute.getRootNodeList,
|
|
20480
|
-
getIntersectionResponse = _useNodeAttribute.getIntersectionResponse
|
|
21286
|
+
getIntersectionResponse = _useNodeAttribute.getIntersectionResponse,
|
|
21287
|
+
getChildNodes = _useNodeAttribute.getChildNodes,
|
|
21288
|
+
getNodePath = _useNodeAttribute.getNodePath,
|
|
21289
|
+
getSchemaVal = _useNodeAttribute.getSchemaVal,
|
|
21290
|
+
setNodeAttr = _useNodeAttribute.setNodeAttr;
|
|
20481
21291
|
var _useSearch = use_search(props),
|
|
20482
|
-
|
|
21292
|
+
createMatcher = _useSearch.createMatcher,
|
|
21293
|
+
searchValue = _useSearch.searchValue,
|
|
20483
21294
|
isSearchActive = _useSearch.isSearchActive,
|
|
20484
|
-
refSearch = _useSearch.refSearch,
|
|
20485
|
-
isSearchDisabled = _useSearch.isSearchDisabled,
|
|
20486
21295
|
isTreeUI = _useSearch.isTreeUI,
|
|
20487
21296
|
resultType = _useSearch.resultType,
|
|
20488
21297
|
showChildNodes = _useSearch.showChildNodes;
|
|
20489
|
-
|
|
20490
|
-
var
|
|
21298
|
+
// 不可用 reactive(Set):百万次 add/clear 会反复触发依赖,导致检索「连续刷新」
|
|
21299
|
+
var matchedNodeIds = new Set();
|
|
21300
|
+
var visibleNodeIds = new Set();
|
|
21301
|
+
/** 搜索候选节点(DFS 序),展开/收起时只在此集合上过滤,O(命中集) */
|
|
21302
|
+
var searchCandidateNodes = [];
|
|
20491
21303
|
var searchOriginalOpenState = new Map();
|
|
21304
|
+
var getChildNodesForVisible = function getChildNodesForVisible(node) {
|
|
21305
|
+
var children = getChildNodes(node);
|
|
21306
|
+
if (!isSearchActive.value) {
|
|
21307
|
+
return children;
|
|
21308
|
+
}
|
|
21309
|
+
// 搜索态只插入检索可见集内的子节点,保证展开/收起增量正确
|
|
21310
|
+
return children.filter(function (child) {
|
|
21311
|
+
return visibleNodeIds.has("".concat(getNodeId(child)));
|
|
21312
|
+
});
|
|
21313
|
+
};
|
|
21314
|
+
var _useVisibleNodes = use_visible_nodes(flatData, {
|
|
21315
|
+
checkNodeIsOpen: checkNodeIsOpen,
|
|
21316
|
+
getChildNodes: getChildNodesForVisible,
|
|
21317
|
+
getNodeAttr: getNodeAttr,
|
|
21318
|
+
getNodeId: getNodeId,
|
|
21319
|
+
getNodePath: getNodePath,
|
|
21320
|
+
getNodeOrder: function getNodeOrder(node) {
|
|
21321
|
+
var _getNodeAttr;
|
|
21322
|
+
return (_getNodeAttr = getNodeAttr(node, NODE_ATTRIBUTES.ORDER)) !== null && _getNodeAttr !== void 0 ? _getNodeAttr : 0;
|
|
21323
|
+
},
|
|
21324
|
+
getSchemaVal: getSchemaVal,
|
|
21325
|
+
isNodeOpened: isNodeOpened
|
|
21326
|
+
}),
|
|
21327
|
+
renderData = _useVisibleNodes.visibleNodes,
|
|
21328
|
+
uiVersion = _useVisibleNodes.uiVersion,
|
|
21329
|
+
uiTick = _useVisibleNodes.uiTick,
|
|
21330
|
+
nodeUiVersions = _useVisibleNodes.nodeUiVersions,
|
|
21331
|
+
rebuildVisibleNodes = _useVisibleNodes.rebuildVisibleNodes,
|
|
21332
|
+
setVisibleNodes = _useVisibleNodes.setVisibleNodes,
|
|
21333
|
+
syncNodeOpenStateRaw = _useVisibleNodes.syncNodeOpenState,
|
|
21334
|
+
scheduleUiRefresh = _useVisibleNodes.scheduleUiRefresh;
|
|
21335
|
+
var isSearchTreeNodeVisible = function isSearchTreeNodeVisible(item) {
|
|
21336
|
+
if (!visibleNodeIds.has("".concat(getNodeId(item)))) {
|
|
21337
|
+
return false;
|
|
21338
|
+
}
|
|
21339
|
+
var parent = getParentNode(item);
|
|
21340
|
+
while (parent) {
|
|
21341
|
+
if (!isNodeOpened(parent)) {
|
|
21342
|
+
return false;
|
|
21343
|
+
}
|
|
21344
|
+
parent = getParentNode(parent);
|
|
21345
|
+
}
|
|
21346
|
+
return true;
|
|
21347
|
+
};
|
|
21348
|
+
var rebuildSearchVisibleList = function rebuildSearchVisibleList() {
|
|
21349
|
+
if (!isTreeUI.value) {
|
|
21350
|
+
setVisibleNodes(searchCandidateNodes);
|
|
21351
|
+
return;
|
|
21352
|
+
}
|
|
21353
|
+
var next = [];
|
|
21354
|
+
for (var i = 0, len = searchCandidateNodes.length; i < len; i++) {
|
|
21355
|
+
var item = searchCandidateNodes[i];
|
|
21356
|
+
if (isSearchTreeNodeVisible(item)) {
|
|
21357
|
+
next.push(item);
|
|
21358
|
+
}
|
|
21359
|
+
}
|
|
21360
|
+
setVisibleNodes(next);
|
|
21361
|
+
};
|
|
21362
|
+
/**
|
|
21363
|
+
* 搜索 list 模式:展开不影响可见集。
|
|
21364
|
+
* 其它情况走增量 expand/collapse(搜索 tree 下 getChildNodes 已按候选集过滤)。
|
|
21365
|
+
*/
|
|
21366
|
+
var syncNodeOpenState = function syncNodeOpenState(node, isOpen) {
|
|
21367
|
+
if (isSearchActive.value && !isTreeUI.value) {
|
|
21368
|
+
scheduleUiRefresh(node);
|
|
21369
|
+
return;
|
|
21370
|
+
}
|
|
21371
|
+
syncNodeOpenStateRaw(node, isOpen);
|
|
21372
|
+
};
|
|
21373
|
+
flatData.notifySchemaChange = function (node, attr) {
|
|
21374
|
+
// IS_OPEN 由 syncNodeOpenState 增量维护可见列表,并按节点刷新图标
|
|
21375
|
+
if (attr === NODE_ATTRIBUTES.IS_OPEN) {
|
|
21376
|
+
return;
|
|
21377
|
+
}
|
|
21378
|
+
// 选中/勾选等:只刷新变更节点,避免自定义插槽全量重跑
|
|
21379
|
+
scheduleUiRefresh(node);
|
|
21380
|
+
};
|
|
20492
21381
|
var getRenderNodeId = function getRenderNodeId(node) {
|
|
20493
21382
|
return "".concat(getNodeId(node));
|
|
20494
21383
|
};
|
|
@@ -20497,17 +21386,32 @@ var use_tree_init_this = undefined;
|
|
|
20497
21386
|
if (!searchOriginalOpenState.has(nodeId)) {
|
|
20498
21387
|
searchOriginalOpenState.set(nodeId, isNodeOpened(node));
|
|
20499
21388
|
}
|
|
20500
|
-
|
|
21389
|
+
setNodeAttr(node, NODE_ATTRIBUTES.IS_OPEN, true, undefined, {
|
|
21390
|
+
silent: true
|
|
21391
|
+
});
|
|
20501
21392
|
};
|
|
20502
21393
|
var restoreSearchOpenState = function restoreSearchOpenState() {
|
|
20503
21394
|
searchOriginalOpenState.forEach(function (isOpen, nodeId) {
|
|
20504
21395
|
var node = getNodeById(nodeId);
|
|
20505
21396
|
if (node) {
|
|
20506
|
-
|
|
21397
|
+
setNodeAttr(node, NODE_ATTRIBUTES.IS_OPEN, isOpen, undefined, {
|
|
21398
|
+
silent: true
|
|
21399
|
+
});
|
|
20507
21400
|
}
|
|
20508
21401
|
});
|
|
20509
21402
|
searchOriginalOpenState.clear();
|
|
20510
21403
|
};
|
|
21404
|
+
var clearMatchedFlags = function clearMatchedFlags() {
|
|
21405
|
+
matchedNodeIds.forEach(function (nodeId) {
|
|
21406
|
+
var node = getNodeById(nodeId);
|
|
21407
|
+
if (node) {
|
|
21408
|
+
setNodeAttr(node, NODE_ATTRIBUTES.IS_MATCH, false, undefined, {
|
|
21409
|
+
silent: true
|
|
21410
|
+
});
|
|
21411
|
+
}
|
|
21412
|
+
});
|
|
21413
|
+
matchedNodeIds.clear();
|
|
21414
|
+
};
|
|
20511
21415
|
var addAncestorNodes = function addAncestorNodes(node) {
|
|
20512
21416
|
var parent = getParentNode(node);
|
|
20513
21417
|
while (parent) {
|
|
@@ -20518,25 +21422,17 @@ var use_tree_init_this = undefined;
|
|
|
20518
21422
|
}
|
|
20519
21423
|
};
|
|
20520
21424
|
var _addDescendantNodes = function addDescendantNodes(node) {
|
|
20521
|
-
var
|
|
20522
|
-
var
|
|
20523
|
-
|
|
21425
|
+
var children = getChildNodes(node);
|
|
21426
|
+
for (var i = 0, len = children.length; i < len; i++) {
|
|
21427
|
+
var child = children[i];
|
|
20524
21428
|
visibleNodeIds.add(getRenderNodeId(child));
|
|
21429
|
+
// showChildNodes:默认展开有子节点的路径,深层结果可直接可见;用户仍可手动收起
|
|
21430
|
+
if (hasChildNode(child)) {
|
|
21431
|
+
setSearchNodeOpen(child);
|
|
21432
|
+
}
|
|
20525
21433
|
_addDescendantNodes(child);
|
|
20526
|
-
});
|
|
20527
|
-
};
|
|
20528
|
-
var filterFn = function filterFn(item) {
|
|
20529
|
-
if (isSearchActive.value) {
|
|
20530
|
-
return visibleNodeIds.has(getRenderNodeId(item));
|
|
20531
21434
|
}
|
|
20532
|
-
return checkNodeIsOpen(item);
|
|
20533
21435
|
};
|
|
20534
|
-
// 计算当前需要渲染的节点信息
|
|
20535
|
-
var renderData = __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
20536
|
-
return flatData.data.filter(function (item) {
|
|
20537
|
-
return filterFn(item);
|
|
20538
|
-
});
|
|
20539
|
-
});
|
|
20540
21436
|
var _useIntersectionObser = use_intersection_observer(props),
|
|
20541
21437
|
getLastVisibleElement = _useIntersectionObser.getLastVisibleElement,
|
|
20542
21438
|
intersectionObserver = _useIntersectionObser.intersectionObserver;
|
|
@@ -20608,7 +21504,9 @@ var use_tree_init_this = undefined;
|
|
|
20608
21504
|
return treeDataRef.value;
|
|
20609
21505
|
},
|
|
20610
21506
|
onTreeDataChange: onTreeDataChange,
|
|
20611
|
-
registerNextLoop: registerNextLoop
|
|
21507
|
+
registerNextLoop: registerNextLoop,
|
|
21508
|
+
syncNodeOpenState: syncNodeOpenState,
|
|
21509
|
+
scheduleUiRefresh: scheduleUiRefresh
|
|
20612
21510
|
}),
|
|
20613
21511
|
renderTreeNode = _useNodeAction.renderTreeNode,
|
|
20614
21512
|
handleTreeNodeClick = _useNodeAction.handleTreeNodeClick,
|
|
@@ -20616,45 +21514,78 @@ var use_tree_init_this = undefined;
|
|
|
20616
21514
|
setNodeAction = _useNodeAction.setNodeAction,
|
|
20617
21515
|
setSelect = _useNodeAction.setSelect,
|
|
20618
21516
|
asyncNodeClick = _useNodeAction.asyncNodeClick,
|
|
20619
|
-
|
|
20620
|
-
|
|
20621
|
-
|
|
20622
|
-
|
|
20623
|
-
|
|
21517
|
+
applyCheckedChange = _useNodeAction.applyCheckedChange,
|
|
21518
|
+
emitCheckedChange = _useNodeAction.emitCheckedChange,
|
|
21519
|
+
rebuildCheckedSetsFromList = _useNodeAction.rebuildCheckedSetsFromList,
|
|
21520
|
+
clearAllCheckedState = _useNodeAction.clearAllCheckedState;
|
|
21521
|
+
// 数据重建完成后同步勾选索引与可见列表(保证读到最新 schema)
|
|
21522
|
+
var runSearch = function runSearch() {
|
|
20624
21523
|
restoreSearchOpenState();
|
|
20625
|
-
|
|
21524
|
+
clearMatchedFlags();
|
|
20626
21525
|
visibleNodeIds.clear();
|
|
20627
|
-
|
|
20628
|
-
|
|
20629
|
-
var nodeId = getRenderNodeId(item);
|
|
20630
|
-
if (isMatch) {
|
|
20631
|
-
matchedNodeIds.add(nodeId);
|
|
20632
|
-
visibleNodeIds.add(nodeId);
|
|
20633
|
-
}
|
|
20634
|
-
setNodeAttribute(item, [NODE_ATTRIBUTES.IS_MATCH, NODE_ATTRIBUTES.IS_OPEN], [isMatch, isNodeOpened(item)], false);
|
|
20635
|
-
});
|
|
21526
|
+
searchCandidateNodes = [];
|
|
21527
|
+
// 非搜索态:只恢复展开并重建可见列表,禁止扫全表写 IS_MATCH
|
|
20636
21528
|
if (!isSearchActive.value) {
|
|
21529
|
+
rebuildVisibleNodes();
|
|
21530
|
+
scheduleUiRefresh();
|
|
20637
21531
|
return;
|
|
20638
21532
|
}
|
|
20639
|
-
|
|
20640
|
-
|
|
20641
|
-
|
|
21533
|
+
var matcher = createMatcher();
|
|
21534
|
+
var data = flatData.data;
|
|
21535
|
+
var matchedNodes = [];
|
|
21536
|
+
for (var i = 0, len = data.length; i < len; i++) {
|
|
21537
|
+
var item = data[i];
|
|
21538
|
+
if (!matcher(getLabel(item, props), item)) {
|
|
21539
|
+
continue;
|
|
20642
21540
|
}
|
|
21541
|
+
var nodeId = getRenderNodeId(item);
|
|
21542
|
+
matchedNodeIds.add(nodeId);
|
|
21543
|
+
visibleNodeIds.add(nodeId);
|
|
21544
|
+
matchedNodes.push(item);
|
|
21545
|
+
// 仅给命中节点打标,禁止全表 setAttribute
|
|
21546
|
+
setNodeAttr(item, NODE_ATTRIBUTES.IS_MATCH, true, undefined, {
|
|
21547
|
+
silent: true
|
|
21548
|
+
});
|
|
21549
|
+
}
|
|
21550
|
+
for (var _i = 0, _len = matchedNodes.length; _i < _len; _i++) {
|
|
21551
|
+
var _item = matchedNodes[_i];
|
|
20643
21552
|
if (resultType.value === 'tree') {
|
|
20644
|
-
addAncestorNodes(
|
|
21553
|
+
addAncestorNodes(_item);
|
|
20645
21554
|
}
|
|
20646
21555
|
if (showChildNodes.value) {
|
|
20647
|
-
setSearchNodeOpen(
|
|
20648
|
-
_addDescendantNodes(
|
|
21556
|
+
setSearchNodeOpen(_item);
|
|
21557
|
+
_addDescendantNodes(_item);
|
|
20649
21558
|
}
|
|
20650
|
-
}
|
|
20651
|
-
|
|
20652
|
-
|
|
21559
|
+
}
|
|
21560
|
+
// 按 DFS 序收集候选集,后续展开/收起只扫候选集
|
|
21561
|
+
for (var _i2 = 0, _len2 = data.length; _i2 < _len2; _i2++) {
|
|
21562
|
+
var _item2 = data[_i2];
|
|
21563
|
+
if (visibleNodeIds.has(getRenderNodeId(_item2))) {
|
|
21564
|
+
searchCandidateNodes.push(_item2);
|
|
21565
|
+
}
|
|
21566
|
+
}
|
|
21567
|
+
rebuildSearchVisibleList();
|
|
21568
|
+
scheduleUiRefresh();
|
|
21569
|
+
};
|
|
21570
|
+
var syncAfterRebuild = function syncAfterRebuild() {
|
|
21571
|
+
rebuildCheckedSetsFromList(flatData.checkedList || []);
|
|
21572
|
+
if (isSearchActive.value) {
|
|
21573
|
+
runSearch();
|
|
21574
|
+
return;
|
|
21575
|
+
}
|
|
21576
|
+
rebuildVisibleNodes();
|
|
21577
|
+
};
|
|
21578
|
+
onAfterRebuild(syncAfterRebuild);
|
|
21579
|
+
__WEBPACK_EXTERNAL_MODULE_vue_watch__(function () {
|
|
20653
21580
|
return flatData.data;
|
|
20654
|
-
},
|
|
21581
|
+
}, syncAfterRebuild);
|
|
21582
|
+
var handleSearch = __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_debounce__(120, runSearch);
|
|
21583
|
+
// 只浅监听检索值 / 展示模式,避免 deep watch search 对象在赋值时连环触发
|
|
21584
|
+
__WEBPACK_EXTERNAL_MODULE_vue_watch__(function () {
|
|
21585
|
+
return [searchValue.value, resultType.value, showChildNodes.value];
|
|
21586
|
+
}, function () {
|
|
20655
21587
|
handleSearch();
|
|
20656
21588
|
}, {
|
|
20657
|
-
deep: true,
|
|
20658
21589
|
immediate: true
|
|
20659
21590
|
});
|
|
20660
21591
|
__WEBPACK_EXTERNAL_MODULE_vue_onMounted__(function () {
|
|
@@ -20692,22 +21623,17 @@ var use_tree_init_this = undefined;
|
|
|
20692
21623
|
var nodes = resolveToNodes(item);
|
|
20693
21624
|
nodes.forEach(function (node) {
|
|
20694
21625
|
var resolvedNode = resolveNodeItem(node);
|
|
20695
|
-
|
|
20696
|
-
|
|
20697
|
-
setNodeAction(resolvedNode, NODE_ATTRIBUTES.IS_INDETERMINATE, false);
|
|
20698
|
-
}
|
|
20699
|
-
// 如果设置了 checkStrictly,需要同步更新子节点和父节点的状态
|
|
20700
|
-
if (props.checkStrictly) {
|
|
20701
|
-
deepUpdateChildNode(resolvedNode, [NODE_ATTRIBUTES.IS_CHECKED, NODE_ATTRIBUTES.IS_INDETERMINATE], [checked, false]);
|
|
20702
|
-
updateParentChecked(resolvedNode, checked);
|
|
21626
|
+
if (resolvedNode[NODE_ATTRIBUTES.IS_NULL]) {
|
|
21627
|
+
return;
|
|
20703
21628
|
}
|
|
21629
|
+
applyCheckedChange(resolvedNode, checked, {
|
|
21630
|
+
emitEvent: false,
|
|
21631
|
+
refresh: false
|
|
21632
|
+
});
|
|
20704
21633
|
});
|
|
21634
|
+
scheduleUiRefresh();
|
|
20705
21635
|
if (triggerEvent) {
|
|
20706
|
-
|
|
20707
|
-
return isNodeChecked(t);
|
|
20708
|
-
}), flatData.data.filter(function (t) {
|
|
20709
|
-
return isIndeterminate(t);
|
|
20710
|
-
}));
|
|
21636
|
+
emitCheckedChange();
|
|
20711
21637
|
}
|
|
20712
21638
|
};
|
|
20713
21639
|
onSelected(function (newData) {
|
|
@@ -20756,14 +21682,7 @@ var use_tree_init_this = undefined;
|
|
|
20756
21682
|
__WEBPACK_EXTERNAL_MODULE_vue_watch__(function () {
|
|
20757
21683
|
return [props.checked];
|
|
20758
21684
|
}, function () {
|
|
20759
|
-
|
|
20760
|
-
flatData.data.forEach(function (node) {
|
|
20761
|
-
if (isNodeChecked(node) || isIndeterminate(node)) {
|
|
20762
|
-
setNodeAction(node, NODE_ATTRIBUTES.IS_CHECKED, false);
|
|
20763
|
-
setNodeAction(node, NODE_ATTRIBUTES.IS_INDETERMINATE, false);
|
|
20764
|
-
}
|
|
20765
|
-
});
|
|
20766
|
-
// 再设置新的选中节点
|
|
21685
|
+
clearAllCheckedState();
|
|
20767
21686
|
setChecked(props.checked, true);
|
|
20768
21687
|
}, {
|
|
20769
21688
|
immediate: true
|
|
@@ -20820,6 +21739,55 @@ var use_tree_init_this = undefined;
|
|
|
20820
21739
|
var triggerEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
20821
21740
|
setChecked(getNodeById(id), checked, triggerEvent);
|
|
20822
21741
|
};
|
|
21742
|
+
/**
|
|
21743
|
+
* 收起全部节点。
|
|
21744
|
+
* 直接批量清 schema.IS_OPEN,避免逐节点 setOpen 触发百万次增量更新。
|
|
21745
|
+
*/
|
|
21746
|
+
var collapseAll = function collapseAll() {
|
|
21747
|
+
var data = flatData.data;
|
|
21748
|
+
for (var i = 0, len = data.length; i < len; i++) {
|
|
21749
|
+
var schema = getSchemaVal(data[i]);
|
|
21750
|
+
if (schema !== null && schema !== void 0 && schema[NODE_ATTRIBUTES.IS_OPEN]) {
|
|
21751
|
+
schema[NODE_ATTRIBUTES.IS_OPEN] = false;
|
|
21752
|
+
}
|
|
21753
|
+
}
|
|
21754
|
+
flatData.openCount = 0;
|
|
21755
|
+
if (isSearchActive.value) {
|
|
21756
|
+
rebuildSearchVisibleList();
|
|
21757
|
+
} else {
|
|
21758
|
+
rebuildVisibleNodes();
|
|
21759
|
+
}
|
|
21760
|
+
scheduleUiRefresh();
|
|
21761
|
+
};
|
|
21762
|
+
/**
|
|
21763
|
+
* 展开全部节点(openAllNodes)。
|
|
21764
|
+
* 批量写 IS_OPEN 后一次性重建可见列表。
|
|
21765
|
+
*/
|
|
21766
|
+
var expandAllNodes = function expandAllNodes() {
|
|
21767
|
+
var data = flatData.data;
|
|
21768
|
+
var openCount = 0;
|
|
21769
|
+
for (var i = 0, len = data.length; i < len; i++) {
|
|
21770
|
+
var node = data[i];
|
|
21771
|
+
if (!hasChildNode(node)) {
|
|
21772
|
+
continue;
|
|
21773
|
+
}
|
|
21774
|
+
var schema = getSchemaVal(node);
|
|
21775
|
+
if (!schema) {
|
|
21776
|
+
continue;
|
|
21777
|
+
}
|
|
21778
|
+
if (!schema[NODE_ATTRIBUTES.IS_OPEN]) {
|
|
21779
|
+
schema[NODE_ATTRIBUTES.IS_OPEN] = true;
|
|
21780
|
+
}
|
|
21781
|
+
openCount += 1;
|
|
21782
|
+
}
|
|
21783
|
+
flatData.openCount = openCount;
|
|
21784
|
+
if (isSearchActive.value) {
|
|
21785
|
+
rebuildSearchVisibleList();
|
|
21786
|
+
} else {
|
|
21787
|
+
rebuildVisibleNodes();
|
|
21788
|
+
}
|
|
21789
|
+
scheduleUiRefresh();
|
|
21790
|
+
};
|
|
20823
21791
|
ctx.expose({
|
|
20824
21792
|
handleTreeNodeClick: handleTreeNodeClick,
|
|
20825
21793
|
isNodeChecked: isNodeChecked,
|
|
@@ -20838,7 +21806,10 @@ var use_tree_init_this = undefined;
|
|
|
20838
21806
|
getData: getData,
|
|
20839
21807
|
reset: reset,
|
|
20840
21808
|
getNodeAttr: getNodeAttr,
|
|
20841
|
-
getParentNode: getParentNode
|
|
21809
|
+
getParentNode: getParentNode,
|
|
21810
|
+
collapseAll: collapseAll,
|
|
21811
|
+
expandAll: expandAllNodes,
|
|
21812
|
+
openAllNodes: expandAllNodes
|
|
20842
21813
|
});
|
|
20843
21814
|
var _useEmpty = use_empty(props),
|
|
20844
21815
|
renderEmpty = _useEmpty.renderEmpty;
|
|
@@ -20851,8 +21822,18 @@ var use_tree_init_this = undefined;
|
|
|
20851
21822
|
var renderTreeContent = function renderTreeContent(scopedData) {
|
|
20852
21823
|
var _ctx$slots$empty, _ctx$slots$empty2, _ctx$slots;
|
|
20853
21824
|
if (scopedData.length) {
|
|
21825
|
+
var showTree = !isSearchActive.value || isTreeUI.value;
|
|
21826
|
+
var globalVersion = uiVersion.value;
|
|
20854
21827
|
return scopedData.map(function (d) {
|
|
20855
|
-
|
|
21828
|
+
var id = "".concat(getNodeId(d));
|
|
21829
|
+
return __WEBPACK_EXTERNAL_MODULE_vue_createVNode__(tree_node_row, {
|
|
21830
|
+
"key": id,
|
|
21831
|
+
"item": d,
|
|
21832
|
+
"showTree": showTree,
|
|
21833
|
+
"version": nodeUiVersions[id] || 0,
|
|
21834
|
+
"globalVersion": globalVersion,
|
|
21835
|
+
"renderFn": renderTreeNode
|
|
21836
|
+
}, null);
|
|
20856
21837
|
});
|
|
20857
21838
|
}
|
|
20858
21839
|
var emptyType = isSearchActive.value ? 'search-empty' : 'empty';
|
|
@@ -20888,6 +21869,8 @@ var use_tree_init_this = undefined;
|
|
|
20888
21869
|
var _usePrefix = __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3_usePrefix__(),
|
|
20889
21870
|
resolveClassName = _usePrefix.resolveClassName;
|
|
20890
21871
|
return function () {
|
|
21872
|
+
// uiTick:节点级刷新时唤醒 Tree;具体哪些行更新由 TreeNodeRow 的 version 决定
|
|
21873
|
+
void uiTick.value;
|
|
20891
21874
|
return __WEBPACK_EXTERNAL_MODULE_vue_createVNode__(__WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_virtual_render_927587a8_default__, {
|
|
20892
21875
|
"ref": root,
|
|
20893
21876
|
"style": getTreeStyle(null, props),
|
|
@@ -20898,7 +21881,7 @@ var use_tree_init_this = undefined;
|
|
|
20898
21881
|
"keepAlive": true,
|
|
20899
21882
|
"lineHeight": props.lineHeight,
|
|
20900
21883
|
"list": renderData.value,
|
|
20901
|
-
"rowKey": NODE_ATTRIBUTES.UUID,
|
|
21884
|
+
"rowKey": props.nodeKey || NODE_ATTRIBUTES.UUID,
|
|
20902
21885
|
"throttleDelay": 0,
|
|
20903
21886
|
"onContentScroll": handleContentScroll
|
|
20904
21887
|
}, {
|