wip fix comp
This commit is contained in:
parent
3e7e060964
commit
a9df13dd93
|
|
@ -1,12 +1,38 @@
|
|||
import init from "wasm-gzip";
|
||||
import { PG } from "./ed-global";
|
||||
import { jscript } from "../../../utils/script/jscript";
|
||||
import { viLoadLegacy } from "../../vi/load/load-legacy";
|
||||
|
||||
export const edInit = async (p: PG) => {
|
||||
p.status = "ready";
|
||||
|
||||
await init();
|
||||
jscript.init(p.render);
|
||||
|
||||
await viLoadLegacy({
|
||||
site: {
|
||||
api_url: p.site.config.api_url,
|
||||
id: p.site.id,
|
||||
api: {
|
||||
get() {
|
||||
return p.script.api;
|
||||
},
|
||||
set(val) {
|
||||
p.script.api = val;
|
||||
},
|
||||
},
|
||||
db: {
|
||||
get() {
|
||||
return p.script.db;
|
||||
},
|
||||
set(val) {
|
||||
p.script.db = val;
|
||||
},
|
||||
},
|
||||
},
|
||||
render: p.render,
|
||||
});
|
||||
|
||||
p.script.loaded = true;
|
||||
p.render();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { IItem, MItem } from "../../../../utils/types/item";
|
||||
import { viEvalScript } from "../../../vi/render/script";
|
||||
import { genMeta } from "../../../view/logic/meta/meta";
|
||||
import { IMeta, PG, active } from "../ed-global";
|
||||
import { pushTreeNode } from "./build/push-tree";
|
||||
|
|
@ -31,7 +30,6 @@ export const treeRebuild = async (p: PG, arg?: { note?: string }) => {
|
|||
for (const mitem of mitems) {
|
||||
const item = mitem.toJSON() as IItem;
|
||||
if (item) {
|
||||
p.page;
|
||||
genMeta(
|
||||
{
|
||||
comps: p.comp.loaded,
|
||||
|
|
@ -43,9 +41,9 @@ export const treeRebuild = async (p: PG, arg?: { note?: string }) => {
|
|||
pushTreeNode(p, m, meta);
|
||||
}
|
||||
|
||||
if (m.item.adv?.jsBuilt) {
|
||||
viEvalScript({ meta: p.page.meta }, m);
|
||||
}
|
||||
// if (m.item.adv?.jsBuilt) {
|
||||
// viEvalScript({ meta: p.page.meta }, m);
|
||||
// }
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ export const pushTreeNode = (
|
|||
}
|
||||
}
|
||||
|
||||
if (p.page.tree.find((t) => t.id === meta.item.id)) {
|
||||
console.log(meta.item.id, meta.item.name);
|
||||
} else {
|
||||
if (!meta.parent?.comp_id) {
|
||||
p.page.tree.push({
|
||||
id: meta.item.id,
|
||||
|
|
@ -41,4 +44,5 @@ export const pushTreeNode = (
|
|||
data: meta,
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { useGlobal } from "web-utils";
|
||||
import { Vi } from "../../../vi/vi";
|
||||
import { EDGlobal } from "../../logic/ed-global";
|
||||
import { ViGlobal } from "../../../vi/render/global";
|
||||
|
||||
export const EdMain = () => {
|
||||
const p = useGlobal(EDGlobal, "EDITOR");
|
||||
|
|
@ -12,6 +11,8 @@ export const EdMain = () => {
|
|||
api_url={p.site.config.api_url}
|
||||
site_id={p.site.id}
|
||||
entry={p.page.entry}
|
||||
api={p.script.api}
|
||||
db={p.script.db}
|
||||
/>
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,27 @@
|
|||
import importModule from "../../../render/editor/tools/dynamic-import";
|
||||
import { createAPI, createDB, initApi } from "../../../utils/script/init-api";
|
||||
import { VG } from "../render/global";
|
||||
|
||||
export const viLoadLegacy = async (vi: VG) => {
|
||||
export const viLoadLegacy = async (vi: {
|
||||
site: {
|
||||
id: string;
|
||||
api_url: string;
|
||||
api: {
|
||||
get: () => any;
|
||||
set: (val: any) => void;
|
||||
};
|
||||
db: {
|
||||
get: () => any;
|
||||
set: (val: any) => void;
|
||||
};
|
||||
};
|
||||
render: any;
|
||||
}) => {
|
||||
const w = window as any;
|
||||
|
||||
if (!w.exports) {
|
||||
w.exports = {};
|
||||
}
|
||||
|
||||
const site = await db.site.findFirst({
|
||||
where: { id: vi.site.id },
|
||||
include: { component_site: true },
|
||||
|
|
@ -20,16 +39,20 @@ export const viLoadLegacy = async (vi: VG) => {
|
|||
|
||||
const path = `/npm/site/${vi.site.id}/site.js`;
|
||||
await importModule(path);
|
||||
vi.site.db = createDB(vi.site.api_url);
|
||||
vi.site.api = createAPI(vi.site.api_url);
|
||||
if (!vi.site.db.get()) {
|
||||
vi.site.db.set(createDB(vi.site.api_url));
|
||||
}
|
||||
if (!vi.site.api.get()) {
|
||||
vi.site.api.set(createAPI(vi.site.api_url));
|
||||
}
|
||||
|
||||
const w = window as any;
|
||||
if (site.js_compiled) {
|
||||
const config = site.config as any;
|
||||
const exec = (fn: string, scopes: any) => {
|
||||
if (config.api_url && !scopes["api"]) {
|
||||
scopes["api"] = vi.site.api;
|
||||
scopes["db"] = vi.site.db;
|
||||
scopes["api"] = vi.site.api.get();
|
||||
scopes["db"] = vi.site.db.get();
|
||||
}
|
||||
scopes.params = w.params;
|
||||
scopes.module = {};
|
||||
|
|
|
|||
|
|
@ -1,19 +1,40 @@
|
|||
import { VG } from "../render/global";
|
||||
import { viLoadLegacy } from "./load-legacy";
|
||||
|
||||
const w = window as any;
|
||||
|
||||
export const viLoad = (vi: VG, arg: { site_id: string; api_url: string }) => {
|
||||
vi.status = "loading";
|
||||
vi.site.id = arg.site_id;
|
||||
vi.site.api_url = arg.api_url;
|
||||
|
||||
if (!w.exports) {
|
||||
w.exports = {};
|
||||
}
|
||||
|
||||
viLoadLegacy(vi).then(() => {
|
||||
if (!vi.site.api && !vi.site.db) {
|
||||
viLoadLegacy({
|
||||
site: {
|
||||
id: vi.site.id,
|
||||
api_url: vi.site.api_url,
|
||||
api: {
|
||||
get() {
|
||||
return vi.site.api;
|
||||
},
|
||||
set(val) {
|
||||
vi.site.api = val;
|
||||
},
|
||||
},
|
||||
db: {
|
||||
get() {
|
||||
return vi.site.db;
|
||||
},
|
||||
set(val) {
|
||||
vi.site.db = val;
|
||||
},
|
||||
},
|
||||
},
|
||||
render: vi.render,
|
||||
}).then(() => {
|
||||
vi.status = "ready";
|
||||
vi.render();
|
||||
});
|
||||
} else {
|
||||
vi.status = "ready";
|
||||
vi.render();
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -39,16 +39,10 @@ const getScopeMeta = (vi: { meta: VG["meta"] }, meta: IMeta) => {
|
|||
return scope_meta;
|
||||
};
|
||||
|
||||
const getScopeValue = (
|
||||
scope_meta: ReturnType<typeof getScopeMeta>,
|
||||
meta: IMeta
|
||||
) => {
|
||||
const getScopeValue = (scope_meta: ReturnType<typeof getScopeMeta>) => {
|
||||
const scope: any = {};
|
||||
|
||||
for (const [varname, s] of Object.entries(scope_meta)) {
|
||||
if (meta.item.name === "section") {
|
||||
console.log(varname, s.meta.scope);
|
||||
}
|
||||
if (s.meta.scope.val) {
|
||||
scope[varname] = s.meta.scope.val[varname];
|
||||
}
|
||||
|
|
@ -60,5 +54,5 @@ const getScopeValue = (
|
|||
export const getScope = (vi: { meta: VG["meta"] }, meta: IMeta) => {
|
||||
const scope_meta = getScopeMeta(vi, meta);
|
||||
|
||||
return getScopeValue(scope_meta, meta);
|
||||
return getScopeValue(scope_meta);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -11,13 +11,17 @@ export const Vi: FC<{
|
|||
entry: string[];
|
||||
api_url: string;
|
||||
site_id: string;
|
||||
}> = ({ meta, entry, api_url, site_id }) => {
|
||||
api?: any;
|
||||
db?: any;
|
||||
}> = ({ meta, entry, api_url, site_id, api, db }) => {
|
||||
const vi = useGlobal(ViGlobal, "VI");
|
||||
if (vi.meta !== meta) {
|
||||
vi.meta = meta;
|
||||
}
|
||||
|
||||
if (vi.status === "init") {
|
||||
vi.site.db = db;
|
||||
vi.site.api = api;
|
||||
viLoad(vi, { api_url, site_id });
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { instantiate } from "./comp/instantiate";
|
||||
import { instantiate, walkChild } from "./comp/instantiate";
|
||||
import { walkProp } from "./comp/walk-prop";
|
||||
import { genMeta } from "./meta";
|
||||
import { simplifyItemChild } from "./simplify";
|
||||
|
|
@ -53,6 +53,12 @@ export const genComp = (p: GenMetaP, arg: GenMetaArg) => {
|
|||
scope: {},
|
||||
};
|
||||
|
||||
if (item.id) {
|
||||
if (p.set_meta !== false) {
|
||||
p.meta[item.id] = meta;
|
||||
}
|
||||
}
|
||||
|
||||
walkProp({
|
||||
item,
|
||||
pcomp,
|
||||
|
|
@ -63,6 +69,8 @@ export const genComp = (p: GenMetaP, arg: GenMetaArg) => {
|
|||
prop.content &&
|
||||
comp_id
|
||||
) {
|
||||
walkChild(prop.content, instance);
|
||||
|
||||
genMeta(p, {
|
||||
item: prop.content,
|
||||
is_root: false,
|
||||
|
|
@ -73,6 +81,7 @@ export const genComp = (p: GenMetaP, arg: GenMetaArg) => {
|
|||
},
|
||||
parent: {
|
||||
item,
|
||||
instance_id: item.id,
|
||||
comp: pcomp.comp,
|
||||
},
|
||||
});
|
||||
|
|
@ -88,17 +97,12 @@ export const genComp = (p: GenMetaP, arg: GenMetaArg) => {
|
|||
}
|
||||
}
|
||||
|
||||
if (item.id) {
|
||||
if (p.set_meta !== false) {
|
||||
p.meta[item.id] = meta;
|
||||
}
|
||||
}
|
||||
|
||||
if (p.on?.visit) {
|
||||
p.on.visit(meta);
|
||||
}
|
||||
|
||||
for (const child of Object.values(item.childs)) {
|
||||
if (child.name.startsWith('jsx:')) continue;
|
||||
genMeta(p, {
|
||||
item: child,
|
||||
is_root: false,
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ export const instantiate = (arg: {
|
|||
}
|
||||
};
|
||||
|
||||
const walkChild = (
|
||||
export const walkChild = (
|
||||
item: IItem,
|
||||
ids: Exclude<FNComponent["ref_ids"], undefined>
|
||||
) => {
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ import { simplifyItemChild } from "./simplify";
|
|||
import { GenMetaArg, GenMetaP, IMeta } from "./types";
|
||||
|
||||
export const genMeta = (p: GenMetaP, arg: GenMetaArg) => {
|
||||
let wrapper = (fn: any) => {
|
||||
fn();
|
||||
};
|
||||
// let wrapper = (fn: any) => {
|
||||
// fn();
|
||||
// };
|
||||
|
||||
wrapper(() => {
|
||||
// wrapper(() => {
|
||||
const item = arg.item as IItem;
|
||||
|
||||
if (item.type === "item" && item.component?.id) {
|
||||
|
|
@ -64,5 +64,5 @@ export const genMeta = (p: GenMetaP, arg: GenMetaArg) => {
|
|||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
// });
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,10 +7,6 @@ import {
|
|||
useState,
|
||||
} from "react";
|
||||
|
||||
const w = window as unknown as {
|
||||
globalValueID: WeakMap<any, string>;
|
||||
};
|
||||
|
||||
export const GlobalContext = createContext({
|
||||
global: {},
|
||||
render: () => {},
|
||||
|
|
@ -27,6 +23,10 @@ export const useGlobal = <T extends object>(
|
|||
| string,
|
||||
id?: string
|
||||
): T & { render: (reset?: boolean) => void } => {
|
||||
const w = window as unknown as {
|
||||
globalValueID: WeakMap<any, string>;
|
||||
};
|
||||
|
||||
if (!w.globalValueID) w.globalValueID = new WeakMap();
|
||||
|
||||
let _id = (typeof effectOrID === "string" ? effectOrID : id) as string;
|
||||
|
|
|
|||
Loading…
Reference in New Issue