From 3367d15fa834f2f9922bf0caf8a9f4dcbd1bb473 Mon Sep 17 00:00:00 2001 From: Rizky Date: Wed, 27 Dec 2023 15:18:03 +0700 Subject: [PATCH] wip fix --- app/srv/ws/sync/editor/prep-page.ts | 18 +++++++++--------- app/web/src/nova/ed/logic/tree/build.tsx | 6 ++++-- .../nova/ed/panel/popup/script/scope/scope.tsx | 2 +- app/web/src/nova/vi/meta/comp.tsx | 5 +++-- app/web/src/nova/vi/meta/comp/instantiate.tsx | 6 +++--- app/web/src/nova/vi/meta/meta.ts | 7 +++++-- app/web/src/nova/vi/utils/types.ts | 2 +- 7 files changed, 26 insertions(+), 20 deletions(-) diff --git a/app/srv/ws/sync/editor/prep-page.ts b/app/srv/ws/sync/editor/prep-page.ts index 3c273d6a..d7bbd583 100644 --- a/app/srv/ws/sync/editor/prep-page.ts +++ b/app/srv/ws/sync/editor/prep-page.ts @@ -30,17 +30,17 @@ export const prepContentTree = async ( comps, meta, on: { - visit_component(item) { - if (item.component) { - if (!item.component.instances) { - item.component.instances = {}; - } - } - }, - visit(meta) { + visit(meta, item) { if (meta.item.adv?.js) { meta.item.script = parseJs(meta.item.adv.js); } + + if (item.component?.id) { + if (!item.component?.instances) { + item.component.instances = {}; + meta.item.childs = []; + } + } }, }, mode: "page", @@ -48,7 +48,7 @@ export const prepContentTree = async ( { item: root as unknown as IItem } ); - return ctree; + return root; }; const loadCompForPage = async (ctree: IRoot, sync: SyncConnection) => { diff --git a/app/web/src/nova/ed/logic/tree/build.tsx b/app/web/src/nova/ed/logic/tree/build.tsx index 440806a9..743aaeb8 100644 --- a/app/web/src/nova/ed/logic/tree/build.tsx +++ b/app/web/src/nova/ed/logic/tree/build.tsx @@ -1,7 +1,7 @@ import { IItem, MItem } from "../../../../utils/types/item"; import { FMCompDef, FNCompDef } from "../../../../utils/types/meta-fn"; import { genMeta } from "../../../vi/meta/meta"; -import { IMeta, PG, active } from "../ed-global"; +import { IMeta, PG } from "../ed-global"; import { assignMitem } from "./assign-mitem"; import { pushTreeNode } from "./build/push-tree"; @@ -40,7 +40,9 @@ export const treeRebuild = async (p: PG, arg?: { note?: string }) => { on: { async visit(m) { if (!is_layout) { - pushTreeNode(p, m, meta, p.page.tree); + if (m.parent?.instance_id !== m.parent?.id) { + pushTreeNode(p, m, meta, p.page.tree); + } assignMitem({ m, item, mitem, meta }); } diff --git a/app/web/src/nova/ed/panel/popup/script/scope/scope.tsx b/app/web/src/nova/ed/panel/popup/script/scope/scope.tsx index bd7db2c6..b9513181 100644 --- a/app/web/src/nova/ed/panel/popup/script/scope/scope.tsx +++ b/app/web/src/nova/ed/panel/popup/script/scope/scope.tsx @@ -34,7 +34,7 @@ export const declareScope = async ( ? p.comp.list[active.comp_id]?.meta : p.page.meta; const entry = active.comp_id - ? [p.comp.loaded[active.comp_id].comp] + ? [p.comp.loaded[active.comp_id]] : p.page.entry.map((e) => p.page.meta[e].item); const paths: IMeta[][] = []; diff --git a/app/web/src/nova/vi/meta/comp.tsx b/app/web/src/nova/vi/meta/comp.tsx index 0a618343..00b924ae 100644 --- a/app/web/src/nova/vi/meta/comp.tsx +++ b/app/web/src/nova/vi/meta/comp.tsx @@ -34,7 +34,7 @@ export const genComp = (p: GenMetaP, arg: GenMetaArg) => { instantiate({ item, - comp: item_comp, + item_comp: item_comp, ids: instance, }); } @@ -47,6 +47,7 @@ export const genComp = (p: GenMetaP, arg: GenMetaArg) => { instance_id: arg.parent?.instance_id, }, }; + meta.item.childs = []; if (item.id) { if (p.set_meta !== false) { @@ -86,7 +87,7 @@ export const genComp = (p: GenMetaP, arg: GenMetaArg) => { }); if (p.on?.visit) { - p.on.visit(meta); + p.on.visit(meta, item); } for (const child of Object.values(item.childs)) { diff --git a/app/web/src/nova/vi/meta/comp/instantiate.tsx b/app/web/src/nova/vi/meta/comp/instantiate.tsx index 576b8b3d..8aaf472e 100644 --- a/app/web/src/nova/vi/meta/comp/instantiate.tsx +++ b/app/web/src/nova/vi/meta/comp/instantiate.tsx @@ -5,11 +5,11 @@ import { FNComponent } from "../../../../utils/types/meta-fn"; export const instantiate = (arg: { item: IItem; - comp: IItem; + item_comp: IItem; ids: Record; }) => { - const { item, comp, ids } = arg; - const newitem = deepClone(comp); + const { item, item_comp, ids } = arg; + const newitem = deepClone(item_comp); walkChild(newitem, ids); diff --git a/app/web/src/nova/vi/meta/meta.ts b/app/web/src/nova/vi/meta/meta.ts index 3973477e..024493f6 100644 --- a/app/web/src/nova/vi/meta/meta.ts +++ b/app/web/src/nova/vi/meta/meta.ts @@ -15,7 +15,6 @@ export const genMeta = (p: GenMetaP, arg: GenMetaArg) => { const meta: IMeta = { item: simplifyItemChild(item), - jsx_prop: arg.jsx_prop, parent: { id: arg.parent?.item.id || "root", instance_id: arg.parent?.instance_id, @@ -23,8 +22,12 @@ export const genMeta = (p: GenMetaP, arg: GenMetaArg) => { }, }; + if (arg.jsx_prop) { + meta.jsx_prop = arg.jsx_prop; + } + if (p.on?.visit) { - p.on.visit(meta); + p.on.visit(meta, item); } if (item.id) { diff --git a/app/web/src/nova/vi/utils/types.ts b/app/web/src/nova/vi/utils/types.ts index ff5b8368..c2f63942 100644 --- a/app/web/src/nova/vi/utils/types.ts +++ b/app/web/src/nova/vi/utils/types.ts @@ -10,7 +10,7 @@ export type GenMetaP = { comps: Record; on?: { visit_component?: (item: IItem) => void; - visit?: (meta: IMeta) => void; + visit?: (meta: IMeta, item: IItem) => void; }; set_meta?: boolean; note?: string;