@islands/hydration
Version:
Hydration utilities for îles
32 lines (31 loc) • 909 B
JavaScript
import { onDispose } from "./hydration.js";
import { createComponent, hydrate, render } from "solid-js/web";
//#region solid.ts
function createIsland(component, id, el, props, slots) {
if (import.meta.env.DEV) window._$HY ||= {
events: [],
completed: /* @__PURE__ */ new WeakSet(),
r: {}
};
const dispose = (import.meta.env.DEV ? render : hydrate)(() => createComponent(component, {
...props,
children: createContent(slots)
}), el, { renderId: id });
if (import.meta.env.DISPOSE_ISLANDS) onDispose(id, dispose);
if (import.meta.env.DEV) window.__ILE_DEVTOOLS__?.onHydration({
id,
el,
props,
slots,
component,
framework: "solid"
});
}
function createContent(slots) {
if (!slots?.default) return;
const content = document.createElement("iles-content");
content.innerHTML = slots.default;
return Array.from(content.childNodes);
}
//#endregion
export { createIsland as default };