@slate-sheikah/bridge
Version:
slate-sheikah bridge: Bridge components for slate-sheikah. Slate + Automerge + Sockets
36 lines (26 loc) • 4.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setCursor = void 0;
var _slate = require("slate");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const setCursor = (id, selection, doc, operations, cursorData) => {
var _cursorOps;
const cursorOps = operations.filter(op => op.type === 'set_selection');
if (!doc.cursors) doc.cursors = {};
const newCursor = ((_cursorOps = cursorOps[cursorOps.length - 1]) === null || _cursorOps === void 0 ? void 0 : _cursorOps.newProperties) || {};
if (selection) {
const newCursorData = Object.assign(doc.cursors[id] && JSON.parse(doc.cursors[id]) || {}, newCursor, selection, _objectSpread(_objectSpread({}, cursorData), {}, {
isForward: _slate.Range.isForward(selection)
}));
doc.cursors[id] = JSON.stringify(newCursorData);
} else {
delete doc.cursors[id];
}
return doc;
};
exports.setCursor = setCursor;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdXJzb3IvaW5kZXgudHMiXSwibmFtZXMiOlsic2V0Q3Vyc29yIiwiaWQiLCJzZWxlY3Rpb24iLCJkb2MiLCJvcGVyYXRpb25zIiwiY3Vyc29yRGF0YSIsImN1cnNvck9wcyIsImZpbHRlciIsIm9wIiwidHlwZSIsImN1cnNvcnMiLCJuZXdDdXJzb3IiLCJsZW5ndGgiLCJuZXdQcm9wZXJ0aWVzIiwibmV3Q3Vyc29yRGF0YSIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsImlzRm9yd2FyZCIsIlJhbmdlIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7O0FBSU8sTUFBTUEsU0FBUyxHQUFHLENBQ3ZCQyxFQUR1QixFQUV2QkMsU0FGdUIsRUFHdkJDLEdBSHVCLEVBSXZCQyxVQUp1QixFQUt2QkMsVUFMdUIsS0FNcEI7QUFBQTs7QUFDSCxRQUFNQyxTQUFTLEdBQUdGLFVBQVUsQ0FBQ0csTUFBWCxDQUFrQkMsRUFBRSxJQUFJQSxFQUFFLENBQUNDLElBQUgsS0FBWSxlQUFwQyxDQUFsQjtBQUVBLE1BQUksQ0FBQ04sR0FBRyxDQUFDTyxPQUFULEVBQWtCUCxHQUFHLENBQUNPLE9BQUosR0FBYyxFQUFkO0FBRWxCLFFBQU1DLFNBQVMsR0FDYixlQUFDTCxTQUFTLENBQUNBLFNBQVMsQ0FBQ00sTUFBVixHQUFtQixDQUFwQixDQUFWLDBEQUE0REMsYUFBNUQsS0FDQSxFQUZGOztBQUlBLE1BQUlYLFNBQUosRUFBZTtBQUNiLFVBQU1ZLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQ25CYixHQUFHLENBQUNPLE9BQUosQ0FBWVQsRUFBWixLQUFtQmdCLElBQUksQ0FBQ0MsS0FBTCxDQUFXZixHQUFHLENBQUNPLE9BQUosQ0FBWVQsRUFBWixDQUFYLENBQXBCLElBQW9ELEVBRGhDLEVBRXBCVSxTQUZvQixFQUdwQlQsU0FIb0Isa0NBS2ZHLFVBTGU7QUFNbEJjLE1BQUFBLFNBQVMsRUFBRUMsYUFBTUQsU0FBTixDQUFnQmpCLFNBQWhCO0FBTk8sT0FBdEI7QUFVQUMsSUFBQUEsR0FBRyxDQUFDTyxPQUFKLENBQVlULEVBQVosSUFBa0JnQixJQUFJLENBQUNJLFNBQUwsQ0FBZVAsYUFBZixDQUFsQjtBQUNELEdBWkQsTUFZTztBQUNMLFdBQU9YLEdBQUcsQ0FBQ08sT0FBSixDQUFZVCxFQUFaLENBQVA7QUFDRDs7QUFFRCxTQUFPRSxHQUFQO0FBQ0QsQ0FoQ00iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRpb24sIFJhbmdlLCBTZXRTZWxlY3Rpb25PcGVyYXRpb24gfSBmcm9tICdzbGF0ZSdcblxuaW1wb3J0IHsgQ3Vyc29yRGF0YSB9IGZyb20gJy4uL21vZGVsJ1xuXG5leHBvcnQgY29uc3Qgc2V0Q3Vyc29yID0gKFxuICBpZDogc3RyaW5nLFxuICBzZWxlY3Rpb246IFJhbmdlIHwgbnVsbCxcbiAgZG9jOiBhbnksXG4gIG9wZXJhdGlvbnM6IE9wZXJhdGlvbltdLFxuICBjdXJzb3JEYXRhOiBDdXJzb3JEYXRhXG4pID0+IHtcbiAgY29uc3QgY3Vyc29yT3BzID0gb3BlcmF0aW9ucy5maWx0ZXIob3AgPT4gb3AudHlwZSA9PT0gJ3NldF9zZWxlY3Rpb24nKVxuXG4gIGlmICghZG9jLmN1cnNvcnMpIGRvYy5jdXJzb3JzID0ge31cblxuICBjb25zdCBuZXdDdXJzb3IgPVxuICAgIChjdXJzb3JPcHNbY3Vyc29yT3BzLmxlbmd0aCAtIDFdIGFzIFNldFNlbGVjdGlvbk9wZXJhdGlvbik/Lm5ld1Byb3BlcnRpZXMgfHxcbiAgICB7fVxuXG4gIGlmIChzZWxlY3Rpb24pIHtcbiAgICBjb25zdCBuZXdDdXJzb3JEYXRhID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIChkb2MuY3Vyc29yc1tpZF0gJiYgSlNPTi5wYXJzZShkb2MuY3Vyc29yc1tpZF0pKSB8fCB7fSxcbiAgICAgIG5ld0N1cnNvcixcbiAgICAgIHNlbGVjdGlvbixcbiAgICAgIHtcbiAgICAgICAgLi4uY3Vyc29yRGF0YSxcbiAgICAgICAgaXNGb3J3YXJkOiBSYW5nZS5pc0ZvcndhcmQoc2VsZWN0aW9uKVxuICAgICAgfVxuICAgIClcblxuICAgIGRvYy5jdXJzb3JzW2lkXSA9IEpTT04uc3RyaW5naWZ5KG5ld0N1cnNvckRhdGEpXG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGRvYy5jdXJzb3JzW2lkXVxuICB9XG5cbiAgcmV0dXJuIGRvY1xufVxuIl19