feat(editor): drag-and-drop для аудио и превью сцены
Добавлена загрузка файлов перетаскиванием в блоки «Аудио игры», «Аудио сцены» и «Превью сцены»: подсветка зоны, подсказки, фильтрация по типу, импорт без диалога. IPC и main принимают пути файлов напрямую; для Electron 41 пути получаются через webUtils.getPathForFile в preload (File.path в renderer больше недоступен). Улучшен dev-запуск: Vite слушает 127.0.0.1, ожидание готовности по localhost. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { contextBridge } from 'electron';
|
||||
import { contextBridge, webUtils } from 'electron';
|
||||
|
||||
import type { IpcEventMap, IpcInvokeMap } from '../shared/ipc/contracts';
|
||||
|
||||
@@ -10,9 +10,14 @@ export type DndApi = {
|
||||
payload: IpcInvokeMap[K]['req'],
|
||||
) => Promise<IpcInvokeMap[K]['res']>;
|
||||
on: <K extends keyof IpcEventMap>(channel: K, listener: (payload: IpcEventMap[K]) => void) => () => void;
|
||||
getPathForFile: (file: File) => string;
|
||||
};
|
||||
|
||||
const api: DndApi = { invoke, on };
|
||||
const api: DndApi = {
|
||||
invoke,
|
||||
on,
|
||||
getPathForFile: (file) => webUtils.getPathForFile(file),
|
||||
};
|
||||
|
||||
contextBridge.exposeInMainWorld('dnd', api);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user