easy-richtextarea 4.0.34 → 4.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/example.js +93 -1563
  2. package/lib/browser.js +1 -37
  3. package/lib/main.js +4 -45
  4. package/lib/mixins/event.js +11 -10
  5. package/lib/richTextarea.js +31 -156
  6. package/lib/selection.js +7 -146
  7. package/package.json +1 -3
  8. package/src/browser.js +0 -11
  9. package/src/main.js +0 -12
  10. package/src/mixins/event.js +3 -4
  11. package/src/richTextarea.js +22 -239
  12. package/src/selection.js +4 -154
  13. package/lib/constants.js +0 -22
  14. package/lib/contentCompare.js +0 -34
  15. package/lib/eventTypes.js +0 -49
  16. package/lib/keyCodes.js +0 -13
  17. package/lib/operation/delete.js +0 -290
  18. package/lib/operation/empty.js +0 -116
  19. package/lib/operation/insert.js +0 -245
  20. package/lib/operations/fromJSON.js +0 -40
  21. package/lib/operations/generate.js +0 -42
  22. package/lib/operations/toJSON.js +0 -17
  23. package/lib/transform/content.js +0 -19
  24. package/lib/transform/operations.js +0 -31
  25. package/lib/transform/selection.js +0 -19
  26. package/lib/types.js +0 -34
  27. package/lib/undoBuffer.js +0 -145
  28. package/src/constants.js +0 -4
  29. package/src/contentCompare.js +0 -34
  30. package/src/eventTypes.js +0 -15
  31. package/src/keyCodes.js +0 -3
  32. package/src/operation/delete.js +0 -285
  33. package/src/operation/empty.js +0 -76
  34. package/src/operation/insert.js +0 -221
  35. package/src/operations/fromJSON.js +0 -34
  36. package/src/operations/generate.js +0 -46
  37. package/src/operations/toJSON.js +0 -5
  38. package/src/transform/content.js +0 -11
  39. package/src/transform/operations.js +0 -57
  40. package/src/transform/selection.js +0 -11
  41. package/src/types.js +0 -11
  42. package/src/undoBuffer.js +0 -119
  43. package/test/content/transform.js +0 -57
  44. package/test/helpers.js +0 -91
  45. package/test/operation/delete.js +0 -390
  46. package/test/operation/empty.js +0 -101
  47. package/test/operation/insert.js +0 -306
  48. package/test/operations/generate.js +0 -78
  49. package/test/operations/transform.js +0 -69
package/lib/selection.js CHANGED
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "default", {
8
8
  return Selection;
9
9
  }
10
10
  });
