wip fix passprop

This commit is contained in:
Rizky 2023-12-27 09:50:40 +07:00
parent 79f29978ea
commit e474131a87
6 changed files with 30 additions and 23 deletions

View File

@ -6,7 +6,7 @@ export const extractExportImport = (
m: IMeta, m: IMeta,
imports: Record<string, string> imports: Record<string, string>
) => { ) => {
const def = m.scope.def; const def = m.item.script;
let result: { let result: {
local?: ReturnType<typeof extractLocal>; local?: ReturnType<typeof extractLocal>;
passprop?: ReturnType<typeof extractPassProp>; passprop?: ReturnType<typeof extractPassProp>;
@ -87,7 +87,7 @@ ${commentize("value", null, m.item.adv?.js)}
const extractLocal = ( const extractLocal = (
p: PG, p: PG,
m: IMeta, m: IMeta,
def: IMeta["scope"]["def"], def: IMeta["item"]["script"],
imports: Record<string, string> imports: Record<string, string>
) => { ) => {
if (def?.local) { if (def?.local) {
@ -123,7 +123,7 @@ declare global {
const extractPassProp = ( const extractPassProp = (
p: PG, p: PG,
m: IMeta, m: IMeta,
def: IMeta["scope"]["def"], def: IMeta["item"]["script"],
imports: Record<string, string> imports: Record<string, string>
) => { ) => {
if (def?.passprop) { if (def?.passprop) {
@ -165,7 +165,7 @@ declare global {
const extractProps = ( const extractProps = (
p: PG, p: PG,
m: IMeta, m: IMeta,
def: IMeta["scope"]["def"], def: IMeta["item"]["script"],
imports: Record<string, string> imports: Record<string, string>
) => { ) => {
if (def?.props) { if (def?.props) {

View File

@ -10,14 +10,14 @@ export const scopeMapExportImport = (p: PG, meta: IMeta, parents: IMeta[]) => {
for (const m of parents) { for (const m of parents) {
next_parent = parents[i + 1]; next_parent = parents[i + 1];
let def = m.scope.def; let def = m.item.script;
if (active.comp_id && m.parent?.id === "root" && active.instance) { if (active.comp_id && m.parent?.id === "root" && active.instance) {
const meta = p.page.meta[active.instance.item_id]; const meta = p.page.meta[active.instance.item_id];
if (meta) { if (meta) {
if (!m.scope.def) m.scope.def = {}; if (!m.item.script) m.item.script = {};
def = m.scope.def; def = m.item.script;
def.props = { ...m.scope.def.props, ...meta.scope?.def?.props }; def.props = { ...m.item.script.props, ...meta.item.script?.props };
} }
} }

View File

@ -33,11 +33,11 @@ export const nodeRender: NodeRender<IMeta> = (node, prm) => {
const comp = p.comp.loaded[node.data.jsx_prop.comp_id]; const comp = p.comp.loaded[node.data.jsx_prop.comp_id];
if (comp) { if (comp) {
const prop_name = node.data?.jsx_prop?.name; const prop_name = node.data?.jsx_prop?.name;
const cprop = comp.comp.component?.props[prop_name]; const cprop = comp.component?.props[prop_name];
if (cprop && node.data.parent?.instance_id) { if (cprop && node.data.parent?.instance_id) {
const meta = getMetaById(p, node.data.parent.instance_id); const meta = getMetaById(p, node.data.parent.instance_id);
if (meta && prop_name) { if (meta && prop_name) {
const props = meta.scope.def?.props; const props = meta.item.script?.props;
if (props) { if (props) {
const prop = props[prop_name]; const prop = props[prop_name];
if ( if (

View File

@ -8,8 +8,8 @@ export const viEvalProps = (
passprop: any passprop: any
) => { ) => {
if (meta.item.component?.id) { if (meta.item.component?.id) {
if (!meta.scope.def) { if (!meta.item.script) {
meta.scope.def = {}; meta.item.script = {};
} }
const exports = (window as any).exports; const exports = (window as any).exports;
@ -19,7 +19,7 @@ export const viEvalProps = (
...passprop, ...passprop,
}; };
meta.scope.def.props = {}; meta.item.script.props = {};
let fails = new Set<string>(); let fails = new Set<string>();
if (!!meta.item.component.props) { if (!!meta.item.component.props) {
for (const [name, prop] of Object.entries(meta.item.component.props)) { for (const [name, prop] of Object.entries(meta.item.component.props)) {
@ -31,13 +31,13 @@ export const viEvalProps = (
` `
); );
meta.scope.def.props[name] = { value: prop.valueBuilt }; meta.item.script.props[name] = { value: prop.valueBuilt };
let val = fn(...Object.values(arg)); let val = fn(...Object.values(arg));
if (typeof val === "function") { if (typeof val === "function") {
meta.scope.def.props[name].fn = val; meta.item.script.props[name].fn = val;
val = (...args: any[]) => { val = (...args: any[]) => {
return meta.scope.def?.props?.[name].fn(...args); return meta.item.script?.props?.[name].fn(...args);
}; };
} }
@ -55,8 +55,8 @@ export const viEvalProps = (
}; };
export const updatePropScope = (meta: IMeta, scope: any) => { export const updatePropScope = (meta: IMeta, scope: any) => {
if (meta.scope.def?.props) { if (meta.item.script?.props) {
for (const [name, prop] of Object.entries(meta.scope.def.props)) { for (const [name, prop] of Object.entries(meta.item.script.props)) {
if (prop.fn) { if (prop.fn) {
const all_scope = scope; const all_scope = scope;
const fn = new Function( const fn = new Function(

View File

@ -17,13 +17,20 @@ export const modifyChild = (arg: any, passprop?: any) => {
if (k === "key" || k === "idx" || k === "continue") continue; if (k === "key" || k === "idx" || k === "continue") continue;
} }
let prop: any = {};
if (Array.isArray(arg)) {
prop.children = arg;
} else {
prop = arg;
}
const childs = []; const childs = [];
if (Array.isArray(arg.children)) { if (Array.isArray(prop.children)) {
for (const child of arg.children) { for (const child of prop.children) {
childs.push(modify(child, arg, passprop)); childs.push(modify(child, prop, passprop));
} }
} else { } else {
childs.push(modify(arg.children, arg, passprop)); childs.push(modify(prop.children, prop, passprop));
} }
return childs; return childs;
}; };

View File

@ -22,7 +22,7 @@ export const getScopeMeta = (
} }
for (const m of scopes_meta) { for (const m of scopes_meta) {
const def = m.scope.def; const def = m.item.script;
if (def) { if (def) {
if (def.passprop) { if (def.passprop) {
for (const p of Object.keys(def.passprop)) { for (const p of Object.keys(def.passprop)) {