1 line
24 KiB
Plaintext
1 line
24 KiB
Plaintext
{"version":3,"sources":["../yjs/node_modules/browser-pack/_prelude.js","src/Array.js","y-array.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","_classCallCheck","instance","Constructor","TypeError","extend","Y","YArray","os","_model","idArray","valArray","_this","this","eventHandler","utils","EventHandler","ops","userEvents","op","struct","pos","undefined","left","sid","JSON","stringify","indexOf","splice","id","content","push","type","object","index","value","target","val","callEventListeners","_createClass","key","slice","contents","insert","Array","mostLeft","parse","prevId","origin","parent","getNextOpId","awaitAndPrematurelyCall","requestTransaction","regeneratorRuntime","mark","_callee","mostRight","j","wrap","_context","prev","next","delegateYield","getOperation","t0","right","t1","start","applyCreatedOperations","awaitedInserts","stop","newLeft","dels","_callee2","_context2","awaitedDeletes","addEventListener","_changed","transaction","_context3","deleted","abrupt","receivedOp","get","CustomType","name","class","initType","YArrayInitializer","model","_context4","Struct","List","map","c","defineProperties","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","prototype"],"mappings":"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","file":"y-array.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","/* global Y */\r\n'use strict'\r\n\r\nfunction extend (Y) {\r\n class YArray {\r\n constructor (os, _model, idArray, valArray) {\r\n this.os = os\r\n this._model = _model\r\n // Array of all the operation id's\r\n this.idArray = idArray\r\n // Array of all the values\r\n this.valArray = valArray\r\n this.eventHandler = new Y.utils.EventHandler(ops => {\r\n var userEvents = []\r\n for (var i in ops) {\r\n var op = ops[i]\r\n if (op.struct === 'Insert') {\r\n let pos\r\n // we check op.left only!,\r\n // because op.right might not be defined when this is called\r\n if (op.left === null) {\r\n pos = 0\r\n } else {\r\n var sid = JSON.stringify(op.left)\r\n pos = this.idArray.indexOf(sid) + 1\r\n if (pos <= 0) {\r\n throw new Error('Unexpected operation!')\r\n }\r\n }\r\n this.idArray.splice(pos, 0, JSON.stringify(op.id))\r\n this.valArray.splice(pos, 0, op.content)\r\n userEvents.push({\r\n type: 'insert',\r\n object: this,\r\n index: pos,\r\n value: op.content,\r\n length: 1\r\n })\r\n } else if (op.struct === 'Delete') {\r\n let pos = this.idArray.indexOf(JSON.stringify(op.target))\r\n if (pos >= 0) {\r\n var val = this.valArray[pos]\r\n this.idArray.splice(pos, 1)\r\n this.valArray.splice(pos, 1)\r\n userEvents.push({\r\n type: 'delete',\r\n object: this,\r\n index: pos,\r\n value: val,\r\n length: 1\r\n })\r\n }\r\n } else {\r\n throw new Error('Unexpected struct!')\r\n }\r\n }\r\n this.eventHandler.callEventListeners(userEvents)\r\n })\r\n }\r\n get length () {\r\n return this.idArray.length\r\n }\r\n get (pos) {\r\n if (pos == null || typeof pos !== 'number') {\r\n throw new Error('pos must be a number!')\r\n }\r\n return this.valArray[pos]\r\n }\r\n toArray () {\r\n return this.valArray.slice()\r\n }\r\n push (contents) {\r\n this.insert(this.idArray.length, contents)\r\n }\r\n insert (pos, contents) {\r\n if (typeof pos !== 'number') {\r\n throw new Error('pos must be a number!')\r\n }\r\n if (!(contents instanceof Array)) {\r\n throw new Error('contents must be an Array of objects!')\r\n }\r\n if (contents.length === 0) {\r\n return\r\n }\r\n if (pos > this.idArray.length || pos < 0) {\r\n throw new Error('This position exceeds the range of the array!')\r\n }\r\n var mostLeft = pos === 0 ? null : JSON.parse(this.idArray[pos - 1])\r\n\r\n var ops = []\r\n var prevId = mostLeft\r\n for (var i = 0; i < contents.length; i++) {\r\n var op = {\r\n left: prevId,\r\n origin: prevId,\r\n // right: mostRight,\r\n // NOTE: I intentionally do not define right here, because it could be deleted\r\n // at the time of creating this operation, and is therefore not defined in idArray\r\n parent: this._model,\r\n content: contents[i],\r\n struct: 'Insert',\r\n id: this.os.getNextOpId()\r\n }\r\n ops.push(op)\r\n prevId = op.id\r\n }\r\n var eventHandler = this.eventHandler\r\n eventHandler.awaitAndPrematurelyCall(ops)\r\n this.os.requestTransaction(function *() {\r\n // now we can set the right reference.\r\n var mostRight\r\n if (mostLeft != null) {\r\n mostRight = (yield* this.getOperation(mostLeft)).right\r\n } else {\r\n mostRight = (yield* this.getOperation(ops[0].parent)).start\r\n }\r\n for (var j in ops) {\r\n ops[j].right = mostRight\r\n }\r\n yield* this.applyCreatedOperations(ops)\r\n eventHandler.awaitedInserts(ops.length)\r\n })\r\n }\r\n delete (pos, length) {\r\n if (length == null) { length = 1 }\r\n if (typeof length !== 'number') {\r\n throw new Error('pos must be a number!')\r\n }\r\n if (typeof pos !== 'number') {\r\n throw new Error('pos must be a number!')\r\n }\r\n if (pos + length > this.idArray.length || pos < 0 || length < 0) {\r\n throw new Error('The deletion range exceeds the range of the array!')\r\n }\r\n if (length === 0) {\r\n return\r\n }\r\n var eventHandler = this.eventHandler\r\n var newLeft = pos > 0 ? JSON.parse(this.idArray[pos - 1]) : null\r\n var dels = []\r\n for (var i = 0; i < length; i++) {\r\n dels.push({\r\n target: JSON.parse(this.idArray[pos + i]),\r\n struct: 'Delete'\r\n })\r\n }\r\n eventHandler.awaitAndPrematurelyCall(dels)\r\n this.os.requestTransaction(function *() {\r\n yield* this.applyCreatedOperations(dels)\r\n eventHandler.awaitedDeletes(dels.length, newLeft)\r\n })\r\n }\r\n observe (f) {\r\n this.eventHandler.addEventListener(f)\r\n }\r\n * _changed (transaction, op) {\r\n if (!op.deleted) {\r\n if (op.struct === 'Insert') {\r\n var l = op.left\r\n var left\r\n while (l != null) {\r\n left = yield* transaction.getOperation(l)\r\n if (!left.deleted) {\r\n break\r\n }\r\n l = left.left\r\n }\r\n op.left = l\r\n }\r\n this.eventHandler.receivedOp(op)\r\n }\r\n }\r\n }\r\n\r\n Y.extend('Array', new Y.utils.CustomType({\r\n name: 'Array', // TODO: copy the name when extending the object.. (see one line above)\r\n class: YArray,\r\n struct: 'List',\r\n initType: function * YArrayInitializer (os, model) {\r\n var valArray = []\r\n var idArray = yield* Y.Struct.List.map.call(this, model, function (c) {\r\n valArray.push(c.content)\r\n return JSON.stringify(c.id)\r\n })\r\n return new YArray(os, model.id, idArray, valArray)\r\n }\r\n }))\r\n}\r\n\r\nmodule.exports = extend\r\nif (typeof Y !== 'undefined') {\r\n extend(Y)\r\n}\r\n","(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n/* global Y */\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction extend(Y) {\n var YArray = function () {\n function YArray(os, _model, idArray, valArray) {\n var _this = this;\n\n _classCallCheck(this, YArray);\n\n this.os = os;\n this._model = _model;\n // Array of all the operation id's\n this.idArray = idArray;\n // Array of all the values\n this.valArray = valArray;\n this.eventHandler = new Y.utils.EventHandler(function (ops) {\n var userEvents = [];\n for (var i in ops) {\n var op = ops[i];\n if (op.struct === 'Insert') {\n var pos = undefined;\n // we check op.left only!,\n // because op.right might not be defined when this is called\n if (op.left === null) {\n pos = 0;\n } else {\n var sid = JSON.stringify(op.left);\n pos = _this.idArray.indexOf(sid) + 1;\n if (pos <= 0) {\n throw new Error('Unexpected operation!');\n }\n }\n _this.idArray.splice(pos, 0, JSON.stringify(op.id));\n _this.valArray.splice(pos, 0, op.content);\n userEvents.push({\n type: 'insert',\n object: _this,\n index: pos,\n value: op.content,\n length: 1\n });\n } else if (op.struct === 'Delete') {\n var pos = _this.idArray.indexOf(JSON.stringify(op.target));\n if (pos >= 0) {\n var val = _this.valArray[pos];\n _this.idArray.splice(pos, 1);\n _this.valArray.splice(pos, 1);\n userEvents.push({\n type: 'delete',\n object: _this,\n index: pos,\n value: val,\n length: 1\n });\n }\n } else {\n throw new Error('Unexpected struct!');\n }\n }\n _this.eventHandler.callEventListeners(userEvents);\n });\n }\n\n _createClass(YArray, [{\n key: 'get',\n value: function get(pos) {\n if (pos == null || typeof pos !== 'number') {\n throw new Error('pos must be a number!');\n }\n return this.valArray[pos];\n }\n }, {\n key: 'toArray',\n value: function toArray() {\n return this.valArray.slice();\n }\n }, {\n key: 'push',\n value: function push(contents) {\n this.insert(this.idArray.length, contents);\n }\n }, {\n key: 'insert',\n value: function insert(pos, contents) {\n if (typeof pos !== 'number') {\n throw new Error('pos must be a number!');\n }\n if (!(contents instanceof Array)) {\n throw new Error('contents must be an Array of objects!');\n }\n if (contents.length === 0) {\n return;\n }\n if (pos > this.idArray.length || pos < 0) {\n throw new Error('This position exceeds the range of the array!');\n }\n var mostLeft = pos === 0 ? null : JSON.parse(this.idArray[pos - 1]);\n\n var ops = [];\n var prevId = mostLeft;\n for (var i = 0; i < contents.length; i++) {\n var op = {\n left: prevId,\n origin: prevId,\n // right: mostRight,\n // NOTE: I intentionally do not define right here, because it could be deleted\n // at the time of creating this operation, and is therefore not defined in idArray\n parent: this._model,\n content: contents[i],\n struct: 'Insert',\n id: this.os.getNextOpId()\n };\n ops.push(op);\n prevId = op.id;\n }\n var eventHandler = this.eventHandler;\n eventHandler.awaitAndPrematurelyCall(ops);\n this.os.requestTransaction(regeneratorRuntime.mark(function _callee() {\n var mostRight, j;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(mostLeft != null)) {\n _context.next = 5;\n break;\n }\n\n return _context.delegateYield(this.getOperation(mostLeft), 't0', 2);\n\n case 2:\n mostRight = _context.t0.right;\n _context.next = 7;\n break;\n\n case 5:\n return _context.delegateYield(this.getOperation(ops[0].parent), 't1', 6);\n\n case 6:\n mostRight = _context.t1.start;\n\n case 7:\n for (j in ops) {\n ops[j].right = mostRight;\n }\n return _context.delegateYield(this.applyCreatedOperations(ops), 't2', 9);\n\n case 9:\n eventHandler.awaitedInserts(ops.length);\n\n case 10:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n }\n }, {\n key: 'delete',\n value: function _delete(pos, length) {\n if (length == null) {\n length = 1;\n }\n if (typeof length !== 'number') {\n throw new Error('pos must be a number!');\n }\n if (typeof pos !== 'number') {\n throw new Error('pos must be a number!');\n }\n if (pos + length > this.idArray.length || pos < 0 || length < 0) {\n throw new Error('The deletion range exceeds the range of the array!');\n }\n if (length === 0) {\n return;\n }\n var eventHandler = this.eventHandler;\n var newLeft = pos > 0 ? JSON.parse(this.idArray[pos - 1]) : null;\n var dels = [];\n for (var i = 0; i < length; i++) {\n dels.push({\n target: JSON.parse(this.idArray[pos + i]),\n struct: 'Delete'\n });\n }\n eventHandler.awaitAndPrematurelyCall(dels);\n this.os.requestTransaction(regeneratorRuntime.mark(function _callee2() {\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.delegateYield(this.applyCreatedOperations(dels), 't0', 1);\n\n case 1:\n eventHandler.awaitedDeletes(dels.length, newLeft);\n\n case 2:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n }\n }, {\n key: 'observe',\n value: function observe(f) {\n this.eventHandler.addEventListener(f);\n }\n }, {\n key: '_changed',\n value: regeneratorRuntime.mark(function _changed(transaction, op) {\n var l, left;\n return regeneratorRuntime.wrap(function _changed$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (op.deleted) {\n _context3.next = 13;\n break;\n }\n\n if (!(op.struct === 'Insert')) {\n _context3.next = 12;\n break;\n }\n\n l = op.left;\n\n case 3:\n if (!(l != null)) {\n _context3.next = 11;\n break;\n }\n\n return _context3.delegateYield(transaction.getOperation(l), 't0', 5);\n\n case 5:\n left = _context3.t0;\n\n if (left.deleted) {\n _context3.next = 8;\n break;\n }\n\n return _context3.abrupt('break', 11);\n\n case 8:\n l = left.left;\n _context3.next = 3;\n break;\n\n case 11:\n op.left = l;\n\n case 12:\n this.eventHandler.receivedOp(op);\n\n case 13:\n case 'end':\n return _context3.stop();\n }\n }\n }, _changed, this);\n })\n }, {\n key: 'length',\n get: function get() {\n return this.idArray.length;\n }\n }]);\n\n return YArray;\n }();\n\n Y.extend('Array', new Y.utils.CustomType({\n name: 'Array', // TODO: copy the name when extending the object.. (see one line above)\n class: YArray,\n struct: 'List',\n initType: regeneratorRuntime.mark(function YArrayInitializer(os, model) {\n var valArray, idArray;\n return regeneratorRuntime.wrap(function YArrayInitializer$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n valArray = [];\n return _context4.delegateYield(Y.Struct.List.map.call(this, model, function (c) {\n valArray.push(c.content);\n return JSON.stringify(c.id);\n }), 't0', 2);\n\n case 2:\n idArray = _context4.t0;\n return _context4.abrupt('return', new YArray(os, model.id, idArray, valArray));\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, YArrayInitializer, this);\n })\n }));\n}\n\nmodule.exports = extend;\nif (typeof Y !== 'undefined') {\n extend(Y);\n}\n\n},{}]},{},[1])\n\n"],"sourceRoot":"/source/"} |