wip fix
This commit is contained in:
parent
5640ebe08a
commit
abb843c3de
|
|
@ -72,6 +72,8 @@ export const code_edit: SAction["code"]["edit"] = async function (
|
||||||
const res = parseJs(adv.get("js")) || false;
|
const res = parseJs(adv.get("js")) || false;
|
||||||
if (res) {
|
if (res) {
|
||||||
mitem.set("script", res);
|
mitem.set("script", res);
|
||||||
|
} else {
|
||||||
|
mitem.delete("script");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,16 @@ export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => {
|
||||||
map_childs(p, metas, entry, paths);
|
map_childs(p, metas, entry, paths);
|
||||||
|
|
||||||
let cur = active.comp_id ? active.comp_id : "page";
|
let cur = active.comp_id ? active.comp_id : "page";
|
||||||
const import_map = extract_import_map(cur, paths, meta, p, monaco);
|
const { import_map, parent_id } = extract_import_map(
|
||||||
|
cur,
|
||||||
|
paths,
|
||||||
|
meta,
|
||||||
|
p,
|
||||||
|
monaco
|
||||||
|
);
|
||||||
|
|
||||||
gen_content(cur, p, paths, import_map, monaco);
|
gen_content(cur, p, paths, import_map, monaco);
|
||||||
return import_map[active.item_id];
|
return import_map[parent_id];
|
||||||
};
|
};
|
||||||
|
|
||||||
const gen_content = (
|
const gen_content = (
|
||||||
|
|
@ -38,6 +44,18 @@ const gen_content = (
|
||||||
let idx = 0;
|
let idx = 0;
|
||||||
let last_import = "";
|
let last_import = "";
|
||||||
for (const m of path) {
|
for (const m of path) {
|
||||||
|
if (!added.has(m.item.id) && m.item.adv?.js) {
|
||||||
|
added.add(m.item.id);
|
||||||
|
const content = last_import
|
||||||
|
? `\
|
||||||
|
${last_import}
|
||||||
|
/** IMPORT MODULE **/
|
||||||
|
${m.item.adv.js}`
|
||||||
|
: m.item.adv.js;
|
||||||
|
|
||||||
|
addScope(p, monaco, `file:///${cur}_${m.item.id}_src_src.tsx`, content);
|
||||||
|
}
|
||||||
|
|
||||||
if (!import_map[m.item.id]) {
|
if (!import_map[m.item.id]) {
|
||||||
if (idx === 0) {
|
if (idx === 0) {
|
||||||
break;
|
break;
|
||||||
|
|
@ -45,16 +63,6 @@ const gen_content = (
|
||||||
} else {
|
} else {
|
||||||
last_import = import_map[m.item.id];
|
last_import = import_map[m.item.id];
|
||||||
}
|
}
|
||||||
if (!added.has(m.item.id) && m.item.adv?.js) {
|
|
||||||
added.add(m.item.id);
|
|
||||||
const content = `\
|
|
||||||
${last_import}
|
|
||||||
/** IMPORT MODULE **/
|
|
||||||
${m.item.adv.js}
|
|
||||||
`;
|
|
||||||
|
|
||||||
addScope(p, monaco, `file:///${cur}_${m.item.id}_src_src.tsx`, content);
|
|
||||||
}
|
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -68,18 +76,23 @@ const extract_import_map = (
|
||||||
monaco: Monaco
|
monaco: Monaco
|
||||||
) => {
|
) => {
|
||||||
const added = new Set<string>();
|
const added = new Set<string>();
|
||||||
|
let parent_id = "";
|
||||||
const import_map = {} as Record<string, string>;
|
const import_map = {} as Record<string, string>;
|
||||||
for (const path of paths) {
|
for (const path of paths) {
|
||||||
const imports = new Set<string>();
|
const imports = new Set<string>();
|
||||||
if (path.map((e) => e.item.id).includes(meta.item.id)) {
|
if (path.map((e) => e.item.id).includes(meta.item.id)) {
|
||||||
let i = 0;
|
let i = 0;
|
||||||
|
|
||||||
for (const meta of path) {
|
let prev_m = null as any;
|
||||||
if (!added.has(meta.item.id)) {
|
for (const m of path) {
|
||||||
added.add(meta.item.id);
|
if (m.item.id === meta.item.id) {
|
||||||
|
if (prev_m) parent_id = prev_m.item.id;
|
||||||
|
}
|
||||||
|
prev_m = m;
|
||||||
|
if (!added.has(m.item.id)) {
|
||||||
|
added.add(m.item.id);
|
||||||
|
|
||||||
const ex = extractExport(p, meta);
|
const ex = extractExport(p, m);
|
||||||
|
|
||||||
for (const [k, v] of Object.entries(ex)) {
|
for (const [k, v] of Object.entries(ex)) {
|
||||||
let src = "";
|
let src = "";
|
||||||
|
|
@ -110,13 +123,13 @@ ${src}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
import_map[meta.item.id] = [...imports].join("\n");
|
import_map[m.item.id] = [...imports].join("\n");
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return import_map;
|
return { import_map, parent_id };
|
||||||
};
|
};
|
||||||
|
|
||||||
const comp_map = {} as Record<
|
const comp_map = {} as Record<
|
||||||
|
|
@ -167,6 +180,7 @@ const map_childs = (
|
||||||
);
|
);
|
||||||
|
|
||||||
jprop = comp_map[meta.item.component.id];
|
jprop = comp_map[meta.item.component.id];
|
||||||
|
//todo: comp prop src: import from page scope
|
||||||
for (const path of jprop.paths) {
|
for (const path of jprop.paths) {
|
||||||
for (const m of path) {
|
for (const m of path) {
|
||||||
if (!jprop.exports[m.item.id]) {
|
if (!jprop.exports[m.item.id]) {
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,19 @@ export const viEvalProps = (
|
||||||
const id = prop.content?.id;
|
const id = prop.content?.id;
|
||||||
if (id) {
|
if (id) {
|
||||||
const meta = vi.meta[id];
|
const meta = vi.meta[id];
|
||||||
|
if (
|
||||||
|
meta.mitem &&
|
||||||
|
prop.jsxCalledBy !== (meta.item.originalId || meta.item.id)
|
||||||
|
) {
|
||||||
|
meta.mitem
|
||||||
|
.get("component")
|
||||||
|
?.get("props")
|
||||||
|
?.get(name)
|
||||||
|
?.set(
|
||||||
|
"jsxCalledBy",
|
||||||
|
meta.item.originalId || meta.item.id
|
||||||
|
);
|
||||||
|
}
|
||||||
return <ViRender meta={meta} passprop={arg.passprop} />;
|
return <ViRender meta={meta} passprop={arg.passprop} />;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import { TypedArray, TypedMap } from "yjs-types";
|
import { TypedArray, TypedMap } from "yjs-types";
|
||||||
import { parseJs } from "../../../../srv/ws/sync/editor/parser/parse-js";
|
|
||||||
import { BasicItem, MBasicItem, MetaItem } from "./meta";
|
import { BasicItem, MBasicItem, MetaItem } from "./meta";
|
||||||
import { FNAdv, FNComponent, FNLayout, FNLinkTag } from "./meta-fn";
|
import { FNAdv, FNComponent, FNLayout, FNLinkTag } from "./meta-fn";
|
||||||
import { MSection } from "./section";
|
import { MSection } from "./section";
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ export type FNCompDef = {
|
||||||
valueBuilt: any;
|
valueBuilt: any;
|
||||||
gen?: string;
|
gen?: string;
|
||||||
genBuilt?: string;
|
genBuilt?: string;
|
||||||
|
jsxCalledBy?: string;
|
||||||
content?: IItem;
|
content?: IItem;
|
||||||
visible?: string;
|
visible?: string;
|
||||||
meta?: FNCompMeta;
|
meta?: FNCompMeta;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue