easy-richtextarea 4.0.35 → 4.0.37

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 -1562
  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 -155
  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 -235
  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.35",
4
+ "version": "4.0.37",
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,83 +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
-
345
- this.applyOperation(operation);
346
-
347
- this.intermediateHandler(event, element, undoable);
348
- }
349
-
350
- preventDefault = true;
351
- }
352
-
353
- return preventDefault;
354
- }
355
-
356
- transform(operations) {
357
- let content = this.getContent(),
358
- selection = this.getSelection();
359
-
360
- const transformedContent = transformContent(content, operations),
361
- transformedSelection = transformSelection(selection, operations);
362
-
363
- content = transformedContent; ///
364
-
365
- selection = transformedSelection; ///
366
-
367
- const setPreviousContent = false,
368
- setPreviousSelection = false;
369
-
370
- this.setContent(content, setPreviousContent);
371
-
372
- this.setSelection(selection, setPreviousSelection);
373
-
374
- this.undoBuffer.transform(operations);
375
-
376
- const event = null,
377
- element = this, ///
378
- undoable = false;
379
-
380
- this.intermediateHandler(event, element, undoable);
381
- }
382
-
383
- applyOperation(operation) {
384
- let content = this.getContent(),
385
- selection = this.getSelection();
386
-
387
- const transformedContent = operation.transformContent(content),
388
- transformedSelection = operation.transformSelection(selection);
389
-
390
- content = transformedContent; ///
391
-
392
- selection = transformedSelection; ///
393
-
394
- const setPreviousContent = false,
395
- setPreviousSelection = false;
396
-
397
- this.setContent(content, setPreviousContent);
398
-
399
- this.setSelection(selection, setPreviousSelection);
400
- }
401
-
402
210
  activate() {
403
- this.on(CUT_EVENT_TYPE, this.cutHandler);
404
-
405
- this.on(COPY_EVENT_TYPE, this.copyHandler);
406
-
407
- this.on(PASTE_EVENT_TYPE, this.pasteHandler);
408
-
409
211
  this.on(INPUT_EVENT_TYPE, this.inputHandler);
410
212
 
411
213
  this.on(BLUR_EVENT_TYPE, this.blurHandler);
@@ -414,22 +216,12 @@ export default class RichTextarea extends Element {
414
216
 
415
217
  this.on(SCROLL_EVENT_TYPE, this.scrollHandler);
416
218
 
417
- this.on(KEYDOWN_EVENT_TYPE, this.keyDownHandler);
418
-
419
- this.on(CONTEXTMENU_EVENT_TYPE, this.contextmenuHandler);
420
-
421
219
  document.on(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
422
220
 
423
221
  this.addClass("active");
424
222
  }
425
223
 
426
224
  deactivate() {
427
- this.off(CUT_EVENT_TYPE, this.cutHandler);
428
-
429
- this.off(COPY_EVENT_TYPE, this.copyHandler);
430
-
431
- this.off(PASTE_EVENT_TYPE, this.pasteHandler);
432
-
433
225
  this.off(INPUT_EVENT_TYPE, this.inputHandler);
434
226
 
435
227
  this.off(BLUR_EVENT_TYPE, this.blurHandler);
@@ -438,10 +230,6 @@ export default class RichTextarea extends Element {
438
230
 
439
231
  this.off(SCROLL_EVENT_TYPE, this.scrollHandler);
440
232
 
441
- this.off(KEYDOWN_EVENT_TYPE, this.keyDownHandler);
442
-
443
- this.off(CONTEXTMENU_EVENT_TYPE, this.contextmenuHandler);
444
-
445
233
  document.off(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
446
234
 
447
235
  this.removeClass("active");
@@ -552,8 +340,7 @@ export default class RichTextarea extends Element {
552
340
  static fromClass(Class, properties, ...remainingArguments) {
553
341
  const focused = false,
554
342
  readOnly = false,
555
- undoBuffer = UndoBuffer.fromNothing(),
556
- richTextarea = Element.fromClass(Class, properties, focused, readOnly, undoBuffer, ...remainingArguments);
343
+ richTextarea = Element.fromClass(Class, properties, focused, readOnly, ...remainingArguments);
557
344
 
558
345
  return richTextarea;
559
346
  }