@opensumi/ide-components 3.1.1-next-1718177767.0 → 3.1.1-next-1718250961.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +14 -3
- package/lib/recycle-tree/path.d.ts +11 -0
- package/lib/recycle-tree/path.d.ts.map +1 -0
- package/lib/recycle-tree/path.js +28 -0
- package/lib/recycle-tree/path.js.map +1 -0
- package/lib/recycle-tree/tree/TreeNode.d.ts +11 -9
- package/lib/recycle-tree/tree/TreeNode.d.ts.map +1 -1
- package/lib/recycle-tree/tree/TreeNode.js +63 -78
- package/lib/recycle-tree/tree/TreeNode.js.map +1 -1
- package/lib/recycle-tree/tree/model/treeState/TreeStateManager.d.ts +0 -2
- package/lib/recycle-tree/tree/model/treeState/TreeStateManager.d.ts.map +1 -1
- package/lib/recycle-tree/tree/model/treeState/TreeStateManager.js +3 -7
- package/lib/recycle-tree/tree/model/treeState/TreeStateManager.js.map +1 -1
- package/lib/recycle-tree/types/watcher.d.ts +12 -12
- package/lib/recycle-tree/types/watcher.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare function parse(path: string): {
|
|
2
|
+
dirname: string;
|
|
3
|
+
basename: string;
|
|
4
|
+
};
|
|
5
|
+
declare function relative(parent: string, child: string): string | undefined;
|
|
6
|
+
export declare const treePath: {
|
|
7
|
+
parse: typeof parse;
|
|
8
|
+
relative: typeof relative;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/recycle-tree/path.ts"],"names":[],"mappings":"AAEA,iBAAS,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAIlE;AAED,iBAAS,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAcnE;AAED,eAAO,MAAM,QAAQ;;;CAGpB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.treePath = void 0;
|
|
4
|
+
const path_1 = require("@opensumi/ide-utils/lib/path");
|
|
5
|
+
function parse(path) {
|
|
6
|
+
const parts = path.split(path_1.Path.separator);
|
|
7
|
+
const basename = parts.pop() || '';
|
|
8
|
+
return { dirname: parts.join(path_1.Path.separator), basename };
|
|
9
|
+
}
|
|
10
|
+
function relative(parent, child) {
|
|
11
|
+
if (parent === child) {
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
14
|
+
if (!parent || !child) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const raw = !parent.endsWith(path_1.Path.separator) ? parent + path_1.Path.separator : parent;
|
|
18
|
+
if (!child.startsWith(raw)) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const relativePath = child.substring(raw.length);
|
|
22
|
+
return relativePath;
|
|
23
|
+
}
|
|
24
|
+
exports.treePath = {
|
|
25
|
+
parse,
|
|
26
|
+
relative,
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/recycle-tree/path.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAEpD,SAAS,KAAK,CAAC,IAAY;IACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAI,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACnC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,WAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,KAAa;IAC7C,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,OAAO,EAAE,CAAC;KACX;IACD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;QACrB,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC1B,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,YAAY,CAAC;AACtB,CAAC;AAEY,QAAA,QAAQ,GAAG;IACtB,KAAK;IACL,QAAQ;CACT,CAAC"}
|
|
@@ -52,7 +52,7 @@ export declare class TreeNode implements ITreeNode {
|
|
|
52
52
|
protected _tree: ITree;
|
|
53
53
|
protected _visible: boolean;
|
|
54
54
|
protected _path: string;
|
|
55
|
-
protected constructor(tree: ITree, parent?: ICompositeTreeNode, watcher?: ITreeWatcher,
|
|
55
|
+
protected constructor(tree: ITree, parent?: ICompositeTreeNode, watcher?: ITreeWatcher, metadata?: {
|
|
56
56
|
[key: string]: any;
|
|
57
57
|
});
|
|
58
58
|
get disposed(): boolean;
|
|
@@ -73,7 +73,9 @@ export declare class TreeNode implements ITreeNode {
|
|
|
73
73
|
*/
|
|
74
74
|
get name(): string;
|
|
75
75
|
set name(name: string);
|
|
76
|
+
protected validateName(name: string): void;
|
|
76
77
|
get path(): string;
|
|
78
|
+
joinPath(...paths: string[]): string;
|
|
77
79
|
get accessibilityInformation(): IAccessibilityInformation;
|
|
78
80
|
getMetadata(withKey: string): any;
|
|
79
81
|
addMetadata(withKey: string, value: any): void;
|
|
@@ -107,11 +109,17 @@ export declare class CompositeTreeNode extends TreeNode implements ICompositeTre
|
|
|
107
109
|
private refreshThrottler;
|
|
108
110
|
private toRefreshPathQueue;
|
|
109
111
|
protected generatorWatcher(): ITreeWatcher;
|
|
110
|
-
constructor(tree: ITree, parent?: ICompositeTreeNode, watcher?: ITreeWatcher,
|
|
112
|
+
constructor(tree: ITree, parent?: ICompositeTreeNode, watcher?: ITreeWatcher, metadata?: {
|
|
111
113
|
[key: string]: any;
|
|
112
114
|
});
|
|
113
|
-
|
|
115
|
+
/**
|
|
116
|
+
* 重载 setter 后,必须要重载 getter
|
|
117
|
+
*/
|
|
114
118
|
get name(): string;
|
|
119
|
+
/**
|
|
120
|
+
* 重载 name 的 setter,路径改变时需要重新监听文件节点变化
|
|
121
|
+
*/
|
|
122
|
+
set name(name: string);
|
|
115
123
|
get watcher(): ITreeWatcher;
|
|
116
124
|
get type(): TreeNodeType;
|
|
117
125
|
get children(): ITreeNodeOrCompositeTreeNode[] | null;
|
|
@@ -227,42 +235,36 @@ export declare class CompositeTreeNode extends TreeNode implements ICompositeTre
|
|
|
227
235
|
private transformToRelativePath;
|
|
228
236
|
/**
|
|
229
237
|
* 根据路径展开节点树
|
|
230
|
-
* @memberof CompositeTreeNode
|
|
231
238
|
*/
|
|
232
239
|
loadTreeNodeByPath(path: string, quiet?: boolean): Promise<ITreeNodeOrCompositeTreeNode | undefined>;
|
|
233
240
|
/**
|
|
234
241
|
* 根据节点获取节点ID下标位置
|
|
235
242
|
* @param {number} id
|
|
236
243
|
* @returns
|
|
237
|
-
* @memberof CompositeTreeNode
|
|
238
244
|
*/
|
|
239
245
|
getIndexAtTreeNodeId(id: number): number;
|
|
240
246
|
/**
|
|
241
247
|
* 根据节点获取节点下标位置
|
|
242
248
|
* @param {ITreeNodeOrCompositeTreeNode} node
|
|
243
249
|
* @returns
|
|
244
|
-
* @memberof CompositeTreeNode
|
|
245
250
|
*/
|
|
246
251
|
getIndexAtTreeNode(node: ITreeNodeOrCompositeTreeNode): number;
|
|
247
252
|
/**
|
|
248
253
|
* 根据下标位置获取节点
|
|
249
254
|
* @param {number} index
|
|
250
255
|
* @returns
|
|
251
|
-
* @memberof CompositeTreeNode
|
|
252
256
|
*/
|
|
253
257
|
getTreeNodeAtIndex(index: number): ITreeNode | undefined;
|
|
254
258
|
/**
|
|
255
259
|
* 根据节点ID获取节点
|
|
256
260
|
* @param {number} id
|
|
257
261
|
* @returns
|
|
258
|
-
* @memberof CompositeTreeNode
|
|
259
262
|
*/
|
|
260
263
|
getTreeNodeById(id: number): ITreeNodeOrCompositeTreeNode | undefined;
|
|
261
264
|
/**
|
|
262
265
|
* 根据节点路径获取节点
|
|
263
266
|
* @param {string} path
|
|
264
267
|
* @returns
|
|
265
|
-
* @memberof CompositeTreeNode
|
|
266
268
|
*/
|
|
267
269
|
getTreeNodeByPath(path: string): ITreeNodeOrCompositeTreeNode | undefined;
|
|
268
270
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNode.d.ts","sourceRoot":"","sources":["../../../src/recycle-tree/tree/TreeNode.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EAOxB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"TreeNode.d.ts","sourceRoot":"","sources":["../../../src/recycle-tree/tree/TreeNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CompositeTreeNode = exports.TreeNode = exports.BranchOperatorStatus = exports.spliceArray = void 0;
|
|
4
4
|
/* eslint-disable @typescript-eslint/prefer-for-of */
|
|
5
5
|
const ide_utils_1 = require("@opensumi/ide-utils");
|
|
6
|
+
const path_1 = require("@opensumi/ide-utils/lib/path");
|
|
7
|
+
const utils_1 = require("../../utils");
|
|
8
|
+
const path_2 = require("../path");
|
|
6
9
|
const types_1 = require("../types");
|
|
7
10
|
const { Path } = ide_utils_1.path;
|
|
8
11
|
/**
|
|
@@ -24,6 +27,10 @@ var BranchOperatorStatus;
|
|
|
24
27
|
BranchOperatorStatus[BranchOperatorStatus["EXPANDED"] = 1] = "EXPANDED";
|
|
25
28
|
BranchOperatorStatus[BranchOperatorStatus["SHRINKED"] = 2] = "SHRINKED";
|
|
26
29
|
})(BranchOperatorStatus = exports.BranchOperatorStatus || (exports.BranchOperatorStatus = {}));
|
|
30
|
+
const nextIdFactory = () => {
|
|
31
|
+
let id = 0;
|
|
32
|
+
return () => id++;
|
|
33
|
+
};
|
|
27
34
|
class TreeNode {
|
|
28
35
|
static is(node) {
|
|
29
36
|
return !!node && 'depth' in node && 'name' in node && 'path' in node && 'id' in node;
|
|
@@ -76,13 +83,13 @@ class TreeNode {
|
|
|
76
83
|
TreeNode.pathToGlobalTreeState.set(path, state);
|
|
77
84
|
return state;
|
|
78
85
|
}
|
|
79
|
-
constructor(tree, parent, watcher,
|
|
86
|
+
constructor(tree, parent, watcher, metadata) {
|
|
80
87
|
this._uid = TreeNode.nextId();
|
|
81
88
|
this._parent = parent;
|
|
82
89
|
this._tree = tree;
|
|
83
90
|
this._disposed = false;
|
|
84
91
|
this._visible = true;
|
|
85
|
-
this._metadata = Object.assign({}, (
|
|
92
|
+
this._metadata = Object.assign({}, (metadata || {}));
|
|
86
93
|
this._depth = parent ? parent.depth + 1 : 0;
|
|
87
94
|
if (watcher) {
|
|
88
95
|
this._watcher = watcher;
|
|
@@ -126,28 +133,45 @@ class TreeNode {
|
|
|
126
133
|
* 一般不建议手动管理 `name`,采用默认值即可
|
|
127
134
|
*/
|
|
128
135
|
get name() {
|
|
136
|
+
// 根节点保证唯一性
|
|
129
137
|
if (!this.parent) {
|
|
130
138
|
return `root_${this.id}`;
|
|
131
139
|
}
|
|
132
|
-
|
|
140
|
+
let name = this.getMetadata('name');
|
|
141
|
+
this.validateName(name);
|
|
142
|
+
if (!name) {
|
|
143
|
+
name = String(TreeNode.nextId());
|
|
144
|
+
this._metadata['name'] = name;
|
|
145
|
+
}
|
|
146
|
+
return name;
|
|
133
147
|
}
|
|
134
148
|
set name(name) {
|
|
149
|
+
this.validateName(name);
|
|
135
150
|
this.addMetadata('name', name);
|
|
136
151
|
// 节点 `name` 变化,更新当前节点的 `path` 属性
|
|
137
152
|
this._path = '';
|
|
138
153
|
}
|
|
154
|
+
validateName(name) {
|
|
155
|
+
if (!name) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
(0, utils_1.warning)(!name.includes(Path.separator), `[TreeNode] name should not include path separator: ${name}`);
|
|
159
|
+
}
|
|
139
160
|
// 节点绝对路径
|
|
140
161
|
get path() {
|
|
141
162
|
if (!this._path) {
|
|
142
|
-
if (
|
|
143
|
-
this._path =
|
|
163
|
+
if (this.parent) {
|
|
164
|
+
this._path = Path.joinPath(this.parent.path, this.name);
|
|
144
165
|
}
|
|
145
166
|
else {
|
|
146
|
-
this._path =
|
|
167
|
+
this._path = `${Path.separator}${this.name}`;
|
|
147
168
|
}
|
|
148
169
|
}
|
|
149
170
|
return this._path;
|
|
150
171
|
}
|
|
172
|
+
joinPath(...paths) {
|
|
173
|
+
return Path.joinPath(this.path, ...paths);
|
|
174
|
+
}
|
|
151
175
|
get accessibilityInformation() {
|
|
152
176
|
return {
|
|
153
177
|
label: this.name,
|
|
@@ -155,9 +179,6 @@ class TreeNode {
|
|
|
155
179
|
};
|
|
156
180
|
}
|
|
157
181
|
getMetadata(withKey) {
|
|
158
|
-
if (withKey === 'name' && !this._metadata[withKey]) {
|
|
159
|
-
this._metadata[withKey] = String(TreeNode.nextId());
|
|
160
|
-
}
|
|
161
182
|
return this._metadata[withKey];
|
|
162
183
|
}
|
|
163
184
|
addMetadata(withKey, value) {
|
|
@@ -184,7 +205,7 @@ class TreeNode {
|
|
|
184
205
|
type: types_1.MetadataChangeType.Removed,
|
|
185
206
|
key: withKey,
|
|
186
207
|
prevValue,
|
|
187
|
-
value:
|
|
208
|
+
value: undefined,
|
|
188
209
|
});
|
|
189
210
|
}
|
|
190
211
|
}
|
|
@@ -242,10 +263,7 @@ class TreeNode {
|
|
|
242
263
|
}
|
|
243
264
|
}
|
|
244
265
|
exports.TreeNode = TreeNode;
|
|
245
|
-
TreeNode.nextId = (
|
|
246
|
-
let id = 0;
|
|
247
|
-
return () => id++;
|
|
248
|
-
})();
|
|
266
|
+
TreeNode.nextId = nextIdFactory();
|
|
249
267
|
TreeNode.idToTreeNode = new Map();
|
|
250
268
|
TreeNode.pathToTreeNode = new Map();
|
|
251
269
|
TreeNode.pathToId = new Map();
|
|
@@ -330,9 +348,9 @@ class CompositeTreeNode extends TreeNode {
|
|
|
330
348
|
};
|
|
331
349
|
return watcher;
|
|
332
350
|
}
|
|
333
|
-
// parent 为undefined即表示该节点为根节点
|
|
334
|
-
constructor(tree, parent, watcher,
|
|
335
|
-
super(tree, parent, watcher,
|
|
351
|
+
// parent 为 undefined 即表示该节点为根节点
|
|
352
|
+
constructor(tree, parent, watcher, metadata) {
|
|
353
|
+
super(tree, parent, watcher, metadata);
|
|
336
354
|
this._children = null;
|
|
337
355
|
this._lock = false;
|
|
338
356
|
this.refreshThrottler = new ide_utils_1.ThrottledDelayer(CompositeTreeNode.REFRESH_DELAY);
|
|
@@ -373,11 +391,9 @@ class CompositeTreeNode extends TreeNode {
|
|
|
373
391
|
}
|
|
374
392
|
case types_1.WatchEvent.Removed: {
|
|
375
393
|
const { path } = event;
|
|
376
|
-
const
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
if (dirName === this.path && !!this.children) {
|
|
380
|
-
const item = this.children.find((c) => c.name === name);
|
|
394
|
+
const { basename, dirname } = path_2.treePath.parse(path);
|
|
395
|
+
if (dirname === this.path && !!this.children) {
|
|
396
|
+
const item = this.children.find((c) => c.name === basename);
|
|
381
397
|
if (item) {
|
|
382
398
|
this.unlinkItem(item);
|
|
383
399
|
}
|
|
@@ -410,27 +426,25 @@ class CompositeTreeNode extends TreeNode {
|
|
|
410
426
|
this._watcher = parent.watcher;
|
|
411
427
|
}
|
|
412
428
|
}
|
|
413
|
-
|
|
429
|
+
/**
|
|
430
|
+
* 重载 setter 后,必须要重载 getter
|
|
431
|
+
*/
|
|
432
|
+
get name() {
|
|
433
|
+
return super.name;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* 重载 name 的 setter,路径改变时需要重新监听文件节点变化
|
|
437
|
+
*/
|
|
414
438
|
set name(name) {
|
|
415
439
|
const prevPath = this.path;
|
|
416
440
|
if (!CompositeTreeNode.isRoot(this) && typeof this.watchTerminator === 'function') {
|
|
417
441
|
this.watchTerminator(prevPath);
|
|
418
|
-
this.addMetadata('name', name);
|
|
419
442
|
this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);
|
|
420
443
|
}
|
|
421
|
-
|
|
422
|
-
this.addMetadata('name', name);
|
|
423
|
-
}
|
|
444
|
+
this.addMetadata('name', name);
|
|
424
445
|
// 节点 `name` 变化,更新当前节点的 `path` 属性
|
|
425
446
|
this._path = '';
|
|
426
447
|
}
|
|
427
|
-
get name() {
|
|
428
|
-
// 根节点保证路径不重复
|
|
429
|
-
if (!this.parent) {
|
|
430
|
-
return `root_${this.id}`;
|
|
431
|
-
}
|
|
432
|
-
return this.getMetadata('name');
|
|
433
|
-
}
|
|
434
448
|
// 作为根节点唯一的watcher需要在生成新节点的时候传入
|
|
435
449
|
get watcher() {
|
|
436
450
|
return this._watcher;
|
|
@@ -941,7 +955,7 @@ class CompositeTreeNode extends TreeNode {
|
|
|
941
955
|
if (!CompositeTreeNode.isRoot(this)) {
|
|
942
956
|
return;
|
|
943
957
|
}
|
|
944
|
-
collapsedPaths =
|
|
958
|
+
collapsedPaths = (0, path_1.sortPathByDepth)(collapsedPaths);
|
|
945
959
|
let path;
|
|
946
960
|
while (collapsedPaths.length > 0) {
|
|
947
961
|
path = collapsedPaths.pop();
|
|
@@ -958,7 +972,7 @@ class CompositeTreeNode extends TreeNode {
|
|
|
958
972
|
if (!CompositeTreeNode.isRoot(this)) {
|
|
959
973
|
return;
|
|
960
974
|
}
|
|
961
|
-
expandedPaths =
|
|
975
|
+
expandedPaths = (0, path_1.sortPathByDepth)(expandedPaths);
|
|
962
976
|
let path;
|
|
963
977
|
while (expandedPaths.length > 0) {
|
|
964
978
|
path = expandedPaths.pop();
|
|
@@ -1125,24 +1139,24 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1125
1139
|
*/
|
|
1126
1140
|
transferItem(oldPath, newPath) {
|
|
1127
1141
|
var _a;
|
|
1128
|
-
const oldP =
|
|
1129
|
-
const from = oldP.
|
|
1142
|
+
const oldP = path_2.treePath.parse(oldPath);
|
|
1143
|
+
const from = oldP.dirname;
|
|
1130
1144
|
if (from !== this.path) {
|
|
1131
1145
|
return;
|
|
1132
1146
|
}
|
|
1133
|
-
const name = oldP.
|
|
1147
|
+
const name = oldP.basename;
|
|
1134
1148
|
const item = (_a = this._children) === null || _a === void 0 ? void 0 : _a.find((c) => c.name === name);
|
|
1135
1149
|
if (!item) {
|
|
1136
1150
|
return;
|
|
1137
1151
|
}
|
|
1138
|
-
const newP =
|
|
1139
|
-
const to = newP.
|
|
1152
|
+
const newP = path_2.treePath.parse(newPath);
|
|
1153
|
+
const to = newP.dirname;
|
|
1140
1154
|
const destDir = to === from ? this : TreeNode.getTreeNodeByPath(to);
|
|
1141
1155
|
if (!CompositeTreeNode.is(destDir)) {
|
|
1142
1156
|
this.unlinkItem(item);
|
|
1143
1157
|
return;
|
|
1144
1158
|
}
|
|
1145
|
-
item.mv(destDir, newP.
|
|
1159
|
+
item.mv(destDir, newP.basename);
|
|
1146
1160
|
return item;
|
|
1147
1161
|
}
|
|
1148
1162
|
dispose() {
|
|
@@ -1330,11 +1344,9 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1330
1344
|
return this.insertItem(node);
|
|
1331
1345
|
}
|
|
1332
1346
|
removeNode(path) {
|
|
1333
|
-
const
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
if (dirName === this.path && !!this.children) {
|
|
1337
|
-
const item = this.children.find((c) => c.name === name);
|
|
1347
|
+
const { basename, dirname } = path_2.treePath.parse(path);
|
|
1348
|
+
if (dirname === this.path && !!this.children) {
|
|
1349
|
+
const item = this.children.find((c) => c.name === basename);
|
|
1338
1350
|
if (item) {
|
|
1339
1351
|
this.unlinkItem(item);
|
|
1340
1352
|
}
|
|
@@ -1386,38 +1398,18 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1386
1398
|
await target.refreshTreeNodeByPaths(paths, token, target);
|
|
1387
1399
|
}
|
|
1388
1400
|
getRefreshNode() {
|
|
1389
|
-
|
|
1401
|
+
const paths = (0, path_1.sortPathByDepth)(Array.from(this.toRefreshPathQueue));
|
|
1390
1402
|
this.toRefreshPathQueue.clear();
|
|
1391
1403
|
if (!paths.length) {
|
|
1392
1404
|
return this.root;
|
|
1393
1405
|
}
|
|
1394
|
-
// 根据路径层级深度进行排序
|
|
1395
|
-
paths = paths.sort((a, b) => {
|
|
1396
|
-
const depthA = Path.pathDepth(a);
|
|
1397
|
-
const depthB = Path.pathDepth(b);
|
|
1398
|
-
return depthA - depthB;
|
|
1399
|
-
});
|
|
1400
1406
|
if (paths.length === 1 || Path.pathDepth(paths[0]) === 1) {
|
|
1401
1407
|
// 说明刷新队列中包含根节点,直接返回根节点进行刷新
|
|
1402
1408
|
return TreeNode.getTreeNodeByPath(paths[0]);
|
|
1403
1409
|
}
|
|
1404
|
-
const
|
|
1405
|
-
let rootPath = sortedPaths[0];
|
|
1406
|
-
for (let i = 1, len = sortedPaths.length; i < len; i++) {
|
|
1407
|
-
if (rootPath.isEqualOrParent(sortedPaths[i])) {
|
|
1408
|
-
continue;
|
|
1409
|
-
}
|
|
1410
|
-
else {
|
|
1411
|
-
while (!rootPath.isRoot) {
|
|
1412
|
-
rootPath = rootPath.dir;
|
|
1413
|
-
if (!rootPath || rootPath.isEqualOrParent(sortedPaths[i])) {
|
|
1414
|
-
break;
|
|
1415
|
-
}
|
|
1416
|
-
}
|
|
1417
|
-
}
|
|
1418
|
-
}
|
|
1410
|
+
const rootPath = (0, path_1.findCommonRoot)(paths);
|
|
1419
1411
|
if (rootPath) {
|
|
1420
|
-
return TreeNode.getTreeNodeByPath(rootPath
|
|
1412
|
+
return TreeNode.getTreeNodeByPath(rootPath);
|
|
1421
1413
|
}
|
|
1422
1414
|
return this.root;
|
|
1423
1415
|
}
|
|
@@ -1442,14 +1434,12 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1442
1434
|
return !!this._flattenedBranch && this._flattenedBranch.indexOf(item.id) > -1;
|
|
1443
1435
|
}
|
|
1444
1436
|
transformToRelativePath(path) {
|
|
1445
|
-
const
|
|
1446
|
-
const pathFlag = splitPath(path);
|
|
1437
|
+
const pathFlag = Path.splitPath(path);
|
|
1447
1438
|
pathFlag.shift();
|
|
1448
1439
|
return pathFlag;
|
|
1449
1440
|
}
|
|
1450
1441
|
/**
|
|
1451
1442
|
* 根据路径展开节点树
|
|
1452
|
-
* @memberof CompositeTreeNode
|
|
1453
1443
|
*/
|
|
1454
1444
|
async loadTreeNodeByPath(path, quiet = false) {
|
|
1455
1445
|
if (!CompositeTreeNode.isRoot(this)) {
|
|
@@ -1613,7 +1603,6 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1613
1603
|
* 根据节点获取节点ID下标位置
|
|
1614
1604
|
* @param {number} id
|
|
1615
1605
|
* @returns
|
|
1616
|
-
* @memberof CompositeTreeNode
|
|
1617
1606
|
*/
|
|
1618
1607
|
getIndexAtTreeNodeId(id) {
|
|
1619
1608
|
if (this._flattenedBranch) {
|
|
@@ -1625,7 +1614,6 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1625
1614
|
* 根据节点获取节点下标位置
|
|
1626
1615
|
* @param {ITreeNodeOrCompositeTreeNode} node
|
|
1627
1616
|
* @returns
|
|
1628
|
-
* @memberof CompositeTreeNode
|
|
1629
1617
|
*/
|
|
1630
1618
|
getIndexAtTreeNode(node) {
|
|
1631
1619
|
if (this._flattenedBranch) {
|
|
@@ -1637,7 +1625,6 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1637
1625
|
* 根据下标位置获取节点
|
|
1638
1626
|
* @param {number} index
|
|
1639
1627
|
* @returns
|
|
1640
|
-
* @memberof CompositeTreeNode
|
|
1641
1628
|
*/
|
|
1642
1629
|
getTreeNodeAtIndex(index) {
|
|
1643
1630
|
var _a;
|
|
@@ -1651,7 +1638,6 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1651
1638
|
* 根据节点ID获取节点
|
|
1652
1639
|
* @param {number} id
|
|
1653
1640
|
* @returns
|
|
1654
|
-
* @memberof CompositeTreeNode
|
|
1655
1641
|
*/
|
|
1656
1642
|
getTreeNodeById(id) {
|
|
1657
1643
|
return TreeNode.getTreeNodeById(id);
|
|
@@ -1660,7 +1646,6 @@ class CompositeTreeNode extends TreeNode {
|
|
|
1660
1646
|
* 根据节点路径获取节点
|
|
1661
1647
|
* @param {string} path
|
|
1662
1648
|
* @returns
|
|
1663
|
-
* @memberof CompositeTreeNode
|
|
1664
1649
|
*/
|
|
1665
1650
|
getTreeNodeByPath(path) {
|
|
1666
1651
|
return TreeNode.getTreeNodeByPath(path);
|