feat: Replaced document preview with a new fullscreen viewer
This commit is contained in:
@@ -12,14 +12,14 @@ type EnsureAssetUrl = (
|
||||
asset: unknown,
|
||||
options?: Record<string, unknown>,
|
||||
) => Promise<unknown> | void;
|
||||
type EnsurePreviewData = (docId: Identifier, options?: Record<string, unknown>) => Promise<unknown>;
|
||||
type EnsureViewerData = (docId: Identifier, options?: Record<string, unknown>) => Promise<unknown>;
|
||||
type GetDocumentAsset = (document: unknown, assetType: string) => unknown;
|
||||
type NotifyApiError = (error: unknown, fallbackMessage?: string) => void;
|
||||
|
||||
type DocumentsTableProps = ComponentProps<typeof DocumentsPanel> | null;
|
||||
type DetailPanelProps = (ComponentProps<typeof DocumentViewerPanel> & {
|
||||
onClose?: () => void;
|
||||
onOpenPreview?: (args: { documentIds: Array<string> }) => void;
|
||||
onOpenViewer?: (args: { documentIds: Array<string> }) => void;
|
||||
folderNodes?: Map<Identifier | 'root', unknown>;
|
||||
ensureFolderData?: (
|
||||
folderId: Identifier | 'root',
|
||||
@@ -35,13 +35,13 @@ export interface UseWorkspaceSurfaceArgs {
|
||||
documentsTableProps?: DocumentsTableProps;
|
||||
detailPanelProps?: DetailPanelProps;
|
||||
detailPanelOpen?: boolean;
|
||||
previewWorkspaceDocument?: unknown;
|
||||
previewDocumentId?: Identifier | null;
|
||||
viewerWorkspaceDocument?: unknown;
|
||||
viewerDocumentId?: Identifier | null;
|
||||
ensureAssetUrl?: EnsureAssetUrl;
|
||||
ensurePreviewData?: EnsurePreviewData;
|
||||
ensureViewerData?: EnsureViewerData;
|
||||
getDocumentAsset?: GetDocumentAsset;
|
||||
notifyApiError?: NotifyApiError;
|
||||
closeDocumentPreview?: () => void;
|
||||
closeDocumentViewer?: () => void;
|
||||
}
|
||||
|
||||
interface UseWorkspaceSurfaceResult {
|
||||
@@ -54,13 +54,13 @@ export const useWorkspaceSurface = ({
|
||||
documentsTableProps,
|
||||
detailPanelProps,
|
||||
detailPanelOpen = false,
|
||||
previewWorkspaceDocument,
|
||||
previewDocumentId,
|
||||
viewerWorkspaceDocument,
|
||||
viewerDocumentId,
|
||||
ensureAssetUrl,
|
||||
ensurePreviewData,
|
||||
ensureViewerData,
|
||||
getDocumentAsset,
|
||||
notifyApiError,
|
||||
closeDocumentPreview,
|
||||
closeDocumentViewer,
|
||||
}: UseWorkspaceSurfaceArgs): UseWorkspaceSurfaceResult => {
|
||||
const { registerDetailCloseHandler, setDetailActive } = usePanelManager();
|
||||
|
||||
@@ -118,7 +118,7 @@ export const useWorkspaceSurface = ({
|
||||
? (() => {
|
||||
const {
|
||||
onClose,
|
||||
onOpenPreview,
|
||||
onOpenViewer,
|
||||
tags: tagOptions,
|
||||
folderNodes,
|
||||
ensureFolderData,
|
||||
@@ -129,7 +129,7 @@ export const useWorkspaceSurface = ({
|
||||
variant="sidebar"
|
||||
sidebarMode={sidebarMode}
|
||||
onClose={onClose}
|
||||
onMaximize={onOpenPreview}
|
||||
onMaximize={onOpenViewer}
|
||||
tagOptions={tagOptions}
|
||||
{...restDetailProps}
|
||||
/>
|
||||
@@ -164,10 +164,10 @@ export const useWorkspaceSurface = ({
|
||||
detailPanelProps,
|
||||
]);
|
||||
|
||||
const showPreviewWorkspace = Boolean(previewDocumentId);
|
||||
const showViewerWorkspace = Boolean(viewerDocumentId);
|
||||
|
||||
const previewSurface = useMemo<WorkspaceSurface>(() => {
|
||||
if (!showPreviewWorkspace) {
|
||||
const viewerSurface = useMemo<WorkspaceSurface>(() => {
|
||||
if (!showViewerWorkspace) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -191,8 +191,8 @@ export const useWorkspaceSurface = ({
|
||||
|
||||
const viewer = (
|
||||
<DocumentViewerPanel
|
||||
document={previewWorkspaceDocument || null}
|
||||
hydrateDocument={ensurePreviewData}
|
||||
document={viewerWorkspaceDocument || null}
|
||||
hydrateDocument={ensureViewerData}
|
||||
tagLookupById={tagLookupById}
|
||||
tagOptions={tagOptions}
|
||||
onTagAdd={onTagAdd}
|
||||
@@ -205,10 +205,10 @@ export const useWorkspaceSurface = ({
|
||||
onUpdateIssued={onUpdateIssued}
|
||||
ensureAssetUrl={ensureAssetUrl}
|
||||
getDocumentAsset={getDocumentAsset}
|
||||
ensurePreviewData={ensurePreviewData}
|
||||
ensurePreviewData={ensureViewerData}
|
||||
notifyApiError={notifyApiError}
|
||||
sidebarToggle={sidebarToggle}
|
||||
onClose={closeDocumentPreview}
|
||||
onClose={closeDocumentViewer}
|
||||
resolveFolderPath={resolveFolderPath}
|
||||
/>
|
||||
);
|
||||
@@ -223,23 +223,23 @@ export const useWorkspaceSurface = ({
|
||||
|
||||
return { content, detail: null, detailMode: null };
|
||||
}, [
|
||||
showPreviewWorkspace,
|
||||
previewWorkspaceDocument,
|
||||
ensurePreviewData,
|
||||
showViewerWorkspace,
|
||||
viewerWorkspaceDocument,
|
||||
ensureViewerData,
|
||||
ensureAssetUrl,
|
||||
getDocumentAsset,
|
||||
notifyApiError,
|
||||
renderSidebarToggle,
|
||||
closeDocumentPreview,
|
||||
closeDocumentViewer,
|
||||
detailPanelProps,
|
||||
]);
|
||||
|
||||
const surface = useMemo<WorkspaceSurface>(() => {
|
||||
if (showPreviewWorkspace) {
|
||||
return previewSurface;
|
||||
if (showViewerWorkspace) {
|
||||
return viewerSurface;
|
||||
}
|
||||
return documentsSurface;
|
||||
}, [showPreviewWorkspace, previewSurface, documentsSurface]);
|
||||
}, [showViewerWorkspace, viewerSurface, documentsSurface]);
|
||||
|
||||
return { surface };
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user