@libs-ui/components-inputs-mention 0.2.356-38 → 0.2.356-40
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/esm2022/defines/utils.define.mjs +5 -6
- package/esm2022/list/list.component.mjs +2 -3
- package/esm2022/mention.directive.mjs +15 -16
- package/fesm2022/libs-ui-components-inputs-mention.mjs +19 -22
- package/fesm2022/libs-ui-components-inputs-mention.mjs.map +1 -1
- package/list/list.component.d.ts +4 -4
- package/mention.directive.d.ts +16 -16
- package/package.json +6 -6
|
@@ -28,7 +28,7 @@ const insertValueToContentEditable = (start, end, text) => {
|
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
30
|
const sel = window.getSelection();
|
|
31
|
-
if (!sel
|
|
31
|
+
if (!sel?.anchorNode || !sel.getRangeAt || !sel.rangeCount) {
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
let range = sel.getRangeAt(0);
|
|
@@ -63,7 +63,7 @@ const insertValueToContentEditable = (start, end, text) => {
|
|
|
63
63
|
};
|
|
64
64
|
export const getTextBeforeCursor = () => {
|
|
65
65
|
const sel = window.getSelection();
|
|
66
|
-
if (!sel
|
|
66
|
+
if (!sel?.anchorNode) {
|
|
67
67
|
return undefined;
|
|
68
68
|
}
|
|
69
69
|
const range = sel.getRangeAt(0);
|
|
@@ -105,7 +105,7 @@ export const getCaretPosition = (el, iframe) => {
|
|
|
105
105
|
const val = el.value;
|
|
106
106
|
return val.slice(0, el.selectionStart || undefined).length;
|
|
107
107
|
}
|
|
108
|
-
const selObj = getWindowSelection(iframe);
|
|
108
|
+
const selObj = getWindowSelection(iframe);
|
|
109
109
|
if (selObj && selObj.rangeCount > 0) {
|
|
110
110
|
const selRange = selObj.getRangeAt(0);
|
|
111
111
|
const preCaretRange = selRange.cloneRange();
|
|
@@ -192,7 +192,7 @@ const localToRelativeCoordinates = (ctx, element, coordinates) => {
|
|
|
192
192
|
}
|
|
193
193
|
obj = element;
|
|
194
194
|
iframe = ctx ? ctx.iframe : null;
|
|
195
|
-
while ((obj !== getDocument(
|
|
195
|
+
while ((obj !== getDocument()?.body || ctx.windowParent) && obj !== null) {
|
|
196
196
|
if (ctx.parent !== null && ctx.parent === obj) {
|
|
197
197
|
break;
|
|
198
198
|
}
|
|
@@ -218,7 +218,6 @@ const setEndOfContentEditable = (contentEditableElement) => {
|
|
|
218
218
|
selection?.removeAllRanges(); //remove any selections already made
|
|
219
219
|
selection?.addRange(range); //make the range you have just created the visible selection
|
|
220
220
|
}
|
|
221
|
-
return;
|
|
222
221
|
};
|
|
223
222
|
export const insertTextAtCaret = (element, text) => {
|
|
224
223
|
if (window.getSelection) {
|
|
@@ -276,4 +275,4 @@ const isOrContains = (node, container) => {
|
|
|
276
275
|
}
|
|
277
276
|
return false;
|
|
278
277
|
};
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9kZWZpbmVzL3V0aWxzLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBb0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUN2RCxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFakIsT0FBTztJQUNULENBQUM7SUFDRCxFQUFFLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEVBQUU7SUFDL0MsT0FBTyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLE1BQXlCLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBZ0MsRUFBRTtJQUMxSyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQyxR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VUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFBBVFRFUk5fSU5TRVJUIH0gZnJvbSAnLi90ZW1wbGF0ZS5kZWZpbmUnO1xuXG5jb25zdCBzZXRWYWx1ZSA9IChlbDogSFRNTElucHV0RWxlbWVudCwgdmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSkge1xuICAgIGVsLnZhbHVlID0gdmFsdWU7XG5cbiAgICByZXR1cm47XG4gIH1cbiAgZWwudGV4dENvbnRlbnQgPSB2YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZSA9IChlbDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICByZXR1cm4gaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSA/IGVsLnZhbHVlIDogZWwudGV4dENvbnRlbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0VmFsdWUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQsIG5vUmVjdXJzaW9uID0gZmFsc2UpOiBDaGlsZE5vZGUgfCB1bmRlZmluZWQgfCBudWxsID0+IHtcbiAgaWYgKGlzVGV4dEVsZW1lbnQoZWwpKSB7XG4gICAgY29uc3QgdmFsID0gZ2V0VmFsdWUoZWwpO1xuXG4gICAgdGV4dCA9IG5vUmVjdXJzaW9uID8gUEFUVEVSTl9JTlNFUlQgOiB0ZXh0O1xuICAgIHNldFZhbHVlKGVsLCB2YWw/LnN1YnN0cmluZygwLCBzdGFydCkgKyB0ZXh0ICsgdmFsPy5zdWJzdHJpbmcoZW5kLCB2YWwubGVuZ3RoKSk7XG4gICAgc2V0Q2FyZXRQb3NpdGlvbihlbCwgc3RhcnQgKyB0ZXh0Lmxlbmd0aCwgaWZyYW1lKTtcblxuICAgIHJldHVybjtcbiAgfVxuICBpZiAobm9SZWN1cnNpb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gaW5zZXJ0VmFsdWVUb0NvbnRlbnRFZGl0YWJsZShzdGFydCwgZW5kLCB0ZXh0KTtcbn07XG5cbmNvbnN0IGluc2VydFZhbHVlVG9Db250ZW50RWRpdGFibGUgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IENoaWxkTm9kZSB8IHVuZGVmaW5lZCB8IG51bGwgPT4ge1xuICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gIGlmICghc2VsIHx8ICFzZWwuYW5jaG9yTm9kZSB8fCAhc2VsLmdldFJhbmdlQXQgfHwgIXNlbC5yYW5nZUNvdW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7XG4gIGNvbnN0IG51bWJlclRleHRCZWZvcmVDdXJzb3IgPSAoZ2V0VGV4dEJlZm9yZUN1cnNvcigpIHx8ICcnKS5sZW5ndGg7XG5cbiAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgbnVtYmVyVGV4dEJlZm9yZUN1cnNvciAtIChlbmQgLSBzdGFydCkpO1xuICByYW5nZS5zZXRFbmQoYW5jaG9yTm9kZSwgbnVtYmVyVGV4dEJlZm9yZUN1cnNvcik7XG4gIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFJhbmdlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCgpIHdvdWxkIGJlIHVzZWZ1bCBoZXJlIGJ1dCBpc1xuICAvLyBvbmx5IHJlbGF0aXZlbHkgcmVjZW50bHkgc3RhbmRhcmRpemVkIGFuZCBpcyBub3Qgc3VwcG9ydGVkIGluXG4gIC8vIHNvbWUgYnJvd3NlcnMgKElFOSwgZm9yIG9uZSlcbiAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7XG5cbiAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgY29uc3QgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgbGV0IG5vZGUsIGxhc3ROb2RlLCBub2RlSGFuZGxlckV2ZW50O1xuXG4gIHdoaWxlICgobm9kZSA9IGVsLmZpcnN0Q2hpbGQpKSB7XG4gICAgaWYgKGdldChub2RlLCAnZ2V0QXR0cmlidXRlJykpIHtcbiAgICAgIG5vZGVIYW5kbGVyRXZlbnQgPSBub2RlO1xuICAgIH1cblxuICAgIGxhc3ROb2RlID0gZnJhZy5hcHBlbmRDaGlsZChub2RlKTtcbiAgfVxuICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gIC8vIFByZXNlcnZlIHRoZSBzZWxlY3Rpb25cbiAgaWYgKGxhc3ROb2RlKSB7XG4gICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihsYXN0Tm9kZSk7XG4gICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gIH1cblxuICByZXR1cm4gbm9kZUhhbmRsZXJFdmVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0QmVmb3JlQ3Vyc29yID0gKCkgPT4ge1xuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKCFzZWwgfHwgIXNlbC5hbmNob3JOb2RlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7XG4gIGNvbnN0IHJhbmdlTmV3ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblxuICByYW5nZU5ldy5zZWxlY3ROb2RlQ29udGVudHMoYW5jaG9yTm9kZSk7XG4gIHJhbmdlTmV3LnNldEVuZChyYW5nZS5zdGFydENvbnRhaW5lciwgcmFuZ2Uuc3RhcnRPZmZzZXQpO1xuXG4gIGNvbnN0IGZyYWdOZXcgPSByYW5nZU5ldy5jbG9uZUNvbnRlbnRzKCk7XG4gIGNvbnN0IGVsbVByZXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7XG5cbiAgZWxtUHJldi5hcHBlbmRDaGlsZChmcmFnTmV3KTtcblxuICByZXR1cm4gZWxtUHJldi5pbm5lclRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZWwgIT09IG51bGwgJiYgKGVsLm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGVsLm5vZGVOYW1lID09PSAnVEVYVEFSRUEnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1RleHRFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZWwgIT09IG51bGwgJiYgKGVsLm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGVsLm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8IGVsLm5vZGVOYW1lID09PSAnI3RleHQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDYXJldFBvc2l0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50LCBwb3M6IG51bWJlciwgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSAmJiBlbC5zZWxlY3Rpb25TdGFydCkge1xuICAgIGVsLmZvY3VzKCk7XG4gICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJhbmdlID0gZ2V0RG9jdW1lbnQoaWZyYW1lKT8uY3JlYXRlUmFuZ2UoKTtcblxuICByYW5nZT8uc2V0U3RhcnQoZWwsIHBvcyk7XG4gIHJhbmdlPy5jb2xsYXBzZSh0cnVlKTtcbiAgY29uc3Qgc2VsID0gZ2V0V2luZG93U2VsZWN0aW9uKGlmcmFtZSk7XG5cbiAgaWYgKCFzZWwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICBpZiAocmFuZ2UpIHtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2FyZXRQb3NpdGlvbiA9IChlbDogSFRNTElucHV0RWxlbWVudCwgaWZyYW1lPzogSFRNTElGcmFtZUVsZW1lbnQpOiBudW1iZXIgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSkge1xuICAgIGNvbnN0IHZhbCA9IGVsLnZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbC5zbGljZSgwLCBlbC5zZWxlY3Rpb25TdGFydCB8fCB1bmRlZmluZWQpLmxlbmd0aDtcbiAgfVxuICBjb25zdCBzZWxPYmogPSBnZXRXaW5kb3dTZWxlY3Rpb24oaWZyYW1lKTsgLy93aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbE9iaiAmJiBzZWxPYmoucmFuZ2VDb3VudCA+IDApIHtcbiAgICBjb25zdCBzZWxSYW5nZSA9IHNlbE9iai5nZXRSYW5nZUF0KDApO1xuICAgIGNvbnN0IHByZUNhcmV0UmFuZ2UgPSBzZWxSYW5nZS5jbG9uZVJhbmdlKCk7XG5cbiAgICBwcmVDYXJldFJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbCk7XG4gICAgcHJlQ2FyZXRSYW5nZS5zZXRFbmQoc2VsUmFuZ2UuZW5kQ29udGFpbmVyLCBzZWxSYW5nZS5lbmRPZmZzZXQpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gcHJlQ2FyZXRSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbi8vIEJhc2VkIG9uIG1lbnQuaW8gZnVuY3Rpb25zLi4uXG4vL1xuXG5jb25zdCBnZXREb2N1bWVudCA9IChpZnJhbWU/OiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICBpZiAoIWlmcmFtZSkge1xuICAgIHJldHVybiBkb2N1bWVudDtcbiAgfVxuXG4gIHJldHVybiBpZnJhbWUuY29udGVudFdpbmRvdz8uZG9jdW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0V2luZG93U2VsZWN0aW9uID0gKGlmcmFtZT86IEhUTUxJRnJhbWVFbGVtZW50KTogU2VsZWN0aW9uIHwgbnVsbCA9PiB7XG4gIGlmICghaWZyYW1lKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHJldHVybiBpZnJhbWUuY29udGVudFdpbmRvdz8uZ2V0U2VsZWN0aW9uKCkgfHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50RWRpdGFibGVDYXJldENvb3JkcyA9IChjdHg6IHsgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZDsgcGFyZW50OiBFbGVtZW50IHwgbnVsbDsgd2luZG93UGFyZW50PzogYm9vbGVhbiB9KSA9PiB7XG4gIGNvbnN0IG1hcmtlclRleHRDaGFyID0gJ1xcdWZlZmYnO1xuICBjb25zdCBtYXJrZXJJZCA9ICdzZWxfJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnN1YnN0cmluZygyKTtcbiAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoY3R4LmlmcmFtZSkgYXMgRG9jdW1lbnQ7XG4gIGNvbnN0IHNlbCA9IGdldFdpbmRvd1NlbGVjdGlvbihjdHguaWZyYW1lKSBhcyBTZWxlY3Rpb247XG5cbiAgaWYgKCFzZWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICB9O1xuICB9XG4gIGNvbnN0IHByZXZSYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuXG4gIC8vIGNyZWF0ZSBuZXcgcmFuZ2UgYW5kIHNldCBwb3N0aW9uIHVzaW5nIHByZXZSYW5nZVxuICBjb25zdCByYW5nZSA9IGRvYy5jcmVhdGVSYW5nZSgpO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGUgYXMgTm9kZTtcbiAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgcHJldlJhbmdlLnN0YXJ0T2Zmc2V0KTtcbiAgcmFuZ2Uuc2V0RW5kKGFuY2hvck5vZGUsIHByZXZSYW5nZS5zdGFydE9mZnNldCk7XG4gIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcblxuICAvLyBDcmVhdGUgdGhlIG1hcmtlciBlbGVtZW50IGNvbnRhaW5pbmcgYSBzaW5nbGUgaW52aXNpYmxlIGNoYXJhY3RlclxuICAvLyB1c2luZyBET00gbWV0aG9kcyBhbmQgaW5zZXJ0IGl0IGF0IHRoZSBwb3NpdGlvbiBpbiB0aGUgcmFuZ2VcbiAgY29uc3QgbWFya2VyRWwgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gIG1hcmtlckVsLmlkID0gbWFya2VySWQ7XG4gIG1hcmtlckVsLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZShtYXJrZXJUZXh0Q2hhcikpO1xuICByYW5nZS5pbnNlcnROb2RlKG1hcmtlckVsKTtcbiAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWwuYWRkUmFuZ2UocHJldlJhbmdlKTtcblxuICBjb25zdCBjb29yZGluYXRlcyA9IHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogbWFya2VyRWwub2Zmc2V0SGVpZ2h0LFxuICAgIGJvdHRvbTogLTEsXG4gIH07XG5cbiAgbG9jYWxUb1JlbGF0aXZlQ29vcmRpbmF0ZXMoY3R4LCBtYXJrZXJFbCwgY29vcmRpbmF0ZXMpO1xuICBtYXJrZXJFbC5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChtYXJrZXJFbCk7XG4gIGNvbnN0IHdpZHRoU2NyZWVuID0gKGN0eC53aW5kb3dQYXJlbnQgPyB3aW5kb3cucGFyZW50LmlubmVyV2lkdGggOiB3aW5kb3cuaW5uZXJXaWR0aCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XG5cbiAgaWYgKGNvb3JkaW5hdGVzLmxlZnQgKyAzMTUgPiB3aWR0aFNjcmVlbikge1xuICAgIGNvb3JkaW5hdGVzLmxlZnQgPSBjb29yZGluYXRlcy5sZWZ0IC0gMzAwO1xuICB9XG4gIGNvbnN0IGhlaWdodFNjcmVlbiA9IChjdHgud2luZG93UGFyZW50ID8gd2luZG93LnBhcmVudC5pbm5lckhlaWdodCA6IHdpbmRvdy5pbm5lckhlaWdodCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDtcblxuICBpZiAoY29vcmRpbmF0ZXMudG9wICsgMTkwID4gaGVpZ2h0U2NyZWVuKSB7XG4gICAgY29vcmRpbmF0ZXMuYm90dG9tID0gaGVpZ2h0U2NyZWVuIC0gY29vcmRpbmF0ZXMudG9wICsgMTU7XG4gICAgY29vcmRpbmF0ZXMudG9wID0gLTE7XG4gIH1cblxuICByZXR1cm4gY29vcmRpbmF0ZXM7XG59O1xuXG5jb25zdCBsb2NhbFRvUmVsYXRpdmVDb29yZGluYXRlcyA9IChjdHg6IHsgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZDsgcGFyZW50OiBFbGVtZW50IHwgbnVsbDsgd2luZG93UGFyZW50PzogYm9vbGVhbiB9LCBlbGVtZW50OiBFbGVtZW50LCBjb29yZGluYXRlczogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyOyBib3R0b206IG51bWJlciB9KSA9PiB7XG4gIGxldCBvYmogPSA8SFRNTEVsZW1lbnQ+ZWxlbWVudDtcbiAgbGV0IGlmcmFtZSA9IGN0eCA/IGN0eC5pZnJhbWUgOiBudWxsO1xuXG4gIHdoaWxlIChvYmopIHtcbiAgICBpZiAoY3R4LnBhcmVudCAhPT0gbnVsbCAmJiBjdHgucGFyZW50ID09PSBvYmopIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb29yZGluYXRlcy5sZWZ0ICs9IG9iai5vZmZzZXRMZWZ0ICsgb2JqLmNsaWVudExlZnQ7XG4gICAgY29vcmRpbmF0ZXMudG9wICs9IG9iai5vZmZzZXRUb3AgKyBvYmouY2xpZW50VG9wO1xuICAgIG9iaiA9IDxIVE1MRWxlbWVudD5vYmoub2Zmc2V0UGFyZW50O1xuICAgIGlmICghb2JqICYmIGlmcmFtZSkge1xuICAgICAgb2JqID0gaWZyYW1lO1xuICAgICAgaWZyYW1lID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgb2JqID0gPEhUTUxFbGVtZW50PmVsZW1lbnQ7XG4gIGlmcmFtZSA9IGN0eCA/IGN0eC5pZnJhbWUgOiBudWxsO1xuICB3aGlsZSAoKG9iaiAhPT0gZ2V0RG9jdW1lbnQodW5kZWZpbmVkKT8uYm9keSB8fCBjdHgud2luZG93UGFyZW50KSAmJiBvYmogIT09IG51bGwpIHtcbiAgICBpZiAoY3R4LnBhcmVudCAhPT0gbnVsbCAmJiBjdHgucGFyZW50ID09PSBvYmopIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAob2JqLnNjcm9sbFRvcCAmJiBvYmouc2Nyb2xsVG9wID4gMCkge1xuICAgICAgY29vcmRpbmF0ZXMudG9wIC09IG9iai5zY3JvbGxUb3A7XG4gICAgfVxuICAgIGlmIChvYmouc2Nyb2xsTGVmdCAmJiBvYmouc2Nyb2xsTGVmdCA+IDApIHtcbiAgICAgIGNvb3JkaW5hdGVzLmxlZnQgLT0gb2JqLnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIG9iaiA9IGN0eC53aW5kb3dQYXJlbnQgPyA8SFRNTEVsZW1lbnQ+b2JqLm9mZnNldFBhcmVudCA6IDxIVE1MRWxlbWVudD5vYmoucGFyZW50Tm9kZTtcbiAgICBpZiAoIW9iaiAmJiBpZnJhbWUpIHtcbiAgICAgIG9iaiA9IGlmcmFtZTtcbiAgICAgIGlmcmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBzZXRFbmRPZkNvbnRlbnRFZGl0YWJsZSA9IChjb250ZW50RWRpdGFibGVFbGVtZW50OiBOb2RlKSA9PiB7XG4gIGlmIChkb2N1bWVudC5jcmVhdGVSYW5nZSkge1xuICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsgLy9DcmVhdGUgYSByYW5nZSAoYSByYW5nZSBpcyBhIGxpa2UgdGhlIHNlbGVjdGlvbiBidXQgaW52aXNpYmxlKVxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsgLy9nZXQgdGhlIHNlbGVjdGlvbiBvYmplY3QgKGFsbG93cyB5b3UgdG8gY2hhbmdlIHNlbGVjdGlvbilcblxuICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhjb250ZW50RWRpdGFibGVFbGVtZW50KTsgLy9TZWxlY3QgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZWxlbWVudCB3aXRoIHRoZSByYW5nZVxuICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsgLy9jb2xsYXBzZSB0aGUgcmFuZ2UgdG8gdGhlIGVuZCBwb2ludC4gZmFsc2UgbWVhbnMgY29sbGFwc2UgdG8gZW5kIHJhdGhlciB0aGFuIHRoZSBzdGFydFxuICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7IC8vcmVtb3ZlIGFueSBzZWxlY3Rpb25zIGFscmVhZHkgbWFkZVxuICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpOyAvL21ha2UgdGhlIHJhbmdlIHlvdSBoYXZlIGp1c3QgY3JlYXRlZCB0aGUgdmlzaWJsZSBzZWxlY3Rpb25cbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUZXh0QXRDYXJldCA9IChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCB0ZXh0OiBzdHJpbmcpID0+IHtcbiAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICBpZiAoIWVsZW1lbnRDb250YWluc1NlbGVjdGlvbihlbGVtZW50KSkge1xuICAgICAgc2V0RW5kT2ZDb250ZW50RWRpdGFibGUoZWxlbWVudCk7XG4gICAgICBpbnNlcnRUZXh0QXRDYXJldChlbGVtZW50LCB0ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsPy5nZXRSYW5nZUF0ICYmIHNlbC5yYW5nZUNvdW50KSB7XG4gICAgICBsZXQgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnU1BBTicpO1xuXG4gICAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgICAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgICAgIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBsZXQgbm9kZTogTm9kZSB8IG51bGw7XG4gICAgICBsZXQgbGFzdE5vZGUhOiBOb2RlO1xuXG4gICAgICB3aGlsZSAoKG5vZGUgPSBlbC5maXJzdENoaWxkKSkge1xuICAgICAgICBsYXN0Tm9kZSA9IGZyYWcuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICB9XG4gICAgICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gICAgICBpZiAobGFzdE5vZGUpIHtcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIobGFzdE5vZGUpO1xuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWxlbWVudENvbnRhaW5zU2VsZWN0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbCAmJiBzZWwucmFuZ2VDb3VudCA+IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbC5yYW5nZUNvdW50OyArK2kpIHtcbiAgICAgIGlmICghaXNPckNvbnRhaW5zKHNlbC5nZXRSYW5nZUF0KGkpLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBlbCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNPckNvbnRhaW5zID0gKG5vZGU6IE5vZGUsIGNvbnRhaW5lcjogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlID09PSBjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG4iXX0=
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9kZWZpbmVzL3V0aWxzLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBb0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUN2RCxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFakIsT0FBTztJQUNULENBQUM7SUFDRCxFQUFFLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEVBQUU7SUFDL0MsT0FBTyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLE1BQXlCLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBZ0MsRUFBRTtJQUMxSyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQyxR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SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBQQVRURVJOX0lOU0VSVCB9IGZyb20gJy4vdGVtcGxhdGUuZGVmaW5lJztcblxuY29uc3Qgc2V0VmFsdWUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKGlzSW5wdXRPclRleHRBcmVhRWxlbWVudChlbCkpIHtcbiAgICBlbC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIGVsLnRleHRDb250ZW50ID0gdmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmFsdWUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgcmV0dXJuIGlzSW5wdXRPclRleHRBcmVhRWxlbWVudChlbCkgPyBlbC52YWx1ZSA6IGVsLnRleHRDb250ZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydFZhbHVlID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50LCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50LCBub1JlY3Vyc2lvbiA9IGZhbHNlKTogQ2hpbGROb2RlIHwgdW5kZWZpbmVkIHwgbnVsbCA9PiB7XG4gIGlmIChpc1RleHRFbGVtZW50KGVsKSkge1xuICAgIGNvbnN0IHZhbCA9IGdldFZhbHVlKGVsKTtcblxuICAgIHRleHQgPSBub1JlY3Vyc2lvbiA/IFBBVFRFUk5fSU5TRVJUIDogdGV4dDtcbiAgICBzZXRWYWx1ZShlbCwgdmFsPy5zdWJzdHJpbmcoMCwgc3RhcnQpICsgdGV4dCArIHZhbD8uc3Vic3RyaW5nKGVuZCwgdmFsLmxlbmd0aCkpO1xuICAgIHNldENhcmV0UG9zaXRpb24oZWwsIHN0YXJ0ICsgdGV4dC5sZW5ndGgsIGlmcmFtZSk7XG5cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG5vUmVjdXJzaW9uKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIGluc2VydFZhbHVlVG9Db250ZW50RWRpdGFibGUoc3RhcnQsIGVuZCwgdGV4dCk7XG59O1xuXG5jb25zdCBpbnNlcnRWYWx1ZVRvQ29udGVudEVkaXRhYmxlID0gKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBDaGlsZE5vZGUgfCB1bmRlZmluZWQgfCBudWxsID0+IHtcbiAgaWYgKCF3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICBpZiAoIXNlbD8uYW5jaG9yTm9kZSB8fCAhc2VsLmdldFJhbmdlQXQgfHwgIXNlbC5yYW5nZUNvdW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7XG4gIGNvbnN0IG51bWJlclRleHRCZWZvcmVDdXJzb3IgPSAoZ2V0VGV4dEJlZm9yZUN1cnNvcigpIHx8ICcnKS5sZW5ndGg7XG5cbiAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgbnVtYmVyVGV4dEJlZm9yZUN1cnNvciAtIChlbmQgLSBzdGFydCkpO1xuICByYW5nZS5zZXRFbmQoYW5jaG9yTm9kZSwgbnVtYmVyVGV4dEJlZm9yZUN1cnNvcik7XG4gIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFJhbmdlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCgpIHdvdWxkIGJlIHVzZWZ1bCBoZXJlIGJ1dCBpc1xuICAvLyBvbmx5IHJlbGF0aXZlbHkgcmVjZW50bHkgc3RhbmRhcmRpemVkIGFuZCBpcyBub3Qgc3VwcG9ydGVkIGluXG4gIC8vIHNvbWUgYnJvd3NlcnMgKElFOSwgZm9yIG9uZSlcbiAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7XG5cbiAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgY29uc3QgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgbGV0IG5vZGUsIGxhc3ROb2RlLCBub2RlSGFuZGxlckV2ZW50O1xuXG4gIHdoaWxlICgobm9kZSA9IGVsLmZpcnN0Q2hpbGQpKSB7XG4gICAgaWYgKGdldChub2RlLCAnZ2V0QXR0cmlidXRlJykpIHtcbiAgICAgIG5vZGVIYW5kbGVyRXZlbnQgPSBub2RlO1xuICAgIH1cblxuICAgIGxhc3ROb2RlID0gZnJhZy5hcHBlbmRDaGlsZChub2RlKTtcbiAgfVxuICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gIC8vIFByZXNlcnZlIHRoZSBzZWxlY3Rpb25cbiAgaWYgKGxhc3ROb2RlKSB7XG4gICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihsYXN0Tm9kZSk7XG4gICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gIH1cblxuICByZXR1cm4gbm9kZUhhbmRsZXJFdmVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0QmVmb3JlQ3Vyc29yID0gKCkgPT4ge1xuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKCFzZWw/LmFuY2hvck5vZGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7XG4gIGNvbnN0IGFuY2hvck5vZGUgPSBzZWwuYW5jaG9yTm9kZTtcbiAgY29uc3QgcmFuZ2VOZXcgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXG4gIHJhbmdlTmV3LnNlbGVjdE5vZGVDb250ZW50cyhhbmNob3JOb2RlKTtcbiAgcmFuZ2VOZXcuc2V0RW5kKHJhbmdlLnN0YXJ0Q29udGFpbmVyLCByYW5nZS5zdGFydE9mZnNldCk7XG5cbiAgY29uc3QgZnJhZ05ldyA9IHJhbmdlTmV3LmNsb25lQ29udGVudHMoKTtcbiAgY29uc3QgZWxtUHJldiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ1NQQU4nKTtcblxuICBlbG1QcmV2LmFwcGVuZENoaWxkKGZyYWdOZXcpO1xuXG4gIHJldHVybiBlbG1QcmV2LmlubmVyVGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0lucHV0T3JUZXh0QXJlYUVsZW1lbnQgPSAoZWw6IEhUTUxFbGVtZW50KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBlbCAhPT0gbnVsbCAmJiAoZWwubm9kZU5hbWUgPT09ICdJTlBVVCcgfHwgZWwubm9kZU5hbWUgPT09ICdURVhUQVJFQScpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGV4dEVsZW1lbnQgPSAoZWw6IEhUTUxFbGVtZW50KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBlbCAhPT0gbnVsbCAmJiAoZWwubm9kZU5hbWUgPT09ICdJTlBVVCcgfHwgZWwubm9kZU5hbWUgPT09ICdURVhUQVJFQScgfHwgZWwubm9kZU5hbWUgPT09ICcjdGV4dCcpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldENhcmV0UG9zaXRpb24gPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQsIHBvczogbnVtYmVyLCBpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSA9PiB7XG4gIGlmIChpc0lucHV0T3JUZXh0QXJlYUVsZW1lbnQoZWwpICYmIGVsLnNlbGVjdGlvblN0YXJ0KSB7XG4gICAgZWwuZm9jdXMoKTtcbiAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XG5cbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcmFuZ2UgPSBnZXREb2N1bWVudChpZnJhbWUpPy5jcmVhdGVSYW5nZSgpO1xuXG4gIHJhbmdlPy5zZXRTdGFydChlbCwgcG9zKTtcbiAgcmFuZ2U/LmNvbGxhcHNlKHRydWUpO1xuICBjb25zdCBzZWwgPSBnZXRXaW5kb3dTZWxlY3Rpb24oaWZyYW1lKTtcblxuICBpZiAoIXNlbCkge1xuICAgIHJldHVybjtcbiAgfVxuICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gIGlmIChyYW5nZSkge1xuICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDYXJldFBvc2l0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50LCBpZnJhbWU/OiBIVE1MSUZyYW1lRWxlbWVudCk6IG51bWJlciA9PiB7XG4gIGlmIChpc0lucHV0T3JUZXh0QXJlYUVsZW1lbnQoZWwpKSB7XG4gICAgY29uc3QgdmFsID0gZWwudmFsdWU7XG5cbiAgICByZXR1cm4gdmFsLnNsaWNlKDAsIGVsLnNlbGVjdGlvblN0YXJ0IHx8IHVuZGVmaW5lZCkubGVuZ3RoO1xuICB9XG4gIGNvbnN0IHNlbE9iaiA9IGdldFdpbmRvd1NlbGVjdGlvbihpZnJhbWUpO1xuXG4gIGlmIChzZWxPYmogJiYgc2VsT2JqLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgY29uc3Qgc2VsUmFuZ2UgPSBzZWxPYmouZ2V0UmFuZ2VBdCgwKTtcbiAgICBjb25zdCBwcmVDYXJldFJhbmdlID0gc2VsUmFuZ2UuY2xvbmVSYW5nZSgpO1xuXG4gICAgcHJlQ2FyZXRSYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWwpO1xuICAgIHByZUNhcmV0UmFuZ2Uuc2V0RW5kKHNlbFJhbmdlLmVuZENvbnRhaW5lciwgc2VsUmFuZ2UuZW5kT2Zmc2V0KTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHByZUNhcmV0UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cbiAgcmV0dXJuIDA7XG59O1xuXG4vLyBCYXNlZCBvbiBtZW50LmlvIGZ1bmN0aW9ucy4uLlxuLy9cblxuY29uc3QgZ2V0RG9jdW1lbnQgPSAoaWZyYW1lPzogSFRNTElGcmFtZUVsZW1lbnQpID0+IHtcbiAgaWYgKCFpZnJhbWUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQ7XG4gIH1cblxuICByZXR1cm4gaWZyYW1lLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFdpbmRvd1NlbGVjdGlvbiA9IChpZnJhbWU/OiBIVE1MSUZyYW1lRWxlbWVudCk6IFNlbGVjdGlvbiB8IG51bGwgPT4ge1xuICBpZiAoIWlmcmFtZSkge1xuICAgIHJldHVybiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIH1cblxuICByZXR1cm4gaWZyYW1lLmNvbnRlbnRXaW5kb3c/LmdldFNlbGVjdGlvbigpIHx8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudEVkaXRhYmxlQ2FyZXRDb29yZHMgPSAoY3R4OiB7IGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQgfCB1bmRlZmluZWQ7IHBhcmVudDogRWxlbWVudCB8IG51bGw7IHdpbmRvd1BhcmVudD86IGJvb2xlYW4gfSkgPT4ge1xuICBjb25zdCBtYXJrZXJUZXh0Q2hhciA9ICdcXHVmZWZmJztcbiAgY29uc3QgbWFya2VySWQgPSAnc2VsXycgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSArICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMik7XG4gIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KGN0eC5pZnJhbWUpIGFzIERvY3VtZW50O1xuICBjb25zdCBzZWwgPSBnZXRXaW5kb3dTZWxlY3Rpb24oY3R4LmlmcmFtZSkgYXMgU2VsZWN0aW9uO1xuXG4gIGlmICghc2VsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB0b3A6IDAsXG4gICAgICBib3R0b206IDAsXG4gICAgfTtcbiAgfVxuICBjb25zdCBwcmV2UmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTtcblxuICAvLyBjcmVhdGUgbmV3IHJhbmdlIGFuZCBzZXQgcG9zdGlvbiB1c2luZyBwcmV2UmFuZ2VcbiAgY29uc3QgcmFuZ2UgPSBkb2MuY3JlYXRlUmFuZ2UoKTtcbiAgY29uc3QgYW5jaG9yTm9kZSA9IHNlbC5hbmNob3JOb2RlIGFzIE5vZGU7XG4gIHJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIHByZXZSYW5nZS5zdGFydE9mZnNldCk7XG4gIHJhbmdlLnNldEVuZChhbmNob3JOb2RlLCBwcmV2UmFuZ2Uuc3RhcnRPZmZzZXQpO1xuICByYW5nZS5jb2xsYXBzZShmYWxzZSk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBtYXJrZXIgZWxlbWVudCBjb250YWluaW5nIGEgc2luZ2xlIGludmlzaWJsZSBjaGFyYWN0ZXJcbiAgLy8gdXNpbmcgRE9NIG1ldGhvZHMgYW5kIGluc2VydCBpdCBhdCB0aGUgcG9zaXRpb24gaW4gdGhlIHJhbmdlXG4gIGNvbnN0IG1hcmtlckVsID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblxuICBtYXJrZXJFbC5pZCA9IG1hcmtlcklkO1xuICBtYXJrZXJFbC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUobWFya2VyVGV4dENoYXIpKTtcbiAgcmFuZ2UuaW5zZXJ0Tm9kZShtYXJrZXJFbCk7XG4gIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgc2VsLmFkZFJhbmdlKHByZXZSYW5nZSk7XG5cbiAgY29uc3QgY29vcmRpbmF0ZXMgPSB7XG4gICAgbGVmdDogMCxcbiAgICB0b3A6IG1hcmtlckVsLm9mZnNldEhlaWdodCxcbiAgICBib3R0b206IC0xLFxuICB9O1xuXG4gIGxvY2FsVG9SZWxhdGl2ZUNvb3JkaW5hdGVzKGN0eCwgbWFya2VyRWwsIGNvb3JkaW5hdGVzKTtcbiAgbWFya2VyRWwucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobWFya2VyRWwpO1xuICBjb25zdCB3aWR0aFNjcmVlbiA9IChjdHgud2luZG93UGFyZW50ID8gd2luZG93LnBhcmVudC5pbm5lcldpZHRoIDogd2luZG93LmlubmVyV2lkdGgpIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xuXG4gIGlmIChjb29yZGluYXRlcy5sZWZ0ICsgMzE1ID4gd2lkdGhTY3JlZW4pIHtcbiAgICBjb29yZGluYXRlcy5sZWZ0ID0gY29vcmRpbmF0ZXMubGVmdCAtIDMwMDtcbiAgfVxuICBjb25zdCBoZWlnaHRTY3JlZW4gPSAoY3R4LndpbmRvd1BhcmVudCA/IHdpbmRvdy5wYXJlbnQuaW5uZXJIZWlnaHQgOiB3aW5kb3cuaW5uZXJIZWlnaHQpIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7XG5cbiAgaWYgKGNvb3JkaW5hdGVzLnRvcCArIDE5MCA+IGhlaWdodFNjcmVlbikge1xuICAgIGNvb3JkaW5hdGVzLmJvdHRvbSA9IGhlaWdodFNjcmVlbiAtIGNvb3JkaW5hdGVzLnRvcCArIDE1O1xuICAgIGNvb3JkaW5hdGVzLnRvcCA9IC0xO1xuICB9XG5cbiAgcmV0dXJuIGNvb3JkaW5hdGVzO1xufTtcblxuY29uc3QgbG9jYWxUb1JlbGF0aXZlQ29vcmRpbmF0ZXMgPSAoY3R4OiB7IGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQgfCB1bmRlZmluZWQ7IHBhcmVudDogRWxlbWVudCB8IG51bGw7IHdpbmRvd1BhcmVudD86IGJvb2xlYW4gfSwgZWxlbWVudDogRWxlbWVudCwgY29vcmRpbmF0ZXM6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgYm90dG9tOiBudW1iZXIgfSkgPT4ge1xuICBsZXQgb2JqID0gPEhUTUxFbGVtZW50PmVsZW1lbnQ7XG4gIGxldCBpZnJhbWUgPSBjdHggPyBjdHguaWZyYW1lIDogbnVsbDtcblxuICB3aGlsZSAob2JqKSB7XG4gICAgaWYgKGN0eC5wYXJlbnQgIT09IG51bGwgJiYgY3R4LnBhcmVudCA9PT0gb2JqKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29vcmRpbmF0ZXMubGVmdCArPSBvYmoub2Zmc2V0TGVmdCArIG9iai5jbGllbnRMZWZ0O1xuICAgIGNvb3JkaW5hdGVzLnRvcCArPSBvYmoub2Zmc2V0VG9wICsgb2JqLmNsaWVudFRvcDtcbiAgICBvYmogPSA8SFRNTEVsZW1lbnQ+b2JqLm9mZnNldFBhcmVudDtcbiAgICBpZiAoIW9iaiAmJiBpZnJhbWUpIHtcbiAgICAgIG9iaiA9IGlmcmFtZTtcbiAgICAgIGlmcmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG4gIG9iaiA9IDxIVE1MRWxlbWVudD5lbGVtZW50O1xuICBpZnJhbWUgPSBjdHggPyBjdHguaWZyYW1lIDogbnVsbDtcbiAgd2hpbGUgKChvYmogIT09IGdldERvY3VtZW50KCk/LmJvZHkgfHwgY3R4LndpbmRvd1BhcmVudCkgJiYgb2JqICE9PSBudWxsKSB7XG4gICAgaWYgKGN0eC5wYXJlbnQgIT09IG51bGwgJiYgY3R4LnBhcmVudCA9PT0gb2JqKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKG9iai5zY3JvbGxUb3AgJiYgb2JqLnNjcm9sbFRvcCA+IDApIHtcbiAgICAgIGNvb3JkaW5hdGVzLnRvcCAtPSBvYmouc2Nyb2xsVG9wO1xuICAgIH1cbiAgICBpZiAob2JqLnNjcm9sbExlZnQgJiYgb2JqLnNjcm9sbExlZnQgPiAwKSB7XG4gICAgICBjb29yZGluYXRlcy5sZWZ0IC09IG9iai5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBvYmogPSBjdHgud2luZG93UGFyZW50ID8gPEhUTUxFbGVtZW50Pm9iai5vZmZzZXRQYXJlbnQgOiA8SFRNTEVsZW1lbnQ+b2JqLnBhcmVudE5vZGU7XG4gICAgaWYgKCFvYmogJiYgaWZyYW1lKSB7XG4gICAgICBvYmogPSBpZnJhbWU7XG4gICAgICBpZnJhbWUgPSBudWxsO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3Qgc2V0RW5kT2ZDb250ZW50RWRpdGFibGUgPSAoY29udGVudEVkaXRhYmxlRWxlbWVudDogTm9kZSkgPT4ge1xuICBpZiAoZG9jdW1lbnQuY3JlYXRlUmFuZ2UpIHtcbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7IC8vQ3JlYXRlIGEgcmFuZ2UgKGEgcmFuZ2UgaXMgYSBsaWtlIHRoZSBzZWxlY3Rpb24gYnV0IGludmlzaWJsZSlcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7IC8vZ2V0IHRoZSBzZWxlY3Rpb24gb2JqZWN0IChhbGxvd3MgeW91IHRvIGNoYW5nZSBzZWxlY3Rpb24pXG5cbiAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoY29udGVudEVkaXRhYmxlRWxlbWVudCk7IC8vU2VsZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGVsZW1lbnQgd2l0aCB0aGUgcmFuZ2VcbiAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7IC8vY29sbGFwc2UgdGhlIHJhbmdlIHRvIHRoZSBlbmQgcG9pbnQuIGZhbHNlIG1lYW5zIGNvbGxhcHNlIHRvIGVuZCByYXRoZXIgdGhhbiB0aGUgc3RhcnRcbiAgICBzZWxlY3Rpb24/LnJlbW92ZUFsbFJhbmdlcygpOyAvL3JlbW92ZSBhbnkgc2VsZWN0aW9ucyBhbHJlYWR5IG1hZGVcbiAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTsgLy9tYWtlIHRoZSByYW5nZSB5b3UgaGF2ZSBqdXN0IGNyZWF0ZWQgdGhlIHZpc2libGUgc2VsZWN0aW9uXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUZXh0QXRDYXJldCA9IChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCB0ZXh0OiBzdHJpbmcpID0+IHtcbiAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICBpZiAoIWVsZW1lbnRDb250YWluc1NlbGVjdGlvbihlbGVtZW50KSkge1xuICAgICAgc2V0RW5kT2ZDb250ZW50RWRpdGFibGUoZWxlbWVudCk7XG4gICAgICBpbnNlcnRUZXh0QXRDYXJldChlbGVtZW50LCB0ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsPy5nZXRSYW5nZUF0ICYmIHNlbC5yYW5nZUNvdW50KSB7XG4gICAgICBsZXQgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnU1BBTicpO1xuXG4gICAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgICAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgICAgIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBsZXQgbm9kZTogTm9kZSB8IG51bGw7XG4gICAgICBsZXQgbGFzdE5vZGUhOiBOb2RlO1xuXG4gICAgICB3aGlsZSAoKG5vZGUgPSBlbC5maXJzdENoaWxkKSkge1xuICAgICAgICBsYXN0Tm9kZSA9IGZyYWcuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICB9XG4gICAgICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gICAgICBpZiAobGFzdE5vZGUpIHtcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIobGFzdE5vZGUpO1xuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWxlbWVudENvbnRhaW5zU2VsZWN0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbCAmJiBzZWwucmFuZ2VDb3VudCA+IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbC5yYW5nZUNvdW50OyArK2kpIHtcbiAgICAgIGlmICghaXNPckNvbnRhaW5zKHNlbC5nZXRSYW5nZUF0KGkpLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBlbCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNPckNvbnRhaW5zID0gKG5vZGU6IE5vZGUsIGNvbnRhaW5lcjogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlID09PSBjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG4iXX0=
|
|
@@ -70,7 +70,6 @@ export class LibsUiComponentsInputsMentionListComponent {
|
|
|
70
70
|
}
|
|
71
71
|
if (iframe) {
|
|
72
72
|
const context = { iframe: iframe, parent: window.parent.document.body, windowParent: true };
|
|
73
|
-
// const rect = iframe.getBoundingClientRect();
|
|
74
73
|
const caretRelativeToView = getContentEditableCaretCoords(context);
|
|
75
74
|
const doc = document.documentElement;
|
|
76
75
|
const scrollLeft = (window.scrollX || doc.scrollLeft) - (doc.clientLeft || 0);
|
|
@@ -147,7 +146,7 @@ export class LibsUiComponentsInputsMentionListComponent {
|
|
|
147
146
|
scrollContent() {
|
|
148
147
|
setTimeout(() => {
|
|
149
148
|
const element = this.elementEl();
|
|
150
|
-
if (element
|
|
149
|
+
if (element?.nativeElement) {
|
|
151
150
|
element.nativeElement.scrollTop = 0;
|
|
152
151
|
}
|
|
153
152
|
});
|
|
@@ -163,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
163
162
|
type: Component,
|
|
164
163
|
args: [{ selector: 'libs_ui-components-inputs-mention-list', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent, NgTemplateOutlet], template: "<div\n #elementRef\n class=\"libs-ui-mention-list\"\n [style.zIndex]=\"zIndex()\"\n [class.hidden]=\"hidden()\">\n @for (item of items(); track item) {\n <div\n #itemRef\n class=\"libs-ui-mention-list-item\"\n [class.libs-ui-mention-list-item-active]=\"$index === activeIndex()\"\n (mousedown)=\"handlerClick($event, $index)\"\n (mouseenter)=\"handleActiveItem($event, $index)\">\n @if (listTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"listTemplate()\"\n [ngTemplateOutletContext]=\"{ item: item, index: $index }\"></ng-container>\n } @else {\n <div class=\"px-[12px] py-[6px] flex items-center\">\n <libs_ui-components-avatar\n [size]=\"24\"\n [linkAvatar]=\"item.avatar\"\n [linkAvatarError]=\"defaultAvatar()\"\n [getLastTextAfterSpace]=\"true\"\n [textAvatar]=\"item.name\"\n [idGenColor]=\"item.id\" />\n <libs_ui-components-popover\n [classInclude]=\"'libs-ui-font-h5r'\"\n [type]=\"'text'\"\n [ignoreShowPopover]=\"true\"\n [config]=\"{ width: 250 }\">\n <!-- // ta.m \u1EA9n show tooltip v\u00EC ch\u01B0a x\u1EED l\u00FD \u0111c v\u1ECB tr\u00ED -->\n {{ item.name + ' (' + item.username + ')' }}\n </libs_ui-components-popover>\n </div>\n }\n </div>\n }\n</div>\n", styles: [".libs-ui-mention-list{position:absolute;top:-999px;left:-9999px;z-index:1202;float:left;width:315px;padding:4px 0;background-color:#fff;border:solid 1px #e6e8ed;border-radius:5px;max-height:190px;overflow:auto;box-shadow:0 2px 10px 1px #3333331a}.libs-ui-mention-list .libs-ui-mention-list-item{background:#fff;cursor:pointer}.libs-ui-mention-list .libs-ui-mention-list-item:hover,.libs-ui-mention-list .libs-ui-mention-list-item-active{background-color:var(--libs-ui-color-light-3, #f4f8ff)}\n"] }]
|
|
165
164
|
}] });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFXbEcsTUFBTSxPQUFPLDBDQUEwQztJQUNyRCxtQkFBbUI7SUFDWixLQUFLLEdBQUcsTUFBTSxDQUE0QyxFQUFFLENBQUMsQ0FBQztJQUM5RCxXQUFXLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENB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QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCwgdmlld0NoaWxkLCB2aWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNBdmF0YXJDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWF2YXRhcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBzZXQsIFV0aWxzS2V5Q29kZUNvbnN0YW50IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldENhcmV0Q29vcmRpbmF0ZXMgfSBmcm9tICcuLi9kZWZpbmVzL2NhcmV0LWNvb3Jkcy5kZWZpbmUnO1xuaW1wb3J0IHsgZ2V0Q29udGVudEVkaXRhYmxlQ2FyZXRDb29yZHMsIGlzSW5wdXRPclRleHRBcmVhRWxlbWVudCB9IGZyb20gJy4uL2RlZmluZXMvdXRpbHMuZGVmaW5lJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWlucHV0cy1tZW50aW9uLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgTmdUZW1wbGF0ZU91dGxldF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNJbnB1dHNNZW50aW9uTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwdWJsaWMgaXRlbXMgPSBzaWduYWw8QXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj4+KFtdKTtcbiAgcHVibGljIGFjdGl2ZUluZGV4ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHB1YmxpYyBoaWRkZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgc3R5bGVPZmYgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcGFyZW50SGFuZGxlcktleURvd24gPSBzaWduYWw8KChlOiBFdmVudCwgZWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCkgPT4gdW5rbm93bikgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJvdGVjdGVkIGRyb3BVcCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBjb29yZHMgPSBzaWduYWw8eyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyOyBib3R0b20/OiBudW1iZXIgfT4oeyB0b3A6IDAsIGxlZnQ6IDAsIGJvdHRvbTogMCB9KTtcbiAgcHJpdmF0ZSBvZmZzZXQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBuYXRpdmVQYXJlbnRFbGVtZW50ID0gc2lnbmFsPEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIGxhYmVsS2V5ID0gbW9kZWw8c3RyaW5nPignbGFiZWwnKTtcbiAgekluZGV4ID0gbW9kZWw8bnVtYmVyPigxMDAwKTtcbiAgaXNJZnJhbWUgPSBtb2RlbC5yZXF1aXJlZDxib29sZWFuPigpO1xuICBkZWZhdWx0QXZhdGFyID0gbW9kZWw8c3RyaW5nPigpO1xuICBsaXN0VGVtcGxhdGUgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcmVhZG9ubHkgZWxlbWVudEVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdlbGVtZW50UmVmJyk7XG4gIHJlYWRvbmx5IGl0ZW1zRWwgPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZj4oJ2l0ZW1SZWYnKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc0lmcmFtZSgpKSB7XG4gICAgICB0aGlzLmluaXRFdmVudCh3aW5kb3cucGFyZW50LCAnd2hlZWwnKTtcbiAgICAgIHRoaXMuaW5pdEV2ZW50KHdpbmRvdy5wYXJlbnQsICdyZXNpemUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbml0RXZlbnQod2luZG93LCAnd2hlZWwnKTtcbiAgICB0aGlzLmluaXRFdmVudCh3aW5kb3csICdyZXNpemUnKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcml2YXRlIGluaXRFdmVudChlbGVtZW50OiBXaW5kb3csIGV2ZW50TmFtZTogc3RyaW5nKSB7XG4gICAgZnJvbUV2ZW50PEV2ZW50PihlbGVtZW50LCBldmVudE5hbWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudE5hbWUgPT09ICdyZXNpemUnIHx8ICF0aGlzLmVsZW1lbnRFbCgpPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZXJMaXN0ZW5DbG9zZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVyTGlzdGVuQ2xvc2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5lbGVtZW50RWwoKT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5oaWRkZW4uc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGxvdHMgb2YgY29uZnVzaW9uIGhlcmUgYmV0d2VlbiByZWxhdGl2ZSBjb29yZGluYXRlcyBhbmQgY29udGFpbmVyc1xuICBwb3NpdGlvbihuYXRpdmVQYXJlbnRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCBpZnJhbWU/OiBIVE1MSUZyYW1lRWxlbWVudCwgbGVmdERpdj86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubmF0aXZlUGFyZW50RWxlbWVudC5zZXQobmF0aXZlUGFyZW50RWxlbWVudCk7XG4gICAgaWYgKGlzSW5wdXRPclRleHRBcmVhRWxlbWVudChuYXRpdmVQYXJlbnRFbGVtZW50KSkge1xuICAgICAgLy8gcGFyZW50IGVsZW1lbnRzIG5lZWQgdG8gaGF2ZSBwb3N0aXRpb246cmVsYXRpdmUgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHk/XG4gICAgICB0aGlzLmNvb3Jkcy5zZXQoZ2V0Q2FyZXRDb29yZGluYXRlcyhuYXRpdmVQYXJlbnRFbGVtZW50LCBuYXRpdmVQYXJlbnRFbGVtZW50LnNlbGVjdGlvblN0YXJ0KSk7XG4gICAgICB0aGlzLmNvb3Jkcy51cGRhdGUoKGl0ZW0pID0+ICh7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIHRvcDogbmF0aXZlUGFyZW50RWxlbWVudC5vZmZzZXRUb3AgKyBpdGVtLnRvcCAtIG5hdGl2ZVBhcmVudEVsZW1lbnQuc2Nyb2xsVG9wLFxuICAgICAgICBsZWZ0OiBuYXRpdmVQYXJlbnRFbGVtZW50Lm9mZnNldExlZnQgKyBpdGVtLmxlZnQgLSBuYXRpdmVQYXJlbnRFbGVtZW50LnNjcm9sbExlZnQgKyBuYXRpdmVQYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsXG4gICAgICB9KSk7XG5cbiAgICAgIC8vIGdldENyZXRDb29yZGluYXRlcygpIGZvciB0ZXh0L2lucHV0IGVsZW1lbnRzIG5lZWRzIGFuIGFkZGl0aW9uYWwgb2Zmc2V0IHRvIHBvc2l0aW9uIHRoZSBsaXN0IGNvcnJlY3RseVxuICAgICAgdGhpcy5vZmZzZXQuc2V0KHRoaXMuZ2V0QmxvY2tDdXJzb3JEaW1lbnNpb25zKG5hdGl2ZVBhcmVudEVsZW1lbnQpLmhlaWdodCk7XG4gICAgICB0aGlzLnBvc2l0aW9uRWxlbWVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaWZyYW1lKSB7XG4gICAgICBjb25zdCBjb250ZXh0OiB7IGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQ7IHBhcmVudDogRWxlbWVudCB8IG51bGw7IHdpbmRvd1BhcmVudD86IGJvb2xlYW4gfSA9IHsgaWZyYW1lOiBpZnJhbWUsIHBhcmVudDogd2luZG93LnBhcmVudC5kb2N1bWVudC5ib2R5LCB3aW5kb3dQYXJlbnQ6IHRydWUgfTtcbiAgICAgIC8vIGNvbnN0IHJlY3QgPSBpZnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjYXJldFJlbGF0aXZlVG9WaWV3ID0gZ2V0Q29udGVudEVkaXRhYmxlQ2FyZXRDb29yZHMoY29udGV4dCk7XG4gICAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKHdpbmRvdy5zY3JvbGxYIHx8IGRvYy5zY3JvbGxMZWZ0KSAtIChkb2MuY2xpZW50TGVmdCB8fCAwKTtcbiAgICAgIHRoaXMuY29vcmRzLnVwZGF0ZSgoaXRlbSkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgbGVmdDogY2FyZXRSZWxhdGl2ZVRvVmlldy5sZWZ0IC0gc2Nyb2xsTGVmdCAtIChsZWZ0RGl2IHx8IDApLFxuICAgICAgICBib3R0b206IHdpbmRvdy5wYXJlbnQuaW5uZXJIZWlnaHQgLSBjYXJldFJlbGF0aXZlVG9WaWV3LnRvcCArIDE4LFxuICAgICAgfSkpO1xuICAgICAgaWYgKGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tICYmIGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tICE9PSAtMSkge1xuICAgICAgICB0aGlzLmNvb3Jkcy51cGRhdGUoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBib3R0b206IGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBvc2l0aW9uRWxlbWVudCgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKHdpbmRvdy5zY3JvbGxYIHx8IGRvYy5zY3JvbGxMZWZ0KSAtIChkb2MuY2xpZW50TGVmdCB8fCAwKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSAod2luZG93LnNjcm9sbFggfHwgZG9jLnNjcm9sbFRvcCkgLSAoZG9jLmNsaWVudFRvcCB8fCAwKTtcbiAgICAvLyBib3VuZGluZyByZWN0YW5nbGVzIGFyZSByZWxhdGl2ZSB0byB2aWV3LCBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byBjb250YWluZXI/XG4gICAgY29uc3QgY2FyZXRSZWxhdGl2ZVRvVmlldyA9IGdldENvbnRlbnRFZGl0YWJsZUNhcmV0Q29vcmRzKHsgaWZyYW1lLCBwYXJlbnQ6IG51bGwgfSk7XG5cbiAgICB0aGlzLmNvb3Jkcy51cGRhdGUoKGl0ZW0pID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgdG9wOiBjYXJldFJlbGF0aXZlVG9WaWV3LnRvcCAtIHNjcm9sbFRvcCArIDEwLFxuICAgICAgbGVmdDogY2FyZXRSZWxhdGl2ZVRvVmlldy5sZWZ0IC0gc2Nyb2xsTGVmdCAtIChsZWZ0RGl2IHx8IDApLFxuICAgICAgYm90dG9tOiBjYXJldFJlbGF0aXZlVG9WaWV3LmJvdHRvbSxcbiAgICB9KSk7XG4gICAgdGhpcy5wb3NpdGlvbkVsZW1lbnQoKTtcbiAgfVxuXG4gIGdldCBBY3RpdmVJdGVtKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKClbdGhpcy5hY3RpdmVJbmRleCgpXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2soZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hY3RpdmVJbmRleC5zZXQoaW5kZXgpO1xuICAgIHNldChldmVudCBhcyBLZXlib2FyZEV2ZW50LCAna2V5Q29kZScsIFV0aWxzS2V5Q29kZUNvbnN0YW50LkVOVEVSKTtcbiAgICB0aGlzLnBhcmVudEhhbmRsZXJLZXlEb3duKCk/LihldmVudCwgdGhpcy5uYXRpdmVQYXJlbnRFbGVtZW50KCkpO1xuICB9XG5cbiAgYWN0aXZhdGVOZXh0SXRlbSgpIHtcbiAgICB0aGlzLmFjdGl2ZUluZGV4LnNldCh0aGlzLml0ZW1zKCkubGVuZ3RoIC0gMSA+IHRoaXMuYWN0aXZlSW5kZXgoKSA/IHRoaXMuYWN0aXZlSW5kZXgoKSArIDEgOiB0aGlzLmFjdGl2ZUluZGV4KCkpO1xuICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoKTtcbiAgfVxuXG4gIGFjdGl2YXRlUHJldmlvdXNJdGVtKCkge1xuICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KHRoaXMuYWN0aXZlSW5kZXgoKSA+IDAgPyB0aGlzLmFjdGl2ZUluZGV4KCkgLSAxIDogdGhpcy5hY3RpdmVJbmRleCgpKTtcbiAgICB0aGlzLnNjcm9sbFRvQWN0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uRWxlbWVudChsZWZ0OiBudW1iZXIgPSB0aGlzLmNvb3JkcygpLmxlZnQsIHRvcDogbnVtYmVyID0gdGhpcy5jb29yZHMoKS50b3AsIGRyb3BVcDogYm9vbGVhbiA9IHRoaXMuZHJvcFVwKCksIGJvdHRvbTogbnVtYmVyID0gdGhpcy5jb29yZHMoKS5ib3R0b20gfHwgMCkge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50RWwoKT8ubmF0aXZlRWxlbWVudDtcblxuICAgIHRvcCArPSBkcm9wVXAgPyAwIDogdGhpcy5vZmZzZXQoKTsgLy8gdG9wIG9mIGxpc3QgaXMgbmV4dCBsaW5lXG4gICAgZWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGVsLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcbiAgICBlbC5zdHlsZS50b3AgPSBib3R0b20gIT09IC0xID8gJ2F1dG8nIDogdG9wICsgJ3B4JztcbiAgICBlbC5zdHlsZS5ib3R0b20gPSBib3R0b20gPT09IC0xID8gJ2F1dG8nIDogYm90dG9tICsgJ3B4JztcbiAgICB0aGlzLm5hdGl2ZVBhcmVudEVsZW1lbnQoKT8ubm9ybWFsaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEJsb2NrQ3Vyc29yRGltZW5zaW9ucyhuYXRpdmVQYXJlbnRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgY29uc3QgcGFyZW50U3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobmF0aXZlUGFyZW50RWxlbWVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiBwYXJzZUZsb2F0KHBhcmVudFN0eWxlcy5saW5lSGVpZ2h0KSxcbiAgICAgIHdpZHRoOiBwYXJzZUZsb2F0KHBhcmVudFN0eWxlcy5mb250U2l6ZSksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBY3RpdmVJdGVtKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmUoKSB7XG4gICAgaWYgKCF0aGlzLml0ZW1zRWwoKSB8fCB0aGlzLml0ZW1zRWwoKS5sZW5ndGggPD0gdGhpcy5hY3RpdmVJbmRleCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbXNFbCgpW3RoaXMuYWN0aXZlSW5kZXgoKV0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbiAgc2Nyb2xsQ29udGVudCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRFbCgpO1xuICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI2VsZW1lbnRSZWZcbiAgY2xhc3M9XCJsaWJzLXVpLW1lbnRpb24tbGlzdFwiXG4gIFtzdHlsZS56SW5kZXhdPVwiekluZGV4KClcIlxuICBbY2xhc3MuaGlkZGVuXT1cImhpZGRlbigpXCI+XG4gIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbSkge1xuICAgIDxkaXZcbiAgICAgICNpdGVtUmVmXG4gICAgICBjbGFzcz1cImxpYnMtdWktbWVudGlvbi1saXN0LWl0ZW1cIlxuICAgICAgW2NsYXNzLmxpYnMtdWktbWVudGlvbi1saXN0LWl0ZW0tYWN0aXZlXT1cIiRpbmRleCA9PT0gYWN0aXZlSW5kZXgoKVwiXG4gICAgICAobW91c2Vkb3duKT1cImhhbmRsZXJDbGljaygkZXZlbnQsICRpbmRleClcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwiaGFuZGxlQWN0aXZlSXRlbSgkZXZlbnQsICRpbmRleClcIj5cbiAgICAgIEBpZiAobGlzdFRlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RUZW1wbGF0ZSgpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLCBpbmRleDogJGluZGV4IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicHgtWzEycHhdIHB5LVs2cHhdIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1hdmF0YXJcbiAgICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICAgIFtsaW5rQXZhdGFyXT1cIml0ZW0uYXZhdGFyXCJcbiAgICAgICAgICAgIFtsaW5rQXZhdGFyRXJyb3JdPVwiZGVmYXVsdEF2YXRhcigpXCJcbiAgICAgICAgICAgIFtnZXRMYXN0VGV4dEFmdGVyU3BhY2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdGV4dEF2YXRhcl09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW2lkR2VuQ29sb3JdPVwiaXRlbS5pZFwiIC8+XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIidsaWJzLXVpLWZvbnQtaDVyJ1wiXG4gICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cInRydWVcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJ7IHdpZHRoOiAyNTAgfVwiPlxuICAgICAgICAgICAgPCEtLSAvLyB0YS5tIOG6qW4gc2hvdyB0b29sdGlwIHbDrCBjaMawYSB44butIGzDvSDEkWMgduG7iyB0csOtIC0tPlxuICAgICAgICAgICAge3sgaXRlbS5uYW1lICsgJyAoJyArIGl0ZW0udXNlcm5hbWUgKyAnKScgfX1cbiAgICAgICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFXbEcsTUFBTSxPQUFPLDBDQUEwQztJQUNyRCxtQkFBbUI7SUFDWixLQUFLLEdBQUcsTUFBTSxDQUE0QyxFQUFFLENBQUMsQ0FBQztJQUM5RCxXQUFXLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENB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IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgbW9kZWwsIE9uRGVzdHJveSwgT25Jbml0LCBzaWduYWwsIHZpZXdDaGlsZCwgdmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgc2V0LCBVdGlsc0tleUNvZGVDb25zdGFudCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRDYXJldENvb3JkaW5hdGVzIH0gZnJvbSAnLi4vZGVmaW5lcy9jYXJldC1jb29yZHMuZGVmaW5lJztcbmltcG9ydCB7IGdldENvbnRlbnRFZGl0YWJsZUNhcmV0Q29vcmRzLCBpc0lucHV0T3JUZXh0QXJlYUVsZW1lbnQgfSBmcm9tICcuLi9kZWZpbmVzL3V0aWxzLmRlZmluZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtbWVudGlvbi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTGlic1VpQ29tcG9uZW50c0F2YXRhckNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzTWVudGlvbkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHVibGljIGl0ZW1zID0gc2lnbmFsPEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+PihbXSk7XG4gIHB1YmxpYyBhY3RpdmVJbmRleCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwdWJsaWMgaGlkZGVuID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHN0eWxlT2ZmID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHBhcmVudEhhbmRsZXJLZXlEb3duID0gc2lnbmFsPCgoZTogRXZlbnQsIGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQpID0+IHVua25vd24pIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByb3RlY3RlZCBkcm9wVXAgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29vcmRzID0gc2lnbmFsPHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgYm90dG9tPzogbnVtYmVyIH0+KHsgdG9wOiAwLCBsZWZ0OiAwLCBib3R0b206IDAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb2Zmc2V0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlUGFyZW50RWxlbWVudCA9IHNpZ25hbDxIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICBsYWJlbEtleSA9IG1vZGVsPHN0cmluZz4oJ2xhYmVsJyk7XG4gIHpJbmRleCA9IG1vZGVsPG51bWJlcj4oMTAwMCk7XG4gIGlzSWZyYW1lID0gbW9kZWwucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgZGVmYXVsdEF2YXRhciA9IG1vZGVsPHN0cmluZz4oKTtcbiAgbGlzdFRlbXBsYXRlID0gc2lnbmFsPGFueT4odW5kZWZpbmVkKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHJlYWRvbmx5IGVsZW1lbnRFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignZWxlbWVudFJlZicpO1xuICByZWFkb25seSBpdGVtc0VsID0gdmlld0NoaWxkcmVuPEVsZW1lbnRSZWY+KCdpdGVtUmVmJyk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNJZnJhbWUoKSkge1xuICAgICAgdGhpcy5pbml0RXZlbnQod2luZG93LnBhcmVudCwgJ3doZWVsJyk7XG4gICAgICB0aGlzLmluaXRFdmVudCh3aW5kb3cucGFyZW50LCAncmVzaXplJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW5pdEV2ZW50KHdpbmRvdywgJ3doZWVsJyk7XG4gICAgdGhpcy5pbml0RXZlbnQod2luZG93LCAncmVzaXplJyk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJpdmF0ZSBpbml0RXZlbnQoZWxlbWVudDogV2luZG93LCBldmVudE5hbWU6IHN0cmluZykge1xuICAgIGZyb21FdmVudDxFdmVudD4oZWxlbWVudCwgZXZlbnROYW1lKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnROYW1lID09PSAncmVzaXplJyB8fCAhdGhpcy5lbGVtZW50RWwoKT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVyTGlzdGVuQ2xvc2UoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlckxpc3RlbkNsb3NlKGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuZWxlbWVudEVsKCk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaGlkZGVuLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvLyBsb3RzIG9mIGNvbmZ1c2lvbiBoZXJlIGJldHdlZW4gcmVsYXRpdmUgY29vcmRpbmF0ZXMgYW5kIGNvbnRhaW5lcnNcbiAgcG9zaXRpb24obmF0aXZlUGFyZW50RWxlbWVudDogSFRNTElucHV0RWxlbWVudCwgaWZyYW1lPzogSFRNTElGcmFtZUVsZW1lbnQsIGxlZnREaXY/OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm5hdGl2ZVBhcmVudEVsZW1lbnQuc2V0KG5hdGl2ZVBhcmVudEVsZW1lbnQpO1xuICAgIGlmIChpc0lucHV0T3JUZXh0QXJlYUVsZW1lbnQobmF0aXZlUGFyZW50RWxlbWVudCkpIHtcbiAgICAgIC8vIHBhcmVudCBlbGVtZW50cyBuZWVkIHRvIGhhdmUgcG9zdGl0aW9uOnJlbGF0aXZlIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5P1xuICAgICAgdGhpcy5jb29yZHMuc2V0KGdldENhcmV0Q29vcmRpbmF0ZXMobmF0aXZlUGFyZW50RWxlbWVudCwgbmF0aXZlUGFyZW50RWxlbWVudC5zZWxlY3Rpb25TdGFydCkpO1xuICAgICAgdGhpcy5jb29yZHMudXBkYXRlKChpdGVtKSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICB0b3A6IG5hdGl2ZVBhcmVudEVsZW1lbnQub2Zmc2V0VG9wICsgaXRlbS50b3AgLSBuYXRpdmVQYXJlbnRFbGVtZW50LnNjcm9sbFRvcCxcbiAgICAgICAgbGVmdDogbmF0aXZlUGFyZW50RWxlbWVudC5vZmZzZXRMZWZ0ICsgaXRlbS5sZWZ0IC0gbmF0aXZlUGFyZW50RWxlbWVudC5zY3JvbGxMZWZ0ICsgbmF0aXZlUGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LFxuICAgICAgfSkpO1xuXG4gICAgICAvLyBnZXRDcmV0Q29vcmRpbmF0ZXMoKSBmb3IgdGV4dC9pbnB1dCBlbGVtZW50cyBuZWVkcyBhbiBhZGRpdGlvbmFsIG9mZnNldCB0byBwb3NpdGlvbiB0aGUgbGlzdCBjb3JyZWN0bHlcbiAgICAgIHRoaXMub2Zmc2V0LnNldCh0aGlzLmdldEJsb2NrQ3Vyc29yRGltZW5zaW9ucyhuYXRpdmVQYXJlbnRFbGVtZW50KS5oZWlnaHQpO1xuICAgICAgdGhpcy5wb3NpdGlvbkVsZW1lbnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlmcmFtZSkge1xuICAgICAgY29uc3QgY29udGV4dDogeyBpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50OyBwYXJlbnQ6IEVsZW1lbnQgfCBudWxsOyB3aW5kb3dQYXJlbnQ/OiBib29sZWFuIH0gPSB7IGlmcmFtZTogaWZyYW1lLCBwYXJlbnQ6IHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuYm9keSwgd2luZG93UGFyZW50OiB0cnVlIH07XG4gICAgICBjb25zdCBjYXJldFJlbGF0aXZlVG9WaWV3ID0gZ2V0Q29udGVudEVkaXRhYmxlQ2FyZXRDb29yZHMoY29udGV4dCk7XG4gICAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKHdpbmRvdy5zY3JvbGxYIHx8IGRvYy5zY3JvbGxMZWZ0KSAtIChkb2MuY2xpZW50TGVmdCB8fCAwKTtcbiAgICAgIHRoaXMuY29vcmRzLnVwZGF0ZSgoaXRlbSkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgbGVmdDogY2FyZXRSZWxhdGl2ZVRvVmlldy5sZWZ0IC0gc2Nyb2xsTGVmdCAtIChsZWZ0RGl2IHx8IDApLFxuICAgICAgICBib3R0b206IHdpbmRvdy5wYXJlbnQuaW5uZXJIZWlnaHQgLSBjYXJldFJlbGF0aXZlVG9WaWV3LnRvcCArIDE4LFxuICAgICAgfSkpO1xuICAgICAgaWYgKGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tICYmIGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tICE9PSAtMSkge1xuICAgICAgICB0aGlzLmNvb3Jkcy51cGRhdGUoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBib3R0b206IGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBvc2l0aW9uRWxlbWVudCgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKHdpbmRvdy5zY3JvbGxYIHx8IGRvYy5zY3JvbGxMZWZ0KSAtIChkb2MuY2xpZW50TGVmdCB8fCAwKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSAod2luZG93LnNjcm9sbFggfHwgZG9jLnNjcm9sbFRvcCkgLSAoZG9jLmNsaWVudFRvcCB8fCAwKTtcbiAgICAvLyBib3VuZGluZyByZWN0YW5nbGVzIGFyZSByZWxhdGl2ZSB0byB2aWV3LCBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byBjb250YWluZXI/XG4gICAgY29uc3QgY2FyZXRSZWxhdGl2ZVRvVmlldyA9IGdldENvbnRlbnRFZGl0YWJsZUNhcmV0Q29vcmRzKHsgaWZyYW1lLCBwYXJlbnQ6IG51bGwgfSk7XG5cbiAgICB0aGlzLmNvb3Jkcy51cGRhdGUoKGl0ZW0pID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgdG9wOiBjYXJldFJlbGF0aXZlVG9WaWV3LnRvcCAtIHNjcm9sbFRvcCArIDEwLFxuICAgICAgbGVmdDogY2FyZXRSZWxhdGl2ZVRvVmlldy5sZWZ0IC0gc2Nyb2xsTGVmdCAtIChsZWZ0RGl2IHx8IDApLFxuICAgICAgYm90dG9tOiBjYXJldFJlbGF0aXZlVG9WaWV3LmJvdHRvbSxcbiAgICB9KSk7XG4gICAgdGhpcy5wb3NpdGlvbkVsZW1lbnQoKTtcbiAgfVxuXG4gIGdldCBBY3RpdmVJdGVtKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKClbdGhpcy5hY3RpdmVJbmRleCgpXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2soZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hY3RpdmVJbmRleC5zZXQoaW5kZXgpO1xuICAgIHNldChldmVudCBhcyBLZXlib2FyZEV2ZW50LCAna2V5Q29kZScsIFV0aWxzS2V5Q29kZUNvbnN0YW50LkVOVEVSKTtcbiAgICB0aGlzLnBhcmVudEhhbmRsZXJLZXlEb3duKCk/LihldmVudCwgdGhpcy5uYXRpdmVQYXJlbnRFbGVtZW50KCkpO1xuICB9XG5cbiAgYWN0aXZhdGVOZXh0SXRlbSgpIHtcbiAgICB0aGlzLmFjdGl2ZUluZGV4LnNldCh0aGlzLml0ZW1zKCkubGVuZ3RoIC0gMSA+IHRoaXMuYWN0aXZlSW5kZXgoKSA/IHRoaXMuYWN0aXZlSW5kZXgoKSArIDEgOiB0aGlzLmFjdGl2ZUluZGV4KCkpO1xuICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoKTtcbiAgfVxuXG4gIGFjdGl2YXRlUHJldmlvdXNJdGVtKCkge1xuICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KHRoaXMuYWN0aXZlSW5kZXgoKSA+IDAgPyB0aGlzLmFjdGl2ZUluZGV4KCkgLSAxIDogdGhpcy5hY3RpdmVJbmRleCgpKTtcbiAgICB0aGlzLnNjcm9sbFRvQWN0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uRWxlbWVudChsZWZ0OiBudW1iZXIgPSB0aGlzLmNvb3JkcygpLmxlZnQsIHRvcDogbnVtYmVyID0gdGhpcy5jb29yZHMoKS50b3AsIGRyb3BVcDogYm9vbGVhbiA9IHRoaXMuZHJvcFVwKCksIGJvdHRvbTogbnVtYmVyID0gdGhpcy5jb29yZHMoKS5ib3R0b20gfHwgMCkge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50RWwoKT8ubmF0aXZlRWxlbWVudDtcblxuICAgIHRvcCArPSBkcm9wVXAgPyAwIDogdGhpcy5vZmZzZXQoKTsgLy8gdG9wIG9mIGxpc3QgaXMgbmV4dCBsaW5lXG4gICAgZWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGVsLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcbiAgICBlbC5zdHlsZS50b3AgPSBib3R0b20gIT09IC0xID8gJ2F1dG8nIDogdG9wICsgJ3B4JztcbiAgICBlbC5zdHlsZS5ib3R0b20gPSBib3R0b20gPT09IC0xID8gJ2F1dG8nIDogYm90dG9tICsgJ3B4JztcbiAgICB0aGlzLm5hdGl2ZVBhcmVudEVsZW1lbnQoKT8ubm9ybWFsaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEJsb2NrQ3Vyc29yRGltZW5zaW9ucyhuYXRpdmVQYXJlbnRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgY29uc3QgcGFyZW50U3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobmF0aXZlUGFyZW50RWxlbWVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiBwYXJzZUZsb2F0KHBhcmVudFN0eWxlcy5saW5lSGVpZ2h0KSxcbiAgICAgIHdpZHRoOiBwYXJzZUZsb2F0KHBhcmVudFN0eWxlcy5mb250U2l6ZSksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBY3RpdmVJdGVtKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmUoKSB7XG4gICAgaWYgKCF0aGlzLml0ZW1zRWwoKSB8fCB0aGlzLml0ZW1zRWwoKS5sZW5ndGggPD0gdGhpcy5hY3RpdmVJbmRleCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbXNFbCgpW3RoaXMuYWN0aXZlSW5kZXgoKV0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbiAgc2Nyb2xsQ29udGVudCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRFbCgpO1xuICAgICAgaWYgKGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICAjZWxlbWVudFJlZlxuICBjbGFzcz1cImxpYnMtdWktbWVudGlvbi1saXN0XCJcbiAgW3N0eWxlLnpJbmRleF09XCJ6SW5kZXgoKVwiXG4gIFtjbGFzcy5oaWRkZW5dPVwiaGlkZGVuKClcIj5cbiAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtKSB7XG4gICAgPGRpdlxuICAgICAgI2l0ZW1SZWZcbiAgICAgIGNsYXNzPVwibGlicy11aS1tZW50aW9uLWxpc3QtaXRlbVwiXG4gICAgICBbY2xhc3MubGlicy11aS1tZW50aW9uLWxpc3QtaXRlbS1hY3RpdmVdPVwiJGluZGV4ID09PSBhY3RpdmVJbmRleCgpXCJcbiAgICAgIChtb3VzZWRvd24pPVwiaGFuZGxlckNsaWNrKCRldmVudCwgJGluZGV4KVwiXG4gICAgICAobW91c2VlbnRlcik9XCJoYW5kbGVBY3RpdmVJdGVtKCRldmVudCwgJGluZGV4KVwiPlxuICAgICAgQGlmIChsaXN0VGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFRlbXBsYXRlKClcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0sIGluZGV4OiAkaW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJweC1bMTJweF0gcHktWzZweF0gZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWF2YXRhclxuICAgICAgICAgICAgW3NpemVdPVwiMjRcIlxuICAgICAgICAgICAgW2xpbmtBdmF0YXJdPVwiaXRlbS5hdmF0YXJcIlxuICAgICAgICAgICAgW2xpbmtBdmF0YXJFcnJvcl09XCJkZWZhdWx0QXZhdGFyKClcIlxuICAgICAgICAgICAgW2dldExhc3RUZXh0QWZ0ZXJTcGFjZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0ZXh0QXZhdGFyXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICBbaWRHZW5Db2xvcl09XCJpdGVtLmlkXCIgLz5cbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXJcbiAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ2xpYnMtdWktZm9udC1oNXInXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbY29uZmlnXT1cInsgd2lkdGg6IDI1MCB9XCI+XG4gICAgICAgICAgICA8IS0tIC8vIHRhLm0g4bqpbiBzaG93IHRvb2x0aXAgdsOsIGNoxrBhIHjhu60gbMO9IMSRYyB24buLIHRyw60gLS0+XG4gICAgICAgICAgICB7eyBpdGVtLm5hbWUgKyAnICgnICsgaXRlbS51c2VybmFtZSArICcpJyB9fVxuICAgICAgICAgIDwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|