@opensumi/ide-components 3.8.3-next-1741927421.0 → 3.8.3-next-1741940731.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 CHANGED
@@ -6298,7 +6298,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexpo
6298
6298
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6299
6299
 
6300
6300
  "use strict";
6301
- eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CompositeTreeNode = exports.TreeNode = exports.BranchOperatorStatus = void 0;\nexports.spliceArray = spliceArray;\nconst tslib_1 = __webpack_require__(/*! tslib */ \"../../node_modules/tslib/tslib.es6.mjs\");\n/* eslint-disable @typescript-eslint/prefer-for-of */\nconst ide_utils_1 = __webpack_require__(/*! @opensumi/ide-utils */ \"../utils/lib/index.js\");\nconst types_1 = __webpack_require__(/*! ../types */ \"./src/recycle-tree/types/index.ts\");\nconst { Path } = ide_utils_1.path;\n/**\n * 裁剪数组\n *\n * @param arr 裁剪数组\n * @param start 起始位置\n * @param deleteCount 删除或替换位置\n * @param items 插入的数组\n */\nfunction spliceArray(arr, start, deleteCount = 0, items) {\n // 如果没有修改操作,直接返回原数组\n if (deleteCount === 0 && (!items || items.length === 0)) {\n return arr;\n }\n // 直接使用 slice + concat 避免 spread operator\n const before = arr.slice(0, start);\n const after = arr.slice(start + deleteCount);\n return before.concat(items || []).concat(after);\n}\nvar BranchOperatorStatus;\n(function (BranchOperatorStatus) {\n BranchOperatorStatus[BranchOperatorStatus[\"EXPANDED\"] = 1] = \"EXPANDED\";\n BranchOperatorStatus[BranchOperatorStatus[\"SHRINKED\"] = 2] = \"SHRINKED\";\n})(BranchOperatorStatus || (exports.BranchOperatorStatus = BranchOperatorStatus = {}));\nclass TreeNode {\n static is(node) {\n return !!node && 'depth' in node && 'name' in node && 'path' in node && 'id' in node;\n }\n static getTreeNodeById(id) {\n return TreeNode.idToTreeNode.get(id);\n }\n static getTreeNodeByPath(path) {\n return TreeNode.pathToTreeNode.get(path);\n }\n static setTreeNode(id, path, node) {\n TreeNode.idToTreeNode.set(id, node);\n TreeNode.pathToTreeNode.set(path, node);\n }\n static removeTreeNode(id, path) {\n TreeNode.idToTreeNode.delete(id);\n TreeNode.pathToTreeNode.delete(path);\n }\n static getIdByPath(path) {\n return TreeNode.pathToId.get(path);\n }\n static setIdByPath(path, id) {\n return TreeNode.pathToId.set(path, id);\n }\n static getGlobalTreeState(path) {\n let state = TreeNode.pathToGlobalTreeState.get(path);\n if (!state) {\n state = {\n isExpanding: false,\n isLoadingPath: false,\n isRefreshing: false,\n refreshCancelToken: new ide_utils_1.CancellationTokenSource(),\n loadPathCancelToken: new ide_utils_1.CancellationTokenSource(),\n };\n }\n return state;\n }\n static setGlobalTreeState(path, updateState) {\n let state = TreeNode.pathToGlobalTreeState.get(path);\n if (!state) {\n state = {\n isExpanding: false,\n isLoadingPath: false,\n isRefreshing: false,\n refreshCancelToken: new ide_utils_1.CancellationTokenSource(),\n loadPathCancelToken: new ide_utils_1.CancellationTokenSource(),\n };\n }\n state = Object.assign(Object.assign({}, state), updateState);\n TreeNode.pathToGlobalTreeState.set(path, state);\n return state;\n }\n constructor(tree, parent, watcher, optionalMetadata) {\n this._uid = TreeNode.nextId();\n this._parent = parent;\n this._tree = tree;\n this._disposed = false;\n this._visible = true;\n this._metadata = Object.assign({}, (optionalMetadata || {}));\n this._depth = parent ? parent.depth + 1 : 0;\n if (watcher) {\n this._watcher = watcher;\n }\n else if (parent) {\n this._watcher = parent.watcher;\n }\n }\n get disposed() {\n return this._disposed;\n }\n /**\n * 获取基础信息\n */\n get depth() {\n return this._depth;\n }\n get parent() {\n return this._parent;\n }\n set parent(node) {\n this._parent = node;\n // 节点 `parent` 变化,更新当前节点的 `path` 属性\n this._path = '';\n }\n get type() {\n return types_1.TreeNodeType.TreeNode;\n }\n get id() {\n return this._uid;\n }\n set id(id) {\n this._uid = id;\n }\n get displayName() {\n return this.name;\n }\n /**\n * 由于 Tree 对于唯一路径的 path 的依赖\n * 在传入 `name` 值时必须保证其在路径上的唯一性\n * 一般不建议手动管理 `name`,采用默认值即可\n */\n get name() {\n if (!this.parent) {\n return `root_${this.id}`;\n }\n return this.getMetadata('name') || String(this.id);\n }\n set name(name) {\n this.addMetadata('name', name);\n // 节点 `name` 变化,更新当前节点的 `path` 属性\n this._path = '';\n }\n // 节点绝对路径\n get path() {\n if (!this._path) {\n if (!this.parent) {\n this._path = this.name.startsWith(Path.separator) ? this.name : `${Path.separator}${this.name}`;\n }\n else {\n this._path = this.name.startsWith(Path.separator)\n ? `${this.parent.path}${this.name}`\n : `${this.parent.path}${Path.separator}${this.name}`;\n }\n }\n return this._path;\n }\n get checkboxInfo() {\n return {\n checked: false,\n tooltip: '',\n accessibilityInformation: this.accessibilityInformation,\n };\n }\n get accessibilityInformation() {\n return {\n label: this.name,\n role: 'treeitem',\n };\n }\n getMetadata(withKey) {\n if (withKey === 'name' && !this._metadata[withKey]) {\n this._metadata[withKey] = String(TreeNode.nextId());\n }\n return this._metadata[withKey];\n }\n addMetadata(withKey, value) {\n if (!(withKey in this._metadata)) {\n this._metadata[withKey] = value;\n this._watcher.notifyDidChangeMetadata(this, {\n type: types_1.MetadataChangeType.Added,\n key: withKey,\n prevValue: void 0,\n value,\n });\n }\n else {\n const prevValue = this._metadata[withKey];\n this._metadata[withKey] = value;\n this._watcher.notifyDidChangeMetadata(this, { type: types_1.MetadataChangeType.Updated, key: withKey, prevValue, value });\n }\n }\n removeMetadata(withKey) {\n if (withKey in this._metadata) {\n const prevValue = this._metadata[withKey];\n delete this._metadata[withKey];\n this._watcher.notifyDidChangeMetadata(this, {\n type: types_1.MetadataChangeType.Removed,\n key: withKey,\n prevValue,\n value: void 0,\n });\n }\n }\n /**\n * 这里的move操作可能为移动,也可能为重命名\n *\n * @param {ICompositeTreeNode} to\n * @param {string} [name=this.name]\n * @returns\n * @memberof TreeNode\n */\n mv(to, name = this.name) {\n // 一个普通节点必含有父节点,根节点不允许任何操作\n const prevParent = this._parent;\n if (to === null || !CompositeTreeNode.is(to)) {\n this.parent = undefined;\n this.dispose();\n return;\n }\n const didChangeParent = prevParent !== to;\n const prevPath = this.path;\n this._depth = to.depth + 1;\n if (didChangeParent || name !== this.name) {\n this.name = name;\n if (didChangeParent) {\n this._watcher.notifyWillChangeParent(this, prevParent, to);\n }\n if (this.parent) {\n this.parent.unlinkItem(this, true);\n this.parent = to;\n this.parent.insertItem(this);\n }\n if (didChangeParent) {\n this._watcher.notifyDidChangeParent(this, prevParent, to);\n }\n }\n if (this.path !== prevPath) {\n this._watcher.notifyDidChangePath(this);\n }\n }\n get visible() {\n return this._visible;\n }\n setVisible(b) {\n this._visible = b;\n return this;\n }\n dispose() {\n if (this._disposed) {\n return;\n }\n TreeNode.removeTreeNode(this.id, this.path);\n this._disposed = true;\n this._watcher.notifyDidDispose(this);\n }\n}\nexports.TreeNode = TreeNode;\nTreeNode.nextId = (() => {\n let id = 0;\n return () => id++;\n})();\nTreeNode.idToTreeNode = new Map();\nTreeNode.pathToTreeNode = new Map();\nTreeNode.pathToId = new Map();\n// 每颗树都只会在根节点上绑定一个可取消的对象,即同个时间点只能存在一个改变树数据结构的事情\nTreeNode.pathToGlobalTreeState = new Map();\nclass CompositeTreeNode extends TreeNode {\n static defaultSortComparator(a, b) {\n if (a.constructor === b.constructor) {\n return a.name > b.name ? 1 : a.name < b.name ? -1 : 0;\n }\n return CompositeTreeNode.is(a) ? -1 : CompositeTreeNode.is(b) ? 1 : 0;\n }\n static is(node) {\n return !!node && 'children' in node;\n }\n static isRoot(node) {\n return CompositeTreeNode.is(node) && !node.parent;\n }\n generatorWatcher() {\n const emitter = new ide_utils_1.Emitter();\n const onEventChanges = emitter.event;\n const disposeCollection = new ide_utils_1.DisposableCollection();\n const terminateWatch = (path) => {\n this.watchEvents.delete(path);\n };\n const watcher = {\n notifyWillProcessWatchEvent: (target, event) => {\n emitter.fire({ type: types_1.TreeNodeEvent.WillProcessWatchEvent, args: [target, event] });\n },\n notifyWillChangeParent: (target, prevParent, newParent) => {\n emitter.fire({ type: types_1.TreeNodeEvent.WillChangeParent, args: [target, prevParent, newParent] });\n },\n notifyDidChangeParent: (target, prevParent, newParent) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidChangeParent, args: [target, prevParent, newParent] });\n },\n notifyDidDispose: (target) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidDispose, args: [target] });\n },\n notifyDidProcessWatchEvent: (target, event) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidProcessWatchEvent, args: [target, event] });\n },\n notifyDidChangePath: (target) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidChangePath, args: [target] });\n },\n notifyWillChangeExpansionState: (target, nowExpanded) => {\n const isVisible = this.isItemVisibleAtSurface(target);\n emitter.fire({ type: types_1.TreeNodeEvent.WillChangeExpansionState, args: [target, nowExpanded, isVisible] });\n },\n notifyDidChangeExpansionState: (target, nowExpanded) => {\n const isVisible = this.isItemVisibleAtSurface(target);\n emitter.fire({ type: types_1.TreeNodeEvent.DidChangeExpansionState, args: [target, nowExpanded, isVisible] });\n },\n notifyDidChangeMetadata: (target, change) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidChangeMetadata, args: [target, change] });\n },\n notifyDidUpdateBranch: () => {\n emitter.fire({ type: types_1.TreeNodeEvent.BranchDidUpdate, args: [] });\n },\n notifyWillResolveChildren: (target, nowExpanded) => {\n emitter.fire({ type: types_1.TreeNodeEvent.WillResolveChildren, args: [target, nowExpanded] });\n },\n notifyDidResolveChildren: (target, nowExpanded) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidResolveChildren, args: [target, nowExpanded] });\n },\n // 监听所有事件\n on: (event, callback) => {\n const dispose = onEventChanges((data) => {\n if (data.type === event) {\n callback(...data.args);\n }\n });\n disposeCollection.push(dispose);\n return dispose;\n },\n // 监听Watch事件变化\n onWatchEvent: (path, callback) => {\n const terminator = terminateWatch;\n this.watchEvents.set(path, { terminator, callback });\n return terminator;\n },\n dispose: disposeCollection,\n };\n return watcher;\n }\n // parent 为undefined即表示该节点为根节点\n constructor(tree, parent, watcher, optionalMetadata) {\n super(tree, parent, watcher, optionalMetadata);\n this._children = null;\n this._lock = false;\n this.refreshThrottler = new ide_utils_1.ThrottledDelayer(CompositeTreeNode.REFRESH_DELAY);\n this.toRefreshPathQueue = new Set();\n /**\n * 处理 Watch 事件,同时可通过外部手动调 g用节点更新函数进行节点替换,这里为通用的事件管理\n * 如: transferItem,insertItem, unlinkItem等\n * @private\n * @memberof CompositeTreeNode\n */\n this.handleWatchEvent = (event) => tslib_1.__awaiter(this, void 0, void 0, function* () {\n this.watcher.notifyWillProcessWatchEvent(this, event);\n switch (event.type) {\n case types_1.WatchEvent.Moved: {\n const { oldPath, newPath } = event;\n if (typeof oldPath !== 'string') {\n throw new TypeError('Expected oldPath to be a string');\n }\n if (typeof newPath !== 'string') {\n throw new TypeError('Expected newPath to be a string');\n }\n if (Path.isRelative(oldPath)) {\n throw new TypeError('oldPath must be absolute');\n }\n if (Path.isRelative(newPath)) {\n throw new TypeError('newPath must be absolute');\n }\n this.transferItem(oldPath, newPath);\n break;\n }\n case types_1.WatchEvent.Added: {\n const { node } = event;\n if (!TreeNode.is(node)) {\n throw new TypeError('Expected node to be a TreeNode');\n }\n this.insertItem(node);\n break;\n }\n case types_1.WatchEvent.Removed: {\n const { path } = event;\n const pathObject = new Path(path);\n const dirName = pathObject.dir.toString();\n const name = pathObject.base.toString();\n if (dirName === this.path && !!this.children) {\n const item = this.children.find((c) => c.name === name);\n if (item) {\n this.unlinkItem(item);\n }\n }\n break;\n }\n default:\n // 如果当前变化的节点已在数据视图(并非滚动到不可见区域)中不可见,则将该节点折叠,待下次更新即可,\n if (!this.isItemVisibleAtRootSurface(this)) {\n this.isExpanded = false;\n this._children = null;\n }\n else {\n yield this.refresh();\n }\n break;\n }\n this.watcher.notifyDidProcessWatchEvent(this, event);\n });\n this.isExpanded = parent ? false : true;\n this._branchSize = 0;\n if (!parent) {\n this.watchEvents = new Map();\n // 为根节点创建监听器\n this._watcher = this.generatorWatcher();\n this._root = this;\n TreeNode.setTreeNode(this.id, this.path, this);\n }\n else {\n this._watcher = parent.watcher;\n }\n }\n // 重载 name 的 getter/setter,路径改变时需要重新监听文件节点变化\n set name(name) {\n const prevPath = this.path;\n if (!CompositeTreeNode.isRoot(this) && typeof this.watchTerminator === 'function') {\n this.watchTerminator(prevPath);\n this.addMetadata('name', name);\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n }\n else {\n this.addMetadata('name', name);\n }\n // 节点 `name` 变化,更新当前节点的 `path` 属性\n this._path = '';\n }\n get name() {\n // 根节点保证路径不重复\n if (!this.parent) {\n return `root_${this.id}`;\n }\n return this.getMetadata('name');\n }\n // 作为根节点唯一的watcher需要在生成新节点的时候传入\n get watcher() {\n return this._watcher;\n }\n get type() {\n return types_1.TreeNodeType.CompositeTreeNode;\n }\n get children() {\n return this._children;\n }\n get expanded() {\n return this.isExpanded;\n }\n /**\n * 当前可见的分支数量\n *\n * 当节点为展开状态时,其整个分支(递归展平)由上一级的分支(根(位于数据层可见)或处于折叠状态的分支)拥有\n * 当节点为折叠状态时,其整个分支(递归展平)由其上一级父目录展开该节点\n *\n * @readonly\n * @memberof CompositeTreeNode\n */\n get branchSize() {\n return this._branchSize;\n }\n /**\n * 获取当前节点的分支数,一般为顶层节点,如Root上获取\n *\n * @readonly\n * @memberof CompositeTreeNode\n */\n get flattenedBranch() {\n return this._flattenedBranch;\n }\n get lock() {\n return this._lock;\n }\n get root() {\n if ((0, ide_utils_1.isUndefined)(this._root)) {\n this._root = this.getRoot() || null;\n }\n return this._root;\n }\n getRoot() {\n let root = this.parent;\n while (root && root.parent) {\n root = root.parent;\n }\n return root;\n }\n /**\n * 确保此\"目录\"的子级已加载(不影响\"展开\"状态)\n * 如果子级已经加载,则返回的Promise将立即解决\n * 否则,将发出重新加载请求并返回Promise\n * 一旦返回的Promise.resolve,\"CompositeTreeNode#children\" 便可以访问到对于节点\n */\n ensureLoaded(token) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (this._children) {\n return;\n }\n return yield this.hardReloadChildren(token);\n });\n }\n // 展开节点\n setExpanded() {\n return tslib_1.__awaiter(this, arguments, void 0, function* (ensureVisible = true, quiet = false, isOwner = true, token) {\n if (this.disposed) {\n return;\n }\n // 根节点不可折叠\n if (CompositeTreeNode.isRoot(this)) {\n return;\n }\n if (this.isExpanded) {\n return;\n }\n if (isOwner) {\n const state = TreeNode.getGlobalTreeState(this.path);\n state.loadPathCancelToken.cancel();\n state.refreshCancelToken.cancel();\n TreeNode.setGlobalTreeState(this.path, {\n isExpanding: true,\n });\n }\n this.isExpanded = true;\n if (this._children === null) {\n this._watcher.notifyWillResolveChildren(this, this.isExpanded);\n yield this.hardReloadChildren(token);\n this._watcher.notifyDidResolveChildren(this, this.isExpanded);\n // 检查其是否展开;可能同时执行了 setCollapsed 方法\n if (!this.isExpanded || (token === null || token === void 0 ? void 0 : token.isCancellationRequested)) {\n if (isOwner) {\n TreeNode.setGlobalTreeState(this.path, {\n isExpanding: false,\n });\n }\n return;\n }\n }\n if (ensureVisible && this.parent && CompositeTreeNode.is(this.parent)) {\n /**\n * 在传入 ensureVisible = true 时,这里传入的 token 不能取消所有副作用\n * 故在使用 ensureVisible = true 时必须保证 `setExpanded` 与 `setCollapsed` 的独立性\n * 如需要 `await node.setExpanded(true)` 后再执行 `node.setCollapsed()`\n */\n yield this.parent.setExpanded(true, !quiet, false, token);\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n if (isOwner) {\n TreeNode.setGlobalTreeState(this.path, {\n isExpanding: false,\n });\n }\n return;\n }\n if (this.isExpanded) {\n this._watcher.notifyWillChangeExpansionState(this, true);\n // 与根节点合并分支\n this.expandBranch(this, quiet);\n this._watcher.notifyDidChangeExpansionState(this, true);\n }\n if (isOwner) {\n TreeNode.setGlobalTreeState(this.path, {\n isExpanding: false,\n });\n TreeNode.setTreeNode(this.id, this.path, this);\n }\n });\n }\n // 获取当前节点下所有展开的节点路径\n getAllExpandedNodePath() {\n var _a, _b;\n const paths = [];\n let start = 0;\n if (!CompositeTreeNode.isRoot(this)) {\n // 找到节点位置下标,向下进一步查找展开目录\n start = ((_a = this.root) === null || _a === void 0 ? void 0 : _a.getIndexAtTreeNodeId(this.id)) + 1;\n }\n const end = start + this.branchSize;\n for (let i = start; i < end; i++) {\n const node = (_b = this.root) === null || _b === void 0 ? void 0 : _b.getTreeNodeAtIndex(i);\n if (CompositeTreeNode.is(node) && node.expanded) {\n paths.push(node.path);\n }\n }\n return paths;\n }\n // 获取当前节点下所有折叠的节点路径\n getAllCollapsedNodePath() {\n let paths = [];\n if (this.children) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (!CompositeTreeNode.is(child)) {\n continue;\n }\n if (child.isExpanded) {\n paths = paths.concat(child.getAllCollapsedNodePath());\n }\n else {\n paths.push(child.path);\n }\n }\n return paths;\n }\n else {\n return paths;\n }\n }\n /**\n * 处理节点数据,让节点重新加载子节点及初始化 flattenedBranch\n * @param token CancellationToken\n */\n resolveChildrens(token) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n let childrens = this.children;\n let expandedPaths = [];\n try {\n childrens = (yield this._tree.resolveChildren(this)) || [];\n }\n catch (e) {\n childrens = [];\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return false;\n }\n const flatTree = new Array(childrens.length);\n this._children = Array(childrens.length);\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n // 如果存在上一次缓存的节点,则使用缓存节点的 ID\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n this._children[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n }\n (_a = this._children) === null || _a === void 0 ? void 0 : _a.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < childrens.length; i++) {\n flatTree[i] = this._children[i].id;\n }\n const expandedChilds = [];\n for (let i = 0, len = ((_b = this.children) === null || _b === void 0 ? void 0 : _b.length) || 0; i < len; i++) {\n const subChild = (_c = this.children) === null || _c === void 0 ? void 0 : _c[i];\n if (CompositeTreeNode.is(subChild) && subChild.expanded) {\n const paths = yield subChild.resolveChildrens(token);\n if (paths) {\n expandedPaths = expandedPaths.concat(paths);\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n expandedChilds.push(subChild);\n }\n }\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree);\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n }\n return expandedPaths.concat(expandedChilds.map((child) => child.path.toString()));\n });\n }\n updateTreeNodeCache(child) {\n var _a;\n TreeNode.setTreeNode(child.id, child.path, child);\n if (CompositeTreeNode.is(child) && child.expanded && ((_a = child.children) === null || _a === void 0 ? void 0 : _a.length)) {\n for (let i = 0; i < child.children.length; i++) {\n const subChild = child.children[i];\n this.updateTreeNodeCache(subChild);\n }\n }\n }\n /**\n * 静默刷新子节点, 即不触发分支更新事件\n * @param toExpandPaths 待展开的路径\n * @param token CancellationToken\n * @param origin 当 this === origin 时,说明此节点为调用的源头节点\n */\n refreshTreeNodeByPaths() {\n return tslib_1.__awaiter(this, arguments, void 0, function* (toExpandPaths = this.getAllExpandedNodePath(), token, origin) {\n if (!CompositeTreeNode.is(this)) {\n return;\n }\n // 如果某次刷新操作被取消,则下次刷新依旧使用上一次刷新的展开目录进行刷新\n let toExpandPath;\n const originChildren = this.children;\n let childrens = this.children || [];\n if (this.expanded) {\n if (this === origin) {\n try {\n childrens = (yield this._tree.resolveChildren(this)) || [];\n }\n catch (e) {\n childrens = [];\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n if (!this.expanded) {\n // 当请求刷新节点时,如果该节点已经不应该被处理,则清理 Children\n // 下次再被展开时便会自动更新 Children 最新内容\n if (this.children) {\n // 清理子节点,等待下次展开时更新\n if (!!this.children && this.parent) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n child.dispose();\n }\n this._children = null;\n }\n }\n return;\n }\n }\n while ((toExpandPath = toExpandPaths.shift())) {\n const isRelative = toExpandPath.indexOf(`${this.path}${Path.separator}`) > -1;\n if (!isRelative) {\n if (toExpandPath === this.path) {\n toExpandPath = undefined;\n }\n break;\n }\n const child = childrens === null || childrens === void 0 ? void 0 : childrens.find((child) => child.path === toExpandPath);\n // 对于压缩情况的路径需要额外处理一下\n // 如果这里加载的路径是 a/b/c, 有可能目前只加载到 a/b\n if (!child) {\n if (!childrens || childrens.length === 0) {\n break;\n }\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n const isInclude = toExpandPath.indexOf(`${child.path}${Path.separator}`) === 0; // 展开路径包含子节点路径\n if (isInclude && CompositeTreeNode.is(child)) {\n // 包含压缩节点的情况\n if (!CompositeTreeNode.is(child)) {\n // 说明此节点为非折叠节点时不处理\n continue;\n }\n child.isExpanded = true;\n // 加载路径包含当前判断路径,尝试加载该节点再匹配\n const extraExpandedPaths = yield child.resolveChildrens(token);\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n if (extraExpandedPaths) {\n toExpandPaths = toExpandPaths.filter((path) => !extraExpandedPaths.find((a) => a === path));\n }\n if (child.path !== toExpandPath && !toExpandPaths.includes(child.path)) {\n toExpandPaths.unshift(toExpandPath);\n }\n if (toExpandPaths.length > 0) {\n // 不需要重新加载压缩节点的子节点内容\n toExpandPaths =\n (yield child.refreshTreeNodeByPaths([...toExpandPaths], token, origin)) || [];\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n }\n break;\n }\n }\n }\n else if (CompositeTreeNode.is(child)) {\n // 如果节点默认展开,则忽略后续操作\n if (!child.expanded) {\n child.isExpanded = true;\n const extraExpandedPaths = yield child.resolveChildrens(token);\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n if (extraExpandedPaths) {\n toExpandPaths = toExpandPaths.filter((path) => !extraExpandedPaths.find((a) => a.includes(path)));\n }\n if (toExpandPaths.length > 0 && !(token === null || token === void 0 ? void 0 : token.isCancellationRequested)) {\n toExpandPaths =\n (yield child.refreshTreeNodeByPaths([...toExpandPaths], token, origin)) || [];\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n }\n }\n }\n }\n if (toExpandPath) {\n // 仍然存在需要进一步处理的待展开路径\n toExpandPaths.unshift(toExpandPath);\n if (this === origin) {\n // 说明待展开的路径已经不存在,直接处理子节点\n if (originChildren) {\n this.shrinkBranch(this, true);\n for (let i = 0; i < originChildren.length; i++) {\n const child = originChildren[i];\n child === null || child === void 0 ? void 0 : child.dispose();\n }\n }\n const expandedChilds = [];\n const flatTree = new Array(childrens.length);\n this._children = Array(childrens.length);\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n // 如果存在上一次缓存的节点,则使用缓存节点的 ID\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n this._children[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n if (CompositeTreeNode.is(child) && child.expanded) {\n expandedChilds.push(child);\n }\n }\n this._children.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < childrens.length; i++) {\n flatTree[i] = this._children[i].id;\n }\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree, true);\n this.watcher.notifyDidUpdateBranch();\n }\n if (this.parent !== origin) {\n // 将所有子节点合并至第二层 Children 上,减少后续递归拼接带来额外成本\n this.expandBranch(this, true);\n }\n return toExpandPaths;\n }\n else if (CompositeTreeNode.isRoot(this)) {\n if (this.children) {\n this.shrinkBranch(this, true);\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n child === null || child === void 0 ? void 0 : child.dispose();\n }\n }\n const expandedChilds = [];\n const otherChilds = [];\n const flatTree = new Array(childrens.length);\n this._children = Array(childrens.length);\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n // 如果存在上一次缓存的节点,则使用缓存节点的 ID\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n this._children[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n if (CompositeTreeNode.is(child) && child.expanded) {\n if (!child.children) {\n yield child.resolveChildrens(token);\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n }\n expandedChilds.push(child);\n }\n else {\n otherChilds.push(child);\n }\n }\n this._children.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < childrens.length; i++) {\n flatTree[i] = this._children[i].id;\n }\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree, true);\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n this.updateTreeNodeCache(child);\n }\n for (let i = 0; i < otherChilds.length; i++) {\n const child = otherChilds[i];\n this.updateTreeNodeCache(child);\n }\n // 清理上一次监听函数\n if (typeof this.watchTerminator === 'function') {\n this.watchTerminator(this.path);\n }\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n this.watcher.notifyDidUpdateBranch();\n }\n else {\n // 非根节点刷新的情况\n const expandedChilds = [];\n if (this === origin) {\n // 通知节点更新\n if (this.children) {\n // 重置旧的节点分支\n this.shrinkBranch(this, true);\n }\n if (this.children) {\n for (let i = 0, len = this.children.length; i < len; i++) {\n const child = this.children[i];\n child.dispose();\n }\n }\n const flatTree = new Array(childrens.length);\n this._children = Array(childrens.length);\n for (let i = 0, len = childrens.length; i < len; i++) {\n const child = childrens[i];\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n this._children[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n if (CompositeTreeNode.is(child) && child.expanded) {\n expandedChilds.push(child);\n }\n this.updateTreeNodeCache(child);\n }\n this._children.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < childrens.length; i++) {\n flatTree[i] = this._children[i].id;\n }\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree);\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n }\n }\n else {\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n if (child.expanded) {\n expandedChilds.push(child);\n }\n }\n }\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n }\n if (typeof this.watchTerminator === 'function') {\n this.watchTerminator(this.path);\n }\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n if (this === origin) {\n this.expandBranch(this);\n }\n }\n }\n else {\n // 仅需处理存在子节点的情况,否则将会影响刷新后的节点长度\n if (this.children) {\n // 清理子节点,等待下次展开时更新\n if (!!this.children && this.parent) {\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0, len = this.children.length; i < len; i++) {\n const child = this.children[i];\n child.dispose();\n }\n this._children = null;\n }\n }\n return;\n }\n });\n }\n expandedAll() {\n return tslib_1.__awaiter(this, arguments, void 0, function* (collapsedPaths = this.getAllCollapsedNodePath()) {\n // 仅根节点使用\n if (!CompositeTreeNode.isRoot(this)) {\n return;\n }\n collapsedPaths = collapsedPaths.sort((a, b) => Path.pathDepth(a) - Path.pathDepth(b));\n let path;\n while (collapsedPaths.length > 0) {\n path = collapsedPaths.pop();\n const item = TreeNode.getTreeNodeByPath(path);\n if (CompositeTreeNode.is(item)) {\n yield item.setExpanded(false, true);\n }\n }\n // 通知分支树已更新\n this.watcher.notifyDidUpdateBranch();\n });\n }\n collapsedAll() {\n return tslib_1.__awaiter(this, arguments, void 0, function* (expandedPaths = this.getAllExpandedNodePath()) {\n // 仅根节点使用\n if (!CompositeTreeNode.isRoot(this)) {\n return;\n }\n expandedPaths = expandedPaths.sort((a, b) => Path.pathDepth(a) - Path.pathDepth(b));\n let path;\n while (expandedPaths.length > 0) {\n path = expandedPaths.pop();\n const item = TreeNode.getTreeNodeByPath(path);\n if (CompositeTreeNode.is(item)) {\n item.setCollapsed(true);\n }\n }\n // 通知分支树已更新\n this.watcher.notifyDidUpdateBranch();\n });\n }\n // 折叠节点\n setCollapsed(quiet = false) {\n // 根节点不可折叠\n if (CompositeTreeNode.isRoot(this) || this.disposed) {\n return;\n }\n if (!this.isExpanded) {\n return;\n }\n const state = TreeNode.getGlobalTreeState(this.path);\n if (state.isExpanding) {\n // 当节点处于加载子节点过程时,尽管为展开状态,但此时不应该支持折叠节点\n return;\n }\n state.loadPathCancelToken.cancel();\n state.refreshCancelToken.cancel();\n this._watcher.notifyWillChangeExpansionState(this, false);\n if (this._children && this.parent) {\n // 从根节点裁剪分支\n this.shrinkBranch(this, quiet);\n }\n this.isExpanded = false;\n TreeNode.setTreeNode(this.id, this.path, this);\n this._watcher.notifyDidChangeExpansionState(this, false);\n }\n mv(to, name = this.name) {\n const prevPath = this.path;\n super.mv(to, name);\n if (typeof this.watchTerminator === 'function') {\n this.watchTerminator(prevPath);\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n }\n // 同时移动过子节点\n if (this.children) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n child.mv(child.parent, child.name);\n }\n }\n }\n /**\n * 在节点中插入新的节点\n *\n * 直接调用此方法将不会触发onWillHandleWatchEvent和onDidHandleWatchEvent事件\n */\n insertItem(item) {\n if (item.parent !== this) {\n item.mv(this, item.name);\n return;\n }\n if (this.children) {\n for (let i = 0; i < this.children.length; i++) {\n // path / id 是节点唯一标识\n if (this.children[i].path === item.path) {\n this.children[i] = item;\n return;\n }\n }\n }\n const branchSizeIncrease = 1 + (item instanceof CompositeTreeNode && item.expanded ? item._branchSize : 0);\n if (this._children) {\n this._children.push(item);\n this._children.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n }\n this._branchSize += branchSizeIncrease;\n let master = this;\n // 如果该节点无叶子节点,则继续往上查找合适的插入位置\n while (!master._flattenedBranch) {\n if (master.parent) {\n master = master.parent;\n master._branchSize += branchSizeIncrease;\n }\n }\n if (!this._children) {\n return;\n }\n let relativeInsertionIndex = this._children.indexOf(item);\n let absInsertionIndex;\n const leadingSibling = this._children[relativeInsertionIndex - 1];\n if (leadingSibling) {\n const siblingIdx = master._flattenedBranch.indexOf(leadingSibling.id);\n relativeInsertionIndex =\n siblingIdx +\n (leadingSibling instanceof CompositeTreeNode && leadingSibling.expanded ? leadingSibling._branchSize : 0);\n }\n else {\n relativeInsertionIndex = master._flattenedBranch.indexOf(this.id);\n }\n if (relativeInsertionIndex === -1) {\n if (this._branchSize === 1) {\n // 在空Tree中插入节点时,相对插入位置为0\n relativeInsertionIndex = 0;\n }\n }\n // 非空Tree情况下需要+1,为了容纳自身节点位置,在插入节点下方插入新增节点\n absInsertionIndex = relativeInsertionIndex + 1;\n // 空 Tree 情况下需要重置为 0,避免设置 Uint32Array 时超出范围\n if (master._flattenedBranch.length === 0) {\n absInsertionIndex = 0;\n }\n let branch = [item.id];\n if (item instanceof CompositeTreeNode && item.expanded && item._flattenedBranch) {\n branch = branch.concat(item._flattenedBranch);\n item.setFlattenedBranch(null);\n }\n master.setFlattenedBranch(spliceArray(master._flattenedBranch, absInsertionIndex, 0, branch));\n TreeNode.setTreeNode(item.id, item.path, item);\n return item;\n }\n /**\n * 从父节点中移除节点\n *\n * 直接调用此方法将不会触发onWillHandleWatchEvent和onDidHandleWatchEvent事件\n */\n unlinkItem(item, reparenting) {\n var _a;\n if (!this._children) {\n return;\n }\n const idx = this._children.indexOf(item);\n if (idx === -1) {\n return;\n }\n // 当删除时父节点已不存在界面上时,跳过插入操作\n if (!this.isItemVisibleAtRootSurface(this)) {\n return;\n }\n (_a = this._children) === null || _a === void 0 ? void 0 : _a.splice(idx, 1);\n const branchSizeDecrease = 1 + (item instanceof CompositeTreeNode && item.expanded ? item._branchSize : 0);\n this._branchSize -= branchSizeDecrease;\n // 逐级往上查找节点的父节点,并沿途裁剪分支数\n let master = this;\n while (!master._flattenedBranch) {\n if (master.parent) {\n master = master.parent;\n master._branchSize -= branchSizeDecrease;\n }\n }\n const removalBeginIdx = master._flattenedBranch.indexOf(item.id);\n if (removalBeginIdx === -1) {\n return;\n }\n if (item instanceof CompositeTreeNode && item.expanded) {\n item.setFlattenedBranch(master._flattenedBranch.slice(removalBeginIdx + 1, removalBeginIdx + branchSizeDecrease));\n }\n master.setFlattenedBranch(spliceArray(master._flattenedBranch, removalBeginIdx, branchSizeDecrease));\n if (!reparenting && item.parent === this) {\n item.mv(null);\n }\n }\n /**\n * 转换节点路径\n */\n transferItem(oldPath, newPath) {\n var _a;\n const oldP = new Path(oldPath);\n const from = oldP.dir.toString();\n if (from !== this.path) {\n return;\n }\n const name = oldP.base.toString();\n const item = (_a = this._children) === null || _a === void 0 ? void 0 : _a.find((c) => c.name === name);\n if (!item) {\n return;\n }\n const newP = new Path(newPath);\n const to = newP.dir.toString();\n const destDir = to === from ? this : TreeNode.getTreeNodeByPath(to);\n if (!CompositeTreeNode.is(destDir)) {\n this.unlinkItem(item);\n return;\n }\n item.mv(destDir, newP.base.toString());\n return item;\n }\n dispose() {\n // 如果存在对应文件路径下的监听,同样需要清理掉\n if (this.watchEvents) {\n const watcher = this.watchEvents.get(this.path);\n if (watcher) {\n watcher.terminator();\n }\n this.watchEvents.clear();\n }\n if (this._children) {\n // 移除后应该折叠,因为下次初始化默认值为折叠,否则将会导致下次插入异常\n this.isExpanded = false;\n this._children.forEach((child) => {\n child.dispose();\n });\n this._children = null;\n this._flattenedBranch = null;\n }\n super.dispose();\n }\n /**\n * 设置扁平化的分支信息\n */\n setFlattenedBranch(leaves, withoutNotify) {\n this._flattenedBranch = leaves;\n // Root节点才通知更新\n if (CompositeTreeNode.isRoot(this) && !withoutNotify) {\n this.watcher.notifyDidUpdateBranch();\n }\n }\n /**\n * 展开分支节点\n * @param branch 分支节点\n */\n expandBranch(branch, withoutNotify) {\n if (this !== branch) {\n // 但节点为展开状态时进行裁剪\n if (branch._flattenedBranch) {\n this._branchSize += branch._branchSize;\n }\n }\n // 当前节点为折叠状态,更新分支信息\n if (this !== branch && this._flattenedBranch) {\n const injectionStartIdx = this._flattenedBranch.indexOf(branch.id) + 1;\n if (injectionStartIdx === 0) {\n // 中途发生了branch更新事件,此时的_flattenedBranch可能已被更新,即查找不到branch.id\n // 这种情况在父节点发生了多路径目录的创建定位动作下更易复现\n // 例:文件树在执行a/b/c定位操作时需要请求三次数据,而更新操作可能只需要一次\n // 导致就算更新操作后置执行,也可能比定位操作先执行完,同时将_flattenedBranch更新\n // 最终导致此处查询不到对应节点,下面的shrinkBranch同样可能有相同问题,如点击折叠全部功能时\n return;\n }\n this.setFlattenedBranch(spliceArray(this._flattenedBranch, injectionStartIdx, 0, branch._flattenedBranch), withoutNotify);\n // 取消展开分支对于分支的所有权,即最终只会有顶部Root拥有所有分支信息\n branch.setFlattenedBranch(null, withoutNotify);\n }\n else if (this.parent) {\n this.parent.expandBranch(branch, withoutNotify);\n }\n }\n /**\n * 清理分支节点\n * @param branch 分支节点\n */\n shrinkBranch(branch, withoutNotify) {\n if (this !== branch) {\n // 这里的`this`实际上为父节点\n // `this`的分支大小没有改变,仍然具有相同数量的叶子,但是从父级参照系(即根节点)来看,其分支缩小了\n this._branchSize -= branch._branchSize;\n }\n if (this !== branch && this._flattenedBranch) {\n const removalStartIdx = this._flattenedBranch.indexOf(branch.id) + 1;\n if (removalStartIdx === 0) {\n // 中途发生了branch更新事件,此时的_flattenedBranch可能已被更新,即查找不到branch.id\n return;\n }\n // 返回分支对于分支信息所有权,即将折叠的节点信息再次存储于折叠了的节点中\n branch.setFlattenedBranch(this._flattenedBranch.slice(removalStartIdx, removalStartIdx + branch._branchSize), withoutNotify);\n this.setFlattenedBranch(spliceArray(this._flattenedBranch, removalStartIdx, branch._flattenedBranch ? branch._flattenedBranch.length : 0), withoutNotify);\n }\n else if (this.parent) {\n this.parent.shrinkBranch(branch, withoutNotify);\n }\n }\n /**\n * 加载子节点信息\n * 当返回值为 true 时,正常加载完子节点并同步到数据结构中\n * 返回值为 false 时,加载节点的过程被中断\n *\n * @memberof CompositeTreeNode\n */\n hardReloadChildren(token) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n let rawItems;\n const oldPath = this.path;\n try {\n // ! `this.path` maybe changed after `resolveChildren` in file tree compact mode\n rawItems = (yield this._tree.resolveChildren(this)) || [];\n }\n catch (e) {\n rawItems = [];\n }\n // 当获取到新的子节点时,如果当前节点正处于非展开状态时,忽略后续裁切逻辑\n // 后续的 expandBranch 也不应该被响应\n if (!this.expanded || (token === null || token === void 0 ? void 0 : token.isCancellationRequested)) {\n return false;\n }\n if (this.path !== oldPath) {\n // do some clean up\n TreeNode.setGlobalTreeState(oldPath, {\n isExpanding: false,\n isLoadingPath: false,\n isRefreshing: false,\n });\n }\n const expandedChilds = [];\n const flatTree = new Array(rawItems.length);\n const tempChildren = new Array(rawItems.length);\n for (let i = 0; i < rawItems.length; i++) {\n const child = rawItems[i];\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n tempChildren[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n if (CompositeTreeNode.is(child) && child.expanded) {\n if (!child.children) {\n yield child.resolveChildrens(token);\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return false;\n }\n expandedChilds.push(child);\n }\n }\n tempChildren.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < rawItems.length; i++) {\n flatTree[i] = tempChildren[i].id;\n }\n if (this.children) {\n this.shrinkBranch(this);\n }\n if (this.children) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n // The Child maybe `undefined`.\n child === null || child === void 0 ? void 0 : child.dispose();\n }\n }\n for (let i = 0; i < tempChildren.length; i++) {\n this.updateTreeNodeCache(tempChildren[i]);\n }\n this._children = tempChildren;\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree);\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n }\n // 清理上一次监听函数\n if (typeof this.watchTerminator === 'function') {\n this.watchTerminator(this.path);\n }\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n return true;\n });\n }\n moveNode(oldPath, newPath) {\n if (typeof oldPath !== 'string') {\n throw new TypeError('Expected oldPath to be a string');\n }\n if (typeof newPath !== 'string') {\n throw new TypeError('Expected newPath to be a string');\n }\n if (Path.isRelative(oldPath)) {\n throw new TypeError('oldPath must be absolute');\n }\n if (Path.isRelative(newPath)) {\n throw new TypeError('newPath must be absolute');\n }\n return this.transferItem(oldPath, newPath);\n }\n addNode(node) {\n if (!TreeNode.is(node)) {\n throw new TypeError('Expected node to be a TreeNode');\n }\n return this.insertItem(node);\n }\n removeNode(path) {\n const pathObject = new Path(path);\n const dirName = pathObject.dir.toString();\n const name = pathObject.base.toString();\n if (dirName === this.path && !!this.children) {\n const item = this.children.find((c) => c.name === name);\n if (item) {\n this.unlinkItem(item);\n }\n }\n }\n // 当没有传入具体路径时,使用当前展开目录作为刷新路径\n refresh(tokenSource, target) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!CompositeTreeNode.isRoot(this)) {\n // 刷新操作只能从根节点进行,便于对重复的刷新操作进行合并\n return yield this.root.refresh(tokenSource, this);\n }\n const state = TreeNode.getGlobalTreeState(this.path);\n if (state.isLoadingPath || state.isExpanding) {\n return;\n }\n let token;\n if (tokenSource && !tokenSource.token.isCancellationRequested) {\n TreeNode.setGlobalTreeState(this.path, {\n isRefreshing: true,\n refreshCancelToken: tokenSource,\n });\n token = tokenSource.token;\n }\n else {\n if (state.refreshCancelToken.token.isCancellationRequested) {\n const refreshCancelToken = new ide_utils_1.CancellationTokenSource();\n TreeNode.setGlobalTreeState(this.path, {\n isRefreshing: true,\n refreshCancelToken,\n });\n token = refreshCancelToken.token;\n }\n else {\n token = state.refreshCancelToken.token;\n }\n }\n this.toRefreshPathQueue.add((target || this).path);\n yield this.refreshThrottler.trigger(() => this.doRefresh(token));\n TreeNode.setGlobalTreeState(this.path, {\n isRefreshing: false,\n });\n });\n }\n doRefresh(token) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const target = this.getRefreshNode() || this;\n if (!CompositeTreeNode.is(target)) {\n return;\n }\n const paths = target.getAllExpandedNodePath();\n yield target.refreshTreeNodeByPaths(paths, token, target);\n });\n }\n getRefreshNode() {\n let paths = Array.from(this.toRefreshPathQueue);\n this.toRefreshPathQueue.clear();\n if (!paths.length) {\n return this.root;\n }\n // 根据路径层级深度进行排序\n paths = paths.sort((a, b) => {\n const depthA = Path.pathDepth(a);\n const depthB = Path.pathDepth(b);\n return depthA - depthB;\n });\n if (paths.length === 1 || Path.pathDepth(paths[0]) === 1) {\n // 说明刷新队列中包含根节点,直接返回根节点进行刷新\n return TreeNode.getTreeNodeByPath(paths[0]);\n }\n const sortedPaths = paths.map((p) => new Path(p));\n let rootPath = sortedPaths[0];\n for (let i = 1, len = sortedPaths.length; i < len; i++) {\n if (rootPath.isEqualOrParent(sortedPaths[i])) {\n continue;\n }\n else {\n while (!rootPath.isRoot) {\n rootPath = rootPath.dir;\n if (!rootPath || rootPath.isEqualOrParent(sortedPaths[i])) {\n break;\n }\n }\n }\n }\n if (rootPath) {\n return TreeNode.getTreeNodeByPath(rootPath.toString());\n }\n return this.root;\n }\n isItemVisibleAtRootSurface(node) {\n let parent = node;\n while (parent.parent) {\n parent = parent.parent;\n }\n return parent.isItemVisibleAtSurface(node);\n }\n /**\n * 检查节点是否可见,而不是被隐藏在节点中\n *\n * 这里的可见并不表示节点在当前视图中可见,而是在用户滚动到特定位置便可看见\n *\n * 隐藏在节点中可能的原因为其父节点中有一个以上处于折叠状态\n */\n isItemVisibleAtSurface(item) {\n if (item === this) {\n return true;\n }\n return !!this._flattenedBranch && this._flattenedBranch.indexOf(item.id) > -1;\n }\n transformToRelativePath(path) {\n const { splitPath } = Path;\n const pathFlag = splitPath(path);\n pathFlag.shift();\n return pathFlag;\n }\n /**\n * 根据路径展开节点树\n * @memberof CompositeTreeNode\n */\n loadTreeNodeByPath(path_1) {\n return tslib_1.__awaiter(this, arguments, void 0, function* (path, quiet = false) {\n if (!CompositeTreeNode.isRoot(this)) {\n return;\n }\n const state = TreeNode.getGlobalTreeState(this.path);\n if (state.isExpanding) {\n return;\n }\n state.refreshCancelToken.cancel();\n state.loadPathCancelToken.cancel();\n const loadPathCancelToken = new ide_utils_1.CancellationTokenSource();\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: true,\n loadPathCancelToken,\n });\n const token = loadPathCancelToken.token;\n const flattenedBranchChilds = [];\n const { splitPath, isRelative } = Path;\n const pathFlag = isRelative(path) ? splitPath(path) : this.transformToRelativePath(path);\n if (pathFlag.length === 0) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return this;\n }\n if (!this.children) {\n yield this.ensureLoaded(token);\n }\n if (token.isCancellationRequested) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return;\n }\n let next = this._children;\n let preItem;\n let preItemPath = '';\n let name;\n while (next && (name = pathFlag.shift())) {\n let item = next.find((c) => c.name.indexOf(name) === 0);\n if (item) {\n if (CompositeTreeNode.is(item)) {\n item._watcher.notifyWillChangeExpansionState(item, true);\n item.isExpanded = true;\n if (!item.children) {\n yield item.resolveChildrens(token);\n if (token.isCancellationRequested) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return;\n }\n }\n flattenedBranchChilds.push(item);\n item._watcher.notifyDidChangeExpansionState(item, true);\n }\n if (pathFlag.length === 0) {\n preItem = item;\n break;\n }\n }\n // 可能展开后路径发生了变化, 需要重新处理一下当前加载路径\n if (!item && preItem) {\n const compactPath = splitPath(preItem.name).slice(1);\n if (compactPath[0] === name) {\n compactPath.shift();\n while (compactPath.length > 0) {\n if (compactPath[0] === pathFlag[0]) {\n compactPath.shift();\n pathFlag.shift();\n }\n else {\n break;\n }\n }\n name = pathFlag.shift();\n item = next.find((c) => c.name.indexOf(name) === 0);\n }\n }\n // 最终加载到的路径节点\n if (!item || (!CompositeTreeNode.is(item) && pathFlag.length > 0)) {\n break;\n }\n if (CompositeTreeNode.is(item)) {\n const isCompactName = item.name.indexOf(Path.separator) > 0;\n if (isCompactName) {\n const compactPath = splitPath(item.name).slice(1);\n while (compactPath.length > 0) {\n if (compactPath[0] === pathFlag[0]) {\n compactPath.shift();\n pathFlag.shift();\n }\n else {\n break;\n }\n }\n }\n if (!item._children) {\n preItemPath = item.path;\n if (CompositeTreeNode.is(item)) {\n item.isExpanded = true;\n if (!item.children) {\n yield item.resolveChildrens(token);\n if (token.isCancellationRequested) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return;\n }\n }\n flattenedBranchChilds.push(item);\n }\n }\n if (item && pathFlag.length === 0) {\n preItem = item;\n break;\n }\n else {\n if (!!preItemPath && preItemPath !== item.path) {\n // 说明此时已发生了路径压缩,如从 a -> a/b/c\n // 需要根据路径变化移除对应的展开路径, 这里只需考虑短变长场景\n const prePaths = splitPath(preItemPath);\n const nextPaths = splitPath(item.path);\n if (nextPaths.length > prePaths.length) {\n pathFlag.splice(0, nextPaths.length - prePaths.length);\n }\n }\n next = item._children;\n preItem = item;\n }\n }\n }\n if (preItem) {\n let child;\n if (preItem.disposed) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return;\n }\n while ((child = flattenedBranchChilds.pop())) {\n child.expandBranch(child, true);\n if (flattenedBranchChilds.length === 0) {\n this.updateTreeNodeCache(child);\n }\n }\n if (!quiet) {\n this.watcher.notifyDidUpdateBranch();\n }\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return preItem;\n }\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n });\n }\n /**\n * 根据节点获取节点ID下标位置\n * @param {number} id\n * @returns\n * @memberof CompositeTreeNode\n */\n getIndexAtTreeNodeId(id) {\n if (this._flattenedBranch) {\n return this._flattenedBranch.indexOf(id);\n }\n return -1;\n }\n /**\n * 根据节点获取节点下标位置\n * @param {ITreeNodeOrCompositeTreeNode} node\n * @returns\n * @memberof CompositeTreeNode\n */\n getIndexAtTreeNode(node) {\n if (this._flattenedBranch) {\n return this._flattenedBranch.indexOf(node.id);\n }\n return -1;\n }\n /**\n * 根据下标位置获取节点\n * @param {number} index\n * @returns\n * @memberof CompositeTreeNode\n */\n getTreeNodeAtIndex(index) {\n var _a;\n const id = (_a = this._flattenedBranch) === null || _a === void 0 ? void 0 : _a[index];\n if (!id) {\n return undefined;\n }\n return TreeNode.getTreeNodeById(id);\n }\n /**\n * 根据节点ID获取节点\n * @param {number} id\n * @returns\n * @memberof CompositeTreeNode\n */\n getTreeNodeById(id) {\n return TreeNode.getTreeNodeById(id);\n }\n /**\n * 根据节点路径获取节点\n * @param {string} path\n * @returns\n * @memberof CompositeTreeNode\n */\n getTreeNodeByPath(path) {\n return TreeNode.getTreeNodeByPath(path);\n }\n}\nexports.CompositeTreeNode = CompositeTreeNode;\nCompositeTreeNode.REFRESH_DELAY = 200;\n\n\n//# sourceURL=webpack://@opensumi/ide-components/./src/recycle-tree/tree/TreeNode.ts?");
6301
+ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CompositeTreeNode = exports.TreeNode = exports.BranchOperatorStatus = void 0;\nexports.spliceArray = spliceArray;\nconst tslib_1 = __webpack_require__(/*! tslib */ \"../../node_modules/tslib/tslib.es6.mjs\");\n/* eslint-disable @typescript-eslint/prefer-for-of */\nconst ide_utils_1 = __webpack_require__(/*! @opensumi/ide-utils */ \"../utils/lib/index.js\");\nconst types_1 = __webpack_require__(/*! ../types */ \"./src/recycle-tree/types/index.ts\");\nconst { Path } = ide_utils_1.path;\n/**\n * 裁剪数组\n *\n * @param arr 裁剪数组\n * @param start 起始位置\n * @param deleteCount 删除或替换位置\n * @param items 插入的数组\n */\nfunction spliceArray(arr, start, deleteCount = 0, items) {\n const a = arr.slice(0);\n a.splice(start, deleteCount, ...(items || []));\n return a;\n}\nvar BranchOperatorStatus;\n(function (BranchOperatorStatus) {\n BranchOperatorStatus[BranchOperatorStatus[\"EXPANDED\"] = 1] = \"EXPANDED\";\n BranchOperatorStatus[BranchOperatorStatus[\"SHRINKED\"] = 2] = \"SHRINKED\";\n})(BranchOperatorStatus || (exports.BranchOperatorStatus = BranchOperatorStatus = {}));\nclass TreeNode {\n static is(node) {\n return !!node && 'depth' in node && 'name' in node && 'path' in node && 'id' in node;\n }\n static getTreeNodeById(id) {\n return TreeNode.idToTreeNode.get(id);\n }\n static getTreeNodeByPath(path) {\n return TreeNode.pathToTreeNode.get(path);\n }\n static setTreeNode(id, path, node) {\n TreeNode.idToTreeNode.set(id, node);\n TreeNode.pathToTreeNode.set(path, node);\n }\n static removeTreeNode(id, path) {\n TreeNode.idToTreeNode.delete(id);\n TreeNode.pathToTreeNode.delete(path);\n }\n static getIdByPath(path) {\n return TreeNode.pathToId.get(path);\n }\n static setIdByPath(path, id) {\n return TreeNode.pathToId.set(path, id);\n }\n static getGlobalTreeState(path) {\n let state = TreeNode.pathToGlobalTreeState.get(path);\n if (!state) {\n state = {\n isExpanding: false,\n isLoadingPath: false,\n isRefreshing: false,\n refreshCancelToken: new ide_utils_1.CancellationTokenSource(),\n loadPathCancelToken: new ide_utils_1.CancellationTokenSource(),\n };\n }\n return state;\n }\n static setGlobalTreeState(path, updateState) {\n let state = TreeNode.pathToGlobalTreeState.get(path);\n if (!state) {\n state = {\n isExpanding: false,\n isLoadingPath: false,\n isRefreshing: false,\n refreshCancelToken: new ide_utils_1.CancellationTokenSource(),\n loadPathCancelToken: new ide_utils_1.CancellationTokenSource(),\n };\n }\n state = Object.assign(Object.assign({}, state), updateState);\n TreeNode.pathToGlobalTreeState.set(path, state);\n return state;\n }\n constructor(tree, parent, watcher, optionalMetadata) {\n this._uid = TreeNode.nextId();\n this._parent = parent;\n this._tree = tree;\n this._disposed = false;\n this._visible = true;\n this._metadata = Object.assign({}, (optionalMetadata || {}));\n this._depth = parent ? parent.depth + 1 : 0;\n if (watcher) {\n this._watcher = watcher;\n }\n else if (parent) {\n this._watcher = parent.watcher;\n }\n }\n get disposed() {\n return this._disposed;\n }\n /**\n * 获取基础信息\n */\n get depth() {\n return this._depth;\n }\n get parent() {\n return this._parent;\n }\n set parent(node) {\n this._parent = node;\n // 节点 `parent` 变化,更新当前节点的 `path` 属性\n this._path = '';\n }\n get type() {\n return types_1.TreeNodeType.TreeNode;\n }\n get id() {\n return this._uid;\n }\n set id(id) {\n this._uid = id;\n }\n get displayName() {\n return this.name;\n }\n /**\n * 由于 Tree 对于唯一路径的 path 的依赖\n * 在传入 `name` 值时必须保证其在路径上的唯一性\n * 一般不建议手动管理 `name`,采用默认值即可\n */\n get name() {\n if (!this.parent) {\n return `root_${this.id}`;\n }\n return this.getMetadata('name') || String(this.id);\n }\n set name(name) {\n this.addMetadata('name', name);\n // 节点 `name` 变化,更新当前节点的 `path` 属性\n this._path = '';\n }\n // 节点绝对路径\n get path() {\n if (!this._path) {\n if (!this.parent) {\n this._path = this.name.startsWith(Path.separator) ? this.name : `${Path.separator}${this.name}`;\n }\n else {\n this._path = this.name.startsWith(Path.separator)\n ? `${this.parent.path}${this.name}`\n : `${this.parent.path}${Path.separator}${this.name}`;\n }\n }\n return this._path;\n }\n get checkboxInfo() {\n return {\n checked: false,\n tooltip: '',\n accessibilityInformation: this.accessibilityInformation,\n };\n }\n get accessibilityInformation() {\n return {\n label: this.name,\n role: 'treeitem',\n };\n }\n getMetadata(withKey) {\n if (withKey === 'name' && !this._metadata[withKey]) {\n this._metadata[withKey] = String(TreeNode.nextId());\n }\n return this._metadata[withKey];\n }\n addMetadata(withKey, value) {\n if (!(withKey in this._metadata)) {\n this._metadata[withKey] = value;\n this._watcher.notifyDidChangeMetadata(this, {\n type: types_1.MetadataChangeType.Added,\n key: withKey,\n prevValue: void 0,\n value,\n });\n }\n else {\n const prevValue = this._metadata[withKey];\n this._metadata[withKey] = value;\n this._watcher.notifyDidChangeMetadata(this, { type: types_1.MetadataChangeType.Updated, key: withKey, prevValue, value });\n }\n }\n removeMetadata(withKey) {\n if (withKey in this._metadata) {\n const prevValue = this._metadata[withKey];\n delete this._metadata[withKey];\n this._watcher.notifyDidChangeMetadata(this, {\n type: types_1.MetadataChangeType.Removed,\n key: withKey,\n prevValue,\n value: void 0,\n });\n }\n }\n /**\n * 这里的move操作可能为移动,也可能为重命名\n *\n * @param {ICompositeTreeNode} to\n * @param {string} [name=this.name]\n * @returns\n * @memberof TreeNode\n */\n mv(to, name = this.name) {\n // 一个普通节点必含有父节点,根节点不允许任何操作\n const prevParent = this._parent;\n if (to === null || !CompositeTreeNode.is(to)) {\n this.parent = undefined;\n this.dispose();\n return;\n }\n const didChangeParent = prevParent !== to;\n const prevPath = this.path;\n this._depth = to.depth + 1;\n if (didChangeParent || name !== this.name) {\n this.name = name;\n if (didChangeParent) {\n this._watcher.notifyWillChangeParent(this, prevParent, to);\n }\n if (this.parent) {\n this.parent.unlinkItem(this, true);\n this.parent = to;\n this.parent.insertItem(this);\n }\n if (didChangeParent) {\n this._watcher.notifyDidChangeParent(this, prevParent, to);\n }\n }\n if (this.path !== prevPath) {\n this._watcher.notifyDidChangePath(this);\n }\n }\n get visible() {\n return this._visible;\n }\n setVisible(b) {\n this._visible = b;\n return this;\n }\n dispose() {\n if (this._disposed) {\n return;\n }\n TreeNode.removeTreeNode(this.id, this.path);\n this._disposed = true;\n this._watcher.notifyDidDispose(this);\n }\n}\nexports.TreeNode = TreeNode;\nTreeNode.nextId = (() => {\n let id = 0;\n return () => id++;\n})();\nTreeNode.idToTreeNode = new Map();\nTreeNode.pathToTreeNode = new Map();\nTreeNode.pathToId = new Map();\n// 每颗树都只会在根节点上绑定一个可取消的对象,即同个时间点只能存在一个改变树数据结构的事情\nTreeNode.pathToGlobalTreeState = new Map();\nclass CompositeTreeNode extends TreeNode {\n static defaultSortComparator(a, b) {\n if (a.constructor === b.constructor) {\n return a.name > b.name ? 1 : a.name < b.name ? -1 : 0;\n }\n return CompositeTreeNode.is(a) ? -1 : CompositeTreeNode.is(b) ? 1 : 0;\n }\n static is(node) {\n return !!node && 'children' in node;\n }\n static isRoot(node) {\n return CompositeTreeNode.is(node) && !node.parent;\n }\n generatorWatcher() {\n const emitter = new ide_utils_1.Emitter();\n const onEventChanges = emitter.event;\n const disposeCollection = new ide_utils_1.DisposableCollection();\n const terminateWatch = (path) => {\n this.watchEvents.delete(path);\n };\n const watcher = {\n notifyWillProcessWatchEvent: (target, event) => {\n emitter.fire({ type: types_1.TreeNodeEvent.WillProcessWatchEvent, args: [target, event] });\n },\n notifyWillChangeParent: (target, prevParent, newParent) => {\n emitter.fire({ type: types_1.TreeNodeEvent.WillChangeParent, args: [target, prevParent, newParent] });\n },\n notifyDidChangeParent: (target, prevParent, newParent) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidChangeParent, args: [target, prevParent, newParent] });\n },\n notifyDidDispose: (target) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidDispose, args: [target] });\n },\n notifyDidProcessWatchEvent: (target, event) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidProcessWatchEvent, args: [target, event] });\n },\n notifyDidChangePath: (target) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidChangePath, args: [target] });\n },\n notifyWillChangeExpansionState: (target, nowExpanded) => {\n const isVisible = this.isItemVisibleAtSurface(target);\n emitter.fire({ type: types_1.TreeNodeEvent.WillChangeExpansionState, args: [target, nowExpanded, isVisible] });\n },\n notifyDidChangeExpansionState: (target, nowExpanded) => {\n const isVisible = this.isItemVisibleAtSurface(target);\n emitter.fire({ type: types_1.TreeNodeEvent.DidChangeExpansionState, args: [target, nowExpanded, isVisible] });\n },\n notifyDidChangeMetadata: (target, change) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidChangeMetadata, args: [target, change] });\n },\n notifyDidUpdateBranch: () => {\n emitter.fire({ type: types_1.TreeNodeEvent.BranchDidUpdate, args: [] });\n },\n notifyWillResolveChildren: (target, nowExpanded) => {\n emitter.fire({ type: types_1.TreeNodeEvent.WillResolveChildren, args: [target, nowExpanded] });\n },\n notifyDidResolveChildren: (target, nowExpanded) => {\n emitter.fire({ type: types_1.TreeNodeEvent.DidResolveChildren, args: [target, nowExpanded] });\n },\n // 监听所有事件\n on: (event, callback) => {\n const dispose = onEventChanges((data) => {\n if (data.type === event) {\n callback(...data.args);\n }\n });\n disposeCollection.push(dispose);\n return dispose;\n },\n // 监听Watch事件变化\n onWatchEvent: (path, callback) => {\n const terminator = terminateWatch;\n this.watchEvents.set(path, { terminator, callback });\n return terminator;\n },\n dispose: disposeCollection,\n };\n return watcher;\n }\n // parent 为undefined即表示该节点为根节点\n constructor(tree, parent, watcher, optionalMetadata) {\n super(tree, parent, watcher, optionalMetadata);\n this._children = null;\n this._lock = false;\n this.refreshThrottler = new ide_utils_1.ThrottledDelayer(CompositeTreeNode.REFRESH_DELAY);\n this.toRefreshPathQueue = new Set();\n /**\n * 处理 Watch 事件,同时可通过外部手动调 g用节点更新函数进行节点替换,这里为通用的事件管理\n * 如: transferItem,insertItem, unlinkItem等\n * @private\n * @memberof CompositeTreeNode\n */\n this.handleWatchEvent = (event) => tslib_1.__awaiter(this, void 0, void 0, function* () {\n this.watcher.notifyWillProcessWatchEvent(this, event);\n switch (event.type) {\n case types_1.WatchEvent.Moved: {\n const { oldPath, newPath } = event;\n if (typeof oldPath !== 'string') {\n throw new TypeError('Expected oldPath to be a string');\n }\n if (typeof newPath !== 'string') {\n throw new TypeError('Expected newPath to be a string');\n }\n if (Path.isRelative(oldPath)) {\n throw new TypeError('oldPath must be absolute');\n }\n if (Path.isRelative(newPath)) {\n throw new TypeError('newPath must be absolute');\n }\n this.transferItem(oldPath, newPath);\n break;\n }\n case types_1.WatchEvent.Added: {\n const { node } = event;\n if (!TreeNode.is(node)) {\n throw new TypeError('Expected node to be a TreeNode');\n }\n this.insertItem(node);\n break;\n }\n case types_1.WatchEvent.Removed: {\n const { path } = event;\n const pathObject = new Path(path);\n const dirName = pathObject.dir.toString();\n const name = pathObject.base.toString();\n if (dirName === this.path && !!this.children) {\n const item = this.children.find((c) => c.name === name);\n if (item) {\n this.unlinkItem(item);\n }\n }\n break;\n }\n default:\n // 如果当前变化的节点已在数据视图(并非滚动到不可见区域)中不可见,则将该节点折叠,待下次更新即可,\n if (!this.isItemVisibleAtRootSurface(this)) {\n this.isExpanded = false;\n this._children = null;\n }\n else {\n yield this.refresh();\n }\n break;\n }\n this.watcher.notifyDidProcessWatchEvent(this, event);\n });\n this.isExpanded = parent ? false : true;\n this._branchSize = 0;\n if (!parent) {\n this.watchEvents = new Map();\n // 为根节点创建监听器\n this._watcher = this.generatorWatcher();\n this._root = this;\n TreeNode.setTreeNode(this.id, this.path, this);\n }\n else {\n this._watcher = parent.watcher;\n }\n }\n // 重载 name 的 getter/setter,路径改变时需要重新监听文件节点变化\n set name(name) {\n const prevPath = this.path;\n if (!CompositeTreeNode.isRoot(this) && typeof this.watchTerminator === 'function') {\n this.watchTerminator(prevPath);\n this.addMetadata('name', name);\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n }\n else {\n this.addMetadata('name', name);\n }\n // 节点 `name` 变化,更新当前节点的 `path` 属性\n this._path = '';\n }\n get name() {\n // 根节点保证路径不重复\n if (!this.parent) {\n return `root_${this.id}`;\n }\n return this.getMetadata('name');\n }\n // 作为根节点唯一的watcher需要在生成新节点的时候传入\n get watcher() {\n return this._watcher;\n }\n get type() {\n return types_1.TreeNodeType.CompositeTreeNode;\n }\n get children() {\n return this._children;\n }\n get expanded() {\n return this.isExpanded;\n }\n /**\n * 当前可见的分支数量\n *\n * 当节点为展开状态时,其整个分支(递归展平)由上一级的分支(根(位于数据层可见)或处于折叠状态的分支)拥有\n * 当节点为折叠状态时,其整个分支(递归展平)由其上一级父目录展开该节点\n *\n * @readonly\n * @memberof CompositeTreeNode\n */\n get branchSize() {\n return this._branchSize;\n }\n /**\n * 获取当前节点的分支数,一般为顶层节点,如Root上获取\n *\n * @readonly\n * @memberof CompositeTreeNode\n */\n get flattenedBranch() {\n return this._flattenedBranch;\n }\n get lock() {\n return this._lock;\n }\n get root() {\n if ((0, ide_utils_1.isUndefined)(this._root)) {\n this._root = this.getRoot() || null;\n }\n return this._root;\n }\n getRoot() {\n let root = this.parent;\n while (root && root.parent) {\n root = root.parent;\n }\n return root;\n }\n /**\n * 确保此“目录”的子级已加载(不影响“展开”状态)\n * 如果子级已经加载,则返回的Promise将立即解决\n * 否则,将发出重新加载请求并返回Promise\n * 一旦返回的Promise.resolve,“CompositeTreeNode#children” 便可以访问到对于节点\n */\n ensureLoaded(token) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (this._children) {\n return;\n }\n return yield this.hardReloadChildren(token);\n });\n }\n // 展开节点\n setExpanded() {\n return tslib_1.__awaiter(this, arguments, void 0, function* (ensureVisible = true, quiet = false, isOwner = true, token) {\n if (this.disposed) {\n return;\n }\n // 根节点不可折叠\n if (CompositeTreeNode.isRoot(this)) {\n return;\n }\n if (this.isExpanded) {\n return;\n }\n if (isOwner) {\n const state = TreeNode.getGlobalTreeState(this.path);\n state.loadPathCancelToken.cancel();\n state.refreshCancelToken.cancel();\n TreeNode.setGlobalTreeState(this.path, {\n isExpanding: true,\n });\n }\n this.isExpanded = true;\n if (this._children === null) {\n this._watcher.notifyWillResolveChildren(this, this.isExpanded);\n yield this.hardReloadChildren(token);\n this._watcher.notifyDidResolveChildren(this, this.isExpanded);\n // 检查其是否展开;可能同时执行了 setCollapsed 方法\n if (!this.isExpanded || (token === null || token === void 0 ? void 0 : token.isCancellationRequested)) {\n if (isOwner) {\n TreeNode.setGlobalTreeState(this.path, {\n isExpanding: false,\n });\n }\n return;\n }\n }\n if (ensureVisible && this.parent && CompositeTreeNode.is(this.parent)) {\n /**\n * 在传入 ensureVisible = true 时,这里传入的 token 不能取消所有副作用\n * 故在使用 ensureVisible = true 时必须保证 `setExpanded` 与 `setCollapsed` 的独立性\n * 如需要 `await node.setExpanded(true)` 后再执行 `node.setCollapsed()`\n */\n yield this.parent.setExpanded(true, !quiet, false, token);\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n if (isOwner) {\n TreeNode.setGlobalTreeState(this.path, {\n isExpanding: false,\n });\n }\n return;\n }\n if (this.isExpanded) {\n this._watcher.notifyWillChangeExpansionState(this, true);\n // 与根节点合并分支\n this.expandBranch(this, quiet);\n this._watcher.notifyDidChangeExpansionState(this, true);\n }\n if (isOwner) {\n TreeNode.setGlobalTreeState(this.path, {\n isExpanding: false,\n });\n TreeNode.setTreeNode(this.id, this.path, this);\n }\n });\n }\n // 获取当前节点下所有展开的节点路径\n getAllExpandedNodePath() {\n var _a, _b;\n const paths = [];\n let start = 0;\n if (!CompositeTreeNode.isRoot(this)) {\n // 找到节点位置下标,向下进一步查找展开目录\n start = ((_a = this.root) === null || _a === void 0 ? void 0 : _a.getIndexAtTreeNodeId(this.id)) + 1;\n }\n const end = start + this.branchSize;\n for (let i = start; i < end; i++) {\n const node = (_b = this.root) === null || _b === void 0 ? void 0 : _b.getTreeNodeAtIndex(i);\n if (CompositeTreeNode.is(node) && node.expanded) {\n paths.push(node.path);\n }\n }\n return paths;\n }\n // 获取当前节点下所有折叠的节点路径\n getAllCollapsedNodePath() {\n let paths = [];\n if (this.children) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (!CompositeTreeNode.is(child)) {\n continue;\n }\n if (child.isExpanded) {\n paths = paths.concat(child.getAllCollapsedNodePath());\n }\n else {\n paths.push(child.path);\n }\n }\n return paths;\n }\n else {\n return paths;\n }\n }\n /**\n * 处理节点数据,让节点重新加载子节点及初始化 flattenedBranch\n * @param token CancellationToken\n */\n resolveChildrens(token) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n let childrens = this.children;\n let expandedPaths = [];\n try {\n childrens = (yield this._tree.resolveChildren(this)) || [];\n }\n catch (e) {\n childrens = [];\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return false;\n }\n const flatTree = new Array(childrens.length);\n this._children = Array(childrens.length);\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n // 如果存在上一次缓存的节点,则使用缓存节点的 ID\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n this._children[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n }\n (_a = this._children) === null || _a === void 0 ? void 0 : _a.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < childrens.length; i++) {\n flatTree[i] = this._children[i].id;\n }\n const expandedChilds = [];\n for (let i = 0, len = ((_b = this.children) === null || _b === void 0 ? void 0 : _b.length) || 0; i < len; i++) {\n const subChild = (_c = this.children) === null || _c === void 0 ? void 0 : _c[i];\n if (CompositeTreeNode.is(subChild) && subChild.expanded) {\n const paths = yield subChild.resolveChildrens(token);\n if (paths) {\n expandedPaths = expandedPaths.concat(paths);\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n expandedChilds.push(subChild);\n }\n }\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree);\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n }\n return expandedPaths.concat(expandedChilds.map((child) => child.path.toString()));\n });\n }\n updateTreeNodeCache(child) {\n var _a;\n TreeNode.setTreeNode(child.id, child.path, child);\n if (CompositeTreeNode.is(child) && child.expanded && ((_a = child.children) === null || _a === void 0 ? void 0 : _a.length)) {\n for (let i = 0; i < child.children.length; i++) {\n const subChild = child.children[i];\n this.updateTreeNodeCache(subChild);\n }\n }\n }\n /**\n * 静默刷新子节点, 即不触发分支更新事件\n * @param toExpandPaths 待展开的路径\n * @param token CancellationToken\n * @param origin 当 this === origin 时,说明此节点为调用的源头节点\n */\n refreshTreeNodeByPaths() {\n return tslib_1.__awaiter(this, arguments, void 0, function* (toExpandPaths = this.getAllExpandedNodePath(), token, origin) {\n if (!CompositeTreeNode.is(this)) {\n return;\n }\n // 如果某次刷新操作被取消,则下次刷新依旧使用上一次刷新的展开目录进行刷新\n let toExpandPath;\n const originChildren = this.children;\n let childrens = this.children || [];\n if (this.expanded) {\n if (this === origin) {\n try {\n childrens = (yield this._tree.resolveChildren(this)) || [];\n }\n catch (e) {\n childrens = [];\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n if (!this.expanded) {\n // 当请求刷新节点时,如果该节点已经不应该被处理,则清理 Children\n // 下次再被展开时便会自动更新 Children 最新内容\n if (this.children) {\n // 清理子节点,等待下次展开时更新\n if (!!this.children && this.parent) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n child.dispose();\n }\n this._children = null;\n }\n }\n return;\n }\n }\n while ((toExpandPath = toExpandPaths.shift())) {\n const isRelative = toExpandPath.indexOf(`${this.path}${Path.separator}`) > -1;\n if (!isRelative) {\n if (toExpandPath === this.path) {\n toExpandPath = undefined;\n }\n break;\n }\n const child = childrens === null || childrens === void 0 ? void 0 : childrens.find((child) => child.path === toExpandPath);\n // 对于压缩情况的路径需要额外处理一下\n // 如果这里加载的路径是 a/b/c, 有可能目前只加载到 a/b\n if (!child) {\n if (!childrens || childrens.length === 0) {\n break;\n }\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n const isInclude = toExpandPath.indexOf(`${child.path}${Path.separator}`) === 0; // 展开路径包含子节点路径\n if (isInclude && CompositeTreeNode.is(child)) {\n // 包含压缩节点的情况\n if (!CompositeTreeNode.is(child)) {\n // 说明此节点为非折叠节点时不处理\n continue;\n }\n child.isExpanded = true;\n // 加载路径包含当前判断路径,尝试加载该节点再匹配\n const extraExpandedPaths = yield child.resolveChildrens(token);\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n if (extraExpandedPaths) {\n toExpandPaths = toExpandPaths.filter((path) => !extraExpandedPaths.find((a) => a === path));\n }\n if (child.path !== toExpandPath && !toExpandPaths.includes(child.path)) {\n toExpandPaths.unshift(toExpandPath);\n }\n if (toExpandPaths.length > 0) {\n // 不需要重新加载压缩节点的子节点内容\n toExpandPaths =\n (yield child.refreshTreeNodeByPaths([...toExpandPaths], token, origin)) || [];\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n }\n break;\n }\n }\n }\n else if (CompositeTreeNode.is(child)) {\n // 如果节点默认展开,则忽略后续操作\n if (!child.expanded) {\n child.isExpanded = true;\n const extraExpandedPaths = yield child.resolveChildrens(token);\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n if (extraExpandedPaths) {\n toExpandPaths = toExpandPaths.filter((path) => !extraExpandedPaths.find((a) => a.includes(path)));\n }\n if (toExpandPaths.length > 0 && !(token === null || token === void 0 ? void 0 : token.isCancellationRequested)) {\n toExpandPaths =\n (yield child.refreshTreeNodeByPaths([...toExpandPaths], token, origin)) || [];\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n }\n }\n }\n }\n if (toExpandPath) {\n // 仍然存在需要进一步处理的待展开路径\n toExpandPaths.unshift(toExpandPath);\n if (this === origin) {\n // 说明待展开的路径已经不存在,直接处理子节点\n if (originChildren) {\n this.shrinkBranch(this, true);\n for (let i = 0; i < originChildren.length; i++) {\n const child = originChildren[i];\n child === null || child === void 0 ? void 0 : child.dispose();\n }\n }\n const expandedChilds = [];\n const flatTree = new Array(childrens.length);\n this._children = Array(childrens.length);\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n // 如果存在上一次缓存的节点,则使用缓存节点的 ID\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n this._children[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n if (CompositeTreeNode.is(child) && child.expanded) {\n expandedChilds.push(child);\n }\n }\n this._children.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < childrens.length; i++) {\n flatTree[i] = this._children[i].id;\n }\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree, true);\n this.watcher.notifyDidUpdateBranch();\n }\n if (this.parent !== origin) {\n // 将所有子节点合并至第二层 Children 上,减少后续递归拼接带来额外成本\n this.expandBranch(this, true);\n }\n return toExpandPaths;\n }\n else if (CompositeTreeNode.isRoot(this)) {\n if (this.children) {\n this.shrinkBranch(this, true);\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n child === null || child === void 0 ? void 0 : child.dispose();\n }\n }\n const expandedChilds = [];\n const otherChilds = [];\n const flatTree = new Array(childrens.length);\n this._children = Array(childrens.length);\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n // 如果存在上一次缓存的节点,则使用缓存节点的 ID\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n this._children[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n if (CompositeTreeNode.is(child) && child.expanded) {\n if (!child.children) {\n yield child.resolveChildrens(token);\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return;\n }\n }\n expandedChilds.push(child);\n }\n else {\n otherChilds.push(child);\n }\n }\n this._children.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < childrens.length; i++) {\n flatTree[i] = this._children[i].id;\n }\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree, true);\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n this.updateTreeNodeCache(child);\n }\n for (let i = 0; i < otherChilds.length; i++) {\n const child = otherChilds[i];\n this.updateTreeNodeCache(child);\n }\n // 清理上一次监听函数\n if (typeof this.watchTerminator === 'function') {\n this.watchTerminator(this.path);\n }\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n this.watcher.notifyDidUpdateBranch();\n }\n else {\n // 非根节点刷新的情况\n const expandedChilds = [];\n if (this === origin) {\n // 通知节点更新\n if (this.children) {\n // 重置旧的节点分支\n this.shrinkBranch(this, true);\n }\n if (this.children) {\n for (let i = 0, len = this.children.length; i < len; i++) {\n const child = this.children[i];\n child.dispose();\n }\n }\n const flatTree = new Array(childrens.length);\n this._children = Array(childrens.length);\n for (let i = 0, len = childrens.length; i < len; i++) {\n const child = childrens[i];\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n this._children[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n if (CompositeTreeNode.is(child) && child.expanded) {\n expandedChilds.push(child);\n }\n this.updateTreeNodeCache(child);\n }\n this._children.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < childrens.length; i++) {\n flatTree[i] = this._children[i].id;\n }\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree);\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n }\n }\n else {\n for (let i = 0; i < childrens.length; i++) {\n const child = childrens[i];\n if (child.expanded) {\n expandedChilds.push(child);\n }\n }\n }\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n }\n if (typeof this.watchTerminator === 'function') {\n this.watchTerminator(this.path);\n }\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n if (this === origin) {\n this.expandBranch(this);\n }\n }\n }\n else {\n // 仅需处理存在子节点的情况,否则将会影响刷新后的节点长度\n if (this.children) {\n // 清理子节点,等待下次展开时更新\n if (!!this.children && this.parent) {\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0, len = this.children.length; i < len; i++) {\n const child = this.children[i];\n child.dispose();\n }\n this._children = null;\n }\n }\n return;\n }\n });\n }\n expandedAll() {\n return tslib_1.__awaiter(this, arguments, void 0, function* (collapsedPaths = this.getAllCollapsedNodePath()) {\n // 仅根节点使用\n if (!CompositeTreeNode.isRoot(this)) {\n return;\n }\n collapsedPaths = collapsedPaths.sort((a, b) => Path.pathDepth(a) - Path.pathDepth(b));\n let path;\n while (collapsedPaths.length > 0) {\n path = collapsedPaths.pop();\n const item = TreeNode.getTreeNodeByPath(path);\n if (CompositeTreeNode.is(item)) {\n yield item.setExpanded(false, true);\n }\n }\n // 通知分支树已更新\n this.watcher.notifyDidUpdateBranch();\n });\n }\n collapsedAll() {\n return tslib_1.__awaiter(this, arguments, void 0, function* (expandedPaths = this.getAllExpandedNodePath()) {\n // 仅根节点使用\n if (!CompositeTreeNode.isRoot(this)) {\n return;\n }\n expandedPaths = expandedPaths.sort((a, b) => Path.pathDepth(a) - Path.pathDepth(b));\n let path;\n while (expandedPaths.length > 0) {\n path = expandedPaths.pop();\n const item = TreeNode.getTreeNodeByPath(path);\n if (CompositeTreeNode.is(item)) {\n item.setCollapsed(true);\n }\n }\n // 通知分支树已更新\n this.watcher.notifyDidUpdateBranch();\n });\n }\n // 折叠节点\n setCollapsed(quiet = false) {\n // 根节点不可折叠\n if (CompositeTreeNode.isRoot(this) || this.disposed) {\n return;\n }\n if (!this.isExpanded) {\n return;\n }\n const state = TreeNode.getGlobalTreeState(this.path);\n if (state.isExpanding) {\n // 当节点处于加载子节点过程时,尽管为展开状态,但此时不应该支持折叠节点\n return;\n }\n state.loadPathCancelToken.cancel();\n state.refreshCancelToken.cancel();\n this._watcher.notifyWillChangeExpansionState(this, false);\n if (this._children && this.parent) {\n // 从根节点裁剪分支\n this.shrinkBranch(this, quiet);\n }\n this.isExpanded = false;\n TreeNode.setTreeNode(this.id, this.path, this);\n this._watcher.notifyDidChangeExpansionState(this, false);\n }\n mv(to, name = this.name) {\n const prevPath = this.path;\n super.mv(to, name);\n if (typeof this.watchTerminator === 'function') {\n this.watchTerminator(prevPath);\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n }\n // 同时移动过子节点\n if (this.children) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n child.mv(child.parent, child.name);\n }\n }\n }\n /**\n * 在节点中插入新的节点\n *\n * 直接调用此方法将不会触发onWillHandleWatchEvent和onDidHandleWatchEvent事件\n */\n insertItem(item) {\n if (item.parent !== this) {\n item.mv(this, item.name);\n return;\n }\n if (this.children) {\n for (let i = 0; i < this.children.length; i++) {\n // path / id 是节点唯一标识\n if (this.children[i].path === item.path) {\n this.children[i] = item;\n return;\n }\n }\n }\n const branchSizeIncrease = 1 + (item instanceof CompositeTreeNode && item.expanded ? item._branchSize : 0);\n if (this._children) {\n this._children.push(item);\n this._children.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n }\n this._branchSize += branchSizeIncrease;\n let master = this;\n // 如果该节点无叶子节点,则继续往上查找合适的插入位置\n while (!master._flattenedBranch) {\n if (master.parent) {\n master = master.parent;\n master._branchSize += branchSizeIncrease;\n }\n }\n if (!this._children) {\n return;\n }\n let relativeInsertionIndex = this._children.indexOf(item);\n let absInsertionIndex;\n const leadingSibling = this._children[relativeInsertionIndex - 1];\n if (leadingSibling) {\n const siblingIdx = master._flattenedBranch.indexOf(leadingSibling.id);\n relativeInsertionIndex =\n siblingIdx +\n (leadingSibling instanceof CompositeTreeNode && leadingSibling.expanded ? leadingSibling._branchSize : 0);\n }\n else {\n relativeInsertionIndex = master._flattenedBranch.indexOf(this.id);\n }\n if (relativeInsertionIndex === -1) {\n if (this._branchSize === 1) {\n // 在空Tree中插入节点时,相对插入位置为0\n relativeInsertionIndex = 0;\n }\n }\n // 非空Tree情况下需要+1,为了容纳自身节点位置,在插入节点下方插入新增节点\n absInsertionIndex = relativeInsertionIndex + 1;\n // 空 Tree 情况下需要重置为 0,避免设置 Uint32Array 时超出范围\n if (master._flattenedBranch.length === 0) {\n absInsertionIndex = 0;\n }\n let branch = [item.id];\n if (item instanceof CompositeTreeNode && item.expanded && item._flattenedBranch) {\n branch = branch.concat(item._flattenedBranch);\n item.setFlattenedBranch(null);\n }\n master.setFlattenedBranch(spliceArray(master._flattenedBranch, absInsertionIndex, 0, branch));\n TreeNode.setTreeNode(item.id, item.path, item);\n return item;\n }\n /**\n * 从父节点中移除节点\n *\n * 直接调用此方法将不会触发onWillHandleWatchEvent和onDidHandleWatchEvent事件\n */\n unlinkItem(item, reparenting) {\n var _a;\n if (!this._children) {\n return;\n }\n const idx = this._children.indexOf(item);\n if (idx === -1) {\n return;\n }\n // 当删除时父节点已不存在界面上时,跳过插入操作\n if (!this.isItemVisibleAtRootSurface(this)) {\n return;\n }\n (_a = this._children) === null || _a === void 0 ? void 0 : _a.splice(idx, 1);\n const branchSizeDecrease = 1 + (item instanceof CompositeTreeNode && item.expanded ? item._branchSize : 0);\n this._branchSize -= branchSizeDecrease;\n // 逐级往上查找节点的父节点,并沿途裁剪分支数\n let master = this;\n while (!master._flattenedBranch) {\n if (master.parent) {\n master = master.parent;\n master._branchSize -= branchSizeDecrease;\n }\n }\n const removalBeginIdx = master._flattenedBranch.indexOf(item.id);\n if (removalBeginIdx === -1) {\n return;\n }\n if (item instanceof CompositeTreeNode && item.expanded) {\n item.setFlattenedBranch(master._flattenedBranch.slice(removalBeginIdx + 1, removalBeginIdx + branchSizeDecrease));\n }\n master.setFlattenedBranch(spliceArray(master._flattenedBranch, removalBeginIdx, branchSizeDecrease));\n if (!reparenting && item.parent === this) {\n item.mv(null);\n }\n }\n /**\n * 转换节点路径\n */\n transferItem(oldPath, newPath) {\n var _a;\n const oldP = new Path(oldPath);\n const from = oldP.dir.toString();\n if (from !== this.path) {\n return;\n }\n const name = oldP.base.toString();\n const item = (_a = this._children) === null || _a === void 0 ? void 0 : _a.find((c) => c.name === name);\n if (!item) {\n return;\n }\n const newP = new Path(newPath);\n const to = newP.dir.toString();\n const destDir = to === from ? this : TreeNode.getTreeNodeByPath(to);\n if (!CompositeTreeNode.is(destDir)) {\n this.unlinkItem(item);\n return;\n }\n item.mv(destDir, newP.base.toString());\n return item;\n }\n dispose() {\n // 如果存在对应文件路径下的监听,同样需要清理掉\n if (this.watchEvents) {\n const watcher = this.watchEvents.get(this.path);\n if (watcher) {\n watcher.terminator();\n }\n this.watchEvents.clear();\n }\n if (this._children) {\n // 移除后应该折叠,因为下次初始化默认值为折叠,否则将会导致下次插入异常\n this.isExpanded = false;\n this._children.forEach((child) => {\n child.dispose();\n });\n this._children = null;\n this._flattenedBranch = null;\n }\n super.dispose();\n }\n /**\n * 设置扁平化的分支信息\n */\n setFlattenedBranch(leaves, withoutNotify) {\n this._flattenedBranch = leaves;\n // Root节点才通知更新\n if (CompositeTreeNode.isRoot(this) && !withoutNotify) {\n this.watcher.notifyDidUpdateBranch();\n }\n }\n /**\n * 展开分支节点\n * @param branch 分支节点\n */\n expandBranch(branch, withoutNotify) {\n if (this !== branch) {\n // 但节点为展开状态时进行裁剪\n if (branch._flattenedBranch) {\n this._branchSize += branch._branchSize;\n }\n }\n // 当前节点为折叠状态,更新分支信息\n if (this !== branch && this._flattenedBranch) {\n const injectionStartIdx = this._flattenedBranch.indexOf(branch.id) + 1;\n if (injectionStartIdx === 0) {\n // 中途发生了branch更新事件,此时的_flattenedBranch可能已被更新,即查找不到branch.id\n // 这种情况在父节点发生了多路径目录的创建定位动作下更易复现\n // 例:文件树在执行a/b/c定位操作时需要请求三次数据,而更新操作可能只需要一次\n // 导致就算更新操作后置执行,也可能比定位操作先执行完,同时将_flattenedBranch更新\n // 最终导致此处查询不到对应节点,下面的shrinkBranch同样可能有相同问题,如点击折叠全部功能时\n return;\n }\n this.setFlattenedBranch(spliceArray(this._flattenedBranch, injectionStartIdx, 0, branch._flattenedBranch), withoutNotify);\n // 取消展开分支对于分支的所有权,即最终只会有顶部Root拥有所有分支信息\n branch.setFlattenedBranch(null, withoutNotify);\n }\n else if (this.parent) {\n this.parent.expandBranch(branch, withoutNotify);\n }\n }\n /**\n * 清理分支节点\n * @param branch 分支节点\n */\n shrinkBranch(branch, withoutNotify) {\n if (this !== branch) {\n // 这里的`this`实际上为父节点\n // `this`的分支大小没有改变,仍然具有相同数量的叶子,但是从父级参照系(即根节点)来看,其分支缩小了\n this._branchSize -= branch._branchSize;\n }\n if (this !== branch && this._flattenedBranch) {\n const removalStartIdx = this._flattenedBranch.indexOf(branch.id) + 1;\n if (removalStartIdx === 0) {\n // 中途发生了branch更新事件,此时的_flattenedBranch可能已被更新,即查找不到branch.id\n return;\n }\n // 返回分支对于分支信息所有权,即将折叠的节点信息再次存储于折叠了的节点中\n branch.setFlattenedBranch(this._flattenedBranch.slice(removalStartIdx, removalStartIdx + branch._branchSize), withoutNotify);\n this.setFlattenedBranch(spliceArray(this._flattenedBranch, removalStartIdx, branch._flattenedBranch ? branch._flattenedBranch.length : 0), withoutNotify);\n }\n else if (this.parent) {\n this.parent.shrinkBranch(branch, withoutNotify);\n }\n }\n /**\n * 加载子节点信息\n * 当返回值为 true 时,正常加载完子节点并同步到数据结构中\n * 返回值为 false 时,加载节点的过程被中断\n *\n * @memberof CompositeTreeNode\n */\n hardReloadChildren(token) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n let rawItems;\n const oldPath = this.path;\n try {\n // ! `this.path` maybe changed after `resolveChildren` in file tree compact mode\n rawItems = (yield this._tree.resolveChildren(this)) || [];\n }\n catch (e) {\n rawItems = [];\n }\n // 当获取到新的子节点时,如果当前节点正处于非展开状态时,忽略后续裁切逻辑\n // 后续的 expandBranch 也不应该被响应\n if (!this.expanded || (token === null || token === void 0 ? void 0 : token.isCancellationRequested)) {\n return false;\n }\n if (this.path !== oldPath) {\n // do some clean up\n TreeNode.setGlobalTreeState(oldPath, {\n isExpanding: false,\n isLoadingPath: false,\n isRefreshing: false,\n });\n }\n const expandedChilds = [];\n const flatTree = new Array(rawItems.length);\n const tempChildren = new Array(rawItems.length);\n for (let i = 0; i < rawItems.length; i++) {\n const child = rawItems[i];\n child.id = TreeNode.getIdByPath(child.path) || child.id;\n tempChildren[i] = child;\n TreeNode.setIdByPath(child.path, child.id);\n if (CompositeTreeNode.is(child) && child.expanded) {\n if (!child.children) {\n yield child.resolveChildrens(token);\n }\n if (token === null || token === void 0 ? void 0 : token.isCancellationRequested) {\n return false;\n }\n expandedChilds.push(child);\n }\n }\n tempChildren.sort(this._tree.sortComparator || CompositeTreeNode.defaultSortComparator);\n for (let i = 0; i < rawItems.length; i++) {\n flatTree[i] = tempChildren[i].id;\n }\n if (this.children) {\n this.shrinkBranch(this);\n }\n if (this.children) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n // The Child maybe `undefined`.\n child === null || child === void 0 ? void 0 : child.dispose();\n }\n }\n for (let i = 0; i < tempChildren.length; i++) {\n this.updateTreeNodeCache(tempChildren[i]);\n }\n this._children = tempChildren;\n this._branchSize = flatTree.length;\n this.setFlattenedBranch(flatTree);\n for (let i = 0; i < expandedChilds.length; i++) {\n const child = expandedChilds[i];\n child.expandBranch(child, true);\n }\n // 清理上一次监听函数\n if (typeof this.watchTerminator === 'function') {\n this.watchTerminator(this.path);\n }\n this.watchTerminator = this.watcher.onWatchEvent(this.path, this.handleWatchEvent);\n return true;\n });\n }\n moveNode(oldPath, newPath) {\n if (typeof oldPath !== 'string') {\n throw new TypeError('Expected oldPath to be a string');\n }\n if (typeof newPath !== 'string') {\n throw new TypeError('Expected newPath to be a string');\n }\n if (Path.isRelative(oldPath)) {\n throw new TypeError('oldPath must be absolute');\n }\n if (Path.isRelative(newPath)) {\n throw new TypeError('newPath must be absolute');\n }\n return this.transferItem(oldPath, newPath);\n }\n addNode(node) {\n if (!TreeNode.is(node)) {\n throw new TypeError('Expected node to be a TreeNode');\n }\n return this.insertItem(node);\n }\n removeNode(path) {\n const pathObject = new Path(path);\n const dirName = pathObject.dir.toString();\n const name = pathObject.base.toString();\n if (dirName === this.path && !!this.children) {\n const item = this.children.find((c) => c.name === name);\n if (item) {\n this.unlinkItem(item);\n }\n }\n }\n // 当没有传入具体路径时,使用当前展开目录作为刷新路径\n refresh(tokenSource, target) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n if (!CompositeTreeNode.isRoot(this)) {\n // 刷新操作只能从根节点进行,便于对重复的刷新操作进行合并\n return yield this.root.refresh(tokenSource, this);\n }\n const state = TreeNode.getGlobalTreeState(this.path);\n if (state.isLoadingPath || state.isExpanding) {\n return;\n }\n let token;\n if (tokenSource && !tokenSource.token.isCancellationRequested) {\n TreeNode.setGlobalTreeState(this.path, {\n isRefreshing: true,\n refreshCancelToken: tokenSource,\n });\n token = tokenSource.token;\n }\n else {\n if (state.refreshCancelToken.token.isCancellationRequested) {\n const refreshCancelToken = new ide_utils_1.CancellationTokenSource();\n TreeNode.setGlobalTreeState(this.path, {\n isRefreshing: true,\n refreshCancelToken,\n });\n token = refreshCancelToken.token;\n }\n else {\n token = state.refreshCancelToken.token;\n }\n }\n this.toRefreshPathQueue.add((target || this).path);\n yield this.refreshThrottler.trigger(() => this.doRefresh(token));\n TreeNode.setGlobalTreeState(this.path, {\n isRefreshing: false,\n });\n });\n }\n doRefresh(token) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const target = this.getRefreshNode() || this;\n if (!CompositeTreeNode.is(target)) {\n return;\n }\n const paths = target.getAllExpandedNodePath();\n yield target.refreshTreeNodeByPaths(paths, token, target);\n });\n }\n getRefreshNode() {\n let paths = Array.from(this.toRefreshPathQueue);\n this.toRefreshPathQueue.clear();\n if (!paths.length) {\n return this.root;\n }\n // 根据路径层级深度进行排序\n paths = paths.sort((a, b) => {\n const depthA = Path.pathDepth(a);\n const depthB = Path.pathDepth(b);\n return depthA - depthB;\n });\n if (paths.length === 1 || Path.pathDepth(paths[0]) === 1) {\n // 说明刷新队列中包含根节点,直接返回根节点进行刷新\n return TreeNode.getTreeNodeByPath(paths[0]);\n }\n const sortedPaths = paths.map((p) => new Path(p));\n let rootPath = sortedPaths[0];\n for (let i = 1, len = sortedPaths.length; i < len; i++) {\n if (rootPath.isEqualOrParent(sortedPaths[i])) {\n continue;\n }\n else {\n while (!rootPath.isRoot) {\n rootPath = rootPath.dir;\n if (!rootPath || rootPath.isEqualOrParent(sortedPaths[i])) {\n break;\n }\n }\n }\n }\n if (rootPath) {\n return TreeNode.getTreeNodeByPath(rootPath.toString());\n }\n return this.root;\n }\n isItemVisibleAtRootSurface(node) {\n let parent = node;\n while (parent.parent) {\n parent = parent.parent;\n }\n return parent.isItemVisibleAtSurface(node);\n }\n /**\n * 检查节点是否可见,而不是被隐藏在节点中\n *\n * 这里的可见并不表示节点在当前视图中可见,而是在用户滚动到特定位置便可看见\n *\n * 隐藏在节点中可能的原因为其父节点中有一个以上处于折叠状态\n */\n isItemVisibleAtSurface(item) {\n if (item === this) {\n return true;\n }\n return !!this._flattenedBranch && this._flattenedBranch.indexOf(item.id) > -1;\n }\n transformToRelativePath(path) {\n const { splitPath } = Path;\n const pathFlag = splitPath(path);\n pathFlag.shift();\n return pathFlag;\n }\n /**\n * 根据路径展开节点树\n * @memberof CompositeTreeNode\n */\n loadTreeNodeByPath(path_1) {\n return tslib_1.__awaiter(this, arguments, void 0, function* (path, quiet = false) {\n if (!CompositeTreeNode.isRoot(this)) {\n return;\n }\n const state = TreeNode.getGlobalTreeState(this.path);\n if (state.isExpanding) {\n return;\n }\n state.refreshCancelToken.cancel();\n state.loadPathCancelToken.cancel();\n const loadPathCancelToken = new ide_utils_1.CancellationTokenSource();\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: true,\n loadPathCancelToken,\n });\n const token = loadPathCancelToken.token;\n const flattenedBranchChilds = [];\n const { splitPath, isRelative } = Path;\n const pathFlag = isRelative(path) ? splitPath(path) : this.transformToRelativePath(path);\n if (pathFlag.length === 0) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return this;\n }\n if (!this.children) {\n yield this.ensureLoaded(token);\n }\n if (token.isCancellationRequested) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return;\n }\n let next = this._children;\n let preItem;\n let preItemPath = '';\n let name;\n while (next && (name = pathFlag.shift())) {\n let item = next.find((c) => c.name.indexOf(name) === 0);\n if (item) {\n if (CompositeTreeNode.is(item)) {\n item._watcher.notifyWillChangeExpansionState(item, true);\n item.isExpanded = true;\n if (!item.children) {\n yield item.resolveChildrens(token);\n if (token.isCancellationRequested) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return;\n }\n }\n flattenedBranchChilds.push(item);\n item._watcher.notifyDidChangeExpansionState(item, true);\n }\n if (pathFlag.length === 0) {\n preItem = item;\n break;\n }\n }\n // 可能展开后路径发生了变化, 需要重新处理一下当前加载路径\n if (!item && preItem) {\n const compactPath = splitPath(preItem.name).slice(1);\n if (compactPath[0] === name) {\n compactPath.shift();\n while (compactPath.length > 0) {\n if (compactPath[0] === pathFlag[0]) {\n compactPath.shift();\n pathFlag.shift();\n }\n else {\n break;\n }\n }\n name = pathFlag.shift();\n item = next.find((c) => c.name.indexOf(name) === 0);\n }\n }\n // 最终加载到的路径节点\n if (!item || (!CompositeTreeNode.is(item) && pathFlag.length > 0)) {\n break;\n }\n if (CompositeTreeNode.is(item)) {\n const isCompactName = item.name.indexOf(Path.separator) > 0;\n if (isCompactName) {\n const compactPath = splitPath(item.name).slice(1);\n while (compactPath.length > 0) {\n if (compactPath[0] === pathFlag[0]) {\n compactPath.shift();\n pathFlag.shift();\n }\n else {\n break;\n }\n }\n }\n if (!item._children) {\n preItemPath = item.path;\n if (CompositeTreeNode.is(item)) {\n item.isExpanded = true;\n if (!item.children) {\n yield item.resolveChildrens(token);\n if (token.isCancellationRequested) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return;\n }\n }\n flattenedBranchChilds.push(item);\n }\n }\n if (item && pathFlag.length === 0) {\n preItem = item;\n break;\n }\n else {\n if (!!preItemPath && preItemPath !== item.path) {\n // 说明此时已发生了路径压缩,如从 a -> a/b/c\n // 需要根据路径变化移除对应的展开路径, 这里只需考虑短变长场景\n const prePaths = splitPath(preItemPath);\n const nextPaths = splitPath(item.path);\n if (nextPaths.length > prePaths.length) {\n pathFlag.splice(0, nextPaths.length - prePaths.length);\n }\n }\n next = item._children;\n preItem = item;\n }\n }\n }\n if (preItem) {\n let child;\n if (preItem.disposed) {\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return;\n }\n while ((child = flattenedBranchChilds.pop())) {\n child.expandBranch(child, true);\n if (flattenedBranchChilds.length === 0) {\n this.updateTreeNodeCache(child);\n }\n }\n if (!quiet) {\n this.watcher.notifyDidUpdateBranch();\n }\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n return preItem;\n }\n TreeNode.setGlobalTreeState(this.path, {\n isLoadingPath: false,\n });\n });\n }\n /**\n * 根据节点获取节点ID下标位置\n * @param {number} id\n * @returns\n * @memberof CompositeTreeNode\n */\n getIndexAtTreeNodeId(id) {\n if (this._flattenedBranch) {\n return this._flattenedBranch.indexOf(id);\n }\n return -1;\n }\n /**\n * 根据节点获取节点下标位置\n * @param {ITreeNodeOrCompositeTreeNode} node\n * @returns\n * @memberof CompositeTreeNode\n */\n getIndexAtTreeNode(node) {\n if (this._flattenedBranch) {\n return this._flattenedBranch.indexOf(node.id);\n }\n return -1;\n }\n /**\n * 根据下标位置获取节点\n * @param {number} index\n * @returns\n * @memberof CompositeTreeNode\n */\n getTreeNodeAtIndex(index) {\n var _a;\n const id = (_a = this._flattenedBranch) === null || _a === void 0 ? void 0 : _a[index];\n if (!id) {\n return undefined;\n }\n return TreeNode.getTreeNodeById(id);\n }\n /**\n * 根据节点ID获取节点\n * @param {number} id\n * @returns\n * @memberof CompositeTreeNode\n */\n getTreeNodeById(id) {\n return TreeNode.getTreeNodeById(id);\n }\n /**\n * 根据节点路径获取节点\n * @param {string} path\n * @returns\n * @memberof CompositeTreeNode\n */\n getTreeNodeByPath(path) {\n return TreeNode.getTreeNodeByPath(path);\n }\n}\nexports.CompositeTreeNode = CompositeTreeNode;\nCompositeTreeNode.REFRESH_DELAY = 200;\n\n\n//# sourceURL=webpack://@opensumi/ide-components/./src/recycle-tree/tree/TreeNode.ts?");
6302
6302
 
