wip fix jprop
This commit is contained in:
parent
e3e7fc9812
commit
5640ebe08a
|
|
@ -97,7 +97,7 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
if (meta) {
|
if (meta) {
|
||||||
const imports = declareScope(p, meta, monaco);
|
const imports = declareScope(p, meta, monaco);
|
||||||
|
|
||||||
let cur = "page";
|
let cur = active.comp_id ? active.comp_id : "page";
|
||||||
monaco.editor.getModels().forEach((model) => {
|
monaco.editor.getModels().forEach((model) => {
|
||||||
if (
|
if (
|
||||||
model.uri.path === `/${cur}_${active.item_id}_src_src.tsx`
|
model.uri.path === `/${cur}_${active.item_id}_src_src.tsx`
|
||||||
|
|
@ -106,15 +106,21 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const model = editor.getModel();
|
||||||
|
if (!model) {
|
||||||
|
const nmodel = monaco.editor.createModel(
|
||||||
|
val,
|
||||||
|
"typescript",
|
||||||
|
monaco.Uri.parse("file:///active.tsx")
|
||||||
|
);
|
||||||
|
|
||||||
|
editor.setModel(nmodel);
|
||||||
|
}
|
||||||
|
|
||||||
if (imports) {
|
if (imports) {
|
||||||
local.imports = imports;
|
local.imports = imports;
|
||||||
|
const end = imports.split("\n").length + 1;
|
||||||
const range = new monaco.Range(
|
const range = new monaco.Range(1, 0, end, 0);
|
||||||
1,
|
|
||||||
0,
|
|
||||||
imports.split("\n").length + 1,
|
|
||||||
0
|
|
||||||
);
|
|
||||||
(editor as any).setHiddenAreas([range]);
|
(editor as any).setHiddenAreas([range]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -156,8 +162,8 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
?.getValue()
|
?.getValue()
|
||||||
.replace(/\{\s*children\s*\}/gi, newval);
|
.replace(/\{\s*children\s*\}/gi, newval);
|
||||||
|
|
||||||
if (curval.includes("/** IMPORT BOUNDARY **/")) {
|
if (curval.includes("/** IMPORT MODULE **/")) {
|
||||||
curval = curval.split("/** IMPORT BOUNDARY **/\n").pop() || "";
|
curval = curval.split("/** IMPORT MODULE **/\n").pop() || "";
|
||||||
}
|
}
|
||||||
|
|
||||||
const text = trim(
|
const text = trim(
|
||||||
|
|
@ -170,7 +176,7 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
|
|
||||||
let final_src = text;
|
let final_src = text;
|
||||||
if (local.imports) {
|
if (local.imports) {
|
||||||
final_src = `${local.imports}\n/** IMPORT BOUNDARY **/\n${text}`;
|
final_src = `${local.imports}\n/** IMPORT MODULE **/\n${text}`;
|
||||||
}
|
}
|
||||||
local.editor.executeEdits(null, [
|
local.editor.executeEdits(null, [
|
||||||
{
|
{
|
||||||
|
|
@ -218,8 +224,8 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
{ css: "scss", js: "typescript", html: "html" }[p.ui.popup.script.mode]
|
{ css: "scss", js: "typescript", html: "html" }[p.ui.popup.script.mode]
|
||||||
}
|
}
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
if ((value || "").includes("/** IMPORT BOUNDARY **/")) {
|
if ((value || "").includes("/** IMPORT MODULE **/")) {
|
||||||
const valparts = (value || "").split("/** IMPORT BOUNDARY **/\n");
|
const valparts = (value || "").split("/** IMPORT MODULE **/\n");
|
||||||
if (valparts.length === 2) local.value = valparts[1];
|
if (valparts.length === 2) local.value = valparts[1];
|
||||||
} else {
|
} else {
|
||||||
local.value = value || "";
|
local.value = value || "";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { extractLoc } from "../../../../../../utils/script/mount";
|
import { extractLoc } from "../../../../../../utils/script/mount";
|
||||||
import { PG } from "../../../../logic/ed-global";
|
import { PG, active } from "../../../../logic/ed-global";
|
||||||
import { CodeLoc, Monaco } from "./type";
|
import { Monaco } from "./type";
|
||||||
|
|
||||||
export const addScope = (
|
export const addScope = (
|
||||||
p: PG,
|
p: PG,
|
||||||
|
|
@ -20,9 +20,11 @@ export const addScope = (
|
||||||
|
|
||||||
const arg = extractLoc(uri.path.split("_"), p);
|
const arg = extractLoc(uri.path.split("_"), p);
|
||||||
model.onDidChangeContent((e) => {
|
model.onDidChangeContent((e) => {
|
||||||
const text = model.getValue();
|
if (arg.id !== active.item_id) {
|
||||||
console.log(arg);
|
const text = model.getValue();
|
||||||
console.warn(text);
|
console.log(arg);
|
||||||
|
console.warn(text);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ export const extractExport = (p: PG, m: IMeta) => {
|
||||||
|
|
||||||
if (script?.passprop) {
|
if (script?.passprop) {
|
||||||
for (const [k, v] of Object.entries(script.passprop)) {
|
for (const [k, v] of Object.entries(script.passprop)) {
|
||||||
|
if (k === "key") continue;
|
||||||
result[k] = {
|
result[k] = {
|
||||||
type: "passprop",
|
type: "passprop",
|
||||||
id: m.item.id,
|
id: m.item.id,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import type { OnMount } from "@monaco-editor/react";
|
import type { OnMount } from "@monaco-editor/react";
|
||||||
import hash_sum from "hash-sum";
|
|
||||||
import { IContent } from "../../../../../../utils/types/general";
|
import { IContent } from "../../../../../../utils/types/general";
|
||||||
import { IMeta, PG, active } from "../../../../logic/ed-global";
|
import { IMeta, PG, active } from "../../../../logic/ed-global";
|
||||||
import { extractExport } from "./extract-export";
|
|
||||||
import { addScope } from "./add-scope";
|
import { addScope } from "./add-scope";
|
||||||
|
import { extractExport } from "./extract-export";
|
||||||
|
|
||||||
type Monaco = Parameters<OnMount>[1];
|
type Monaco = Parameters<OnMount>[1];
|
||||||
export type MonacoEditor = Parameters<OnMount>[0];
|
export type MonacoEditor = Parameters<OnMount>[0];
|
||||||
|
|
@ -18,10 +17,11 @@ export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => {
|
||||||
|
|
||||||
const paths: IMeta[][] = [];
|
const paths: IMeta[][] = [];
|
||||||
|
|
||||||
map_childs(metas, entry, paths);
|
map_childs(p, metas, entry, paths);
|
||||||
|
|
||||||
let cur = "page";
|
let cur = active.comp_id ? active.comp_id : "page";
|
||||||
const import_map = extract_import_map(cur, paths, meta, p, monaco);
|
const import_map = 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[active.item_id];
|
||||||
};
|
};
|
||||||
|
|
@ -45,12 +45,11 @@ 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) {
|
if (!added.has(m.item.id) && m.item.adv?.js) {
|
||||||
added.add(m.item.id);
|
added.add(m.item.id);
|
||||||
const content = `\
|
const content = `\
|
||||||
${last_import}
|
${last_import}
|
||||||
/** IMPORT BOUNDARY **/
|
/** IMPORT MODULE **/
|
||||||
${m.item.adv.js}
|
${m.item.adv.js}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|
@ -99,7 +98,7 @@ export const ${k}: typeof _local & { render: ()=>void } = _local;
|
||||||
`file:///${cur}_${v.id}_${v.type}_${k}.tsx`,
|
`file:///${cur}_${v.id}_${v.type}_${k}.tsx`,
|
||||||
`\
|
`\
|
||||||
${[...imports].join("\n")}
|
${[...imports].join("\n")}
|
||||||
/** IMPORT BOUNDARY **/
|
/** IMPORT MODULE **/
|
||||||
${src}`
|
${src}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -120,7 +119,17 @@ ${src}`
|
||||||
return import_map;
|
return import_map;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const comp_map = {} as Record<
|
||||||
|
string,
|
||||||
|
{
|
||||||
|
paths: IMeta[][];
|
||||||
|
prop_imports: Record<string, string>;
|
||||||
|
exports: Record<string, ReturnType<typeof extractExport>>;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
const map_childs = (
|
const map_childs = (
|
||||||
|
p: PG,
|
||||||
metas: Record<string, IMeta>,
|
metas: Record<string, IMeta>,
|
||||||
childs: IContent[],
|
childs: IContent[],
|
||||||
paths: IMeta[][],
|
paths: IMeta[][],
|
||||||
|
|
@ -135,16 +144,41 @@ const map_childs = (
|
||||||
meta.item.component?.id &&
|
meta.item.component?.id &&
|
||||||
meta.item.component?.id !== active.comp_id
|
meta.item.component?.id !== active.comp_id
|
||||||
) {
|
) {
|
||||||
if (meta.item.component?.props) {
|
const comp_id = meta.item.component.id;
|
||||||
for (const [_, p] of Object.entries(meta.item.component.props)) {
|
let jprop = comp_map[comp_id];
|
||||||
if (p.meta?.type === "content-element" && p.content) {
|
if (!jprop) {
|
||||||
// map_childs(metas, [p.content], paths, [...(curpath || []), meta]);
|
const comp_metas = p.comp.list[comp_id].meta;
|
||||||
|
comp_map[meta.item.component.id] = {
|
||||||
|
paths: [],
|
||||||
|
prop_imports: {},
|
||||||
|
exports: {},
|
||||||
|
};
|
||||||
|
const id = p.comp.list[comp_id].doc
|
||||||
|
.getMap("map")
|
||||||
|
.get("root")
|
||||||
|
?.get("id");
|
||||||
|
|
||||||
|
if (id) {
|
||||||
|
map_childs(
|
||||||
|
p,
|
||||||
|
comp_metas,
|
||||||
|
[comp_metas[id].item],
|
||||||
|
comp_map[meta.item.component.id].paths
|
||||||
|
);
|
||||||
|
|
||||||
|
jprop = comp_map[meta.item.component.id];
|
||||||
|
for (const path of jprop.paths) {
|
||||||
|
for (const m of path) {
|
||||||
|
if (!jprop.exports[m.item.id]) {
|
||||||
|
jprop.exports[m.item.id] = extractExport(p, m);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (Array.isArray(meta.item.childs)) {
|
if (Array.isArray(meta.item.childs)) {
|
||||||
map_childs(metas, meta.item.childs, paths, [
|
map_childs(p, metas, meta.item.childs, paths, [
|
||||||
...(curpath || []),
|
...(curpath || []),
|
||||||
meta,
|
meta,
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -104,9 +104,9 @@ export const EdTreeName = ({
|
||||||
) : (
|
) : (
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<Name name={node.text} is_jsx_prop={is_jsx_prop} />
|
<Name name={node.text} is_jsx_prop={is_jsx_prop} />
|
||||||
{/* <div className={"text-[9px] text-gray-500 -mt-1"}>
|
<div className={"text-[9px] text-gray-500 -mt-1"}>
|
||||||
{node.id} - {item.originalId}
|
{node.id} - {item.originalId}
|
||||||
</div> */}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue