This commit is contained in:
Rizky 2023-12-11 09:08:19 +07:00
parent 9ebb4dfa75
commit 072b10d6ba
7 changed files with 55 additions and 13 deletions

View File

@ -1,6 +1,7 @@
import { EPage } from "../../../../web/src/nova/ed/logic/ed-global";
import { initLoadComp } from "../../../../web/src/nova/view/logic/meta/comp/init-load-comp";
import { genMeta } from "../../../../web/src/nova/view/logic/meta/meta";
import { simplifyMeta } from "../../../../web/src/nova/view/logic/meta/simplify";
import { GenMetaP } from "../../../../web/src/nova/view/logic/meta/types";
import { IItem } from "../../../../web/src/utils/types/item";
import { DPage } from "../../../../web/src/utils/types/root";
@ -177,7 +178,7 @@ export const page_load: SAction["page"]["load"] = async function (
};
const scanMeta = async (doc: DPage, sync: SyncConnection) => {
const meta: EPage["meta"] = {};
const meta: GenMetaP["meta"] = {};
const mcomps: GenMetaP["comps"] = {};
const loading = {} as Record<string, Promise<void>>;
@ -221,9 +222,9 @@ const scanMeta = async (doc: DPage, sync: SyncConnection) => {
for (const [id, v] of Object.entries(mcomps)) {
const snap = snapshot.get("comp", id);
if (snap) {
comps[id] = { comp: v.comp, snapshot: await gzipAsync(snap.bin) };
comps[id] = { id, snapshot: await gzipAsync(snap.bin) };
}
}
return { meta, comps, entry };
return { meta: simplifyMeta(meta), comps, entry };
};

View File

@ -11,7 +11,7 @@ import { ISection } from "../../../utils/types/section";
import { IText, MText } from "../../../utils/types/text";
import { PageItem } from "../panel/popup/page/page-tree";
import { FMCompDef } from "../../../utils/types/meta-fn";
import { IMeta } from "../../view/logic/meta/types";
import { IMeta, ISimpleMeta } from "../../view/logic/meta/types";
export const EmptySite = {
id: "",
@ -49,8 +49,8 @@ const EmptyPage = {
url: "",
snapshot: null as null | Uint8Array,
entry: [] as string[],
meta: {} as Record<string, IMeta>,
comps: {} as Record<string, { comp: IItem; snapshot: null | Uint8Array }>,
meta: {} as Record<string, ISimpleMeta>,
comps: {} as Record<string, EComp>,
};
const EmptyComp = {

View File

@ -4,7 +4,7 @@ import { instantiate } from "./comp/instantiate";
import { walkProp } from "./comp/walk-prop";
import { genMeta } from "./meta";
import { applyRefIds } from "./ref-ids";
import { simplify } from "./simplify";
import { simplifyItem } from "./simplify";
import { GenMetaArg, GenMetaP, IMeta } from "./types";
export const genComp = (
@ -32,7 +32,7 @@ export const genComp = (
instantiate(item, pcomp.comp, ref_ids, mref_ids);
const meta: IMeta = {
item: simplify(item),
item: simplifyItem(item),
parent: {
id: arg.parent.item.id,
instance_id: arg.parent?.instance?.id,

View File

@ -1,7 +1,7 @@
import { IItem, MItem } from "../../../../utils/types/item";
import { genComp } from "./comp";
import { applyRefIds } from "./ref-ids";
import { simplify } from "./simplify";
import { simplifyItem } from "./simplify";
import { GenMetaArg, GenMetaP, IMeta } from "./types";
export const genMeta = (p: GenMetaP, arg: GenMetaArg) => {
@ -21,14 +21,14 @@ export const genMeta = (p: GenMetaP, arg: GenMetaArg) => {
const item = arg.item as IItem;
const mitem = arg.mitem as MItem | undefined;
const r = applyRefIds(item, mitem, parent);
const r = applyRefIds(item, mitem, parent, p.smeta);
if (item.type === "item" && item.component?.id) {
genComp(p, arg, r);
return;
}
const meta: IMeta = {
item: simplify(item),
item: simplifyItem(item),
parent: {
id: arg.parent?.item.id || "root",
instance_id: arg.parent?.instance?.id,

View File

@ -3,13 +3,15 @@ import { TypedMap } from "yjs-types";
import { IContent, MContent } from "../../../../utils/types/general";
import { IItem } from "../../../../utils/types/item";
import set from "lodash.set";
import { ISimpleMeta } from "./types";
const timeouts = {} as Record<string, any>;
export const applyRefIds = (
item: IContent,
mitem?: MContent,
parent?: { instance?: IItem; minstance?: MContent }
parent?: { instance?: IItem; minstance?: MContent },
smeta?: Record<string, ISimpleMeta>
) => {
const instance = parent?.instance;

View File

@ -1,6 +1,7 @@
import { IItem } from "../../../../utils/types/item";
import { IMeta, ISimpleMeta } from "./types";
export const simplify = (item: IItem) => {
export const simplifyItem = (item: IItem) => {
const newitem = {} as any;
for (const [k, v] of Object.entries(item)) {
if (k === "childs") {
@ -16,3 +17,26 @@ export const simplify = (item: IItem) => {
}
return newitem as IItem;
};
export const simplifyMeta = (allmeta: Record<string, IMeta>) => {
const smeta = {} as Record<string, ISimpleMeta>;
for (const [k, meta] of Object.entries(allmeta)) {
smeta[k] = {
id: meta.item.id,
parent: meta.parent
? {
id: meta.parent.id,
comp_id: meta.parent.comp_id,
instance_id: meta.parent.instance_id,
}
: undefined,
comp: meta.item.component?.id
? { id: meta.item.component.id, ref_ids: meta.item.component.ref_ids }
: undefined,
scope: meta.scope.def,
};
}
return smeta;
};

View File

@ -10,6 +10,7 @@ export type GenMetaP = {
item_exists?: (arg: { old: IMeta; new: IMeta }) => void;
item_new?: (arg: { new: IMeta }) => void;
};
smeta?: Record<string, ISimpleMeta>;
set_mitem?: boolean;
set_meta?: boolean;
};
@ -29,6 +30,20 @@ export type GenMetaArg = {
};
};
export type ISimpleMeta = {
id: string;
comp?: {
id: string;
ref_ids: Record<string, string>;
};
parent?: {
id: string;
instance_id?: string;
comp_id?: string;
};
scope: IMeta["scope"]["def"];
};
export type IMeta = {
item: IItem;
mitem?: MItem;