UNPKG

alinea

Version:
45 lines (43 loc) 1.06 kB
import { Doc } from "../chunks/chunk-QUIANN6B.js"; import "../chunks/chunk-AJJSW27C.js"; import "../chunks/chunk-NZLE2WMY.js"; // src/core/Doc.ts import { Field } from "./Field.js"; import { Type } from "./Type.js"; import { entries } from "./util/Objects.js"; var DOC_KEY = "#root"; function createYDoc(type, entry) { const doc = new Doc({ gc: false }); if (entry) applyEntryData(doc, type, entry); return doc; } function applyEntryData(doc, type, entry) { const clientID = doc.clientID; doc.clientID = 1; doc.transact(() => { const docRoot = doc.getMap(DOC_KEY); for (const [key, field] of entries(type)) { if (key === "path") continue; const contents = entry.data[key]; docRoot.set(key, Field.shape(field).toY(contents)); } }); doc.clientID = clientID; } function parseYDoc(type, doc) { const docRoot = doc.getMap(DOC_KEY); const data = Type.shape(type).fromY(docRoot); return { path: data.path, title: data.title, data }; } export { DOC_KEY, applyEntryData, createYDoc, parseYDoc };