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;