UNPKG

@wordpress/interactivity

Version:

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

42 lines (41 loc) 1.23 kB
// packages/interactivity/src/init.ts import { hydrate } from "preact"; import { toVdom, hydratedIslands } from "./vdom"; import { createRootFragment, splitTask } from "./utils"; 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 init = async () => { const nodes = document.querySelectorAll(`[data-wp-interactive]`); await new Promise((resolve) => { setTimeout(resolve, 0); }); 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, init, initialVdom }; //# sourceMappingURL=init.js.map