diff --git a/app/web/src/nova/ed/logic/ed-sync.tsx b/app/web/src/nova/ed/logic/ed-sync.tsx
index f7b0c1f8..e2f366d9 100644
--- a/app/web/src/nova/ed/logic/ed-sync.tsx
+++ b/app/web/src/nova/ed/logic/ed-sync.tsx
@@ -65,6 +65,13 @@ export const edInitSync = (p: PG) => {
const res = page.route.lookup(pathname);
if (res) {
params.page_id = res.id;
+ if (res.params) {
+ for (const [k, v] of Object.entries(res.params)) {
+ if (!["site_id", "page_id"].includes(k)) {
+ params[k] = v;
+ }
+ }
+ }
}
}
} else if (location.pathname.startsWith("/ed")) {
diff --git a/app/web/src/nova/vi/render/script/eval-prop.tsx b/app/web/src/nova/vi/render/script/eval-prop.tsx
index 7234e2d5..cb173beb 100644
--- a/app/web/src/nova/vi/render/script/eval-prop.tsx
+++ b/app/web/src/nova/vi/render/script/eval-prop.tsx
@@ -30,6 +30,7 @@ export const viEvalProps = (
api: vi.site.api,
...viScriptArg(vi),
...passprop,
+ params
};
meta.item.script.props = {};
diff --git a/app/web/src/nova/vi/render/script/eval-script.tsx b/app/web/src/nova/vi/render/script/eval-script.tsx
index dffb1025..be389fd9 100644
--- a/app/web/src/nova/vi/render/script/eval-script.tsx
+++ b/app/web/src/nova/vi/render/script/eval-script.tsx
@@ -56,6 +56,7 @@ export const viEvalScript = (
render: (jsx: ReactNode) => {
script.result = {jsx};
},
+ params,
...viScriptArg(vi),
...exports,
...passprop,
diff --git a/app/web/src/nova/vi/vi.tsx b/app/web/src/nova/vi/vi.tsx
index b404d62e..f66779ef 100644
--- a/app/web/src/nova/vi/vi.tsx
+++ b/app/web/src/nova/vi/vi.tsx
@@ -48,8 +48,9 @@ export const Vi: FC<{
w.isMobile = mode === "mobile";
w.isDesktop = mode === "desktop";
- w.preload = (urls: string[]) => {
+ w.preload = (_urls: string | string[]) => {
if (!vi.page.navs[page_id]) vi.page.navs[page_id] = new Set();
+ const urls = typeof _urls === "string" ? [_urls] : _urls;
for (const url of urls) {
vi.page.navs[page_id].add(url);
}
@@ -61,6 +62,8 @@ export const Vi: FC<{
});
}
}, 100);
+
+ return "";
};
vi.layout = layout;
diff --git a/app/web/src/utils/script/types/base.ts b/app/web/src/utils/script/types/base.ts
index a6afe6d5..dd6561f9 100644
--- a/app/web/src/utils/script/types/base.ts
+++ b/app/web/src/utils/script/types/base.ts
@@ -14,7 +14,7 @@ export const baseTypings = `
const isLayout: boolean;
const isMobile: boolean;
const isDesktop: boolean;
- const preload: (urls: string[]) => void;
+ const preload: (urls: string[]) => ReactNode;
const apiHeaders: Record;
const navigate: (url: string) => void;
const params: any;