6303
6303
  /***/ }),
6304
6304
 
@@ -138,10 +138,10 @@ export declare class CompositeTreeNode extends TreeNode implements ICompositeTre
138
138
  get root(): ICompositeTreeNode | null;
139
139
  private getRoot;
140
140
  /**
141
- * 确保此"目录"的子级已加载(不影响"展开"状态)
141
+ * 确保此“目录”的子级已加载(不影响“展开”状态)
142
142
  * 如果子级已经加载,则返回的Promise将立即解决
143
143
  * 否则,将发出重新加载请求并返回Promise
144
- * 一旦返回的Promise.resolve,"CompositeTreeNode#children" 便可以访问到对于节点
144
+ * 一旦返回的Promise.resolve,“CompositeTreeNode#children 便可以访问到对于节点
145
145
  */
146
146
  ensureLoaded(token?: CancellationToken): Promise<boolean | undefined>;
147
147
  setExpanded(ensureVisible?: boolean, quiet?: boolean, isOwner?: boolean, token?: CancellationToken): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNode.d.ts","sourceRoot":"","sources":["../../../src/recycle-tree/tree/TreeNode.ts"],"names":[],"mappings":"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"}
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;AAE7B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAElB,KAAK,EACL,SAAS,EACT,4BAA4B,EAC5B,YAAY,EAIZ,YAAY,EAGZ,YAAY,EACZ,wBAAwB,EAEzB,MAAM,UAAU,CAAC;AAGlB;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,SAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,YAIjG;AAED,oBAAY,oBAAoB;IAC9B,QAAQ,IAAI;IACZ,QAAQ,IAAA;CACT;AAED,MAAM,MAAM,2BAA2B,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,uBAAuB,CAAC;IAC5C,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC/C;AAED,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAc,MAAM,eAGf;WAES,EAAE,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,SAAS;WAIhC,eAAe,CAAC,EAAE,EAAE,MAAM;WAI1B,iBAAiB,CAAC,IAAI,EAAE,MAAM;WAI9B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ;WAKpD,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;WAKvC,WAAW,CAAC,IAAI,EAAE,MAAM;WAIxB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;WAIpC,kBAAkB,CAAC,IAAI,EAAE,MAAM;WAc/B,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB;IAmBpF,OAAc,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAa;IAClF,OAAc,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAa;IACpF,OAAc,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAExD,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA4C;IAEhF,OAAO,CAAC,OAAO,CAAiC;IAEhD,OAAO,CAAC,SAAS,CAEf;IAEF,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAU;IAE3B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAExB,SAAS,aACP,IAAI,EAAE,KAAK,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,YAAY,EACtB,gBAAgB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAgB3C,IAAI,QAAQ,YAEX;IAED;;OAEG;IACH,IAAI,KAAK,WAER;IAED,IAAI,MAAM,IAIO,kBAAkB,GAAG,SAAS,CAF9C;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,SAAS,EAI9C;IAED,IAAI,IAAI,iBAEP;IAED,IAAI,EAAE,IAIK,MAAM,CAFhB;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAEhB;IAED,IAAI,WAAW,WAEd;IAED;;;;OAIG;IACH,IAAI,IAAI,IAOO,MAAM,CAFpB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAIpB;IAGD,IAAI,IAAI,IAAI,MAAM,CAWjB;IAED,IAAI,YAAY,IAAI,wBAAwB,GAAG,SAAS,CAMvD;IAED,IAAI,wBAAwB,IAAI,yBAAyB,CAKxD;IAEM,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG;IAOjC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAgBvC,cAAc,CAAC,OAAO,EAAE,MAAM;IAarC;;;;;;;OAOG;IACI,EAAE,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,EAAE,IAAI,GAAE,MAAkB;IAiCjE,IAAW,OAAO,IAAI,OAAO,CAE5B;IAEM,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAK5B,OAAO;CASf;AAED,qBAAa,iBAAkB,SAAQ,QAAS,YAAW,kBAAkB;IAC3E,OAAO,CAAC,MAAM,CAAC,qBAAqB;WAOtB,EAAE,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,kBAAkB;WAIzC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IAIxC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAO;IAEnC,SAAS,CAAC,SAAS,EAAE,4BAA4B,EAAE,GAAG,IAAI,CAAQ;IAElE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAkB;IAE1C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAA4B;IAEzC,OAAO,CAAC,eAAe,CAAyB;IAEzC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,UAAU,EAAE,OAAO,CAAC;IAE3B,OAAO,CAAC,gBAAgB,CAAiF;IACzG,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,SAAS,CAAC,gBAAgB;gBA6ExB,IAAI,EAAE,KAAK,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,YAAY,EACtB,gBAAgB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAiB3C,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAWpB;IAED,IAAI,IAAI,IAbO,MAAM,CAmBpB;IAGD,IAAI,OAAO,iBAEV;IAED,IAAI,IAAI,iBAEP;IAED,IAAI,QAAQ,0CAEX;IAED,IAAI,QAAQ,YAEX;IAED;;;;;;;;OAQG;IACH,IAAI,UAAU,WAEb;IAED;;;;;OAKG;IACH,IAAI,eAAe,oBAElB;IAED,IAAI,IAAI,YAEP;IAED,IAAI,IAAI,8BAKP;IAED,OAAO,CAAC,OAAO;IAQf;;;;;OAKG;IACU,YAAY,CAAC,KAAK,CAAC,EAAE,iBAAiB;IAQtC,WAAW,CAAC,aAAa,UAAO,EAAE,KAAK,UAAQ,EAAE,OAAO,UAAO,EAAE,KAAK,CAAC,EAAE,iBAAiB;IAoEvG,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,uBAAuB;IAoB/B;;;OAGG;YACW,gBAAgB;IAmD9B,OAAO,CAAC,mBAAmB;IAU3B;;;;;OAKG;YACW,sBAAsB;IA2RvB,WAAW,CAAC,cAAc,GAAE,MAAM,EAAmC;IAkBrE,YAAY,CAAC,aAAa,GAAE,MAAM,EAAkC;IAmB1E,YAAY,CAAC,KAAK,UAAQ;IAyB1B,EAAE,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,GAAE,MAAkB;IAgB1D;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,4BAA4B;IAgEpD;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,4BAA4B,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI;IAyClF;;OAEG;IACH,OAAO,CAAC,YAAY;IAsBb,OAAO;IAqBd;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,EAAE,OAAO;IAQ7E;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,OAAO;IA6BzE;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,OAAO;IA8BzE;;;;;;OAMG;IACU,kBAAkB,CAAC,KAAK,CAAC,EAAE,iBAAiB;IAkFlD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAgBzC,OAAO,CAAC,IAAI,EAAE,QAAQ;IAOtB,UAAU,CAAC,IAAI,EAAE,MAAM;IAY9B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAuDtB;IAGW,OAAO,CAAC,WAAW,CAAC,EAAE,uBAAuB,EAAE,MAAM,CAAC,EAAE,iBAAiB;YAmCxE,SAAS;IASvB,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,0BAA0B;IAQlC;;;;;;OAMG;IACI,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO;IAO1E,OAAO,CAAC,uBAAuB;IAO/B;;;OAGG;IACU,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC;IA8J/G;;;;;OAKG;IACI,oBAAoB,CAAC,EAAE,EAAE,MAAM;IAOtC;;;;;OAKG;IACI,kBAAkB,CAAC,IAAI,EAAE,4BAA4B;IAO5D;;;;;OAKG;IACI,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAQvC;;;;;OAKG;IACI,eAAe,CAAC,EAAE,EAAE,MAAM;IAIjC;;;;;OAKG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM;CAGtC"}
@@ -15,14 +15,9 @@ const { Path } = ide_utils_1.path;
15
15
  * @param items 插入的数组
