Skip to content

Commit c122bfd

Browse files
committed
fixup demo wrt React.StrictMode
1 parent 1a3c6ea commit c122bfd

File tree

3 files changed

+85
-66
lines changed

3 files changed

+85
-66
lines changed

packages/docs/sandboxes/react/dockview/demo-dockview/src/app.tsx

+80-63
Original file line numberDiff line numberDiff line change
@@ -176,75 +176,92 @@ const DockviewDemo = (props: { theme?: string }) => {
176176
setPending([]);
177177
}, [pending]);
178178

179-
const onReady = (event: DockviewReadyEvent) => {
180-
setApi(event.api);
181-
182-
event.api.onDidAddPanel((event) => {
183-
setPanels((_) => [..._, event.id]);
184-
addLogLine(`Panel Added ${event.id}`);
185-
});
186-
event.api.onDidActivePanelChange((event) => {
187-
setActivePanel(event?.id);
188-
addLogLine(`Panel Activated ${event?.id}`);
189-
});
190-
event.api.onDidRemovePanel((event) => {
191-
setPanels((_) => {
192-
const next = [..._];
193-
next.splice(
194-
next.findIndex((x) => x === event.id),
195-
1
196-
);
179+
React.useEffect(() => {
180+
if (!api) {
181+
return;
182+
}
197183

198-
return next;
199-
});
200-
addLogLine(`Panel Removed ${event.id}`);
201-
});
202-
203-
event.api.onDidAddGroup((event) => {
204-
setGroups((_) => [..._, event.id]);
205-
addLogLine(`Group Added ${event.id}`);
206-
});
207-
208-
event.api.onDidMovePanel((event) => {
209-
addLogLine(`Panel Moved ${event.panel.id}`);
210-
});
211-
212-
event.api.onDidMaximizedGroupChange((event) => {
213-
addLogLine(
214-
`Group Maximized Changed ${event.group.api.id} [${event.isMaximized}]`
215-
);
216-
});
217-
218-
event.api.onDidRemoveGroup((event) => {
219-
setGroups((_) => {
220-
const next = [..._];
221-
next.splice(
222-
next.findIndex((x) => x === event.id),
223-
1
184+
const disposables = [
185+
api.onDidAddPanel((event) => {
186+
setPanels((_) => [..._, event.id]);
187+
addLogLine(`Panel Added ${event.id}`);
188+
}),
189+
api.onDidActivePanelChange((event) => {
190+
setActivePanel(event?.id);
191+
addLogLine(`Panel Activated ${event?.id}`);
192+
}),
193+
api.onDidRemovePanel((event) => {
194+
setPanels((_) => {
195+
const next = [..._];
196+
next.splice(
197+
next.findIndex((x) => x === event.id),
198+
1
199+
);
200+
201+
return next;
202+
});
203+
addLogLine(`Panel Removed ${event.id}`);
204+
}),
205+
206+
api.onDidAddGroup((event) => {
207+
setGroups((_) => [..._, event.id]);
208+
addLogLine(`Group Added ${event.id}`);
209+
}),
210+
211+
api.onDidMovePanel((event) => {
212+
addLogLine(`Panel Moved ${event.panel.id}`);
213+
}),
214+
215+
api.onDidMaximizedGroupChange((event) => {
216+
addLogLine(
217+
`Group Maximized Changed ${event.group.api.id} [${event.isMaximized}]`
224218
);
219+
}),
220+
221+
api.onDidRemoveGroup((event) => {
222+
setGroups((_) => {
223+
const next = [..._];
224+
next.splice(
225+
next.findIndex((x) => x === event.id),
226+
1
227+
);
228+
229+
return next;
230+
});
231+
addLogLine(`Group Removed ${event.id}`);
232+
}),
233+
234+
api.onDidActiveGroupChange((event) => {
235+
setActiveGroup(event?.id);
236+
addLogLine(`Group Activated ${event?.id}`);
237+
}),
238+
];
239+
240+
const loadLayout = () => {
241+
const state = localStorage.getItem('dv-demo-state');
242+
243+
if (state) {
244+
try {
245+
api.fromJSON(JSON.parse(state));
246+
return;
247+
} catch {
248+
localStorage.removeItem('dv-demo-state');
249+
}
250+
return;
251+
}
225252

226-
return next;
227-
});
228-
addLogLine(`Group Removed ${event.id}`);
229-
});
253+
defaultConfig(api);
254+
};
230255

231-
event.api.onDidActiveGroupChange((event) => {
232-
setActiveGroup(event?.id);
233-
addLogLine(`Group Activated ${event?.id}`);
234-
});
256+
loadLayout();
235257

236-
const state = localStorage.getItem('dv-demo-state');
237-
if (state) {
238-
try {
239-
event.api.fromJSON(JSON.parse(state));
240-
return;
241-
} catch {
242-
localStorage.removeItem('dv-demo-state');
243-
}
244-
return;
245-
}
258+
return () => {
259+
disposables.forEach((disposable) => disposable.dispose());
260+
};
261+
}, [api]);
246262

247-
defaultConfig(event.api);
263+
const onReady = (event: DockviewReadyEvent) => {
264+
setApi(event.api);
248265
};
249266

250267
const [watermark, setWatermark] = React.useState<boolean>(false);

packages/docs/sandboxes/react/dockview/demo-dockview/src/groupActions.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ const GroupAction = (props: {
8888
}
8989
onClick={() => {
9090
if (group) {
91-
9291
props.api.addFloatingGroup(group, {
9392
width: 400,
9493
height: 300,
@@ -99,7 +98,6 @@ const GroupAction = (props: {
9998
right: 50,
10099
},
101100
});
102-
103101
}
104102
}}
105103
>

packages/docs/src/theme/Root.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,9 @@ import { RecoilRoot } from 'recoil';
33

44
// Default implementation, that you can customize
55
export default function Root({ children }) {
6-
return <RecoilRoot>{children}</RecoilRoot>;
6+
return (
7+
<React.StrictMode>
8+
<RecoilRoot>{children}</RecoilRoot>
9+
</React.StrictMode>
10+
);
711
}

0 commit comments

Comments
 (0)