UNPKG

@atlaskit/editor-plugin-collab-edit

Version:

Collab Edit plugin for @atlaskit/editor-core

87 lines 3.21 kB
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; } }]); }();