/**
* BROWSER registration of the injectable HTML parser (native `DOMParser`).
*
* Importing this module for its SIDE EFFECT installs a `window.DOMParser`-backed
* {@link HtmlDocumentParser}. It is loaded by the package's `browser.ts` barrel
* (selected via the `"browser"` exports condition). It imports NO `jsdom`, so a
* client bundle that resolves the browser entry never pulls jsdom in.
*
* The returned `Document` is a real browser document, so it exposes exactly the
* same query/mutation surface the import passes use (`querySelector(All)`,
* `createElement`, `createTreeWalker`/`NodeFilter` via `defaultView`,
* `body.innerHTML`) as jsdom did on the Node path.
*/
// @tiptap/html's default (browser) entry: its `generateJSON` uses the native
// `window.DOMParser`, so it carries NO jsdom/happy-dom — keeping the client
// bundle free of Node-only DOM libs.
import { generateJSON } from "@tiptap/html";
import { setHtmlDocumentParser, setGenerateJson } from "./dom-parser.js";
setHtmlDocumentParser((html: string): Document => {
// Native, always available in a browser (and in a jsdom/happy-dom test
// environment, which is what the client vitest suite runs under). `text/html`
// parsing matches jsdom's `new JSDOM(html)` behaviour for our fragments.
return new DOMParser().parseFromString(html, "text/html");
});
setGenerateJson(generateJSON);