@libs-ui/components-inputs-mention 0.2.306-4 → 0.2.306-5
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/caret-coords.define.mjs +1 -1
- package/esm2022/defines/keyboard.define.mjs +1 -1
- package/esm2022/defines/template.define.mjs +1 -1
- package/esm2022/defines/utils.define.mjs +8 -9
- package/esm2022/index.mjs +1 -1
- package/esm2022/interfaces/mention.interface.mjs +1 -1
- package/esm2022/list/list.component.mjs +3 -3
- package/fesm2022/libs-ui-components-inputs-mention.mjs +7 -8
- package/fesm2022/libs-ui-components-inputs-mention.mjs.map +1 -1
- package/interfaces/mention.interface.d.ts +2 -2
- package/package.json +6 -6
|
@@ -112,4 +112,4 @@ export const getCaretCoordinates = (element, position) => {
|
|
|
112
112
|
document.body.removeChild(div);
|
|
113
113
|
return coordinates;
|
|
114
114
|
};
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZXQtY29vcmRzLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvbWVudGlvbi9zcmMvZGVmaW5lcy9jYXJldC1jb29yZHMuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUdoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCx1REFBdUQ7QUFDdkQsMEVBQTBFO0FBQzFFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxVQUFVLEdBQUc7SUFDakIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVztJQUNYLE9BQU8sRUFBRSxnR0FBZ0c7SUFDekcsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXLEVBQUUsNEJBQTRCO0lBRXpDLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixhQUFhO0lBRWIsWUFBWTtJQUNaLGNBQWM7SUFDZCxlQUFlO0lBQ2YsYUFBYTtJQUViLHdEQUF3RDtJQUN4RCxXQUFXO0lBQ1gsYUFBYTtJQUNiLFlBQVk7SUFDWixhQUFhO0lBQ2IsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osWUFBWTtJQUVaLFdBQVc7SUFDWCxlQUFlO0lBQ2YsWUFBWTtJQUNaLGdCQUFnQixFQUFFLGtEQUFrRDtJQUVwRSxlQUFlO0lBQ2YsYUFBYTtJQUViLFNBQVM7SUFDVCxZQUFZO0NBQ2IsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQztBQUNoRCxNQUFNLFNBQVMsR0FBRyxTQUFTLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9B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dHRwczovL2dpdGh1Yi5jb20vY29tcG9uZW50L3RleHRhcmVhLWNhcmV0LXBvc2l0aW9uICovXG5cbmltcG9ydCB7IFBhdGhzVG9TdHJpbmdQcm9wcyB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0LCBpc05pbCwgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuXG4vLyBXZSdsbCBjb3B5IHRoZSBwcm9wZXJ0aWVzIGJlbG93IGludG8gdGhlIG1pcnJvciBkaXYuXG4vLyBOb3RlIHRoYXQgc29tZSBicm93c2Vycywgc3VjaCBhcyBGaXJlZm94LCBkbyBub3QgY29uY2F0ZW5hdGUgcHJvcGVydGllc1xuLy8gaW50byB0aGVpciBzaG9ydGhhbmQgKGUuZy4gcGFkZGluZy10b3AsIHBhZGRpbmctYm90dG9tIGV0Yy4gLT4gcGFkZGluZyksXG4vLyBzbyB3ZSBoYXZlIHRvIGxpc3QgZXZlcnkgc2luZ2xlIHByb3BlcnR5IGV4cGxpY2l0bHkuXG5jb25zdCBwcm9wZXJ0aWVzID0gW1xuICAnZGlyZWN0aW9uJywgLy8gUlRMIHN1cHBvcnRcbiAgJ2JveFNpemluZycsXG4gICd3aWR0aCcsIC8vIG9uIENocm9tZSBhbmQgSUUsIGV4Y2x1ZGUgdGhlIHNjcm9sbGJhciwgc28gdGhlIG1pcnJvciBkaXYgd3JhcHMgZXhhY3RseSBhcyB0aGUgdGV4dGFyZWEgZG9lc1xuICAnaGVpZ2h0JyxcbiAgJ292ZXJmbG93WCcsXG4gICdvdmVyZmxvd1knLCAvLyBjb3B5IHRoZSBzY3JvbGxiYXIgZm9yIElFXG5cbiAgJ2JvcmRlclRvcFdpZHRoJyxcbiAgJ2JvcmRlclJpZ2h0V2lkdGgnLFxuICAnYm9yZGVyQm90dG9tV2lkdGgnLFxuICAnYm9yZGVyTGVmdFdpZHRoJyxcbiAgJ2JvcmRlclN0eWxlJyxcblxuICAncGFkZGluZ1RvcCcsXG4gICdwYWRkaW5nUmlnaHQnLFxuICAncGFkZGluZ0JvdHRvbScsXG4gICdwYWRkaW5nTGVmdCcsXG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZvbnRcbiAgJ2ZvbnRTdHlsZScsXG4gICdmb250VmFyaWFudCcsXG4gICdmb250V2VpZ2h0JyxcbiAgJ2ZvbnRTdHJldGNoJyxcbiAgJ2ZvbnRTaXplJyxcbiAgJ2ZvbnRTaXplQWRqdXN0JyxcbiAgJ2xpbmVIZWlnaHQnLFxuICAnZm9udEZhbWlseScsXG5cbiAgJ3RleHRBbGlnbicsXG4gICd0ZXh0VHJhbnNmb3JtJyxcbiAgJ3RleHRJbmRlbnQnLFxuICAndGV4dERlY29yYXRpb24nLCAvLyBtaWdodCBub3QgbWFrZSBhIGRpZmZlcmVuY2UsIGJ1dCBiZXR0ZXIgYmUgc2FmZVxuXG4gICdsZXR0ZXJTcGFjaW5nJyxcbiAgJ3dvcmRTcGFjaW5nJyxcblxuICAndGFiU2l6ZScsXG4gICdNb3pUYWJTaXplJyxcbl07XG5cbmNvbnN0IGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuY29uc3QgaXNGaXJlZm94ID0gaXNCcm93c2VyICYmIGdldCh3aW5kb3csICdtb3pJbm5lclNjcmVlblgnKSAhPT0gbnVsbDtcblxuZXhwb3J0IGNvbnN0IGdldENhcmV0Q29vcmRpbmF0ZXMgPSAoZWxlbWVudDogRWxlbWVudCwgcG9zaXRpb246IG51bWJlciB8IG51bGwpID0+IHtcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RleHRhcmVhLWNhcmV0LXBvc2l0aW9uI2dldENhcmV0Q29vcmRpbmF0ZXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGEgYnJvd3NlcicpO1xuICB9XG5cbiAgLy8gVGhlIG1pcnJvciBkaXYgd2lsbCByZXBsaWNhdGUgdGhlIHRleHRhcmVhJ3Mgc3R5bGVcbiAgY29uc3QgZGl2OiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pZCA9ICdpbnB1dC10ZXh0YXJlYS1jYXJldC1wb3NpdGlvbi1taXJyb3ItZGl2JztcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuXG4gIGNvbnN0IHN0eWxlID0gZGl2LnN0eWxlO1xuICBjb25zdCBjb21wdXRlZCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkgOiBnZXQoZWxlbWVudCwgJ2N1cnJlbnRTdHlsZScpOyAvLyBjdXJyZW50U3R5bGUgZm9yIElFIDwgOVxuICBjb25zdCBpc0lucHV0ID0gZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lOUFVUJztcblxuICAvLyBEZWZhdWx0IHRleHRhcmVhIHN0eWxlc1xuICBzdHlsZS53aGl0ZVNwYWNlID0gJ3ByZS13cmFwJztcbiAgaWYgKCFpc0lucHV0KSB7XG4gICAgc3R5bGUud29yZEJyZWFrID0gJ2JyZWFrLXdvcmQnO1xuICB9IC8vIG9ubHkgZm9yIHRleHRhcmVhLXNcblxuICAvLyBQb3NpdGlvbiBvZmYtc2NyZWVuXG4gIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsgLy8gcmVxdWlyZWQgdG8gcmV0dXJuIGNvb3JkaW5hdGVzIHByb3Blcmx5XG5cbiAgLy8gVHJhbnNmZXIgdGhlIGVsZW1lbnQncyBwcm9wZXJ0aWVzIHRvIHRoZSBkaXZcbiAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgaWYgKGlzSW5wdXQgJiYgcHJvcCA9PT0gJ2xpbmVIZWlnaHQnKSB7XG4gICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIDxpbnB1dD5zIGJlY2F1c2UgdGV4dCBpcyByZW5kZXJlZCBjZW50ZXJlZCBhbmQgbGluZSBoZWlnaHQgbWF5IGJlICE9IGhlaWdodFxuICAgICAgaWYgKGNvbXB1dGVkLmJveFNpemluZyAhPT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICAgIHN0eWxlLmxpbmVIZWlnaHQgPSBjb21wdXRlZC5oZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VJbnQoY29tcHV0ZWQuaGVpZ2h0KTtcbiAgICAgIGNvbnN0IG91dGVySGVpZ2h0ID0gcGFyc2VJbnQoY29tcHV0ZWQucGFkZGluZ1RvcCkgKyBwYXJzZUludChjb21wdXRlZC5wYWRkaW5nQm90dG9tKSArIHBhcnNlSW50KGNvbXB1dGVkLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlSW50KGNvbXB1dGVkLmJvcmRlckJvdHRvbVdpZHRoKTtcbiAgICAgIGNvbnN0IHRhcmdldEhlaWdodCA9IG91dGVySGVpZ2h0ICsgcGFyc2VJbnQoY29tcHV0ZWQubGluZUhlaWdodCk7XG5cbiAgICAgIGlmIChoZWlnaHQgPiB0YXJnZXRIZWlnaHQpIHtcbiAgICAgICAgc3R5bGUubGluZUhlaWdodCA9IGhlaWdodCAtIG91dGVySGVpZ2h0ICsgJ3B4JztcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaGVpZ2h0ID09PSB0YXJnZXRIZWlnaHQpIHtcbiAgICAgICAgc3R5bGUubGluZUhlaWdodCA9IGNvbXB1dGVkLmxpbmVIZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3R5bGUubGluZUhlaWdodCA9ICcwJztcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXQoc3R5bGUsIHByb3AgYXMgUGF0aHNUb1N0cmluZ1Byb3BzPENTU1N0eWxlRGVjbGFyYXRpb24+LCBjb21wdXRlZFtwcm9wXSk7XG4gIH0pO1xuXG4gIGlmICghaXNGaXJlZm94KSB7XG4gICAgc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAvLyBGaXJlZm94IGxpZXMgYWJvdXQgdGhlIG92ZXJmbG93IHByb3BlcnR5IGZvciB0ZXh0YXJlYXM6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDI3NVxuICB9XG4gIGNvbnN0IHZhbHVlID0gZ2V0KGVsZW1lbnQsICd2YWx1ZScpO1xuICBpZiAoaXNGaXJlZm94ICYmIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gcGFyc2VJbnQoY29tcHV0ZWQuaGVpZ2h0KSkge1xuICAgIHN0eWxlLm92ZXJmbG93WSA9ICdzY3JvbGwnO1xuICB9XG4gIGRpdi50ZXh0Q29udGVudCA9IHZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbik7XG4gIC8vIFRoZSBzZWNvbmQgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW5wdXQgdHlwZT1cInRleHRcIiB2cyB0ZXh0YXJlYTpcbiAgLy8gc3BhY2VzIG5lZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCBub24tYnJlYWtpbmcgc3BhY2VzIC0gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTM0MDIwMzUvMTI2OTAzN1xuICBpZiAoaXNJbnB1dCAmJiAhaXNOaWwoZGl2LnRleHRDb250ZW50KSkge1xuICAgIGRpdi50ZXh0Q29udGVudCA9IGRpdi50ZXh0Q29udGVudC5yZXBsYWNlKC9cXHMvZywgJ1xcdTAwYTAnKTtcbiAgfVxuICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gIC8vIFdyYXBwaW5nIG11c3QgYmUgcmVwbGljYXRlZCAqZXhhY3RseSosIGluY2x1ZGluZyB3aGVuIGEgbG9uZyB3b3JkIGdldHNcbiAgLy8gb250byB0aGUgbmV4dCBsaW5lLCB3aXRoIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBiZWZvcmUgKCM3KS5cbiAgLy8gVGhlICAqb25seSogcmVsaWFibGUgd2F5IHRvIGRvIHRoYXQgaXMgdG8gY29weSB0aGUgKmVudGlyZSogcmVzdCBvZiB0aGVcbiAgLy8gdGV4dGFyZWEncyBjb250ZW50IGludG8gdGhlIDxzcGFuPiBjcmVhdGVkIGF0IHRoZSBjYXJldCBwb3NpdGlvbi5cbiAgLy8gRm9yIGlucHV0cywganVzdCAnLicgd291bGQgYmUgZW5vdWdoLCBidXQgbm8gbmVlZCB0byBib3RoZXIuXG4gIHNwYW4udGV4dENvbnRlbnQgPSB2YWx1ZS5zdWJzdHJpbmcocG9zaXRpb24pIHx8ICcuJzsgLy8gfHwgYmVjYXVzZSBhIGNvbXBsZXRlbHkgZW1wdHkgZmF1eCBzcGFuIGRvZXNuJ3QgcmVuZGVyIGF0IGFsbFxuICBkaXYuYXBwZW5kQ2hpbGQoc3Bhbik7XG5cbiAgY29uc3QgY29vcmRpbmF0ZXMgPSB7XG4gICAgdG9wOiBzcGFuLm9mZnNldFRvcCArIHBhcnNlSW50KGNvbXB1dGVkWydib3JkZXJUb3BXaWR0aCddKSxcbiAgICBsZWZ0OiBzcGFuLm9mZnNldExlZnQgKyBwYXJzZUludChjb21wdXRlZFsnYm9yZGVyTGVmdFdpZHRoJ10pLFxuICAgIGhlaWdodDogcGFyc2VJbnQoY29tcHV0ZWRbJ2xpbmVIZWlnaHQnXSksXG4gIH07XG5cbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpO1xuXG4gIHJldHVybiBjb29yZGluYXRlcztcbn07XG4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZXQtY29vcmRzLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvbWVudGlvbi9zcmMvZGVmaW5lcy9jYXJldC1jb29yZHMuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUdoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCx1REFBdUQ7QUFDdkQsMEVBQTBFO0FBQzFFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxVQUFVLEdBQUc7SUFDakIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVztJQUNYLE9BQU8sRUFBRSxnR0FBZ0c7SUFDekcsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXLEVBQUUsNEJBQTRCO0lBRXpDLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixhQUFhO0lBRWIsWUFBWTtJQUNaLGNBQWM7SUFDZCxlQUFlO0lBQ2YsYUFBYTtJQUViLHdEQUF3RDtJQUN4RCxXQUFXO0lBQ1gsYUFBYTtJQUNiLFlBQVk7SUFDWixhQUFhO0lBQ2IsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osWUFBWTtJQUVaLFdBQVc7SUFDWCxlQUFlO0lBQ2YsWUFBWTtJQUNaLGdCQUFnQixFQUFFLGtEQUFrRDtJQUVwRSxlQUFlO0lBQ2YsYUFBYTtJQUViLFNBQVM7SUFDVCxZQUFZO0NBQ2IsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQztBQUNoRCxNQUFNLFNBQVMsR0FBRyxTQUFTLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9B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dHRwczovL2dpdGh1Yi5jb20vY29tcG9uZW50L3RleHRhcmVhLWNhcmV0LXBvc2l0aW9uICovXG5cbmltcG9ydCB7IFBhdGhPZiB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0LCBpc05pbCwgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuXG4vLyBXZSdsbCBjb3B5IHRoZSBwcm9wZXJ0aWVzIGJlbG93IGludG8gdGhlIG1pcnJvciBkaXYuXG4vLyBOb3RlIHRoYXQgc29tZSBicm93c2Vycywgc3VjaCBhcyBGaXJlZm94LCBkbyBub3QgY29uY2F0ZW5hdGUgcHJvcGVydGllc1xuLy8gaW50byB0aGVpciBzaG9ydGhhbmQgKGUuZy4gcGFkZGluZy10b3AsIHBhZGRpbmctYm90dG9tIGV0Yy4gLT4gcGFkZGluZyksXG4vLyBzbyB3ZSBoYXZlIHRvIGxpc3QgZXZlcnkgc2luZ2xlIHByb3BlcnR5IGV4cGxpY2l0bHkuXG5jb25zdCBwcm9wZXJ0aWVzID0gW1xuICAnZGlyZWN0aW9uJywgLy8gUlRMIHN1cHBvcnRcbiAgJ2JveFNpemluZycsXG4gICd3aWR0aCcsIC8vIG9uIENocm9tZSBhbmQgSUUsIGV4Y2x1ZGUgdGhlIHNjcm9sbGJhciwgc28gdGhlIG1pcnJvciBkaXYgd3JhcHMgZXhhY3RseSBhcyB0aGUgdGV4dGFyZWEgZG9lc1xuICAnaGVpZ2h0JyxcbiAgJ292ZXJmbG93WCcsXG4gICdvdmVyZmxvd1knLCAvLyBjb3B5IHRoZSBzY3JvbGxiYXIgZm9yIElFXG5cbiAgJ2JvcmRlclRvcFdpZHRoJyxcbiAgJ2JvcmRlclJpZ2h0V2lkdGgnLFxuICAnYm9yZGVyQm90dG9tV2lkdGgnLFxuICAnYm9yZGVyTGVmdFdpZHRoJyxcbiAgJ2JvcmRlclN0eWxlJyxcblxuICAncGFkZGluZ1RvcCcsXG4gICdwYWRkaW5nUmlnaHQnLFxuICAncGFkZGluZ0JvdHRvbScsXG4gICdwYWRkaW5nTGVmdCcsXG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZvbnRcbiAgJ2ZvbnRTdHlsZScsXG4gICdmb250VmFyaWFudCcsXG4gICdmb250V2VpZ2h0JyxcbiAgJ2ZvbnRTdHJldGNoJyxcbiAgJ2ZvbnRTaXplJyxcbiAgJ2ZvbnRTaXplQWRqdXN0JyxcbiAgJ2xpbmVIZWlnaHQnLFxuICAnZm9udEZhbWlseScsXG5cbiAgJ3RleHRBbGlnbicsXG4gICd0ZXh0VHJhbnNmb3JtJyxcbiAgJ3RleHRJbmRlbnQnLFxuICAndGV4dERlY29yYXRpb24nLCAvLyBtaWdodCBub3QgbWFrZSBhIGRpZmZlcmVuY2UsIGJ1dCBiZXR0ZXIgYmUgc2FmZVxuXG4gICdsZXR0ZXJTcGFjaW5nJyxcbiAgJ3dvcmRTcGFjaW5nJyxcblxuICAndGFiU2l6ZScsXG4gICdNb3pUYWJTaXplJyxcbl07XG5cbmNvbnN0IGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuY29uc3QgaXNGaXJlZm94ID0gaXNCcm93c2VyICYmIGdldCh3aW5kb3csICdtb3pJbm5lclNjcmVlblgnKSAhPT0gbnVsbDtcblxuZXhwb3J0IGNvbnN0IGdldENhcmV0Q29vcmRpbmF0ZXMgPSAoZWxlbWVudDogRWxlbWVudCwgcG9zaXRpb246IG51bWJlciB8IG51bGwpID0+IHtcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RleHRhcmVhLWNhcmV0LXBvc2l0aW9uI2dldENhcmV0Q29vcmRpbmF0ZXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGEgYnJvd3NlcicpO1xuICB9XG5cbiAgLy8gVGhlIG1pcnJvciBkaXYgd2lsbCByZXBsaWNhdGUgdGhlIHRleHRhcmVhJ3Mgc3R5bGVcbiAgY29uc3QgZGl2OiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pZCA9ICdpbnB1dC10ZXh0YXJlYS1jYXJldC1wb3NpdGlvbi1taXJyb3ItZGl2JztcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuXG4gIGNvbnN0IHN0eWxlID0gZGl2LnN0eWxlO1xuICBjb25zdCBjb21wdXRlZCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkgOiBnZXQoZWxlbWVudCwgJ2N1cnJlbnRTdHlsZScpOyAvLyBjdXJyZW50U3R5bGUgZm9yIElFIDwgOVxuICBjb25zdCBpc0lucHV0ID0gZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lOUFVUJztcblxuICAvLyBEZWZhdWx0IHRleHRhcmVhIHN0eWxlc1xuICBzdHlsZS53aGl0ZVNwYWNlID0gJ3ByZS13cmFwJztcbiAgaWYgKCFpc0lucHV0KSB7XG4gICAgc3R5bGUud29yZEJyZWFrID0gJ2JyZWFrLXdvcmQnO1xuICB9IC8vIG9ubHkgZm9yIHRleHRhcmVhLXNcblxuICAvLyBQb3NpdGlvbiBvZmYtc2NyZWVuXG4gIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsgLy8gcmVxdWlyZWQgdG8gcmV0dXJuIGNvb3JkaW5hdGVzIHByb3Blcmx5XG5cbiAgLy8gVHJhbnNmZXIgdGhlIGVsZW1lbnQncyBwcm9wZXJ0aWVzIHRvIHRoZSBkaXZcbiAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgaWYgKGlzSW5wdXQgJiYgcHJvcCA9PT0gJ2xpbmVIZWlnaHQnKSB7XG4gICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIDxpbnB1dD5zIGJlY2F1c2UgdGV4dCBpcyByZW5kZXJlZCBjZW50ZXJlZCBhbmQgbGluZSBoZWlnaHQgbWF5IGJlICE9IGhlaWdodFxuICAgICAgaWYgKGNvbXB1dGVkLmJveFNpemluZyAhPT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICAgIHN0eWxlLmxpbmVIZWlnaHQgPSBjb21wdXRlZC5oZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VJbnQoY29tcHV0ZWQuaGVpZ2h0KTtcbiAgICAgIGNvbnN0IG91dGVySGVpZ2h0ID0gcGFyc2VJbnQoY29tcHV0ZWQucGFkZGluZ1RvcCkgKyBwYXJzZUludChjb21wdXRlZC5wYWRkaW5nQm90dG9tKSArIHBhcnNlSW50KGNvbXB1dGVkLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlSW50KGNvbXB1dGVkLmJvcmRlckJvdHRvbVdpZHRoKTtcbiAgICAgIGNvbnN0IHRhcmdldEhlaWdodCA9IG91dGVySGVpZ2h0ICsgcGFyc2VJbnQoY29tcHV0ZWQubGluZUhlaWdodCk7XG5cbiAgICAgIGlmIChoZWlnaHQgPiB0YXJnZXRIZWlnaHQpIHtcbiAgICAgICAgc3R5bGUubGluZUhlaWdodCA9IGhlaWdodCAtIG91dGVySGVpZ2h0ICsgJ3B4JztcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaGVpZ2h0ID09PSB0YXJnZXRIZWlnaHQpIHtcbiAgICAgICAgc3R5bGUubGluZUhlaWdodCA9IGNvbXB1dGVkLmxpbmVIZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3R5bGUubGluZUhlaWdodCA9ICcwJztcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXQoc3R5bGUsIHByb3AgYXMgUGF0aE9mPENTU1N0eWxlRGVjbGFyYXRpb24+LCBjb21wdXRlZFtwcm9wXSk7XG4gIH0pO1xuXG4gIGlmICghaXNGaXJlZm94KSB7XG4gICAgc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAvLyBGaXJlZm94IGxpZXMgYWJvdXQgdGhlIG92ZXJmbG93IHByb3BlcnR5IGZvciB0ZXh0YXJlYXM6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDI3NVxuICB9XG4gIGNvbnN0IHZhbHVlID0gZ2V0KGVsZW1lbnQsICd2YWx1ZScpO1xuICBpZiAoaXNGaXJlZm94ICYmIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gcGFyc2VJbnQoY29tcHV0ZWQuaGVpZ2h0KSkge1xuICAgIHN0eWxlLm92ZXJmbG93WSA9ICdzY3JvbGwnO1xuICB9XG4gIGRpdi50ZXh0Q29udGVudCA9IHZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbik7XG4gIC8vIFRoZSBzZWNvbmQgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW5wdXQgdHlwZT1cInRleHRcIiB2cyB0ZXh0YXJlYTpcbiAgLy8gc3BhY2VzIG5lZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCBub24tYnJlYWtpbmcgc3BhY2VzIC0gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTM0MDIwMzUvMTI2OTAzN1xuICBpZiAoaXNJbnB1dCAmJiAhaXNOaWwoZGl2LnRleHRDb250ZW50KSkge1xuICAgIGRpdi50ZXh0Q29udGVudCA9IGRpdi50ZXh0Q29udGVudC5yZXBsYWNlKC9cXHMvZywgJ1xcdTAwYTAnKTtcbiAgfVxuICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gIC8vIFdyYXBwaW5nIG11c3QgYmUgcmVwbGljYXRlZCAqZXhhY3RseSosIGluY2x1ZGluZyB3aGVuIGEgbG9uZyB3b3JkIGdldHNcbiAgLy8gb250byB0aGUgbmV4dCBsaW5lLCB3aXRoIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBiZWZvcmUgKCM3KS5cbiAgLy8gVGhlICAqb25seSogcmVsaWFibGUgd2F5IHRvIGRvIHRoYXQgaXMgdG8gY29weSB0aGUgKmVudGlyZSogcmVzdCBvZiB0aGVcbiAgLy8gdGV4dGFyZWEncyBjb250ZW50IGludG8gdGhlIDxzcGFuPiBjcmVhdGVkIGF0IHRoZSBjYXJldCBwb3NpdGlvbi5cbiAgLy8gRm9yIGlucHV0cywganVzdCAnLicgd291bGQgYmUgZW5vdWdoLCBidXQgbm8gbmVlZCB0byBib3RoZXIuXG4gIHNwYW4udGV4dENvbnRlbnQgPSB2YWx1ZS5zdWJzdHJpbmcocG9zaXRpb24pIHx8ICcuJzsgLy8gfHwgYmVjYXVzZSBhIGNvbXBsZXRlbHkgZW1wdHkgZmF1eCBzcGFuIGRvZXNuJ3QgcmVuZGVyIGF0IGFsbFxuICBkaXYuYXBwZW5kQ2hpbGQoc3Bhbik7XG5cbiAgY29uc3QgY29vcmRpbmF0ZXMgPSB7XG4gICAgdG9wOiBzcGFuLm9mZnNldFRvcCArIHBhcnNlSW50KGNvbXB1dGVkWydib3JkZXJUb3BXaWR0aCddKSxcbiAgICBsZWZ0OiBzcGFuLm9mZnNldExlZnQgKyBwYXJzZUludChjb21wdXRlZFsnYm9yZGVyTGVmdFdpZHRoJ10pLFxuICAgIGhlaWdodDogcGFyc2VJbnQoY29tcHV0ZWRbJ2xpbmVIZWlnaHQnXSksXG4gIH07XG5cbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpO1xuXG4gIHJldHVybiBjb29yZGluYXRlcztcbn07XG4iXX0=
|
|
@@ -7,4 +7,4 @@ export const KEY_SPACE = 32;
|
|
|
7
7
|
export const KEY_UP = 38;
|
|
8
8
|
export const KEY_DOWN = 40;
|
|
9
9
|
export const KEY_BUFFERED = 229;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9kZWZpbmVzL2tleWJvYXJkLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDekIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDN0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBLRVlfQkFDS1NQQUNFID0gODtcbmV4cG9ydCBjb25zdCBLRVlfVEFCID0gOTtcbmV4cG9ydCBjb25zdCBLRVlfRU5URVIgPSAxMztcbmV4cG9ydCBjb25zdCBLRVlfU0hJRlQgPSAxNjtcbmV4cG9ydCBjb25zdCBLRVlfRVNDQVBFID0gMjc7XG5leHBvcnQgY29uc3QgS0VZX1NQQUNFID0gMzI7XG5leHBvcnQgY29uc3QgS0VZX1VQID0gMzg7XG5leHBvcnQgY29uc3QgS0VZX0RPV04gPSA0MDtcbmV4cG9ydCBjb25zdCBLRVlfQlVGRkVSRUQgPSAyMjk7XG4iXX0=
|
|
@@ -23,4 +23,4 @@ export const DEFAULT_CONFIG = {
|
|
|
23
23
|
});
|
|
24
24
|
},
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9kZWZpbmVzL3RlbXBsYXRlLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFVLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDL0UsT0FBTyw2TEFBNkwsRUFBRSxXQUFXLElBQUksWUFBWSxLQUFLLEtBQUssS0FBSyxlQUFlLENBQUM7QUFDbFEsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQjtJQUM1QyxLQUFLLEVBQUUsRUFBRTtJQUNULFdBQVcsRUFBRSxHQUFHO0lBQ2hCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixvQkFBb0IsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUNuRSxhQUFhLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRTtJQUNqRCxhQUFhLEVBQUUsQ0FBQyxNQUFjLEVBQUUsS0FBc0IsRUFBRSxFQUFFO1FBQ3hELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV6RCxPQUFPLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFNLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQU0sSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFFekUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IGRlbGV0ZVVuaWNvZGUsIGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IElNZW50aW9uQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9tZW50aW9uLmludGVyZmFjZSc7XG5leHBvcnQgY29uc3QgUEFUVEVSTl9JTlNFUlQgPSAnXFx1ZmVmZic7XG5cbmV4cG9ydCBjb25zdCBidWlsZFRlbXBsYXRlID0gKHZhbHVlOiBzdHJpbmcsIGlkOiBzdHJpbmcsIGZlSWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWNvbXBvbmVudHMtbWVudGlvbi1pdGVtXCIgc3R5bGU9XCJmb250LXdlaWdodDogNjAwOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7IGNvbG9yOiAjNzIzOUVBXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIiBpZD1cIiR7aWR9XCIgZmVJZD1cIiR7ZmVJZH1cIiB2YWx1ZT1cIiR7dmFsdWV9XCI+JHt2YWx1ZX08L3NwYW4+Jm5ic3A7YDtcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTkZJRzogSU1lbnRpb25Db25maWcgPSB7XG4gIGl0ZW1zOiBbXSxcbiAgdHJpZ2dlckNoYXI6ICdAJyxcbiAgbGFiZWxLZXk6ICdlbWFpbCcsXG4gIGFsbG93U3BhY2U6IHRydWUsXG4gIHJldHVyblRyaWdnZXI6IGZhbHNlLFxuICBsaW1pdFNwYWNlU2VhcmNoUXVlcnk6IDMsXG4gIG1lbnRpb25FdmVudE5hbWU6ICdjbGljaycsXG4gIG1lbnRpb25BY3Rpb25CeUV2ZW50OiAoaXRlbSwgdHJpZ2dlcikgPT4gY29uc29sZS5sb2coaXRlbSwgdHJpZ2dlciksXG4gIG1lbnRpb25TZWxlY3Q6IChpdGVtKSA9PiBgQCR7Z2V0KGl0ZW0sICdlbWFpbCcpfWAsXG4gIG1lbnRpb25GaWx0ZXI6IChzZWFyY2g6IHN0cmluZywgaXRlbXM/OiBBcnJheTx1bmtub3duPikgPT4ge1xuICAgIGNvbnN0IHNlYXJjaFN0cmluZyA9IGRlbGV0ZVVuaWNvZGUoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgcmV0dXJuIGl0ZW1zPy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBkZWxldGVVbmljb2RlKGdldDxhbnk+KGl0ZW0sICduYW1lJykudG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCB1c2VyTmFtZSA9IGRlbGV0ZVVuaWNvZGUoZ2V0PGFueT4oaXRlbSwgJ3VzZXJuYW1lJykudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgIHJldHVybiBuYW1lLmluY2x1ZGVzKHNlYXJjaFN0cmluZykgfHwgdXNlck5hbWUuaW5jbHVkZXMoc2VhcmNoU3RyaW5nKTtcbiAgICB9KTtcbiAgfSxcbn07XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { get } from
|
|
2
|
-
import { PATTERN_INSERT } from
|
|
1
|
+
import { get } from '@libs-ui/utils';
|
|
2
|
+
import { PATTERN_INSERT } from './template.define';
|
|
3
3
|
const setValue = (el, value) => {
|
|
4
4
|
if (isInputOrTextAreaElement(el)) {
|
|
5
5
|
el.value = value;
|
|
@@ -40,7 +40,7 @@ const insertValueToContentEditable = (start, end, text) => {
|
|
|
40
40
|
// Range.createContextualFragment() would be useful here but is
|
|
41
41
|
// only relatively recently standardized and is not supported in
|
|
42
42
|
// some browsers (IE9, for one)
|
|
43
|
-
const el = document.createElement(
|
|
43
|
+
const el = document.createElement('SPAN');
|
|
44
44
|
el.innerHTML = text;
|
|
45
45
|
const frag = document.createDocumentFragment();
|
|
46
46
|
let node, lastNode, nodeHandlerEvent;
|
|
@@ -72,7 +72,7 @@ export const getTextBeforeCursor = () => {
|
|
|
72
72
|
rangeNew.selectNodeContents(anchorNode);
|
|
73
73
|
rangeNew.setEnd(range.startContainer, range.startOffset);
|
|
74
74
|
const fragNew = rangeNew.cloneContents();
|
|
75
|
-
const elmPrev = document.createElement(
|
|
75
|
+
const elmPrev = document.createElement('SPAN');
|
|
76
76
|
elmPrev.appendChild(fragNew);
|
|
77
77
|
return elmPrev.innerText;
|
|
78
78
|
};
|
|
@@ -99,7 +99,6 @@ export const setCaretPosition = (el, pos, iframe) => {
|
|
|
99
99
|
if (range) {
|
|
100
100
|
sel.addRange(range);
|
|
101
101
|
}
|
|
102
|
-
;
|
|
103
102
|
};
|
|
104
103
|
export const getCaretPosition = (el, iframe) => {
|
|
105
104
|
if (isInputOrTextAreaElement(el)) {
|
|
@@ -140,7 +139,7 @@ export const getContentEditableCaretCoords = (ctx) => {
|
|
|
140
139
|
return {
|
|
141
140
|
left: 0,
|
|
142
141
|
top: 0,
|
|
143
|
-
bottom: 0
|
|
142
|
+
bottom: 0,
|
|
144
143
|
};
|
|
145
144
|
}
|
|
146
145
|
const prevRange = sel.getRangeAt(0);
|
|
@@ -161,7 +160,7 @@ export const getContentEditableCaretCoords = (ctx) => {
|
|
|
161
160
|
const coordinates = {
|
|
162
161
|
left: 0,
|
|
163
162
|
top: markerEl.offsetHeight,
|
|
164
|
-
bottom: -1
|
|
163
|
+
bottom: -1,
|
|
165
164
|
};
|
|
166
165
|
localToRelativeCoordinates(ctx, markerEl, coordinates);
|
|
167
166
|
markerEl.parentNode?.removeChild(markerEl);
|
|
@@ -231,7 +230,7 @@ export const insertTextAtCaret = (element, text) => {
|
|
|
231
230
|
const sel = window.getSelection();
|
|
232
231
|
if (sel?.getRangeAt && sel.rangeCount) {
|
|
233
232
|
let range = sel.getRangeAt(0);
|
|
234
|
-
const el = document.createElement(
|
|
233
|
+
const el = document.createElement('SPAN');
|
|
235
234
|
range.deleteContents();
|
|
236
235
|
el.innerHTML = text;
|
|
237
236
|
const frag = document.createDocumentFragment();
|
|
@@ -277,4 +276,4 @@ const isOrContains = (node, container) => {
|
|
|
277
276
|
}
|
|
278
277
|
return false;
|
|
279
278
|
};
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9kZWZpbmVzL3V0aWxzLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBb0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUN2RCxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFakIsT0FBTztJQUNULENBQUM7SUFDRCxFQUFFLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEVBQUU7SUFDL0MsT0FBTyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLE1BQXlCLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBZ0MsRUFBRTtJQUMxSyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoRixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFbEQsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE9BQU87SUFDVCxDQUFDO0lBRUQsT0FBTyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUVGLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLElBQVksRUFBZ0MsRUFBRTtJQUM5RyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsRSxPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztJQUNsQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFFcEUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2pELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QiwrREFBK0Q7SUFDL0QsZ0VBQWdFO0lBQ2hFLCtCQUErQjtJQUMvQixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQy9DLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQztJQUVyQyxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzlCLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDO1FBRUQsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkIseUJBQXlCO0lBQ3pCLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7SUFDdEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFeEMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFL0MsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU3QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxFQUFlLEVBQVcsRUFBRTtJQUNuRSxPQUFPLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLE9BQU8sSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQWUsRUFBVyxFQUFFO0lBQ3hELE9BQU8sRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssVUFBVSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUM7QUFDM0csQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEdBQVcsRUFBRSxNQUF5QixFQUFFLEVBQUU7SUFDL0YsSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEQsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUvQixPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUVqRCxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QixLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXZDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE9BQU87SUFDVCxDQUFDO0lBQ0QsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3JCLENBQUM7SUFBQSxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUFvQixFQUFFLE1BQTBCLEVBQVUsRUFBRTtJQUMzRixJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUVyQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLElBQUksU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdELENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtJQUVuRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTVDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFFakQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBRUYsZ0NBQWdDO0FBQ2hDLEVBQUU7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRTtJQUNqRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQTBCLEVBQW9CLEVBQUU7SUFDakYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxHQUE4RixFQUFFLEVBQUU7SUFDOUksTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFhLENBQUM7SUFDaEQsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBYyxDQUFDO0lBRXhELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE9BQU87WUFDTCxJQUFJLEVBQUUsQ0FBQztZQUNQLEdBQUcsRUFBRSxDQUFDO1lBQ04sTUFBTSxFQUFFLENBQUM7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFcEMsbURBQW1EO0lBQ25ELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBa0IsQ0FBQztJQUMxQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdEIsb0VBQW9FO0lBQ3BFLCtEQUErRDtJQUMvRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTNDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ3ZCLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3pELEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0IsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFeEIsTUFBTSxXQUFXLEdBQUc7UUFDbEIsSUFBSSxFQUFFLENBQUM7UUFDUCxHQUFHLEVBQUUsUUFBUSxDQUFDLFlBQVk7UUFDMUIsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUNYLENBQUM7SUFFRiwwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUUzSixJQUFJLFdBQVcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDNUMsQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUVoSyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLFlBQVksRUFBRSxDQUFDO1FBQ3pDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsWUFBWSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ3pELFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxHQUE4RixFQUFFLE9BQWdCLEVBQUUsV0FBMEQsRUFBRSxFQUFFO0lBQ2xOLElBQUksR0FBRyxHQUFnQixPQUFPLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFckMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNYLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM5QyxNQUFNO1FBQ1IsQ0FBQztRQUNELFdBQVcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ3BELFdBQVcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2pELEdBQUcsR0FBZ0IsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ25CLEdBQUcsR0FBRyxNQUFNLENBQUM7WUFDYixNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsR0FBRyxHQUFnQixPQUFPLENBQUM7SUFDM0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pDLE9BQU8sQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2xGLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM5QyxNQUFNO1FBQ1IsQ0FBQztRQUNELElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLFdBQVcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekMsV0FBVyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxHQUFHLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQWMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQWMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNyRixJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ25CLEdBQUcsR0FBRyxNQUFNLENBQUM7WUFDYixNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLHNCQUE0QixFQUFFLEVBQUU7SUFDL0QsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsZ0VBQWdFO1FBQ3RHLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLDJEQUEyRDtRQUVwRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLDBEQUEwRDtRQUM1RyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsd0ZBQXdGO1FBQy9HLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLG9DQUFvQztRQUNsRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNERBQTREO0lBQzFGLENBQUM7SUFFRCxPQUFPO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUF5QixFQUFFLElBQVksRUFBRSxFQUFFO0lBQzNFLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVqQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVsQyxJQUFJLEdBQUcsRUFBRSxVQUFVLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUxQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDL0MsSUFBSSxJQUFpQixDQUFDO1lBQ3RCLElBQUksUUFBZSxDQUFDO1lBRXBCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEVBQUU7SUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFbEMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM5QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLElBQVUsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDL0QsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFBBVFRFUk5fSU5TRVJUIH0gZnJvbSBcIi4vdGVtcGxhdGUuZGVmaW5lXCI7XG5cbmNvbnN0IHNldFZhbHVlID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50LCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmIChpc0lucHV0T3JUZXh0QXJlYUVsZW1lbnQoZWwpKSB7XG4gICAgZWwudmFsdWUgPSB2YWx1ZTtcblxuICAgIHJldHVybjtcbiAgfVxuICBlbC50ZXh0Q29udGVudCA9IHZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZhbHVlID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gIHJldHVybiBpc0lucHV0T3JUZXh0QXJlYUVsZW1lbnQoZWwpID8gZWwudmFsdWUgOiBlbC50ZXh0Q29udGVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRWYWx1ZSA9IChlbDogSFRNTElucHV0RWxlbWVudCwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZywgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCwgbm9SZWN1cnNpb24gPSBmYWxzZSk6IENoaWxkTm9kZSB8IHVuZGVmaW5lZCB8IG51bGwgPT4ge1xuICBpZiAoaXNUZXh0RWxlbWVudChlbCkpIHtcbiAgICBjb25zdCB2YWwgPSBnZXRWYWx1ZShlbCk7XG5cbiAgICB0ZXh0ID0gbm9SZWN1cnNpb24gPyBQQVRURVJOX0lOU0VSVCA6IHRleHQ7XG4gICAgc2V0VmFsdWUoZWwsIHZhbD8uc3Vic3RyaW5nKDAsIHN0YXJ0KSArIHRleHQgKyB2YWw/LnN1YnN0cmluZyhlbmQsIHZhbC5sZW5ndGgpKTtcbiAgICBzZXRDYXJldFBvc2l0aW9uKGVsLCBzdGFydCArIHRleHQubGVuZ3RoLCBpZnJhbWUpO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChub1JlY3Vyc2lvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBpbnNlcnRWYWx1ZVRvQ29udGVudEVkaXRhYmxlKHN0YXJ0LCBlbmQsIHRleHQpO1xufTtcblxuY29uc3QgaW5zZXJ0VmFsdWVUb0NvbnRlbnRFZGl0YWJsZSA9IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nKTogQ2hpbGROb2RlIHwgdW5kZWZpbmVkIHwgbnVsbCA9PiB7XG4gIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKCFzZWwgfHwgIXNlbC5hbmNob3JOb2RlIHx8ICFzZWwuZ2V0UmFuZ2VBdCB8fCAhc2VsLnJhbmdlQ291bnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7XG4gIGNvbnN0IGFuY2hvck5vZGUgPSBzZWwuYW5jaG9yTm9kZTtcbiAgY29uc3QgbnVtYmVyVGV4dEJlZm9yZUN1cnNvciA9IChnZXRUZXh0QmVmb3JlQ3Vyc29yKCkgfHwgJycpLmxlbmd0aDtcblxuICByYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBudW1iZXJUZXh0QmVmb3JlQ3Vyc29yIC0gKGVuZCAtIHN0YXJ0KSk7XG4gIHJhbmdlLnNldEVuZChhbmNob3JOb2RlLCBudW1iZXJUZXh0QmVmb3JlQ3Vyc29yKTtcbiAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgLy8gUmFuZ2UuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KCkgd291bGQgYmUgdXNlZnVsIGhlcmUgYnV0IGlzXG4gIC8vIG9ubHkgcmVsYXRpdmVseSByZWNlbnRseSBzdGFuZGFyZGl6ZWQgYW5kIGlzIG5vdCBzdXBwb3J0ZWQgaW5cbiAgLy8gc29tZSBicm93c2VycyAoSUU5LCBmb3Igb25lKVxuICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJTUEFOXCIpO1xuXG4gIGVsLmlubmVySFRNTCA9IHRleHQ7XG4gIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIGxldCBub2RlLCBsYXN0Tm9kZSwgbm9kZUhhbmRsZXJFdmVudDtcblxuICB3aGlsZSAoKG5vZGUgPSBlbC5maXJzdENoaWxkKSkge1xuICAgIGlmIChnZXQobm9kZSwgJ2dldEF0dHJpYnV0ZScpKSB7XG4gICAgICBub2RlSGFuZGxlckV2ZW50ID0gbm9kZTtcbiAgICB9XG5cbiAgICBsYXN0Tm9kZSA9IGZyYWcuYXBwZW5kQ2hpbGQobm9kZSk7XG4gIH1cbiAgcmFuZ2UuaW5zZXJ0Tm9kZShmcmFnKTtcblxuICAvLyBQcmVzZXJ2ZSB0aGUgc2VsZWN0aW9uXG4gIGlmIChsYXN0Tm9kZSkge1xuICAgIHJhbmdlID0gcmFuZ2UuY2xvbmVSYW5nZSgpO1xuICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIobGFzdE5vZGUpO1xuICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVIYW5kbGVyRXZlbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEJlZm9yZUN1cnNvciA9ICgpID0+IHtcbiAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gIGlmICghc2VsIHx8ICFzZWwuYW5jaG9yTm9kZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTtcbiAgY29uc3QgYW5jaG9yTm9kZSA9IHNlbC5hbmNob3JOb2RlO1xuICBjb25zdCByYW5nZU5ldyA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cbiAgcmFuZ2VOZXcuc2VsZWN0Tm9kZUNvbnRlbnRzKGFuY2hvck5vZGUpO1xuICByYW5nZU5ldy5zZXRFbmQocmFuZ2Uuc3RhcnRDb250YWluZXIsIHJhbmdlLnN0YXJ0T2Zmc2V0KTtcblxuICBjb25zdCBmcmFnTmV3ID0gcmFuZ2VOZXcuY2xvbmVDb250ZW50cygpO1xuICBjb25zdCBlbG1QcmV2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIlNQQU5cIik7XG5cbiAgZWxtUHJldi5hcHBlbmRDaGlsZChmcmFnTmV3KTtcblxuICByZXR1cm4gZWxtUHJldi5pbm5lclRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZWwgIT09IG51bGwgJiYgKGVsLm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGVsLm5vZGVOYW1lID09PSAnVEVYVEFSRUEnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1RleHRFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZWwgIT09IG51bGwgJiYgKGVsLm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGVsLm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8IGVsLm5vZGVOYW1lID09PSAnI3RleHQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDYXJldFBvc2l0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50LCBwb3M6IG51bWJlciwgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSAmJiBlbC5zZWxlY3Rpb25TdGFydCkge1xuICAgIGVsLmZvY3VzKCk7XG4gICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJhbmdlID0gZ2V0RG9jdW1lbnQoaWZyYW1lKT8uY3JlYXRlUmFuZ2UoKTtcblxuICByYW5nZT8uc2V0U3RhcnQoZWwsIHBvcyk7XG4gIHJhbmdlPy5jb2xsYXBzZSh0cnVlKTtcbiAgY29uc3Qgc2VsID0gZ2V0V2luZG93U2VsZWN0aW9uKGlmcmFtZSk7XG5cbiAgaWYgKCFzZWwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICBpZiAocmFuZ2UpIHtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2FyZXRQb3NpdGlvbiA9IChlbDogSFRNTElucHV0RWxlbWVudCwgaWZyYW1lPzogSFRNTElGcmFtZUVsZW1lbnQpOiBudW1iZXIgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSkge1xuICAgIGNvbnN0IHZhbCA9IGVsLnZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbC5zbGljZSgwLCBlbC5zZWxlY3Rpb25TdGFydCB8fCB1bmRlZmluZWQpLmxlbmd0aDtcbiAgfVxuICBjb25zdCBzZWxPYmogPSBnZXRXaW5kb3dTZWxlY3Rpb24oaWZyYW1lKTsgLy93aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbE9iaiAmJiBzZWxPYmoucmFuZ2VDb3VudCA+IDApIHtcbiAgICBjb25zdCBzZWxSYW5nZSA9IHNlbE9iai5nZXRSYW5nZUF0KDApO1xuICAgIGNvbnN0IHByZUNhcmV0UmFuZ2UgPSBzZWxSYW5nZS5jbG9uZVJhbmdlKCk7XG5cbiAgICBwcmVDYXJldFJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbCk7XG4gICAgcHJlQ2FyZXRSYW5nZS5zZXRFbmQoc2VsUmFuZ2UuZW5kQ29udGFpbmVyLCBzZWxSYW5nZS5lbmRPZmZzZXQpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gcHJlQ2FyZXRSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbi8vIEJhc2VkIG9uIG1lbnQuaW8gZnVuY3Rpb25zLi4uXG4vL1xuXG5jb25zdCBnZXREb2N1bWVudCA9IChpZnJhbWU/OiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICBpZiAoIWlmcmFtZSkge1xuICAgIHJldHVybiBkb2N1bWVudDtcbiAgfVxuXG4gIHJldHVybiBpZnJhbWUuY29udGVudFdpbmRvdz8uZG9jdW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0V2luZG93U2VsZWN0aW9uID0gKGlmcmFtZT86IEhUTUxJRnJhbWVFbGVtZW50KTogU2VsZWN0aW9uIHwgbnVsbCA9PiB7XG4gIGlmICghaWZyYW1lKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHJldHVybiBpZnJhbWUuY29udGVudFdpbmRvdz8uZ2V0U2VsZWN0aW9uKCkgfHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50RWRpdGFibGVDYXJldENvb3JkcyA9IChjdHg6IHsgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZCwgcGFyZW50OiBFbGVtZW50IHwgbnVsbCwgd2luZG93UGFyZW50PzogYm9vbGVhbiB9KSA9PiB7XG4gIGNvbnN0IG1hcmtlclRleHRDaGFyID0gJ1xcdWZlZmYnO1xuICBjb25zdCBtYXJrZXJJZCA9ICdzZWxfJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnN1YnN0cmluZygyKTtcbiAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoY3R4LmlmcmFtZSkgYXMgRG9jdW1lbnQ7XG4gIGNvbnN0IHNlbCA9IGdldFdpbmRvd1NlbGVjdGlvbihjdHguaWZyYW1lKSBhcyBTZWxlY3Rpb247XG5cbiAgaWYgKCFzZWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIGJvdHRvbTogMFxuICAgIH07XG4gIH1cbiAgY29uc3QgcHJldlJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7XG5cbiAgLy8gY3JlYXRlIG5ldyByYW5nZSBhbmQgc2V0IHBvc3Rpb24gdXNpbmcgcHJldlJhbmdlXG4gIGNvbnN0IHJhbmdlID0gZG9jLmNyZWF0ZVJhbmdlKCk7XG4gIGNvbnN0IGFuY2hvck5vZGUgPSBzZWwuYW5jaG9yTm9kZSBhcyBOb2RlO1xuICByYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBwcmV2UmFuZ2Uuc3RhcnRPZmZzZXQpO1xuICByYW5nZS5zZXRFbmQoYW5jaG9yTm9kZSwgcHJldlJhbmdlLnN0YXJ0T2Zmc2V0KTtcbiAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpO1xuXG4gIC8vIENyZWF0ZSB0aGUgbWFya2VyIGVsZW1lbnQgY29udGFpbmluZyBhIHNpbmdsZSBpbnZpc2libGUgY2hhcmFjdGVyXG4gIC8vIHVzaW5nIERPTSBtZXRob2RzIGFuZCBpbnNlcnQgaXQgYXQgdGhlIHBvc2l0aW9uIGluIHRoZSByYW5nZVxuICBjb25zdCBtYXJrZXJFbCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgbWFya2VyRWwuaWQgPSBtYXJrZXJJZDtcbiAgbWFya2VyRWwuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKG1hcmtlclRleHRDaGFyKSk7XG4gIHJhbmdlLmluc2VydE5vZGUobWFya2VyRWwpO1xuICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gIHNlbC5hZGRSYW5nZShwcmV2UmFuZ2UpO1xuXG4gIGNvbnN0IGNvb3JkaW5hdGVzID0ge1xuICAgIGxlZnQ6IDAsXG4gICAgdG9wOiBtYXJrZXJFbC5vZmZzZXRIZWlnaHQsXG4gICAgYm90dG9tOiAtMVxuICB9O1xuXG4gIGxvY2FsVG9SZWxhdGl2ZUNvb3JkaW5hdGVzKGN0eCwgbWFya2VyRWwsIGNvb3JkaW5hdGVzKTtcbiAgbWFya2VyRWwucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobWFya2VyRWwpO1xuICBjb25zdCB3aWR0aFNjcmVlbiA9IChjdHgud2luZG93UGFyZW50ID8gd2luZG93LnBhcmVudC5pbm5lcldpZHRoIDogd2luZG93LmlubmVyV2lkdGgpIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xuXG4gIGlmIChjb29yZGluYXRlcy5sZWZ0ICsgMzE1ID4gd2lkdGhTY3JlZW4pIHtcbiAgICBjb29yZGluYXRlcy5sZWZ0ID0gY29vcmRpbmF0ZXMubGVmdCAtIDMwMDtcbiAgfVxuICBjb25zdCBoZWlnaHRTY3JlZW4gPSAoY3R4LndpbmRvd1BhcmVudCA/IHdpbmRvdy5wYXJlbnQuaW5uZXJIZWlnaHQgOiB3aW5kb3cuaW5uZXJIZWlnaHQpIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7XG5cbiAgaWYgKGNvb3JkaW5hdGVzLnRvcCArIDE5MCA+IGhlaWdodFNjcmVlbikge1xuICAgIGNvb3JkaW5hdGVzLmJvdHRvbSA9IGhlaWdodFNjcmVlbiAtIGNvb3JkaW5hdGVzLnRvcCArIDE1O1xuICAgIGNvb3JkaW5hdGVzLnRvcCA9IC0xO1xuICB9XG5cbiAgcmV0dXJuIGNvb3JkaW5hdGVzO1xufTtcblxuY29uc3QgbG9jYWxUb1JlbGF0aXZlQ29vcmRpbmF0ZXMgPSAoY3R4OiB7IGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQgfCB1bmRlZmluZWQsIHBhcmVudDogRWxlbWVudCB8IG51bGwsIHdpbmRvd1BhcmVudD86IGJvb2xlYW4gfSwgZWxlbWVudDogRWxlbWVudCwgY29vcmRpbmF0ZXM6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciwgYm90dG9tOiBudW1iZXIgfSkgPT4ge1xuICBsZXQgb2JqID0gPEhUTUxFbGVtZW50PmVsZW1lbnQ7XG4gIGxldCBpZnJhbWUgPSBjdHggPyBjdHguaWZyYW1lIDogbnVsbDtcblxuICB3aGlsZSAob2JqKSB7XG4gICAgaWYgKGN0eC5wYXJlbnQgIT09IG51bGwgJiYgY3R4LnBhcmVudCA9PT0gb2JqKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29vcmRpbmF0ZXMubGVmdCArPSBvYmoub2Zmc2V0TGVmdCArIG9iai5jbGllbnRMZWZ0O1xuICAgIGNvb3JkaW5hdGVzLnRvcCArPSBvYmoub2Zmc2V0VG9wICsgb2JqLmNsaWVudFRvcDtcbiAgICBvYmogPSA8SFRNTEVsZW1lbnQ+b2JqLm9mZnNldFBhcmVudDtcbiAgICBpZiAoIW9iaiAmJiBpZnJhbWUpIHtcbiAgICAgIG9iaiA9IGlmcmFtZTtcbiAgICAgIGlmcmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG4gIG9iaiA9IDxIVE1MRWxlbWVudD5lbGVtZW50O1xuICBpZnJhbWUgPSBjdHggPyBjdHguaWZyYW1lIDogbnVsbDtcbiAgd2hpbGUgKChvYmogIT09IGdldERvY3VtZW50KHVuZGVmaW5lZCk/LmJvZHkgfHwgY3R4LndpbmRvd1BhcmVudCkgJiYgb2JqICE9PSBudWxsKSB7XG4gICAgaWYgKGN0eC5wYXJlbnQgIT09IG51bGwgJiYgY3R4LnBhcmVudCA9PT0gb2JqKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKG9iai5zY3JvbGxUb3AgJiYgb2JqLnNjcm9sbFRvcCA+IDApIHtcbiAgICAgIGNvb3JkaW5hdGVzLnRvcCAtPSBvYmouc2Nyb2xsVG9wO1xuICAgIH1cbiAgICBpZiAob2JqLnNjcm9sbExlZnQgJiYgb2JqLnNjcm9sbExlZnQgPiAwKSB7XG4gICAgICBjb29yZGluYXRlcy5sZWZ0IC09IG9iai5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBvYmogPSBjdHgud2luZG93UGFyZW50ID8gPEhUTUxFbGVtZW50Pm9iai5vZmZzZXRQYXJlbnQgOiA8SFRNTEVsZW1lbnQ+b2JqLnBhcmVudE5vZGU7XG4gICAgaWYgKCFvYmogJiYgaWZyYW1lKSB7XG4gICAgICBvYmogPSBpZnJhbWU7XG4gICAgICBpZnJhbWUgPSBudWxsO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3Qgc2V0RW5kT2ZDb250ZW50RWRpdGFibGUgPSAoY29udGVudEVkaXRhYmxlRWxlbWVudDogTm9kZSkgPT4ge1xuICBpZiAoZG9jdW1lbnQuY3JlYXRlUmFuZ2UpIHtcbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7IC8vQ3JlYXRlIGEgcmFuZ2UgKGEgcmFuZ2UgaXMgYSBsaWtlIHRoZSBzZWxlY3Rpb24gYnV0IGludmlzaWJsZSlcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7IC8vZ2V0IHRoZSBzZWxlY3Rpb24gb2JqZWN0IChhbGxvd3MgeW91IHRvIGNoYW5nZSBzZWxlY3Rpb24pXG5cbiAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoY29udGVudEVkaXRhYmxlRWxlbWVudCk7IC8vU2VsZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGVsZW1lbnQgd2l0aCB0aGUgcmFuZ2VcbiAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7IC8vY29sbGFwc2UgdGhlIHJhbmdlIHRvIHRoZSBlbmQgcG9pbnQuIGZhbHNlIG1lYW5zIGNvbGxhcHNlIHRvIGVuZCByYXRoZXIgdGhhbiB0aGUgc3RhcnRcbiAgICBzZWxlY3Rpb24/LnJlbW92ZUFsbFJhbmdlcygpOyAvL3JlbW92ZSBhbnkgc2VsZWN0aW9ucyBhbHJlYWR5IG1hZGVcbiAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTsgLy9tYWtlIHRoZSByYW5nZSB5b3UgaGF2ZSBqdXN0IGNyZWF0ZWQgdGhlIHZpc2libGUgc2VsZWN0aW9uXG4gIH1cblxuICByZXR1cm47XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0VGV4dEF0Q2FyZXQgPSAoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCwgdGV4dDogc3RyaW5nKSA9PiB7XG4gIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgaWYgKCFlbGVtZW50Q29udGFpbnNTZWxlY3Rpb24oZWxlbWVudCkpIHtcbiAgICAgIHNldEVuZE9mQ29udGVudEVkaXRhYmxlKGVsZW1lbnQpO1xuICAgICAgaW5zZXJ0VGV4dEF0Q2FyZXQoZWxlbWVudCwgdGV4dCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKHNlbD8uZ2V0UmFuZ2VBdCAmJiBzZWwucmFuZ2VDb3VudCkge1xuICAgICAgbGV0IHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7XG4gICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJTUEFOXCIpO1xuXG4gICAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgICAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgICAgIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBsZXQgbm9kZTogTm9kZSB8IG51bGw7XG4gICAgICBsZXQgbGFzdE5vZGUhOiBOb2RlO1xuXG4gICAgICB3aGlsZSAoKG5vZGUgPSBlbC5maXJzdENoaWxkKSkge1xuICAgICAgICBsYXN0Tm9kZSA9IGZyYWcuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICB9XG4gICAgICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gICAgICBpZiAobGFzdE5vZGUpIHtcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIobGFzdE5vZGUpO1xuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWxlbWVudENvbnRhaW5zU2VsZWN0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbCAmJiBzZWwucmFuZ2VDb3VudCA+IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbC5yYW5nZUNvdW50OyArK2kpIHtcbiAgICAgIGlmICghaXNPckNvbnRhaW5zKHNlbC5nZXRSYW5nZUF0KGkpLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBlbCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNPckNvbnRhaW5zID0gKG5vZGU6IE5vZGUsIGNvbnRhaW5lcjogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlID09PSBjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07Il19
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9kZWZpbmVzL3V0aWxzLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBb0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUN2RCxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFakIsT0FBTztJQUNULENBQUM7SUFDRCxFQUFFLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEVBQUU7SUFDL0MsT0FBTyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLE1BQXlCLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBZ0MsRUFBRTtJQUMxSyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQyxR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VUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFBBVFRFUk5fSU5TRVJUIH0gZnJvbSAnLi90ZW1wbGF0ZS5kZWZpbmUnO1xuXG5jb25zdCBzZXRWYWx1ZSA9IChlbDogSFRNTElucHV0RWxlbWVudCwgdmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSkge1xuICAgIGVsLnZhbHVlID0gdmFsdWU7XG5cbiAgICByZXR1cm47XG4gIH1cbiAgZWwudGV4dENvbnRlbnQgPSB2YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZSA9IChlbDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICByZXR1cm4gaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSA/IGVsLnZhbHVlIDogZWwudGV4dENvbnRlbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0VmFsdWUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQsIG5vUmVjdXJzaW9uID0gZmFsc2UpOiBDaGlsZE5vZGUgfCB1bmRlZmluZWQgfCBudWxsID0+IHtcbiAgaWYgKGlzVGV4dEVsZW1lbnQoZWwpKSB7XG4gICAgY29uc3QgdmFsID0gZ2V0VmFsdWUoZWwpO1xuXG4gICAgdGV4dCA9IG5vUmVjdXJzaW9uID8gUEFUVEVSTl9JTlNFUlQgOiB0ZXh0O1xuICAgIHNldFZhbHVlKGVsLCB2YWw/LnN1YnN0cmluZygwLCBzdGFydCkgKyB0ZXh0ICsgdmFsPy5zdWJzdHJpbmcoZW5kLCB2YWwubGVuZ3RoKSk7XG4gICAgc2V0Q2FyZXRQb3NpdGlvbihlbCwgc3RhcnQgKyB0ZXh0Lmxlbmd0aCwgaWZyYW1lKTtcblxuICAgIHJldHVybjtcbiAgfVxuICBpZiAobm9SZWN1cnNpb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gaW5zZXJ0VmFsdWVUb0NvbnRlbnRFZGl0YWJsZShzdGFydCwgZW5kLCB0ZXh0KTtcbn07XG5cbmNvbnN0IGluc2VydFZhbHVlVG9Db250ZW50RWRpdGFibGUgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IENoaWxkTm9kZSB8IHVuZGVmaW5lZCB8IG51bGwgPT4ge1xuICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gIGlmICghc2VsIHx8ICFzZWwuYW5jaG9yTm9kZSB8fCAhc2VsLmdldFJhbmdlQXQgfHwgIXNlbC5yYW5nZUNvdW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7XG4gIGNvbnN0IG51bWJlclRleHRCZWZvcmVDdXJzb3IgPSAoZ2V0VGV4dEJlZm9yZUN1cnNvcigpIHx8ICcnKS5sZW5ndGg7XG5cbiAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgbnVtYmVyVGV4dEJlZm9yZUN1cnNvciAtIChlbmQgLSBzdGFydCkpO1xuICByYW5nZS5zZXRFbmQoYW5jaG9yTm9kZSwgbnVtYmVyVGV4dEJlZm9yZUN1cnNvcik7XG4gIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFJhbmdlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCgpIHdvdWxkIGJlIHVzZWZ1bCBoZXJlIGJ1dCBpc1xuICAvLyBvbmx5IHJlbGF0aXZlbHkgcmVjZW50bHkgc3RhbmRhcmRpemVkIGFuZCBpcyBub3Qgc3VwcG9ydGVkIGluXG4gIC8vIHNvbWUgYnJvd3NlcnMgKElFOSwgZm9yIG9uZSlcbiAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7XG5cbiAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgY29uc3QgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgbGV0IG5vZGUsIGxhc3ROb2RlLCBub2RlSGFuZGxlckV2ZW50O1xuXG4gIHdoaWxlICgobm9kZSA9IGVsLmZpcnN0Q2hpbGQpKSB7XG4gICAgaWYgKGdldChub2RlLCAnZ2V0QXR0cmlidXRlJykpIHtcbiAgICAgIG5vZGVIYW5kbGVyRXZlbnQgPSBub2RlO1xuICAgIH1cblxuICAgIGxhc3ROb2RlID0gZnJhZy5hcHBlbmRDaGlsZChub2RlKTtcbiAgfVxuICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gIC8vIFByZXNlcnZlIHRoZSBzZWxlY3Rpb25cbiAgaWYgKGxhc3ROb2RlKSB7XG4gICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihsYXN0Tm9kZSk7XG4gICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gIH1cblxuICByZXR1cm4gbm9kZUhhbmRsZXJFdmVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0QmVmb3JlQ3Vyc29yID0gKCkgPT4ge1xuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKCFzZWwgfHwgIXNlbC5hbmNob3JOb2RlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7XG4gIGNvbnN0IHJhbmdlTmV3ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblxuICByYW5nZU5ldy5zZWxlY3ROb2RlQ29udGVudHMoYW5jaG9yTm9kZSk7XG4gIHJhbmdlTmV3LnNldEVuZChyYW5nZS5zdGFydENvbnRhaW5lciwgcmFuZ2Uuc3RhcnRPZmZzZXQpO1xuXG4gIGNvbnN0IGZyYWdOZXcgPSByYW5nZU5ldy5jbG9uZUNvbnRlbnRzKCk7XG4gIGNvbnN0IGVsbVByZXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7XG5cbiAgZWxtUHJldi5hcHBlbmRDaGlsZChmcmFnTmV3KTtcblxuICByZXR1cm4gZWxtUHJldi5pbm5lclRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZWwgIT09IG51bGwgJiYgKGVsLm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGVsLm5vZGVOYW1lID09PSAnVEVYVEFSRUEnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1RleHRFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZWwgIT09IG51bGwgJiYgKGVsLm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGVsLm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8IGVsLm5vZGVOYW1lID09PSAnI3RleHQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDYXJldFBvc2l0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50LCBwb3M6IG51bWJlciwgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSAmJiBlbC5zZWxlY3Rpb25TdGFydCkge1xuICAgIGVsLmZvY3VzKCk7XG4gICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJhbmdlID0gZ2V0RG9jdW1lbnQoaWZyYW1lKT8uY3JlYXRlUmFuZ2UoKTtcblxuICByYW5nZT8uc2V0U3RhcnQoZWwsIHBvcyk7XG4gIHJhbmdlPy5jb2xsYXBzZSh0cnVlKTtcbiAgY29uc3Qgc2VsID0gZ2V0V2luZG93U2VsZWN0aW9uKGlmcmFtZSk7XG5cbiAgaWYgKCFzZWwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICBpZiAocmFuZ2UpIHtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2FyZXRQb3NpdGlvbiA9IChlbDogSFRNTElucHV0RWxlbWVudCwgaWZyYW1lPzogSFRNTElGcmFtZUVsZW1lbnQpOiBudW1iZXIgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSkge1xuICAgIGNvbnN0IHZhbCA9IGVsLnZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbC5zbGljZSgwLCBlbC5zZWxlY3Rpb25TdGFydCB8fCB1bmRlZmluZWQpLmxlbmd0aDtcbiAgfVxuICBjb25zdCBzZWxPYmogPSBnZXRXaW5kb3dTZWxlY3Rpb24oaWZyYW1lKTsgLy93aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbE9iaiAmJiBzZWxPYmoucmFuZ2VDb3VudCA+IDApIHtcbiAgICBjb25zdCBzZWxSYW5nZSA9IHNlbE9iai5nZXRSYW5nZUF0KDApO1xuICAgIGNvbnN0IHByZUNhcmV0UmFuZ2UgPSBzZWxSYW5nZS5jbG9uZVJhbmdlKCk7XG5cbiAgICBwcmVDYXJldFJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbCk7XG4gICAgcHJlQ2FyZXRSYW5nZS5zZXRFbmQoc2VsUmFuZ2UuZW5kQ29udGFpbmVyLCBzZWxSYW5nZS5lbmRPZmZzZXQpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gcHJlQ2FyZXRSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbi8vIEJhc2VkIG9uIG1lbnQuaW8gZnVuY3Rpb25zLi4uXG4vL1xuXG5jb25zdCBnZXREb2N1bWVudCA9IChpZnJhbWU/OiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICBpZiAoIWlmcmFtZSkge1xuICAgIHJldHVybiBkb2N1bWVudDtcbiAgfVxuXG4gIHJldHVybiBpZnJhbWUuY29udGVudFdpbmRvdz8uZG9jdW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0V2luZG93U2VsZWN0aW9uID0gKGlmcmFtZT86IEhUTUxJRnJhbWVFbGVtZW50KTogU2VsZWN0aW9uIHwgbnVsbCA9PiB7XG4gIGlmICghaWZyYW1lKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHJldHVybiBpZnJhbWUuY29udGVudFdpbmRvdz8uZ2V0U2VsZWN0aW9uKCkgfHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50RWRpdGFibGVDYXJldENvb3JkcyA9IChjdHg6IHsgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZDsgcGFyZW50OiBFbGVtZW50IHwgbnVsbDsgd2luZG93UGFyZW50PzogYm9vbGVhbiB9KSA9PiB7XG4gIGNvbnN0IG1hcmtlclRleHRDaGFyID0gJ1xcdWZlZmYnO1xuICBjb25zdCBtYXJrZXJJZCA9ICdzZWxfJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnN1YnN0cmluZygyKTtcbiAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoY3R4LmlmcmFtZSkgYXMgRG9jdW1lbnQ7XG4gIGNvbnN0IHNlbCA9IGdldFdpbmRvd1NlbGVjdGlvbihjdHguaWZyYW1lKSBhcyBTZWxlY3Rpb247XG5cbiAgaWYgKCFzZWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICB9O1xuICB9XG4gIGNvbnN0IHByZXZSYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuXG4gIC8vIGNyZWF0ZSBuZXcgcmFuZ2UgYW5kIHNldCBwb3N0aW9uIHVzaW5nIHByZXZSYW5nZVxuICBjb25zdCByYW5nZSA9IGRvYy5jcmVhdGVSYW5nZSgpO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGUgYXMgTm9kZTtcbiAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgcHJldlJhbmdlLnN0YXJ0T2Zmc2V0KTtcbiAgcmFuZ2Uuc2V0RW5kKGFuY2hvck5vZGUsIHByZXZSYW5nZS5zdGFydE9mZnNldCk7XG4gIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcblxuICAvLyBDcmVhdGUgdGhlIG1hcmtlciBlbGVtZW50IGNvbnRhaW5pbmcgYSBzaW5nbGUgaW52aXNpYmxlIGNoYXJhY3RlclxuICAvLyB1c2luZyBET00gbWV0aG9kcyBhbmQgaW5zZXJ0IGl0IGF0IHRoZSBwb3NpdGlvbiBpbiB0aGUgcmFuZ2VcbiAgY29uc3QgbWFya2VyRWwgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gIG1hcmtlckVsLmlkID0gbWFya2VySWQ7XG4gIG1hcmtlckVsLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZShtYXJrZXJUZXh0Q2hhcikpO1xuICByYW5nZS5pbnNlcnROb2RlKG1hcmtlckVsKTtcbiAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWwuYWRkUmFuZ2UocHJldlJhbmdlKTtcblxuICBjb25zdCBjb29yZGluYXRlcyA9IHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogbWFya2VyRWwub2Zmc2V0SGVpZ2h0LFxuICAgIGJvdHRvbTogLTEsXG4gIH07XG5cbiAgbG9jYWxUb1JlbGF0aXZlQ29vcmRpbmF0ZXMoY3R4LCBtYXJrZXJFbCwgY29vcmRpbmF0ZXMpO1xuICBtYXJrZXJFbC5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChtYXJrZXJFbCk7XG4gIGNvbnN0IHdpZHRoU2NyZWVuID0gKGN0eC53aW5kb3dQYXJlbnQgPyB3aW5kb3cucGFyZW50LmlubmVyV2lkdGggOiB3aW5kb3cuaW5uZXJXaWR0aCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XG5cbiAgaWYgKGNvb3JkaW5hdGVzLmxlZnQgKyAzMTUgPiB3aWR0aFNjcmVlbikge1xuICAgIGNvb3JkaW5hdGVzLmxlZnQgPSBjb29yZGluYXRlcy5sZWZ0IC0gMzAwO1xuICB9XG4gIGNvbnN0IGhlaWdodFNjcmVlbiA9IChjdHgud2luZG93UGFyZW50ID8gd2luZG93LnBhcmVudC5pbm5lckhlaWdodCA6IHdpbmRvdy5pbm5lckhlaWdodCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDtcblxuICBpZiAoY29vcmRpbmF0ZXMudG9wICsgMTkwID4gaGVpZ2h0U2NyZWVuKSB7XG4gICAgY29vcmRpbmF0ZXMuYm90dG9tID0gaGVpZ2h0U2NyZWVuIC0gY29vcmRpbmF0ZXMudG9wICsgMTU7XG4gICAgY29vcmRpbmF0ZXMudG9wID0gLTE7XG4gIH1cblxuICByZXR1cm4gY29vcmRpbmF0ZXM7XG59O1xuXG5jb25zdCBsb2NhbFRvUmVsYXRpdmVDb29yZGluYXRlcyA9IChjdHg6IHsgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZDsgcGFyZW50OiBFbGVtZW50IHwgbnVsbDsgd2luZG93UGFyZW50PzogYm9vbGVhbiB9LCBlbGVtZW50OiBFbGVtZW50LCBjb29yZGluYXRlczogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyOyBib3R0b206IG51bWJlciB9KSA9PiB7XG4gIGxldCBvYmogPSA8SFRNTEVsZW1lbnQ+ZWxlbWVudDtcbiAgbGV0IGlmcmFtZSA9IGN0eCA/IGN0eC5pZnJhbWUgOiBudWxsO1xuXG4gIHdoaWxlIChvYmopIHtcbiAgICBpZiAoY3R4LnBhcmVudCAhPT0gbnVsbCAmJiBjdHgucGFyZW50ID09PSBvYmopIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb29yZGluYXRlcy5sZWZ0ICs9IG9iai5vZmZzZXRMZWZ0ICsgb2JqLmNsaWVudExlZnQ7XG4gICAgY29vcmRpbmF0ZXMudG9wICs9IG9iai5vZmZzZXRUb3AgKyBvYmouY2xpZW50VG9wO1xuICAgIG9iaiA9IDxIVE1MRWxlbWVudD5vYmoub2Zmc2V0UGFyZW50O1xuICAgIGlmICghb2JqICYmIGlmcmFtZSkge1xuICAgICAgb2JqID0gaWZyYW1lO1xuICAgICAgaWZyYW1lID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgb2JqID0gPEhUTUxFbGVtZW50PmVsZW1lbnQ7XG4gIGlmcmFtZSA9IGN0eCA/IGN0eC5pZnJhbWUgOiBudWxsO1xuICB3aGlsZSAoKG9iaiAhPT0gZ2V0RG9jdW1lbnQodW5kZWZpbmVkKT8uYm9keSB8fCBjdHgud2luZG93UGFyZW50KSAmJiBvYmogIT09IG51bGwpIHtcbiAgICBpZiAoY3R4LnBhcmVudCAhPT0gbnVsbCAmJiBjdHgucGFyZW50ID09PSBvYmopIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAob2JqLnNjcm9sbFRvcCAmJiBvYmouc2Nyb2xsVG9wID4gMCkge1xuICAgICAgY29vcmRpbmF0ZXMudG9wIC09IG9iai5zY3JvbGxUb3A7XG4gICAgfVxuICAgIGlmIChvYmouc2Nyb2xsTGVmdCAmJiBvYmouc2Nyb2xsTGVmdCA+IDApIHtcbiAgICAgIGNvb3JkaW5hdGVzLmxlZnQgLT0gb2JqLnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIG9iaiA9IGN0eC53aW5kb3dQYXJlbnQgPyA8SFRNTEVsZW1lbnQ+b2JqLm9mZnNldFBhcmVudCA6IDxIVE1MRWxlbWVudD5vYmoucGFyZW50Tm9kZTtcbiAgICBpZiAoIW9iaiAmJiBpZnJhbWUpIHtcbiAgICAgIG9iaiA9IGlmcmFtZTtcbiAgICAgIGlmcmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBzZXRFbmRPZkNvbnRlbnRFZGl0YWJsZSA9IChjb250ZW50RWRpdGFibGVFbGVtZW50OiBOb2RlKSA9PiB7XG4gIGlmIChkb2N1bWVudC5jcmVhdGVSYW5nZSkge1xuICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsgLy9DcmVhdGUgYSByYW5nZSAoYSByYW5nZSBpcyBhIGxpa2UgdGhlIHNlbGVjdGlvbiBidXQgaW52aXNpYmxlKVxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsgLy9nZXQgdGhlIHNlbGVjdGlvbiBvYmplY3QgKGFsbG93cyB5b3UgdG8gY2hhbmdlIHNlbGVjdGlvbilcblxuICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhjb250ZW50RWRpdGFibGVFbGVtZW50KTsgLy9TZWxlY3QgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZWxlbWVudCB3aXRoIHRoZSByYW5nZVxuICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsgLy9jb2xsYXBzZSB0aGUgcmFuZ2UgdG8gdGhlIGVuZCBwb2ludC4gZmFsc2UgbWVhbnMgY29sbGFwc2UgdG8gZW5kIHJhdGhlciB0aGFuIHRoZSBzdGFydFxuICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7IC8vcmVtb3ZlIGFueSBzZWxlY3Rpb25zIGFscmVhZHkgbWFkZVxuICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpOyAvL21ha2UgdGhlIHJhbmdlIHlvdSBoYXZlIGp1c3QgY3JlYXRlZCB0aGUgdmlzaWJsZSBzZWxlY3Rpb25cbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUZXh0QXRDYXJldCA9IChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCB0ZXh0OiBzdHJpbmcpID0+IHtcbiAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICBpZiAoIWVsZW1lbnRDb250YWluc1NlbGVjdGlvbihlbGVtZW50KSkge1xuICAgICAgc2V0RW5kT2ZDb250ZW50RWRpdGFibGUoZWxlbWVudCk7XG4gICAgICBpbnNlcnRUZXh0QXRDYXJldChlbGVtZW50LCB0ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsPy5nZXRSYW5nZUF0ICYmIHNlbC5yYW5nZUNvdW50KSB7XG4gICAgICBsZXQgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnU1BBTicpO1xuXG4gICAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgICAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgICAgIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBsZXQgbm9kZTogTm9kZSB8IG51bGw7XG4gICAgICBsZXQgbGFzdE5vZGUhOiBOb2RlO1xuXG4gICAgICB3aGlsZSAoKG5vZGUgPSBlbC5maXJzdENoaWxkKSkge1xuICAgICAgICBsYXN0Tm9kZSA9IGZyYWcuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICB9XG4gICAgICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gICAgICBpZiAobGFzdE5vZGUpIHtcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIobGFzdE5vZGUpO1xuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWxlbWVudENvbnRhaW5zU2VsZWN0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbCAmJiBzZWwucmFuZ2VDb3VudCA+IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbC5yYW5nZUNvdW50OyArK2kpIHtcbiAgICAgIGlmICghaXNPckNvbnRhaW5zKHNlbC5nZXRSYW5nZUF0KGkpLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBlbCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNPckNvbnRhaW5zID0gKG5vZGU6IE5vZGUsIGNvbnRhaW5lcjogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlID09PSBjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG4iXX0=
|
package/esm2022/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './mention.directive';
|
|
2
2
|
export * from './interfaces/mention.interface';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWVudGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL21lbnRpb24uaW50ZXJmYWNlJztcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2ludGVyZmFjZXMvbWVudGlvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElNZW50aW9uQ29uZmlnIGV4dGVuZHMgSU1lbnRpb25JdGVtIHtcbiAgZGlzYWJsZVN0eWxlPzogYm9vbGVhbjtcbiAgaWZyYW1lPzogc3RyaW5nO1xuICBtZW50aW9uPzogQXJyYXk8SU1lbnRpb25JdGVtPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWVudGlvbkl0ZW0ge1xuICB0cmlnZ2VyQ2hhcj86IHN0cmluZztcblxuICAvLyBvcHRpb24gdG8gc3BlY2lmeSB0aGUgZmllbGQgaW4gdGhlIG9iamVjdHMgdG8gYmUgdXNlZCBhcyB0aGUgaXRlbSBsYWJlbFxuICBsYWJlbEtleT86IHN0cmluZztcblxuICAvLyBvcHRpb24gdG8gbGltaXQgdGhlIG51bWJlciBvZiBpdGVtcyBzaG93biBpbiB0aGUgcG9wLXVwIG1lbnVcbiAgZGlzYWJsZVNvcnQ/OiBib29sZWFuO1xuXG4gIC8vIG9wdGlvbiB0byBkaXNhYmxlIGludGVybmFsIGZpbHRlcmluZy4gY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgZnVsbCBsaXN0IHJldHVybmVkXG4gIC8vIGZyb20gYW4gYXN5bmMgb3BlcmF0aW9uXG4gIGRpc2FibGVTZWFyY2g/OiBib29sZWFuO1xuXG4gIC8vIGRpc3BsYXkgbWVudSBhYm92ZSB0ZXh0IGluc3RlYWQgb2YgYmVsb3dcbiAgZHJvcFVwPzogYm9vbGVhbjtcblxuICAvLyB3aGV0aGVyIHRvIGFsbG93IHNwYWNlIHdoaWxlIG1lbnRpb25pbmcgb3Igbm90XG4gIGFsbG93U3BhY2U/OiBib29sZWFuO1xuICBsaW1pdFNwYWNlU2VhcmNoUXVlcnk/OiBudW1iZXI7XG5cbiAgLy8gb3B0aW9uIHRvIGluY2x1ZGUgdGhlIHRyaWdnZXIgY2hhciBpbiB0aGUgc2VhcmNoVGVybSBldmVudFxuICByZXR1cm5UcmlnZ2VyPzogYm9vbGVhbjtcblxuICAvLyBvcHRpb25hbCBmdW5jdGlvbiB0byBmb3JtYXQgdGhlIHNlbGVjdGVkIGl0ZW0gYmVmb3JlIGluc2VydGluZyB0aGUgdGV4dFxuICBtZW50aW9uU2VsZWN0PzogKGl0ZW06IHVua25vd24sIHRyaWdnZXJDaGFyPzogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbiAgLy8gb3B0aW9uYWwgZnVuY3Rpb24gdG8gY3VzdG9taXplIHRoZSBzZWFyY2ggaW1wbGVtZW50YXRpb25cbiAgbWVudGlvbkZpbHRlcj86IChzZWFyY2hTdHJpbmc6IHN0cmluZywgaXRlbXM/OiBBcnJheTx1bmtub3duPikgPT4gQXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgbWVudGlvbkV2ZW50TmFtZT86ICdjbGljaycgfCAnbW91c2VlbnRlcic7XG4gIG1lbnRpb25BY3Rpb25CeUV2ZW50PzogKGl0ZW06IHVua25vd24sIHRyaWdnZXJDaGFycz86IHN0cmluZykgPT4gdm9pZDtcbiAgaXRlbXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4gIHpJbmRleD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZUluc2VydCB7XG4gIGVsZW1lbnRTcGFuOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgaXRlbT86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHRyaWdnZXJDaGFyPzogc3RyaW5nO1xuICBtYW51YWxBZGQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNZW50aW9uSW5zZXJ0IHtcbiAgZGF0YToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZmVJZDogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGxlbmd0aEtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNZW50aW9uRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBhZGRNZW50aW9uOiAoaW5wdXRFdmVudDogYm9vbGVhbikgPT4gdm9pZDtcbn1cbiJdfQ==
|
|
@@ -156,10 +156,10 @@ export class LibsUiComponentsInputsMentionListComponent {
|
|
|
156
156
|
this.onDestroy.complete();
|
|
157
157
|
}
|
|
158
158
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsMentionListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
159
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsMentionListComponent, isStandalone: true, selector: "libs_ui-components-inputs-mention-list", inputs: { labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, isIframe: { classPropertyName: "isIframe", publicName: "isIframe", isSignal: true, isRequired: true, transformFunction: null }, defaultAvatar: { classPropertyName: "defaultAvatar", publicName: "defaultAvatar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { labelKey: "labelKeyChange", zIndex: "zIndexChange", isIframe: "isIframeChange", defaultAvatar: "defaultAvatarChange" }, viewQueries: [{ propertyName: "elementEl", first: true, predicate: ["element"], descendants: true, isSignal: true }, { propertyName: "itemsEl", predicate: ["item"], descendants: true, isSignal: true }], ngImport: i0, template: "<div
|
|
159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsMentionListComponent, isStandalone: true, selector: "libs_ui-components-inputs-mention-list", inputs: { labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, isIframe: { classPropertyName: "isIframe", publicName: "isIframe", isSignal: true, isRequired: true, transformFunction: null }, defaultAvatar: { classPropertyName: "defaultAvatar", publicName: "defaultAvatar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { labelKey: "labelKeyChange", zIndex: "zIndexChange", isIframe: "isIframeChange", defaultAvatar: "defaultAvatarChange" }, viewQueries: [{ propertyName: "elementEl", first: true, predicate: ["element"], descendants: true, isSignal: true }, { propertyName: "itemsEl", predicate: ["item"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #element\n class=\"libs-ui-mention-list\"\n [style.zIndex]=\"zIndex()\"\n [class.hidden]=\"hidden()\">\n @for (item of items(); track item) {\n <div\n #item\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 <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 </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"], dependencies: [{ kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containertextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
160
160
|
}
|
|
161
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsMentionListComponent, decorators: [{
|
|
162
162
|
type: Component,
|
|
163
|
-
args: [{ selector: 'libs_ui-components-inputs-mention-list', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent], template: "<div
|
|
163
|
+
args: [{ selector: 'libs_ui-components-inputs-mention-list', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent], template: "<div\n #element\n class=\"libs-ui-mention-list\"\n [style.zIndex]=\"zIndex()\"\n [class.hidden]=\"hidden()\">\n @for (item of items(); track item) {\n <div\n #item\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 <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 </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"] }]
|
|
164
164
|
}] });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBV2xHLE1BQU0sT0FBTywwQ0FBMEM7SUFDckQsbUJBQW1CO0lBQ1osS0FBSyxHQUFHLE1BQU0sQ0FBNEMsRUFBRSxDQUFDLENBQUM7SUFDOUQsV0FBVyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoQyxNQUFNLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbEMs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LENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ25FLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBRUQsYUFBYTtRQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0ExS1UsMENBQTBDOzRGQUExQywwQ0FBMEMsdzhCQ2xCdkQsd25DQTRCQSx3aUJEWlksK0JBQStCLDZYQUFFLGdDQUFnQzs7NEZBRWhFLDBDQUEwQztrQkFUdEQsU0FBUzsrQkFFRSx3Q0FBd0MsY0FHdEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsK0JBQStCLEVBQUUsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCwgdmlld0NoaWxkLCB2aWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNBdmF0YXJDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWF2YXRhcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0Q2FyZXRDb29yZGluYXRlcyB9IGZyb20gJy4uL2RlZmluZXMvY2FyZXQtY29vcmRzLmRlZmluZSc7XG5pbXBvcnQgeyBLRVlfRU5URVIgfSBmcm9tICcuLi9kZWZpbmVzL2tleWJvYXJkLmRlZmluZSc7XG5pbXBvcnQgeyBnZXRDb250ZW50RWRpdGFibGVDYXJldENvb3JkcywgaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50IH0gZnJvbSAnLi4vZGVmaW5lcy91dGlscy5kZWZpbmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLW1lbnRpb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0xpYnNVaUNvbXBvbmVudHNBdmF0YXJDb21wb25lbnQsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0lucHV0c01lbnRpb25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHB1YmxpYyBpdGVtcyA9IHNpZ25hbDxBcnJheTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+Pj4oW10pO1xuICBwdWJsaWMgYWN0aXZlSW5kZXggPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHVibGljIGhpZGRlbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBzdHlsZU9mZiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBwYXJlbnRIYW5kbGVyS2V5RG93biA9IHNpZ25hbDwoKGU6IEV2ZW50LCBlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkKSA9PiB1bmtub3duKSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcm90ZWN0ZWQgZHJvcFVwID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIGNvb3JkcyA9IHNpZ25hbDx7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXI7IGJvdHRvbT86IG51bWJlciB9Pih7IHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAwIH0pO1xuICBwcml2YXRlIG9mZnNldCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcml2YXRlIG5hdGl2ZVBhcmVudEVsZW1lbnQgPSBzaWduYWw8SFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgbGFiZWxLZXkgPSBtb2RlbDxzdHJpbmc+KCdsYWJlbCcpO1xuICB6SW5kZXggPSBtb2RlbDxudW1iZXI+KDEwMDApO1xuICBpc0lmcmFtZSA9IG1vZGVsLnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gIGRlZmF1bHRBdmF0YXIgPSBtb2RlbDxzdHJpbmc+KCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICByZWFkb25seSBlbGVtZW50RWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2VsZW1lbnQnKTtcbiAgcmVhZG9ubHkgaXRlbXNFbCA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPignaXRlbScpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmlzSWZyYW1lKCkpIHtcbiAgICAgIHRoaXMuaW5pdEV2ZW50KHdpbmRvdy5wYXJlbnQsICd3aGVlbCcpO1xuICAgICAgdGhpcy5pbml0RXZlbnQod2luZG93LnBhcmVudCwgJ3Jlc2l6ZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluaXRFdmVudCh3aW5kb3csICd3aGVlbCcpO1xuICAgIHRoaXMuaW5pdEV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByaXZhdGUgaW5pdEV2ZW50KGVsZW1lbnQ6IFdpbmRvdywgZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBmcm9tRXZlbnQ8RXZlbnQ+KGVsZW1lbnQsIGV2ZW50TmFtZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50TmFtZSA9PT0gJ3Jlc2l6ZScgfHwgIXRoaXMuZWxlbWVudEVsKCk/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlckxpc3RlbkNsb3NlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZXJMaXN0ZW5DbG9zZShldmVudDogRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnRFbCgpPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhpZGRlbi5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gbG90cyBvZiBjb25mdXNpb24gaGVyZSBiZXR3ZWVuIHJlbGF0aXZlIGNvb3JkaW5hdGVzIGFuZCBjb250YWluZXJzXG4gIHBvc2l0aW9uKG5hdGl2ZVBhcmVudEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQsIGlmcmFtZT86IEhUTUxJRnJhbWVFbGVtZW50LCBsZWZ0RGl2PzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5uYXRpdmVQYXJlbnRFbGVtZW50LnNldChuYXRpdmVQYXJlbnRFbGVtZW50KTtcbiAgICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KG5hdGl2ZVBhcmVudEVsZW1lbnQpKSB7XG4gICAgICAvLyBwYXJlbnQgZWxlbWVudHMgbmVlZCB0byBoYXZlIHBvc3RpdGlvbjpyZWxhdGl2ZSBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseT9cbiAgICAgIHRoaXMuY29vcmRzLnNldChnZXRDYXJldENvb3JkaW5hdGVzKG5hdGl2ZVBhcmVudEVsZW1lbnQsIG5hdGl2ZVBhcmVudEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQpKTtcbiAgICAgIHRoaXMuY29vcmRzLnVwZGF0ZSgoaXRlbSkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgdG9wOiBuYXRpdmVQYXJlbnRFbGVtZW50Lm9mZnNldFRvcCArIGl0ZW0udG9wIC0gbmF0aXZlUGFyZW50RWxlbWVudC5zY3JvbGxUb3AsXG4gICAgICAgIGxlZnQ6IG5hdGl2ZVBhcmVudEVsZW1lbnQub2Zmc2V0TGVmdCArIGl0ZW0ubGVmdCAtIG5hdGl2ZVBhcmVudEVsZW1lbnQuc2Nyb2xsTGVmdCArIG5hdGl2ZVBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCxcbiAgICAgIH0pKTtcblxuICAgICAgLy8gZ2V0Q3JldENvb3JkaW5hdGVzKCkgZm9yIHRleHQvaW5wdXQgZWxlbWVudHMgbmVlZHMgYW4gYWRkaXRpb25hbCBvZmZzZXQgdG8gcG9zaXRpb24gdGhlIGxpc3QgY29ycmVjdGx5XG4gICAgICB0aGlzLm9mZnNldC5zZXQodGhpcy5nZXRCbG9ja0N1cnNvckRpbWVuc2lvbnMobmF0aXZlUGFyZW50RWxlbWVudCkuaGVpZ2h0KTtcbiAgICAgIHRoaXMucG9zaXRpb25FbGVtZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpZnJhbWUpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQ6IHsgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudDsgcGFyZW50OiBFbGVtZW50IHwgbnVsbDsgd2luZG93UGFyZW50PzogYm9vbGVhbiB9ID0geyBpZnJhbWU6IGlmcmFtZSwgcGFyZW50OiB3aW5kb3cucGFyZW50LmRvY3VtZW50LmJvZHksIHdpbmRvd1BhcmVudDogdHJ1ZSB9O1xuICAgICAgLy8gY29uc3QgcmVjdCA9IGlmcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNhcmV0UmVsYXRpdmVUb1ZpZXcgPSBnZXRDb250ZW50RWRpdGFibGVDYXJldENvb3Jkcyhjb250ZXh0KTtcbiAgICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgIGNvbnN0IHNjcm9sbExlZnQgPSAod2luZG93LnNjcm9sbFggfHwgZG9jLnNjcm9sbExlZnQpIC0gKGRvYy5jbGllbnRMZWZ0IHx8IDApO1xuICAgICAgdGhpcy5jb29yZHMudXBkYXRlKChpdGVtKSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBsZWZ0OiBjYXJldFJlbGF0aXZlVG9WaWV3LmxlZnQgLSBzY3JvbGxMZWZ0IC0gKGxlZnREaXYgfHwgMCksXG4gICAgICAgIGJvdHRvbTogd2luZG93LnBhcmVudC5pbm5lckhlaWdodCAtIGNhcmV0UmVsYXRpdmVUb1ZpZXcudG9wICsgMTgsXG4gICAgICB9KSk7XG4gICAgICBpZiAoY2FyZXRSZWxhdGl2ZVRvVmlldy5ib3R0b20gJiYgY2FyZXRSZWxhdGl2ZVRvVmlldy5ib3R0b20gIT09IC0xKSB7XG4gICAgICAgIHRoaXMuY29vcmRzLnVwZGF0ZSgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIGJvdHRvbTogY2FyZXRSZWxhdGl2ZVRvVmlldy5ib3R0b20sXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucG9zaXRpb25FbGVtZW50KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSAod2luZG93LnNjcm9sbFggfHwgZG9jLnNjcm9sbExlZnQpIC0gKGRvYy5jbGllbnRMZWZ0IHx8IDApO1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9ICh3aW5kb3cuc2Nyb2xsWCB8fCBkb2Muc2Nyb2xsVG9wKSAtIChkb2MuY2xpZW50VG9wIHx8IDApO1xuICAgIC8vIGJvdW5kaW5nIHJlY3RhbmdsZXMgYXJlIHJlbGF0aXZlIHRvIHZpZXcsIG9mZnNldHMgYXJlIHJlbGF0aXZlIHRvIGNvbnRhaW5lcj9cbiAgICBjb25zdCBjYXJldFJlbGF0aXZlVG9WaWV3ID0gZ2V0Q29udGVudEVkaXRhYmxlQ2FyZXRDb29yZHMoeyBpZnJhbWUsIHBhcmVudDogbnVsbCB9KTtcblxuICAgIHRoaXMuY29vcmRzLnVwZGF0ZSgoaXRlbSkgPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICB0b3A6IGNhcmV0UmVsYXRpdmVUb1ZpZXcudG9wIC0gc2Nyb2xsVG9wICsgMTAsXG4gICAgICBsZWZ0OiBjYXJldFJlbGF0aXZlVG9WaWV3LmxlZnQgLSBzY3JvbGxMZWZ0IC0gKGxlZnREaXYgfHwgMCksXG4gICAgICBib3R0b206IGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tLFxuICAgIH0pKTtcbiAgICB0aGlzLnBvc2l0aW9uRWxlbWVudCgpO1xuICB9XG5cbiAgZ2V0IEFjdGl2ZUl0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMoKVt0aGlzLmFjdGl2ZUluZGV4KCldO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDbGljayhldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFjdGl2ZUluZGV4LnNldChpbmRleCk7XG4gICAgc2V0KGV2ZW50IGFzIEtleWJvYXJkRXZlbnQsICdrZXlDb2RlJywgS0VZX0VOVEVSKTtcbiAgICB0aGlzLnBhcmVudEhhbmRsZXJLZXlEb3duKCk/LihldmVudCwgdGhpcy5uYXRpdmVQYXJlbnRFbGVtZW50KCkpO1xuICB9XG5cbiAgYWN0aXZhdGVOZXh0SXRlbSgpIHtcbiAgICB0aGlzLmFjdGl2ZUluZGV4LnNldCh0aGlzLml0ZW1zKCkubGVuZ3RoIC0gMSA+IHRoaXMuYWN0aXZlSW5kZXgoKSA/IHRoaXMuYWN0aXZlSW5kZXgoKSArIDEgOiB0aGlzLmFjdGl2ZUluZGV4KCkpO1xuICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoKTtcbiAgfVxuXG4gIGFjdGl2YXRlUHJldmlvdXNJdGVtKCkge1xuICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KHRoaXMuYWN0aXZlSW5kZXgoKSA+IDAgPyB0aGlzLmFjdGl2ZUluZGV4KCkgLSAxIDogdGhpcy5hY3RpdmVJbmRleCgpKTtcbiAgICB0aGlzLnNjcm9sbFRvQWN0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uRWxlbWVudChsZWZ0OiBudW1iZXIgPSB0aGlzLmNvb3JkcygpLmxlZnQsIHRvcDogbnVtYmVyID0gdGhpcy5jb29yZHMoKS50b3AsIGRyb3BVcDogYm9vbGVhbiA9IHRoaXMuZHJvcFVwKCksIGJvdHRvbTogbnVtYmVyID0gdGhpcy5jb29yZHMoKS5ib3R0b20gfHwgMCkge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50RWwoKT8ubmF0aXZlRWxlbWVudDtcblxuICAgIHRvcCArPSBkcm9wVXAgPyAwIDogdGhpcy5vZmZzZXQoKTsgLy8gdG9wIG9mIGxpc3QgaXMgbmV4dCBsaW5lXG4gICAgZWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGVsLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcbiAgICBlbC5zdHlsZS50b3AgPSBib3R0b20gIT09IC0xID8gJ2F1dG8nIDogdG9wICsgJ3B4JztcbiAgICBlbC5zdHlsZS5ib3R0b20gPSBib3R0b20gPT09IC0xID8gJ2F1dG8nIDogYm90dG9tICsgJ3B4JztcbiAgICB0aGlzLm5hdGl2ZVBhcmVudEVsZW1lbnQoKT8ubm9ybWFsaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEJsb2NrQ3Vyc29yRGltZW5zaW9ucyhuYXRpdmVQYXJlbnRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgY29uc3QgcGFyZW50U3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobmF0aXZlUGFyZW50RWxlbWVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiBwYXJzZUZsb2F0KHBhcmVudFN0eWxlcy5saW5lSGVpZ2h0KSxcbiAgICAgIHdpZHRoOiBwYXJzZUZsb2F0KHBhcmVudFN0eWxlcy5mb250U2l6ZSksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBY3RpdmVJdGVtKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmUoKSB7XG4gICAgaWYgKCF0aGlzLml0ZW1zRWwoKSB8fCB0aGlzLml0ZW1zRWwoKS5sZW5ndGggPD0gdGhpcy5hY3RpdmVJbmRleCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbXNFbCgpW3RoaXMuYWN0aXZlSW5kZXgoKV0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbiAgc2Nyb2xsQ29udGVudCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRFbCgpO1xuICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXYgI2VsZW1lbnRcbiAgY2xhc3M9XCJsaWJzLXVpLW1lbnRpb24tbGlzdFwiXG4gIFtzdHlsZS56SW5kZXhdPVwiekluZGV4KClcIlxuICBbY2xhc3MuaGlkZGVuXT1cImhpZGRlbigpXCI+XG4gIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbSkge1xuICAgIDxkaXYgI2l0ZW1cbiAgICAgIGNsYXNzPVwibGlicy11aS1tZW50aW9uLWxpc3QtaXRlbVwiXG4gICAgICBbY2xhc3MubGlicy11aS1tZW50aW9uLWxpc3QtaXRlbS1hY3RpdmVdPVwiJGluZGV4ID09PSBhY3RpdmVJbmRleCgpXCJcbiAgICAgIChtb3VzZWRvd24pPVwiaGFuZGxlckNsaWNrKCRldmVudCwgJGluZGV4KVwiXG4gICAgICAobW91c2VlbnRlcik9XCJoYW5kbGVBY3RpdmVJdGVtKCRldmVudCwgJGluZGV4KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInB4LVsxMnB4XSBweS1bNnB4XSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWF2YXRhciBbc2l6ZV09XCIyNFwiXG4gICAgICAgICAgW2xpbmtBdmF0YXJdPVwiaXRlbS5hdmF0YXJcIlxuICAgICAgICAgIFtsaW5rQXZhdGFyRXJyb3JdPVwiZGVmYXVsdEF2YXRhcigpXCJcbiAgICAgICAgICBbZ2V0TGFzdFRleHRBZnRlclNwYWNlXT1cInRydWVcIlxuICAgICAgICAgIFt0ZXh0QXZhdGFyXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgW2lkR2VuQ29sb3JdPVwiaXRlbS5pZFwiIC8+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlciBbY2xhc3NJbmNsdWRlXT1cIidsaWJzLXVpLWZvbnQtaDVyJ1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7d2lkdGg6IDI1MH1cIj5cbiAgICAgICAgICA8IS0tIC8vIHRhLm0g4bqpbiBzaG93IHRvb2x0aXAgdsOsIGNoxrBhIHjhu60gbMO9IMSRYyB24buLIHRyw60gLS0+XG4gICAgICAgICAge3sgaXRlbS5uYW1lICsgJyAoJyArIGl0ZW0udXNlcm5hbWUgKyAnKScgfX1cbiAgICAgICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBV2xHLE1BQU0sT0FBTywwQ0FBMEM7SUFDckQsbUJBQW1CO0lBQ1osS0FBSyxHQUFHLE1BQU0sQ0FBNEMsRUFBRSxDQUFDLENBQUM7SUFDOUQsV0FBVyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoQyxNQUFNLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbEMs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LENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ25FLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBRUQsYUFBYTtRQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0ExS1UsMENBQTBDOzRGQUExQywwQ0FBMEMsdzhCQ2xCdkQsMHBDQWdDQSx3aUJEaEJZLCtCQUErQiw2WEFBRSxnQ0FBZ0M7OzRGQUVoRSwwQ0FBMEM7a0JBVHRELFNBQVM7K0JBRUUsd0NBQXdDLGNBR3RDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLCtCQUErQixFQUFFLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgbW9kZWwsIE9uRGVzdHJveSwgT25Jbml0LCBzaWduYWwsIHZpZXdDaGlsZCwgdmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldENhcmV0Q29vcmRpbmF0ZXMgfSBmcm9tICcuLi9kZWZpbmVzL2NhcmV0LWNvb3Jkcy5kZWZpbmUnO1xuaW1wb3J0IHsgS0VZX0VOVEVSIH0gZnJvbSAnLi4vZGVmaW5lcy9rZXlib2FyZC5kZWZpbmUnO1xuaW1wb3J0IHsgZ2V0Q29udGVudEVkaXRhYmxlQ2FyZXRDb29yZHMsIGlzSW5wdXRPclRleHRBcmVhRWxlbWVudCB9IGZyb20gJy4uL2RlZmluZXMvdXRpbHMuZGVmaW5lJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWlucHV0cy1tZW50aW9uLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNJbnB1dHNNZW50aW9uTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwdWJsaWMgaXRlbXMgPSBzaWduYWw8QXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj4+KFtdKTtcbiAgcHVibGljIGFjdGl2ZUluZGV4ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHB1YmxpYyBoaWRkZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgc3R5bGVPZmYgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcGFyZW50SGFuZGxlcktleURvd24gPSBzaWduYWw8KChlOiBFdmVudCwgZWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCkgPT4gdW5rbm93bikgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJvdGVjdGVkIGRyb3BVcCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBjb29yZHMgPSBzaWduYWw8eyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyOyBib3R0b20/OiBudW1iZXIgfT4oeyB0b3A6IDAsIGxlZnQ6IDAsIGJvdHRvbTogMCB9KTtcbiAgcHJpdmF0ZSBvZmZzZXQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBuYXRpdmVQYXJlbnRFbGVtZW50ID0gc2lnbmFsPEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIGxhYmVsS2V5ID0gbW9kZWw8c3RyaW5nPignbGFiZWwnKTtcbiAgekluZGV4ID0gbW9kZWw8bnVtYmVyPigxMDAwKTtcbiAgaXNJZnJhbWUgPSBtb2RlbC5yZXF1aXJlZDxib29sZWFuPigpO1xuICBkZWZhdWx0QXZhdGFyID0gbW9kZWw8c3RyaW5nPigpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcmVhZG9ubHkgZWxlbWVudEVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdlbGVtZW50Jyk7XG4gIHJlYWRvbmx5IGl0ZW1zRWwgPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZj4oJ2l0ZW0nKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc0lmcmFtZSgpKSB7XG4gICAgICB0aGlzLmluaXRFdmVudCh3aW5kb3cucGFyZW50LCAnd2hlZWwnKTtcbiAgICAgIHRoaXMuaW5pdEV2ZW50KHdpbmRvdy5wYXJlbnQsICdyZXNpemUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbml0RXZlbnQod2luZG93LCAnd2hlZWwnKTtcbiAgICB0aGlzLmluaXRFdmVudCh3aW5kb3csICdyZXNpemUnKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcml2YXRlIGluaXRFdmVudChlbGVtZW50OiBXaW5kb3csIGV2ZW50TmFtZTogc3RyaW5nKSB7XG4gICAgZnJvbUV2ZW50PEV2ZW50PihlbGVtZW50LCBldmVudE5hbWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudE5hbWUgPT09ICdyZXNpemUnIHx8ICF0aGlzLmVsZW1lbnRFbCgpPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZXJMaXN0ZW5DbG9zZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVyTGlzdGVuQ2xvc2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5lbGVtZW50RWwoKT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5oaWRkZW4uc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGxvdHMgb2YgY29uZnVzaW9uIGhlcmUgYmV0d2VlbiByZWxhdGl2ZSBjb29yZGluYXRlcyBhbmQgY29udGFpbmVyc1xuICBwb3NpdGlvbihuYXRpdmVQYXJlbnRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCBpZnJhbWU/OiBIVE1MSUZyYW1lRWxlbWVudCwgbGVmdERpdj86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubmF0aXZlUGFyZW50RWxlbWVudC5zZXQobmF0aXZlUGFyZW50RWxlbWVudCk7XG4gICAgaWYgKGlzSW5wdXRPclRleHRBcmVhRWxlbWVudChuYXRpdmVQYXJlbnRFbGVtZW50KSkge1xuICAgICAgLy8gcGFyZW50IGVsZW1lbnRzIG5lZWQgdG8gaGF2ZSBwb3N0aXRpb246cmVsYXRpdmUgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHk/XG4gICAgICB0aGlzLmNvb3Jkcy5zZXQoZ2V0Q2FyZXRDb29yZGluYXRlcyhuYXRpdmVQYXJlbnRFbGVtZW50LCBuYXRpdmVQYXJlbnRFbGVtZW50LnNlbGVjdGlvblN0YXJ0KSk7XG4gICAgICB0aGlzLmNvb3Jkcy51cGRhdGUoKGl0ZW0pID0+ICh7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIHRvcDogbmF0aXZlUGFyZW50RWxlbWVudC5vZmZzZXRUb3AgKyBpdGVtLnRvcCAtIG5hdGl2ZVBhcmVudEVsZW1lbnQuc2Nyb2xsVG9wLFxuICAgICAgICBsZWZ0OiBuYXRpdmVQYXJlbnRFbGVtZW50Lm9mZnNldExlZnQgKyBpdGVtLmxlZnQgLSBuYXRpdmVQYXJlbnRFbGVtZW50LnNjcm9sbExlZnQgKyBuYXRpdmVQYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsXG4gICAgICB9KSk7XG5cbiAgICAgIC8vIGdldENyZXRDb29yZGluYXRlcygpIGZvciB0ZXh0L2lucHV0IGVsZW1lbnRzIG5lZWRzIGFuIGFkZGl0aW9uYWwgb2Zmc2V0IHRvIHBvc2l0aW9uIHRoZSBsaXN0IGNvcnJlY3RseVxuICAgICAgdGhpcy5vZmZzZXQuc2V0KHRoaXMuZ2V0QmxvY2tDdXJzb3JEaW1lbnNpb25zKG5hdGl2ZVBhcmVudEVsZW1lbnQpLmhlaWdodCk7XG4gICAgICB0aGlzLnBvc2l0aW9uRWxlbWVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaWZyYW1lKSB7XG4gICAgICBjb25zdCBjb250ZXh0OiB7IGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQ7IHBhcmVudDogRWxlbWVudCB8IG51bGw7IHdpbmRvd1BhcmVudD86IGJvb2xlYW4gfSA9IHsgaWZyYW1lOiBpZnJhbWUsIHBhcmVudDogd2luZG93LnBhcmVudC5kb2N1bWVudC5ib2R5LCB3aW5kb3dQYXJlbnQ6IHRydWUgfTtcbiAgICAgIC8vIGNvbnN0IHJlY3QgPSBpZnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjYXJldFJlbGF0aXZlVG9WaWV3ID0gZ2V0Q29udGVudEVkaXRhYmxlQ2FyZXRDb29yZHMoY29udGV4dCk7XG4gICAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKHdpbmRvdy5zY3JvbGxYIHx8IGRvYy5zY3JvbGxMZWZ0KSAtIChkb2MuY2xpZW50TGVmdCB8fCAwKTtcbiAgICAgIHRoaXMuY29vcmRzLnVwZGF0ZSgoaXRlbSkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgbGVmdDogY2FyZXRSZWxhdGl2ZVRvVmlldy5sZWZ0IC0gc2Nyb2xsTGVmdCAtIChsZWZ0RGl2IHx8IDApLFxuICAgICAgICBib3R0b206IHdpbmRvdy5wYXJlbnQuaW5uZXJIZWlnaHQgLSBjYXJldFJlbGF0aXZlVG9WaWV3LnRvcCArIDE4LFxuICAgICAgfSkpO1xuICAgICAgaWYgKGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tICYmIGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tICE9PSAtMSkge1xuICAgICAgICB0aGlzLmNvb3Jkcy51cGRhdGUoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBib3R0b206IGNhcmV0UmVsYXRpdmVUb1ZpZXcuYm90dG9tLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBvc2l0aW9uRWxlbWVudCgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKHdpbmRvdy5zY3JvbGxYIHx8IGRvYy5zY3JvbGxMZWZ0KSAtIChkb2MuY2xpZW50TGVmdCB8fCAwKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSAod2luZG93LnNjcm9sbFggfHwgZG9jLnNjcm9sbFRvcCkgLSAoZG9jLmNsaWVudFRvcCB8fCAwKTtcbiAgICAvLyBib3VuZGluZyByZWN0YW5nbGVzIGFyZSByZWxhdGl2ZSB0byB2aWV3LCBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byBjb250YWluZXI/XG4gICAgY29uc3QgY2FyZXRSZWxhdGl2ZVRvVmlldyA9IGdldENvbnRlbnRFZGl0YWJsZUNhcmV0Q29vcmRzKHsgaWZyYW1lLCBwYXJlbnQ6IG51bGwgfSk7XG5cbiAgICB0aGlzLmNvb3Jkcy51cGRhdGUoKGl0ZW0pID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgdG9wOiBjYXJldFJlbGF0aXZlVG9WaWV3LnRvcCAtIHNjcm9sbFRvcCArIDEwLFxuICAgICAgbGVmdDogY2FyZXRSZWxhdGl2ZVRvVmlldy5sZWZ0IC0gc2Nyb2xsTGVmdCAtIChsZWZ0RGl2IHx8IDApLFxuICAgICAgYm90dG9tOiBjYXJldFJlbGF0aXZlVG9WaWV3LmJvdHRvbSxcbiAgICB9KSk7XG4gICAgdGhpcy5wb3NpdGlvbkVsZW1lbnQoKTtcbiAgfVxuXG4gIGdldCBBY3RpdmVJdGVtKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKClbdGhpcy5hY3RpdmVJbmRleCgpXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2soZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hY3RpdmVJbmRleC5zZXQoaW5kZXgpO1xuICAgIHNldChldmVudCBhcyBLZXlib2FyZEV2ZW50LCAna2V5Q29kZScsIEtFWV9FTlRFUik7XG4gICAgdGhpcy5wYXJlbnRIYW5kbGVyS2V5RG93bigpPy4oZXZlbnQsIHRoaXMubmF0aXZlUGFyZW50RWxlbWVudCgpKTtcbiAgfVxuXG4gIGFjdGl2YXRlTmV4dEl0ZW0oKSB7XG4gICAgdGhpcy5hY3RpdmVJbmRleC5zZXQodGhpcy5pdGVtcygpLmxlbmd0aCAtIDEgPiB0aGlzLmFjdGl2ZUluZGV4KCkgPyB0aGlzLmFjdGl2ZUluZGV4KCkgKyAxIDogdGhpcy5hY3RpdmVJbmRleCgpKTtcbiAgICB0aGlzLnNjcm9sbFRvQWN0aXZlKCk7XG4gIH1cblxuICBhY3RpdmF0ZVByZXZpb3VzSXRlbSgpIHtcbiAgICB0aGlzLmFjdGl2ZUluZGV4LnNldCh0aGlzLmFjdGl2ZUluZGV4KCkgPiAwID8gdGhpcy5hY3RpdmVJbmRleCgpIC0gMSA6IHRoaXMuYWN0aXZlSW5kZXgoKSk7XG4gICAgdGhpcy5zY3JvbGxUb0FjdGl2ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvbkVsZW1lbnQobGVmdDogbnVtYmVyID0gdGhpcy5jb29yZHMoKS5sZWZ0LCB0b3A6IG51bWJlciA9IHRoaXMuY29vcmRzKCkudG9wLCBkcm9wVXA6IGJvb2xlYW4gPSB0aGlzLmRyb3BVcCgpLCBib3R0b206IG51bWJlciA9IHRoaXMuY29vcmRzKCkuYm90dG9tIHx8IDApIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudEVsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0b3AgKz0gZHJvcFVwID8gMCA6IHRoaXMub2Zmc2V0KCk7IC8vIHRvcCBvZiBsaXN0IGlzIG5leHQgbGluZVxuICAgIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBlbC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7XG4gICAgZWwuc3R5bGUudG9wID0gYm90dG9tICE9PSAtMSA/ICdhdXRvJyA6IHRvcCArICdweCc7XG4gICAgZWwuc3R5bGUuYm90dG9tID0gYm90dG9tID09PSAtMSA/ICdhdXRvJyA6IGJvdHRvbSArICdweCc7XG4gICAgdGhpcy5uYXRpdmVQYXJlbnRFbGVtZW50KCk/Lm5vcm1hbGl6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCbG9ja0N1cnNvckRpbWVuc2lvbnMobmF0aXZlUGFyZW50RWxlbWVudDogSFRNTElucHV0RWxlbWVudCkge1xuICAgIGNvbnN0IHBhcmVudFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5hdGl2ZVBhcmVudEVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogcGFyc2VGbG9hdChwYXJlbnRTdHlsZXMubGluZUhlaWdodCksXG4gICAgICB3aWR0aDogcGFyc2VGbG9hdChwYXJlbnRTdHlsZXMuZm9udFNpemUpLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQWN0aXZlSXRlbShldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFjdGl2ZUluZGV4LnNldChpbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvQWN0aXZlKCkge1xuICAgIGlmICghdGhpcy5pdGVtc0VsKCkgfHwgdGhpcy5pdGVtc0VsKCkubGVuZ3RoIDw9IHRoaXMuYWN0aXZlSW5kZXgoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLml0ZW1zRWwoKVt0aGlzLmFjdGl2ZUluZGV4KCldLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgfVxuXG4gIHNjcm9sbENvbnRlbnQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50RWwoKTtcbiAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gICNlbGVtZW50XG4gIGNsYXNzPVwibGlicy11aS1tZW50aW9uLWxpc3RcIlxuICBbc3R5bGUuekluZGV4XT1cInpJbmRleCgpXCJcbiAgW2NsYXNzLmhpZGRlbl09XCJoaWRkZW4oKVwiPlxuICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICA8ZGl2XG4gICAgICAjaXRlbVxuICAgICAgY2xhc3M9XCJsaWJzLXVpLW1lbnRpb24tbGlzdC1pdGVtXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLW1lbnRpb24tbGlzdC1pdGVtLWFjdGl2ZV09XCIkaW5kZXggPT09IGFjdGl2ZUluZGV4KClcIlxuICAgICAgKG1vdXNlZG93bik9XCJoYW5kbGVyQ2xpY2soJGV2ZW50LCAkaW5kZXgpXCJcbiAgICAgIChtb3VzZWVudGVyKT1cImhhbmRsZUFjdGl2ZUl0ZW0oJGV2ZW50LCAkaW5kZXgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHgtWzEycHhdIHB5LVs2cHhdIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYXZhdGFyXG4gICAgICAgICAgW3NpemVdPVwiMjRcIlxuICAgICAgICAgIFtsaW5rQXZhdGFyXT1cIml0ZW0uYXZhdGFyXCJcbiAgICAgICAgICBbbGlua0F2YXRhckVycm9yXT1cImRlZmF1bHRBdmF0YXIoKVwiXG4gICAgICAgICAgW2dldExhc3RUZXh0QWZ0ZXJTcGFjZV09XCJ0cnVlXCJcbiAgICAgICAgICBbdGV4dEF2YXRhcl09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgIFtpZEdlbkNvbG9yXT1cIml0ZW0uaWRcIiAvPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXJcbiAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIidsaWJzLXVpLWZvbnQtaDVyJ1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7IHdpZHRoOiAyNTAgfVwiPlxuICAgICAgICAgIDwhLS0gLy8gdGEubSDhuqluIHNob3cgdG9vbHRpcCB2w6wgY2jGsGEgeOG7rSBsw70gxJFjIHbhu4sgdHLDrSAtLT5cbiAgICAgICAgICB7eyBpdGVtLm5hbWUgKyAnICgnICsgaXRlbS51c2VybmFtZSArICcpJyB9fVxuICAgICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
|
|
@@ -82,7 +82,7 @@ const insertValueToContentEditable = (start, end, text) => {
|
|
|
82
82
|
// Range.createContextualFragment() would be useful here but is
|
|
83
83
|
// only relatively recently standardized and is not supported in
|
|
84
84
|
// some browsers (IE9, for one)
|
|
85
|
-
const el = document.createElement(
|
|
85
|
+
const el = document.createElement('SPAN');
|
|
86
86
|
el.innerHTML = text;
|
|
87
87
|
const frag = document.createDocumentFragment();
|
|
88
88
|
let node, lastNode, nodeHandlerEvent;
|
|
@@ -114,7 +114,7 @@ const getTextBeforeCursor = () => {
|
|
|
114
114
|
rangeNew.selectNodeContents(anchorNode);
|
|
115
115
|
rangeNew.setEnd(range.startContainer, range.startOffset);
|
|
116
116
|
const fragNew = rangeNew.cloneContents();
|
|
117
|
-
const elmPrev = document.createElement(
|
|
117
|
+
const elmPrev = document.createElement('SPAN');
|
|
118
118
|
elmPrev.appendChild(fragNew);
|
|
119
119
|
return elmPrev.innerText;
|
|
120
120
|
};
|
|
@@ -141,7 +141,6 @@ const setCaretPosition = (el, pos, iframe) => {
|
|
|
141
141
|
if (range) {
|
|
142
142
|
sel.addRange(range);
|
|
143
143
|
}
|
|
144
|
-
;
|
|
145
144
|
};
|
|
146
145
|
const getCaretPosition = (el, iframe) => {
|
|
147
146
|
if (isInputOrTextAreaElement(el)) {
|
|
@@ -182,7 +181,7 @@ const getContentEditableCaretCoords = (ctx) => {
|
|
|
182
181
|
return {
|
|
183
182
|
left: 0,
|
|
184
183
|
top: 0,
|
|
185
|
-
bottom: 0
|
|
184
|
+
bottom: 0,
|
|
186
185
|
};
|
|
187
186
|
}
|
|
188
187
|
const prevRange = sel.getRangeAt(0);
|
|
@@ -203,7 +202,7 @@ const getContentEditableCaretCoords = (ctx) => {
|
|
|
203
202
|
const coordinates = {
|
|
204
203
|
left: 0,
|
|
205
204
|
top: markerEl.offsetHeight,
|
|
206
|
-
bottom: -1
|
|
205
|
+
bottom: -1,
|
|
207
206
|
};
|
|
208
207
|
localToRelativeCoordinates(ctx, markerEl, coordinates);
|
|
209
208
|
markerEl.parentNode?.removeChild(markerEl);
|
|
@@ -273,7 +272,7 @@ const insertTextAtCaret = (element, text) => {
|
|
|
273
272
|
const sel = window.getSelection();
|
|
274
273
|
if (sel?.getRangeAt && sel.rangeCount) {
|
|
275
274
|
let range = sel.getRangeAt(0);
|
|
276
|
-
const el = document.createElement(
|
|
275
|
+
const el = document.createElement('SPAN');
|
|
277
276
|
range.deleteContents();
|
|
278
277
|
el.innerHTML = text;
|
|
279
278
|
const frag = document.createDocumentFragment();
|
|
@@ -583,11 +582,11 @@ class LibsUiComponentsInputsMentionListComponent {
|
|
|
583
582
|
this.onDestroy.complete();
|
|
584
583
|
}
|
|
585
584
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsMentionListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
586
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsMentionListComponent, isStandalone: true, selector: "libs_ui-components-inputs-mention-list", inputs: { labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, isIframe: { classPropertyName: "isIframe", publicName: "isIframe", isSignal: true, isRequired: true, transformFunction: null }, defaultAvatar: { classPropertyName: "defaultAvatar", publicName: "defaultAvatar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { labelKey: "labelKeyChange", zIndex: "zIndexChange", isIframe: "isIframeChange", defaultAvatar: "defaultAvatarChange" }, viewQueries: [{ propertyName: "elementEl", first: true, predicate: ["element"], descendants: true, isSignal: true }, { propertyName: "itemsEl", predicate: ["item"], descendants: true, isSignal: true }], ngImport: i0, template: "<div
|
|
585
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsMentionListComponent, isStandalone: true, selector: "libs_ui-components-inputs-mention-list", inputs: { labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, isIframe: { classPropertyName: "isIframe", publicName: "isIframe", isSignal: true, isRequired: true, transformFunction: null }, defaultAvatar: { classPropertyName: "defaultAvatar", publicName: "defaultAvatar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { labelKey: "labelKeyChange", zIndex: "zIndexChange", isIframe: "isIframeChange", defaultAvatar: "defaultAvatarChange" }, viewQueries: [{ propertyName: "elementEl", first: true, predicate: ["element"], descendants: true, isSignal: true }, { propertyName: "itemsEl", predicate: ["item"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #element\n class=\"libs-ui-mention-list\"\n [style.zIndex]=\"zIndex()\"\n [class.hidden]=\"hidden()\">\n @for (item of items(); track item) {\n <div\n #item\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 <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 </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"], dependencies: [{ kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containertextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
587
586
|
}
|
|
588
587
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsMentionListComponent, decorators: [{
|
|
589
588
|
type: Component,
|
|
590
|
-
args: [{ selector: 'libs_ui-components-inputs-mention-list', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent], template: "<div
|
|
589
|
+
args: [{ selector: 'libs_ui-components-inputs-mention-list', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent], template: "<div\n #element\n class=\"libs-ui-mention-list\"\n [style.zIndex]=\"zIndex()\"\n [class.hidden]=\"hidden()\">\n @for (item of items(); track item) {\n <div\n #item\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 <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 </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"] }]
|
|
591
590
|
}] });
|
|
592
591
|
|
|
593
592
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-inputs-mention.mjs","sources":["../../../../../../libs-ui/components/inputs/mention/src/defines/keyboard.define.ts","../../../../../../libs-ui/components/inputs/mention/src/defines/template.define.ts","../../../../../../libs-ui/components/inputs/mention/src/defines/utils.define.ts","../../../../../../libs-ui/components/inputs/mention/src/defines/caret-coords.define.ts","../../../../../../libs-ui/components/inputs/mention/src/list/list.component.ts","../../../../../../libs-ui/components/inputs/mention/src/list/list.component.html","../../../../../../libs-ui/components/inputs/mention/src/mention.directive.ts","../../../../../../libs-ui/components/inputs/mention/src/libs-ui-components-inputs-mention.ts"],"sourcesContent":["export const KEY_BACKSPACE = 8;\nexport const KEY_TAB = 9;\nexport const KEY_ENTER = 13;\nexport const KEY_SHIFT = 16;\nexport const KEY_ESCAPE = 27;\nexport const KEY_SPACE = 32;\nexport const KEY_UP = 38;\nexport const KEY_DOWN = 40;\nexport const KEY_BUFFERED = 229;","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { deleteUnicode, get } from '@libs-ui/utils';\r\nimport { IMentionConfig } from '../interfaces/mention.interface';\r\nexport const PATTERN_INSERT = '\\ufeff';\r\n\r\nexport const buildTemplate = (value: string, id: string, feId: string): string => {\r\n return `<span class=\"libs-ui-components-mention-item\" style=\"font-weight: 600;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased; color: #7239EA\" contenteditable=\"false\" id=\"${id}\" feId=\"${feId}\" value=\"${value}\">${value}</span> `;\r\n};\r\n\r\nexport const DEFAULT_CONFIG: IMentionConfig = {\r\n items: [],\r\n triggerChar: '@',\r\n labelKey: 'email',\r\n allowSpace: true,\r\n returnTrigger: false,\r\n limitSpaceSearchQuery: 3,\r\n mentionEventName: 'click',\r\n mentionActionByEvent: (item, trigger) => console.log(item, trigger),\r\n mentionSelect: (item) => `@${get(item, 'email')}`,\r\n mentionFilter: (search: string, items?: Array<unknown>) => {\r\n const searchString = deleteUnicode(search.toLowerCase());\r\n\r\n return items?.filter((item) => {\r\n const name = deleteUnicode(get<any>(item, 'name').toLowerCase());\r\n const userName = deleteUnicode(get<any>(item, 'username').toLowerCase());\r\n\r\n return name.includes(searchString) || userName.includes(searchString);\r\n });\r\n },\r\n};\r\n","import { get } from \"@libs-ui/utils\";\nimport { PATTERN_INSERT } from \"./template.define\";\n\nconst setValue = (el: HTMLInputElement, value: string) => {\n if (isInputOrTextAreaElement(el)) {\n el.value = value;\n\n return;\n }\n el.textContent = value;\n};\n\nexport const getValue = (el: HTMLInputElement) => {\n return isInputOrTextAreaElement(el) ? el.value : el.textContent;\n};\n\nexport const insertValue = (el: HTMLInputElement, start: number, end: number, text: string, iframe: HTMLIFrameElement, noRecursion = false): ChildNode | undefined | null => {\n if (isTextElement(el)) {\n const val = getValue(el);\n\n text = noRecursion ? PATTERN_INSERT : text;\n setValue(el, val?.substring(0, start) + text + val?.substring(end, val.length));\n setCaretPosition(el, start + text.length, iframe);\n\n return;\n }\n if (noRecursion) {\n return;\n }\n\n return insertValueToContentEditable(start, end, text);\n};\n\nconst insertValueToContentEditable = (start: number, end: number, text: string): ChildNode | undefined | null => {\n if (!window.getSelection) {\n return;\n }\n const sel = window.getSelection();\n\n if (!sel || !sel.anchorNode || !sel.getRangeAt || !sel.rangeCount) {\n return;\n }\n let range = sel.getRangeAt(0);\n const anchorNode = sel.anchorNode;\n const numberTextBeforeCursor = (getTextBeforeCursor() || '').length;\n\n range.setStart(anchorNode, numberTextBeforeCursor - (end - start));\n range.setEnd(anchorNode, numberTextBeforeCursor);\n range.deleteContents();\n // Range.createContextualFragment() would be useful here but is\n // only relatively recently standardized and is not supported in\n // some browsers (IE9, for one)\n const el = document.createElement(\"SPAN\");\n\n el.innerHTML = text;\n const frag = document.createDocumentFragment();\n let node, lastNode, nodeHandlerEvent;\n\n while ((node = el.firstChild)) {\n if (get(node, 'getAttribute')) {\n nodeHandlerEvent = node;\n }\n\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n return nodeHandlerEvent;\n};\n\nexport const getTextBeforeCursor = () => {\n const sel = window.getSelection();\n\n if (!sel || !sel.anchorNode) {\n return undefined;\n }\n const range = sel.getRangeAt(0);\n const anchorNode = sel.anchorNode;\n const rangeNew = document.createRange();\n\n rangeNew.selectNodeContents(anchorNode);\n rangeNew.setEnd(range.startContainer, range.startOffset);\n\n const fragNew = rangeNew.cloneContents();\n const elmPrev = document.createElement(\"SPAN\");\n\n elmPrev.appendChild(fragNew);\n\n return elmPrev.innerText;\n};\n\nexport const isInputOrTextAreaElement = (el: HTMLElement): boolean => {\n return el !== null && (el.nodeName === 'INPUT' || el.nodeName === 'TEXTAREA');\n};\n\nexport const isTextElement = (el: HTMLElement): boolean => {\n return el !== null && (el.nodeName === 'INPUT' || el.nodeName === 'TEXTAREA' || el.nodeName === '#text');\n};\n\nexport const setCaretPosition = (el: HTMLInputElement, pos: number, iframe: HTMLIFrameElement) => {\n if (isInputOrTextAreaElement(el) && el.selectionStart) {\n el.focus();\n el.setSelectionRange(pos, pos);\n\n return;\n }\n const range = getDocument(iframe)?.createRange();\n\n range?.setStart(el, pos);\n range?.collapse(true);\n const sel = getWindowSelection(iframe);\n\n if (!sel) {\n return;\n }\n sel.removeAllRanges();\n if (range) {\n sel.addRange(range)\n };\n};\n\nexport const getCaretPosition = (el: HTMLInputElement, iframe?: HTMLIFrameElement): number => {\n if (isInputOrTextAreaElement(el)) {\n const val = el.value;\n\n return val.slice(0, el.selectionStart || undefined).length;\n }\n const selObj = getWindowSelection(iframe); //window.getSelection();\n\n if (selObj && selObj.rangeCount > 0) {\n const selRange = selObj.getRangeAt(0);\n const preCaretRange = selRange.cloneRange();\n\n preCaretRange.selectNodeContents(el);\n preCaretRange.setEnd(selRange.endContainer, selRange.endOffset);\n const position = preCaretRange.toString().length;\n\n return position;\n }\n return 0;\n};\n\n// Based on ment.io functions...\n//\n\nconst getDocument = (iframe?: HTMLIFrameElement) => {\n if (!iframe) {\n return document;\n }\n\n return iframe.contentWindow?.document;\n};\n\nexport const getWindowSelection = (iframe?: HTMLIFrameElement): Selection | null => {\n if (!iframe) {\n return window.getSelection();\n }\n\n return iframe.contentWindow?.getSelection() || null;\n};\n\nexport const getContentEditableCaretCoords = (ctx: { iframe: HTMLIFrameElement | undefined, parent: Element | null, windowParent?: boolean }) => {\n const markerTextChar = '\\ufeff';\n const markerId = 'sel_' + new Date().getTime() + '_' + Math.random().toString().substring(2);\n const doc = getDocument(ctx.iframe) as Document;\n const sel = getWindowSelection(ctx.iframe) as Selection;\n\n if (!sel) {\n return {\n left: 0,\n top: 0,\n bottom: 0\n };\n }\n const prevRange = sel.getRangeAt(0);\n\n // create new range and set postion using prevRange\n const range = doc.createRange();\n const anchorNode = sel.anchorNode as Node;\n range.setStart(anchorNode, prevRange.startOffset);\n range.setEnd(anchorNode, prevRange.startOffset);\n range.collapse(false);\n\n // Create the marker element containing a single invisible character\n // using DOM methods and insert it at the position in the range\n const markerEl = doc.createElement('span');\n\n markerEl.id = markerId;\n markerEl.appendChild(doc.createTextNode(markerTextChar));\n range.insertNode(markerEl);\n sel.removeAllRanges();\n sel.addRange(prevRange);\n\n const coordinates = {\n left: 0,\n top: markerEl.offsetHeight,\n bottom: -1\n };\n\n localToRelativeCoordinates(ctx, markerEl, coordinates);\n markerEl.parentNode?.removeChild(markerEl);\n const widthScreen = (ctx.windowParent ? window.parent.innerWidth : window.innerWidth) || document.documentElement.clientWidth || document.body.clientWidth;\n\n if (coordinates.left + 315 > widthScreen) {\n coordinates.left = coordinates.left - 300;\n }\n const heightScreen = (ctx.windowParent ? window.parent.innerHeight : window.innerHeight) || document.documentElement.clientHeight || document.body.clientHeight;\n\n if (coordinates.top + 190 > heightScreen) {\n coordinates.bottom = heightScreen - coordinates.top + 15;\n coordinates.top = -1;\n }\n\n return coordinates;\n};\n\nconst localToRelativeCoordinates = (ctx: { iframe: HTMLIFrameElement | undefined, parent: Element | null, windowParent?: boolean }, element: Element, coordinates: { top: number; left: number, bottom: number }) => {\n let obj = <HTMLElement>element;\n let iframe = ctx ? ctx.iframe : null;\n\n while (obj) {\n if (ctx.parent !== null && ctx.parent === obj) {\n break;\n }\n coordinates.left += obj.offsetLeft + obj.clientLeft;\n coordinates.top += obj.offsetTop + obj.clientTop;\n obj = <HTMLElement>obj.offsetParent;\n if (!obj && iframe) {\n obj = iframe;\n iframe = null;\n }\n }\n obj = <HTMLElement>element;\n iframe = ctx ? ctx.iframe : null;\n while ((obj !== getDocument(undefined)?.body || ctx.windowParent) && obj !== null) {\n if (ctx.parent !== null && ctx.parent === obj) {\n break;\n }\n if (obj.scrollTop && obj.scrollTop > 0) {\n coordinates.top -= obj.scrollTop;\n }\n if (obj.scrollLeft && obj.scrollLeft > 0) {\n coordinates.left -= obj.scrollLeft;\n }\n obj = ctx.windowParent ? <HTMLElement>obj.offsetParent : <HTMLElement>obj.parentNode;\n if (!obj && iframe) {\n obj = iframe;\n iframe = null;\n }\n }\n};\n\nconst setEndOfContentEditable = (contentEditableElement: Node) => {\n if (document.createRange) {\n const range = document.createRange(); //Create a range (a range is a like the selection but invisible)\n const selection = window.getSelection(); //get the selection object (allows you to change selection)\n\n range.selectNodeContents(contentEditableElement); //Select the entire contents of the element with the range\n range.collapse(false); //collapse the range to the end point. false means collapse to end rather than the start\n selection?.removeAllRanges(); //remove any selections already made\n selection?.addRange(range); //make the range you have just created the visible selection\n }\n\n return;\n};\n\nexport const insertTextAtCaret = (element: HTMLInputElement, text: string) => {\n if (window.getSelection) {\n if (!elementContainsSelection(element)) {\n setEndOfContentEditable(element);\n insertTextAtCaret(element, text);\n\n return;\n }\n const sel = window.getSelection();\n\n if (sel?.getRangeAt && sel.rangeCount) {\n let range = sel.getRangeAt(0);\n const el = document.createElement(\"SPAN\");\n\n range.deleteContents();\n el.innerHTML = text;\n const frag = document.createDocumentFragment();\n let node: Node | null;\n let lastNode!: Node;\n\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n};\n\nconst elementContainsSelection = (el: HTMLInputElement) => {\n if (!window.getSelection) {\n return false;\n }\n const sel = window.getSelection();\n\n if (sel && sel.rangeCount > 0) {\n for (let i = 0; i < sel.rangeCount; ++i) {\n if (!isOrContains(sel.getRangeAt(i).commonAncestorContainer, el)) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n};\n\nconst isOrContains = (node: Node, container: HTMLInputElement) => {\n while (node) {\n if (node === container) {\n return true;\n }\n if (node.parentNode) {\n node = node.parentNode;\n }\n }\n\n return false;\n};","/* From: https://github.com/component/textarea-caret-position */\n\nimport { PathsToStringProps } from '@libs-ui/interfaces-types';\nimport { get, isNil, set } from '@libs-ui/utils';\n\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nconst properties = [\n 'direction', // RTL support\n 'boxSizing',\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n 'height',\n 'overflowX',\n 'overflowY', // copy the scrollbar for IE\n\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration', // might not make a difference, but better be safe\n\n 'letterSpacing',\n 'wordSpacing',\n\n 'tabSize',\n 'MozTabSize',\n];\n\nconst isBrowser = typeof window !== 'undefined';\nconst isFirefox = isBrowser && get(window, 'mozInnerScreenX') !== null;\n\nexport const getCaretCoordinates = (element: Element, position: number | null) => {\n if (!isBrowser) {\n throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');\n }\n\n // The mirror div will replicate the textarea's style\n const div: HTMLDivElement = document.createElement('div');\n\n div.id = 'input-textarea-caret-position-mirror-div';\n document.body.appendChild(div);\n\n const style = div.style;\n const computed = window.getComputedStyle ? window.getComputedStyle(element) : get(element, 'currentStyle'); // currentStyle for IE < 9\n const isInput = element.nodeName === 'INPUT';\n\n // Default textarea styles\n style.whiteSpace = 'pre-wrap';\n if (!isInput) {\n style.wordBreak = 'break-word';\n } // only for textarea-s\n\n // Position off-screen\n style.position = 'absolute'; // required to return coordinates properly\n\n // Transfer the element's properties to the div\n properties.forEach((prop) => {\n if (isInput && prop === 'lineHeight') {\n // Special case for <input>s because text is rendered centered and line height may be != height\n if (computed.boxSizing !== 'border-box') {\n style.lineHeight = computed.height;\n\n return;\n }\n const height = parseInt(computed.height);\n const outerHeight = parseInt(computed.paddingTop) + parseInt(computed.paddingBottom) + parseInt(computed.borderTopWidth) + parseInt(computed.borderBottomWidth);\n const targetHeight = outerHeight + parseInt(computed.lineHeight);\n\n if (height > targetHeight) {\n style.lineHeight = height - outerHeight + 'px';\n\n return;\n }\n if (height === targetHeight) {\n style.lineHeight = computed.lineHeight;\n\n return;\n }\n style.lineHeight = '0';\n\n return;\n }\n set(style, prop as PathsToStringProps<CSSStyleDeclaration>, computed[prop]);\n });\n\n if (!isFirefox) {\n style.overflow = 'hidden';\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n }\n const value = get(element, 'value');\n if (isFirefox && element.scrollHeight > parseInt(computed.height)) {\n style.overflowY = 'scroll';\n }\n div.textContent = value.substring(0, position);\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput && !isNil(div.textContent)) {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n const span = document.createElement('span');\n\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textarea's content into the <span> created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n div.appendChild(span);\n\n const coordinates = {\n top: span.offsetTop + parseInt(computed['borderTopWidth']),\n left: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n height: parseInt(computed['lineHeight']),\n };\n\n document.body.removeChild(div);\n\n return coordinates;\n};\n","import { ChangeDetectionStrategy, Component, ElementRef, model, OnDestroy, OnInit, signal, viewChild, viewChildren } from '@angular/core';\nimport { LibsUiComponentsAvatarComponent } from '@libs-ui/components-avatar';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { set } from '@libs-ui/utils';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\nimport { getCaretCoordinates } from '../defines/caret-coords.define';\nimport { KEY_ENTER } from '../defines/keyboard.define';\nimport { getContentEditableCaretCoords, isInputOrTextAreaElement } from '../defines/utils.define';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-mention-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent],\n})\nexport class LibsUiComponentsInputsMentionListComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n public items = signal<Array<Record<string, string | undefined>>>([]);\n public activeIndex = signal<number>(0);\n public hidden = signal<boolean>(false);\n public styleOff = signal<boolean>(false);\n public parentHandlerKeyDown = signal<((e: Event, element: HTMLInputElement | undefined) => unknown) | undefined>(undefined);\n\n protected dropUp = signal<boolean>(false);\n\n private coords = signal<{ top: number; left: number; bottom?: number }>({ top: 0, left: 0, bottom: 0 });\n private offset = signal<number>(0);\n private nativeParentElement = signal<HTMLInputElement | undefined>(undefined);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n labelKey = model<string>('label');\n zIndex = model<number>(1000);\n isIframe = model.required<boolean>();\n defaultAvatar = model<string>();\n\n /* VIEW CHILD */\n readonly elementEl = viewChild<ElementRef>('element');\n readonly itemsEl = viewChildren<ElementRef>('item');\n\n ngOnInit() {\n if (this.isIframe()) {\n this.initEvent(window.parent, 'wheel');\n this.initEvent(window.parent, 'resize');\n return;\n }\n this.initEvent(window, 'wheel');\n this.initEvent(window, 'resize');\n }\n\n /* FUNCTIONS */\n private initEvent(element: Window, eventName: string) {\n fromEvent<Event>(element, eventName)\n .pipe(takeUntil(this.onDestroy))\n .subscribe((event: Event) => {\n if (eventName === 'resize' || !this.elementEl()?.nativeElement.contains(event.target)) {\n this.handlerListenClose(event);\n }\n });\n }\n\n private handlerListenClose(event: Event) {\n if (event.target !== this.elementEl()?.nativeElement) {\n this.hidden.set(true);\n }\n }\n\n // lots of confusion here between relative coordinates and containers\n position(nativeParentElement: HTMLInputElement, iframe?: HTMLIFrameElement, leftDiv?: number): void {\n this.nativeParentElement.set(nativeParentElement);\n if (isInputOrTextAreaElement(nativeParentElement)) {\n // parent elements need to have postition:relative for this to work correctly?\n this.coords.set(getCaretCoordinates(nativeParentElement, nativeParentElement.selectionStart));\n this.coords.update((item) => ({\n ...item,\n top: nativeParentElement.offsetTop + item.top - nativeParentElement.scrollTop,\n left: nativeParentElement.offsetLeft + item.left - nativeParentElement.scrollLeft + nativeParentElement.getBoundingClientRect().left,\n }));\n\n // getCretCoordinates() for text/input elements needs an additional offset to position the list correctly\n this.offset.set(this.getBlockCursorDimensions(nativeParentElement).height);\n this.positionElement();\n return;\n }\n if (iframe) {\n const context: { iframe: HTMLIFrameElement; parent: Element | null; windowParent?: boolean } = { iframe: iframe, parent: window.parent.document.body, windowParent: true };\n // const rect = iframe.getBoundingClientRect();\n const caretRelativeToView = getContentEditableCaretCoords(context);\n const doc = document.documentElement;\n const scrollLeft = (window.scrollX || doc.scrollLeft) - (doc.clientLeft || 0);\n this.coords.update((item) => ({\n ...item,\n left: caretRelativeToView.left - scrollLeft - (leftDiv || 0),\n bottom: window.parent.innerHeight - caretRelativeToView.top + 18,\n }));\n if (caretRelativeToView.bottom && caretRelativeToView.bottom !== -1) {\n this.coords.update((item) => ({\n ...item,\n bottom: caretRelativeToView.bottom,\n }));\n }\n this.positionElement();\n\n return;\n }\n const doc = document.documentElement;\n const scrollLeft = (window.scrollX || doc.scrollLeft) - (doc.clientLeft || 0);\n const scrollTop = (window.scrollX || doc.scrollTop) - (doc.clientTop || 0);\n // bounding rectangles are relative to view, offsets are relative to container?\n const caretRelativeToView = getContentEditableCaretCoords({ iframe, parent: null });\n\n this.coords.update((item) => ({\n ...item,\n top: caretRelativeToView.top - scrollTop + 10,\n left: caretRelativeToView.left - scrollLeft - (leftDiv || 0),\n bottom: caretRelativeToView.bottom,\n }));\n this.positionElement();\n }\n\n get ActiveItem() {\n return this.items()[this.activeIndex()];\n }\n\n protected handlerClick(event: Event, index: number) {\n event.stopPropagation();\n this.activeIndex.set(index);\n set(event as KeyboardEvent, 'keyCode', KEY_ENTER);\n this.parentHandlerKeyDown()?.(event, this.nativeParentElement());\n }\n\n activateNextItem() {\n this.activeIndex.set(this.items().length - 1 > this.activeIndex() ? this.activeIndex() + 1 : this.activeIndex());\n this.scrollToActive();\n }\n\n activatePreviousItem() {\n this.activeIndex.set(this.activeIndex() > 0 ? this.activeIndex() - 1 : this.activeIndex());\n this.scrollToActive();\n }\n\n private positionElement(left: number = this.coords().left, top: number = this.coords().top, dropUp: boolean = this.dropUp(), bottom: number = this.coords().bottom || 0) {\n const el = this.elementEl()?.nativeElement;\n\n top += dropUp ? 0 : this.offset(); // top of list is next line\n el.style.position = 'absolute';\n el.style.left = left + 'px';\n el.style.top = bottom !== -1 ? 'auto' : top + 'px';\n el.style.bottom = bottom === -1 ? 'auto' : bottom + 'px';\n this.nativeParentElement()?.normalize();\n }\n\n private getBlockCursorDimensions(nativeParentElement: HTMLInputElement) {\n const parentStyles = window.getComputedStyle(nativeParentElement);\n\n return {\n height: parseFloat(parentStyles.lineHeight),\n width: parseFloat(parentStyles.fontSize),\n };\n }\n\n protected handleActiveItem(event: Event, index: number) {\n event.stopPropagation();\n this.activeIndex.set(index);\n }\n\n private scrollToActive() {\n if (!this.itemsEl() || this.itemsEl().length <= this.activeIndex()) {\n return;\n }\n this.itemsEl()[this.activeIndex()].nativeElement.scrollIntoView();\n }\n\n scrollContent() {\n setTimeout(() => {\n const element = this.elementEl();\n if (element && element.nativeElement) {\n element.nativeElement.scrollTop = 0;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","<div #element\n class=\"libs-ui-mention-list\"\n [style.zIndex]=\"zIndex()\"\n [class.hidden]=\"hidden()\">\n @for (item of items(); track item) {\n <div #item\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 <div class=\"px-[12px] py-[6px] flex items-center\">\n <libs_ui-components-avatar [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 [classInclude]=\"'libs-ui-font-h5r'\"\n [type]=\"'text'\"\n [ignoreShowPopover]=\"true\"\n [config]=\"{width: 250}\">\n <!-- // ta.m ẩn show tooltip vì chưa xử lý đc vị trí -->\n {{ item.name + ' (' + item.username + ')' }}\n </libs_ui-components-popover>\n </div>\n </div>\n }\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterViewInit, ComponentRef, Directive, ElementRef, OnDestroy, TemplateRef, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { IEvent, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { get, isNil, uuid } from '@libs-ui/utils';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\nimport { KEY_BACKSPACE, KEY_BUFFERED, KEY_DOWN, KEY_ENTER, KEY_ESCAPE, KEY_SHIFT, KEY_SPACE, KEY_TAB, KEY_UP } from './defines/keyboard.define';\nimport { DEFAULT_CONFIG, buildTemplate } from './defines/template.define';\nimport { getCaretPosition, getTextBeforeCursor, getValue, getWindowSelection, insertTextAtCaret, insertValue, setCaretPosition } from './defines/utils.define';\nimport { IMentionConfig, IMentionFunctionControlEvent, IMentionInsert, INodeInsert } from './interfaces/mention.interface';\nimport { LibsUiComponentsInputsMentionListComponent } from './list/list.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsMentionDirective]',\n standalone: true,\n})\nexport class LibsUiComponentsInputsMentionDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private listComponentRef = signal<ComponentRef<LibsUiComponentsInputsMentionListComponent> | undefined>(undefined);\n private nodesInsert = signal<Set<INodeInsert>>(new Set());\n private activeConfig = signal<IMentionConfig | undefined>(undefined);\n private triggerChars = signal<Record<string, IMentionConfig>>({});\n private searchString = signal<string>('');\n private startPos = signal<number | undefined>(undefined);\n private startNode = signal<any>(undefined);\n private searchList = signal<LibsUiComponentsInputsMentionListComponent | undefined>(undefined);\n private searching = signal<boolean>(false);\n private iframe = signal<any>(undefined);\n private lastKeyCode = signal<number | undefined>(undefined);\n private isEditor = signal<boolean>(false);\n private iframeId = signal<string | undefined>(undefined);\n private element = inject(ElementRef);\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly timeDelayInit = input<number, number | undefined>(0, { transform: (val) => val ?? 0 });\n readonly mentionConfig = input<IMentionConfig>();\n readonly mentionListTemplate = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n\n // #region OUTPUT\n readonly outSearchTerm = output<string | undefined>();\n readonly outItemSelected = output<unknown>();\n readonly outToggle = output<boolean>();\n readonly outInsertMention = output<IMentionInsert>();\n readonly outFunctionControl = output<IMentionFunctionControlEvent>();\n\n constructor() {\n effect(() => {\n this.mentionConfig();\n untracked(() => this.updateConfig());\n });\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (!this.mentionConfig()) {\n return;\n }\n const isContentEditable = this.element.nativeElement.getAttribute('contenteditable');\n this.isEditor.set(!isContentEditable);\n const element = !this.isEditor() ? this.element.nativeElement : this.element.nativeElement.querySelector('.ql-editor[contenteditable=\"true\"]');\n if (element) {\n element.addEventListener('keydown', (event: Event) => {\n this.handlerKeydown.bind(this)(event, element);\n });\n element.addEventListener('input', (event: InputEvent) => {\n this.handlerInput.bind(this)(event, element);\n });\n element.addEventListener('blur', (event: Event) => {\n this.handlerBlur.bind(this)(event);\n });\n element.addEventListener('click', (event: Event) => {\n this.handlerFocus.bind(this)(event, element);\n });\n }\n this.outFunctionControl.emit({\n addMention: () => {\n insertTextAtCaret(element, `${this.mentionConfig()?.triggerChar}`);\n setTimeout(() => {\n this.handlerKeydown({ key: this.mentionConfig()?.triggerChar, keyCode: KEY_BACKSPACE, shiftKey: true, inputEvent: true }, element);\n }, 500);\n },\n });\n }, this.timeDelayInit());\n }\n\n /* FUNCTIONS */\n protected updateConfig() {\n const mentionConfig = this.mentionConfig();\n if (!mentionConfig) {\n return;\n }\n this.triggerChars.set({});\n this.addConfig(mentionConfig);\n if (mentionConfig.mention) {\n mentionConfig.mention.forEach((config) => this.addConfig(config));\n }\n }\n\n private addConfig(config: IMentionConfig) {\n const defaults = Object.assign({}, DEFAULT_CONFIG);\n const labelKey = config.labelKey || 'label';\n config = Object.assign(defaults, config);\n if (config.items && config.items.length > 0) {\n if (typeof config.items[0] === 'string') {\n config.items.forEach((label) => {\n const object: Record<string, Record<string, string | undefined>> = {};\n object[labelKey] = label;\n return object;\n });\n }\n if (labelKey) {\n // remove items without an labelKey (as it's required to filter the list)\n config.items = config.items.filter((e) => e[labelKey]);\n if (!config.disableSort) {\n config.items.sort((a, b) => (a[labelKey] || '').localeCompare(b[labelKey] || ''));\n }\n }\n }\n this.triggerChars.update((item) => ({\n ...item,\n [config.triggerChar || '@']: config,\n }));\n if (this.activeConfig() && this.activeConfig()?.triggerChar === config.triggerChar) {\n this.activeConfig.set(config);\n this.updateSearchList();\n }\n }\n\n protected setIframe(iframe: HTMLIFrameElement) {\n this.iframe.set(iframe);\n }\n\n private stopEvent(event: Event) {\n if (get<unknown>(event, 'wasClick')) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n\n protected handlerBlur(event: Event) {\n setTimeout(() => {\n this.stopEvent(event);\n this.stopSearch();\n }, 100);\n }\n\n protected handlerInput(event: InputEvent, nativeElement: HTMLInputElement = this.element.nativeElement) {\n const data = get(event, 'data');\n if (this.lastKeyCode() === KEY_BUFFERED && data) {\n const keyCode = data.charCodeAt(0);\n this.handlerKeydown({ keyCode, inputEvent: true }, nativeElement);\n }\n }\n\n protected handlerKeydown(event: any, nativeElement: HTMLInputElement = this.element.nativeElement): any {\n this.lastKeyCode.set(event.keyCode);\n if (event.isComposing || event.keyCode === KEY_BUFFERED) {\n return;\n }\n\n const val: any = getValue(nativeElement);\n let pos: any = getCaretPosition(nativeElement, this.iframe());\n let charPressed = event.key;\n if (!this.isEditor()) {\n if (event.keyCode === KEY_BACKSPACE) {\n this.appendEmptyToLastNode(pos, val.length, nativeElement);\n }\n setTimeout(() => this.addNodeZeroWidthSpace(nativeElement), 0);\n }\n if (!charPressed) {\n const charCode = event.which || event.keyCode;\n charPressed = String.fromCharCode(event.which || event.keyCode);\n if (!event.shiftKey && charCode >= 65 && charCode <= 90) {\n charPressed = String.fromCharCode(charCode + 32);\n }\n }\n if (event.keyCode === KEY_ENTER && event.wasClick && pos < (this.startPos() || 0)) {\n pos = this.startNode().length;\n setCaretPosition(this.startNode(), pos, this.iframe());\n }\n const config = this.triggerChars()[charPressed];\n if (config) {\n this.activeConfig.set(config);\n this.startPos.set(event.inputEvent ? pos - 1 : pos);\n this.startNode.set(getWindowSelection(this.iframe())?.anchorNode);\n this.searching.set(true);\n this.searchString.set('');\n this.showSearchList(nativeElement);\n this.updateSearchList();\n if (config.returnTrigger) {\n this.outSearchTerm.emit(config.triggerChar);\n }\n return;\n }\n setTimeout(() => {\n for (const itemSet of this.nodesInsert()) {\n if (!nativeElement.contains(itemSet.elementSpan)) {\n itemSet.subscription?.unsubscribe();\n this.nodesInsert().delete(itemSet);\n }\n }\n });\n const startPos = this.startPos();\n if (isNil(startPos) || startPos < 0 || !this.searching()) {\n return;\n }\n const searchList = this.searchList();\n if (pos <= startPos) {\n if (searchList) {\n searchList.hidden.set(true);\n }\n return;\n }\n if (event.keyCode === KEY_SHIFT || event.metaKey || event.altKey || event.ctrlKey || pos <= startPos) {\n return;\n }\n if (!this.activeConfig()?.allowSpace && event.keyCode === KEY_SPACE) {\n this.startPos.set(-1);\n } else if (event.keyCode === KEY_BACKSPACE && pos > 0) {\n pos--;\n if (pos === this.startPos()) {\n this.stopSearch();\n }\n } else if (searchList?.hidden()) {\n if (event.keyCode === KEY_TAB || event.keyCode === KEY_ENTER) {\n this.stopSearch();\n return;\n }\n } else if (!searchList?.hidden() && this.activeConfig()) {\n if (event.keyCode === KEY_TAB || event.keyCode === KEY_ENTER) {\n this.stopEvent(event);\n // emit the selected list item\n this.outItemSelected.emit(searchList?.ActiveItem);\n // optional function to format the selected item before inserting the text\n this.insertMention(nativeElement, pos);\n // fire input event so angular bindings are updated\n if ('Event' in window) {\n // this seems backwards, but fire the event from this elements nativeElement (not the\n // one provided that may be in an iframe, as it won't be propogate)\n // Create the event using the modern Event constructor\n const evt = new Event(this.iframe() ? 'change' : 'input', {\n bubbles: true,\n cancelable: false,\n });\n // Dispatch the event on the native element\n nativeElement.dispatchEvent(evt);\n }\n this.startPos.set(-1);\n this.stopSearch();\n\n return false;\n }\n\n if (event.keyCode === KEY_ESCAPE) {\n this.stopEvent(event);\n this.stopSearch();\n\n return false;\n }\n if (event.keyCode === KEY_DOWN) {\n this.stopEvent(event);\n searchList?.activateNextItem();\n\n return false;\n }\n if (event.keyCode === KEY_UP) {\n this.stopEvent(event);\n searchList?.activatePreviousItem();\n\n return false;\n }\n }\n if (charPressed.length !== 1 && event.keyCode !== KEY_BACKSPACE) {\n this.stopEvent(event);\n\n return false;\n }\n if (!this.searching()) {\n return;\n }\n let mention = val.substring((this.startPos() || 0) + 1, pos);\n\n if (event.keyCode !== KEY_BACKSPACE && !event.inputEvent) {\n mention += charPressed;\n }\n const searchString = mention.replace(String.fromCharCode(160), ' ').replace(String.fromCharCode(0), '');\n this.searchString.set(searchString.trim());\n const limitSpaceSearchQuery = this.activeConfig()?.limitSpaceSearchQuery;\n if (limitSpaceSearchQuery && searchString.split(' ').length - 1 > limitSpaceSearchQuery) {\n this.searchString.set('');\n }\n if (this.activeConfig()?.returnTrigger) {\n const triggerChar = this.searchString() || event.keyCode === KEY_BACKSPACE ? val.substring(this.startPos(), (this.startPos() || 0) + 1) : '';\n\n this.outSearchTerm.emit(triggerChar + this.searchString());\n this.updateSearchList();\n\n return;\n }\n this.outSearchTerm.emit(this.searchString());\n this.updateSearchList();\n }\n\n protected handlerFocus(e?: Event, nativeElement: HTMLInputElement = this.element.nativeElement) {\n e?.stopPropagation();\n setTimeout(() => {\n const node = getWindowSelection(this.iframe())?.anchorNode;\n\n if (node?.nodeType !== 3) {\n this.stopSearch();\n\n return;\n }\n const textBeforeCursor = getTextBeforeCursor() || '';\n\n const triggerChars = Object.keys(this.triggerChars()).map((key: string) => {\n return {\n key: key,\n config: this.triggerChars()[key],\n index: textBeforeCursor.lastIndexOf(key) as number,\n };\n });\n const matchingCharacters = triggerChars.reduce((pre, current) => (pre && current && current.index > pre.index ? current : pre));\n\n if (matchingCharacters.index < 0) {\n this.stopSearch();\n\n return;\n }\n const search = textBeforeCursor?.substring(matchingCharacters.index, textBeforeCursor.length);\n\n if (!search) {\n this.stopSearch();\n\n return;\n }\n const pos = getCaretPosition(nativeElement, this.iframe());\n\n this.activeConfig.set(matchingCharacters.config);\n this.startPos.set(pos - (textBeforeCursor.length - matchingCharacters.index));\n this.searchString.set(search.replace(matchingCharacters.key, ''));\n this.searching.set(true);\n this.handlerKeydown({ keyCode: ''.charCodeAt(0), inputEvent: false }, nativeElement);\n const divElement = document.createElement('div');\n\n divElement.style.width = 'max-content';\n divElement.style.position = 'absolute';\n divElement.innerText = search;\n document.body.appendChild(divElement);\n let iframe = undefined;\n try {\n iframe = this.mentionConfig()?.iframe ? (window.parent.document.getElementById(this.mentionConfig()?.iframe as string) as HTMLIFrameElement) : undefined;\n } catch (error) {\n console.log(error);\n }\n const searchList = this.searchList();\n if (searchList) {\n searchList.position(nativeElement, iframe, divElement.getBoundingClientRect().width);\n }\n divElement.remove();\n nativeElement.normalize();\n });\n }\n\n private stopSearch() {\n const searchList = this.searchList();\n if (searchList && !searchList.hidden()) {\n searchList.hidden.set(true);\n this.outToggle.emit(false);\n }\n this.activeConfig.set(undefined);\n this.searching.set(false);\n }\n\n private updateSearchList() {\n const matches: any[] = [];\n const activeConfig = this.activeConfig();\n const searchString = this.searchString();\n const searchList = this.searchList();\n // disabling the search relies on the async operation to do the filtering\n if (activeConfig && activeConfig.items && !activeConfig.disableSearch && !isNil(searchString) && activeConfig.labelKey && activeConfig.mentionFilter) {\n matches.push(...(activeConfig.mentionFilter(searchString, activeConfig.items) as any));\n }\n // update the search list\n if (!searchList) {\n return;\n }\n searchList.items.set(matches);\n searchList.hidden.set(!matches.length);\n searchList.activeIndex.set(0);\n searchList.scrollContent();\n this.outToggle.emit(matches.length ? true : false);\n }\n\n private showSearchList(nativeElement: HTMLInputElement) {\n let iframe = undefined;\n const mentionConfig = this.mentionConfig();\n try {\n iframe = mentionConfig?.iframe ? (window.parent.document.getElementById(mentionConfig?.iframe as string) as HTMLIFrameElement) : undefined;\n } catch (error) {\n console.log(error);\n }\n if (!mentionConfig) {\n return;\n }\n this.outToggle.emit(true);\n let firstTime = false;\n\n if (!this.listComponentRef()) {\n firstTime = true;\n this.listComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsMentionListComponent));\n this.searchList.set(this.listComponentRef()?.instance);\n }\n this.searchList()?.labelKey.set(this.activeConfig()?.labelKey || '');\n this.searchList()?.styleOff.set(this.mentionConfig()?.disableStyle || false);\n this.searchList()?.activeIndex.set(0);\n this.searchList()?.zIndex.set(this.mentionConfig()?.zIndex || 2500);\n this.searchList()?.isIframe.set(iframe ? true : false);\n this.searchList()?.parentHandlerKeyDown.set(this.handlerKeydown.bind(this));\n this.searchList()?.position(nativeElement, iframe);\n if (firstTime && this.listComponentRef()) {\n this.iframeId.set(this.dynamicComponentService.addToBody(this.listComponentRef(), iframe ? true : false));\n }\n }\n\n private destroyListSearch() {\n this.dynamicComponentService.remove(this.listComponentRef, this.iframeId());\n this.listComponentRef.set(undefined);\n }\n\n protected appendEmptyToLastNode(position: number, length: number, nativeElement: HTMLInputElement = this.element.nativeElement) {\n const empty = document.createTextNode('\\u00A0');\n const selection = getWindowSelection(this.iframe());\n const anchorNode = selection?.anchorNode;\n\n if (this.isEditor()) {\n const parentNode = anchorNode?.parentNode as Element;\n\n if (parentNode && parentNode.getAttribute && parentNode.getAttribute('id')) {\n if (!parentNode.nextSibling || !parentNode.nextSibling.textContent?.length) {\n parentNode?.parentNode?.insertBefore(empty, parentNode.nextSibling);\n }\n const range = document.createRange();\n const sel = window.getSelection();\n\n range.setStart(parentNode.nextSibling as Node, 0);\n range.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n\n return;\n }\n let preNode = null;\n const anchorOffset = selection?.anchorOffset;\n\n if (!anchorNode || !anchorOffset) {\n return;\n }\n\n if (anchorNode.nodeName.toLowerCase() !== '#text') {\n nativeElement.appendChild(empty);\n\n return;\n }\n\n for (let i = 0; i < nativeElement.childNodes.length; i++) {\n const node = nativeElement.childNodes[i];\n\n if (anchorNode.nodeType === 3 && anchorNode === node && preNode && preNode.getAttribute && preNode.getAttribute('id') && (!anchorNode.textContent?.length || anchorNode.textContent.length === 1) && position === length) {\n nativeElement.appendChild(empty);\n break;\n }\n preNode = node as Element;\n }\n }\n\n protected addNodeZeroWidthSpace(nativeElement: HTMLInputElement = this.element.nativeElement) {\n const empty = document.createTextNode('\\u200b');\n let preNode = null;\n\n for (let i = 0; i < nativeElement.childNodes.length; i++) {\n const node: any = nativeElement.childNodes[i];\n\n if (preNode && preNode.getAttribute && preNode.getAttribute('id') && node && node.getAttribute && node.getAttribute('id')) {\n nativeElement.insertBefore(empty, preNode.nextSibling);\n }\n\n preNode = node;\n }\n }\n\n private insertMention(nativeElement: HTMLInputElement, pos: number) {\n const activeConfig = this.activeConfig();\n if (!activeConfig) {\n return;\n }\n const searchList = this.searchList();\n let text = '';\n const feId = uuid();\n const id = searchList?.ActiveItem.id || uuid();\n const itemActive = searchList?.ActiveItem;\n const { triggerChar, mentionEventName, mentionActionByEvent } = activeConfig;\n\n if (activeConfig.mentionSelect) {\n text = activeConfig.mentionSelect(searchList?.ActiveItem, activeConfig.triggerChar);\n }\n if (!this.isEditor()) {\n let span: HTMLSpanElement = document.createElement('TEXTAREA');\n\n span.innerText = text;\n text = span.innerHTML;\n span.remove();\n text = buildTemplate(text, id, feId);\n span = insertValue(nativeElement, this.startPos() || 0, pos, text, this.iframe()) as HTMLSpanElement;\n if (span) {\n const data: INodeInsert = {\n elementSpan: span,\n subscription: undefined,\n item: itemActive,\n triggerChar: triggerChar,\n manualAdd: true,\n };\n\n this.nodesInsert().add(data);\n if (mentionEventName) {\n data.subscription = fromEvent<IEvent>(span, mentionEventName)\n .pipe(\n tap((e) => e.stopPropagation()),\n takeUntil(this.onDestroy)\n )\n .subscribe(() => {\n if (mentionActionByEvent) {\n mentionActionByEvent(itemActive, triggerChar);\n }\n });\n }\n }\n } else {\n this.outInsertMention.emit({ data: { id, value: text, feId }, lengthKey: pos - (this.startPos() || 0) });\n }\n }\n\n ngOnDestroy(): void {\n this.destroyListSearch();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-inputs-mention.mjs","sources":["../../../../../../libs-ui/components/inputs/mention/src/defines/keyboard.define.ts","../../../../../../libs-ui/components/inputs/mention/src/defines/template.define.ts","../../../../../../libs-ui/components/inputs/mention/src/defines/utils.define.ts","../../../../../../libs-ui/components/inputs/mention/src/defines/caret-coords.define.ts","../../../../../../libs-ui/components/inputs/mention/src/list/list.component.ts","../../../../../../libs-ui/components/inputs/mention/src/list/list.component.html","../../../../../../libs-ui/components/inputs/mention/src/mention.directive.ts","../../../../../../libs-ui/components/inputs/mention/src/libs-ui-components-inputs-mention.ts"],"sourcesContent":["export const KEY_BACKSPACE = 8;\nexport const KEY_TAB = 9;\nexport const KEY_ENTER = 13;\nexport const KEY_SHIFT = 16;\nexport const KEY_ESCAPE = 27;\nexport const KEY_SPACE = 32;\nexport const KEY_UP = 38;\nexport const KEY_DOWN = 40;\nexport const KEY_BUFFERED = 229;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { deleteUnicode, get } from '@libs-ui/utils';\nimport { IMentionConfig } from '../interfaces/mention.interface';\nexport const PATTERN_INSERT = '\\ufeff';\n\nexport const buildTemplate = (value: string, id: string, feId: string): string => {\n return `<span class=\"libs-ui-components-mention-item\" style=\"font-weight: 600;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased; color: #7239EA\" contenteditable=\"false\" id=\"${id}\" feId=\"${feId}\" value=\"${value}\">${value}</span> `;\n};\n\nexport const DEFAULT_CONFIG: IMentionConfig = {\n items: [],\n triggerChar: '@',\n labelKey: 'email',\n allowSpace: true,\n returnTrigger: false,\n limitSpaceSearchQuery: 3,\n mentionEventName: 'click',\n mentionActionByEvent: (item, trigger) => console.log(item, trigger),\n mentionSelect: (item) => `@${get(item, 'email')}`,\n mentionFilter: (search: string, items?: Array<unknown>) => {\n const searchString = deleteUnicode(search.toLowerCase());\n\n return items?.filter((item) => {\n const name = deleteUnicode(get<any>(item, 'name').toLowerCase());\n const userName = deleteUnicode(get<any>(item, 'username').toLowerCase());\n\n return name.includes(searchString) || userName.includes(searchString);\n });\n },\n};\n","import { get } from '@libs-ui/utils';\nimport { PATTERN_INSERT } from './template.define';\n\nconst setValue = (el: HTMLInputElement, value: string) => {\n if (isInputOrTextAreaElement(el)) {\n el.value = value;\n\n return;\n }\n el.textContent = value;\n};\n\nexport const getValue = (el: HTMLInputElement) => {\n return isInputOrTextAreaElement(el) ? el.value : el.textContent;\n};\n\nexport const insertValue = (el: HTMLInputElement, start: number, end: number, text: string, iframe: HTMLIFrameElement, noRecursion = false): ChildNode | undefined | null => {\n if (isTextElement(el)) {\n const val = getValue(el);\n\n text = noRecursion ? PATTERN_INSERT : text;\n setValue(el, val?.substring(0, start) + text + val?.substring(end, val.length));\n setCaretPosition(el, start + text.length, iframe);\n\n return;\n }\n if (noRecursion) {\n return;\n }\n\n return insertValueToContentEditable(start, end, text);\n};\n\nconst insertValueToContentEditable = (start: number, end: number, text: string): ChildNode | undefined | null => {\n if (!window.getSelection) {\n return;\n }\n const sel = window.getSelection();\n\n if (!sel || !sel.anchorNode || !sel.getRangeAt || !sel.rangeCount) {\n return;\n }\n let range = sel.getRangeAt(0);\n const anchorNode = sel.anchorNode;\n const numberTextBeforeCursor = (getTextBeforeCursor() || '').length;\n\n range.setStart(anchorNode, numberTextBeforeCursor - (end - start));\n range.setEnd(anchorNode, numberTextBeforeCursor);\n range.deleteContents();\n // Range.createContextualFragment() would be useful here but is\n // only relatively recently standardized and is not supported in\n // some browsers (IE9, for one)\n const el = document.createElement('SPAN');\n\n el.innerHTML = text;\n const frag = document.createDocumentFragment();\n let node, lastNode, nodeHandlerEvent;\n\n while ((node = el.firstChild)) {\n if (get(node, 'getAttribute')) {\n nodeHandlerEvent = node;\n }\n\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n return nodeHandlerEvent;\n};\n\nexport const getTextBeforeCursor = () => {\n const sel = window.getSelection();\n\n if (!sel || !sel.anchorNode) {\n return undefined;\n }\n const range = sel.getRangeAt(0);\n const anchorNode = sel.anchorNode;\n const rangeNew = document.createRange();\n\n rangeNew.selectNodeContents(anchorNode);\n rangeNew.setEnd(range.startContainer, range.startOffset);\n\n const fragNew = rangeNew.cloneContents();\n const elmPrev = document.createElement('SPAN');\n\n elmPrev.appendChild(fragNew);\n\n return elmPrev.innerText;\n};\n\nexport const isInputOrTextAreaElement = (el: HTMLElement): boolean => {\n return el !== null && (el.nodeName === 'INPUT' || el.nodeName === 'TEXTAREA');\n};\n\nexport const isTextElement = (el: HTMLElement): boolean => {\n return el !== null && (el.nodeName === 'INPUT' || el.nodeName === 'TEXTAREA' || el.nodeName === '#text');\n};\n\nexport const setCaretPosition = (el: HTMLInputElement, pos: number, iframe: HTMLIFrameElement) => {\n if (isInputOrTextAreaElement(el) && el.selectionStart) {\n el.focus();\n el.setSelectionRange(pos, pos);\n\n return;\n }\n const range = getDocument(iframe)?.createRange();\n\n range?.setStart(el, pos);\n range?.collapse(true);\n const sel = getWindowSelection(iframe);\n\n if (!sel) {\n return;\n }\n sel.removeAllRanges();\n if (range) {\n sel.addRange(range);\n }\n};\n\nexport const getCaretPosition = (el: HTMLInputElement, iframe?: HTMLIFrameElement): number => {\n if (isInputOrTextAreaElement(el)) {\n const val = el.value;\n\n return val.slice(0, el.selectionStart || undefined).length;\n }\n const selObj = getWindowSelection(iframe); //window.getSelection();\n\n if (selObj && selObj.rangeCount > 0) {\n const selRange = selObj.getRangeAt(0);\n const preCaretRange = selRange.cloneRange();\n\n preCaretRange.selectNodeContents(el);\n preCaretRange.setEnd(selRange.endContainer, selRange.endOffset);\n const position = preCaretRange.toString().length;\n\n return position;\n }\n return 0;\n};\n\n// Based on ment.io functions...\n//\n\nconst getDocument = (iframe?: HTMLIFrameElement) => {\n if (!iframe) {\n return document;\n }\n\n return iframe.contentWindow?.document;\n};\n\nexport const getWindowSelection = (iframe?: HTMLIFrameElement): Selection | null => {\n if (!iframe) {\n return window.getSelection();\n }\n\n return iframe.contentWindow?.getSelection() || null;\n};\n\nexport const getContentEditableCaretCoords = (ctx: { iframe: HTMLIFrameElement | undefined; parent: Element | null; windowParent?: boolean }) => {\n const markerTextChar = '\\ufeff';\n const markerId = 'sel_' + new Date().getTime() + '_' + Math.random().toString().substring(2);\n const doc = getDocument(ctx.iframe) as Document;\n const sel = getWindowSelection(ctx.iframe) as Selection;\n\n if (!sel) {\n return {\n left: 0,\n top: 0,\n bottom: 0,\n };\n }\n const prevRange = sel.getRangeAt(0);\n\n // create new range and set postion using prevRange\n const range = doc.createRange();\n const anchorNode = sel.anchorNode as Node;\n range.setStart(anchorNode, prevRange.startOffset);\n range.setEnd(anchorNode, prevRange.startOffset);\n range.collapse(false);\n\n // Create the marker element containing a single invisible character\n // using DOM methods and insert it at the position in the range\n const markerEl = doc.createElement('span');\n\n markerEl.id = markerId;\n markerEl.appendChild(doc.createTextNode(markerTextChar));\n range.insertNode(markerEl);\n sel.removeAllRanges();\n sel.addRange(prevRange);\n\n const coordinates = {\n left: 0,\n top: markerEl.offsetHeight,\n bottom: -1,\n };\n\n localToRelativeCoordinates(ctx, markerEl, coordinates);\n markerEl.parentNode?.removeChild(markerEl);\n const widthScreen = (ctx.windowParent ? window.parent.innerWidth : window.innerWidth) || document.documentElement.clientWidth || document.body.clientWidth;\n\n if (coordinates.left + 315 > widthScreen) {\n coordinates.left = coordinates.left - 300;\n }\n const heightScreen = (ctx.windowParent ? window.parent.innerHeight : window.innerHeight) || document.documentElement.clientHeight || document.body.clientHeight;\n\n if (coordinates.top + 190 > heightScreen) {\n coordinates.bottom = heightScreen - coordinates.top + 15;\n coordinates.top = -1;\n }\n\n return coordinates;\n};\n\nconst localToRelativeCoordinates = (ctx: { iframe: HTMLIFrameElement | undefined; parent: Element | null; windowParent?: boolean }, element: Element, coordinates: { top: number; left: number; bottom: number }) => {\n let obj = <HTMLElement>element;\n let iframe = ctx ? ctx.iframe : null;\n\n while (obj) {\n if (ctx.parent !== null && ctx.parent === obj) {\n break;\n }\n coordinates.left += obj.offsetLeft + obj.clientLeft;\n coordinates.top += obj.offsetTop + obj.clientTop;\n obj = <HTMLElement>obj.offsetParent;\n if (!obj && iframe) {\n obj = iframe;\n iframe = null;\n }\n }\n obj = <HTMLElement>element;\n iframe = ctx ? ctx.iframe : null;\n while ((obj !== getDocument(undefined)?.body || ctx.windowParent) && obj !== null) {\n if (ctx.parent !== null && ctx.parent === obj) {\n break;\n }\n if (obj.scrollTop && obj.scrollTop > 0) {\n coordinates.top -= obj.scrollTop;\n }\n if (obj.scrollLeft && obj.scrollLeft > 0) {\n coordinates.left -= obj.scrollLeft;\n }\n obj = ctx.windowParent ? <HTMLElement>obj.offsetParent : <HTMLElement>obj.parentNode;\n if (!obj && iframe) {\n obj = iframe;\n iframe = null;\n }\n }\n};\n\nconst setEndOfContentEditable = (contentEditableElement: Node) => {\n if (document.createRange) {\n const range = document.createRange(); //Create a range (a range is a like the selection but invisible)\n const selection = window.getSelection(); //get the selection object (allows you to change selection)\n\n range.selectNodeContents(contentEditableElement); //Select the entire contents of the element with the range\n range.collapse(false); //collapse the range to the end point. false means collapse to end rather than the start\n selection?.removeAllRanges(); //remove any selections already made\n selection?.addRange(range); //make the range you have just created the visible selection\n }\n\n return;\n};\n\nexport const insertTextAtCaret = (element: HTMLInputElement, text: string) => {\n if (window.getSelection) {\n if (!elementContainsSelection(element)) {\n setEndOfContentEditable(element);\n insertTextAtCaret(element, text);\n\n return;\n }\n const sel = window.getSelection();\n\n if (sel?.getRangeAt && sel.rangeCount) {\n let range = sel.getRangeAt(0);\n const el = document.createElement('SPAN');\n\n range.deleteContents();\n el.innerHTML = text;\n const frag = document.createDocumentFragment();\n let node: Node | null;\n let lastNode!: Node;\n\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n};\n\nconst elementContainsSelection = (el: HTMLInputElement) => {\n if (!window.getSelection) {\n return false;\n }\n const sel = window.getSelection();\n\n if (sel && sel.rangeCount > 0) {\n for (let i = 0; i < sel.rangeCount; ++i) {\n if (!isOrContains(sel.getRangeAt(i).commonAncestorContainer, el)) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n};\n\nconst isOrContains = (node: Node, container: HTMLInputElement) => {\n while (node) {\n if (node === container) {\n return true;\n }\n if (node.parentNode) {\n node = node.parentNode;\n }\n }\n\n return false;\n};\n","/* From: https://github.com/component/textarea-caret-position */\n\nimport { PathOf } from '@libs-ui/interfaces-types';\nimport { get, isNil, set } from '@libs-ui/utils';\n\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nconst properties = [\n 'direction', // RTL support\n 'boxSizing',\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n 'height',\n 'overflowX',\n 'overflowY', // copy the scrollbar for IE\n\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration', // might not make a difference, but better be safe\n\n 'letterSpacing',\n 'wordSpacing',\n\n 'tabSize',\n 'MozTabSize',\n];\n\nconst isBrowser = typeof window !== 'undefined';\nconst isFirefox = isBrowser && get(window, 'mozInnerScreenX') !== null;\n\nexport const getCaretCoordinates = (element: Element, position: number | null) => {\n if (!isBrowser) {\n throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');\n }\n\n // The mirror div will replicate the textarea's style\n const div: HTMLDivElement = document.createElement('div');\n\n div.id = 'input-textarea-caret-position-mirror-div';\n document.body.appendChild(div);\n\n const style = div.style;\n const computed = window.getComputedStyle ? window.getComputedStyle(element) : get(element, 'currentStyle'); // currentStyle for IE < 9\n const isInput = element.nodeName === 'INPUT';\n\n // Default textarea styles\n style.whiteSpace = 'pre-wrap';\n if (!isInput) {\n style.wordBreak = 'break-word';\n } // only for textarea-s\n\n // Position off-screen\n style.position = 'absolute'; // required to return coordinates properly\n\n // Transfer the element's properties to the div\n properties.forEach((prop) => {\n if (isInput && prop === 'lineHeight') {\n // Special case for <input>s because text is rendered centered and line height may be != height\n if (computed.boxSizing !== 'border-box') {\n style.lineHeight = computed.height;\n\n return;\n }\n const height = parseInt(computed.height);\n const outerHeight = parseInt(computed.paddingTop) + parseInt(computed.paddingBottom) + parseInt(computed.borderTopWidth) + parseInt(computed.borderBottomWidth);\n const targetHeight = outerHeight + parseInt(computed.lineHeight);\n\n if (height > targetHeight) {\n style.lineHeight = height - outerHeight + 'px';\n\n return;\n }\n if (height === targetHeight) {\n style.lineHeight = computed.lineHeight;\n\n return;\n }\n style.lineHeight = '0';\n\n return;\n }\n set(style, prop as PathOf<CSSStyleDeclaration>, computed[prop]);\n });\n\n if (!isFirefox) {\n style.overflow = 'hidden';\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n }\n const value = get(element, 'value');\n if (isFirefox && element.scrollHeight > parseInt(computed.height)) {\n style.overflowY = 'scroll';\n }\n div.textContent = value.substring(0, position);\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput && !isNil(div.textContent)) {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n const span = document.createElement('span');\n\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textarea's content into the <span> created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n div.appendChild(span);\n\n const coordinates = {\n top: span.offsetTop + parseInt(computed['borderTopWidth']),\n left: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n height: parseInt(computed['lineHeight']),\n };\n\n document.body.removeChild(div);\n\n return coordinates;\n};\n","import { ChangeDetectionStrategy, Component, ElementRef, model, OnDestroy, OnInit, signal, viewChild, viewChildren } from '@angular/core';\nimport { LibsUiComponentsAvatarComponent } from '@libs-ui/components-avatar';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { set } from '@libs-ui/utils';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\nimport { getCaretCoordinates } from '../defines/caret-coords.define';\nimport { KEY_ENTER } from '../defines/keyboard.define';\nimport { getContentEditableCaretCoords, isInputOrTextAreaElement } from '../defines/utils.define';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-mention-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LibsUiComponentsAvatarComponent, LibsUiComponentsPopoverComponent],\n})\nexport class LibsUiComponentsInputsMentionListComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n public items = signal<Array<Record<string, string | undefined>>>([]);\n public activeIndex = signal<number>(0);\n public hidden = signal<boolean>(false);\n public styleOff = signal<boolean>(false);\n public parentHandlerKeyDown = signal<((e: Event, element: HTMLInputElement | undefined) => unknown) | undefined>(undefined);\n\n protected dropUp = signal<boolean>(false);\n\n private coords = signal<{ top: number; left: number; bottom?: number }>({ top: 0, left: 0, bottom: 0 });\n private offset = signal<number>(0);\n private nativeParentElement = signal<HTMLInputElement | undefined>(undefined);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n labelKey = model<string>('label');\n zIndex = model<number>(1000);\n isIframe = model.required<boolean>();\n defaultAvatar = model<string>();\n\n /* VIEW CHILD */\n readonly elementEl = viewChild<ElementRef>('element');\n readonly itemsEl = viewChildren<ElementRef>('item');\n\n ngOnInit() {\n if (this.isIframe()) {\n this.initEvent(window.parent, 'wheel');\n this.initEvent(window.parent, 'resize');\n return;\n }\n this.initEvent(window, 'wheel');\n this.initEvent(window, 'resize');\n }\n\n /* FUNCTIONS */\n private initEvent(element: Window, eventName: string) {\n fromEvent<Event>(element, eventName)\n .pipe(takeUntil(this.onDestroy))\n .subscribe((event: Event) => {\n if (eventName === 'resize' || !this.elementEl()?.nativeElement.contains(event.target)) {\n this.handlerListenClose(event);\n }\n });\n }\n\n private handlerListenClose(event: Event) {\n if (event.target !== this.elementEl()?.nativeElement) {\n this.hidden.set(true);\n }\n }\n\n // lots of confusion here between relative coordinates and containers\n position(nativeParentElement: HTMLInputElement, iframe?: HTMLIFrameElement, leftDiv?: number): void {\n this.nativeParentElement.set(nativeParentElement);\n if (isInputOrTextAreaElement(nativeParentElement)) {\n // parent elements need to have postition:relative for this to work correctly?\n this.coords.set(getCaretCoordinates(nativeParentElement, nativeParentElement.selectionStart));\n this.coords.update((item) => ({\n ...item,\n top: nativeParentElement.offsetTop + item.top - nativeParentElement.scrollTop,\n left: nativeParentElement.offsetLeft + item.left - nativeParentElement.scrollLeft + nativeParentElement.getBoundingClientRect().left,\n }));\n\n // getCretCoordinates() for text/input elements needs an additional offset to position the list correctly\n this.offset.set(this.getBlockCursorDimensions(nativeParentElement).height);\n this.positionElement();\n return;\n }\n if (iframe) {\n const context: { iframe: HTMLIFrameElement; parent: Element | null; windowParent?: boolean } = { iframe: iframe, parent: window.parent.document.body, windowParent: true };\n // const rect = iframe.getBoundingClientRect();\n const caretRelativeToView = getContentEditableCaretCoords(context);\n const doc = document.documentElement;\n const scrollLeft = (window.scrollX || doc.scrollLeft) - (doc.clientLeft || 0);\n this.coords.update((item) => ({\n ...item,\n left: caretRelativeToView.left - scrollLeft - (leftDiv || 0),\n bottom: window.parent.innerHeight - caretRelativeToView.top + 18,\n }));\n if (caretRelativeToView.bottom && caretRelativeToView.bottom !== -1) {\n this.coords.update((item) => ({\n ...item,\n bottom: caretRelativeToView.bottom,\n }));\n }\n this.positionElement();\n\n return;\n }\n const doc = document.documentElement;\n const scrollLeft = (window.scrollX || doc.scrollLeft) - (doc.clientLeft || 0);\n const scrollTop = (window.scrollX || doc.scrollTop) - (doc.clientTop || 0);\n // bounding rectangles are relative to view, offsets are relative to container?\n const caretRelativeToView = getContentEditableCaretCoords({ iframe, parent: null });\n\n this.coords.update((item) => ({\n ...item,\n top: caretRelativeToView.top - scrollTop + 10,\n left: caretRelativeToView.left - scrollLeft - (leftDiv || 0),\n bottom: caretRelativeToView.bottom,\n }));\n this.positionElement();\n }\n\n get ActiveItem() {\n return this.items()[this.activeIndex()];\n }\n\n protected handlerClick(event: Event, index: number) {\n event.stopPropagation();\n this.activeIndex.set(index);\n set(event as KeyboardEvent, 'keyCode', KEY_ENTER);\n this.parentHandlerKeyDown()?.(event, this.nativeParentElement());\n }\n\n activateNextItem() {\n this.activeIndex.set(this.items().length - 1 > this.activeIndex() ? this.activeIndex() + 1 : this.activeIndex());\n this.scrollToActive();\n }\n\n activatePreviousItem() {\n this.activeIndex.set(this.activeIndex() > 0 ? this.activeIndex() - 1 : this.activeIndex());\n this.scrollToActive();\n }\n\n private positionElement(left: number = this.coords().left, top: number = this.coords().top, dropUp: boolean = this.dropUp(), bottom: number = this.coords().bottom || 0) {\n const el = this.elementEl()?.nativeElement;\n\n top += dropUp ? 0 : this.offset(); // top of list is next line\n el.style.position = 'absolute';\n el.style.left = left + 'px';\n el.style.top = bottom !== -1 ? 'auto' : top + 'px';\n el.style.bottom = bottom === -1 ? 'auto' : bottom + 'px';\n this.nativeParentElement()?.normalize();\n }\n\n private getBlockCursorDimensions(nativeParentElement: HTMLInputElement) {\n const parentStyles = window.getComputedStyle(nativeParentElement);\n\n return {\n height: parseFloat(parentStyles.lineHeight),\n width: parseFloat(parentStyles.fontSize),\n };\n }\n\n protected handleActiveItem(event: Event, index: number) {\n event.stopPropagation();\n this.activeIndex.set(index);\n }\n\n private scrollToActive() {\n if (!this.itemsEl() || this.itemsEl().length <= this.activeIndex()) {\n return;\n }\n this.itemsEl()[this.activeIndex()].nativeElement.scrollIntoView();\n }\n\n scrollContent() {\n setTimeout(() => {\n const element = this.elementEl();\n if (element && element.nativeElement) {\n element.nativeElement.scrollTop = 0;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","<div\n #element\n class=\"libs-ui-mention-list\"\n [style.zIndex]=\"zIndex()\"\n [class.hidden]=\"hidden()\">\n @for (item of items(); track item) {\n <div\n #item\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 <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 ẩn show tooltip vì chưa xử lý đc vị trí -->\n {{ item.name + ' (' + item.username + ')' }}\n </libs_ui-components-popover>\n </div>\n </div>\n }\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterViewInit, ComponentRef, Directive, ElementRef, OnDestroy, TemplateRef, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { IEvent, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { get, isNil, uuid } from '@libs-ui/utils';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\nimport { KEY_BACKSPACE, KEY_BUFFERED, KEY_DOWN, KEY_ENTER, KEY_ESCAPE, KEY_SHIFT, KEY_SPACE, KEY_TAB, KEY_UP } from './defines/keyboard.define';\nimport { DEFAULT_CONFIG, buildTemplate } from './defines/template.define';\nimport { getCaretPosition, getTextBeforeCursor, getValue, getWindowSelection, insertTextAtCaret, insertValue, setCaretPosition } from './defines/utils.define';\nimport { IMentionConfig, IMentionFunctionControlEvent, IMentionInsert, INodeInsert } from './interfaces/mention.interface';\nimport { LibsUiComponentsInputsMentionListComponent } from './list/list.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsMentionDirective]',\n standalone: true,\n})\nexport class LibsUiComponentsInputsMentionDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private listComponentRef = signal<ComponentRef<LibsUiComponentsInputsMentionListComponent> | undefined>(undefined);\n private nodesInsert = signal<Set<INodeInsert>>(new Set());\n private activeConfig = signal<IMentionConfig | undefined>(undefined);\n private triggerChars = signal<Record<string, IMentionConfig>>({});\n private searchString = signal<string>('');\n private startPos = signal<number | undefined>(undefined);\n private startNode = signal<any>(undefined);\n private searchList = signal<LibsUiComponentsInputsMentionListComponent | undefined>(undefined);\n private searching = signal<boolean>(false);\n private iframe = signal<any>(undefined);\n private lastKeyCode = signal<number | undefined>(undefined);\n private isEditor = signal<boolean>(false);\n private iframeId = signal<string | undefined>(undefined);\n private element = inject(ElementRef);\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly timeDelayInit = input<number, number | undefined>(0, { transform: (val) => val ?? 0 });\n readonly mentionConfig = input<IMentionConfig>();\n readonly mentionListTemplate = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n\n // #region OUTPUT\n readonly outSearchTerm = output<string | undefined>();\n readonly outItemSelected = output<unknown>();\n readonly outToggle = output<boolean>();\n readonly outInsertMention = output<IMentionInsert>();\n readonly outFunctionControl = output<IMentionFunctionControlEvent>();\n\n constructor() {\n effect(() => {\n this.mentionConfig();\n untracked(() => this.updateConfig());\n });\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (!this.mentionConfig()) {\n return;\n }\n const isContentEditable = this.element.nativeElement.getAttribute('contenteditable');\n this.isEditor.set(!isContentEditable);\n const element = !this.isEditor() ? this.element.nativeElement : this.element.nativeElement.querySelector('.ql-editor[contenteditable=\"true\"]');\n if (element) {\n element.addEventListener('keydown', (event: Event) => {\n this.handlerKeydown.bind(this)(event, element);\n });\n element.addEventListener('input', (event: InputEvent) => {\n this.handlerInput.bind(this)(event, element);\n });\n element.addEventListener('blur', (event: Event) => {\n this.handlerBlur.bind(this)(event);\n });\n element.addEventListener('click', (event: Event) => {\n this.handlerFocus.bind(this)(event, element);\n });\n }\n this.outFunctionControl.emit({\n addMention: () => {\n insertTextAtCaret(element, `${this.mentionConfig()?.triggerChar}`);\n setTimeout(() => {\n this.handlerKeydown({ key: this.mentionConfig()?.triggerChar, keyCode: KEY_BACKSPACE, shiftKey: true, inputEvent: true }, element);\n }, 500);\n },\n });\n }, this.timeDelayInit());\n }\n\n /* FUNCTIONS */\n protected updateConfig() {\n const mentionConfig = this.mentionConfig();\n if (!mentionConfig) {\n return;\n }\n this.triggerChars.set({});\n this.addConfig(mentionConfig);\n if (mentionConfig.mention) {\n mentionConfig.mention.forEach((config) => this.addConfig(config));\n }\n }\n\n private addConfig(config: IMentionConfig) {\n const defaults = Object.assign({}, DEFAULT_CONFIG);\n const labelKey = config.labelKey || 'label';\n config = Object.assign(defaults, config);\n if (config.items && config.items.length > 0) {\n if (typeof config.items[0] === 'string') {\n config.items.forEach((label) => {\n const object: Record<string, Record<string, string | undefined>> = {};\n object[labelKey] = label;\n return object;\n });\n }\n if (labelKey) {\n // remove items without an labelKey (as it's required to filter the list)\n config.items = config.items.filter((e) => e[labelKey]);\n if (!config.disableSort) {\n config.items.sort((a, b) => (a[labelKey] || '').localeCompare(b[labelKey] || ''));\n }\n }\n }\n this.triggerChars.update((item) => ({\n ...item,\n [config.triggerChar || '@']: config,\n }));\n if (this.activeConfig() && this.activeConfig()?.triggerChar === config.triggerChar) {\n this.activeConfig.set(config);\n this.updateSearchList();\n }\n }\n\n protected setIframe(iframe: HTMLIFrameElement) {\n this.iframe.set(iframe);\n }\n\n private stopEvent(event: Event) {\n if (get<unknown>(event, 'wasClick')) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n\n protected handlerBlur(event: Event) {\n setTimeout(() => {\n this.stopEvent(event);\n this.stopSearch();\n }, 100);\n }\n\n protected handlerInput(event: InputEvent, nativeElement: HTMLInputElement = this.element.nativeElement) {\n const data = get(event, 'data');\n if (this.lastKeyCode() === KEY_BUFFERED && data) {\n const keyCode = data.charCodeAt(0);\n this.handlerKeydown({ keyCode, inputEvent: true }, nativeElement);\n }\n }\n\n protected handlerKeydown(event: any, nativeElement: HTMLInputElement = this.element.nativeElement): any {\n this.lastKeyCode.set(event.keyCode);\n if (event.isComposing || event.keyCode === KEY_BUFFERED) {\n return;\n }\n\n const val: any = getValue(nativeElement);\n let pos: any = getCaretPosition(nativeElement, this.iframe());\n let charPressed = event.key;\n if (!this.isEditor()) {\n if (event.keyCode === KEY_BACKSPACE) {\n this.appendEmptyToLastNode(pos, val.length, nativeElement);\n }\n setTimeout(() => this.addNodeZeroWidthSpace(nativeElement), 0);\n }\n if (!charPressed) {\n const charCode = event.which || event.keyCode;\n charPressed = String.fromCharCode(event.which || event.keyCode);\n if (!event.shiftKey && charCode >= 65 && charCode <= 90) {\n charPressed = String.fromCharCode(charCode + 32);\n }\n }\n if (event.keyCode === KEY_ENTER && event.wasClick && pos < (this.startPos() || 0)) {\n pos = this.startNode().length;\n setCaretPosition(this.startNode(), pos, this.iframe());\n }\n const config = this.triggerChars()[charPressed];\n if (config) {\n this.activeConfig.set(config);\n this.startPos.set(event.inputEvent ? pos - 1 : pos);\n this.startNode.set(getWindowSelection(this.iframe())?.anchorNode);\n this.searching.set(true);\n this.searchString.set('');\n this.showSearchList(nativeElement);\n this.updateSearchList();\n if (config.returnTrigger) {\n this.outSearchTerm.emit(config.triggerChar);\n }\n return;\n }\n setTimeout(() => {\n for (const itemSet of this.nodesInsert()) {\n if (!nativeElement.contains(itemSet.elementSpan)) {\n itemSet.subscription?.unsubscribe();\n this.nodesInsert().delete(itemSet);\n }\n }\n });\n const startPos = this.startPos();\n if (isNil(startPos) || startPos < 0 || !this.searching()) {\n return;\n }\n const searchList = this.searchList();\n if (pos <= startPos) {\n if (searchList) {\n searchList.hidden.set(true);\n }\n return;\n }\n if (event.keyCode === KEY_SHIFT || event.metaKey || event.altKey || event.ctrlKey || pos <= startPos) {\n return;\n }\n if (!this.activeConfig()?.allowSpace && event.keyCode === KEY_SPACE) {\n this.startPos.set(-1);\n } else if (event.keyCode === KEY_BACKSPACE && pos > 0) {\n pos--;\n if (pos === this.startPos()) {\n this.stopSearch();\n }\n } else if (searchList?.hidden()) {\n if (event.keyCode === KEY_TAB || event.keyCode === KEY_ENTER) {\n this.stopSearch();\n return;\n }\n } else if (!searchList?.hidden() && this.activeConfig()) {\n if (event.keyCode === KEY_TAB || event.keyCode === KEY_ENTER) {\n this.stopEvent(event);\n // emit the selected list item\n this.outItemSelected.emit(searchList?.ActiveItem);\n // optional function to format the selected item before inserting the text\n this.insertMention(nativeElement, pos);\n // fire input event so angular bindings are updated\n if ('Event' in window) {\n // this seems backwards, but fire the event from this elements nativeElement (not the\n // one provided that may be in an iframe, as it won't be propogate)\n // Create the event using the modern Event constructor\n const evt = new Event(this.iframe() ? 'change' : 'input', {\n bubbles: true,\n cancelable: false,\n });\n // Dispatch the event on the native element\n nativeElement.dispatchEvent(evt);\n }\n this.startPos.set(-1);\n this.stopSearch();\n\n return false;\n }\n\n if (event.keyCode === KEY_ESCAPE) {\n this.stopEvent(event);\n this.stopSearch();\n\n return false;\n }\n if (event.keyCode === KEY_DOWN) {\n this.stopEvent(event);\n searchList?.activateNextItem();\n\n return false;\n }\n if (event.keyCode === KEY_UP) {\n this.stopEvent(event);\n searchList?.activatePreviousItem();\n\n return false;\n }\n }\n if (charPressed.length !== 1 && event.keyCode !== KEY_BACKSPACE) {\n this.stopEvent(event);\n\n return false;\n }\n if (!this.searching()) {\n return;\n }\n let mention = val.substring((this.startPos() || 0) + 1, pos);\n\n if (event.keyCode !== KEY_BACKSPACE && !event.inputEvent) {\n mention += charPressed;\n }\n const searchString = mention.replace(String.fromCharCode(160), ' ').replace(String.fromCharCode(0), '');\n this.searchString.set(searchString.trim());\n const limitSpaceSearchQuery = this.activeConfig()?.limitSpaceSearchQuery;\n if (limitSpaceSearchQuery && searchString.split(' ').length - 1 > limitSpaceSearchQuery) {\n this.searchString.set('');\n }\n if (this.activeConfig()?.returnTrigger) {\n const triggerChar = this.searchString() || event.keyCode === KEY_BACKSPACE ? val.substring(this.startPos(), (this.startPos() || 0) + 1) : '';\n\n this.outSearchTerm.emit(triggerChar + this.searchString());\n this.updateSearchList();\n\n return;\n }\n this.outSearchTerm.emit(this.searchString());\n this.updateSearchList();\n }\n\n protected handlerFocus(e?: Event, nativeElement: HTMLInputElement = this.element.nativeElement) {\n e?.stopPropagation();\n setTimeout(() => {\n const node = getWindowSelection(this.iframe())?.anchorNode;\n\n if (node?.nodeType !== 3) {\n this.stopSearch();\n\n return;\n }\n const textBeforeCursor = getTextBeforeCursor() || '';\n\n const triggerChars = Object.keys(this.triggerChars()).map((key: string) => {\n return {\n key: key,\n config: this.triggerChars()[key],\n index: textBeforeCursor.lastIndexOf(key) as number,\n };\n });\n const matchingCharacters = triggerChars.reduce((pre, current) => (pre && current && current.index > pre.index ? current : pre));\n\n if (matchingCharacters.index < 0) {\n this.stopSearch();\n\n return;\n }\n const search = textBeforeCursor?.substring(matchingCharacters.index, textBeforeCursor.length);\n\n if (!search) {\n this.stopSearch();\n\n return;\n }\n const pos = getCaretPosition(nativeElement, this.iframe());\n\n this.activeConfig.set(matchingCharacters.config);\n this.startPos.set(pos - (textBeforeCursor.length - matchingCharacters.index));\n this.searchString.set(search.replace(matchingCharacters.key, ''));\n this.searching.set(true);\n this.handlerKeydown({ keyCode: ''.charCodeAt(0), inputEvent: false }, nativeElement);\n const divElement = document.createElement('div');\n\n divElement.style.width = 'max-content';\n divElement.style.position = 'absolute';\n divElement.innerText = search;\n document.body.appendChild(divElement);\n let iframe = undefined;\n try {\n iframe = this.mentionConfig()?.iframe ? (window.parent.document.getElementById(this.mentionConfig()?.iframe as string) as HTMLIFrameElement) : undefined;\n } catch (error) {\n console.log(error);\n }\n const searchList = this.searchList();\n if (searchList) {\n searchList.position(nativeElement, iframe, divElement.getBoundingClientRect().width);\n }\n divElement.remove();\n nativeElement.normalize();\n });\n }\n\n private stopSearch() {\n const searchList = this.searchList();\n if (searchList && !searchList.hidden()) {\n searchList.hidden.set(true);\n this.outToggle.emit(false);\n }\n this.activeConfig.set(undefined);\n this.searching.set(false);\n }\n\n private updateSearchList() {\n const matches: any[] = [];\n const activeConfig = this.activeConfig();\n const searchString = this.searchString();\n const searchList = this.searchList();\n // disabling the search relies on the async operation to do the filtering\n if (activeConfig && activeConfig.items && !activeConfig.disableSearch && !isNil(searchString) && activeConfig.labelKey && activeConfig.mentionFilter) {\n matches.push(...(activeConfig.mentionFilter(searchString, activeConfig.items) as any));\n }\n // update the search list\n if (!searchList) {\n return;\n }\n searchList.items.set(matches);\n searchList.hidden.set(!matches.length);\n searchList.activeIndex.set(0);\n searchList.scrollContent();\n this.outToggle.emit(matches.length ? true : false);\n }\n\n private showSearchList(nativeElement: HTMLInputElement) {\n let iframe = undefined;\n const mentionConfig = this.mentionConfig();\n try {\n iframe = mentionConfig?.iframe ? (window.parent.document.getElementById(mentionConfig?.iframe as string) as HTMLIFrameElement) : undefined;\n } catch (error) {\n console.log(error);\n }\n if (!mentionConfig) {\n return;\n }\n this.outToggle.emit(true);\n let firstTime = false;\n\n if (!this.listComponentRef()) {\n firstTime = true;\n this.listComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsMentionListComponent));\n this.searchList.set(this.listComponentRef()?.instance);\n }\n this.searchList()?.labelKey.set(this.activeConfig()?.labelKey || '');\n this.searchList()?.styleOff.set(this.mentionConfig()?.disableStyle || false);\n this.searchList()?.activeIndex.set(0);\n this.searchList()?.zIndex.set(this.mentionConfig()?.zIndex || 2500);\n this.searchList()?.isIframe.set(iframe ? true : false);\n this.searchList()?.parentHandlerKeyDown.set(this.handlerKeydown.bind(this));\n this.searchList()?.position(nativeElement, iframe);\n if (firstTime && this.listComponentRef()) {\n this.iframeId.set(this.dynamicComponentService.addToBody(this.listComponentRef(), iframe ? true : false));\n }\n }\n\n private destroyListSearch() {\n this.dynamicComponentService.remove(this.listComponentRef, this.iframeId());\n this.listComponentRef.set(undefined);\n }\n\n protected appendEmptyToLastNode(position: number, length: number, nativeElement: HTMLInputElement = this.element.nativeElement) {\n const empty = document.createTextNode('\\u00A0');\n const selection = getWindowSelection(this.iframe());\n const anchorNode = selection?.anchorNode;\n\n if (this.isEditor()) {\n const parentNode = anchorNode?.parentNode as Element;\n\n if (parentNode && parentNode.getAttribute && parentNode.getAttribute('id')) {\n if (!parentNode.nextSibling || !parentNode.nextSibling.textContent?.length) {\n parentNode?.parentNode?.insertBefore(empty, parentNode.nextSibling);\n }\n const range = document.createRange();\n const sel = window.getSelection();\n\n range.setStart(parentNode.nextSibling as Node, 0);\n range.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n\n return;\n }\n let preNode = null;\n const anchorOffset = selection?.anchorOffset;\n\n if (!anchorNode || !anchorOffset) {\n return;\n }\n\n if (anchorNode.nodeName.toLowerCase() !== '#text') {\n nativeElement.appendChild(empty);\n\n return;\n }\n\n for (let i = 0; i < nativeElement.childNodes.length; i++) {\n const node = nativeElement.childNodes[i];\n\n if (anchorNode.nodeType === 3 && anchorNode === node && preNode && preNode.getAttribute && preNode.getAttribute('id') && (!anchorNode.textContent?.length || anchorNode.textContent.length === 1) && position === length) {\n nativeElement.appendChild(empty);\n break;\n }\n preNode = node as Element;\n }\n }\n\n protected addNodeZeroWidthSpace(nativeElement: HTMLInputElement = this.element.nativeElement) {\n const empty = document.createTextNode('\\u200b');\n let preNode = null;\n\n for (let i = 0; i < nativeElement.childNodes.length; i++) {\n const node: any = nativeElement.childNodes[i];\n\n if (preNode && preNode.getAttribute && preNode.getAttribute('id') && node && node.getAttribute && node.getAttribute('id')) {\n nativeElement.insertBefore(empty, preNode.nextSibling);\n }\n\n preNode = node;\n }\n }\n\n private insertMention(nativeElement: HTMLInputElement, pos: number) {\n const activeConfig = this.activeConfig();\n if (!activeConfig) {\n return;\n }\n const searchList = this.searchList();\n let text = '';\n const feId = uuid();\n const id = searchList?.ActiveItem.id || uuid();\n const itemActive = searchList?.ActiveItem;\n const { triggerChar, mentionEventName, mentionActionByEvent } = activeConfig;\n\n if (activeConfig.mentionSelect) {\n text = activeConfig.mentionSelect(searchList?.ActiveItem, activeConfig.triggerChar);\n }\n if (!this.isEditor()) {\n let span: HTMLSpanElement = document.createElement('TEXTAREA');\n\n span.innerText = text;\n text = span.innerHTML;\n span.remove();\n text = buildTemplate(text, id, feId);\n span = insertValue(nativeElement, this.startPos() || 0, pos, text, this.iframe()) as HTMLSpanElement;\n if (span) {\n const data: INodeInsert = {\n elementSpan: span,\n subscription: undefined,\n item: itemActive,\n triggerChar: triggerChar,\n manualAdd: true,\n };\n\n this.nodesInsert().add(data);\n if (mentionEventName) {\n data.subscription = fromEvent<IEvent>(span, mentionEventName)\n .pipe(\n tap((e) => e.stopPropagation()),\n takeUntil(this.onDestroy)\n )\n .subscribe(() => {\n if (mentionActionByEvent) {\n mentionActionByEvent(itemActive, triggerChar);\n }\n });\n }\n }\n } else {\n this.outInsertMention.emit({ data: { id, value: text, feId }, lengthKey: pos - (this.startPos() || 0) });\n }\n }\n\n ngOnDestroy(): void {\n this.destroyListSearch();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Subscription } from
|
|
1
|
+
import { Subscription } from 'rxjs';
|
|
2
2
|
export interface IMentionConfig extends IMentionItem {
|
|
3
3
|
disableStyle?: boolean;
|
|
4
4
|
iframe?: string;
|
|
@@ -13,7 +13,7 @@ export interface IMentionItem {
|
|
|
13
13
|
allowSpace?: boolean;
|
|
14
14
|
limitSpaceSearchQuery?: number;
|
|
15
15
|
returnTrigger?: boolean;
|
|
16
|
-
mentionSelect?: (item: unknown, triggerChar?: string) =>
|
|
16
|
+
mentionSelect?: (item: unknown, triggerChar?: string) => string;
|
|
17
17
|
mentionFilter?: (searchString: string, items?: Array<unknown>) => Array<unknown> | undefined;
|
|
18
18
|
mentionEventName?: 'click' | 'mouseenter';
|
|
19
19
|
mentionActionByEvent?: (item: unknown, triggerChars?: string) => void;
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/components-inputs-mention",
|
|
3
|
-
"version": "0.2.306-
|
|
3
|
+
"version": "0.2.306-5",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=18.0.0",
|
|
6
|
-
"@libs-ui/utils": "0.2.306-
|
|
6
|
+
"@libs-ui/utils": "0.2.306-5",
|
|
7
7
|
"rxjs": "~7.8.0",
|
|
8
|
-
"@libs-ui/components-avatar": "0.2.306-
|
|
9
|
-
"@libs-ui/components-popover": "0.2.306-
|
|
10
|
-
"@libs-ui/interfaces-types": "0.2.306-
|
|
11
|
-
"@libs-ui/services-dynamic-component": "0.2.306-
|
|
8
|
+
"@libs-ui/components-avatar": "0.2.306-5",
|
|
9
|
+
"@libs-ui/components-popover": "0.2.306-5",
|
|
10
|
+
"@libs-ui/interfaces-types": "0.2.306-5",
|
|
11
|
+
"@libs-ui/services-dynamic-component": "0.2.306-5"
|
|
12
12
|
},
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"module": "fesm2022/libs-ui-components-inputs-mention.mjs",
|