refactor: Consolidate workspace utilities into new workspaceUtils.ts with typed entry keys, replacing appLayoutUtils.ts, and update related components.
This commit is contained in:
@@ -11,7 +11,6 @@ type Identifier = string | number;
|
||||
type EnsureAssetUrl = (docId: Identifier, asset: unknown, options?: Record<string, unknown>) => Promise<unknown> | void;
|
||||
type EnsurePreviewData = (docId: Identifier, options?: Record<string, unknown>) => Promise<unknown>;
|
||||
type GetDocumentAsset = (document: unknown, assetType: string) => unknown;
|
||||
type ResolveApiPath = (path: string) => string;
|
||||
type NotifyApiError = (error: unknown, fallbackMessage?: string) => void;
|
||||
|
||||
type WorkspaceSurface = { content: ReactNode; detail?: ReactNode | null } | null;
|
||||
@@ -28,7 +27,6 @@ interface UseWorkspaceSurfaceArgs {
|
||||
ensureAssetUrl?: EnsureAssetUrl;
|
||||
ensurePreviewData?: EnsurePreviewData;
|
||||
getDocumentAsset?: GetDocumentAsset;
|
||||
resolveApiPath?: ResolveApiPath;
|
||||
notifyApiError?: NotifyApiError;
|
||||
closeDocumentPreview?: () => void;
|
||||
}
|
||||
@@ -49,7 +47,6 @@ export const useWorkspaceSurface = ({
|
||||
ensureAssetUrl,
|
||||
ensurePreviewData,
|
||||
getDocumentAsset,
|
||||
resolveApiPath,
|
||||
notifyApiError,
|
||||
closeDocumentPreview,
|
||||
}: UseWorkspaceSurfaceArgs): UseWorkspaceSurfaceResult => {
|
||||
@@ -92,34 +89,34 @@ export const useWorkspaceSurface = ({
|
||||
|
||||
const detail = detailPanelOpen && detailPanelProps
|
||||
? (() => {
|
||||
const {
|
||||
onClose,
|
||||
onOpenPreview,
|
||||
tags: tagOptions,
|
||||
folderNodes,
|
||||
ensureFolderData,
|
||||
...restDetailProps
|
||||
} = detailPanelProps;
|
||||
const viewer = (
|
||||
<DocumentViewerPanel
|
||||
variant="sidebar"
|
||||
onCollapsePanel={onClose}
|
||||
onMaximizePanel={onOpenPreview}
|
||||
tagOptions={tagOptions}
|
||||
{...restDetailProps}
|
||||
/>
|
||||
);
|
||||
if (folderNodes && ensureFolderData) {
|
||||
return (
|
||||
<FolderManagerProvider folderNodes={folderNodes} ensureFolderData={ensureFolderData}>
|
||||
{viewer}
|
||||
</FolderManagerProvider>
|
||||
);
|
||||
}
|
||||
const {
|
||||
onClose,
|
||||
onOpenPreview,
|
||||
tags: tagOptions,
|
||||
folderNodes,
|
||||
ensureFolderData,
|
||||
...restDetailProps
|
||||
} = detailPanelProps;
|
||||
const viewer = (
|
||||
<DocumentViewerPanel
|
||||
variant="sidebar"
|
||||
onCollapsePanel={onClose}
|
||||
onMaximizePanel={onOpenPreview}
|
||||
tagOptions={tagOptions}
|
||||
{...restDetailProps}
|
||||
/>
|
||||
);
|
||||
if (folderNodes && ensureFolderData) {
|
||||
return (
|
||||
<>{viewer}</>
|
||||
<FolderManagerProvider folderNodes={folderNodes} ensureFolderData={ensureFolderData}>
|
||||
{viewer}
|
||||
</FolderManagerProvider>
|
||||
);
|
||||
})()
|
||||
}
|
||||
return (
|
||||
<>{viewer}</>
|
||||
);
|
||||
})()
|
||||
: null;
|
||||
|
||||
return {
|
||||
@@ -179,7 +176,6 @@ export const useWorkspaceSurface = ({
|
||||
ensureAssetUrl={ensureAssetUrl}
|
||||
getDocumentAsset={getDocumentAsset}
|
||||
ensurePreviewData={ensurePreviewData}
|
||||
resolveApiPath={resolveApiPath}
|
||||
notifyApiError={notifyApiError}
|
||||
sidebarToggle={sidebarToggle}
|
||||
onClosePanel={closeDocumentPreview}
|
||||
@@ -189,10 +185,10 @@ export const useWorkspaceSurface = ({
|
||||
|
||||
const content = folderNodes && ensureFolderData
|
||||
? (
|
||||
<FolderManagerProvider folderNodes={folderNodes} ensureFolderData={ensureFolderData}>
|
||||
{viewer}
|
||||
</FolderManagerProvider>
|
||||
)
|
||||
<FolderManagerProvider folderNodes={folderNodes} ensureFolderData={ensureFolderData}>
|
||||
{viewer}
|
||||
</FolderManagerProvider>
|
||||
)
|
||||
: viewer;
|
||||
|
||||
return { content, detail: null };
|
||||
@@ -203,7 +199,6 @@ export const useWorkspaceSurface = ({
|
||||
ensurePreviewData,
|
||||
ensureAssetUrl,
|
||||
getDocumentAsset,
|
||||
resolveApiPath,
|
||||
notifyApiError,
|
||||
renderSidebarToggle,
|
||||
closeDocumentPreview,
|
||||
|
||||
Reference in New Issue
Block a user