UNPKG

@wordpress/sync

Version:
60 lines 2.12 kB
/** * WordPress dependencies */ import type { UndoManager as WPUndoManager } from '@wordpress/undo-manager'; /** * External dependencies */ import type * as Y from 'yjs'; /** * Internal dependencies */ import type { WORDPRESS_META_KEY_FOR_CRDT_DOC_PERSISTENCE } from './config'; declare global { interface Window { __experimentalCollaborativeEditingSecret?: string; wp?: { ajax?: { settings?: { url?: string; }; }; }; } } export type CRDTDoc = Y.Doc; export type EntityID = string; export type ObjectID = string; export type ObjectType = string; export type Origin = any; export interface ObjectData extends Record<string, unknown> { meta?: ObjectMeta; } export interface ObjectMeta extends Record<string, unknown> { [WORDPRESS_META_KEY_FOR_CRDT_DOC_PERSISTENCE]?: string; } export interface ProviderCreatorResult { destroy: () => void; } export type ProviderCreator = (objectType: ObjectType, objectId: ObjectID, ydoc: Y.Doc) => Promise<ProviderCreatorResult>; export interface RecordHandlers { editRecord: (data: Partial<ObjectData>) => void; getEditedRecord: () => Promise<ObjectData>; saveRecord: () => Promise<void>; } export interface SyncConfig { applyChangesToCRDTDoc: (ydoc: Y.Doc, changes: Partial<ObjectData>) => void; getChangesFromCRDTDoc: (ydoc: Y.Doc, editedRecord: ObjectData) => ObjectData; supports?: Record<string, true>; } export interface SyncManager { createMeta: (objectType: ObjectType, objectId: ObjectID) => Record<string, string>; load: (syncConfig: SyncConfig, objectType: ObjectType, objectId: ObjectID, record: ObjectData, handlers: RecordHandlers) => Promise<void>; undoManager: SyncUndoManager; unload: (objectType: ObjectType, objectId: ObjectID) => void; update: (objectType: ObjectType, objectId: ObjectID, changes: Partial<ObjectData>, origin: string) => void; } export interface SyncUndoManager extends WPUndoManager<ObjectData> { addToScope: (ymap: Y.Map<any>) => void; } //# sourceMappingURL=types.d.ts.map