wip fix
This commit is contained in:
parent
25a32dfae7
commit
051b71f944
File diff suppressed because one or more lines are too long
|
|
@ -17,7 +17,6 @@ export const loadcomp = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const loadComponent = async (p: PG, id_comp: string, sync?: boolean) => {
|
export const loadComponent = async (p: PG, id_comp: string, sync?: boolean) => {
|
||||||
console.log("load comp", id_comp);
|
|
||||||
return new Promise<boolean>((resolve) => {
|
return new Promise<boolean>((resolve) => {
|
||||||
if (p.comp.list[id_comp]) {
|
if (p.comp.list[id_comp]) {
|
||||||
resolve(true);
|
resolve(true);
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { FMCompDef } from "../../../../utils/types/meta-fn";
|
||||||
import { initLoadComp } from "../../../vi/meta/comp/init-comp-load";
|
import { initLoadComp } from "../../../vi/meta/comp/init-comp-load";
|
||||||
import { genMeta } from "../../../vi/meta/meta";
|
import { genMeta } from "../../../vi/meta/meta";
|
||||||
import { nav } from "../../../vi/render/script/extract-nav";
|
import { nav } from "../../../vi/render/script/extract-nav";
|
||||||
import { loadCompSnapshot } from "../comp/load";
|
import { loadCompSnapshot, loadComponent } from "../comp/load";
|
||||||
import { IMeta, PG, active } from "../ed-global";
|
import { IMeta, PG, active } from "../ed-global";
|
||||||
import { assignMitem } from "./assign-mitem";
|
import { assignMitem } from "./assign-mitem";
|
||||||
import { pushTreeNode } from "./build/push-tree";
|
import { pushTreeNode } from "./build/push-tree";
|
||||||
|
|
@ -122,6 +122,12 @@ export const treeRebuild = async (p: PG, arg?: { note?: string }) => {
|
||||||
pushTreeNode(p, m, meta, p.page.tree);
|
pushTreeNode(p, m, meta, p.page.tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m.item.component?.id) {
|
||||||
|
if (!p.comp.loaded[m.item.component.id]) {
|
||||||
|
loadComponent(p, m.item.component.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
assignMitem({
|
assignMitem({
|
||||||
m,
|
m,
|
||||||
root: item,
|
root: item,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
|
import { createId } from "@paralleldrive/cuid2";
|
||||||
|
import { FMCompDef } from "../../../../utils/types/meta-fn";
|
||||||
import { IMeta } from "../../../ed/logic/ed-global";
|
import { IMeta } from "../../../ed/logic/ed-global";
|
||||||
import { VG } from "../global";
|
import { VG } from "../global";
|
||||||
import { ViRender } from "../render";
|
import { ViRender } from "../render";
|
||||||
import { viScriptArg } from "./arg";
|
import { viScriptArg } from "./arg";
|
||||||
import { replaceWithObject, replacement } from "./eval-script";
|
import { replaceWithObject, replacement } from "./eval-script";
|
||||||
import { extractNavigate } from "./extract-nav";
|
import { extractNavigate } from "./extract-nav";
|
||||||
|
import type { Doc } from "yjs";
|
||||||
|
|
||||||
export const viEvalProps = (
|
export const viEvalProps = (
|
||||||
vi: {
|
vi: {
|
||||||
|
|
@ -108,6 +111,14 @@ export const viEvalProps = (
|
||||||
extractNavigate(vi, prop.value);
|
extractNavigate(vi, prop.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!prop.valueBuilt && prop.value && meta.mitem) {
|
||||||
|
const mprop = meta.mitem?.get("component")?.get("props")?.get(name);
|
||||||
|
if (mprop) {
|
||||||
|
updatePropValueBuilt(mprop, prop.value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const js = prop.valueBuilt || "";
|
const js = prop.valueBuilt || "";
|
||||||
const src = replaceWithObject(js, replacement) || "";
|
const src = replaceWithObject(js, replacement) || "";
|
||||||
const fn = new Function(
|
const fn = new Function(
|
||||||
|
|
@ -140,6 +151,46 @@ export const viEvalProps = (
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const conf = {
|
||||||
|
timeout: null as any,
|
||||||
|
set: new WeakSet<FMCompDef>(),
|
||||||
|
map: {} as Record<string, { mprop: FMCompDef }>,
|
||||||
|
src: {} as Record<string, string>,
|
||||||
|
};
|
||||||
|
const updatePropValueBuilt = (mprop: FMCompDef, src: string) => {
|
||||||
|
if (!conf.set.has(mprop)) {
|
||||||
|
conf.set.add(mprop);
|
||||||
|
const id = createId();
|
||||||
|
conf.map[id] = { mprop };
|
||||||
|
conf.src[id] = src;
|
||||||
|
}
|
||||||
|
clearTimeout(conf.timeout);
|
||||||
|
conf.timeout = setTimeout(async () => {
|
||||||
|
const result = await _api.code_build(conf.src);
|
||||||
|
|
||||||
|
let doc = null as unknown as Doc;
|
||||||
|
for (const [k, v] of Object.entries(result)) {
|
||||||
|
const mprop = conf.map[k].mprop;
|
||||||
|
if (!doc && mprop.doc) {
|
||||||
|
doc = mprop.doc;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (doc) {
|
||||||
|
doc.transact(() => {
|
||||||
|
for (const [k, v] of Object.entries(result)) {
|
||||||
|
const mprop = conf.map[k].mprop;
|
||||||
|
mprop.set("valueBuilt", v);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
conf.set = new WeakSet();
|
||||||
|
conf.map = {};
|
||||||
|
conf.src = {};
|
||||||
|
}
|
||||||
|
}, 300);
|
||||||
|
};
|
||||||
|
|
||||||
export const updatePropScope = (
|
export const updatePropScope = (
|
||||||
vi: { site: { db: any; api: any } },
|
vi: { site: { db: any; api: any } },
|
||||||
meta: IMeta,
|
meta: IMeta,
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,6 @@ export const viEvalScript = (
|
||||||
...passprop,
|
...passprop,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
if (typeof passprop === "object") {
|
if (typeof passprop === "object") {
|
||||||
for (const [k, v] of Object.entries(passprop)) {
|
for (const [k, v] of Object.entries(passprop)) {
|
||||||
if (typeof v === "object" && v && (v as any)._jsx) {
|
if (typeof v === "object" && v && (v as any)._jsx) {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { VG } from "../global";
|
||||||
import { ViRender } from "../render";
|
import { ViRender } from "../render";
|
||||||
|
|
||||||
export const createViPassProp = (
|
export const createViPassProp = (
|
||||||
vi: { meta: VG["meta"]; render: () => void },
|
vi: { meta: VG["meta"]; render?: () => void },
|
||||||
is_layout: boolean,
|
is_layout: boolean,
|
||||||
meta: IMeta,
|
meta: IMeta,
|
||||||
passprop: any
|
passprop: any
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,6 @@ export const Vi: FC<{
|
||||||
vi.entry = entry;
|
vi.entry = entry;
|
||||||
vi.on_preload = on_preload;
|
vi.on_preload = on_preload;
|
||||||
|
|
||||||
|
|
||||||
w.siteurl = (pathname: string, forceOriginal?: boolean) => {
|
w.siteurl = (pathname: string, forceOriginal?: boolean) => {
|
||||||
if (pathname.startsWith("http://") || pathname.startsWith("https://"))
|
if (pathname.startsWith("http://") || pathname.startsWith("https://"))
|
||||||
return pathname;
|
return pathname;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue