Files
ele-HeiXiu/shared/constants/ipc-channels.ts
YoungestSongMo 4ea414c9c7 feat: 无限画布滚轮缩放 + 项目管理入口 (0.0.26)
画布交互:
- 滚轮缩放视口(2%~1600%),纯滚轮 10%/tick,Ctrl/Cmd+滚轮 3%/tick 精细控制
- 鼠标拖拽平移画布,Ctrl/Cmd+0 重置缩放
- 预览打开时锁定底层视口(previewActiveRef 事件穿透防护)
- 预览内图片独立滚轮缩放 + 拖拽平移 + 缩放指示器

文件拖拽:
- 画布缩略图/预览支持原生文件拖拽到外部应用(startDrag IPC)

Bug 修复:
- local-media:// 协议支持 UNC 网络路径
- passive event listener 报错:window 级原生 wheel listener 替代 React onWheel
- Zustand v5 getState() 批处理旧值:改用 ref(currentZoomRef + setZoomRef)读写

主进程(electron/main.ts):
- 画布窗口 before-input-event 拦截 Chromium 页面缩放
- 新增 canvas-ipc.ts(startDrag、文件扫描等 IPC handler)
2026-06-23 20:11:50 +08:00

96 lines
3.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ============================================================
// IPC 通道名称常量 —— 避免魔法字符串
// ============================================================
/** 主进程 → 渲染进程 */
export const MAIN_TO_RENDERER = {
/** 主进程消息推送 */
MAIN_PROCESS_MESSAGE: 'main-process-message',
/** 主题变更通知 */
THEME_CHANGED: 'theme-changed',
/** 窗口聚焦通知 */
WINDOW_FOCUSED: 'window-focused',
/** 窗口失焦通知 */
WINDOW_BLURRED: 'window-blurred',
/** 画布窗口准备就绪 */
CANVAS_READY: 'canvas:ready',
/** 画布扫描进度 */
CANVAS_SCAN_PROGRESS: 'canvas:scan-progress',
} as const;
/** 渲染进程 → 主进程 */
export const RENDERER_TO_MAIN = {
/** 打开子窗口 */
OPEN_SUB_WINDOW: 'open-sub-window',
/** 关闭子窗口 */
CLOSE_SUB_WINDOW: 'close-sub-window',
/** 设置窗口标题 */
SET_WINDOW_TITLE: 'set-window-title',
/** 获取平台信息 */
GET_PLATFORM_INFO: 'get-platform-info',
/** 最小化窗口 */
MINIMIZE_WINDOW: 'minimize-window',
/** 最大化/还原窗口 */
TOGGLE_MAXIMIZE: 'toggle-maximize',
/** 关闭窗口 */
CLOSE_WINDOW: 'close-window',
/** 渲染进程日志上报 */
LOG_MESSAGE: 'log-message',
/** 画布:打开无限画布窗口 */
OPEN_CANVAS_WINDOW: 'canvas:open-window',
} as const;
/** 双向通信通道 */
export const BIDIRECTIONAL = {
/** 读取应用配置 */
READ_CONFIG: 'read-config',
/** 写入应用配置 */
WRITE_CONFIG: 'write-config',
/** 文件对话框 */
FILE_DIALOG: 'file-dialog',
/** safeStorage 加密(明文 → Base64 密文) */
SAFESTORAGE_ENCRYPT: 'safe-storage:encrypt',
/** safeStorage 解密Base64 密文 → 明文) */
SAFESTORAGE_DECRYPT: 'safe-storage:decrypt',
/** 文件写入Blob Buffer → 磁盘) */
FILE_WRITE: 'storage:file-write',
/** 文件读取(磁盘 → Base64 */
FILE_READ: 'storage:file-read',
/** 文件删除 */
FILE_DELETE: 'storage:file-delete',
/** 创建目录(递归) */
MAKE_DIR: 'storage:make-dir',
/** 在文件管理器中显示文件 */
SHOW_ITEM_IN_FOLDER: 'storage:show-item-in-folder',
/** 获取应用数据目录路径 */
GET_DATA_DIR: 'storage:get-data-dir',
/** 获取文件大小 */
FILE_SIZE: 'storage:file-size',
/** 文件/目录是否存在 */
FILE_EXISTS: 'storage:file-exists',
/** 画布:扫描目录 */
CANVAS_SCAN_DIRECTORY: 'canvas:scan-directory',
/** 画布:扫描项目(接收 projectPath主进程内部完成 buildScanRoots + walkDirectory */
CANVAS_SCAN_PROJECT: 'canvas:scan-project',
/** 画布:读取 sidecar 元数据 */
CANVAS_READ_SIDECAR: 'canvas:read-sidecar',
/** 画布:写入 sidecar 元数据 */
CANVAS_WRITE_SIDECAR: 'canvas:write-sidecar',
/** 画布:生成缩略图 */
CANVAS_GENERATE_THUMBNAIL: 'canvas:generate-thumbnail',
/** 画布:复制文件(导入) */
CANVAS_COPY_FILE: 'canvas:copy-file',
/** 画布:获取原生图片尺寸 */
CANVAS_GET_IMAGE_SIZE: 'canvas:get-image-size',
/** 画布:列出目录下的子文件夹(非递归,排除隐藏) */
CANVAS_LIST_SUBDIRS: 'canvas:list-subdirs',
/** 画布:扫描阶段文件(单个 episode/shot/stage 组合) */
CANVAS_SCAN_STAGE_FILES: 'canvas:scan-stage-files',
/** 画布:扫描资产文件(深度递归扫描 assets/ 目录) */
CANVAS_SCAN_ASSET_FILES: 'canvas:scan-asset-files',
/** 画布:创建目录 */
CANVAS_CREATE_DIRECTORY: 'canvas:create-directory',
/** 画布:启动原生文件拖拽(拖放媒体文件到外部应用) */
CANVAS_START_DRAG: 'canvas:start-drag',
} as const;