UNPKG

@tldraw/tlschema

Version:

A tiny little drawing app (schema).

8 lines (7 loc) 3.1 kB
{ "version": 3, "sources": ["../../src/records/TLDocument.ts"], "sourcesContent": ["import {\n\tBaseRecord,\n\tcreateMigrationIds,\n\tcreateRecordMigrationSequence,\n\tcreateRecordType,\n\tRecordId,\n\tUnknownRecord,\n} from '@tldraw/store'\nimport { JsonObject } from '@tldraw/utils'\nimport { T } from '@tldraw/validate'\n\n/**\n * TLDocument\n *\n * @public\n */\nexport interface TLDocument extends BaseRecord<'document', RecordId<TLDocument>> {\n\tgridSize: number\n\tname: string\n\tmeta: JsonObject\n}\n\n/** @public */\nexport const documentValidator: T.Validator<TLDocument> = T.model(\n\t'document',\n\tT.object({\n\t\ttypeName: T.literal('document'),\n\t\tid: T.literal('document:document' as RecordId<TLDocument>),\n\t\tgridSize: T.number,\n\t\tname: T.string,\n\t\tmeta: T.jsonValue as T.ObjectValidator<JsonObject>,\n\t})\n)\n\n/** @public */\nexport function isDocument(record?: UnknownRecord): record is TLDocument {\n\tif (!record) return false\n\treturn record.typeName === 'document'\n}\n\n/** @public */\nexport const documentVersions = createMigrationIds('com.tldraw.document', {\n\tAddName: 1,\n\tAddMeta: 2,\n} as const)\n\n/** @public */\nexport const documentMigrations = createRecordMigrationSequence({\n\tsequenceId: 'com.tldraw.document',\n\trecordType: 'document',\n\tsequence: [\n\t\t{\n\t\t\tid: documentVersions.AddName,\n\t\t\tup: (document) => {\n\t\t\t\t;(document as any).name = ''\n\t\t\t},\n\t\t\tdown: (document) => {\n\t\t\t\tdelete (document as any).name\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tid: documentVersions.AddMeta,\n\t\t\tup: (record) => {\n\t\t\t\t;(record as any).meta = {}\n\t\t\t},\n\t\t},\n\t],\n})\n\n/** @public */\nexport const DocumentRecordType = createRecordType<TLDocument>('document', {\n\tvalidator: documentValidator,\n\tscope: 'document',\n}).withDefaultProperties(\n\t(): Omit<TLDocument, 'id' | 'typeName'> => ({\n\t\tgridSize: 10,\n\t\tname: '',\n\t\tmeta: {},\n\t})\n)\n\n// all document records have the same ID: 'document:document'\n/** @public */\nexport const TLDOCUMENT_ID: RecordId<TLDocument> = DocumentRecordType.createId('document')\n"], "mappings": "AAAA;AAAA,EAEC;AAAA,EACA;AAAA,EACA;AAAA,OAGM;AAEP,SAAS,SAAS;AAcX,MAAM,oBAA6C,EAAE;AAAA,EAC3D;AAAA,EACA,EAAE,OAAO;AAAA,IACR,UAAU,EAAE,QAAQ,UAAU;AAAA,IAC9B,IAAI,EAAE,QAAQ,mBAA2C;AAAA,IACzD,UAAU,EAAE;AAAA,IACZ,MAAM,EAAE;AAAA,IACR,MAAM,EAAE;AAAA,EACT,CAAC;AACF;AAGO,SAAS,WAAW,QAA8C;AACxE,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,OAAO,aAAa;AAC5B;AAGO,MAAM,mBAAmB,mBAAmB,uBAAuB;AAAA,EACzE,SAAS;AAAA,EACT,SAAS;AACV,CAAU;AAGH,MAAM,qBAAqB,8BAA8B;AAAA,EAC/D,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,IACT;AAAA,MACC,IAAI,iBAAiB;AAAA,MACrB,IAAI,CAAC,aAAa;AACjB;AAAC,QAAC,SAAiB,OAAO;AAAA,MAC3B;AAAA,MACA,MAAM,CAAC,aAAa;AACnB,eAAQ,SAAiB;AAAA,MAC1B;AAAA,IACD;AAAA,IACA;AAAA,MACC,IAAI,iBAAiB;AAAA,MACrB,IAAI,CAAC,WAAW;AACf;AAAC,QAAC,OAAe,OAAO,CAAC;AAAA,MAC1B;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAGM,MAAM,qBAAqB,iBAA6B,YAAY;AAAA,EAC1E,WAAW;AAAA,EACX,OAAO;AACR,CAAC,EAAE;AAAA,EACF,OAA4C;AAAA,IAC3C,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,EACR;AACD;AAIO,MAAM,gBAAsC,mBAAmB,SAAS,UAAU;", "names": [] }