mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-12 07:09:59 +00:00
* fix(core): harden audio FX and group identity * fix(core): address audio group review feedback * fix(core): align preview transport with grouped audio * test(core): pin audio group gain ceiling * fix(core): preserve solo bridge through stack * fix(engine): harden grouped audio rendering * docs(engine): explain grouped mix fallback invariant * test(engine): allow grouped mixes to finish on Windows * feat(lint): validate audio group membership and timing * test(lint): pin audio group membership guards * fix(studio): unify audio IDs and group state * fix(studio): make audio-group edits transactional * fix(studio): keep preview state synchronized
144 lines
3.5 KiB
TypeScript
144 lines
3.5 KiB
TypeScript
import type { useFileManager } from "../hooks/useFileManager";
|
|
import { useContext, useMemo, type ReactNode } from "react";
|
|
import { createStableContext } from "../utils/hmrStableContext";
|
|
|
|
type FileManagerValue = ReturnType<typeof useFileManager>;
|
|
|
|
const FileManagerContext = createStableContext<FileManagerValue | null>("FileManagerContext", null);
|
|
|
|
export function useFileManagerContext(): FileManagerValue {
|
|
const ctx = useContext(FileManagerContext);
|
|
if (!ctx) throw new Error("useFileManagerContext must be used within FileManagerProvider");
|
|
return ctx;
|
|
}
|
|
|
|
export function useFileManagerContextOptional(): FileManagerValue | null {
|
|
return useContext(FileManagerContext);
|
|
}
|
|
|
|
export function FileManagerProvider({
|
|
value: {
|
|
// fallow-ignore-next-line code-duplication
|
|
editingFile,
|
|
setEditingFile,
|
|
projectDir,
|
|
fileTree,
|
|
fileTreeLoaded,
|
|
setFileTree,
|
|
editingPathRef,
|
|
projectIdRef,
|
|
saveRafRef,
|
|
flushPendingSourceSave,
|
|
discardPendingSourceSave,
|
|
getPendingSourceCandidate,
|
|
importedFontAssetsRef,
|
|
readProjectFile,
|
|
writeProjectFile,
|
|
overwriteExternalConflict,
|
|
readOptionalProjectFile,
|
|
observeProjectFileVersion,
|
|
updateEditingFileContent,
|
|
revealSourceOffset,
|
|
openSourceForSelection,
|
|
handleFileSelect,
|
|
handleContentChange,
|
|
refreshFileTree,
|
|
uploadProjectFiles,
|
|
handleCreateFile,
|
|
handleCreateFolder,
|
|
handleDeleteFile,
|
|
handleRenameFile,
|
|
handleDuplicateFile,
|
|
handleMoveFile,
|
|
handleImportFiles,
|
|
handleImportFonts,
|
|
compositions,
|
|
assets,
|
|
fontAssets,
|
|
},
|
|
children,
|
|
}: {
|
|
value: FileManagerValue;
|
|
children: ReactNode;
|
|
}) {
|
|
const stable = useMemo<FileManagerValue>(
|
|
() => ({
|
|
editingFile,
|
|
setEditingFile,
|
|
projectDir,
|
|
fileTree,
|
|
fileTreeLoaded,
|
|
setFileTree,
|
|
editingPathRef,
|
|
projectIdRef,
|
|
saveRafRef,
|
|
flushPendingSourceSave,
|
|
discardPendingSourceSave,
|
|
getPendingSourceCandidate,
|
|
importedFontAssetsRef,
|
|
readProjectFile,
|
|
writeProjectFile,
|
|
overwriteExternalConflict,
|
|
readOptionalProjectFile,
|
|
observeProjectFileVersion,
|
|
updateEditingFileContent,
|
|
revealSourceOffset,
|
|
openSourceForSelection,
|
|
handleFileSelect,
|
|
handleContentChange,
|
|
refreshFileTree,
|
|
uploadProjectFiles,
|
|
handleCreateFile,
|
|
handleCreateFolder,
|
|
handleDeleteFile,
|
|
handleRenameFile,
|
|
handleDuplicateFile,
|
|
handleMoveFile,
|
|
handleImportFiles,
|
|
handleImportFonts,
|
|
compositions,
|
|
assets,
|
|
fontAssets,
|
|
}),
|
|
[
|
|
editingFile,
|
|
setEditingFile,
|
|
projectDir,
|
|
fileTree,
|
|
fileTreeLoaded,
|
|
setFileTree,
|
|
editingPathRef,
|
|
projectIdRef,
|
|
saveRafRef,
|
|
flushPendingSourceSave,
|
|
discardPendingSourceSave,
|
|
getPendingSourceCandidate,
|
|
importedFontAssetsRef,
|
|
readProjectFile,
|
|
writeProjectFile,
|
|
overwriteExternalConflict,
|
|
readOptionalProjectFile,
|
|
observeProjectFileVersion,
|
|
updateEditingFileContent,
|
|
revealSourceOffset,
|
|
openSourceForSelection,
|
|
handleFileSelect,
|
|
handleContentChange,
|
|
refreshFileTree,
|
|
uploadProjectFiles,
|
|
handleCreateFile,
|
|
handleCreateFolder,
|
|
handleDeleteFile,
|
|
handleRenameFile,
|
|
handleDuplicateFile,
|
|
handleMoveFile,
|
|
handleImportFiles,
|
|
handleImportFonts,
|
|
compositions,
|
|
assets,
|
|
fontAssets,
|
|
],
|
|
);
|
|
return <FileManagerContext value={stable}>{children}</FileManagerContext>;
|
|
}
|