@alwith/module-file-tree (英语)
一个独立的文件树 。 这取决于 @alwith/module-fs ,不导入编辑器软件包.
import { createFileTreeController, FileTree } from "@alwith/module-file-tree"
import "@alwith/module-file-tree/styles.css"
const tree = createFileTreeController({ fs, root: "/project", reportError })
await tree.refresh()
<FileTree controller={tree} onOpenFile={openFile} requestName={requestName}
confirmDelete={confirmDelete} onError={reportError} />
// On workspace disposal:
tree.dispose()
/core 导出无反应控制器、快照、行和 PartialOperationError。根条目导出 React UI 和所有核心类型。 在主机中导入 CSS 一次 .
包含行为
目录-第一排序,懒散扩展,虚拟行,过滤已装入的条目(包括倒塌的后人),隐藏文件切换,多程选择,键盘导航,创建/重命名/删除,复制/剪切/粘贴和内部拖放到目录. 原生适配器采用吉地格诺过滤. 过滤器被明确限制在已加载的条目;它不是一个递归式搜索索引.
requestName 财务报告和审定财务报表 confirmDelete 是同步主机对话框 。 返回无效/ 假以取消 . onOpenFile 可以打开预览,编辑器,外部应用程序或任何主机动作. renderDecoration 添加每行元数据 。 所有字符串均可使用 FileTreeLabels; CSS 消耗语义主机主题符号.
expanded 财务报告和审定财务报表 onExpandedChange 让一个主机持续视图状态。 主机拥有工作空间/会话选择. 控制器从不加载全局设置或订阅全局应用程序商店.
变异使用共享的FS实例,因此使用它的守卫. 将一个FS实例传递给树和编辑器是标准成分;树上仍然不知道编辑器的内部. 在第一次失败时有一批停止,报告已完成路径加上失败路径. 复制使用桌面式增量复制名. 移动飞行前所有目的地冲突,然后触摸来源. 剪贴机替换需要主机 confirmReplace 在确认后调用并重新检查目标版本;去除目标使用FS突变后卫. 一个批次不是OS交易:后来I/O故障报告完成的项目;替换在移动源头前删除一个被批准的目标. 文件系统通知在刷新已装入的树之前被连接 .
见 examples/files/tree-only.tsx 用于不导入编辑包的消费者.
探索器 UI 和主机适配器
工具栏会显示搜索,创建,刷新,崩溃和查看偏好. 行使用22px高,文件类型图标,内线重命名,范围选择,键盘 导航和上下文菜单。 Cmd/Ctrl+F过滤名称和相对路径碎片; 输入/Shift+ 输入匹配和逃逸搜索之间的移动 。 计算机/计算机+A, C/X/V在焦作树上运行. 重命名并删除使用行上下文菜单, 和桌面一样.
activePath 通过懒惰的祖先扩展显示编辑器的选择.
onReveal, (中文(简体) ), onCopyPath, (中文(简体) ), onImport,以及 requestMoveDestination 是宿主的能力.
onPinFile, (中文(简体) ), renderIcon, (中文(简体) ), renderDecoration,以及 renderActions 整合更丰富的
编辑器,图标, Git 和应用程序行为而不导入主机.
explorerLabels 在不突破现有消费者的情况下补充原标签.
OS拖放注册,本土同意,文件取取者和持久性留在主机.
云授权、同步、共享和侧边栏平接是应用
特性,而不被捆绑到本地文件树上.
桌面执行出处
视觉解析器、图标关联、指针-拖曳钩和浮动拖曳预览
从桌面提取 file-visual.ts, (中文(简体) ), use-tree-drag.ts 财务报告和审定财务报表
drag-preview.tsx图标在本地捆绑;默认 vscode-icons 收藏
被绑入桌面的1.2.86版本. isDark 选择浅/暗绘图和
iconTheme 选择 vscode-icons, cappucin-latte, cappucin-mocha 或
材料主题。 主机提供主题设置; 没有全局设置商店
输入。 图标提供工具栏并扩展/缩放符号.
TanStack Virtual 制作出22px行并有桌面的8px嵌入增量. 这个 项目根是可扩展行。 折叠 都保持工程根的扩展. 指向拖放使用桌面的 5px 阈值和浮动预览, 避免 HTML5 拖曳在 WKWebView 中不可靠的事件 。 滴水仅限于树上 查看并拒绝进入源或源的后人.
该建筑验证了发射的图标映射,以检测意外重写 由无害环境管理模块路径变压器制造的普通字符串.
explorerControl 用主机内容替换工具栏标题. collapsed 保留
用于隐藏树及其剩余工具栏动作时显示的控件.
主机控制了崩溃的容器宽度和切换状态.
源码对齐
desktop-provenance.json 在提取时记录桌面源散列.
filter-tree.ts, (中文(简体) ), copy-name.ts 财务报告和审定财务报表 move-plan.ts 保存他们的原始
算法; 它们的桌面测试套件被复制,只有跑取/导入更改.
use-tree-keyboard.ts 保存桌面导航并注入存储访问.
UI 点击处理器如下 Explorer.handleItemClick; 本地上下文菜单
如下 TreeItem 根排除,一行删除和多行复制.
主机适配器取代了全球商店,本地呼叫和通知. 键盘 钩子额外处理一个空列表而不索引缺失的节点. 现有 FS警卫仍然保护着肮脏的文件和工作空间界限. 请求 右侧布局, 探索者图标切换和微妙滚动条是有意的 UI 差别。 云动作需要云宿;它们不会被本地模拟.