pad

minimal etherpad alternative  https://pad.ce9e.org
git clone https://git.ce9e.org/pad.git

commit
cab2ad8df2a3b5d54d337af6812ffd60b2675ff8
parent
347ad92c7108afa626ea1827b30e85e6b80e4949
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2020-05-12 06:49
roll back own changes before applying remote

Diffstat

M static/pad.js 20 +++++++++++++++++---

1 files changed, 17 insertions, 3 deletions


diff --git a/static/pad.js b/static/pad.js

@@ -38,11 +38,25 @@ var sendChanges = utils.throttled(function() {
   38    38 }, 500);
   39    39 
   40    40 var applyChanges = function(changes) {
   41    -1 	var text = el.value;
   -1    41 	var change;
   -1    42 
   42    43 	var selection = [el.selectionStart, el.selectionEnd, el.selectionDirection];
   43    -1 	while (changes.length) {
   44    -1 		text = context.apply(text, changes.shift(), selection);
   -1    44 	var text = el.value;
   -1    45 	var myChanges = [].concat(stagedChanges, localChanges);
   -1    46 
   -1    47 	for (var i = myChanges.length - 1; i >= 0; i--) {
   -1    48 		change = myChanges[i];
   -1    49 		text = context.apply(text, [change[0], change[1], change[3], change[2]], selection);
   45    50 	}
   -1    51 
   -1    52 	for (change of changes) {
   -1    53 		text = context.apply(text, change, selection);
   -1    54 	}
   -1    55 
   -1    56 	for (change of myChanges) {
   -1    57 		text = context.apply(text, change, selection);
   -1    58 	}
   -1    59 
   46    60 	if (text !== el.value) {
   47    61 		var scrollTop = el.scrollTop;
   48    62 		el.value = text;