easy-richtextarea 4.0.46 → 4.0.48

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.
@@ -196,7 +196,7 @@ function _createSuper(Derived) {
196
196
  return _possibleConstructorReturn(this, result);
197
197
  };
198
198
  }
199
- var BLUR_EVENT_TYPE = _easy.eventTypes.BLUR_EVENT_TYPE, INPUT_EVENT_TYPE = _easy.eventTypes.INPUT_EVENT_TYPE, FOCUS_EVENT_TYPE = _easy.eventTypes.FOCUS_EVENT_TYPE, CHANGE_EVENT_TYPE = _easy.eventTypes.CHANGE_EVENT_TYPE, SCROLL_EVENT_TYPE = _easy.eventTypes.SCROLL_EVENT_TYPE, SELECTIONCHANGE_EVENT_TYPE = _easy.eventTypes.SELECTIONCHANGE_EVENT_TYPE;
199
+ var BLUR_EVENT_TYPE = _easy.eventTypes.BLUR_EVENT_TYPE, FOCUS_EVENT_TYPE = _easy.eventTypes.FOCUS_EVENT_TYPE, INPUT_EVENT_TYPE = _easy.eventTypes.INPUT_EVENT_TYPE, SCROLL_EVENT_TYPE = _easy.eventTypes.SCROLL_EVENT_TYPE, CHANGE_EVENT_TYPE = _easy.eventTypes.CHANGE_EVENT_TYPE, SELECTIONCHANGE_EVENT_TYPE = _easy.eventTypes.SELECTIONCHANGE_EVENT_TYPE;
200
200
  var RichTextarea = /*#__PURE__*/ function(Element) {
201
201
  _inherits(RichTextarea, Element);
202
202
  var _super = _createSuper(RichTextarea);
@@ -204,9 +204,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
204
204
  _classCallCheck(this, RichTextarea);
205
205
  var _this;
206
206
  _this = _super.apply(this, arguments);
207
- _defineProperty(_assertThisInitialized(_this), "inputHandler", function(event, element) {
208
- _this.intermediateHandler(event, element);
209
- });
210
207
  _defineProperty(_assertThisInitialized(_this), "blurHandler", function(event, element) {
211
208
  var eventType = BLUR_EVENT_TYPE, selectionChanged = true;
212
209
  _this.intermediateHandler(event, element, eventType, selectionChanged);
@@ -217,13 +214,13 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
217
214
  _this.intermediateHandler(event, element, eventType, selectionChanged);
218
215
  });
219
216
  });
217
+ _defineProperty(_assertThisInitialized(_this), "inputHandler", function(event, element) {
218
+ _this.intermediateHandler(event, element);
219
+ });
220
220
  _defineProperty(_assertThisInitialized(_this), "scrollHandler", function(event, element) {
221
221
  var eventType = SCROLL_EVENT_TYPE;
222
222
  _this.callHandlers(eventType, event, element);
223
223
  });
