1 line
32 KiB
Plaintext
1 line
32 KiB
Plaintext
{"version":3,"sources":["../yjs/node_modules/browser-pack/_prelude.js","src/Text.js","y-text.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","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","prototype","Object","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","extend","Y","requestModules","then","YText","_Y$Array$class","os","_model","idArray","valArray","this","_this","getPrototypeOf","textfields","_createClass","key","join","pos","content","_get","split","textfield","domRoot","window","getSelection","creatorToken","word","toString","push","createRange","writeRange","writeContent","selectionStart","setSelectionRange","fix","left","right","selectionEnd","range","clength","textContent","Math","min","anchorOffset","focusOffset","editedElement","focusNode","childNodes","isReal","textnode","max","document","setStart","setEnd","removeAllRanges","addRange","contentArray","replace","RegExp","innerText","c","innerHTML","observe","events","event","oPos","type","index","cursor","onkeypress","is_deleted","char","keyCode","charCode","String","fromCharCode","diff","abs","insert","preventDefault","onpaste","oncut","onkeydown","ctrlKey","val","newPos","delLength","Array","utils","CustomType","name","class","struct","initType","regeneratorRuntime","mark","YTextInitializer","model","wrap","_context","prev","next","delegateYield","Struct","List","map","JSON","stringify","id","t0","abrupt","stop","defineProperties","target","props","descriptor","defineProperty","protoProps","staticProps","get","object","property","receiver","Function","desc","getOwnPropertyDescriptor","undefined","parent","getter"],"mappings":"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","file":"y-text.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 Y.requestModules(['Array']).then(function () {\r\n class YText extends Y.Array['class'] {\r\n constructor (os, _model, idArray, valArray) {\r\n super(os, _model, idArray, valArray)\r\n this.textfields = []\r\n }\r\n toString () {\r\n return this.valArray.join('')\r\n }\r\n insert (pos, content) {\r\n super.insert(pos, content.split(''))\r\n }\r\n bind (textfield, domRoot) {\r\n domRoot = domRoot || window; // eslint-disable-line\r\n if (domRoot.getSelection == null) {\r\n domRoot = window;// eslint-disable-line\r\n }\r\n\r\n // don't duplicate!\r\n for (var t in this.textfields) {\r\n if (this.textfields[t] === textfield) {\r\n return\r\n }\r\n }\r\n var creatorToken = false\r\n\r\n var word = this\r\n textfield.value = this.toString()\r\n this.textfields.push(textfield)\r\n var createRange, writeRange, writeContent\r\n if (textfield.selectionStart != null && textfield.setSelectionRange != null) {\r\n createRange = function (fix) {\r\n var left = textfield.selectionStart\r\n var right = textfield.selectionEnd\r\n if (fix != null) {\r\n left = fix(left)\r\n right = fix(right)\r\n }\r\n return {\r\n left: left,\r\n right: right\r\n }\r\n }\r\n writeRange = function (range) {\r\n writeContent(word.toString())\r\n textfield.setSelectionRange(range.left, range.right)\r\n }\r\n writeContent = function (content) {\r\n textfield.value = content\r\n }\r\n } else {\r\n createRange = function (fix) {\r\n var range = {}\r\n var s = domRoot.getSelection()\r\n var clength = textfield.textContent.length\r\n range.left = Math.min(s.anchorOffset, clength)\r\n range.right = Math.min(s.focusOffset, clength)\r\n if (fix != null) {\r\n range.left = fix(range.left)\r\n range.right = fix(range.right)\r\n }\r\n var editedElement = s.focusNode\r\n if (editedElement === textfield || editedElement === textfield.childNodes[0]) {\r\n range.isReal = true\r\n } else {\r\n range.isReal = false\r\n }\r\n return range\r\n }\r\n\r\n writeRange = function (range) {\r\n writeContent(word.toString())\r\n var textnode = textfield.childNodes[0]\r\n if (range.isReal && textnode != null) {\r\n if (range.left < 0) {\r\n range.left = 0\r\n }\r\n range.right = Math.max(range.left, range.right)\r\n if (range.right > textnode.length) {\r\n range.right = textnode.length\r\n }\r\n range.left = Math.min(range.left, range.right)\r\n var r = document.createRange(); // eslint-disable-line\r\n r.setStart(textnode, range.left)\r\n r.setEnd(textnode, range.right)\r\n var s = window.getSelection(); // eslint-disable-line\r\n s.removeAllRanges()\r\n s.addRange(r)\r\n }\r\n }\r\n writeContent = function (content) {\r\n var contentArray = content.replace(new RegExp('\\n', 'g'), ' ').split(' ');// eslint-disable-line\r\n textfield.innerText = ''\r\n for (var i in contentArray) {\r\n var c = contentArray[i]\r\n textfield.innerText += c\r\n if (i !== contentArray.length - 1) {\r\n textfield.innerHTML += ' '\r\n }\r\n }\r\n }\r\n }\r\n writeContent(this.toString())\r\n\r\n this.observe(function (events) {\r\n for (var e in events) {\r\n var event = events[e]\r\n if (!creatorToken) {\r\n var oPos, fix\r\n if (event.type === 'insert') {\r\n oPos = event.index\r\n fix = function (cursor) {// eslint-disable-line\r\n if (cursor <= oPos) {\r\n return cursor\r\n } else {\r\n cursor += 1\r\n return cursor\r\n }\r\n }\r\n var r = createRange(fix)\r\n writeRange(r)\r\n } else if (event.type === 'delete') {\r\n oPos = event.index\r\n fix = function (cursor) {// eslint-disable-line\r\n if (cursor < oPos) {\r\n return cursor\r\n } else {\r\n cursor -= 1\r\n return cursor\r\n }\r\n }\r\n r = createRange(fix)\r\n writeRange(r)\r\n }\r\n }\r\n }\r\n })\r\n // consume all text-insert changes.\r\n textfield.onkeypress = function (event) {\r\n if (word.is_deleted) {\r\n // if word is deleted, do not do anything ever again\r\n textfield.onkeypress = null\r\n return true\r\n }\r\n creatorToken = true\r\n var char\r\n if (event.keyCode === 13) {\r\n char = '\\n'\r\n } else if (event.key != null) {\r\n if (event.charCode === 32) {\r\n char = ' '\r\n } else {\r\n char = event.key\r\n }\r\n } else {\r\n char = window.String.fromCharCode(event.keyCode); // eslint-disable-line\r\n }\r\n if (char.length > 1) {\r\n return true\r\n } else if (char.length > 0) {\r\n var r = createRange()\r\n var pos = Math.min(r.left, r.right, word.length)\r\n var diff = Math.abs(r.right - r.left)\r\n word.delete(pos, diff)\r\n word.insert(pos, char)\r\n r.left = pos + char.length\r\n r.right = r.left\r\n writeRange(r)\r\n }\r\n event.preventDefault()\r\n creatorToken = false\r\n return false\r\n }\r\n textfield.onpaste = function (event) {\r\n if (word.is_deleted) {\r\n // if word is deleted, do not do anything ever again\r\n textfield.onpaste = null\r\n return true\r\n }\r\n event.preventDefault()\r\n }\r\n textfield.oncut = function (event) {\r\n if (word.is_deleted) {\r\n // if word is deleted, do not do anything ever again\r\n textfield.oncut = null\r\n return true\r\n }\r\n event.preventDefault()\r\n }\r\n //\r\n // consume deletes. Note that\r\n // chrome: won't consume deletions on keypress event.\r\n // keyCode is deprecated. BUT: I don't see another way.\r\n // since event.key is not implemented in the current version of chrome.\r\n // Every browser supports keyCode. Let's stick with it for now..\r\n //\r\n textfield.onkeydown = function (event) {\r\n creatorToken = true\r\n if (word.is_deleted) {\r\n // if word is deleted, do not do anything ever again\r\n textfield.onkeydown = null\r\n return true\r\n }\r\n var r = createRange()\r\n var pos = Math.min(r.left, r.right, word.toString().length)\r\n var diff = Math.abs(r.left - r.right)\r\n if (event.keyCode != null && event.keyCode === 8) { // Backspace\r\n if (diff > 0) {\r\n word.delete(pos, diff)\r\n r.left = pos\r\n r.right = pos\r\n writeRange(r)\r\n } else {\r\n if (event.ctrlKey != null && event.ctrlKey) {\r\n var val = word.toString()\r\n var newPos = pos\r\n var delLength = 0\r\n if (pos > 0) {\r\n newPos--\r\n delLength++\r\n }\r\n while (newPos > 0 && val[newPos] !== ' ' && val[newPos] !== '\\n') {\r\n newPos--\r\n delLength++\r\n }\r\n word.delete(newPos, pos - newPos)\r\n r.left = newPos\r\n r.right = newPos\r\n writeRange(r)\r\n } else {\r\n if (pos > 0) {\r\n word.delete(pos - 1, 1)\r\n r.left = pos - 1\r\n r.right = pos - 1\r\n writeRange(r)\r\n }\r\n }\r\n }\r\n event.preventDefault()\r\n creatorToken = false\r\n return false\r\n } else if (event.keyCode != null && event.keyCode === 46) { // Delete\r\n if (diff > 0) {\r\n word.delete(pos, diff)\r\n r.left = pos\r\n r.right = pos\r\n writeRange(r)\r\n } else {\r\n word.delete(pos, 1)\r\n r.left = pos\r\n r.right = pos\r\n writeRange(r)\r\n }\r\n event.preventDefault()\r\n creatorToken = false\r\n return false\r\n } else {\r\n creatorToken = false\r\n return true\r\n }\r\n }\r\n }\r\n }\r\n Y.extend('Text', new Y.utils.CustomType({\r\n name: 'Text',\r\n class: YText,\r\n struct: 'List',\r\n initType: function * YTextInitializer (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 YText(os, model.id, idArray, valArray)\r\n }\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\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction extend(Y) {\n Y.requestModules(['Array']).then(function () {\n var YText = function (_Y$Array$class) {\n _inherits(YText, _Y$Array$class);\n\n function YText(os, _model, idArray, valArray) {\n _classCallCheck(this, YText);\n\n var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(YText).call(this, os, _model, idArray, valArray));\n\n _this.textfields = [];\n return _this;\n }\n\n _createClass(YText, [{\n key: 'toString',\n value: function toString() {\n return this.valArray.join('');\n }\n }, {\n key: 'insert',\n value: function insert(pos, content) {\n _get(Object.getPrototypeOf(YText.prototype), 'insert', this).call(this, pos, content.split(''));\n }\n }, {\n key: 'bind',\n value: function bind(textfield, domRoot) {\n domRoot = domRoot || window; // eslint-disable-line\n if (domRoot.getSelection == null) {\n domRoot = window; // eslint-disable-line\n }\n\n // don't duplicate!\n for (var t in this.textfields) {\n if (this.textfields[t] === textfield) {\n return;\n }\n }\n var creatorToken = false;\n\n var word = this;\n textfield.value = this.toString();\n this.textfields.push(textfield);\n var createRange, writeRange, writeContent;\n if (textfield.selectionStart != null && textfield.setSelectionRange != null) {\n createRange = function createRange(fix) {\n var left = textfield.selectionStart;\n var right = textfield.selectionEnd;\n if (fix != null) {\n left = fix(left);\n right = fix(right);\n }\n return {\n left: left,\n right: right\n };\n };\n writeRange = function writeRange(range) {\n writeContent(word.toString());\n textfield.setSelectionRange(range.left, range.right);\n };\n writeContent = function writeContent(content) {\n textfield.value = content;\n };\n } else {\n createRange = function createRange(fix) {\n var range = {};\n var s = domRoot.getSelection();\n var clength = textfield.textContent.length;\n range.left = Math.min(s.anchorOffset, clength);\n range.right = Math.min(s.focusOffset, clength);\n if (fix != null) {\n range.left = fix(range.left);\n range.right = fix(range.right);\n }\n var editedElement = s.focusNode;\n if (editedElement === textfield || editedElement === textfield.childNodes[0]) {\n range.isReal = true;\n } else {\n range.isReal = false;\n }\n return range;\n };\n\n writeRange = function writeRange(range) {\n writeContent(word.toString());\n var textnode = textfield.childNodes[0];\n if (range.isReal && textnode != null) {\n if (range.left < 0) {\n range.left = 0;\n }\n range.right = Math.max(range.left, range.right);\n if (range.right > textnode.length) {\n range.right = textnode.length;\n }\n range.left = Math.min(range.left, range.right);\n var r = document.createRange(); // eslint-disable-line\n r.setStart(textnode, range.left);\n r.setEnd(textnode, range.right);\n var s = window.getSelection(); // eslint-disable-line\n s.removeAllRanges();\n s.addRange(r);\n }\n };\n writeContent = function writeContent(content) {\n var contentArray = content.replace(new RegExp('\\n', 'g'), ' ').split(' '); // eslint-disable-line\n textfield.innerText = '';\n for (var i in contentArray) {\n var c = contentArray[i];\n textfield.innerText += c;\n if (i !== contentArray.length - 1) {\n textfield.innerHTML += ' ';\n }\n }\n };\n }\n writeContent(this.toString());\n\n this.observe(function (events) {\n for (var e in events) {\n var event = events[e];\n if (!creatorToken) {\n var oPos, fix;\n if (event.type === 'insert') {\n oPos = event.index;\n fix = function fix(cursor) {\n // eslint-disable-line\n if (cursor <= oPos) {\n return cursor;\n } else {\n cursor += 1;\n return cursor;\n }\n };\n var r = createRange(fix);\n writeRange(r);\n } else if (event.type === 'delete') {\n oPos = event.index;\n fix = function fix(cursor) {\n // eslint-disable-line\n if (cursor < oPos) {\n return cursor;\n } else {\n cursor -= 1;\n return cursor;\n }\n };\n r = createRange(fix);\n writeRange(r);\n }\n }\n }\n });\n // consume all text-insert changes.\n textfield.onkeypress = function (event) {\n if (word.is_deleted) {\n // if word is deleted, do not do anything ever again\n textfield.onkeypress = null;\n return true;\n }\n creatorToken = true;\n var char;\n if (event.keyCode === 13) {\n char = '\\n';\n } else if (event.key != null) {\n if (event.charCode === 32) {\n char = ' ';\n } else {\n char = event.key;\n }\n } else {\n char = window.String.fromCharCode(event.keyCode); // eslint-disable-line\n }\n if (char.length > 1) {\n return true;\n } else if (char.length > 0) {\n var r = createRange();\n var pos = Math.min(r.left, r.right, word.length);\n var diff = Math.abs(r.right - r.left);\n word.delete(pos, diff);\n word.insert(pos, char);\n r.left = pos + char.length;\n r.right = r.left;\n writeRange(r);\n }\n event.preventDefault();\n creatorToken = false;\n return false;\n };\n textfield.onpaste = function (event) {\n if (word.is_deleted) {\n // if word is deleted, do not do anything ever again\n textfield.onpaste = null;\n return true;\n }\n event.preventDefault();\n };\n textfield.oncut = function (event) {\n if (word.is_deleted) {\n // if word is deleted, do not do anything ever again\n textfield.oncut = null;\n return true;\n }\n event.preventDefault();\n };\n //\n // consume deletes. Note that\n // chrome: won't consume deletions on keypress event.\n // keyCode is deprecated. BUT: I don't see another way.\n // since event.key is not implemented in the current version of chrome.\n // Every browser supports keyCode. Let's stick with it for now..\n //\n textfield.onkeydown = function (event) {\n creatorToken = true;\n if (word.is_deleted) {\n // if word is deleted, do not do anything ever again\n textfield.onkeydown = null;\n return true;\n }\n var r = createRange();\n var pos = Math.min(r.left, r.right, word.toString().length);\n var diff = Math.abs(r.left - r.right);\n if (event.keyCode != null && event.keyCode === 8) {\n // Backspace\n if (diff > 0) {\n word.delete(pos, diff);\n r.left = pos;\n r.right = pos;\n writeRange(r);\n } else {\n if (event.ctrlKey != null && event.ctrlKey) {\n var val = word.toString();\n var newPos = pos;\n var delLength = 0;\n if (pos > 0) {\n newPos--;\n delLength++;\n }\n while (newPos > 0 && val[newPos] !== ' ' && val[newPos] !== '\\n') {\n newPos--;\n delLength++;\n }\n word.delete(newPos, pos - newPos);\n r.left = newPos;\n r.right = newPos;\n writeRange(r);\n } else {\n if (pos > 0) {\n word.delete(pos - 1, 1);\n r.left = pos - 1;\n r.right = pos - 1;\n writeRange(r);\n }\n }\n }\n event.preventDefault();\n creatorToken = false;\n return false;\n } else if (event.keyCode != null && event.keyCode === 46) {\n // Delete\n if (diff > 0) {\n word.delete(pos, diff);\n r.left = pos;\n r.right = pos;\n writeRange(r);\n } else {\n word.delete(pos, 1);\n r.left = pos;\n r.right = pos;\n writeRange(r);\n }\n event.preventDefault();\n creatorToken = false;\n return false;\n } else {\n creatorToken = false;\n return true;\n }\n };\n }\n }]);\n\n return YText;\n }(Y.Array['class']);\n\n Y.extend('Text', new Y.utils.CustomType({\n name: 'Text',\n class: YText,\n struct: 'List',\n initType: regeneratorRuntime.mark(function YTextInitializer(os, model) {\n var valArray, idArray;\n return regeneratorRuntime.wrap(function YTextInitializer$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n valArray = [];\n return _context.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 = _context.t0;\n return _context.abrupt('return', new YText(os, model.id, idArray, valArray));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, YTextInitializer, this);\n })\n }));\n });\n}\n\nmodule.exports = extend;\nif (typeof Y !== 'undefined') {\n extend(Y);\n}\n\n},{}]},{},[1])\n\n"],"sourceRoot":"/source/"} |