21 lines
1.2 KiB
JavaScript
21 lines
1.2 KiB
JavaScript
// Rôle : monte les vrais overlays et textes éditoriaux sous StrictMode pour tester leur cycle de vie.
|
|
import { createElement, StrictMode } from "react";
|
|
import { createRoot } from "react-dom/client";
|
|
import { flushSync } from "react-dom";
|
|
import { ConfirmModal, CreateToolboxModal, NotificationToast } from "../../website/src/components/ToolboxModals.jsx";
|
|
import { RichText } from "../../website/src/components/RichText.jsx";
|
|
|
|
export function mountShellProbe(element) {
|
|
const root = createRoot(element);
|
|
const closed = [];
|
|
const onClose = (value) => closed.push(value);
|
|
function render({ confirm = false, create = false, toast = null, text = "" } = {}) {
|
|
flushSync(() => root.render(createElement(StrictMode, null,
|
|
confirm && createElement(ConfirmModal, { key: "confirm", title: "Confirmation test", message: "Continuer ?", onClose }),
|
|
create && createElement(CreateToolboxModal, { key: "create", onClose }),
|
|
toast && createElement(NotificationToast, { key: "toast", ...toast, onClose }),
|
|
createElement("div", { id: "editorial-text", key: "text" }, createElement(RichText, { text }))
|
|
)));
|
|
}
|
|
return { render, closed, unmount: () => root.unmount() };
|
|
}
|