mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-25 10:51:57 +01:00
Add .oxfmtignore to skip generated bindings and wasm-pack output. Add npm format script, update DEVELOPMENT.md for Vite+ toolchain, and format all non-generated files with oxfmt. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
21 lines
623 B
TypeScript
21 lines
623 B
TypeScript
import { useRef } from "react";
|
|
|
|
const PORTAL_CONTAINER_ID = "react-portal";
|
|
|
|
export function usePortal(name: string) {
|
|
const ref = useRef(getOrCreatePortal(name));
|
|
return ref.current;
|
|
}
|
|
|
|
function getOrCreatePortal(name: string) {
|
|
const portalContainer = document.getElementById(PORTAL_CONTAINER_ID) as HTMLDivElement;
|
|
let existing = portalContainer.querySelector(`:scope > [data-portal-name="${name}"]`);
|
|
if (!existing) {
|
|
const el: HTMLDivElement = document.createElement("div");
|
|
el.setAttribute("data-portal-name", name);
|
|
portalContainer.appendChild(el);
|
|
existing = el;
|
|
}
|
|
return existing;
|
|
}
|