UNPKG

@astro-tei/react

Version:

Astro integration for TEI as Custom Elements with React support

42 lines 1.55 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { useEffect } from "react"; import { defineCustomElement } from "CETEIcean/utilities.js"; import { TEINode, ComponentMapProvider } from "./TEINode"; import { Tei, Eg, Graphic, List, Note, Ptr, Ref, TeiHeader, } from "./DefaultBehaviors"; // Support server side and client side DOM processing. let localParser; // @ts-expect-error: env is not recognized by the linter on import.meta, but we need this for SSR. if (import.meta.env.SSR) { const { createRequire } = await import("module"); const require = createRequire(import.meta.url); const { JSDOM } = require("jsdom"); localParser = (data) => { const j = new JSDOM(data, { contentType: "text/xml" }); return j.window.document; }; } else { localParser = (data) => { return (new DOMParser()).parseFromString(data, "text/xml"); }; } export default function BasicRouter({ tei, elements, routes }) { const teiDom = localParser(tei); useEffect(() => { for (const el of elements) { defineCustomElement(el); } }); const defaultRoutes = { "tei-tei": Tei, "teieg-egxml": Eg, "tei-graphic": Graphic, "tei-list": List, "tei-note": Note, "tei-ptr": Ptr, "tei-ref": Ref, "tei-teiheader": TeiHeader }; return _jsx(ComponentMapProvider, { componentMap: routes ? routes : defaultRoutes, children: _jsx(TEINode, { node: teiDom.documentElement }) }); } //# sourceMappingURL=BasicRouter.js.map