UNPKG

@atlaskit/editor-plugin-collab-edit

Version:

Collab Edit plugin for @atlaskit/editor-core

94 lines (93 loc) 3.55 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Participants = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@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) { (0, _defineProperty2.default)(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; } var Participants = exports.Participants = /*#__PURE__*/function () { function Participants() { var participants = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map(); (0, _classCallCheck2.default)(this, Participants); this.participants = participants; } return (0, _createClass2.default)(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; } }]); }();