16
16
  */
17
17
  function spliceArray(arr, start, deleteCount = 0, items) {
18
- // 如果没有修改操作,直接返回原数组
19
- if (deleteCount === 0 && (!items || items.length === 0)) {
20
- return arr;
21
- }
22
- // 直接使用 slice + concat 避免 spread operator
23
- const before = arr.slice(0, start);
24
- const after = arr.slice(start + deleteCount);
25
- return before.concat(items || []).concat(after);
18
+ const a = arr.slice(0);
19
+ a.splice(start, deleteCount, ...(items || []));
20
+ return a;
26
21
  }
27
22
  var BranchOperatorStatus;
28
23
  (function (BranchOperatorStatus) {
@@ -499,10 +494,10 @@ class CompositeTreeNode extends TreeNode {
499
494
  return root;
500
495
  }
501
496
  /**
502
- * 确保此"目录"的子级已加载(不影响"展开"状态)
497
+ * 确保此“目录”的子级已加载(不影响“展开”状态)
503
498
  * 如果子级已经加载,则返回的Promise将立即解决
504
499
  * 否则,将发出重新加载请求并返回Promise
505
- * 一旦返回的Promise.resolve,"CompositeTreeNode#children" 便可以访问到对于节点
500
+ * 一旦返回的Promise.resolve,“CompositeTreeNode#children 便可以访问到对于节点
506
501
  */
507
502
  async ensureLoaded(token) {
508
503
  if (this._children) {
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNode.js","sourceRoot":"","sources":["../../../src/recycle-tree/tree/TreeNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TreeNode.js","sourceRoot":"","sources":["../../../src/recycle-tree/tree/TreeNode.ts"],"names":[],"mappings":"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"}
@@ -133,40 +133,3 @@
133
133
  clear: both;
134
134
  }
135
135
  }
136
-
137
- .box(@position: absolute) {
138
- position: @position;
139
- top: 0;
140
- right: 0;
141
- bottom: 0;
142
- left: 0;
143
- }
144
-
145
- .modal-mask() {
146
- pointer-events: none;
147
-
148
- &.@{prefix}-zoom-enter,
149
- &.@{prefix}-zoom-appear {
150
- transform: none; // reset scale avoid mousePosition bug
151
- opacity: 0;
152
- animation-duration: @animation-duration-slow;
153
- user-select: none; // https://github.com/ant-design/ant-design/issues/11777
154
- }
155
-
156
- &-mask {
157
- .box(fixed);
158
- z-index: @zindex-modal-mask;
159
- height: 100%;
160
- background-color: @modal-mask-bg;
161
-
162
- &-hidden {
163
- display: none;
164
- }
165
- }
166
-
167
- &-wrap {
168
- .box(fixed);
169
- overflow: auto;
170
- outline: 0;
171
- }
172
- }
@@ -59,7 +59,6 @@
59
59
  @zindex-dropdown: 1050;
60
60
  @zindex-picker: 1050;
61
61
  @zindex-tooltip: 1060;
62
- @zindex-image: 1080;
63
62
 
64
63
  // Shadow
65
64
  @shadow-color: rgba(0, 0, 0, 0.15);
@@ -113,14 +112,6 @@
113
112
  @padding-md: 16px; // small containers and buttons
114
113
  @padding-sm: 12px; // Form controls and items
115
114
  @padding-xs: 8px; // small items
116
- @padding-xss: 4px; // more small
117
-
118
- // vertical margins
119
- @margin-lg: 24px; // containers
120
- @margin-md: 16px; // small containers and buttons
121
- @margin-sm: 12px; // Form controls and items
122
- @margin-xs: 8px; // small items
123
- @margin-xss: 4px; // more small
124
115
 
125
116
  // vertical padding for all form controls
126
117
  @control-padding-horizontal: @padding-sm;
@@ -214,13 +205,3 @@
214
205
  // Checkbox
215
206
  @checkbox-default-size: 12px;
216
207
  @checkbox-large-size: 14px;
217
-
218
- // Image
219
- @image-size-base: 48px;
220
- @image-font-size-base: 24px;
221
- @image-bg: #f5f5f5;
222
- @image-color: #fff;
223
- @image-mask-font-size: 16px;
224
- @image-preview-operation-size: 18px;
225
- @image-preview-operation-color: @text-color-dark;
226
- @image-preview-operation-disabled-color: fade(@image-preview-operation-color, 25%);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-components",
3
- "version": "3.8.3-next-1741927421.0",
3
+ "version": "3.8.3-next-1741940731.0",
4
4
  "description": "@opensumi/ide-components",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
@@ -16,8 +16,8 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "@ant-design/icons": "^4.6.4",
19
- "@opensumi/ide-core-common": "3.8.3-next-1741927421.0",
20
- "@opensumi/ide-utils": "3.8.3-next-1741927421.0",
19
+ "@opensumi/ide-core-common": "3.8.3-next-1741940731.0",
20
+ "@opensumi/ide-utils": "3.8.3-next-1741940731.0",
21
21
  "@opensumi/react-custom-scrollbars-2": "^4.3.4",
22
22
  "@rc-component/mini-decimal": "^1.0.1",
23
23
  "fuzzy": "^0.1.3",
@@ -26,7 +26,6 @@
26
26
  "raf": "^3.4.1",
27
27
  "rc-dialog": "^9.6.0",
28
28
  "rc-dropdown": "~2.4.1",
29
- "rc-image": "^7.11.0",
30
29
  "rc-input-number": "^9.3.0",
31
30
  "rc-menu": "^9.16.0",
32
31
  "rc-notification": "~3.3.1",
@@ -39,10 +38,10 @@
39
38
  "react-window": "^1.8.5"
40
39
  },
41
40
  "devDependencies": {
42
- "@opensumi/ide-dev-tool": "3.8.3-next-1741927421.0",
41
+ "@opensumi/ide-dev-tool": "3.8.3-next-1741940731.0",
43
42
  "@types/marked": "^4.0.7",
44
43
  "@types/react-window": "^1.8.5",
45
44
  "prop-types": "^15.8.1"
46
45
  },
47
- "gitHead": "bd77b89976b089e461aa1f1078287c3f19b2709f"
46
+ "gitHead": "a17ff03e577c21558da9cb33b40c57cebf97ef64"
48
47
  }
