fixed text binding (enter, utf8 chars..)

This commit is contained in:
DadaMonad 2015-02-17 10:26:32 +00:00
parent 670854e9d8
commit f609c22be8
12 changed files with 128 additions and 81 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "yjs", "name": "yjs",
"version": "0.4.0", "version": "0.4.1",
"homepage": "https://github.com/DadaMonad/yjs", "homepage": "https://github.com/DadaMonad/yjs",
"authors": [ "authors": [
"Kevin Jahns <kevin.jahns@rwth-aachen.de>" "Kevin Jahns <kevin.jahns@rwth-aachen.de>"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -137,7 +137,7 @@ module.exports = function(HB) {
while (true) { while (true) {
if (o instanceof types.Delimiter && (o.prev_cl != null)) { if (o instanceof types.Delimiter && (o.prev_cl != null)) {
o = o.prev_cl; o = o.prev_cl;
while (o.isDeleted() || !(o instanceof types.Delimiter)) { while (o.isDeleted() && (o.prev_cl != null)) {
o = o.prev_cl; o = o.prev_cl;
} }
break; break;

View File

@ -71,7 +71,7 @@ module.exports = function(HB) {
if (((_ref = this.content) != null ? _ref.getUid : void 0) != null) { if (((_ref = this.content) != null ? _ref.getUid : void 0) != null) {
json['content'] = this.content.getUid(); json['content'] = this.content.getUid();
} else { } else {
json['content'] = this.content; json['content'] = JSON.stringify(this.content);
} }
return json; return json;
}; };
@ -82,6 +82,9 @@ module.exports = function(HB) {
types.TextInsert.parse = function(json) { types.TextInsert.parse = function(json) {
var content, next, origin, parent, prev, uid; var content, next, origin, parent, prev, uid;
content = json['content'], uid = json['uid'], prev = json['prev'], next = json['next'], origin = json['origin'], parent = json['parent']; content = json['content'], uid = json['uid'], prev = json['prev'], next = json['next'], origin = json['origin'], parent = json['parent'];
if (typeof content === "string") {
content = JSON.parse(content);
}
return new types.TextInsert(content, uid, prev, next, origin, parent); return new types.TextInsert(content, uid, prev, next, origin, parent);
}; };
types.Array = (function(_super) { types.Array = (function(_super) {
@ -362,14 +365,20 @@ module.exports = function(HB) {
} }
}; };
writeContent = function(content) { writeContent = function(content) {
var append; var c, content_array, i, _j, _len1, _results;
append = ""; content_array = content.replace(new RegExp("\n", 'g'), " ").split(" ");
if (content[content.length - 1] === " ") { textfield.innerText = "";
content = content.slice(0, content.length - 1); _results = [];
append = '&nbsp;'; for (i = _j = 0, _len1 = content_array.length; _j < _len1; i = ++_j) {
c = content_array[i];
textfield.innerText += c;
if (i !== content_array.length - 1) {
_results.push(textfield.innerHTML += '&nbsp;');
} else {
_results.push(void 0);
}
} }
textfield.textContent = content; return _results;
return textfield.innerHTML += append;
}; };
} }
writeContent(this.val()); writeContent(this.val());
@ -420,11 +429,11 @@ module.exports = function(HB) {
} }
creator_token = true; creator_token = true;
char = null; char = null;
if (event.key != null) { if (event.keyCode === 13) {
char = '\n';
} else if (event.key != null) {
if (event.charCode === 32) { if (event.charCode === 32) {
char = " "; char = " ";
} else if (event.keyCode === 13) {
char = '\n';
} else { } else {
char = event.key; char = event.key;
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -131,7 +131,7 @@ module.exports = (HB)->
# for the current array. Therefore we reach a Delimiter. # for the current array. Therefore we reach a Delimiter.
# Then, we'll just return the last character. # Then, we'll just return the last character.
o = o.prev_cl o = o.prev_cl
while o.isDeleted() or not (o instanceof types.Delimiter) while o.isDeleted() and o.prev_cl?
o = o.prev_cl o = o.prev_cl
break break
if position <= 0 and not o.isDeleted() if position <= 0 and not o.isDeleted()

View File

@ -75,7 +75,7 @@ module.exports = (HB)->
if @content?.getUid? if @content?.getUid?
json['content'] = @content.getUid() json['content'] = @content.getUid()
else else
json['content'] = @content json['content'] = JSON.stringify @content
json json
types.TextInsert.parse = (json)-> types.TextInsert.parse = (json)->
@ -87,6 +87,8 @@ module.exports = (HB)->
'origin' : origin 'origin' : origin
'parent' : parent 'parent' : parent
} = json } = json
if typeof content is "string"
content = JSON.parse(content)
new types.TextInsert content, uid, prev, next, origin, parent new types.TextInsert content, uid, prev, next, origin, parent
@ -348,12 +350,12 @@ module.exports = (HB)->
s.removeAllRanges() s.removeAllRanges()
s.addRange(r) s.addRange(r)
writeContent = (content)-> writeContent = (content)->
append = "" content_array = content.replace(new RegExp("\n",'g')," ").split(" ")
if content[content.length - 1] is " " textfield.innerText = ""
content = content.slice(0,content.length-1) for c, i in content_array
append = '&nbsp;' textfield.innerText += c
textfield.textContent = content if i isnt content_array.length-1
textfield.innerHTML += append textfield.innerHTML += '&nbsp;'
writeContent this.val() writeContent this.val()
@ -390,11 +392,11 @@ module.exports = (HB)->
return true return true
creator_token = true creator_token = true
char = null char = null
if event.key? if event.keyCode is 13
char = '\n'
else if event.key?
if event.charCode is 32 if event.charCode is 32
char = " " char = " "
else if event.keyCode is 13
char = '\n'
else else
char = event.key char = event.key
else else

View File

@ -1,6 +1,6 @@
{ {
"name": "yjs", "name": "yjs",
"version": "0.4.0", "version": "0.4.1",
"description": "A Framework that enables Real-Time Collaboration on arbitrary data structures.", "description": "A Framework that enables Real-Time Collaboration on arbitrary data structures.",
"main": "./build/node/y.js", "main": "./build/node/y.js",
"scripts": { "scripts": {

File diff suppressed because one or more lines are too long

4
y.js

File diff suppressed because one or more lines are too long