fixing scope

This commit is contained in:
Rizky 2024-07-27 20:48:43 +07:00
parent eb67873f0f
commit a515918d03
6 changed files with 40 additions and 28 deletions

File diff suppressed because one or more lines are too long

View File

@ -234,7 +234,9 @@ ${tree_usage.map((e) => e.import).join("\n")}
declare global { declare global {
${tree_usage.map((e) => e.usage).join("\n")} ${tree_usage.map((e) => e.usage).join("\n")}
}`, }
export {}
`,
"typings:tree_usage.ts" "typings:tree_usage.ts"
); );
register( register(

View File

@ -24,7 +24,6 @@ export const ViScript: FC<{
if (!_pass) _pass = {}; if (!_pass) _pass = {};
viEvalProps(vi, meta, is_layout, _pass, depth, parent_key); viEvalProps(vi, meta, is_layout, _pass, depth, parent_key);
} }
if (meta.item.adv?.html) { if (meta.item.adv?.html) {
return ( return (

View File

@ -18,6 +18,7 @@ import { createViLocal } from "./local";
import { createViPassProp } from "./passprop"; import { createViPassProp } from "./passprop";
import { devItem } from "./item-dev"; import { devItem } from "./item-dev";
import { prodItem } from "./item-prod"; import { prodItem } from "./item-prod";
export const viEvalScript = ( export const viEvalScript = (
vi: { vi: {
page: VG["page"]; page: VG["page"];

View File

@ -106,9 +106,10 @@ export const createViLocal = (
} }
}, [editorLocalValue[id]]); }, [editorLocalValue[id]]);
return modifyChild(children, { const result = modifyChild(children, {
...meta.script?.scope, ...meta.script?.scope,
[arg.name]: local, [arg.name]: local,
}); });
return result;
}; };
}; };

View File

@ -189,12 +189,17 @@ export const modifyChild = (arg: any, passprop?: any, add_props?: any) => {
return modify(prop.children, prop, passprop, add_props); return modify(prop.children, prop, passprop, add_props);
}; };
const modify = (el: ReactNode, arg: any, passprop?: any, add_props?: any) => { const modify = (
el: ReactNode | ReactNode[],
arg: any,
passprop?: any,
add_props?: any
): ReactNode | ReactNode[] => {
if (isValidElement(el)) { if (isValidElement(el)) {
const passarg = { ...arg }; const passarg = { ...arg };
delete passarg.children; delete passarg.children;
return { const result = {
...el, ...el,
props: { props: {
...el.props, ...el.props,
@ -202,6 +207,10 @@ const modify = (el: ReactNode, arg: any, passprop?: any, add_props?: any) => {
passprop: { ...passprop, ...passarg }, passprop: { ...passprop, ...passarg },
}, },
}; };
return result;
} else if (Array.isArray(el)) {
return modifyChild(el, passprop, add_props);
} }
return el; return el;
}; };