{"version":3,"sources":["../yjs/node_modules/browser-pack/_prelude.js","src/Text.js"],"names":[],"mappings":"AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"y-text.es6","sourceRoot":"/source/","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 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"]}