wip checkpoint

This commit is contained in:
Rizky 2023-12-17 22:27:35 +07:00
parent fcbf3b6721
commit 8d297854cf
7 changed files with 76 additions and 23 deletions

View File

@ -12,7 +12,7 @@ export const EdRight = () => {
meta?.item.type === "item" &&
meta?.item.component?.id &&
meta?.item.component.id !== active.comp_id;
const showProp = isComponent && p.ui.side.prop;
return (
<div
className={cx(

View File

@ -142,6 +142,13 @@ export const updateComponentMeta = async (
meta,
on: {
visit(m) {
if (m.item.originalId) {
m.item.id = m.item.originalId;
meta[m.item.id] = m;
delete meta[m.item.originalId];
delete m.item.originalId;
}
pushTreeNode(p, m, meta, tree);
if (m.parent) {
@ -151,11 +158,18 @@ export const updateComponentMeta = async (
}
} else {
const parent = meta[m.parent.id];
if (parent.mitem) {
if (parent && parent.mitem) {
parent.mitem.get("childs")?.forEach((child) => {
if (child.get("id") === m.item.id) {
m.mitem = child;
const cid = child.get("id");
if (cid) {
if (
cid === m.item.id ||
(m.instances &&
m.instances[cid] &&
m.instances[cid][m.item.id])
) {
m.mitem = child;
}
}
});
}

View File

@ -104,8 +104,16 @@ export const treeRebuild = async (p: PG, arg?: { note?: string }) => {
export const getMetaById = (p: PG, id: string) => {
if (active.comp_id) {
if (p.comp.list[active.comp_id])
return p.comp.list[active.comp_id].meta[id];
if (p.comp.list[active.comp_id] && p.comp.list[active.comp_id].meta) {
const meta = p.comp.list[active.comp_id].meta[id];
if (meta) {
return meta;
} else if (p.comp.list[active.comp_id].meta) {
for (const v of Object.values(p.comp.list[active.comp_id].meta)) {
if (v.item.id === id) return v;
}
}
}
} else {
return p.page.meta[id];
}

View File

@ -25,6 +25,7 @@ export const mainPerItemVisit = (
e.currentTarget.blur();
}
};
parts.props.onBlur = (e) => {
p.page.prevent_rebuild = false;
p.render();
@ -79,7 +80,16 @@ export const mainPerItemVisit = (
);
parts.props.onPointerOver = (e) => {
e.stopPropagation();
active.hover.id = meta.item.id;
if (active.comp_id) {
if (meta.parent?.comp_id === active.comp_id && meta.item.originalId) {
active.hover.id = meta.item.originalId;
} else {
active.hover.id = meta.item.id;
}
} else {
active.hover.id = meta.item.id;
}
active.hover.renderMain();
active.hover.renderTree();
};
@ -122,8 +132,15 @@ export const mainPerItemVisit = (
}
} else if (meta.parent?.comp_id === active.comp_id) {
active.item_id = meta.item.originalId || meta.item.id;
} else {
active.comp_id = "";
} else if (m) {
if (m.mitem) {
active.comp_id = "";
} else if (m.parent?.comp_id && m.parent?.instance_id) {
const pmeta = p.page.meta[m.parent.instance_id];
if (pmeta.item.originalId) {
active.item_id = pmeta.item.originalId;
}
}
}
} else {
if (m) {
@ -141,7 +158,7 @@ const getOuterMeta = (p: { meta: Record<string, IMeta> }, meta: IMeta) => {
if (cur.jsx_prop) return meta;
while (cur?.parent?.instance_id) {
while (cur?.parent?.instance_id && p.meta[cur?.parent?.instance_id]) {
cur = p.meta[cur?.parent?.instance_id];
}

View File

@ -17,21 +17,35 @@ export const EdSidePropInstance: FC<{ meta: IMeta }> = ({ meta }) => {
showJSX: false,
});
const item = meta?.item as IItem;
if (!item) return null;
let _meta = meta;
if (active.comp_id) {
if (
p.comp.list[active.comp_id] &&
p.comp.list[active.comp_id].meta &&
meta.item.originalId
) {
const m = p.comp.list[active.comp_id].meta[meta.item.originalId];
if (m) {
_meta = m;
}
}
}
const item = _meta?.item as IItem;
if (!item) return <>Warning: Item not found</>;
let filtered = [] as { mprop: FMCompDef; name: string }[];
const mprops = meta.mitem?.get("component")?.get("props");
const comp_id = meta.mitem?.get("component")?.get("id") || "";
const mprops = _meta.mitem?.get("component")?.get("props");
const comp_id = _meta.mitem?.get("component")?.get("id") || "";
if (!p.comp.list[comp_id]) return null;
if (!p.comp.list[comp_id]) return <>Warning: Component not found</>;
const mcprops = p.comp.list[comp_id].doc
.getMap("map")
.get("root")
?.get("component")
?.get("props");
if (mprops && meta.mitem && mcprops) {
if (mprops && _meta.mitem && mcprops) {
mcprops.forEach((m, key) => {
let mprop = mprops.get(key);
@ -67,12 +81,12 @@ export const EdSidePropInstance: FC<{ meta: IMeta }> = ({ meta }) => {
<div className="flex flex-1 flex-col text-[12px]">
<div className="flex border-b p-1 h-[28px] items-center bg-slate-50 justify-between select-none">
<div className="flex-1 overflow-hidden mr-2 text-ellipsis whitespace-nowrap">
{meta.item.name}
{_meta.item.name}
</div>
<div
className="border px-1 cursor-pointer bg-white hover:bg-blue-100"
onClick={() => {
const item = meta.item as IItem;
const item = _meta.item as IItem;
const comp_id = item.component?.id;

View File

@ -84,7 +84,7 @@ export const genComp = (p: GenMetaP, arg: GenMetaArg) => {
name,
},
parent: {
item,
item: meta.item,
instance_id: item.id,
comp: pcomp.comp,
},

View File

@ -44,9 +44,9 @@ export const genMeta = (p: GenMetaP, arg: GenMetaArg) => {
}
if (item.id) {
if (p.set_meta !== false) {
p.meta[item.id] = meta;
p.meta[meta.item.id] = meta;
}
}
}
if (item.childs) {
for (const [_, v] of Object.entries(item.childs)) {
@ -54,7 +54,7 @@ export const genMeta = (p: GenMetaP, arg: GenMetaArg) => {
item: v,
is_root: false,
parent: {
item,
item: meta.item,
instance_id: arg.parent?.instance_id,
comp: arg.parent?.comp,
},