@atlaskit/editor-plugin-collab-edit
Version:
Collab Edit plugin for @atlaskit/editor-core
87 lines • 3.21 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
export var Participants = /*#__PURE__*/function () {
function Participants() {
var participants = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();
_classCallCheck(this, Participants);
this.participants = participants;
}
return _createClass(Participants, [{
key: "add",
value: function add(data) {
var newSet = new Map(this.participants);
data.forEach(function (participant) {
newSet.set(participant.sessionId, participant);
});
return new Participants(newSet);
}
}, {
key: "remove",
value: function remove(sessionIds) {
var newSet = new Map(this.participants);
sessionIds.forEach(function (sessionId) {
newSet.delete(sessionId);
});
return new Participants(newSet);
}
}, {
key: "update",
value: function update(sessionId, lastActive) {
var newSet = new Map(this.participants);
var data = newSet.get(sessionId);
if (!data) {
return this;
}
newSet.set(sessionId, _objectSpread(_objectSpread({}, data), {}, {
lastActive: lastActive
}));
return new Participants(newSet);
}
}, {
key: "updateCursorPos",
value: function updateCursorPos(sessionId, cursorPos) {
var newSet = new Map(this.participants);
var data = newSet.get(sessionId);
if (!data) {
return this;
}
newSet.set(sessionId, _objectSpread(_objectSpread({}, data), {}, {
cursorPos: cursorPos
}));
return new Participants(newSet);
}
}, {
key: "toArray",
value: function toArray() {
return Array.from(this.participants.values());
}
}, {
key: "get",
value: function get(sessionId) {
return this.participants.get(sessionId);
}
}, {
key: "size",
value: function size() {
return this.participants.size;
}
}, {
key: "eq",
value: function eq(other) {
var left = this.toArray().map(function (p) {
return p.sessionId;
}).sort(function (a, b) {
return a > b ? -1 : 1;
}).join('');
var right = other.toArray().map(function (p) {
return p.sessionId;
}).sort(function (a, b) {
return a > b ? -1 : 1;
}).join('');
return left === right;
}
}]);
}();