UNPKG

alinea

Version:

[![npm](https://img.shields.io/npm/v/alinea.svg)](https://npmjs.org/package/alinea) [![install size](https://packagephobia.com/badge?p=alinea)](https://packagephobia.com/result?p=alinea)

47 lines (45 loc) 1.08 kB
import { Doc } from "../chunks/chunk-OYP4EJOA.js"; import "../chunks/chunk-O6EXLFU2.js"; import "../chunks/chunk-U5RRZUYZ.js"; // src/core/Doc.ts import { Field } from "./Field.js"; import { Type } from "./Type.js"; import { entries } from "./util/Objects.js"; var ROOT_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(ROOT_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(ROOT_KEY); const data = Type.shape(type).fromY(docRoot); return { path: data.path, title: data.title, data }; } export { ROOT_KEY, applyEntryData, createYDoc, parseYDoc };