fix
This commit is contained in:
@@ -408,9 +408,21 @@ const DesktopWorkspace: React.FC<DesktopWorkspaceProps> = ({
|
|||||||
|
|
||||||
commitSize();
|
commitSize();
|
||||||
|
|
||||||
const observer = new ResizeObserver(commitSize);
|
let rafId: number | null = null;
|
||||||
|
const observer = new ResizeObserver(() => {
|
||||||
|
if (rafId != null) return;
|
||||||
|
rafId = requestAnimationFrame(() => {
|
||||||
|
rafId = null;
|
||||||
|
commitSize();
|
||||||
|
});
|
||||||
|
});
|
||||||
observer.observe(container);
|
observer.observe(container);
|
||||||
return () => observer.disconnect();
|
return () => {
|
||||||
|
observer.disconnect();
|
||||||
|
if (rafId != null) {
|
||||||
|
cancelAnimationFrame(rafId);
|
||||||
|
}
|
||||||
|
};
|
||||||
}, [engine]);
|
}, [engine]);
|
||||||
|
|
||||||
const resolvePreviewDimensions = useCallback(
|
const resolvePreviewDimensions = useCallback(
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ class DocumentsManager<T extends ManagedDocument = ManagedDocument> {
|
|||||||
|
|
||||||
private listeners: Set<() => void>;
|
private listeners: Set<() => void>;
|
||||||
|
|
||||||
|
private emitScheduled: boolean;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
fetchDocument?: FetchDocument,
|
fetchDocument?: FetchDocument,
|
||||||
) {
|
) {
|
||||||
@@ -22,10 +24,18 @@ class DocumentsManager<T extends ManagedDocument = ManagedDocument> {
|
|||||||
this.fetcher = fetchDocument;
|
this.fetcher = fetchDocument;
|
||||||
this.inflight = new Map();
|
this.inflight = new Map();
|
||||||
this.listeners = new Set();
|
this.listeners = new Set();
|
||||||
|
this.emitScheduled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private emit() {
|
private emit() {
|
||||||
|
if (this.emitScheduled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.emitScheduled = true;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.emitScheduled = false;
|
||||||
this.listeners.forEach((fn) => fn());
|
this.listeners.forEach((fn) => fn());
|
||||||
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
subscribe(listener: () => void) {
|
subscribe(listener: () => void) {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import React, {
|
import React, {
|
||||||
Children,
|
|
||||||
useCallback,
|
useCallback,
|
||||||
useEffect,
|
useEffect,
|
||||||
useMemo,
|
useMemo,
|
||||||
@@ -431,9 +430,15 @@ const DocumentViewerPanel: React.FC<DocumentViewerPanelProps> = ({
|
|||||||
: null;
|
: null;
|
||||||
|
|
||||||
const headerLeadingButtons = isSidebarVariant
|
const headerLeadingButtons = isSidebarVariant
|
||||||
? [collapseButton, maximizeButton].filter(Boolean)
|
? [
|
||||||
: [sidebarToggle, closeButton].filter(Boolean);
|
collapseButton ? <React.Fragment key="collapse-button">{collapseButton}</React.Fragment> : null,
|
||||||
const headerLeadingContent = headerLeadingButtons.length ? Children.toArray(headerLeadingButtons) : null;
|
maximizeButton ? <React.Fragment key="maximize-button">{maximizeButton}</React.Fragment> : null,
|
||||||
|
].filter(Boolean)
|
||||||
|
: [
|
||||||
|
sidebarToggle ? <React.Fragment key="sidebar-toggle">{sidebarToggle}</React.Fragment> : null,
|
||||||
|
closeButton ? <React.Fragment key="close-button">{closeButton}</React.Fragment> : null,
|
||||||
|
].filter(Boolean);
|
||||||
|
const headerLeadingContent = headerLeadingButtons.length ? headerLeadingButtons : null;
|
||||||
|
|
||||||
const resizeHandle = isSidebarVariant ? (
|
const resizeHandle = isSidebarVariant ? (
|
||||||
<button
|
<button
|
||||||
|
|||||||
Reference in New Issue
Block a user