marshall-y-slate
Version:
Yjs bindings for Slate.
23 lines • 2.3 kB
JavaScript
import invariant from 'tiny-invariant';
import * as Y from 'yjs';
import { SyncNode } from '../model';
import { getSyncNodePath, getTarget } from '../path';
export function absolutePositionToRelativePosition(sharedType, point) {
const target = getTarget(sharedType, point.path);
const text = SyncNode.getFirstText(target);
invariant(text, 'Slate point should point to Text node');
const offset = point.offset >= 0 ? point.offset : 0;
return Y.createRelativePositionFromTypeIndex(text, offset);
}
export function relativePositionToAbsolutePosition(sharedType, relativePosition) {
invariant(sharedType.doc, 'Shared type should be bound to a document');
const pos = Y.createAbsolutePositionFromRelativePosition(relativePosition, sharedType.doc);
if (!pos) {
return null;
}
return {
path: getSyncNodePath(pos.type.parent),
offset: pos.index
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3Vyc29yL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBQ3pCLE9BQU8sRUFBYyxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFckQsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxVQUFzQixFQUN0QixLQUFZO0lBRVosTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxTQUFTLENBQUMsSUFBSSxFQUFFLHVDQUF1QyxDQUFDLENBQUM7SUFDekQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxPQUFPLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxrQ0FBa0MsQ0FDaEQsVUFBc0IsRUFDdEIsZ0JBQW9DO0lBRXBDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLDJDQUEyQyxDQUFDLENBQUM7SUFFdkUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLDBDQUEwQyxDQUN0RCxnQkFBZ0IsRUFDaEIsVUFBVSxDQUFDLEdBQUcsQ0FDZixDQUFDO0lBRUYsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNSLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQWtCLENBQUM7UUFDbEQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLO0tBQ2xCLENBQUM7QUFDSixDQUFDIn0=