prasi-bun/app/web/src/nova/view/logic/meta/ref-ids.tsx

50 lines
1.4 KiB
TypeScript

import { createId } from "@paralleldrive/cuid2";
import { IContent, MContent } from "../../../../utils/types/general";
import { IItem } from "../../../../utils/types/item";
import { ISimpleMeta } from "./types";
const timeouts = {} as Record<string, any>;
export const applyRefIds = (
item: IContent,
mitem?: MContent,
parent?: { instance?: IItem; minstance?: MContent },
smeta?: Record<string, ISimpleMeta>
) => {
const instance = parent?.instance;
if (instance && instance.component) {
const parentcomp = parent?.minstance?.get("component");
let mref_ids = parentcomp?.get("ref_ids");
const ref_ids = instance.component.ref_ids;
if (ref_ids) {
if (!ref_ids[item.id]) {
ref_ids[item.id] = createId();
// if (parentcomp) {
// clearTimeout(timeouts[instance.id]);
// timeouts[instance.id] = setTimeout(() => {
// if (mref_ids) {
// const mref_ids = new Y.Map() as any;
// syncronize(mref_ids, ref_ids);
// const parentcomp = parent?.minstance?.get("component");
// if (parentcomp) {
// parentcomp.set("ref_ids", mref_ids);
// }
// }
// }, 50);
// }
}
if (ref_ids[item.id]) {
if (!item.originalId) item.originalId = item.id;
item.id = ref_ids[item.id];
}
}
return { ref_ids, mref_ids };
}
};