224
- _defineProperty(_assertThisInitialized(_this), "contextmenuHandler", function(event, element) {
225
- event.preventDefault();
226
- });
227
224
  _defineProperty(_assertThisInitialized(_this), "selectChangeHandler", function(event, element) {
228
225
  var currentTarget = event.currentTarget, activeElement = currentTarget.activeElement, domElement = _this.getDOMElement();
229
226
  if (activeElement === domElement) {
@@ -254,10 +251,11 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
254
251
  var eventListeners = this.findEventListeners(eventType);
255
252
  eventListeners.forEach(function(eventListener) {
256
253
  var element = eventListener.element;
257
- var handler = eventListener.handler, handlerElement = element; ///
258
- element = _this; ///
259
- if (handler !== _this.inputHandler && handler !== _this.blurHandler && handler !== _this.focusHandler && handler !== _this.scrollHandler && handler !== _this.contextmenuHandler && handler !== _this.selectChangeHandler) {
254
+ var handler = eventListener.handler;
255
+ if (handler !== _this.blurHandler && handler !== _this.focusHandler && handler !== _this.inputHandler && handler !== _this.scrollHandler && handler !== _this.selectChangeHandler) {
260
256
  var _handler;
257
+ var handlerElement = element; ///
258
+ element = _this; ///
261
259
  (_handler = handler).call.apply(_handler, [
262
260
  handlerElement
263
261
  ].concat(_toConsumableArray(remainingArguments), [
@@ -295,13 +293,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
295
293
  return selection;
296
294
  }
297
295
  },
298
- {
299
- key: "getSelectedContent",
300
- value: function getSelectedContent() {
301
- var content = this.getContent(), selection = this.getSelection(), endPosition = selection.getEndPosition(), startPosition = selection.getStartPosition(), start = startPosition, end = endPosition, selectedContent = content.slice(start, end);
302
- return selectedContent;
303
- }
304
- },
305
296
  {
306
297
  key: "hasContentChanged",
307
298
  value: function hasContentChanged() {
@@ -354,9 +345,9 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
354
345
  {
355
346
  key: "activate",
356
347
  value: function activate() {
357
- this.on(INPUT_EVENT_TYPE, this.inputHandler);
358
348
  this.on(BLUR_EVENT_TYPE, this.blurHandler);
359
349
  this.on(FOCUS_EVENT_TYPE, this.focusHandler);
350
+ this.on(INPUT_EVENT_TYPE, this.inputHandler);
360
351
  this.on(SCROLL_EVENT_TYPE, this.scrollHandler);
361
352
  _easy.document.on(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
362
353
  this.addClass("active");
@@ -365,9 +356,9 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
365
356
  {
366
357
  key: "deactivate",
367
358
  value: function deactivate() {
368
- this.off(INPUT_EVENT_TYPE, this.inputHandler);
369
359
  this.off(BLUR_EVENT_TYPE, this.blurHandler);
370
360
  this.off(FOCUS_EVENT_TYPE, this.focusHandler);
361
+ this.off(INPUT_EVENT_TYPE, this.inputHandler);
371
362
  this.off(SCROLL_EVENT_TYPE, this.scrollHandler);
372
363
  _easy.document.off(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
373
364
  this.removeClass("active");
@@ -406,8 +397,10 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
406
397
  {
407
398
  key: "didMount",
408
399
  value: function didMount() {
400
+ var content = this.getContent(), selection = this.getSelection(), previousContent = content, previousSelection = selection; ///
401
+ this.setPreviousContent(previousContent);
402
+ this.setPreviousSelection(previousSelection);
409
403
  var _this_properties = this.properties, onBlur = _this_properties.onBlur, onFocus = _this_properties.onFocus, onScroll = _this_properties.onScroll, onChange = _this_properties.onChange, blurHandler = onBlur, focusHandler = onFocus, scrollHandler = onScroll, changeHandler = onChange; ///
410
- this.updateInitialState();
411
404
  blurHandler && this.onBlur(blurHandler, this);
412
405
  focusHandler && this.onFocus(focusHandler, this);
413
406
  scrollHandler && this.onScroll(scrollHandler, this);
@@ -428,14 +421,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
428
421
  }
429
422
  }
430
423
  },
431
- {
432
- key: "updateInitialState",
433
- value: function updateInitialState() {
434
- var content = this.getContent(), selection = this.getSelection(), previousContent = content, previousSelection = selection; ///
435
- this.setPreviousContent(previousContent);
436
- this.setPreviousSelection(previousSelection);
437
- }
438
- },
439
424
  {
440
425
  key: "setInitialState",
441
426
  value: function setInitialState() {
@@ -485,4 +470,4 @@ function defer(func) {
485
470
  setTimeout(func, 0);
486
471
  }
487
472
 
488
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBldmVudE1peGlucyBmcm9tIFwiLi9taXhpbnMvZXZlbnRcIjtcclxuXHJcbmNvbnN0IHsgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgIElOUFVUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICBTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJpY2hUZXh0YXJlYSBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGJsdXJIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNjcm9sbEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjdXJyZW50VGFyZ2V0IH0gPSBldmVudCxcclxuICAgICAgICAgIHsgYWN0aXZlRWxlbWVudCB9ID0gY3VycmVudFRhcmdldCxcclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlRWxlbWVudCA9PT0gZG9tRWxlbWVudCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpO1xyXG5cclxuICAgIGlmIChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGNhbGxIYW5kbGVycyhldmVudFR5cGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmZpbmRFdmVudExpc3RlbmVycyhldmVudFR5cGUpO1xyXG5cclxuICAgIGV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGV2ZW50TGlzdGVuZXIpID0+IHtcclxuICAgICAgbGV0IHsgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGNvbnN0IHsgaGFuZGxlciB9ID0gZXZlbnRMaXN0ZW5lcixcclxuICAgICAgICAgICAgaGFuZGxlckVsZW1lbnQgPSBlbGVtZW50OyAvLy9cclxuXHJcbiAgICAgIGVsZW1lbnQgPSB0aGlzOyAvLy9cclxuXHJcbiAgICAgIGlmICggKGhhbmRsZXIgIT09IHRoaXMuaW5wdXRIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmJsdXJIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5zY3JvbGxIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmNvbnRleHRtZW51SGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKSApIHtcclxuXHJcbiAgICAgICAgaGFuZGxlci5jYWxsKGhhbmRsZXJFbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzUmVhZE9ubHkoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHJlYWRPbmx5IH0gPSBkb21FbGVtZW50O1xyXG5cclxuICAgIHJldHVybiByZWFkT25seTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKCkge1xyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5oYXNDbGFzcyhcImFjdGl2ZVwiKTtcclxuXHJcbiAgICByZXR1cm4gYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudCgpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHsgdmFsdWUgfSA9IGRvbUVsZW1lbnQsXHJcbiAgICAgICAgICBjb250ZW50ID0gdmFsdWU7ICAvLy9cclxuXHJcbiAgICByZXR1cm4gY29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5mcm9tRE9NRWxlbWVudChkb21FbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRDb250ZW50KCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGVkQ29udGVudCA9IGNvbnRlbnQuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gcHJldmlvdXNDb250ZW50KSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gIWNvbnRlbnRQcmV2aW91c0NvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyhwcmV2aW91c1NlbGVjdGlvbiksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gIXNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uQ2hhbmdlZDtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHJlYWRPbmx5XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldENvbnRlbnQoY29udGVudCwgc2V0UHJldmlvdXNDb250ZW50ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMub24oSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9uKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vZmYoSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoRk9DVVNfRVZFTlRfVFlQRSwgdGhpcy5mb2N1c0hhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgY29uc3QgeyBwcmV2aW91c0NvbnRlbnQgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzU2VsZWN0aW9uIH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCkge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzQ29udGVudFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkJsdXIsIG9uRm9jdXMsIG9uU2Nyb2xsLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXIsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlOyAvLy9cclxuXHJcbiAgICB0aGlzLnVwZGF0ZUluaXRpYWxTdGF0ZSgpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkJsdXIsIG9uRm9jdXMsIG9uU2Nyb2xsLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub2ZmRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub2ZmU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpO1xyXG5cclxuICAgIGlmIChhY3RpdmUpIHtcclxuICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xyXG4gICAgY29uc3QgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50LFxyXG4gICAgICBwcmV2aW91c1NlbGVjdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXNlKCkge1xyXG4gICAgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJ0ZXh0YXJlYVwiO1xyXG5cclxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXHJcbiAgICBcIm9uQmx1clwiLFxyXG4gICAgXCJvbkZvY3VzXCIsXHJcbiAgICBcIm9uU2Nyb2xsXCIsXHJcbiAgICBcIm9uQ2hhbmdlXCJcclxuICBdO1xyXG5cclxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XHJcbiAgICBjbGFzc05hbWU6IFwicmljaFwiXHJcbiAgfTtcclxuXHJcbiAgc3RhdGljIGZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCByaWNoVGV4dGFyZWEgPSBFbGVtZW50LmZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcclxuXHJcbiAgICByZXR1cm4gcmljaFRleHRhcmVhO1xyXG4gIH1cclxufVxyXG5cclxuT2JqZWN0LmFzc2lnbihSaWNoVGV4dGFyZWEucHJvdG90eXBlLCBldmVudE1peGlucyk7XHJcblxyXG5mdW5jdGlvbiBkZWZlcihmdW5jKSB7XHJcbiAgc2V0VGltZW91dChmdW5jLCAwKTtcclxufVxyXG4iXSwibmFtZXMiOlsiUmljaFRleHRhcmVhIiwiQkxVUl9FVkVOVF9UWVBFIiwiZXZlbnRUeXBlcyIsIklOUFVUX0VWRU5UX1RZUEUiLCJGT0NVU19FVkVOVF9UWVBFIiwiQ0hBTkdFX0VWRU5UX1RZUEUiLCJTQ1JPTExfRVZFTlRfVFlQRSIsIlNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFIiwiaW5wdXRIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50IiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsImJsdXJIYW5kbGVyIiwiZXZlbnRUeXBlIiwic2VsZWN0aW9uQ2hhbmdlZCIsImZvY3VzSGFuZGxlciIsImRlZmVyIiwic2Nyb2xsSGFuZGxlciIsImNhbGxIYW5kbGVycyIsImNvbnRleHRtZW51SGFuZGxlciIsInByZXZlbnREZWZhdWx0Iiwic2VsZWN0Q2hhbmdlSGFuZGxlciIsImN1cnJlbnRUYXJnZXQiLCJhY3RpdmVFbGVtZW50IiwiZG9tRWxlbWVudCIsImdldERPTUVsZW1lbnQiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwiY29udGVudCIsImdldENvbnRlbnQiLCJzZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJjb250ZW50Q2hhbmdlZCIsImhhc0NvbnRlbnRDaGFuZ2VkIiwicHJldmlvdXNDb250ZW50IiwicHJldmlvdXNTZWxlY3Rpb24iLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImV2ZW50TGlzdGVuZXJzIiwiZmluZEV2ZW50TGlzdGVuZXJzIiwiZm9yRWFjaCIsImV2ZW50TGlzdGVuZXIiLCJoYW5kbGVyIiwiaGFuZGxlckVsZW1lbnQiLCJjYWxsIiwiaXNSZWFkT25seSIsInJlYWRPbmx5IiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsInZhbHVlIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJnZXRTZWxlY3RlZENvbnRlbnQiLCJlbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzdGFydCIsImVuZCIsInNlbGVjdGVkQ29udGVudCIsInNsaWNlIiwiZ2V0UHJldmlvdXNDb250ZW50IiwiY29udGVudFByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzU2VsZWN0aW9uIiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJzZXRSZWFkT25seSIsIk9iamVjdCIsImFzc2lnbiIsInNldENvbnRlbnQiLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwiYWN0aXZhdGUiLCJvbiIsImRvY3VtZW50IiwiYWRkQ2xhc3MiLCJkZWFjdGl2YXRlIiwib2ZmIiwicmVtb3ZlQ2xhc3MiLCJnZXRTdGF0ZSIsInVwZGF0ZVN0YXRlIiwiZGlkTW91bnQiLCJwcm9wZXJ0aWVzIiwib25CbHVyIiwib25Gb2N1cyIsIm9uU2Nyb2xsIiwib25DaGFuZ2UiLCJjaGFuZ2VIYW5kbGVyIiwidXBkYXRlSW5pdGlhbFN0YXRlIiwid2lsbFVubW91bnQiLCJvZmZCbHVyIiwib2ZmRm9jdXMiLCJvZmZTY3JvbGwiLCJvZmZDaGFuZ2UiLCJzZXRJbml0aWFsU3RhdGUiLCJzZXRTdGF0ZSIsImluaXRpYWxpc2UiLCJmcm9tQ2xhc3MiLCJDbGFzcyIsIkVsZW1lbnQiLCJyaWNoVGV4dGFyZWEiLCJ0YWdOYW1lIiwiaWdub3JlZFByb3BlcnRpZXMiLCJkZWZhdWx0UHJvcGVydGllcyIsImNsYXNzTmFtZSIsInByb3RvdHlwZSIsImV2ZW50TWl4aW5zIiwiZnVuYyIsInNldFRpbWVvdXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBY3FCQTs7O29CQVp5Qjs4REFFeEI7MERBQ0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV4QixJQUFRQyxrQkFLK0JDLGdCQUFVLENBTHpDRCxpQkFDQUUsbUJBSStCRCxnQkFBVSxDQUp6Q0Msa0JBQ0FDLG1CQUcrQkYsZ0JBQVUsQ0FIekNFLGtCQUNBQyxvQkFFK0JILGdCQUFVLENBRnpDRyxtQkFDQUMsb0JBQytCSixnQkFBVSxDQUR6Q0ksbUJBQ0FDLDZCQUErQkwsZ0JBQVUsQ0FBekNLO0FBRU8sSUFBQSxBQUFNUCw2QkE2VHBCLEFBN1RjO2NBQU1BOzhCQUFBQTthQUFBQTs4QkFBQUE7OztRQUNuQlEsK0NBQUFBLGdCQUFlLFNBQUNDLE9BQU9DLFNBQVk7WUFDakMsTUFBS0MsbUJBQW1CLENBQUNGLE9BQU9DO1FBQ2xDO1FBRUFFLCtDQUFBQSxlQUFjLFNBQUNILE9BQU9DLFNBQVk7WUFDaEMsSUFBTUcsWUFBWVosaUJBQ1phLG1CQUFtQixJQUFJO1lBRTdCLE1BQUtILG1CQUFtQixDQUFDRixPQUFPQyxTQUFTRyxXQUFXQztR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
473
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBldmVudE1peGlucyBmcm9tIFwiLi9taXhpbnMvZXZlbnRcIjtcclxuXHJcbmNvbnN0IHsgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgSU5QVVRfRVZFTlRfVFlQRSxcclxuICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICBTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJpY2hUZXh0YXJlYSBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGJsdXJIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHNjcm9sbEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjdXJyZW50VGFyZ2V0IH0gPSBldmVudCxcclxuICAgICAgICAgIHsgYWN0aXZlRWxlbWVudCB9ID0gY3VycmVudFRhcmdldCxcclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlRWxlbWVudCA9PT0gZG9tRWxlbWVudCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpO1xyXG5cclxuICAgIGlmIChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGNhbGxIYW5kbGVycyhldmVudFR5cGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmZpbmRFdmVudExpc3RlbmVycyhldmVudFR5cGUpO1xyXG5cclxuICAgIGV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGV2ZW50TGlzdGVuZXIpID0+IHtcclxuICAgICAgbGV0IHsgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGNvbnN0IHsgaGFuZGxlciB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGlmICggKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuZm9jdXNIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmlucHV0SGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5zY3JvbGxIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpICkge1xyXG5cclxuICAgICAgICBjb25zdCBoYW5kbGVyRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xyXG5cclxuICAgICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICAgIGhhbmRsZXIuY2FsbChoYW5kbGVyRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc1JlYWRPbmx5KCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgeyByZWFkT25seSB9ID0gZG9tRWxlbWVudDtcclxuXHJcbiAgICByZXR1cm4gcmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaGFzQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gcHJldmlvdXNDb250ZW50KSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gIWNvbnRlbnRQcmV2aW91c0NvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyhwcmV2aW91c1NlbGVjdGlvbiksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gIXNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uQ2hhbmdlZDtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHJlYWRPbmx5XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldENvbnRlbnQoY29udGVudCwgc2V0UHJldmlvdXNDb250ZW50ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMub24oQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9uKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgY29uc3QgeyBwcmV2aW91c0NvbnRlbnQgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzU2VsZWN0aW9uIH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCkge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzQ29udGVudFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRpZE1vdW50KCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkJsdXIsIG9uRm9jdXMsIG9uU2Nyb2xsLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub2ZmRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub2ZmU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpO1xyXG5cclxuICAgIGlmIChhY3RpdmUpIHtcclxuICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBudWxsLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwcmV2aW91c0NvbnRlbnQsXHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2UoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25CbHVyXCIsXHJcbiAgICBcIm9uRm9jdXNcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25DaGFuZ2VcIlxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IHJpY2hUZXh0YXJlYSA9IEVsZW1lbnQuZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xyXG5cclxuICAgIHJldHVybiByaWNoVGV4dGFyZWE7XHJcbiAgfVxyXG59XHJcblxyXG5PYmplY3QuYXNzaWduKFJpY2hUZXh0YXJlYS5wcm90b3R5cGUsIGV2ZW50TWl4aW5zKTtcclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJCTFVSX0VWRU5UX1RZUEUiLCJldmVudFR5cGVzIiwiRk9DVVNfRVZFTlRfVFlQRSIsIklOUFVUX0VWRU5UX1RZUEUiLCJTQ1JPTExfRVZFTlRfVFlQRSIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUiLCJibHVySGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsImV2ZW50VHlwZSIsInNlbGVjdGlvbkNoYW5nZWQiLCJpbnRlcm1lZGlhdGVIYW5kbGVyIiwiZm9jdXNIYW5kbGVyIiwiZGVmZXIiLCJpbnB1dEhhbmRsZXIiLCJzY3JvbGxIYW5kbGVyIiwiY2FsbEhhbmRsZXJzIiwic2VsZWN0Q2hhbmdlSGFuZGxlciIsImN1cnJlbnRUYXJnZXQiLCJhY3RpdmVFbGVtZW50IiwiZG9tRWxlbWVudCIsImdldERPTUVsZW1lbnQiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwiY29udGVudCIsImdldENvbnRlbnQiLCJzZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJjb250ZW50Q2hhbmdlZCIsImhhc0NvbnRlbnRDaGFuZ2VkIiwicHJldmlvdXNDb250ZW50IiwicHJldmlvdXNTZWxlY3Rpb24iLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImV2ZW50TGlzdGVuZXJzIiwiZmluZEV2ZW50TGlzdGVuZXJzIiwiZm9yRWFjaCIsImV2ZW50TGlzdGVuZXIiLCJoYW5kbGVyIiwiaGFuZGxlckVsZW1lbnQiLCJjYWxsIiwiaXNSZWFkT25seSIsInJlYWRPbmx5IiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsInZhbHVlIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJnZXRQcmV2aW91c0NvbnRlbnQiLCJjb250ZW50UHJldmlvdXNDb250ZW50IiwiZ2V0UHJldmlvdXNTZWxlY3Rpb24iLCJzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbiIsImlzRXF1YWxUbyIsInNldFJlYWRPbmx5IiwiT2JqZWN0IiwiYXNzaWduIiwic2V0Q29udGVudCIsInNldFNlbGVjdGlvbiIsInNlbGVjdGlvblN0YXJ0UG9zaXRpb24iLCJnZXRTdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJnZXRFbmRQb3NpdGlvbiIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJhY3RpdmF0ZSIsIm9uIiwiZG9jdW1lbnQiLCJhZGRDbGFzcyIsImRlYWN0aXZhdGUiLCJvZmYiLCJyZW1vdmVDbGFzcyIsImdldFN0YXRlIiwidXBkYXRlU3RhdGUiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJvbkJsdXIiLCJvbkZvY3VzIiwib25TY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJ3aWxsVW5tb3VudCIsIm9mZkJsdXIiLCJvZmZGb2N1cyIsIm9mZlNjcm9sbCIsIm9mZkNoYW5nZSIsInNldEluaXRpYWxTdGF0ZSIsInNldFN0YXRlIiwiaW5pdGlhbGlzZSIsImZyb21DbGFzcyIsIkNsYXNzIiwiRWxlbWVudCIsInJpY2hUZXh0YXJlYSIsInRhZ05hbWUiLCJpZ25vcmVkUHJvcGVydGllcyIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwicHJvdG90eXBlIiwiZXZlbnRNaXhpbnMiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFjcUJBOzs7b0JBWnlCOzhEQUV4QjswREFDRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhCLElBQVFDLGtCQUsrQkMsZ0JBQVUsQ0FMekNELGlCQUNBRSxtQkFJK0JELGdCQUFVLENBSnpDQyxrQkFDQUMsbUJBRytCRixnQkFBVSxDQUh6Q0Usa0JBQ0FDLG9CQUUrQkgsZ0JBQVUsQ0FGekNHLG1CQUNBQyxvQkFDK0JKLGdCQUFVLENBRHpDSSxtQkFDQUMsNkJBQStCTCxnQkFBVSxDQUF6Q0s7QUFFTyxJQUFBLEFBQU1QLDZCQXlTcEIsQUF6U2M7Y0FBTUE7OEJBQUFBO2FBQUFBOzhCQUFBQTs7O1FBQ25CUSwrQ0FBQUEsZUFBYyxTQUFDQyxPQUFPQyxTQUFZO1lBQ2hDLElBQU1DLFlBQVlWLGlCQUNaVyxtQkFBbUIsSUFBSTtZQUU3QixNQUFLQyxtQkFBbUIsQ0FBQ0osT0FBT0MsU0FBU0MsV0FBV0M7UUFDdEQ7UUFFQUUsK0NBQUFBLGdCQUFlLFNBQUNMLE9BQU9DLFNBQVk7WUFDakNLLE1BQU0sV0FBTTtnQkFDVixJQUFNSixZQUFZUixrQkFDWlMsbUJBQW1CLElBQUk7Z0JBRTdCLE1BQUtDLG1CQUFtQixDQUFDSixPQUFPQyxTQUFTQyxXQUFXQztZQUN0RDtRQUNGO1FBRUFJLCtDQUFBQSxnQkFBZSxTQUFDUCxPQUFPQyxTQUFZO1lBQ2pDLE1BQUtHLG1CQUFtQixDQUFDSixPQUFPQztRQUNsQztRQUVBTywrQ0FBQUEsaUJBQWdCLFNBQUNSLE9BQU9DLFNBQVk7WUFDbEMsSUFBTUMsWUFBWU47WUFFbEIsTUFBS2EsWUFBWSxDQUFDUCxXQUFXRixPQUFPQztRQUN0QztRQUVBUywrQ0FBQUEsdUJBQXNCLFNBQUNWLE9BQU9DLFNBQVk7WUFDeEMsSUFBTSxBQUFFVSxnQkFBa0JYLE1BQWxCVyxlQUNGLEFBQUVDLGdCQUFrQkQsY0FBbEJDLGVBQ0ZDLGFBQWEsTUFBS0MsYUFBYTtZQUVyQyxJQUFJRixrQkFBa0JDLFlBQVk7Z0JBQ2hDWix5Q0FBZ0IsR0FBRztnQkFFbkIsTUFBS0csbUJBQW1CLENBQUNKLE9BQU9DO1lBQ2xDLENBQUM7UUFDSDtRQUVBRywrQ0FBQUEsdUJBQXNCLFNBQUNKLE9BQU9DLFNBQTBGO2dCQUFqRkMsNkVBQVlMLG1CQUFtQk0sb0ZBQW1CLE1BQUtZLG1CQUFtQjtZQUMvRyxJQUFNQyxVQUFVLE1BQUtDLFVBQVUsSUFDekJDLFlBQVksTUFBS0MsWUFBWSxJQUM3QkMsaUJBQWlCLE1BQUtDLGlCQUFpQjtZQUU3QyxJQUFJRCxrQkFBa0JqQixrQkFBa0I7Z0JBQ3RDLE1BQUtNLFlBQVksQ0FBQ1AsV0FBV0YsT0FBT0M7WUFDdEMsQ0FBQztZQUVELElBQU1xQixrQkFBa0JOLFNBQ2xCTyxvQkFBb0JMLFdBQVksR0FBRztZQUV6QyxNQUFLTSxrQkFBa0IsQ0FBQ0Y7WUFFeEIsTUFBS0csb0JBQW9CLENBQUNGO1FBQzVCOzs7aUJBdERtQmhDOztZQXdEbkJrQixLQUFBQTttQkFBQUEsU0FBQUEsYUFBYVAsU0FBUyxFQUF5QjtnQkFBdkIsSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUd3QixxQkFBSCxVQUFBLE9BQUEsSUFBQSxPQUFBLEtBQXFCLEdBQXJCLE9BQUEsR0FBQSxPQUFBLE1BQUEsT0FBQTtvQkFBR0EsbUJBQUgsT0FBQSxLQUFBLFNBQUEsQ0FBQSxLQUFxQjtnQkFBRDs7Z0JBQzFDLElBQU1DLGlCQUFpQixJQUFJLENBQUNDLGtCQUFrQixDQUFDMUI7Z0JBRS9DeUIsZUFBZUUsT0FBTyxDQUFDLFNBQUNDLGVBQWtCO29CQUN4QyxJQUFJLEFBQUU3QixVQUFZNkIsY0FBWjdCO29CQUVOLElBQU0sQUFBRThCLFVBQVlELGNBQVpDO29CQUVSLElBQUssQUFBQ0EsWUFBWSxNQUFLaEMsV0FBVyxJQUM1QmdDLFlBQVksTUFBSzFCLFlBQVksSUFDN0IwQixZQUFZLE1BQUt4QixZQUFZLElBQzdCd0IsWUFBWSxNQUFLdkIsYUFBYSxJQUM5QnVCLFlBQVksTUFBS3JCLG1CQUFtQixFQUFJOzRCQU01Q3FCO3dCQUpBLElBQU1DLGlCQUFpQi9CLFNBQVMsR0FBRzt3QkFFbkNBLGlCQUFnQixHQUFHO3dCQUVuQjhCLENBQUFBLFdBQUFBLFNBQVFFLElBQUksQ0FBWkYsTUFBQUEsVUFBQUE7NEJBQWFDO3lCQUErQyxDQUE1REQsT0FBNkIsbUJBQUdMLHFCQUFoQ0s7NEJBQW9EOUI7eUJBQVE7b0JBQzlELENBQUM7Z0JBQ0g7WUFDRjs7O1lBRUFpQyxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYTtnQkFDWCxJQUFNckIsYUFBYSxJQUFJLENBQUNDLGFBQWEsSUFDL0IsQUFBRXFCLFdBQWF0QixXQUFic0I7Z0JBRVIsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXO2dCQUNULElBQU1DLFNBQVMsSUFBSSxDQUFDQyxRQUFRLENBQUM7Z0JBRTdCLE9BQU9EO1lBQ1Q7OztZQUVBcEIsS0FBQUE7bUJBQUFBLFNBQUFBLGFBQWE7Z0JBQ1gsSUFBTUosYUFBYSxJQUFJLENBQUNDLGFBQWEsSUFDL0IsQUFBRXlCLFFBQVUxQixXQUFWMEIsT0FDRnZCLFVBQVV1QixPQUFRLEdBQUc7Z0JBRTNCLE9BQU92QjtZQUNUOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWU7Z0JBQ2IsSUFBTU4sYUFBYSxJQUFJLENBQUNDLGFBQWEsSUFDL0JJLFlBQVlzQixrQkFBUyxDQUFDQyxjQUFjLENBQUM1QjtnQkFFM0MsT0FBT0s7WUFDVDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxvQkFBb0I7Z0JBQ2xCLElBQU1MLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCSyxrQkFBa0IsSUFBSSxDQUFDb0Isa0JBQWtCLElBQ3pDQyx5QkFBMEIzQixZQUFZTSxpQkFDdENGLGlCQUFpQixDQUFDdUI7Z0JBRXhCLE9BQU92QjtZQUNUOzs7WUFFQUwsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQjtnQkFDcEIsSUFBTUcsWUFBWSxJQUFJLENBQUNDLFlBQVksSUFDN0JJLG9CQUFvQixJQUFJLENBQUNxQixvQkFBb0IsSUFDN0NDLDZCQUE2QjNCLFVBQVU0QixTQUFTLENBQUN2QixvQkFDakRwQixtQkFBbUIsQ0FBQzBDLDRCQUE0QixHQUFHO2dCQUV6RCxPQUFPMUM7WUFDVDs7O1lBRUE0QyxLQUFBQTttQkFBQUEsU0FBQUEsWUFBWVosUUFBUSxFQUFFO2dCQUNwQixJQUFNdEIsYUFBYSxJQUFJLENBQUNDLGFBQWE7Z0JBRXJDa0MsT0FBT0MsTUFBTSxDQUFDcEMsWUFBWTtvQkFDeEJzQixVQUFBQTtnQkFDRjtZQUNGOzs7WUFFQWUsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVdsQyxPQUFPLEVBQTZCO29CQUEzQlEscUJBQUFBLGlFQUFxQixJQUFJO2dCQUMzQyxJQUFNZSxRQUFRdkIsU0FDUkgsYUFBYSxJQUFJLENBQUNDLGFBQWE7Z0JBRXJDa0MsT0FBT0MsTUFBTSxDQUFDcEMsWUFBWTtvQkFDeEIwQixPQUFBQTtnQkFDRjtnQkFFQSxJQUFJZixvQkFBb0I7b0JBQ3RCLElBQU1GLGtCQUFrQk4sU0FBVSxHQUFHO29CQUVyQyxJQUFJLENBQUNRLGtCQUFrQixDQUFDRjtnQkFDMUIsQ0FBQztZQUNIOzs7WUFFQTZCLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhakMsU0FBUyxFQUErQjtvQkFBN0JPLHVCQUFBQSxpRUFBdUIsSUFBSTtnQkFDakQsSUFBTTJCLHlCQUF5QmxDLFVBQVVtQyxnQkFBZ0IsSUFDbkRDLHVCQUF1QnBDLFVBQVVxQyxjQUFjLElBQy9DQyxpQkFBaUJKLHdCQUNqQkssZUFBZUgsc0JBQ2Z6QyxhQUFhLElBQUksQ0FBQ0MsYUFBYTtnQkFFckNELFdBQVc2QyxpQkFBaUIsQ0FBQ0YsZ0JBQWdCQztnQkFFN0MsSUFBSWhDLHNCQUFzQjtvQkFDeEIsSUFBTUYsb0JBQW9CTCxXQUFZLEdBQUc7b0JBRXpDLElBQUksQ0FBQ08sb0JBQW9CLENBQUNGO2dCQUM1QixDQUFDO1lBQ0g7OztZQUVBb0MsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVc7Z0JBQ1QsSUFBSSxDQUFDQyxFQUFFLENBQUNwRSxpQkFBaUIsSUFBSSxDQUFDTyxXQUFXO2dCQUV6QyxJQUFJLENBQUM2RCxFQUFFLENBQUNsRSxrQkFBa0IsSUFBSSxDQUFDVyxZQUFZO2dCQUUzQyxJQUFJLENBQUN1RCxFQUFFLENBQUNqRSxrQkFBa0IsSUFBSSxDQUFDWSxZQUFZO2dCQUUzQyxJQUFJLENBQUNxRCxFQUFFLENBQUNoRSxtQkFBbUIsSUFBSSxDQUFDWSxhQUFhO2dCQUU3Q3FELGNBQVEsQ0FBQ0QsRUFBRSxDQUFDOUQsNEJBQTRCLElBQUksQ0FBQ1ksbUJBQW1CO2dCQUVoRSxJQUFJLENBQUNvRCxRQUFRLENBQUM7WUFDaEI7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYTtnQkFDWCxJQUFJLENBQUNDLEdBQUcsQ0FBQ3hFLGlCQUFpQixJQUFJLENBQUNPLFdBQVc7Z0JBRTFDLElBQUksQ0FBQ2lFLEdBQUcsQ0FBQ3RFLGtCQUFrQixJQUFJLENBQUNXLFlBQVk7Z0JBRTVDLElBQUksQ0FBQzJELEdBQUcsQ0FBQ3JFLGtCQUFrQixJQUFJLENBQUNZLFlBQVk7Z0JBRTVDLElBQUksQ0FBQ3lELEdBQUcsQ0FBQ3BFLG1CQUFtQixJQUFJLENBQUNZLGFBQWE7Z0JBRTlDcUQsY0FBUSxDQUFDRyxHQUFHLENBQUNsRSw0QkFBNEIsSUFBSSxDQUFDWSxtQkFBbUI7Z0JBRWpFLElBQUksQ0FBQ3VELFdBQVcsQ0FBQztZQUNuQjs7O1lBRUF2QixLQUFBQTttQkFBQUEsU0FBQUEscUJBQXFCO2dCQUNuQixJQUFNLEFBQUVwQixrQkFBb0IsSUFBSSxDQUFDNEMsUUFBUSxHQUFqQzVDO2dCQUVSLE9BQU9BO1lBQ1Q7OztZQUVBc0IsS0FBQUE7bUJBQUFBLFNBQUFBLHVCQUF1QjtnQkFDckIsSUFBTSxBQUFFckIsb0JBQXNCLElBQUksQ0FBQzJDLFFBQVEsR0FBbkMzQztnQkFFUixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQkYsZUFBZSxFQUFFO2dCQUNsQyxJQUFJLENBQUM2QyxXQUFXLENBQUM7b0JBQ2Y3QyxpQkFBQUE7Z0JBQ0Y7WUFDRjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUJGLGlCQUFpQixFQUFFO2dCQUN0QyxJQUFJLENBQUM0QyxXQUFXLENBQUM7b0JBQ2Y1QyxtQkFBQUE7Z0JBQ0Y7WUFDRjs7O1lBRUE2QyxLQUFBQTttQkFBQUEsU0FBQUEsV0FBVztnQkFDVCxJQUFNcEQsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJDLFlBQVksSUFBSSxDQUFDQyxZQUFZLElBQzdCRyxrQkFBa0JOLFNBQ2xCTyxvQkFBb0JMLFdBQVksR0FBRztnQkFFekMsSUFBSSxDQUFDTSxrQkFBa0IsQ0FBQ0Y7Z0JBRXhCLElBQUksQ0FBQ0csb0JBQW9CLENBQUNGO2dCQUUxQixJQUFnRCxtQkFBQSxJQUFJLENBQUM4QyxVQUFVLEVBQXZEQyxTQUF3QyxpQkFBeENBLFFBQVFDLFVBQWdDLGlCQUFoQ0EsU0FBU0MsV0FBdUIsaUJBQXZCQSxVQUFVQyxXQUFhLGlCQUFiQSxVQUM3QjFFLGNBQWN1RSxRQUNkakUsZUFBZWtFLFNBQ2YvRCxnQkFBZ0JnRSxVQUNoQkUsZ0JBQWdCRCxVQUFVLEdBQUc7Z0JBRW5DMUUsZUFBZSxJQUFJLENBQUN1RSxNQUFNLENBQUN2RSxhQUFhLElBQUk7Z0JBRTVDTSxnQkFBZ0IsSUFBSSxDQUFDa0UsT0FBTyxDQUFDbEUsY0FBYyxJQUFJO2dCQUUvQ0csaUJBQWlCLElBQUksQ0FBQ2dFLFFBQVEsQ0FBQ2hFLGVBQWUsSUFBSTtnQkFFbERrRSxpQkFBaUIsSUFBSSxDQUFDRCxRQUFRLENBQUNDLGVBQWUsSUFBSTtZQUNwRDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjO2dCQUNaLElBQWdELG1CQUFBLElBQUksQ0FBQ04sVUFBVSxFQUF2REMsU0FBd0MsaUJBQXhDQSxRQUFRQyxVQUFnQyxpQkFBaENBLFNBQVNDLFdBQXVCLGlCQUF2QkEsVUFBVUMsV0FBYSxpQkFBYkEsVUFDM0IxRSxjQUFjdUUsUUFDZGpFLGVBQWVrRSxTQUNmL0QsZ0JBQWdCZ0UsVUFDaEJFLGdCQUFnQkQsVUFBVSxHQUFHO2dCQUVyQzFFLGVBQWUsSUFBSSxDQUFDNkUsT0FBTyxDQUFDN0UsYUFBYSxJQUFJO2dCQUU3Q00sZ0JBQWdCLElBQUksQ0FBQ3dFLFFBQVEsQ0FBQ3hFLGNBQWMsSUFBSTtnQkFFaERHLGlCQUFpQixJQUFJLENBQUNzRSxTQUFTLENBQUN0RSxlQUFlLElBQUk7Z0JBRW5Ea0UsaUJBQWlCLElBQUksQ0FBQ0ssU0FBUyxDQUFDTCxlQUFlLElBQUk7Z0JBRW5ELElBQU1yQyxTQUFTLElBQUksQ0FBQ0QsUUFBUTtnQkFFNUIsSUFBSUMsUUFBUTtvQkFDVixJQUFJLENBQUMwQixVQUFVO2dCQUNqQixDQUFDO1lBQ0g7OztZQUVBaUIsS0FBQUE7bUJBQUFBLFNBQUFBLGtCQUFrQjtnQkFDaEIsSUFBTTFELGtCQUFrQixJQUFJLEVBQ3RCQyxvQkFBb0IsSUFBSTtnQkFFOUIsSUFBSSxDQUFDMEQsUUFBUSxDQUFDO29CQUNaM0QsaUJBQUFBO29CQUNBQyxtQkFBQUE7Z0JBQ0Y7WUFDRjs7O1lBRUEyRCxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYTtnQkFDWCxJQUFJLENBQUNGLGVBQWU7WUFDdEI7Ozs7WUFlT0csS0FBQUE7bUJBQVAsU0FBT0EsVUFBVUMsS0FBSyxFQUFFZixVQUFVLEVBQXlCO2dCQUF2QixJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBRzNDLHFCQUFILFVBQUEsT0FBQSxJQUFBLE9BQUEsS0FBcUIsR0FBckIsT0FBQSxHQUFBLE9BQUEsTUFBQSxPQUFBO29CQUFHQSxtQkFBSCxPQUFBLEtBQUEsU0FBQSxDQUFBLEtBQXFCO2dCQUFEO29CQUNqQzJEO2dCQUFyQixJQUFNQyxlQUFlRCxDQUFBQSxXQUFBQSxhQUFPLEVBQUNGLFNBQVMsQ0FBakJFLE1BQUFBLFVBQUFBO29CQUFrQkQ7b0JBQU9mO2lCQUFrQyxDQUEzRGdCLE9BQXFDLG1CQUFHM0Q7Z0JBRTdELE9BQU80RDtZQUNUOzs7V0F0U21CL0Y7bUJBQXFCOEYsYUFBTztBQXFSL0MsZ0JBclJtQjlGLGNBcVJaZ0csV0FBVTtBQUVqQixnQkF2Um1CaEcsY0F1UlppRyxxQkFBb0I7SUFDekI7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUVELGdCQTlSbUJqRyxjQThSWmtHLHFCQUFvQjtJQUN6QkMsV0FBVztBQUNiO0FBU0YxQyxPQUFPQyxNQUFNLENBQUMxRCxhQUFhb0csU0FBUyxFQUFFQyxjQUFXO0FBRWpELFNBQVN0RixNQUFNdUYsSUFBSSxFQUFFO0lBQ25CQyxXQUFXRCxNQUFNO0FBQ25CIn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "easy-richtextarea",
3
3
  "author": "James Smith",
4
- "version": "4.0.46",
4
+ "version": "4.0.48",
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.",
@@ -6,17 +6,13 @@ import Selection from "./selection"
6
6
  import eventMixins from "./mixins/event";
7
7
 
8
8
  const { BLUR_EVENT_TYPE,
9
- INPUT_EVENT_TYPE,
10
9
  FOCUS_EVENT_TYPE,
11
- CHANGE_EVENT_TYPE,
10
+ INPUT_EVENT_TYPE,
12
11
  SCROLL_EVENT_TYPE,
12
+ CHANGE_EVENT_TYPE,
13
13
  SELECTIONCHANGE_EVENT_TYPE } = eventTypes;
14
14
 
15
15
  export default class RichTextarea extends Element {
16
- inputHandler = (event, element) => {
17
- this.intermediateHandler(event, element);
18
- }
19
-
20
16
  blurHandler = (event, element) => {
21
17
  const eventType = BLUR_EVENT_TYPE,
22
18
  selectionChanged = true;
@@ -33,16 +29,16 @@ export default class RichTextarea extends Element {
33
29
  });
34
30
  }
35
31
 
32
+ inputHandler = (event, element) => {
33
+ this.intermediateHandler(event, element);
34
+ }
35
+
36
36
  scrollHandler = (event, element) => {
37
37
  const eventType = SCROLL_EVENT_TYPE;
38
38
 
39
39
  this.callHandlers(eventType, event, element);
40
40
  }
41
41
 
42
- contextmenuHandler = (event, element) => {
43
- event.preventDefault();
44
- }
45
-
46
42
  selectChangeHandler = (event, element) => {
47
43
  const { currentTarget } = event,
48
44
  { activeElement } = currentTarget,
@@ -78,18 +74,18 @@ export default class RichTextarea extends Element {
78
74
  eventListeners.forEach((eventListener) => {
79
75
  let { element } = eventListener;
80
76
 
81
- const { handler } = eventListener,
82
- handlerElement = element; ///
83
-
84
- element = this; ///
77
+ const { handler } = eventListener;
85
78
 
86
- if ( (handler !== this.inputHandler)
87
- && (handler !== this.blurHandler)
79
+ if ( (handler !== this.blurHandler)
88
80
  && (handler !== this.focusHandler)
81
+ && (handler !== this.inputHandler)
89
82
  && (handler !== this.scrollHandler)
90
- && (handler !== this.contextmenuHandler)
91
83
  && (handler !== this.selectChangeHandler) ) {
92
84
 
85
+ const handlerElement = element; ///
86
+
87
+ element = this; ///
88
+
93
89
  handler.call(handlerElement, ...remainingArguments, element);
94
90
  }
95
91
  });
@@ -123,18 +119,6 @@ export default class RichTextarea extends Element {
123
119
  return selection;
124
120
  }
125
121
 
126
- getSelectedContent() {
127
- const content = this.getContent(),
128
- selection = this.getSelection(),
129
- endPosition = selection.getEndPosition(),
130
- startPosition = selection.getStartPosition(),
131
- start = startPosition, ///
132
- end = endPosition, ///
133
- selectedContent = content.slice(start, end);
134
-
135
- return selectedContent;
136
- }
137
-
138
122
  hasContentChanged() {
139
123
  const content = this.getContent(),
140
124
  previousContent = this.getPreviousContent(),
@@ -193,12 +177,12 @@ export default class RichTextarea extends Element {
193
177
  }
194
178
 
195
179
  activate() {
196
- this.on(INPUT_EVENT_TYPE, this.inputHandler);
197
-
198
180
  this.on(BLUR_EVENT_TYPE, this.blurHandler);
199
181
 
200
182
  this.on(FOCUS_EVENT_TYPE, this.focusHandler);
201
183
 
184
+ this.on(INPUT_EVENT_TYPE, this.inputHandler);
185
+
202
186
  this.on(SCROLL_EVENT_TYPE, this.scrollHandler);
203
187
 
204
188
  document.on(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
@@ -207,12 +191,12 @@ export default class RichTextarea extends Element {
207
191
  }
208
192
 
209
193
  deactivate() {
210
- this.off(INPUT_EVENT_TYPE, this.inputHandler);
211
-
212
194
  this.off(BLUR_EVENT_TYPE, this.blurHandler);
213
195
 
214
196
  this.off(FOCUS_EVENT_TYPE, this.focusHandler);
215
197
 
198
+ this.off(INPUT_EVENT_TYPE, this.inputHandler);
199
+
216
200
  this.off(SCROLL_EVENT_TYPE, this.scrollHandler);
217
201
 
218
202
  document.off(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
@@ -245,14 +229,21 @@ export default class RichTextarea extends Element {
245
229
  }
246
230
 
247
231
  didMount() {
232
+ const content = this.getContent(),
233
+ selection = this.getSelection(),
234
+ previousContent = content, ///
235
+ previousSelection = selection; ///
236
+
237
+ this.setPreviousContent(previousContent);
238
+
239
+ this.setPreviousSelection(previousSelection);
240
+
248
241
  const { onBlur, onFocus, onScroll, onChange } = this.properties,
249
242
  blurHandler = onBlur, ///
250
243
  focusHandler = onFocus, ///
251
244
  scrollHandler = onScroll, ///
252
245
  changeHandler = onChange; ///
253
246
 
254
- this.updateInitialState();
255
-
256
247
  blurHandler && this.onBlur(blurHandler, this);
257
248
 
258
249
  focusHandler && this.onFocus(focusHandler, this);
@@ -284,17 +275,6 @@ export default class RichTextarea extends Element {
284
275
  }
285
276
  }
286
277
 
287
- updateInitialState() {
288
- const content = this.getContent(),
289
- selection = this.getSelection(),
290
- previousContent = content, ///
291
- previousSelection = selection; ///
292
-
293
- this.setPreviousContent(previousContent);
294
-
295
- this.setPreviousSelection(previousSelection);
296
- }
297
-
298
278
  setInitialState() {
299
279
  const previousContent = null,
300
280
  previousSelection = null;