/* Copyright 2026 Marimo. All rights reserved. */
import type { EditorView, Panel } from "@codemirror/view";
import { Provider } from "jotai";
import { createRoot, type Root } from "react-dom/client";
import { store } from "@/core/state/jotai";
/**
* Bridge between Codemirror panels and React
*/
export function createPanel(
view: EditorView,
Component: React.ComponentType<{ view: EditorView }>,
): Panel {
const dom = document.createElement("div");
let root: Root | undefined;
return {
dom,
mount() {
root = createRoot(dom);
root.render(
,
);
},
update() {
root?.render(
,
);
},
destroy() {
root?.unmount();
},
};
}