@@ -1,8 +0,0 @@
1
- import { ImageProps as RcImageProps } from 'rc-image';
2
- import React from 'react';
3
- import './styles.less';
4
- export interface ImageProps extends RcImageProps {
5
- className?: string;
6
- }
7
- export declare const Image: (props: ImageProps) => React.JSX.Element;
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/image/index.tsx"],"names":[],"mappings":"AAAA,OAAgB,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,eAAe,CAAC;AAGvB,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,KAAK,UAAW,UAAU,sBAatC,CAAC"}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Image = void 0;
4
- const tslib_1 = require("tslib");
5
- const rc_image_1 = tslib_1.__importDefault(require("rc-image"));
6
- const react_1 = tslib_1.__importDefault(require("react"));
7
- require("./styles.less");
8
- const icon_1 = require("../icon");
9
- const Image = (props) => (react_1.default.createElement(rc_image_1.default, { prefixCls: 'kt-image', preview: {
10
- getContainer: () => { var _a; return document.getElementById('main') || ((_a = document.getElementsByTagName('body')) === null || _a === void 0 ? void 0 : _a[0]); },
11
- mask: (react_1.default.createElement("div", { className: 'mask' },
12
- react_1.default.createElement(icon_1.Icon, { iconClass: 'codicon codicon-eye' }))),
13
- }, ...props }));
14
- exports.Image = Image;
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/image/index.tsx"],"names":[],"mappings":";;;;AAAA,gEAA+D;AAC/D,0DAA0B;AAE1B,yBAAuB;AACvB,kCAA+B;AAMxB,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC,CAC1C,8BAAC,kBAAO,IACN,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE;QACP,YAAY,EAAE,GAAG,EAAE,WAAC,OAAA,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,KAAI,MAAA,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,0CAAG,CAAC,CAAC,CAAA,CAAA,EAAA;QACjG,IAAI,EAAE,CACJ,uCAAK,SAAS,EAAC,MAAM;YACnB,8BAAC,WAAI,IAAC,SAAS,EAAC,qBAAqB,GAAG,CACpC,CACP;KACF,KACG,KAAK,GACT,CACH,CAAC;AAbW,QAAA,KAAK,SAahB"}
@@ -1,205 +0,0 @@
1
- @import '../style/variable.less';
2
- @import '../style/mixins.less';
3
-
4
- @image-prefix-cls: ~'kt-image';
5
- @image-preview-prefix-cls: ~'@{image-prefix-cls}-preview';
6
-
7
- .@{image-prefix-cls} {
8
- position: relative;
9
- display: inline-block;
10
-
11
- &-img {
12
- width: 100%;
13
- height: auto;
14
- vertical-align: middle;
15
-
16
- &-placeholder {
17
- background-color: @image-bg;
18
- background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=');
19
- background-repeat: no-repeat;
20
- background-position: center center;
21
- background-size: 30%;
22
- }
23
- }
24
-
25
- &-mask {
26
- position: absolute;
27
- top: 0;
28
- right: 0;
29
- bottom: 0;
30
- left: 0;
31
- display: flex;
32
- align-items: center;
33
- justify-content: center;
34
- color: @text-color-inverse;
35
- background: fade(@black, 50%);
36
- cursor: pointer;
37
- opacity: 0;
38
- transition: opacity @animation-duration-slow;
39
-
40
- &-info {
41
- padding: 0 @padding-xss;
42
- overflow: hidden;
43
- white-space: nowrap;
44
- text-overflow: ellipsis;
45
- .@{iconfont-css-prefix} {
46
- margin-inline-end: @margin-xss;
47
- }
48
- }
49
-
50
- &:hover {
51
- opacity: 1;
52
- }
53
- }
54
-
55
- &-placeholder {
56
- .box();
57
- }
58
-
59
- &-preview {
60
- .modal-mask();
61
-
62
- height: 100%;
63
- text-align: center;
64
-
65
- &-body {
66
- .box();
67
- overflow: hidden;
68
- }
69
-
70
- &-img {
71
- max-width: 100%;
72
- max-height: 100%;
73
- vertical-align: middle;
74
- transform: scale3d(1, 1, 1);
75
- cursor: grab;
76
- transition: transform 0.3s @ease-out 0s;
77
- user-select: none;
78
- pointer-events: auto;
79
-
80
- &-wrapper {
81
- .box();
82
- transition: transform 0.3s @ease-out 0s;
83
-
84
- &::before {
85
- display: inline-block;
86
- width: 1px;
87
- height: 50%;
88
- margin-right: -1px;
89
- content: '';
90
- }
91
- }
92
- }
93
-
94
- &-moving {
95
- .@{image-prefix-cls}-preview-img {
96
- cursor: grabbing;
97
-
98
- &-wrapper {
99
- transition-duration: 0s;
100
- }
101
- }
102
- }
103
-
104
- &-wrap {
105
- z-index: @zindex-image;
106
- }
107
-
108
- // 暂时不需要控制
109
- &-operations-wrapper {
110
- display: none;
111
- // position: fixed;
112
- // top: 0;
113
- // right: 0;
114
- // z-index: @zindex-image + 1;
115
- // width: 100%;
116
- }
117
-
118
- &-operations {
119
- .reset-component();
120
- display: flex;
121
- flex-direction: row-reverse;
122
- align-items: center;
123
- color: @image-preview-operation-color;
124
- list-style: none;
125
- background: fade(@modal-mask-bg, 10%);
126
- pointer-events: auto;
127
-
128
- &-operation {
129
- margin-left: @control-padding-horizontal;
130
- padding: @control-padding-horizontal;
131
- cursor: pointer;
132
- transition: all 0.3s;
133
-
134
- &:hover {
135
- background: fade(@modal-mask-bg, 20%);
136
- }
137
-
138
- &-disabled {
139
- color: @image-preview-operation-disabled-color;
140
- pointer-events: none;
141
- }
142
-
143
- &:last-of-type {
144
- margin-left: 0;
145
- }
146
- }
147
-
148
- &-progress {
149
- position: absolute;
150
- left: 50%;
151
- transform: translateX(-50%);
152
- }
153
-
154
- &-icon {
155
- font-size: @image-preview-operation-size;
156
- }
157
- }
158
-
159
- &-switch-left,
160
- &-switch-right {
161
- position: fixed;
162
- top: 50%;
163
- right: 8px;
164
- z-index: @zindex-image + 1;
165
- display: flex;
166
- align-items: center;
167
- justify-content: center;
168
- width: 44px;
169
- height: 44px;
170
- color: @image-preview-operation-color;
171
- background: fade(@modal-mask-bg, 10%);
172
- border-radius: 50%;
173
- transform: translateY(-50%);
174
- cursor: pointer;
175
- transition: all 0.3s;
176
- pointer-events: auto;
177
-
178
- &:hover {
179
- background: fade(@modal-mask-bg, 20%);
180
- }
181
-
182
- &-disabled,
183
- &-disabled:hover {
184
- color: @image-preview-operation-disabled-color;
185
- background: fade(@modal-mask-bg, 10%);
186
- cursor: not-allowed;
187
- > .@{iconfont-css-prefix} {
188
- cursor: not-allowed;
189
- }
190
- }
191
-
192
- > .@{iconfont-css-prefix} {
193
- font-size: 18px;
194
- }
195
- }
196
-
197
- &-switch-left {
198
- left: 8px;
199
- }
200
-
201
- &-switch-right {
202
- right: 8px;
203
- }
204
- }
205
- }