wip fix
This commit is contained in:
parent
caf5cdd7c3
commit
4122f50d5f
|
|
@ -0,0 +1,9 @@
|
|||
import { apiContext } from "service-srv";
|
||||
|
||||
export const _ = {
|
||||
url: "/parse-js",
|
||||
async api() {
|
||||
const { req, res } = apiContext(this);
|
||||
return "This is parse-js.ts";
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -61,7 +61,7 @@ export const code_edit: SAction["code"]["edit"] = async function (
|
|||
});
|
||||
}
|
||||
let adv = mitem.get("adv");
|
||||
const jscript = parseJs(adv?.get("js")) || false;
|
||||
const jscript = parseJs(src) || false;
|
||||
|
||||
doc?.transact(() => {
|
||||
if (!adv) {
|
||||
|
|
@ -106,7 +106,10 @@ export const code_edit: SAction["code"]["edit"] = async function (
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
return jscript
|
||||
} catch (e: any) {
|
||||
console.log('e', e)
|
||||
return e.message.toString();
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -124,7 +124,8 @@ export const apiProxy = (api_url: string) => {
|
|||
console.error(`API Not Found: ${actionName.toString()}`);
|
||||
}
|
||||
} else {
|
||||
reject("Failed to load API: " + base_url);
|
||||
|
||||
reject("Failed to load API [Proxy]: " + base_url);
|
||||
}
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
|
|
|
|||
|
|
@ -9,14 +9,13 @@ import { jscript } from "../../../../../utils/script/jscript";
|
|||
import { jsMount } from "../../../../../utils/script/mount";
|
||||
import { monacoTypings } from "../../../../../utils/script/typings";
|
||||
import { Loading } from "../../../../../utils/ui/loading";
|
||||
import { getActiveMeta, getMetaById } from "../../../logic/active/get-meta";
|
||||
import { getActiveMeta } from "../../../logic/active/get-meta";
|
||||
import { EDGlobal, IMeta, active } from "../../../logic/ed-global";
|
||||
import { edMonacoDefaultVal } from "./default-val";
|
||||
import { declareScope } from "./scope/scope";
|
||||
|
||||
// @ts-ignore
|
||||
import { FNCompDef } from "../../../../../utils/types/meta-fn";
|
||||
import { addScope } from "./scope/add-scope";
|
||||
|
||||
const scriptEdit = {
|
||||
timeout: null as any,
|
||||
|
|
@ -100,6 +99,7 @@ export const EdScriptMonaco: FC<{}> = () => {
|
|||
if (p.ui.popup.script.mode === "js") {
|
||||
const w = window as any;
|
||||
const types: any = {};
|
||||
const values: any = {};
|
||||
for (const prop_name of p.global_prop) {
|
||||
if (prop_name === "_types") continue;
|
||||
types[prop_name] = "any";
|
||||
|
|
@ -139,38 +139,6 @@ export const EdScriptMonaco: FC<{}> = () => {
|
|||
break;
|
||||
case "prop-instance":
|
||||
{
|
||||
let parent_meta = null;
|
||||
const parent_id = meta.parent?.id;
|
||||
if (parent_id) {
|
||||
if (active.comp_id) {
|
||||
parent_meta =
|
||||
p.comp.list[active.comp_id].meta[parent_id];
|
||||
} else {
|
||||
parent_meta = p.page.meta[parent_id];
|
||||
}
|
||||
}
|
||||
if (parent_meta) {
|
||||
const scope = declareScope(p, parent_meta, monaco);
|
||||
for (const [k, v] of Object.entries(scope.exports)) {
|
||||
addScope(p, monaco, `file:///${k}`, v);
|
||||
}
|
||||
addScope(
|
||||
p,
|
||||
monaco,
|
||||
`file:///prop-global.d.ts`,
|
||||
`\
|
||||
${Object.entries(scope.vars).map(([var_name, var_from]) => {
|
||||
return `import {${var_name} as ___${var_name}} from "./${var_from}"`;
|
||||
})}
|
||||
declare global {
|
||||
${Object.entries(scope.vars).map(([var_name]) => {
|
||||
return `const ${var_name} = ___${var_name}`;
|
||||
})}
|
||||
}
|
||||
`
|
||||
);
|
||||
}
|
||||
|
||||
const nmodel = monaco.editor.createModel(
|
||||
val,
|
||||
"typescript",
|
||||
|
|
@ -204,38 +172,15 @@ declare global {
|
|||
break;
|
||||
case "item":
|
||||
{
|
||||
const { exports, imports } = declareScope(p, meta, monaco);
|
||||
const im = imports[active.item_id];
|
||||
const im_src = [];
|
||||
types._raw = declareScope(p, meta, monaco);
|
||||
|
||||
if (im) {
|
||||
for (const [var_name, item] of Object.entries(im)) {
|
||||
im_src.push(
|
||||
`import { ${var_name} } from "./${item.id}_${var_name}_${item.type}";`
|
||||
);
|
||||
}
|
||||
}
|
||||
for (const [k, v] of Object.entries(exports)) {
|
||||
addScope(p, monaco, `file:///${k}`, v);
|
||||
}
|
||||
let active_src =
|
||||
im_src.length > 0
|
||||
? `${im_src.join("\n")}\n${IMPORT_SEPARATOR}\n${val}`
|
||||
: val;
|
||||
const model = monaco.editor.createModel(
|
||||
active_src,
|
||||
val,
|
||||
"typescript",
|
||||
monaco.Uri.parse("file:///active.tsx")
|
||||
);
|
||||
editor.setModel(model);
|
||||
editor.trigger("fold", "editor.foldAllMarkerRegions", {});
|
||||
if (active_src) {
|
||||
const end_hide = active_src
|
||||
.split(IMPORT_SEPARATOR)[0]
|
||||
.split("\n").length;
|
||||
const range = new monaco.Range(1, 1, end_hide, 1);
|
||||
(editor as any).setHiddenAreas([range]);
|
||||
}
|
||||
|
||||
if (component.id && meta.jsx_prop?.name) {
|
||||
const prop_name = meta.jsx_prop.name;
|
||||
|
|
@ -271,7 +216,7 @@ declare global {
|
|||
monaco,
|
||||
{
|
||||
types,
|
||||
values: {},
|
||||
values,
|
||||
}
|
||||
);
|
||||
await jsMount(editor, monaco, p);
|
||||
|
|
|
|||
|
|
@ -1,13 +1,11 @@
|
|||
import type { OnMount } from "@monaco-editor/react";
|
||||
import { IContent } from "../../../../../../utils/types/general";
|
||||
import { IMeta, PG, active } from "../../../../logic/ed-global";
|
||||
import { extractExport } from "./extract-export";
|
||||
|
||||
type Monaco = Parameters<OnMount>[1];
|
||||
export type MonacoEditor = Parameters<OnMount>[0];
|
||||
|
||||
export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => {
|
||||
const vars: Record<string, string> = {};
|
||||
const metas = active.comp_id
|
||||
? p.comp.list[active.comp_id]?.meta
|
||||
: p.page.meta;
|
||||
|
|
@ -18,19 +16,6 @@ export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => {
|
|||
const paths: IMeta[][] = [];
|
||||
map_childs(monaco, p, metas, entry, paths);
|
||||
|
||||
const exports = {} as Record<string, string>;
|
||||
const extract_exports = {} as Record<
|
||||
string,
|
||||
ReturnType<typeof extractExport>
|
||||
>;
|
||||
const imports = {} as Record<
|
||||
string,
|
||||
Record<
|
||||
string,
|
||||
{ id: string; type: "prop" | "passprop" | "local" | "scope" }
|
||||
>
|
||||
>;
|
||||
|
||||
const cur_path = [] as IMeta[];
|
||||
for (const path of paths) {
|
||||
if (path.includes(meta)) {
|
||||
|
|
@ -46,57 +31,29 @@ export const declareScope = (p: PG, meta: IMeta, monaco: Monaco) => {
|
|||
}
|
||||
}
|
||||
|
||||
let prev_m = null as null | IMeta;
|
||||
const vars: Record<string, { mode: "local"; val: string }> = {};
|
||||
for (const m of cur_path) {
|
||||
if (!exports[m.item.id]) {
|
||||
extract_exports[m.item.id] = extractExport(p, m);
|
||||
|
||||
for (const [k, v] of Object.entries(extract_exports[m.item.id])) {
|
||||
let src = "";
|
||||
if (v.type !== "local") {
|
||||
src = `export const ${k} = ${v.val};`;
|
||||
} else {
|
||||
src = `\
|
||||
const ${k}__local = ${v.val};
|
||||
export const ${k}: typeof ${k}__local & { render: ()=>void } = ${k}__local as any;`;
|
||||
if (m !== meta) {
|
||||
const script = m.item.script;
|
||||
if (script) {
|
||||
if (script.local) {
|
||||
vars[script.local.name] = { mode: "local", val: script.local.value };
|
||||
}
|
||||
|
||||
if (src) {
|
||||
vars[k] = `${m.item.id}_${k}_${v.type}`;
|
||||
}
|
||||
exports[`${m.item.id}_${k}_${v.type}.tsx`] = src;
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
m.item.id === active.item_id &&
|
||||
m.item.component?.id === active.comp_id &&
|
||||
active.comp_id
|
||||
) {
|
||||
for (const [k, v] of Object.entries(extract_exports[m.item.id])) {
|
||||
if (!imports[m.item.id]) imports[m.item.id] = {};
|
||||
if (v.type === "prop") {
|
||||
imports[m.item.id][k] = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (prev_m && extract_exports[prev_m.item.id]) {
|
||||
imports[m.item.id] = {};
|
||||
if (imports[prev_m.item.id]) {
|
||||
for (const [k, v] of Object.entries(imports[prev_m.item.id])) {
|
||||
imports[m.item.id][k] = v;
|
||||
const raw_types: string[] = [];
|
||||
for (const [k, v] of Object.entries(vars)) {
|
||||
if (v.mode === "local") {
|
||||
raw_types.push(`\
|
||||
const \$\$_${k} = ${v.val};
|
||||
const ${k} = null as unknown as (typeof \$\$_${k} & { render: ()=> void });
|
||||
`);
|
||||
}
|
||||
}
|
||||
|
||||
for (const [k, v] of Object.entries(extract_exports[prev_m.item.id])) {
|
||||
imports[m.item.id][k] = { id: v.id, type: v.type };
|
||||
}
|
||||
}
|
||||
prev_m = m;
|
||||
}
|
||||
|
||||
return { exports, imports, vars };
|
||||
return raw_types.join("\n");
|
||||
};
|
||||
|
||||
const map_childs = (
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ export const EdScriptWorkbench = () => {
|
|||
)}
|
||||
>
|
||||
<div className={cx("flex items-stretch")}>
|
||||
<div className="border-r px-2 flex items-center">
|
||||
{/* <div className="border-r px-2 flex items-center">
|
||||
<div
|
||||
className={cx(
|
||||
scriptNav.canBack
|
||||
|
|
@ -102,7 +102,7 @@ export const EdScriptWorkbench = () => {
|
|||
>
|
||||
<ChevronRight />
|
||||
</div>
|
||||
</div>
|
||||
</div> */}
|
||||
{p.ui.popup.script.type === "prop-master" && <CompTitleMaster />}
|
||||
{p.ui.popup.script.type === "prop-instance" && (
|
||||
<CompTitleInstance />
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ export const viLoadLegacy = async (vi: {
|
|||
try {
|
||||
await loadApiProxyDef(api_url, true);
|
||||
} catch (e) {
|
||||
console.warn("Failed to load API:", api_url);
|
||||
console.warn("Failed to load API [Legacy]:", api_url);
|
||||
}
|
||||
}
|
||||
} catch (e) {}
|
||||
|
|
|
|||
|
|
@ -44,8 +44,10 @@ export const viLoadSnapshot = async (p: PG) => {
|
|||
if (!p.script.db) p.script.db = dbProxy(api_url);
|
||||
if (!p.script.api) p.script.api = apiProxy(api_url);
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn("Failed to load API:", api_url);
|
||||
} catch (e: any) {
|
||||
if (e && !e.message.toLowerCase().includes("invalid url")) {
|
||||
console.warn("Failed to load API [Snapshot]:", api_url);
|
||||
}
|
||||
}
|
||||
|
||||
if (p.site.code.snapshot) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue