iles
Version:
Vite & Vue powered static site generator with partial hydration
34 lines (33 loc) • 1.32 kB
JavaScript
import { useSSRContext } from 'vue';
import { hydrateWhenIdle, hydrateNow, hydrateOnMediaQuery, hydrateWhenVisible, } from '@islands/hydration';
export function newHydrationId() {
if (import.meta.env.SSR) {
const context = useSSRContext();
context.hydrationSerialNumber ||= 1;
return `ile-${context.hydrationSerialNumber++}`;
}
else if (import.meta.env.DEV) {
return window.__ILE_DEVTOOLS__.nextIslandId();
}
}
export var Hydrate;
(function (Hydrate) {
Hydrate["WhenIdle"] = "client:idle";
Hydrate["OnLoad"] = "client:load";
Hydrate["MediaQuery"] = "client:media";
Hydrate["SkipPrerender"] = "client:only";
Hydrate["WhenVisible"] = "client:visible";
Hydrate["None"] = "client:none";
})(Hydrate || (Hydrate = {}));
export const hydrationFns = {
[Hydrate.WhenIdle]: hydrateWhenIdle.name,
[Hydrate.OnLoad]: hydrateNow.name,
[Hydrate.MediaQuery]: hydrateOnMediaQuery.name,
[Hydrate.SkipPrerender]: hydrateNow.name,
[Hydrate.WhenVisible]: hydrateWhenVisible.name,
[Hydrate.None]: hydrateNow.name,
};
// Internal: Strategies that will hydrate instantly and don't need dynamic imports.
export function isEager(strategy) {
return strategy === Hydrate.OnLoad || strategy === Hydrate.SkipPrerender || strategy === Hydrate.None;
}