wip fix scope
This commit is contained in:
parent
aa1d4e4e5e
commit
e3e7fc9812
|
|
@ -29,6 +29,7 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
value: "",
|
value: "",
|
||||||
historyOpen: false,
|
historyOpen: false,
|
||||||
mode: "",
|
mode: "",
|
||||||
|
imports: "",
|
||||||
idbstore: createStore(`prasi-page-${p.page.cur.id}`, "script-history"),
|
idbstore: createStore(`prasi-page-${p.page.cur.id}`, "script-history"),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -62,15 +63,26 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!local.init) {
|
if (!local.init) {
|
||||||
|
monaco.editor.getModels().forEach((model) => {
|
||||||
|
if (
|
||||||
|
model.uri.toString().startsWith("inmemory://model") ||
|
||||||
|
model.uri.toString().startsWith("file://")
|
||||||
|
) {
|
||||||
|
model.dispose();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (meta) {
|
||||||
|
if (!meta.item.adv) {
|
||||||
|
meta.item.adv = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!meta.item.adv[p.ui.popup.script.mode]) {
|
||||||
|
meta.item.adv[p.ui.popup.script.mode] = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (p.ui.popup.script.mode === "js") {
|
if (p.ui.popup.script.mode === "js") {
|
||||||
monaco.editor.getModels().forEach((model) => {
|
|
||||||
if (
|
|
||||||
model.uri.toString().startsWith("inmemory://model") ||
|
|
||||||
model.uri.toString().startsWith("file://")
|
|
||||||
) {
|
|
||||||
model.dispose();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
await monacoTypings(
|
await monacoTypings(
|
||||||
{
|
{
|
||||||
site_dts: p.site_dts,
|
site_dts: p.site_dts,
|
||||||
|
|
@ -83,7 +95,7 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
{ types: {}, values: {} }
|
{ types: {}, values: {} }
|
||||||
);
|
);
|
||||||
if (meta) {
|
if (meta) {
|
||||||
const imports = declareScope(p, meta, editor, monaco);
|
const imports = declareScope(p, meta, monaco);
|
||||||
|
|
||||||
let cur = "page";
|
let cur = "page";
|
||||||
monaco.editor.getModels().forEach((model) => {
|
monaco.editor.getModels().forEach((model) => {
|
||||||
|
|
@ -95,6 +107,8 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (imports) {
|
if (imports) {
|
||||||
|
local.imports = imports;
|
||||||
|
|
||||||
const range = new monaco.Range(
|
const range = new monaco.Range(
|
||||||
1,
|
1,
|
||||||
0,
|
0,
|
||||||
|
|
@ -106,6 +120,15 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
|
|
||||||
await jsMount(editor, monaco, p);
|
await jsMount(editor, monaco, p);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
const model = monaco.editor.createModel(
|
||||||
|
val,
|
||||||
|
{ css: "scss", js: "typescript", html: "html" }[
|
||||||
|
p.ui.popup.script.mode
|
||||||
|
],
|
||||||
|
monaco.Uri.parse(`inmemory://model/1`)
|
||||||
|
);
|
||||||
|
editor.setModel(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
local.init = true;
|
local.init = true;
|
||||||
|
|
@ -129,21 +152,26 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
const prettier_estree = jscript.prettier.estree;
|
const prettier_estree = jscript.prettier.estree;
|
||||||
|
|
||||||
if (prettier && prettier_estree && prettier_ts) {
|
if (prettier && prettier_estree && prettier_ts) {
|
||||||
|
let curval = local.editor
|
||||||
|
?.getValue()
|
||||||
|
.replace(/\{\s*children\s*\}/gi, newval);
|
||||||
|
|
||||||
|
if (curval.includes("/** IMPORT BOUNDARY **/")) {
|
||||||
|
curval = curval.split("/** IMPORT BOUNDARY **/\n").pop() || "";
|
||||||
|
}
|
||||||
|
|
||||||
const text = trim(
|
const text = trim(
|
||||||
await prettier.format(
|
await prettier.format(all ? newval : curval, {
|
||||||
all
|
parser: "typescript",
|
||||||
? newval
|
plugins: [prettier_ts, prettier_estree],
|
||||||
: local.editor
|
}),
|
||||||
?.getValue()
|
|
||||||
.replace(/\{\s*children\s*\}/gi, newval),
|
|
||||||
{
|
|
||||||
parser: "typescript",
|
|
||||||
plugins: [prettier_ts, prettier_estree],
|
|
||||||
}
|
|
||||||
),
|
|
||||||
"; \n"
|
"; \n"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let final_src = text;
|
||||||
|
if (local.imports) {
|
||||||
|
final_src = `${local.imports}\n/** IMPORT BOUNDARY **/\n${text}`;
|
||||||
|
}
|
||||||
local.editor.executeEdits(null, [
|
local.editor.executeEdits(null, [
|
||||||
{
|
{
|
||||||
range: {
|
range: {
|
||||||
|
|
@ -152,7 +180,7 @@ export const EdScriptMonaco: FC<{}> = () => {
|
||||||
endColumn: Number.MAX_SAFE_INTEGER,
|
endColumn: Number.MAX_SAFE_INTEGER,
|
||||||
endLineNumber: Number.MAX_SAFE_INTEGER,
|
endLineNumber: Number.MAX_SAFE_INTEGER,
|
||||||
},
|
},
|
||||||
text,
|
text: final_src,
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
@ -190,7 +218,6 @@ 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) => {
|
||||||
return;
|
|
||||||
if ((value || "").includes("/** IMPORT BOUNDARY **/")) {
|
if ((value || "").includes("/** IMPORT BOUNDARY **/")) {
|
||||||
const valparts = (value || "").split("/** IMPORT BOUNDARY **/\n");
|
const valparts = (value || "").split("/** IMPORT BOUNDARY **/\n");
|
||||||
if (valparts.length === 2) local.value = valparts[1];
|
if (valparts.length === 2) local.value = valparts[1];
|
||||||
|
|
|
||||||
|
|
@ -8,23 +8,7 @@ import { addScope } from "./add-scope";
|
||||||
type Monaco = Parameters<OnMount>[1];
|
type Monaco = Parameters<OnMount>[1];
|
||||||
export type MonacoEditor = Parameters<OnMount>[0];
|
export type MonacoEditor = Parameters<OnMount>[0];
|
||||||
|
|
||||||
export const declareScope = (
|
export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => {
|
||||||
p: PG,
|
|
||||||
meta: IMeta,
|
|
||||||
editor: MonacoEditor,
|
|
||||||
monaco: Monaco
|
|
||||||
) => {
|
|
||||||
const e = editor as any;
|
|
||||||
const sum_id = hash_sum({
|
|
||||||
page_id: p.page.cur.id,
|
|
||||||
comp_id: active.comp_id,
|
|
||||||
});
|
|
||||||
if (e.scope_id === sum_id) {
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
e.scope_id = sum_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
const metas = active.comp_id
|
const metas = active.comp_id
|
||||||
? p.comp.list[active.comp_id]?.meta
|
? p.comp.list[active.comp_id]?.meta
|
||||||
: p.page.meta;
|
: p.page.meta;
|
||||||
|
|
@ -70,12 +54,7 @@ ${last_import}
|
||||||
${m.item.adv.js}
|
${m.item.adv.js}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
addScope(
|
addScope(p, monaco, `file:///${cur}_${m.item.id}_src_src.tsx`, content);
|
||||||
p,
|
|
||||||
monaco,
|
|
||||||
`file:///${cur}_${m.item.id}_src_src.tsx`,
|
|
||||||
content
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue