easy-richtextarea 4.0.45 → 4.0.47
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/example.js +52 -13
- package/lib/richTextarea.js +51 -12
- package/package.json +1 -1
- package/src/richTextarea.js +80 -19
package/lib/richTextarea.js
CHANGED
|
@@ -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,
|
|
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, CUT_EVENT_TYPE = _easy.eventTypes.CUT_EVENT_TYPE, COPY_EVENT_TYPE = _easy.eventTypes.COPY_EVENT_TYPE, PASTE_EVENT_TYPE = _easy.eventTypes.PASTE_EVENT_TYPE, KEYDOWN_EVENT_TYPE = _easy.eventTypes.KEYDOWN_EVENT_TYPE, MOUSEDOWN_EVENT_TYPE = _easy.eventTypes.MOUSEDOWN_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,12 +214,27 @@ 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), "
|
|
225
|
-
|
|
224
|
+
_defineProperty(_assertThisInitialized(_this), "cutHandler", function(event, element) {
|
|
225
|
+
///
|
|
226
|
+
});
|
|
227
|
+
_defineProperty(_assertThisInitialized(_this), "copyHandler", function(event, element) {
|
|
228
|
+
///
|
|
229
|
+
});
|
|
230
|
+
_defineProperty(_assertThisInitialized(_this), "pasteHandler", function(event, element) {
|
|
231
|
+
///
|
|
232
|
+
});
|
|
233
|
+
_defineProperty(_assertThisInitialized(_this), "keyDownHandler", function(event, element) {
|
|
234
|
+
///
|
|
235
|
+
});
|
|
236
|
+
_defineProperty(_assertThisInitialized(_this), "mouseDownHandler", function(event, element) {
|
|
237
|
+
///
|
|
226
238
|
});
|
|
227
239
|
_defineProperty(_assertThisInitialized(_this), "selectChangeHandler", function(event, element) {
|
|
228
240
|
var currentTarget = event.currentTarget, activeElement = currentTarget.activeElement, domElement = _this.getDOMElement();
|
|
@@ -254,10 +266,11 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
254
266
|
var eventListeners = this.findEventListeners(eventType);
|
|
255
267
|
eventListeners.forEach(function(eventListener) {
|
|
256
268
|
var element = eventListener.element;
|
|
257
|
-
var handler = eventListener.handler
|
|
258
|
-
|
|
259
|
-
if (handler !== _this.inputHandler && handler !== _this.blurHandler && handler !== _this.focusHandler && handler !== _this.scrollHandler && handler !== _this.contextmenuHandler && handler !== _this.selectChangeHandler) {
|
|
269
|
+
var handler = eventListener.handler;
|
|
270
|
+
if (handler !== _this.blurHandler && handler !== _this.focusHandler && handler !== _this.inputHandler && handler !== _this.scrollHandler && handler !== _this.cutHandler && handler !== _this.copyHandler && handler !== _this.pasteHandler && handler !== _this.keyDownHandler && handler !== _this.mouseDownHandler && handler !== _this.selectChangeHandler) {
|
|
260
271
|
var _handler;
|
|
272
|
+
var handlerElement = element; ///
|
|
273
|
+
element = _this; ///
|
|
261
274
|
(_handler = handler).call.apply(_handler, [
|
|
262
275
|
handlerElement
|
|
263
276
|
].concat(_toConsumableArray(remainingArguments), [
|
|
@@ -267,6 +280,13 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
267
280
|
});
|
|
268
281
|
}
|
|
269
282
|
},
|
|
283
|
+
{
|
|
284
|
+
key: "isReadOnly",
|
|
285
|
+
value: function isReadOnly() {
|
|
286
|
+
var domElement = this.getDOMElement(), readOnly = domElement.readOnly;
|
|
287
|
+
return readOnly;
|
|
288
|
+
}
|
|
289
|
+
},
|
|
270
290
|
{
|
|
271
291
|
key: "isActive",
|
|
272
292
|
value: function isActive() {
|
|
@@ -309,6 +329,15 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
309
329
|
return selectionChanged;
|
|
310
330
|
}
|
|
311
331
|
},
|
|
332
|
+
{
|
|
333
|
+
key: "setReadOnly",
|
|
334
|
+
value: function setReadOnly(readOnly) {
|
|
335
|
+
var domElement = this.getDOMElement();
|
|
336
|
+
Object.assign(domElement, {
|
|
337
|
+
readOnly: readOnly
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
},
|
|
312
341
|
{
|
|
313
342
|
key: "setContent",
|
|
314
343
|
value: function setContent(content) {
|
|
@@ -338,10 +367,15 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
338
367
|
{
|
|
339
368
|
key: "activate",
|
|
340
369
|
value: function activate() {
|
|
341
|
-
this.on(INPUT_EVENT_TYPE, this.inputHandler);
|
|
342
370
|
this.on(BLUR_EVENT_TYPE, this.blurHandler);
|
|
343
371
|
this.on(FOCUS_EVENT_TYPE, this.focusHandler);
|
|
372
|
+
this.on(INPUT_EVENT_TYPE, this.inputHandler);
|
|
344
373
|
this.on(SCROLL_EVENT_TYPE, this.scrollHandler);
|
|
374
|
+
this.on(CUT_EVENT_TYPE, this.cutHandler);
|
|
375
|
+
this.on(COPY_EVENT_TYPE, this.copyHandler);
|
|
376
|
+
this.on(PASTE_EVENT_TYPE, this.pasteHandler);
|
|
377
|
+
this.on(KEYDOWN_EVENT_TYPE, this.keyDownHandler);
|
|
378
|
+
this.on(MOUSEDOWN_EVENT_TYPE, this.mouseDownHandler);
|
|
345
379
|
_easy.document.on(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
|
|
346
380
|
this.addClass("active");
|
|
347
381
|
}
|
|
@@ -349,10 +383,15 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
349
383
|
{
|
|
350
384
|
key: "deactivate",
|
|
351
385
|
value: function deactivate() {
|
|
352
|
-
this.off(INPUT_EVENT_TYPE, this.inputHandler);
|
|
353
386
|
this.off(BLUR_EVENT_TYPE, this.blurHandler);
|
|
354
387
|
this.off(FOCUS_EVENT_TYPE, this.focusHandler);
|
|
388
|
+
this.off(INPUT_EVENT_TYPE, this.inputHandler);
|
|
355
389
|
this.off(SCROLL_EVENT_TYPE, this.scrollHandler);
|
|
390
|
+
this.off(CUT_EVENT_TYPE, this.cutHandler);
|
|
391
|
+
this.off(COPY_EVENT_TYPE, this.copyHandler);
|
|
392
|
+
this.off(PASTE_EVENT_TYPE, this.pasteHandler);
|
|
393
|
+
this.off(KEYDOWN_EVENT_TYPE, this.keyDownHandler);
|
|
394
|
+
this.off(MOUSEDOWN_EVENT_TYPE, this.mouseDownHandler);
|
|
356
395
|
_easy.document.off(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
|
|
357
396
|
this.removeClass("active");
|
|
358
397
|
}
|
|
@@ -469,4 +508,4 @@ function defer(func) {
|
|
|
469
508
|
setTimeout(func, 0);
|
|
470
509
|
}
|
|
471
510
|
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBldmVudE1peGlucyBmcm9tIFwiLi9taXhpbnMvZXZlbnRcIjtcclxuXHJcbmNvbnN0IHsgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgIElOUFVUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICBTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJpY2hUZXh0YXJlYSBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGJsdXJIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNjcm9sbEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjdXJyZW50VGFyZ2V0IH0gPSBldmVudCxcclxuICAgICAgICAgIHsgYWN0aXZlRWxlbWVudCB9ID0gY3VycmVudFRhcmdldCxcclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlRWxlbWVudCA9PT0gZG9tRWxlbWVudCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpO1xyXG5cclxuICAgIGlmIChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGNhbGxIYW5kbGVycyhldmVudFR5cGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmZpbmRFdmVudExpc3RlbmVycyhldmVudFR5cGUpO1xyXG5cclxuICAgIGV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGV2ZW50TGlzdGVuZXIpID0+IHtcclxuICAgICAgbGV0IHsgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGNvbnN0IHsgaGFuZGxlciB9ID0gZXZlbnRMaXN0ZW5lcixcclxuICAgICAgICAgICAgaGFuZGxlckVsZW1lbnQgPSBlbGVtZW50OyAvLy9cclxuXHJcbiAgICAgIGVsZW1lbnQgPSB0aGlzOyAvLy9cclxuXHJcbiAgICAgIGlmICggKGhhbmRsZXIgIT09IHRoaXMuaW5wdXRIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmJsdXJIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5zY3JvbGxIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmNvbnRleHRtZW51SGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKSApIHtcclxuXHJcbiAgICAgICAgaGFuZGxlci5jYWxsKGhhbmRsZXJFbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKCkge1xyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5oYXNDbGFzcyhcImFjdGl2ZVwiKTtcclxuXHJcbiAgICByZXR1cm4gYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudCgpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHsgdmFsdWUgfSA9IGRvbUVsZW1lbnQsXHJcbiAgICAgICAgICBjb250ZW50ID0gdmFsdWU7ICAvLy9cclxuXHJcbiAgICByZXR1cm4gY29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5mcm9tRE9NRWxlbWVudChkb21FbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRDb250ZW50KCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGVkQ29udGVudCA9IGNvbnRlbnQuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gcHJldmlvdXNDb250ZW50KSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gIWNvbnRlbnRQcmV2aW91c0NvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyhwcmV2aW91c1NlbGVjdGlvbiksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gIXNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uQ2hhbmdlZDtcclxuICB9XHJcblxyXG4gIHNldENvbnRlbnQoY29udGVudCwgc2V0UHJldmlvdXNDb250ZW50ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMub24oSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9uKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vZmYoSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoRk9DVVNfRVZFTlRfVFlQRSwgdGhpcy5mb2N1c0hhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgY29uc3QgeyBwcmV2aW91c0NvbnRlbnQgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzU2VsZWN0aW9uIH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCkge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzQ29udGVudFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkJsdXIsIG9uRm9jdXMsIG9uU2Nyb2xsLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXIsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlOyAvLy9cclxuXHJcbiAgICB0aGlzLnVwZGF0ZUluaXRpYWxTdGF0ZSgpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkJsdXIsIG9uRm9jdXMsIG9uU2Nyb2xsLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub2ZmRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub2ZmU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpO1xyXG5cclxuICAgIGlmIChhY3RpdmUpIHtcclxuICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xyXG4gICAgY29uc3QgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50LFxyXG4gICAgICBwcmV2aW91c1NlbGVjdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXNlKCkge1xyXG4gICAgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJ0ZXh0YXJlYVwiO1xyXG5cclxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXHJcbiAgICBcIm9uQmx1clwiLFxyXG4gICAgXCJvbkZvY3VzXCIsXHJcbiAgICBcIm9uU2Nyb2xsXCIsXHJcbiAgICBcIm9uQ2hhbmdlXCJcclxuICBdO1xyXG5cclxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XHJcbiAgICBjbGFzc05hbWU6IFwicmljaFwiXHJcbiAgfTtcclxuXHJcbiAgc3RhdGljIGZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCByaWNoVGV4dGFyZWEgPSBFbGVtZW50LmZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcclxuXHJcbiAgICByZXR1cm4gcmljaFRleHRhcmVhO1xyXG4gIH1cclxufVxyXG5cclxuT2JqZWN0LmFzc2lnbihSaWNoVGV4dGFyZWEucHJvdG90eXBlLCBldmVudE1peGlucyk7XHJcblxyXG5mdW5jdGlvbiBkZWZlcihmdW5jKSB7XHJcbiAgc2V0VGltZW91dChmdW5jLCAwKTtcclxufVxyXG4iXSwibmFtZXMiOlsiUmljaFRleHRhcmVhIiwiQkxVUl9FVkVOVF9UWVBFIiwiZXZlbnRUeXBlcyIsIklOUFVUX0VWRU5UX1RZUEUiLCJGT0NVU19FVkVOVF9UWVBFIiwiQ0hBTkdFX0VWRU5UX1RZUEUiLCJTQ1JPTExfRVZFTlRfVFlQRSIsIlNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFIiwiaW5wdXRIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50IiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsImJsdXJIYW5kbGVyIiwiZXZlbnRUeXBlIiwic2VsZWN0aW9uQ2hhbmdlZCIsImZvY3VzSGFuZGxlciIsImRlZmVyIiwic2Nyb2xsSGFuZGxlciIsImNhbGxIYW5kbGVycyIsImNvbnRleHRtZW51SGFuZGxlciIsInByZXZlbnREZWZhdWx0Iiwic2VsZWN0Q2hhbmdlSGFuZGxlciIsImN1cnJlbnRUYXJnZXQiLCJhY3RpdmVFbGVtZW50IiwiZG9tRWxlbWVudCIsImdldERPTUVsZW1lbnQiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwiY29udGVudCIsImdldENvbnRlbnQiLCJzZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJjb250ZW50Q2hhbmdlZCIsImhhc0NvbnRlbnRDaGFuZ2VkIiwicHJldmlvdXNDb250ZW50IiwicHJldmlvdXNTZWxlY3Rpb24iLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImV2ZW50TGlzdGVuZXJzIiwiZmluZEV2ZW50TGlzdGVuZXJzIiwiZm9yRWFjaCIsImV2ZW50TGlzdGVuZXIiLCJoYW5kbGVyIiwiaGFuZGxlckVsZW1lbnQiLCJjYWxsIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsInZhbHVlIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJnZXRTZWxlY3RlZENvbnRlbnQiLCJlbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzdGFydCIsImVuZCIsInNlbGVjdGVkQ29udGVudCIsInNsaWNlIiwiZ2V0UHJldmlvdXNDb250ZW50IiwiY29udGVudFByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzU2VsZWN0aW9uIiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJzZXRDb250ZW50IiwiT2JqZWN0IiwiYXNzaWduIiwic2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImFjdGl2YXRlIiwib24iLCJkb2N1bWVudCIsImFkZENsYXNzIiwiZGVhY3RpdmF0ZSIsIm9mZiIsInJlbW92ZUNsYXNzIiwiZ2V0U3RhdGUiLCJ1cGRhdGVTdGF0ZSIsImRpZE1vdW50IiwicHJvcGVydGllcyIsIm9uQmx1ciIsIm9uRm9jdXMiLCJvblNjcm9sbCIsIm9uQ2hhbmdlIiwiY2hhbmdlSGFuZGxlciIsInVwZGF0ZUluaXRpYWxTdGF0ZSIsIndpbGxVbm1vdW50Iiwib2ZmQmx1ciIsIm9mZkZvY3VzIiwib2ZmU2Nyb2xsIiwib2ZmQ2hhbmdlIiwic2V0SW5pdGlhbFN0YXRlIiwic2V0U3RhdGUiLCJpbml0aWFsaXNlIiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJwcm90b3R5cGUiLCJldmVudE1peGlucyIsImZ1bmMiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQWNxQkE7OztvQkFaeUI7OERBRXhCOzBEQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
511
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBldmVudE1peGlucyBmcm9tIFwiLi9taXhpbnMvZXZlbnRcIjtcclxuXHJcbmNvbnN0IHsgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgSU5QVVRfRVZFTlRfVFlQRSxcclxuICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICBDVVRfRVZFTlRfVFlQRSxcclxuICAgICAgICBDT1BZX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgUEFTVEVfRVZFTlRfVFlQRSxcclxuICAgICAgICBLRVlET1dOX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgTU9VU0VET1dOX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSA9IGV2ZW50VHlwZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBibHVySGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCBldmVudFR5cGUsIHNlbGVjdGlvbkNoYW5nZWQpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCBldmVudFR5cGUsIHNlbGVjdGlvbkNoYW5nZWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbnB1dEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGN1dEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgY29weUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgcGFzdGVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICAvLy9cclxuICB9XHJcblxyXG4gIGtleURvd25IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICAvLy9cclxuICB9XHJcblxyXG4gIG1vdXNlRG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjdXJyZW50VGFyZ2V0IH0gPSBldmVudCxcclxuICAgICAgICAgIHsgYWN0aXZlRWxlbWVudCB9ID0gY3VycmVudFRhcmdldCxcclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlRWxlbWVudCA9PT0gZG9tRWxlbWVudCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpO1xyXG5cclxuICAgIGlmIChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGNhbGxIYW5kbGVycyhldmVudFR5cGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmZpbmRFdmVudExpc3RlbmVycyhldmVudFR5cGUpO1xyXG5cclxuICAgIGV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGV2ZW50TGlzdGVuZXIpID0+IHtcclxuICAgICAgbGV0IHsgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGNvbnN0IHsgaGFuZGxlciB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGlmICggKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuZm9jdXNIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmlucHV0SGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5zY3JvbGxIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmN1dEhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuY29weUhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMucGFzdGVIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmtleURvd25IYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLm1vdXNlRG93bkhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2VsZWN0Q2hhbmdlSGFuZGxlcikgKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IGhhbmRsZXJFbGVtZW50ID0gZWxlbWVudDsgLy8vXHJcblxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzOyAvLy9cclxuXHJcbiAgICAgICAgaGFuZGxlci5jYWxsKGhhbmRsZXJFbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzUmVhZE9ubHkoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHJlYWRPbmx5IH0gPSBkb21FbGVtZW50O1xyXG5cclxuICAgIHJldHVybiByZWFkT25seTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKCkge1xyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5oYXNDbGFzcyhcImFjdGl2ZVwiKTtcclxuXHJcbiAgICByZXR1cm4gYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudCgpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHsgdmFsdWUgfSA9IGRvbUVsZW1lbnQsXHJcbiAgICAgICAgICBjb250ZW50ID0gdmFsdWU7ICAvLy9cclxuXHJcbiAgICByZXR1cm4gY29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5mcm9tRE9NRWxlbWVudChkb21FbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRDb250ZW50KCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGVkQ29udGVudCA9IGNvbnRlbnQuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gcHJldmlvdXNDb250ZW50KSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gIWNvbnRlbnRQcmV2aW91c0NvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyhwcmV2aW91c1NlbGVjdGlvbiksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gIXNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uQ2hhbmdlZDtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHJlYWRPbmx5XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldENvbnRlbnQoY29udGVudCwgc2V0UHJldmlvdXNDb250ZW50ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMub24oQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihDT1BZX0VWRU5UX1RZUEUsIHRoaXMuY29weUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oUEFTVEVfRVZFTlRfVFlQRSwgdGhpcy5wYXN0ZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oS0VZRE9XTl9FVkVOVF9UWVBFLCB0aGlzLmtleURvd25IYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKE1PVVNFRE9XTl9FVkVOVF9UWVBFLCB0aGlzLm1vdXNlRG93bkhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9uKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKENVVF9FVkVOVF9UWVBFLCB0aGlzLmN1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKENPUFlfRVZFTlRfVFlQRSwgdGhpcy5jb3B5SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoUEFTVEVfRVZFTlRfVFlQRSwgdGhpcy5wYXN0ZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoTU9VU0VET1dOX0VWRU5UX1RZUEUsIHRoaXMubW91c2VEb3duSGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub2ZmKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c0NvbnRlbnQoKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzQ29udGVudCB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IHsgcHJldmlvdXNTZWxlY3Rpb24gfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNTZWxlY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIHRoaXMudXBkYXRlSW5pdGlhbFN0YXRlKCk7XHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vbkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9uRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub25TY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgd2lsbFVubW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyLCAvLy9cclxuICAgICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZTsgLy8vXHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vZmZCbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vZmZGb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxTdGF0ZSgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBudWxsLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwcmV2aW91c0NvbnRlbnQsXHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2UoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25CbHVyXCIsXHJcbiAgICBcIm9uRm9jdXNcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25DaGFuZ2VcIlxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IHJpY2hUZXh0YXJlYSA9IEVsZW1lbnQuZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xyXG5cclxuICAgIHJldHVybiByaWNoVGV4dGFyZWE7XHJcbiAgfVxyXG59XHJcblxyXG5PYmplY3QuYXNzaWduKFJpY2hUZXh0YXJlYS5wcm90b3R5cGUsIGV2ZW50TWl4aW5zKTtcclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJCTFVSX0VWRU5UX1RZUEUiLCJldmVudFR5cGVzIiwiRk9DVVNfRVZFTlRfVFlQRSIsIklOUFVUX0VWRU5UX1RZUEUiLCJTQ1JPTExfRVZFTlRfVFlQRSIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiQ1VUX0VWRU5UX1RZUEUiLCJDT1BZX0VWRU5UX1RZUEUiLCJQQVNURV9FVkVOVF9UWVBFIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiTU9VU0VET1dOX0VWRU5UX1RZUEUiLCJTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSIsImJsdXJIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50IiwiZXZlbnRUeXBlIiwic2VsZWN0aW9uQ2hhbmdlZCIsImludGVybWVkaWF0ZUhhbmRsZXIiLCJmb2N1c0hhbmRsZXIiLCJkZWZlciIsImlucHV0SGFuZGxlciIsInNjcm9sbEhhbmRsZXIiLCJjYWxsSGFuZGxlcnMiLCJjdXRIYW5kbGVyIiwiY29weUhhbmRsZXIiLCJwYXN0ZUhhbmRsZXIiLCJrZXlEb3duSGFuZGxlciIsIm1vdXNlRG93bkhhbmRsZXIiLCJzZWxlY3RDaGFuZ2VIYW5kbGVyIiwiY3VycmVudFRhcmdldCIsImFjdGl2ZUVsZW1lbnQiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsImhhc1NlbGVjdGlvbkNoYW5nZWQiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJwcmV2aW91c0NvbnRlbnQiLCJwcmV2aW91c1NlbGVjdGlvbiIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZXZlbnRMaXN0ZW5lcnMiLCJmaW5kRXZlbnRMaXN0ZW5lcnMiLCJmb3JFYWNoIiwiZXZlbnRMaXN0ZW5lciIsImhhbmRsZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJpc1JlYWRPbmx5IiwicmVhZE9ubHkiLCJpc0FjdGl2ZSIsImFjdGl2ZSIsImhhc0NsYXNzIiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImdldFNlbGVjdGVkQ29udGVudCIsImVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInN0YXJ0IiwiZW5kIiwic2VsZWN0ZWRDb250ZW50Iiwic2xpY2UiLCJnZXRQcmV2aW91c0NvbnRlbnQiLCJjb250ZW50UHJldmlvdXNDb250ZW50IiwiZ2V0UHJldmlvdXNTZWxlY3Rpb24iLCJzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbiIsImlzRXF1YWxUbyIsInNldFJlYWRPbmx5IiwiT2JqZWN0IiwiYXNzaWduIiwic2V0Q29udGVudCIsInNldFNlbGVjdGlvbiIsInNlbGVjdGlvblN0YXJ0UG9zaXRpb24iLCJzZWxlY3Rpb25FbmRQb3NpdGlvbiIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJhY3RpdmF0ZSIsIm9uIiwiZG9jdW1lbnQiLCJhZGRDbGFzcyIsImRlYWN0aXZhdGUiLCJvZmYiLCJyZW1vdmVDbGFzcyIsImdldFN0YXRlIiwidXBkYXRlU3RhdGUiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJvbkJsdXIiLCJvbkZvY3VzIiwib25TY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJ1cGRhdGVJbml0aWFsU3RhdGUiLCJ3aWxsVW5tb3VudCIsIm9mZkJsdXIiLCJvZmZGb2N1cyIsIm9mZlNjcm9sbCIsIm9mZkNoYW5nZSIsInNldEluaXRpYWxTdGF0ZSIsInNldFN0YXRlIiwiaW5pdGlhbGlzZSIsImZyb21DbGFzcyIsIkNsYXNzIiwiRWxlbWVudCIsInJpY2hUZXh0YXJlYSIsInRhZ05hbWUiLCJpZ25vcmVkUHJvcGVydGllcyIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwicHJvdG90eXBlIiwiZXZlbnRNaXhpbnMiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFtQnFCQTs7O29CQWpCeUI7OERBRXhCOzBEQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFeEIsSUFBUUMsa0JBVStCQyxnQkFB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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.
|
|
4
|
+
"version": "4.0.47",
|
|
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.",
|
package/src/richTextarea.js
CHANGED
|
@@ -6,17 +6,18 @@ 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
|
-
|
|
10
|
+
INPUT_EVENT_TYPE,
|
|
12
11
|
SCROLL_EVENT_TYPE,
|
|
12
|
+
CHANGE_EVENT_TYPE,
|
|
13
|
+
CUT_EVENT_TYPE,
|
|
14
|
+
COPY_EVENT_TYPE,
|
|
15
|
+
PASTE_EVENT_TYPE,
|
|
16
|
+
KEYDOWN_EVENT_TYPE,
|
|
17
|
+
MOUSEDOWN_EVENT_TYPE,
|
|
13
18
|
SELECTIONCHANGE_EVENT_TYPE } = eventTypes;
|
|
14
19
|
|
|
15
20
|
export default class RichTextarea extends Element {
|
|
16
|
-
inputHandler = (event, element) => {
|
|
17
|
-
this.intermediateHandler(event, element);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
21
|
blurHandler = (event, element) => {
|
|
21
22
|
const eventType = BLUR_EVENT_TYPE,
|
|
22
23
|
selectionChanged = true;
|
|
@@ -33,14 +34,34 @@ export default class RichTextarea extends Element {
|
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
36
|
|
|
37
|
+
inputHandler = (event, element) => {
|
|
38
|
+
this.intermediateHandler(event, element);
|
|
39
|
+
}
|
|
40
|
+
|
|
36
41
|
scrollHandler = (event, element) => {
|
|
37
42
|
const eventType = SCROLL_EVENT_TYPE;
|
|
38
43
|
|
|
39
44
|
this.callHandlers(eventType, event, element);
|
|
40
45
|
}
|
|
41
46
|
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
cutHandler = (event, element) => {
|
|
48
|
+
///
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
copyHandler = (event, element) => {
|
|
52
|
+
///
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
pasteHandler = (event, element) => {
|
|
56
|
+
///
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
keyDownHandler = (event, element) => {
|
|
60
|
+
///
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
mouseDownHandler = (event, element) => {
|
|
64
|
+
///
|
|
44
65
|
}
|
|
45
66
|
|
|
46
67
|
selectChangeHandler = (event, element) => {
|
|
@@ -78,23 +99,35 @@ export default class RichTextarea extends Element {
|
|
|
78
99
|
eventListeners.forEach((eventListener) => {
|
|
79
100
|
let { element } = eventListener;
|
|
80
101
|
|
|
81
|
-
const { handler } = eventListener
|
|
82
|
-
handlerElement = element; ///
|
|
102
|
+
const { handler } = eventListener;
|
|
83
103
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if ( (handler !== this.inputHandler)
|
|
87
|
-
&& (handler !== this.blurHandler)
|
|
104
|
+
if ( (handler !== this.blurHandler)
|
|
88
105
|
&& (handler !== this.focusHandler)
|
|
106
|
+
&& (handler !== this.inputHandler)
|
|
89
107
|
&& (handler !== this.scrollHandler)
|
|
90
|
-
&& (handler !== this.
|
|
108
|
+
&& (handler !== this.cutHandler)
|
|
109
|
+
&& (handler !== this.copyHandler)
|
|
110
|
+
&& (handler !== this.pasteHandler)
|
|
111
|
+
&& (handler !== this.keyDownHandler)
|
|
112
|
+
&& (handler !== this.mouseDownHandler)
|
|
91
113
|
&& (handler !== this.selectChangeHandler) ) {
|
|
92
114
|
|
|
115
|
+
const handlerElement = element; ///
|
|
116
|
+
|
|
117
|
+
element = this; ///
|
|
118
|
+
|
|
93
119
|
handler.call(handlerElement, ...remainingArguments, element);
|
|
94
120
|
}
|
|
95
121
|
});
|
|
96
122
|
}
|
|
97
123
|
|
|
124
|
+
isReadOnly() {
|
|
125
|
+
const domElement = this.getDOMElement(),
|
|
126
|
+
{ readOnly } = domElement;
|
|
127
|
+
|
|
128
|
+
return readOnly;
|
|
129
|
+
}
|
|
130
|
+
|
|
98
131
|
isActive() {
|
|
99
132
|
const active = this.hasClass("active");
|
|
100
133
|
|
|
@@ -146,6 +179,14 @@ export default class RichTextarea extends Element {
|
|
|
146
179
|
return selectionChanged;
|
|
147
180
|
}
|
|
148
181
|
|
|
182
|
+
setReadOnly(readOnly) {
|
|
183
|
+
const domElement = this.getDOMElement();
|
|
184
|
+
|
|
185
|
+
Object.assign(domElement, {
|
|
186
|
+
readOnly
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
|
|
149
190
|
setContent(content, setPreviousContent = true) {
|
|
150
191
|
const value = content, ///
|
|
151
192
|
domElement = this.getDOMElement();
|
|
@@ -178,28 +219,48 @@ export default class RichTextarea extends Element {
|
|
|
178
219
|
}
|
|
179
220
|
|
|
180
221
|
activate() {
|
|
181
|
-
this.on(INPUT_EVENT_TYPE, this.inputHandler);
|
|
182
|
-
|
|
183
222
|
this.on(BLUR_EVENT_TYPE, this.blurHandler);
|
|
184
223
|
|
|
185
224
|
this.on(FOCUS_EVENT_TYPE, this.focusHandler);
|
|
186
225
|
|
|
226
|
+
this.on(INPUT_EVENT_TYPE, this.inputHandler);
|
|
227
|
+
|
|
187
228
|
this.on(SCROLL_EVENT_TYPE, this.scrollHandler);
|
|
188
229
|
|
|
230
|
+
this.on(CUT_EVENT_TYPE, this.cutHandler);
|
|
231
|
+
|
|
232
|
+
this.on(COPY_EVENT_TYPE, this.copyHandler);
|
|
233
|
+
|
|
234
|
+
this.on(PASTE_EVENT_TYPE, this.pasteHandler);
|
|
235
|
+
|
|
236
|
+
this.on(KEYDOWN_EVENT_TYPE, this.keyDownHandler);
|
|
237
|
+
|
|
238
|
+
this.on(MOUSEDOWN_EVENT_TYPE, this.mouseDownHandler);
|
|
239
|
+
|
|
189
240
|
document.on(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
|
|
190
241
|
|
|
191
242
|
this.addClass("active");
|
|
192
243
|
}
|
|
193
244
|
|
|
194
245
|
deactivate() {
|
|
195
|
-
this.off(INPUT_EVENT_TYPE, this.inputHandler);
|
|
196
|
-
|
|
197
246
|
this.off(BLUR_EVENT_TYPE, this.blurHandler);
|
|
198
247
|
|
|
199
248
|
this.off(FOCUS_EVENT_TYPE, this.focusHandler);
|
|
200
249
|
|
|
250
|
+
this.off(INPUT_EVENT_TYPE, this.inputHandler);
|
|
251
|
+
|
|
201
252
|
this.off(SCROLL_EVENT_TYPE, this.scrollHandler);
|
|
202
253
|
|
|
254
|
+
this.off(CUT_EVENT_TYPE, this.cutHandler);
|
|
255
|
+
|
|
256
|
+
this.off(COPY_EVENT_TYPE, this.copyHandler);
|
|
257
|
+
|
|
258
|
+
this.off(PASTE_EVENT_TYPE, this.pasteHandler);
|
|
259
|
+
|
|
260
|
+
this.off(KEYDOWN_EVENT_TYPE, this.keyDownHandler);
|
|
261
|
+
|
|
262
|
+
this.off(MOUSEDOWN_EVENT_TYPE, this.mouseDownHandler);
|
|
263
|
+
|
|
203
264
|
document.off(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
|
|
204
265
|
|
|
205
266
|
this.removeClass("active");
|