@ilha/router 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/{src-BFZ-RQw6.js → src-DB9CdFFS.js} +43 -1
- package/dist/vite.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as wrapError, E as setHistoryMode, S as useRoute, T as getHistoryMode, _ as routeParams, a as RouterView, b as router, c as enableLinkInterception, d as loader, f as navigate, g as routeHash, h as redirect, i as RouterLink, l as error, m as prime, n as LoaderError, o as composeLoaders, p as prefetch, r as Redirect, s as defineLayout, t as LOADER_ENDPOINT, u as isActive, v as routePath, w as wrapLayout, x as src_default, y as routeSearch } from "./src-
|
|
1
|
+
import { C as wrapError, E as setHistoryMode, S as useRoute, T as getHistoryMode, _ as routeParams, a as RouterView, b as router, c as enableLinkInterception, d as loader, f as navigate, g as routeHash, h as redirect, i as RouterLink, l as error, m as prime, n as LoaderError, o as composeLoaders, p as prefetch, r as Redirect, s as defineLayout, t as LOADER_ENDPOINT, u as isActive, v as routePath, w as wrapLayout, x as src_default, y as routeSearch } from "./src-DB9CdFFS.js";
|
|
2
2
|
export { LOADER_ENDPOINT, LoaderError, Redirect, RouterLink, RouterView, composeLoaders, src_default as default, defineLayout, enableLinkInterception, error, getHistoryMode, isActive, loader, navigate, prefetch, prime, redirect, routeHash, routeParams, routePath, routeSearch, router, setHistoryMode, useRoute, wrapError, wrapLayout };
|
|
@@ -180,7 +180,45 @@ function composeLoaders(loaders) {
|
|
|
180
180
|
};
|
|
181
181
|
}
|
|
182
182
|
function wrapLayout(layout, page) {
|
|
183
|
-
|
|
183
|
+
const Wrapped = layout(Object.assign(page.key("page"), { toString: page.toString.bind(page) }));
|
|
184
|
+
function pageMountHost(host) {
|
|
185
|
+
return host.querySelector("[data-ilha-slot=\"k:page\"]") ?? host;
|
|
186
|
+
}
|
|
187
|
+
function preparePageMountHost(outer, mountHost) {
|
|
188
|
+
if (mountHost.hasAttribute("data-ilha-state")) return;
|
|
189
|
+
const outerState = outer.getAttribute("data-ilha-state");
|
|
190
|
+
if (!outerState) return;
|
|
191
|
+
try {
|
|
192
|
+
const snapshot = JSON.parse(outerState);
|
|
193
|
+
delete snapshot._skipOnMount;
|
|
194
|
+
mountHost.setAttribute("data-ilha-state", JSON.stringify(snapshot));
|
|
195
|
+
} catch {}
|
|
196
|
+
}
|
|
197
|
+
Wrapped.mount = (host, props) => {
|
|
198
|
+
const mountHost = pageMountHost(host);
|
|
199
|
+
preparePageMountHost(host, mountHost);
|
|
200
|
+
return page.mount(mountHost, props);
|
|
201
|
+
};
|
|
202
|
+
Wrapped[ISLAND_MOUNT_INTERNAL] = (host, props) => {
|
|
203
|
+
const mountHost = pageMountHost(host);
|
|
204
|
+
preparePageMountHost(host, mountHost);
|
|
205
|
+
const pageInternal = page[ISLAND_MOUNT_INTERNAL];
|
|
206
|
+
if (typeof pageInternal === "function") return pageInternal(mountHost, props);
|
|
207
|
+
return {
|
|
208
|
+
unmount: page.mount(mountHost, props),
|
|
209
|
+
updateProps: () => {}
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
Wrapped.hydratable = async (props, opts) => {
|
|
213
|
+
if (!opts?.name) throw new Error("wrapLayout: hydratable requires options.name");
|
|
214
|
+
const resolvedProps = props ?? {};
|
|
215
|
+
const pageBlock = await page.hydratable(resolvedProps, opts);
|
|
216
|
+
const openTag = pageBlock.match(/^<([a-zA-Z][\w-]*)\s([^>]*)>/);
|
|
217
|
+
if (!openTag) return pageBlock;
|
|
218
|
+
const layoutInner = Wrapped.toString(resolvedProps);
|
|
219
|
+
return `<${openTag[1]} ${openTag[2]}>${layoutInner}</${openTag[1]}>`;
|
|
220
|
+
};
|
|
221
|
+
return Wrapped;
|
|
184
222
|
}
|
|
185
223
|
function wrapError(handler, page) {
|
|
186
224
|
const Wrapper = ilha.render(() => {
|
|
@@ -246,6 +284,10 @@ function wrapError(handler, page) {
|
|
|
246
284
|
};
|
|
247
285
|
}
|
|
248
286
|
};
|
|
287
|
+
Wrapper.hydratable = async (props, opts) => {
|
|
288
|
+
if (!opts?.name) throw new Error("wrapError: hydratable requires options.name");
|
|
289
|
+
return page.hydratable(props ?? {}, opts);
|
|
290
|
+
};
|
|
249
291
|
return Wrapper;
|
|
250
292
|
}
|
|
251
293
|
function defineLayout(layout) {
|
package/dist/vite.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as wrapError, w as wrapLayout } from "./src-
|
|
1
|
+
import { C as wrapError, w as wrapLayout } from "./src-DB9CdFFS.js";
|
|
2
2
|
import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
3
3
|
import { basename, dirname, extname, join, relative, resolve } from "node:path";
|
|
4
4
|
//#region src/vite.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ilha/router",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "A tiny SPA router for Ilha",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ryuz <ryuzer@proton.me>",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"test": "bun test"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"ilha": "0.6.
|
|
33
|
+
"ilha": "0.6.1",
|
|
34
34
|
"rou3": "0.8.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|