11
- var _selection = /*#__PURE__*/ _interopRequireDefault(require("./transform/selection"));
12
11
  function _classCallCheck(instance, Constructor) {
13
12
  if (!(instance instanceof Constructor)) {
14
13
  throw new TypeError("Cannot call a class as a function");
@@ -28,11 +27,6 @@ function _createClass(Constructor, protoProps, staticProps) {
28
27
  if (staticProps) _defineProperties(Constructor, staticProps);
29
28
  return Constructor;
30
29
  }
31
- function _interopRequireDefault(obj) {
32
- return obj && obj.__esModule ? obj : {
33
- default: obj
34
- };
35
- }
36
30
  var Selection = /*#__PURE__*/ function() {
37
31
  function Selection(startPosition, endPosition) {
38
32
  _classCallCheck(this, Selection);
@@ -53,31 +47,15 @@ var Selection = /*#__PURE__*/ function() {
53
47
  }
54
48
  },
55
49
  {
56
- key: "isEmpty",
57
- value: function isEmpty() {
58
- var empty = this.startPosition === this.endPosition;
59
- return empty;
60
- }
61
- },
62
- {
63
- key: "getLength",
64
- value: function getLength() {
65
- var length = this.endPosition - this.startPosition;
66
- return length;
50
+ key: "setStartPosition",
51
+ value: function setStartPosition(startPosition) {
52
+ this.startPosition = startPosition;
67
53
  }
68
54
  },
69
55
  {
70
- key: "compareTo",
71
- value: function compareTo(selection) {
72
- var result = 0;
73
- var startPosition = selection.getStartPosition();
74
- if (this.startPosition > startPosition) {
75
- result = +1;
76
- }
77
- if (this.startPosition < startPosition) {
78
- result = -1;
79
- }
80
- return result;
56
+ key: "setEndPosition",
57
+ value: function setEndPosition(endPosition) {
58
+ this.endPosition = endPosition;
81
59
  }
82
60
  },
83
61
  {
@@ -90,110 +68,8 @@ var Selection = /*#__PURE__*/ function() {
90
68
  }
91
69
  return equalTo;
92
70
  }
93
- },
94
- {
95
- key: "isOverlappedBy",
96
- value: function isOverlappedBy(selection) {
97
- var startPosition = selection.getStartPosition(), endPosition = selection.getEndPosition(), overlappedBy = startPosition <= this.endPosition && endPosition >= this.startPosition;
98
- return overlappedBy;
99
- }
100
- },
101
- {
102
- key: "setStartPosition",
103
- value: function setStartPosition(startPosition) {
104
- this.startPosition = startPosition;
105
- }
106
- },
107
- {
108
- key: "setEndPosition",
109
- value: function setEndPosition(endPosition) {
110
- this.endPosition = endPosition;
111
- }
112
- },
113
- {
114
- key: "startPositionShifted",
115
- value: function startPositionShifted(startOffset) {
116
- var startPosition = this.startPosition + startOffset, endPosition = this.endPosition, selection = new Selection(startPosition, endPosition);
117
- return selection;
118
- }
119
- },
120
- {
121
- key: "endPositionShifted",
122
- value: function endPositionShifted(endOffset) {
123
- var startPosition = this.startPosition, endPosition = this.endPosition + endOffset, selection = new Selection(startPosition, endPosition);
124
- return selection;
125
- }
126
- },
127
- {
128
- key: "emptiedToStart",
129
- value: function emptiedToStart() {
130
- var startPosition = this.startPosition, endPosition = startPosition, selection = new Selection(startPosition, endPosition);
131
- return selection;
132
- }
133
- },
134
- {
135
- key: "emptiedToEnd",
136
- value: function emptiedToEnd() {
137
- var endPosition = this.endPosition, startPosition = endPosition, selection = new Selection(startPosition, endPosition);
138
- return selection;
139
- }
140
- },
141
- {
142
- key: "transformed",
143
- value: function transformed(operations) {
144
- var selection = this, transformedSelection = (0, _selection.default)(selection, operations);
145
- return transformedSelection;
146
- }
147
- },
148
- {
149
- key: "mergedWith",
150
- value: function mergedWith(selection) {
151
- var startPosition = selection.getStartPosition(), endPosition = selection.getEndPosition();
152
- startPosition = Math.min(startPosition, this.startPosition); ///
153
- endPosition = Math.max(endPosition, this.endPosition); ///
154
- selection = new Selection(startPosition, endPosition); ///
155
- return selection;
156
- }
157
- },
158
- {
159
- key: "emptied",
160
- value: function emptied() {
161
- var startPosition = this.startPosition, endPosition = startPosition, selection = new Selection(startPosition, endPosition);
162
- return selection;
163
- }
164
- },
165
- {
166
- key: "shifted",
167
- value: function shifted(offset) {
168
- var startPosition = this.startPosition + offset, endPosition = this.endPosition + offset, selection = new Selection(startPosition, endPosition);
169
- return selection;
170
- }
171
- },
172
- {
173
- key: "clone",
174
- value: function clone() {
175
- var selection = new Selection(this.startPosition, this.endPosition);
176
- return selection;
177
- }
178
- },
179
- {
180
- key: "toJSON",
181
- value: function toJSON() {
182
- var startPosition = this.startPosition, endPosition = this.endPosition, json = {
183
- startPosition: startPosition,
184
- endPosition: endPosition
185
- };
186
- return json;
187
- }
188
71
  }
189
72
  ], [
190
- {
191
- key: "fromJSON",
192
- value: function fromJSON(json) {
193
- var startPosition = json.startPosition, endPosition = json.endPosition, selection = new Selection(startPosition, endPosition);
194
- return selection;
195
- }
196
- },
197
73
  {
198
74
  key: "fromNothing",
199
75
  value: function fromNothing() {
@@ -201,21 +77,6 @@ var Selection = /*#__PURE__*/ function() {
201
77
  return selection;
202
78
  }
203
79
  },
204
- {
205
- key: "fromOperation",
206
- value: function fromOperation(operation) {
207
- var content = operation.getContent(), position = operation.getPosition(), contentLength = content.length, startPosition = position + contentLength, endPosition = startPosition, selection = new Selection(startPosition, endPosition);
208
- return selection;
209
- }
210
- },
211
- {
212
- key: "fromSelection",
213
- value: function fromSelection(selection) {
214
- var startPosition = selection.getStartPosition(), endPosition = selection.getEndPosition();
215
- selection = new Selection(startPosition, endPosition); ///
216
- return selection;
217
- }
218
- },
219
80
  {
220
81
  key: "fromDOMElement",
221
82
  value: function fromDOMElement(domElement) {
@@ -234,4 +95,4 @@ var Selection = /*#__PURE__*/ function() {
234
95
  return Selection;
235
96
  }();
236
97
 
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3Rpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0RW5kUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5kUG9zaXRpb247XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGVtcHR5ID0gKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBnZXRMZW5ndGgoKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gKHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuXG4gIGNvbXBhcmVUbyhzZWxlY3Rpb24pIHtcbiAgICBsZXQgcmVzdWx0ID0gMDtcblxuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuc3RhcnRQb3NpdGlvbiA+IHN0YXJ0UG9zaXRpb24pIHtcbiAgICAgIHJlc3VsdCA9ICsxO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24gPCBzdGFydFBvc2l0aW9uKSB7XG4gICAgICByZXN1bHQgPSAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaXNFcXVhbFRvKHNlbGVjdGlvbikge1xuICAgIGxldCBlcXVhbFRvID0gZmFsc2U7XG5cbiAgICBpZiAoc2VsZWN0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb25TdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcbiAgICAgICAgICAgIHNlbGVjdGlvbkVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uc0VxdWFsID0gKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiksXG4gICAgICAgICAgICBlbmRQb3NpdGlvbnNFcXVhbCA9ICh0aGlzLmVuZFBvc2l0aW9uID09PSBzZWxlY3Rpb25FbmRQb3NpdGlvbik7XG5cbiAgICAgIGVxdWFsVG8gPSAoc3RhcnRQb3NpdGlvbnNFcXVhbCAmJiBlbmRQb3NpdGlvbnNFcXVhbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc092ZXJsYXBwZWRCeShzZWxlY3Rpb24pIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcbiAgICAgICAgICBlbmRQb3NpdGlvbiAgPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcbiAgICAgICAgICBvdmVybGFwcGVkQnkgPSAoKHN0YXJ0UG9zaXRpb24gPD0gdGhpcy5lbmRQb3NpdGlvbikgJiYgKGVuZFBvc2l0aW9uID49IHRoaXMuc3RhcnRQb3NpdGlvbikpO1xuXG4gICAgcmV0dXJuIG92ZXJsYXBwZWRCeTtcbiAgfVxuXG4gIHNldFN0YXJ0UG9zaXRpb24oc3RhcnRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gIH1cblxuICBzZXRFbmRQb3NpdGlvbihlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuZW5kUG9zaXRpb24gPSBlbmRQb3NpdGlvbjtcbiAgfVxuXG4gIHN0YXJ0UG9zaXRpb25TaGlmdGVkKHN0YXJ0T2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbiArIHN0YXJ0T2Zmc2V0LFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbixcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBlbmRQb3NpdGlvblNoaWZ0ZWQoZW5kT2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24gKyBlbmRPZmZzZXQsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgZW1wdGllZFRvU3RhcnQoKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBlbXB0aWVkVG9FbmQoKSB7XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uLFxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBlbmRQb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHRyYW5zZm9ybWVkKG9wZXJhdGlvbnMpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLCAvLy9cbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkU2VsZWN0aW9uO1xuICB9XG5cbiAgbWVyZ2VkV2l0aChzZWxlY3Rpb24pIHtcbiAgICBsZXQgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXG4gICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCk7XG5cbiAgICBzdGFydFBvc2l0aW9uID0gTWF0aC5taW4oc3RhcnRQb3NpdGlvbiwgdGhpcy5zdGFydFBvc2l0aW9uKTsgIC8vL1xuXG4gICAgZW5kUG9zaXRpb24gPSBNYXRoLm1heChlbmRQb3NpdGlvbiwgdGhpcy5lbmRQb3NpdGlvbik7ICAvLy9cblxuICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOyAgLy8vXG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgZW1wdGllZCgpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHNoaWZ0ZWQob2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbiArIG9mZnNldCxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24gKyBvZmZzZXQsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbih0aGlzLnN0YXJ0UG9zaXRpb24sIHRoaXMuZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbixcbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICAgIGVuZFBvc2l0aW9uXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCB7IHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uIH0gPSBqc29uLFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gMCxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IDAsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21PcGVyYXRpb24ob3BlcmF0aW9uKSB7XG4gICAgY29uc3QgY29udGVudCA9IG9wZXJhdGlvbi5nZXRDb250ZW50KCksXG4gICAgICAgICAgcG9zaXRpb24gPSBvcGVyYXRpb24uZ2V0UG9zaXRpb24oKSxcbiAgICAgICAgICBjb250ZW50TGVuZ3RoID0gY29udGVudC5sZW5ndGgsXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uICsgY29udGVudExlbmd0aCxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVNlbGVjdGlvbihzZWxlY3Rpb24pIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpO1xuXG4gICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7ICAvLy9cblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCB9ID0gZG9tRWxlbWVudCxcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uU3RhcnQsIC8vL1xuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uRW5kLCAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG5cbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhcnRQb3NpdGlvbkFuZEVuZFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlNlbGVjdGlvbiIsInN0YXJ0UG9zaXRpb24iLCJlbmRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJnZXRFbmRQb3NpdGlvbiIsImlzRW1wdHkiLCJlbXB0eSIsImdldExlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVUbyIsInNlbGVjdGlvbiIsInJlc3VsdCIsImlzRXF1YWxUbyIsImVxdWFsVG8iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uc0VxdWFsIiwiZW5kUG9zaXRpb25zRXF1YWwiLCJpc092ZXJsYXBwZWRCeSIsIm92ZXJsYXBwZWRCeSIsInNldFN0YXJ0UG9zaXRpb24iLCJzZXRFbmRQb3NpdGlvbiIsInN0YXJ0UG9zaXRpb25TaGlmdGVkIiwic3RhcnRPZmZzZXQiLCJlbmRQb3NpdGlvblNoaWZ0ZWQiLCJlbmRPZmZzZXQiLCJlbXB0aWVkVG9TdGFydCIsImVtcHRpZWRUb0VuZCIsInRyYW5zZm9ybWVkIiwib3BlcmF0aW9ucyIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwibWVyZ2VkV2l0aCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJlbXB0aWVkIiwic2hpZnRlZCIsIm9mZnNldCIsImNsb25lIiwidG9KU09OIiwianNvbiIsImZyb21KU09OIiwiZnJvbU5vdGhpbmciLCJmcm9tT3BlcmF0aW9uIiwib3BlcmF0aW9uIiwiY29udGVudCIsImdldENvbnRlbnQiLCJwb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiY29udGVudExlbmd0aCIsImZyb21TZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImRvbUVsZW1lbnQiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsImZyb21TdGFydFBvc2l0aW9uQW5kRW5kUG9zaXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBSXFCQTs7OzhEQUZVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWhCLElBQUEsQUFBTUEsMEJBQU47YUFBTUEsVUFDUEMsYUFBYSxFQUFFQyxXQUFXOzhCQURuQkY7UUFFakIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO1FBQ3JCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTs7aUJBSEZGOztZQU1uQkcsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQjtnQkFDakIsT0FBTyxJQUFJLENBQUNGLGFBQWE7WUFDM0I7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCO2dCQUNmLE9BQU8sSUFBSSxDQUFDRixXQUFXO1lBQ3pCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsSUFBTUMsUUFBUyxJQUFJLENBQUNMLGFBQWEsS0FBSyxJQUFJLENBQUNDLFdBQVc7Z0JBRXRELE9BQU9JO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsWUFBWTtnQkFDVixJQUFNQyxTQUFVLElBQUksQ0FBQ04sV0FBVyxHQUFHLElBQUksQ0FBQ0QsYUFBYTtnQkFFckQsT0FBT087WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVQyxTQUFTLEVBQUU7Z0JBQ25CLElBQUlDLFNBQVM7Z0JBRWIsSUFBTVYsZ0JBQWdCUyxVQUFVUCxnQkFBZ0I7Z0JBRWhELElBQUksSUFBSSxDQUFDRixhQUFhLEdBQUdBLGVBQWU7b0JBQ3RDVSxTQUFTLENBQUM7Z0JBQ1osQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQ1YsYUFBYSxHQUFHQSxlQUFlO29CQUN0Q1UsU0FBUyxDQUFDO2dCQUNaLENBQUM7Z0JBRUQsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVRixTQUFTLEVBQUU7Z0JB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
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3Rpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlbGVjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjtcbiAgICB0aGlzLmVuZFBvc2l0aW9uID0gZW5kUG9zaXRpb247XG4gIH1cblxuICBnZXRTdGFydFBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0UG9zaXRpb247XG4gIH1cblxuICBnZXRFbmRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5lbmRQb3NpdGlvbjtcbiAgfVxuXG4gIHNldFN0YXJ0UG9zaXRpb24oc3RhcnRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gIH1cblxuICBzZXRFbmRQb3NpdGlvbihlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuZW5kUG9zaXRpb24gPSBlbmRQb3NpdGlvbjtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzZWxlY3Rpb24pIHtcbiAgICBsZXQgZXF1YWxUbyA9IGZhbHNlO1xuXG4gICAgaWYgKHNlbGVjdGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXG4gICAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbnNFcXVhbCA9ICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24pLFxuICAgICAgICAgICAgZW5kUG9zaXRpb25zRXF1YWwgPSAodGhpcy5lbmRQb3NpdGlvbiA9PT0gc2VsZWN0aW9uRW5kUG9zaXRpb24pO1xuXG4gICAgICBlcXVhbFRvID0gKHN0YXJ0UG9zaXRpb25zRXF1YWwgJiYgZW5kUG9zaXRpb25zRXF1YWwpO1xuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSAwLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gMCxcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCB9ID0gZG9tRWxlbWVudCxcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uU3RhcnQsIC8vL1xuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uRW5kLCAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG5cbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhcnRQb3NpdGlvbkFuZEVuZFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlNlbGVjdGlvbiIsInN0YXJ0UG9zaXRpb24iLCJlbmRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJnZXRFbmRQb3NpdGlvbiIsInNldFN0YXJ0UG9zaXRpb24iLCJzZXRFbmRQb3NpdGlvbiIsImlzRXF1YWxUbyIsInNlbGVjdGlvbiIsImVxdWFsVG8iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uc0VxdWFsIiwiZW5kUG9zaXRpb25zRXF1YWwiLCJmcm9tTm90aGluZyIsImZyb21ET01FbGVtZW50IiwiZG9tRWxlbWVudCIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwiZnJvbVN0YXJ0UG9zaXRpb25BbmRFbmRQb3NpdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFFcUJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU4sSUFBQSxBQUFNQSwwQkFBTjthQUFNQSxVQUNQQyxhQUFhLEVBQUVDLFdBQVc7OEJBRG5CRjtRQUVqQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBOztpQkFIRkY7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CO2dCQUNqQixPQUFPLElBQUksQ0FBQ0YsYUFBYTtZQUMzQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxpQkFBaUI7Z0JBQ2YsT0FBTyxJQUFJLENBQUNGLFdBQVc7WUFDekI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCSixhQUFhLEVBQUU7Z0JBQzlCLElBQUksQ0FBQ0EsYUFBYSxHQUFHQTtZQUN2Qjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlSixXQUFXLEVBQUU7Z0JBQzFCLElBQUksQ0FBQ0EsV0FBVyxHQUFHQTtZQUNyQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVQyxTQUFTLEVBQUU7Z0JBQ25CLElBQUlDLFVBQVUsS0FBSztnQkFFbkIsSUFBSUQsY0FBYyxJQUFJLEVBQUU7b0JBQ3RCLElBQU1FLHlCQUF5QkYsVUFBVUwsZ0JBQWdCLElBQ25EUSx1QkFBdUJILFVBQVVKLGNBQWMsSUFDL0NRLHNCQUF1QixJQUFJLENBQUNYLGFBQWEsS0FBS1Msd0JBQzlDRyxvQkFBcUIsSUFBSSxDQUFDWCxXQUFXLEtBQUtTO29CQUVoREYsVUFBV0csdUJBQXVCQztnQkFDcEMsQ0FBQztnQkFFRCxPQUFPSjtZQUNUOzs7O1lBRU9LLEtBQUFBO21CQUFQLFNBQU9BLGNBQWM7Z0JBQ25CLElBQU1iLGdCQUFnQixHQUNoQkMsY0FBYyxHQUNkTSxZQUFZLElBeENEUixVQXdDZUMsZUFBZUM7Z0JBRS9DLE9BQU9NO1lBQ1Q7OztZQUVPTyxLQUFBQTttQkFBUCxTQUFPQSxlQUFlQyxVQUFVLEVBQUU7Z0JBQ2hDLElBQVFDLGlCQUFpQ0QsV0FBakNDLGdCQUFnQkMsZUFBaUJGLFdBQWpCRSxjQUNsQmpCLGdCQUFnQmdCLGdCQUNoQmYsY0FBY2dCLGNBQ2RWLFlBQVksSUFqRERSLFVBaURlQyxlQUFlQztnQkFFL0MsT0FBT007WUFFVDs7O1lBRU9XLEtBQUFBO21CQUFQLFNBQU9BLGdDQUFnQ2xCLGFBQWEsRUFBRUMsV0FBVyxFQUFFO2dCQUNqRSxJQUFNTSxZQUFZLElBeEREUixVQXdEZUMsZUFBZUM7Z0JBRS9DLE9BQU9NO1lBQ1Q7OztXQTNEbUJSIn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "easy-richtextarea",
3
3
  "author": "James Smith",
4
- "version": "4.0.34",
4
+ "version": "4.0.36",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/easy-richtextarea",
7
7
  "description": "A textarea element that handles and hands off events well.",
@@ -15,12 +15,10 @@
15
15
  },
16
16
  "devDependencies": {
17
17
  "@swc/core": "^1.2.160",
18
- "chai": "^4.1.0",
19
18
  "easy-with-style": "^3.0.194",
20
19
  "esbuild": "^0.9.2",
21
20
  "express": "^4.17.1",
22
21
  "lively-cli": "^2.0.34",
23
- "mocha": "~2.2.5",
24
22
  "random-seed": "^0.3.0",
25
23
  "watchful-cli": "^1.7.22"
26
24
  },
package/src/browser.js CHANGED
@@ -2,14 +2,3 @@
2
2
 
3
3
  export { default as Selection } from "./selection";
4
4
  export { default as RichTextarea } from "./richTextarea";
5
-
6
- export { default as EmptyOperation } from "./operation/empty";
7
- export { default as InsertOperation } from "./operation/insert";
8
- export { default as DeleteOperation } from "./operation/delete";
9
-
10
- export { default as transformContent } from "./transform/content";
11
- export { default as operationsToJSON } from "./operations/toJSON";
12
- export { default as operationsFromJSON } from "./operations/fromJSON";
13
- export { default as generateOperations } from "./operations/generate";
14
- export { default as transformSelection } from "./transform/selection";
15
- export { default as transformOperations } from "./transform/operations";
package/src/main.js CHANGED
@@ -1,15 +1,3 @@
1
1
  "use strict";
2
2
 
3
3
  export { default as Selection } from "./selection";
4
-
5
-
6
- export { default as EmptyOperation } from "./operation/empty";
7
- export { default as InsertOperation } from "./operation/insert";
8
- export { default as DeleteOperation } from "./operation/delete";
9
-
10
- export { default as transformContent } from "./transform/content";
11
- export { default as operationsToJSON } from "./operations/toJSON";
12
- export { default as operationsFromJSON } from "./operations/fromJSON";
13
- export { default as generateOperations } from "./operations/generate";
14
- export { default as transformSelection } from "./transform/selection";
15
- export { default as transformOperations } from "./transform/operations";
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { BLUR_EVENT_TYPE,
4
- FOCUS_EVENT_TYPE,
5
- SCROLL_EVENT_TYPE,
6
- CHANGE_EVENT_TYPE } from "../eventTypes";
3
+ import { eventTypes } from "easy";
4
+
5
+ const { BLUR_EVENT_TYPE, FOCUS_EVENT_TYPE, SCROLL_EVENT_TYPE, CHANGE_EVENT_TYPE } = eventTypes;
7
6
 
8
7
  function onBlur(blurHandler, element) {
9
8
  const eventType = BLUR_EVENT_TYPE,
@@ -1,37 +1,23 @@
1
1
  "use strict";
2
2
 
3
- import { Element, document } from "easy";
3
+ import { Element, document, eventTypes } from "easy";
4
4
 
5
5
  import Selection from "./selection"
6
- import UndoBuffer from "./undoBuffer";
7
6
  import eventMixins from "./mixins/event";
8
- import InsertOperation from "./operation/insert";
9
- import DeleteOperation from "./operation/delete";
10
- import transformContent from "./transform/content";
11
- import transformSelection from "./transform/selection";
12
- import generateOperations from "./operations/generate";
13
-
14
- import { TEXT, EMPTY_STRING } from "./constants";
15
- import { Z_KEY_CODE } from "./keyCodes";
16
- import { CUT_EVENT_TYPE,
17
- COPY_EVENT_TYPE,
18
- BLUR_EVENT_TYPE,
19
- PASTE_EVENT_TYPE,
20
- INPUT_EVENT_TYPE,
21
- FOCUS_EVENT_TYPE,
22
- CHANGE_EVENT_TYPE,
23
- SCROLL_EVENT_TYPE,
24
- KEYDOWN_EVENT_TYPE,
25
- CONTEXTMENU_EVENT_TYPE,
26
- SELECTIONCHANGE_EVENT_TYPE } from "./eventTypes";
7
+
8
+ const { BLUR_EVENT_TYPE,
9
+ INPUT_EVENT_TYPE,
10
+ FOCUS_EVENT_TYPE,
11
+ CHANGE_EVENT_TYPE,
12
+ SCROLL_EVENT_TYPE,
13
+ SELECTIONCHANGE_EVENT_TYPE } = eventTypes;
27
14
 
28
15
  export default class RichTextarea extends Element {
29
- constructor(selector, focused, readOnly, undoBuffer) {
16
+ constructor(selector, focused, readOnly) {
30
17
  super(selector);
31
18
 
32
19
  this.focused = focused;
33
20
  this.readOnly = readOnly;
34
- this.undoBuffer = undoBuffer;
35
21
  }
36
22
 
37
23
  isFocused() {
@@ -42,10 +28,6 @@ export default class RichTextarea extends Element {
42
28
  return this.readOnly;
43
29
  }
44
30
 
45
- getUndoBuffer() {
46
- return this.undoBuffer;
47
- }
48
-
49
31
  setFocused(focused) {
50
32
  this.focused = focused;
51
33
  }
@@ -54,74 +36,6 @@ export default class RichTextarea extends Element {
54
36
  this.readOnly = readOnly;
55
37
  }
56
38
 
57
- cutHandler = (event, element) => {
58
- const selection = this.getSelection(),
59
- selectionEmpty = selection.isEmpty();
60
-
61
- if (selectionEmpty) {
62
- return;
63
- }
64
-
65
- const selectedContent = this.getSelectedContent();
66
-
67
- navigator.clipboard.writeText(selectedContent);
68
-
69
- const content = this.getContent(),
70
- deleteOperation = DeleteOperation.fromContentAndSelection(content, selection),
71
- operation = deleteOperation; ///
72
-
73
- this.applyOperation(operation);
74
-
75
- this.intermediateHandler(event, element);
76
-
77
- event.preventDefault();
78
- }
79
-
80
- copyHandler = (event, element) => {
81
- const selection = this.getSelection(),
82
- selectionEmpty = selection.isEmpty();
83
-
84
- if (selectionEmpty) {
85
- return;
86
- }
87
-
88
- const selectedContent = this.getSelectedContent();
89
-
90
- navigator.clipboard.writeText(selectedContent);
91
-
92
- event.preventDefault();
93
- }
94
-
95
- pasteHandler = (event, element) => {
96
- const { clipboardData } = event,
97
- textData = clipboardData.getData(TEXT);
98
-
99
- if (textData === EMPTY_STRING) {
100
- return;
101
- }
102
-
103
- const selection = this.getSelection(),
104
- selectionEmpty = selection.isEmpty();
105
-
106
- if (!selectionEmpty) {
107
- const content = this.getContent(),
108
- deleteOperation = DeleteOperation.fromContentAndSelection(content, selection),
109
- operation = deleteOperation;
110
-
111
- this.applyOperation(operation);
112
- }
113
-
114
- const content = textData, ///
115
- insertOperation = InsertOperation.fromContentAndSelection(content, selection),
116
- operation = insertOperation; ///
117
-
118
- this.applyOperation(operation);
119
-
120
- this.intermediateHandler(event, element);
121
-
122
- event.preventDefault();
123
- }
124
-
125
39
  inputHandler = (event, element) => {
126
40
  this.intermediateHandler(event, element);
127
41
  }
@@ -129,22 +43,20 @@ export default class RichTextarea extends Element {
129
43
  blurHandler = (event, element) => {
130
44
  this.focused = false;
131
45
 
132
- const undoable = true,
133
- eventType = BLUR_EVENT_TYPE,
46
+ const eventType = BLUR_EVENT_TYPE,
134
47
  selectionChanged = true;
135
48
 
136
- this.intermediateHandler(event, element, undoable, eventType, selectionChanged);
49
+ this.intermediateHandler(event, element, eventType, selectionChanged);
137
50
  }
138
51
 
139
52
  focusHandler = (event, element) => {
140
53
  this.focused = true;
141
54
 
142
55
  defer(() => {
143
- const undoable = true,
144
- eventType = FOCUS_EVENT_TYPE,
56
+ const eventType = FOCUS_EVENT_TYPE,
145
57
  selectionChanged = true;
146
58
 
147
- this.intermediateHandler(event, element, undoable, eventType, selectionChanged);
59
+ this.intermediateHandler(event, element, eventType, selectionChanged);
148
60
  });
149
61
  }
150
62
 
@@ -154,29 +66,6 @@ export default class RichTextarea extends Element {
154
66
  this.callHandlers(eventType, event, element);
155
67
  }
156
68
 
157
- keyDownHandler = (event, element) => {
158
- let preventDefault = false;
159
-
160
- const { keyCode } = event;
161
-
162
- switch (keyCode) {
163
- case Z_KEY_CODE:
164
- preventDefault = this.zKeyDown(event, element);
165
-
166
- break;
167
- }
168
-
169
- if (preventDefault) {
170
- event.preventDefault();
171
-
172
- return;
173
- }
174
-
175
- defer(() => {
176
- this.intermediateHandler(event, element);
177
- });
178
- }
179
-
180
69
  contextmenuHandler = (event, element) => {
181
70
  event.preventDefault();
182
71
  }
@@ -189,25 +78,18 @@ export default class RichTextarea extends Element {
189
78
  }
190
79
  }
191
80
 
192
- intermediateHandler = (event, element, undoable = true, eventType = CHANGE_EVENT_TYPE, selectionChanged = this.hasSelectionChanged()) => {
193
- if (this.readOnly) {
194
- const previousContent = this.getPreviousContent(),
195
- content = previousContent; ///
196
-
197
- this.setContent(content);
198
- }
81
+ intermediateHandler = (event, element, eventType = CHANGE_EVENT_TYPE, selectionChanged = this.hasSelectionChanged()) => {
82
+ // if (this.readOnly) {
83
+ // const previousContent = this.getPreviousContent(),
84
+ // content = previousContent; ///
85
+ //
86
+ // this.setContent(content);
87
+ // }
199
88
 
200
89
  const content = this.getContent(),
201
90
  selection = this.getSelection(),
202
91
  contentChanged = this.hasContentChanged();
203
92
 
204
- if (contentChanged && undoable) {
205
- const previousContent = this.getPreviousContent(),
206
- operations = generateOperations(previousContent, content);
207
-
208
- this.undoBuffer.addOperations(operations);
209
- }
210
-
211
93
  if (contentChanged || selectionChanged) {
212
94
  this.callHandlers(eventType, event, element);
213
95
  }
@@ -231,14 +113,10 @@ export default class RichTextarea extends Element {
231
113
 
232
114
  element = this; ///
233
115
 
234
- if ( (handler !== this.cutHandler)
235
- && (handler !== this.copyHandler)
236
- && (handler !== this.pasteHandler)
237
- && (handler !== this.inputHandler)
116
+ if ( (handler !== this.inputHandler)
238
117
  && (handler !== this.blurHandler)
239
118
  && (handler !== this.focusHandler)
240
119
  && (handler !== this.scrollHandler)
241
- && (handler !== this.keyDownHandler)
242
120
  && (handler !== this.contextmenuHandler)
243
121
  && (handler !== this.selectChangeHandler) ) {
244
122
 
@@ -329,87 +207,7 @@ export default class RichTextarea extends Element {
329
207
  }
330
208
  }
331
209
 
332
- zKeyDown(event, element) {
333
- let preventDefault = false;
334
-
335
- const { ctrlKey, metaKey, shiftKey } = event;
336
-
337
- if (ctrlKey || metaKey) {
338
- const operation = shiftKey ?
339
- this.undoBuffer.redo() :
340
- this.undoBuffer.undo();
341
-
342
- if (operation !== null) {
343
- const undoable = false,
344
- selection = Selection.fromOperation(operation),
345
- setPreviousSelection = false;
346
-
347
- this.applyOperation(operation);
348
-
349
- this.setSelection(selection, setPreviousSelection);
350
-
351
- this.intermediateHandler(event, element, undoable);
352
- }
353
-
354
- preventDefault = true;
355
- }
356
-
357
- return preventDefault;
358
- }
359
-
360
- transform(operations) {
361
- let content = this.getContent(),
362
- selection = this.getSelection();
363
-
364
- const transformedContent = transformContent(content, operations),
365
- transformedSelection = transformSelection(selection, operations);
366
-
367
- content = transformedContent; ///
368
-
369
- selection = transformedSelection; ///
370
-
371
- const setPreviousContent = false,
372
- setPreviousSelection = false;
373
-
374
- this.setContent(content, setPreviousContent);
375
-
376
- this.setSelection(selection, setPreviousSelection);
377
-
378
- this.undoBuffer.transform(operations);
379
-
380
- const event = null,
381
- element = this, ///
382
- undoable = false;
383
-
384
- this.intermediateHandler(event, element, undoable);
385
- }
386
-
387
- applyOperation(operation) {
388
- let content = this.getContent(),
389
- selection = this.getSelection();
390
-
391
- const transformedContent = operation.transformContent(content),
392
- transformedSelection = operation.transformSelection(selection);
393
-
394
- content = transformedContent; ///
395
-
396
- selection = transformedSelection; ///
397
-
398
- const setPreviousContent = false,
399
- setPreviousSelection = false;
400
-
401
- this.setContent(content, setPreviousContent);
402
-
403
- this.setSelection(selection, setPreviousSelection);
404
- }
405
-
406
210
  activate() {
407
- this.on(CUT_EVENT_TYPE, this.cutHandler);
408
-
409
- this.on(COPY_EVENT_TYPE, this.copyHandler);
410
-
411
- this.on(PASTE_EVENT_TYPE, this.pasteHandler);
412
-
413
211
  this.on(INPUT_EVENT_TYPE, this.inputHandler);
414
212
 
415
213
  this.on(BLUR_EVENT_TYPE, this.blurHandler);
@@ -418,22 +216,12 @@ export default class RichTextarea extends Element {
418
216
 
419
217
  this.on(SCROLL_EVENT_TYPE, this.scrollHandler);
420
218
 
421
- this.on(KEYDOWN_EVENT_TYPE, this.keyDownHandler);
422
-
423
- this.on(CONTEXTMENU_EVENT_TYPE, this.contextmenuHandler);
424
-
425
219
  document.on(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
426
220
 
427
221
  this.addClass("active");
428
222
  }
429
223
 
430
224
  deactivate() {
431
- this.off(CUT_EVENT_TYPE, this.cutHandler);
432
-
433
- this.off(COPY_EVENT_TYPE, this.copyHandler);
434
-
435
- this.off(PASTE_EVENT_TYPE, this.pasteHandler);
436
-
437
225
  this.off(INPUT_EVENT_TYPE, this.inputHandler);
438
226
 
439
227
  this.off(BLUR_EVENT_TYPE, this.blurHandler);
@@ -442,10 +230,6 @@ export default class RichTextarea extends Element {
442
230
 
443
231
  this.off(SCROLL_EVENT_TYPE, this.scrollHandler);
444
232
 
445
- this.off(KEYDOWN_EVENT_TYPE, this.keyDownHandler);
446
-
447
- this.off(CONTEXTMENU_EVENT_TYPE, this.contextmenuHandler);
448
-
449
233
  document.off(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
450
234
 
451
235
  this.removeClass("active");
@@ -556,8 +340,7 @@ export default class RichTextarea extends Element {
556
340
  static fromClass(Class, properties, ...remainingArguments) {
557
341
  const focused = false,
558
342
  readOnly = false,
559
- undoBuffer = UndoBuffer.fromNothing(),
560
- richTextarea = Element.fromClass(Class, properties, focused, readOnly, undoBuffer, ...remainingArguments);
343
+ richTextarea = Element.fromClass(Class, properties, focused, readOnly, ...remainingArguments);
561
344
 
562
345
  return richTextarea;
563
346
  }