From 2a5e0164a42611b22ecfd1dc15285e25ef938d3a Mon Sep 17 00:00:00 2001 From: Rizky Date: Sat, 3 Feb 2024 17:47:21 +0700 Subject: [PATCH] wip fix coding local --- .../src/nova/ed/panel/popup/script/monaco.tsx | 33 +++++++++++++++++++ .../ed/panel/popup/script/scope/scope.tsx | 7 +++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/app/web/src/nova/ed/panel/popup/script/monaco.tsx b/app/web/src/nova/ed/panel/popup/script/monaco.tsx index c71f46c5..7f52bd37 100644 --- a/app/web/src/nova/ed/panel/popup/script/monaco.tsx +++ b/app/web/src/nova/ed/panel/popup/script/monaco.tsx @@ -139,6 +139,39 @@ export const EdScriptMonaco: FC<{}> = () => { break; case "prop-instance": { + let parent_meta = null; + const parent_id = meta.parent?.id; + if (parent_id) { + if (active.comp_id) { + parent_meta = + p.comp.list[active.comp_id].meta[parent_id]; + } else { + parent_meta = p.page.meta[parent_id]; + } + } + if (parent_meta) { + const scope = declareScope(p, parent_meta, monaco); + for (const [k, v] of Object.entries(scope.exports)) { + addScope(p, monaco, `file:///${k}`, v); + } + addScope( + p, + monaco, + `file:///prop-global.d.ts`, + `\ +${Object.entries(scope.vars).map(([var_name, var_from]) => { + return `import {${var_name} as ___${var_name}} from "./${var_from}"`; +})} +declare global { + ${Object.entries(scope.vars).map(([var_name]) => { + return `const ${var_name} = ___${var_name}`; + })} +} +` + ); + + } + const nmodel = monaco.editor.createModel( val, "typescript", diff --git a/app/web/src/nova/ed/panel/popup/script/scope/scope.tsx b/app/web/src/nova/ed/panel/popup/script/scope/scope.tsx index a175ff1f..d218ac2f 100644 --- a/app/web/src/nova/ed/panel/popup/script/scope/scope.tsx +++ b/app/web/src/nova/ed/panel/popup/script/scope/scope.tsx @@ -7,6 +7,7 @@ type Monaco = Parameters[1]; export type MonacoEditor = Parameters[0]; export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => { + const vars: Record = {}; const metas = active.comp_id ? p.comp.list[active.comp_id]?.meta : p.page.meta; @@ -59,6 +60,10 @@ export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => { const ${k}__local = ${v.val}; export const ${k}: typeof ${k}__local & { render: ()=>void } = ${k}__local as any;`; } + + if (src) { + vars[k] = `${m.item.id}_${k}_${v.type}`; + } exports[`${m.item.id}_${k}_${v.type}.tsx`] = src; } } @@ -91,7 +96,7 @@ export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => { prev_m = m; } - return { exports, imports }; + return { exports, imports, vars }; }; const map_childs = (