easy-richtextarea 4.0.16 → 4.0.18

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.
package/lib/selection.js CHANGED
@@ -149,6 +149,13 @@ var Selection = /*#__PURE__*/ function() {
149
149
  return selection;
150
150
  }
151
151
  },
152
+ {
153
+ key: "fromOperation",
154
+ value: function fromOperation(operation) {
155
+ var content = operation.getContent(), position = operation.getPosition(), contentLength = content.length, startPosition = position + contentLength, endPosition = startPosition, selection = new Selection(startPosition, endPosition);
156
+ return selection;
157
+ }
158
+ },
152
159
  {
153
160
  key: "fromSelection",
154
161
  value: function fromSelection(selection) {
@@ -164,13 +171,6 @@ var Selection = /*#__PURE__*/ function() {
164
171
  return selection;
165
172
  }
166
173
  },
167
- {
168
- key: "fromStartPosition",
169
- value: function fromStartPosition(startPosition) {
170
- var endPosition = startPosition, selection = new Selection(startPosition, endPosition);
171
- return selection;
172
- }
173
- },
174
174
  {
175
175
  key: "fromStartPositionAndEndPosition",
176
176
  value: function fromStartPositionAndEndPosition(startPosition, endPosition) {
@@ -182,4 +182,4 @@ var Selection = /*#__PURE__*/ function() {
182
182
  return Selection;
183
183
  }();
184
184
 
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3Rpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0RW5kUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5kUG9zaXRpb247XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGVtcHR5ID0gKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBpc0VxdWFsVG8oc2VsZWN0aW9uKSB7XG4gICAgbGV0IGVxdWFsVG8gPSBmYWxzZTtcblxuICAgIGlmIChzZWxlY3Rpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxuICAgICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25zRXF1YWwgPSAodGhpcy5zdGFydFBvc2l0aW9uID09PSBzZWxlY3Rpb25TdGFydFBvc2l0aW9uKSxcbiAgICAgICAgICAgIGVuZFBvc2l0aW9uc0VxdWFsID0gKHRoaXMuZW5kUG9zaXRpb24gPT09IHNlbGVjdGlvbkVuZFBvc2l0aW9uKTtcblxuICAgICAgZXF1YWxUbyA9IChzdGFydFBvc2l0aW9uc0VxdWFsICYmIGVuZFBvc2l0aW9uc0VxdWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIHNldFN0YXJ0UG9zaXRpb24oc3RhcnRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gIH1cblxuICBzZXRFbmRQb3NpdGlvbihlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuZW5kUG9zaXRpb24gPSBlbmRQb3NpdGlvbjtcbiAgfVxuXG4gIHN0YXJ0UG9zaXRpb25TaGlmdGVkKHN0YXJ0T2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbiArIHN0YXJ0T2Zmc2V0LFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbixcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBlbmRQb3NpdGlvblNoaWZ0ZWQoZW5kT2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24gKyBlbmRPZmZzZXQsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgdHJhbnNmb3JtZWQob3BlcmF0aW9ucykge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMsIC8vL1xuICAgICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gdHJhbnNmb3JtU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3BlcmF0aW9ucyk7XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRTZWxlY3Rpb247XG4gIH1cblxuICBzaGlmdGVkKG9mZnNldCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb24gKyBvZmZzZXQsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uICsgb2Zmc2V0LFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGVtcHRpZWQoKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHRoaXMuc3RhcnRQb3NpdGlvbiwgdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb24sXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uLFxuICAgICAgICAgICAgZW5kUG9zaXRpb25cbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24gfSA9IGpzb24sXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSAwLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gMCxcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVNlbGVjdGlvbihzZWxlY3Rpb24pIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpO1xuXG4gICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7ICAvLy9cblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCB9ID0gZG9tRWxlbWVudCxcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uU3RhcnQsIC8vL1xuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uRW5kLCAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG5cbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9uKSB7XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLCAgLy8vXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGFydFBvc2l0aW9uQW5kRW5kUG9zaXRpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiU2VsZWN0aW9uIiwic3RhcnRQb3NpdGlvbiIsImVuZFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwiaXNFbXB0eSIsImVtcHR5IiwiaXNFcXVhbFRvIiwic2VsZWN0aW9uIiwiZXF1YWxUbyIsInNlbGVjdGlvblN0YXJ0UG9zaXRpb24iLCJzZWxlY3Rpb25FbmRQb3NpdGlvbiIsInN0YXJ0UG9zaXRpb25zRXF1YWwiLCJlbmRQb3NpdGlvbnNFcXVhbCIsInNldFN0YXJ0UG9zaXRpb24iLCJzZXRFbmRQb3NpdGlvbiIsInN0YXJ0UG9zaXRpb25TaGlmdGVkIiwic3RhcnRPZmZzZXQiLCJlbmRQb3NpdGlvblNoaWZ0ZWQiLCJlbmRPZmZzZXQiLCJ0cmFuc2Zvcm1lZCIsIm9wZXJhdGlvbnMiLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiIsInRyYW5zZm9ybVNlbGVjdGlvbiIsInNoaWZ0ZWQiLCJvZmZzZXQiLCJlbXB0aWVkIiwiY2xvbmUiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmcm9tTm90aGluZyIsImZyb21TZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImRvbUVsZW1lbnQiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsImZyb21TdGFydFBvc2l0aW9uIiwiZnJvbVN0YXJ0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
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3Rpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0RW5kUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5kUG9zaXRpb247XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGVtcHR5ID0gKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBpc0VxdWFsVG8oc2VsZWN0aW9uKSB7XG4gICAgbGV0IGVxdWFsVG8gPSBmYWxzZTtcblxuICAgIGlmIChzZWxlY3Rpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxuICAgICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25zRXF1YWwgPSAodGhpcy5zdGFydFBvc2l0aW9uID09PSBzZWxlY3Rpb25TdGFydFBvc2l0aW9uKSxcbiAgICAgICAgICAgIGVuZFBvc2l0aW9uc0VxdWFsID0gKHRoaXMuZW5kUG9zaXRpb24gPT09IHNlbGVjdGlvbkVuZFBvc2l0aW9uKTtcblxuICAgICAgZXF1YWxUbyA9IChzdGFydFBvc2l0aW9uc0VxdWFsICYmIGVuZFBvc2l0aW9uc0VxdWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIHNldFN0YXJ0UG9zaXRpb24oc3RhcnRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gIH1cblxuICBzZXRFbmRQb3NpdGlvbihlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuZW5kUG9zaXRpb24gPSBlbmRQb3NpdGlvbjtcbiAgfVxuXG4gIHN0YXJ0UG9zaXRpb25TaGlmdGVkKHN0YXJ0T2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbiArIHN0YXJ0T2Zmc2V0LFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbixcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBlbmRQb3NpdGlvblNoaWZ0ZWQoZW5kT2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24gKyBlbmRPZmZzZXQsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgdHJhbnNmb3JtZWQob3BlcmF0aW9ucykge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMsIC8vL1xuICAgICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gdHJhbnNmb3JtU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3BlcmF0aW9ucyk7XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRTZWxlY3Rpb247XG4gIH1cblxuICBzaGlmdGVkKG9mZnNldCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb24gKyBvZmZzZXQsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uICsgb2Zmc2V0LFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGVtcHRpZWQoKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHRoaXMuc3RhcnRQb3NpdGlvbiwgdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb24sXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uLFxuICAgICAgICAgICAgZW5kUG9zaXRpb25cbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24gfSA9IGpzb24sXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSAwLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gMCxcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbU9wZXJhdGlvbihvcGVyYXRpb24pIHtcbiAgICBjb25zdCBjb250ZW50ID0gb3BlcmF0aW9uLmdldENvbnRlbnQoKSxcbiAgICAgICAgICBwb3NpdGlvbiA9IG9wZXJhdGlvbi5nZXRQb3NpdGlvbigpLFxuICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSBjb250ZW50Lmxlbmd0aCxcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gcG9zaXRpb24gKyBjb250ZW50TGVuZ3RoLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU2VsZWN0aW9uKHNlbGVjdGlvbikge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCk7XG5cbiAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsgIC8vL1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRE9NRWxlbWVudChkb21FbGVtZW50KSB7XG4gICAgY29uc3QgeyBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kIH0gPSBkb21FbGVtZW50LFxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb25TdGFydCwgLy8vXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzZWxlY3Rpb25FbmQsIC8vL1xuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcblxuICB9XG5cbiAgc3RhdGljIGZyb21TdGFydFBvc2l0aW9uQW5kRW5kUG9zaXRpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiU2VsZWN0aW9uIiwic3RhcnRQb3NpdGlvbiIsImVuZFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwiaXNFbXB0eSIsImVtcHR5IiwiaXNFcXVhbFRvIiwic2VsZWN0aW9uIiwiZXF1YWxUbyIsInNlbGVjdGlvblN0YXJ0UG9zaXRpb24iLCJzZWxlY3Rpb25FbmRQb3NpdGlvbiIsInN0YXJ0UG9zaXRpb25zRXF1YWwiLCJlbmRQb3NpdGlvbnNFcXVhbCIsInNldFN0YXJ0UG9zaXRpb24iLCJzZXRFbmRQb3NpdGlvbiIsInN0YXJ0UG9zaXRpb25TaGlmdGVkIiwic3RhcnRPZmZzZXQiLCJlbmRQb3NpdGlvblNoaWZ0ZWQiLCJlbmRPZmZzZXQiLCJ0cmFuc2Zvcm1lZCIsIm9wZXJhdGlvbnMiLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiIsInRyYW5zZm9ybVNlbGVjdGlvbiIsInNoaWZ0ZWQiLCJvZmZzZXQiLCJlbXB0aWVkIiwiY2xvbmUiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmcm9tTm90aGluZyIsImZyb21PcGVyYXRpb24iLCJvcGVyYXRpb24iLCJjb250ZW50IiwiZ2V0Q29udGVudCIsInBvc2l0aW9uIiwiZ2V0UG9zaXRpb24iLCJjb250ZW50TGVuZ3RoIiwibGVuZ3RoIiwiZnJvbVNlbGVjdGlvbiIsImZyb21ET01FbGVtZW50IiwiZG9tRWxlbWVudCIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwiZnJvbVN0YXJ0UG9zaXRpb25BbmRFbmRQb3NpdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFJcUJBOzs7OERBRlU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEIsSUFBQSxBQUFNQSwwQkFBTjthQUFNQSxVQUNQQyxhQUFhLEVBQUVDLFdBQVc7OEJBRG5CRjtRQUVqQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBOztpQkFIRkY7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CO2dCQUNqQixPQUFPLElBQUksQ0FBQ0YsYUFBYTtZQUMzQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxpQkFBaUI7Z0JBQ2YsT0FBTyxJQUFJLENBQUNGLFdBQVc7WUFDekI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixJQUFNQyxRQUFTLElBQUksQ0FBQ0wsYUFBYSxLQUFLLElBQUksQ0FBQ0MsV0FBVztnQkFFdEQsT0FBT0k7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVQyxTQUFTLEVBQUU7Z0JBQ25CLElBQUlDLFVBQVUsS0FBSztnQkFFbkIsSUFBSUQsY0FBYyxJQUFJLEVBQUU7b0JBQ3RCLElBQU1FLHlCQUF5QkYsVUFBVUwsZ0JBQWdCLElBQ25EUSx1QkFBdUJILFVBQVVKLGNBQWMsSUFDL0NRLHNCQUF1QixJQUFJLENBQUNYLGFBQWEsS0FBS1Ms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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "easy-richtextarea",
3
3
  "author": "James Smith",
4
- "version": "4.0.16",
4
+ "version": "4.0.18",
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.",
@@ -23,6 +23,24 @@ export default class DeleteOperation {
23
23
  return this.position;
24
24
  }
25
25
 
26
+ transformContent(content) {
27
+ let start, end;
28
+
29
+ start = 0;
30
+
31
+ end = this.position;
32
+
33
+ const leftContent = content.substring(start, end),
34
+ contentLength = this.content.length;
35
+
36
+ start = this.position + contentLength;
37
+
38
+ const rightContent = content.substring(start),
39
+ transformedContent = leftContent + rightContent;
40
+
41
+ return transformedContent;
42
+ }
43
+
26
44
  transformOperation(operation) {
27
45
  const type = operation.getType();
28
46
 
@@ -98,24 +116,6 @@ export default class DeleteOperation {
98
116
  }
99
117
  }
100
118
 
101
- transformContent(content) {
102
- let start, end;
103
-
104
- start = 0;
105
-
106
- end = this.position;
107
-
108
- const leftContent = content.substring(start, end),
109
- contentLength = this.content.length;
110
-
111
- start = this.position + contentLength;
112
-
113
- const rightContent = content.substring(start),
114
- transformedContent = leftContent + rightContent;
115
-
116
- return transformedContent;
117
- }
118
-
119
119
  transformSelection(selection) {
120
120
  let transformedSelection;
121
121
 
@@ -11,6 +11,12 @@ export default class EmptyOperation {
11
11
  return this.type;
12
12
  }
13
13
 
14
+ transformContent(content) {
15
+ const transformedContent = content; ///
16
+
17
+ return transformedContent;
18
+ }
19
+
14
20
  transformOperation(operation) {
15
21
  return ((tau, rho) => {
16
22
 
@@ -19,12 +25,6 @@ export default class EmptyOperation {
19
25
  })(operation, this);
20
26
  }
21
27
 
22
- transformContent(content) {
23
- const transformedContent = content; ///
24
-
25
- return transformedContent;
26
- }
27
-
28
28
  transformSelection(selection) {
29
29
  const transformedSelection = selection.clone();
30
30
 
@@ -24,6 +24,24 @@ export default class InsertOperation {
24
24
  return this.position;
25
25
  }
26
26
 
27
+ transformContent(content) {
28
+ let start,
29
+ end;
30
+
31
+ start = 0;
32
+
33
+ end = this.position;
34
+
35
+ const leftContent = content.substring(start, end);
36
+
37
+ start = this.position;
38
+
39
+ const rightContent = content.substring(start),
40
+ transformedContent = leftContent + this.content + rightContent;
41
+
42
+ return transformedContent;
43
+ }
44
+
27
45
  transformOperation(operation) {
28
46
  const type = operation.getType();
29
47
 
@@ -81,24 +99,6 @@ export default class InsertOperation {
81
99
  }
82
100
  }
83
101
 
84
- transformContent(content) {
85
- let start,
86
- end;
87
-
88
- start = 0;
89
-
90
- end = this.position;
91
-
92
- const leftContent = content.substring(start, end);
93
-
94
- start = this.position;
95
-
96
- const rightContent = content.substring(start),
97
- transformedContent = leftContent + this.content + rightContent;
98
-
99
- return transformedContent;
100
- }
101
-
102
102
  transformSelection(selection) {
103
103
  let transformedSelection;
104
104
 
@@ -241,30 +241,6 @@ export default class RichTextarea extends Element {
241
241
  return active;
242
242
  }
243
243
 
244
- undo(event, element) {
245
- const operation = this.undoBuffer.undo();
246
-
247
- if (operation !== null) {
248
- const undoable = false;
249
-
250
- this.applyOperation(operation);
251
-
252
- this.intermediateHandler(event, element, undoable);
253
- }
254
- }
255
-
256
- redo(event, element) {
257
- const operation = this.undoBuffer.redo();
258
-
259
- if (operation !== null) {
260
- const undoable = false;
261
-
262
- this.applyOperation(operation);
263
-
264
- this.intermediateHandler(event, element, undoable);
265
- }
266
- }
267
-
268
244
  getContent() {
269
245
  const domElement = this.getDOMElement(),
270
246
  { value } = domElement,
@@ -335,23 +311,32 @@ export default class RichTextarea extends Element {
335
311
  }
336
312
  }
337
313
 
338
- applyOperation(operation) {
339
- let content = this.getContent(),
340
- selection = this.getSelection();
314
+ undo(event, element) {
315
+ const operation = this.undoBuffer.undo();
341
316
 
342
- const transformedContent = operation.transformContent(content),
343
- transformedSelection = operation.transformSelection(selection);
317
+ if (operation !== null) {
318
+ this.revert(event, element, operation);
319
+ }
320
+ }
344
321
 
345
- content = transformedContent; ///
322
+ redo(event, element) {
323
+ const operation = this.undoBuffer.redo();
346
324
 
347
- selection = transformedSelection; ///
325
+ if (operation !== null) {
326
+ this.revert(event, element, operation);
327
+ }
328
+ }
348
329
 
349
- const setPreviousContent = false,
330
+ revert(event, element, operation) {
331
+ const undoable = false,
332
+ selection = Selection.fromOperation(operation),
350
333
  setPreviousSelection = false;
351
334
 
352
- this.setContent(content, setPreviousContent);
335
+ this.applyOperation(operation);
353
336
 
354
337
  this.setSelection(selection, setPreviousSelection);
338
+
339
+ this.intermediateHandler(event, element, undoable);
355
340
  }
356
341
 
357
342
  transform(operations) {
@@ -372,7 +357,7 @@ export default class RichTextarea extends Element {
372
357
 
373
358
  this.setSelection(selection, setPreviousSelection);
374
359
 
375
- this.undoBuffer.transform(transformedPendingOperations);
360
+ this.undoBuffer.transform(operations);
376
361
 
377
362
  const event = null,
378
363
  element = this,
@@ -382,6 +367,25 @@ export default class RichTextarea extends Element {
382
367
  this.intermediateHandler(event, element, undoable, eventType);
383
368
  }
384
369
 
370
+ applyOperation(operation) {
371
+ let content = this.getContent(),
372
+ selection = this.getSelection();
373
+
374
+ const transformedContent = operation.transformContent(content),
375
+ transformedSelection = operation.transformSelection(selection);
376
+
377
+ content = transformedContent; ///
378
+
379
+ selection = transformedSelection; ///
380
+
381
+ const setPreviousContent = false,
382
+ setPreviousSelection = false;
383
+
384
+ this.setContent(content, setPreviousContent);
385
+
386
+ this.setSelection(selection, setPreviousSelection);
387
+ }
388
+
385
389
  activate() {
386
390
  this.on(KEYDOWN_EVENT_TYPE, this.keyDownHandler, this);
387
391
 
package/src/selection.js CHANGED
@@ -116,6 +116,17 @@ export default class Selection {
116
116
  return selection;
117
117
  }
118
118
 
119
+ static fromOperation(operation) {
120
+ const content = operation.getContent(),
121
+ position = operation.getPosition(),
122
+ contentLength = content.length,
123
+ startPosition = position + contentLength,
124
+ endPosition = startPosition, ///
125
+ selection = new Selection(startPosition, endPosition);
126
+
127
+ return selection;
128
+ }
129
+
119
130
  static fromSelection(selection) {
120
131
  const startPosition = selection.getStartPosition(),
121
132
  endPosition = selection.getEndPosition();
@@ -135,13 +146,6 @@ export default class Selection {
135
146
 
136
147
  }
137
148
 
138
- static fromStartPosition(startPosition) {
139
- const endPosition = startPosition, ///
140
- selection = new Selection(startPosition, endPosition);
141
-
142
- return selection;
143
- }
144
-
145
149
  static fromStartPositionAndEndPosition(startPosition, endPosition) {
146
150
  const selection = new Selection(startPosition, endPosition);
147
151