UNPKG

@wordpress/interactivity

Version:

Package that provides a standard and simple way to handle the frontend interactivity of Gutenberg blocks.

39 lines (38 loc) 1.2 kB
// packages/interactivity/src/hydration.ts import { hydrate } from "preact"; import { toVdom, hydratedIslands } from "./vdom.mjs"; import { createRootFragment, splitTask } from "./utils.mjs"; var regionRootFragments = /* @__PURE__ */ new WeakMap(); var getRegionRootFragment = (regions) => { const region = Array.isArray(regions) ? regions[0] : regions; if (!region.parentElement) { throw Error("The passed region should be an element with a parent."); } if (!regionRootFragments.has(region)) { regionRootFragments.set( region, createRootFragment(region.parentElement, regions) ); } return regionRootFragments.get(region); }; var initialVdom = /* @__PURE__ */ new WeakMap(); var hydrateRegions = async () => { const nodes = document.querySelectorAll(`[data-wp-interactive]`); for (const node of nodes) { if (!hydratedIslands.has(node)) { await splitTask(); const fragment = getRegionRootFragment(node); const vdom = toVdom(node); initialVdom.set(node, vdom); await splitTask(); hydrate(vdom, fragment); } } }; export { getRegionRootFragment, hydrateRegions, initialVdom }; //# sourceMappingURL=hydration.mjs.map