@libs-ui/components-inputs-mention 0.1.1-1

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/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # inputs-mention
2
+
3
+ This library was generated with [Nx](https://nx.dev).
@@ -0,0 +1,5 @@
1
+ export declare const getCaretCoordinates: (element: Element, position: number | null) => {
2
+ top: number;
3
+ left: number;
4
+ height: number;
5
+ };
@@ -0,0 +1,4 @@
1
+ import { IMentionConfig } from '../interfaces/mention.interface';
2
+ export declare const PATTERN_INSERT = "\uFEFF";
3
+ export declare const buildTemplate: (value: string, id: string, feId: string) => string;
4
+ export declare const DEFAULT_CONFIG: IMentionConfig;
@@ -0,0 +1,18 @@
1
+ export declare const getValue: (el: HTMLInputElement) => string | null;
2
+ export declare const insertValue: (el: HTMLInputElement, start: number, end: number, text: string, iframe: HTMLIFrameElement, noRecursion?: boolean) => ChildNode | undefined | null;
3
+ export declare const getTextBeforeCursor: () => string | undefined;
4
+ export declare const isInputOrTextAreaElement: (el: HTMLElement) => boolean;
5
+ export declare const isTextElement: (el: HTMLElement) => boolean;
6
+ export declare const setCaretPosition: (el: HTMLInputElement, pos: number, iframe: HTMLIFrameElement) => void;
7
+ export declare const getCaretPosition: (el: HTMLInputElement, iframe?: HTMLIFrameElement) => number;
8
+ export declare const getWindowSelection: (iframe?: HTMLIFrameElement) => Selection | null;
9
+ export declare const getContentEditableCaretCoords: (ctx: {
10
+ iframe: HTMLIFrameElement | undefined;
11
+ parent: Element | null;
12
+ windowParent?: boolean;
13
+ }) => {
14
+ left: number;
15
+ top: number;
16
+ bottom: number;
17
+ };
18
+ export declare const insertTextAtCaret: (element: HTMLInputElement, text: string) => void;
@@ -0,0 +1,115 @@
1
+ /* From: https://github.com/component/textarea-caret-position */
2
+ import { get, isNil, set } from '@libs-ui/utils';
3
+ // We'll copy the properties below into the mirror div.
4
+ // Note that some browsers, such as Firefox, do not concatenate properties
5
+ // into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),
6
+ // so we have to list every single property explicitly.
7
+ const properties = [
8
+ 'direction', // RTL support
9
+ 'boxSizing',
10
+ 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does
11
+ 'height',
12
+ 'overflowX',
13
+ 'overflowY', // copy the scrollbar for IE
14
+ 'borderTopWidth',
15
+ 'borderRightWidth',
16
+ 'borderBottomWidth',
17
+ 'borderLeftWidth',
18
+ 'borderStyle',
19
+ 'paddingTop',
20
+ 'paddingRight',
21
+ 'paddingBottom',
22
+ 'paddingLeft',
23
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/font
24
+ 'fontStyle',
25
+ 'fontVariant',
26
+ 'fontWeight',
27
+ 'fontStretch',
28
+ 'fontSize',
29
+ 'fontSizeAdjust',
30
+ 'lineHeight',
31
+ 'fontFamily',
32
+ 'textAlign',
33
+ 'textTransform',
34
+ 'textIndent',
35
+ 'textDecoration', // might not make a difference, but better be safe
36
+ 'letterSpacing',
37
+ 'wordSpacing',
38
+ 'tabSize',
39
+ 'MozTabSize',
40
+ ];
41
+ const isBrowser = typeof window !== 'undefined';
42
+ const isFirefox = isBrowser && get(window, 'mozInnerScreenX') !== null;
43
+ export const getCaretCoordinates = (element, position) => {
44
+ if (!isBrowser) {
45
+ throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');
46
+ }
47
+ // The mirror div will replicate the textarea's style
48
+ const div = document.createElement('div');
49
+ div.id = 'input-textarea-caret-position-mirror-div';
50
+ document.body.appendChild(div);
51
+ const style = div.style;
52
+ const computed = window.getComputedStyle ? window.getComputedStyle(element) : get(element, 'currentStyle'); // currentStyle for IE < 9
53
+ const isInput = element.nodeName === 'INPUT';
54
+ // Default textarea styles
55
+ style.whiteSpace = 'pre-wrap';
56
+ if (!isInput) {
57
+ style.wordBreak = 'break-word';
58
+ } // only for textarea-s
59
+ // Position off-screen
60
+ style.position = 'absolute'; // required to return coordinates properly
61
+ // Transfer the element's properties to the div
62
+ properties.forEach((prop) => {
63
+ if (isInput && prop === 'lineHeight') {
64
+ // Special case for <input>s because text is rendered centered and line height may be != height
65
+ if (computed.boxSizing !== 'border-box') {
66
+ style.lineHeight = computed.height;
67
+ return;
68
+ }
69
+ const height = parseInt(computed.height);
70
+ const outerHeight = parseInt(computed.paddingTop) + parseInt(computed.paddingBottom) + parseInt(computed.borderTopWidth) + parseInt(computed.borderBottomWidth);
71
+ const targetHeight = outerHeight + parseInt(computed.lineHeight);
72
+ if (height > targetHeight) {
73
+ style.lineHeight = height - outerHeight + 'px';
74
+ return;
75
+ }
76
+ if (height === targetHeight) {
77
+ style.lineHeight = computed.lineHeight;
78
+ return;
79
+ }
80
+ style.lineHeight = '0';
81
+ return;
82
+ }
83
+ set(style, prop, computed[prop]);
84
+ });
85
+ if (!isFirefox) {
86
+ style.overflow = 'hidden';
87
+ // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275
88
+ }
89
+ const value = get(element, 'value');
90
+ if (isFirefox && element.scrollHeight > parseInt(computed.height)) {
91
+ style.overflowY = 'scroll';
92
+ }
93
+ div.textContent = value.substring(0, position);
94
+ // The second special handling for input type="text" vs textarea:
95
+ // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037
96
+ if (isInput && !isNil(div.textContent)) {
97
+ div.textContent = div.textContent.replace(/\s/g, '\u00a0');
98
+ }
99
+ const span = document.createElement('span');
100
+ // Wrapping must be replicated *exactly*, including when a long word gets
101
+ // onto the next line, with whitespace at the end of the line before (#7).
102
+ // The *only* reliable way to do that is to copy the *entire* rest of the
103
+ // textarea's content into the <span> created at the caret position.
104
+ // For inputs, just '.' would be enough, but no need to bother.
105
+ span.textContent = value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all
106
+ div.appendChild(span);
107
+ const coordinates = {
108
+ top: span.offsetTop + parseInt(computed['borderTopWidth']),
109
+ left: span.offsetLeft + parseInt(computed['borderLeftWidth']),
110
+ height: parseInt(computed['lineHeight']),
111
+ };
112
+ document.body.removeChild(div);
113
+ return coordinates;
114
+ };
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZXQtY29vcmRzLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvbWVudGlvbi9zcmMvZGVmaW5lcy9jYXJldC1jb29yZHMuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUdoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCx1REFBdUQ7QUFDdkQsMEVBQTBFO0FBQzFFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxVQUFVLEdBQUc7SUFDakIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVztJQUNYLE9BQU8sRUFBRSxnR0FBZ0c7SUFDekcsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXLEVBQUUsNEJBQTRCO0lBRXpDLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixhQUFhO0lBRWIsWUFBWTtJQUNaLGNBQWM7SUFDZCxlQUFlO0lBQ2YsYUFBYTtJQUViLHdEQUF3RDtJQUN4RCxXQUFXO0lBQ1gsYUFBYTtJQUNiLFlBQVk7SUFDWixhQUFhO0lBQ2IsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osWUFBWTtJQUVaLFdBQVc7SUFDWCxlQUFlO0lBQ2YsWUFBWTtJQUNaLGdCQUFnQixFQUFFLGtEQUFrRDtJQUVwRSxlQUFlO0lBQ2YsYUFBYTtJQUViLFNBQVM7SUFDVCxZQUFZO0NBQ2IsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQztBQUNoRCxNQUFNLFNBQVMsR0FBRyxTQUFTLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9B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dHRwczovL2dpdGh1Yi5jb20vY29tcG9uZW50L3RleHRhcmVhLWNhcmV0LXBvc2l0aW9uICovXG5cbmltcG9ydCB7IFBhdGhPZiB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0LCBpc05pbCwgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuXG4vLyBXZSdsbCBjb3B5IHRoZSBwcm9wZXJ0aWVzIGJlbG93IGludG8gdGhlIG1pcnJvciBkaXYuXG4vLyBOb3RlIHRoYXQgc29tZSBicm93c2Vycywgc3VjaCBhcyBGaXJlZm94LCBkbyBub3QgY29uY2F0ZW5hdGUgcHJvcGVydGllc1xuLy8gaW50byB0aGVpciBzaG9ydGhhbmQgKGUuZy4gcGFkZGluZy10b3AsIHBhZGRpbmctYm90dG9tIGV0Yy4gLT4gcGFkZGluZyksXG4vLyBzbyB3ZSBoYXZlIHRvIGxpc3QgZXZlcnkgc2luZ2xlIHByb3BlcnR5IGV4cGxpY2l0bHkuXG5jb25zdCBwcm9wZXJ0aWVzID0gW1xuICAnZGlyZWN0aW9uJywgLy8gUlRMIHN1cHBvcnRcbiAgJ2JveFNpemluZycsXG4gICd3aWR0aCcsIC8vIG9uIENocm9tZSBhbmQgSUUsIGV4Y2x1ZGUgdGhlIHNjcm9sbGJhciwgc28gdGhlIG1pcnJvciBkaXYgd3JhcHMgZXhhY3RseSBhcyB0aGUgdGV4dGFyZWEgZG9lc1xuICAnaGVpZ2h0JyxcbiAgJ292ZXJmbG93WCcsXG4gICdvdmVyZmxvd1knLCAvLyBjb3B5IHRoZSBzY3JvbGxiYXIgZm9yIElFXG5cbiAgJ2JvcmRlclRvcFdpZHRoJyxcbiAgJ2JvcmRlclJpZ2h0V2lkdGgnLFxuICAnYm9yZGVyQm90dG9tV2lkdGgnLFxuICAnYm9yZGVyTGVmdFdpZHRoJyxcbiAgJ2JvcmRlclN0eWxlJyxcblxuICAncGFkZGluZ1RvcCcsXG4gICdwYWRkaW5nUmlnaHQnLFxuICAncGFkZGluZ0JvdHRvbScsXG4gICdwYWRkaW5nTGVmdCcsXG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZvbnRcbiAgJ2ZvbnRTdHlsZScsXG4gICdmb250VmFyaWFudCcsXG4gICdmb250V2VpZ2h0JyxcbiAgJ2ZvbnRTdHJldGNoJyxcbiAgJ2ZvbnRTaXplJyxcbiAgJ2ZvbnRTaXplQWRqdXN0JyxcbiAgJ2xpbmVIZWlnaHQnLFxuICAnZm9udEZhbWlseScsXG5cbiAgJ3RleHRBbGlnbicsXG4gICd0ZXh0VHJhbnNmb3JtJyxcbiAgJ3RleHRJbmRlbnQnLFxuICAndGV4dERlY29yYXRpb24nLCAvLyBtaWdodCBub3QgbWFrZSBhIGRpZmZlcmVuY2UsIGJ1dCBiZXR0ZXIgYmUgc2FmZVxuXG4gICdsZXR0ZXJTcGFjaW5nJyxcbiAgJ3dvcmRTcGFjaW5nJyxcblxuICAndGFiU2l6ZScsXG4gICdNb3pUYWJTaXplJyxcbl07XG5cbmNvbnN0IGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuY29uc3QgaXNGaXJlZm94ID0gaXNCcm93c2VyICYmIGdldCh3aW5kb3csICdtb3pJbm5lclNjcmVlblgnKSAhPT0gbnVsbDtcblxuZXhwb3J0IGNvbnN0IGdldENhcmV0Q29vcmRpbmF0ZXMgPSAoZWxlbWVudDogRWxlbWVudCwgcG9zaXRpb246IG51bWJlciB8IG51bGwpID0+IHtcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RleHRhcmVhLWNhcmV0LXBvc2l0aW9uI2dldENhcmV0Q29vcmRpbmF0ZXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGEgYnJvd3NlcicpO1xuICB9XG5cbiAgLy8gVGhlIG1pcnJvciBkaXYgd2lsbCByZXBsaWNhdGUgdGhlIHRleHRhcmVhJ3Mgc3R5bGVcbiAgY29uc3QgZGl2OiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pZCA9ICdpbnB1dC10ZXh0YXJlYS1jYXJldC1wb3NpdGlvbi1taXJyb3ItZGl2JztcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuXG4gIGNvbnN0IHN0eWxlID0gZGl2LnN0eWxlO1xuICBjb25zdCBjb21wdXRlZCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkgOiBnZXQoZWxlbWVudCwgJ2N1cnJlbnRTdHlsZScpOyAvLyBjdXJyZW50U3R5bGUgZm9yIElFIDwgOVxuICBjb25zdCBpc0lucHV0ID0gZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lOUFVUJztcblxuICAvLyBEZWZhdWx0IHRleHRhcmVhIHN0eWxlc1xuICBzdHlsZS53aGl0ZVNwYWNlID0gJ3ByZS13cmFwJztcbiAgaWYgKCFpc0lucHV0KSB7XG4gICAgc3R5bGUud29yZEJyZWFrID0gJ2JyZWFrLXdvcmQnO1xuICB9IC8vIG9ubHkgZm9yIHRleHRhcmVhLXNcblxuICAvLyBQb3NpdGlvbiBvZmYtc2NyZWVuXG4gIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsgLy8gcmVxdWlyZWQgdG8gcmV0dXJuIGNvb3JkaW5hdGVzIHByb3Blcmx5XG5cbiAgLy8gVHJhbnNmZXIgdGhlIGVsZW1lbnQncyBwcm9wZXJ0aWVzIHRvIHRoZSBkaXZcbiAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgaWYgKGlzSW5wdXQgJiYgcHJvcCA9PT0gJ2xpbmVIZWlnaHQnKSB7XG4gICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIDxpbnB1dD5zIGJlY2F1c2UgdGV4dCBpcyByZW5kZXJlZCBjZW50ZXJlZCBhbmQgbGluZSBoZWlnaHQgbWF5IGJlICE9IGhlaWdodFxuICAgICAgaWYgKGNvbXB1dGVkLmJveFNpemluZyAhPT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICAgIHN0eWxlLmxpbmVIZWlnaHQgPSBjb21wdXRlZC5oZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VJbnQoY29tcHV0ZWQuaGVpZ2h0KTtcbiAgICAgIGNvbnN0IG91dGVySGVpZ2h0ID0gcGFyc2VJbnQoY29tcHV0ZWQucGFkZGluZ1RvcCkgKyBwYXJzZUludChjb21wdXRlZC5wYWRkaW5nQm90dG9tKSArIHBhcnNlSW50KGNvbXB1dGVkLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlSW50KGNvbXB1dGVkLmJvcmRlckJvdHRvbVdpZHRoKTtcbiAgICAgIGNvbnN0IHRhcmdldEhlaWdodCA9IG91dGVySGVpZ2h0ICsgcGFyc2VJbnQoY29tcHV0ZWQubGluZUhlaWdodCk7XG5cbiAgICAgIGlmIChoZWlnaHQgPiB0YXJnZXRIZWlnaHQpIHtcbiAgICAgICAgc3R5bGUubGluZUhlaWdodCA9IGhlaWdodCAtIG91dGVySGVpZ2h0ICsgJ3B4JztcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaGVpZ2h0ID09PSB0YXJnZXRIZWlnaHQpIHtcbiAgICAgICAgc3R5bGUubGluZUhlaWdodCA9IGNvbXB1dGVkLmxpbmVIZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3R5bGUubGluZUhlaWdodCA9ICcwJztcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXQoc3R5bGUsIHByb3AgYXMgUGF0aE9mPENTU1N0eWxlRGVjbGFyYXRpb24+LCBjb21wdXRlZFtwcm9wXSk7XG4gIH0pO1xuXG4gIGlmICghaXNGaXJlZm94KSB7XG4gICAgc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAvLyBGaXJlZm94IGxpZXMgYWJvdXQgdGhlIG92ZXJmbG93IHByb3BlcnR5IGZvciB0ZXh0YXJlYXM6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDI3NVxuICB9XG4gIGNvbnN0IHZhbHVlID0gZ2V0KGVsZW1lbnQsICd2YWx1ZScpO1xuICBpZiAoaXNGaXJlZm94ICYmIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gcGFyc2VJbnQoY29tcHV0ZWQuaGVpZ2h0KSkge1xuICAgIHN0eWxlLm92ZXJmbG93WSA9ICdzY3JvbGwnO1xuICB9XG4gIGRpdi50ZXh0Q29udGVudCA9IHZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbik7XG4gIC8vIFRoZSBzZWNvbmQgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW5wdXQgdHlwZT1cInRleHRcIiB2cyB0ZXh0YXJlYTpcbiAgLy8gc3BhY2VzIG5lZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCBub24tYnJlYWtpbmcgc3BhY2VzIC0gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTM0MDIwMzUvMTI2OTAzN1xuICBpZiAoaXNJbnB1dCAmJiAhaXNOaWwoZGl2LnRleHRDb250ZW50KSkge1xuICAgIGRpdi50ZXh0Q29udGVudCA9IGRpdi50ZXh0Q29udGVudC5yZXBsYWNlKC9cXHMvZywgJ1xcdTAwYTAnKTtcbiAgfVxuICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gIC8vIFdyYXBwaW5nIG11c3QgYmUgcmVwbGljYXRlZCAqZXhhY3RseSosIGluY2x1ZGluZyB3aGVuIGEgbG9uZyB3b3JkIGdldHNcbiAgLy8gb250byB0aGUgbmV4dCBsaW5lLCB3aXRoIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBiZWZvcmUgKCM3KS5cbiAgLy8gVGhlICAqb25seSogcmVsaWFibGUgd2F5IHRvIGRvIHRoYXQgaXMgdG8gY29weSB0aGUgKmVudGlyZSogcmVzdCBvZiB0aGVcbiAgLy8gdGV4dGFyZWEncyBjb250ZW50IGludG8gdGhlIDxzcGFuPiBjcmVhdGVkIGF0IHRoZSBjYXJldCBwb3NpdGlvbi5cbiAgLy8gRm9yIGlucHV0cywganVzdCAnLicgd291bGQgYmUgZW5vdWdoLCBidXQgbm8gbmVlZCB0byBib3RoZXIuXG4gIHNwYW4udGV4dENvbnRlbnQgPSB2YWx1ZS5zdWJzdHJpbmcocG9zaXRpb24pIHx8ICcuJzsgLy8gfHwgYmVjYXVzZSBhIGNvbXBsZXRlbHkgZW1wdHkgZmF1eCBzcGFuIGRvZXNuJ3QgcmVuZGVyIGF0IGFsbFxuICBkaXYuYXBwZW5kQ2hpbGQoc3Bhbik7XG5cbiAgY29uc3QgY29vcmRpbmF0ZXMgPSB7XG4gICAgdG9wOiBzcGFuLm9mZnNldFRvcCArIHBhcnNlSW50KGNvbXB1dGVkWydib3JkZXJUb3BXaWR0aCddKSxcbiAgICBsZWZ0OiBzcGFuLm9mZnNldExlZnQgKyBwYXJzZUludChjb21wdXRlZFsnYm9yZGVyTGVmdFdpZHRoJ10pLFxuICAgIGhlaWdodDogcGFyc2VJbnQoY29tcHV0ZWRbJ2xpbmVIZWlnaHQnXSksXG4gIH07XG5cbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpO1xuXG4gIHJldHVybiBjb29yZGluYXRlcztcbn07XG4iXX0=
@@ -0,0 +1,26 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { deleteUnicode, get } from '@libs-ui/utils';
3
+ export const PATTERN_INSERT = '\ufeff';
4
+ export const buildTemplate = (value, id, feId) => {
5
+ 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>&nbsp;`;
6
+ };
7
+ export const DEFAULT_CONFIG = {
8
+ items: [],
9
+ triggerChar: '@',
10
+ labelKey: 'email',
11
+ allowSpace: true,
12
+ returnTrigger: false,
13
+ limitSpaceSearchQuery: 3,
14
+ mentionEventName: 'click',
15
+ mentionActionByEvent: (item, trigger) => console.log(item, trigger),
16
+ mentionSelect: (item) => `@${get(item, 'email')}`,
17
+ mentionFilter: (search, items) => {
18
+ const searchString = deleteUnicode(search.toLowerCase());
19
+ return items?.filter((item) => {
20
+ const name = deleteUnicode(get(item, 'name').toLowerCase());
21
+ const userName = deleteUnicode(get(item, 'username').toLowerCase());
22
+ return name.includes(searchString) || userName.includes(searchString);
23
+ });
24
+ },
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9kZWZpbmVzL3RlbXBsYXRlLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFVLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDL0UsT0FBTyw2TEFBNkwsRUFBRSxXQUFXLElBQUksWUFBWSxLQUFLLEtBQUssS0FBSyxlQUFlLENBQUM7QUFDbFEsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQjtJQUM1QyxLQUFLLEVBQUUsRUFBRTtJQUNULFdBQVcsRUFBRSxHQUFHO0lBQ2hCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixvQkFBb0IsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUNuRSxhQUFhLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRTtJQUNqRCxhQUFhLEVBQUUsQ0FBQyxNQUFjLEVBQUUsS0FBc0IsRUFBRSxFQUFFO1FBQ3hELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV6RCxPQUFPLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFNLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQU0sSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFFekUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IGRlbGV0ZVVuaWNvZGUsIGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IElNZW50aW9uQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9tZW50aW9uLmludGVyZmFjZSc7XG5leHBvcnQgY29uc3QgUEFUVEVSTl9JTlNFUlQgPSAnXFx1ZmVmZic7XG5cbmV4cG9ydCBjb25zdCBidWlsZFRlbXBsYXRlID0gKHZhbHVlOiBzdHJpbmcsIGlkOiBzdHJpbmcsIGZlSWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWNvbXBvbmVudHMtbWVudGlvbi1pdGVtXCIgc3R5bGU9XCJmb250LXdlaWdodDogNjAwOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7IGNvbG9yOiAjNzIzOUVBXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIiBpZD1cIiR7aWR9XCIgZmVJZD1cIiR7ZmVJZH1cIiB2YWx1ZT1cIiR7dmFsdWV9XCI+JHt2YWx1ZX08L3NwYW4+Jm5ic3A7YDtcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTkZJRzogSU1lbnRpb25Db25maWcgPSB7XG4gIGl0ZW1zOiBbXSxcbiAgdHJpZ2dlckNoYXI6ICdAJyxcbiAgbGFiZWxLZXk6ICdlbWFpbCcsXG4gIGFsbG93U3BhY2U6IHRydWUsXG4gIHJldHVyblRyaWdnZXI6IGZhbHNlLFxuICBsaW1pdFNwYWNlU2VhcmNoUXVlcnk6IDMsXG4gIG1lbnRpb25FdmVudE5hbWU6ICdjbGljaycsXG4gIG1lbnRpb25BY3Rpb25CeUV2ZW50OiAoaXRlbSwgdHJpZ2dlcikgPT4gY29uc29sZS5sb2coaXRlbSwgdHJpZ2dlciksXG4gIG1lbnRpb25TZWxlY3Q6IChpdGVtKSA9PiBgQCR7Z2V0KGl0ZW0sICdlbWFpbCcpfWAsXG4gIG1lbnRpb25GaWx0ZXI6IChzZWFyY2g6IHN0cmluZywgaXRlbXM/OiBBcnJheTx1bmtub3duPikgPT4ge1xuICAgIGNvbnN0IHNlYXJjaFN0cmluZyA9IGRlbGV0ZVVuaWNvZGUoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgcmV0dXJuIGl0ZW1zPy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBkZWxldGVVbmljb2RlKGdldDxhbnk+KGl0ZW0sICduYW1lJykudG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCB1c2VyTmFtZSA9IGRlbGV0ZVVuaWNvZGUoZ2V0PGFueT4oaXRlbSwgJ3VzZXJuYW1lJykudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgIHJldHVybiBuYW1lLmluY2x1ZGVzKHNlYXJjaFN0cmluZykgfHwgdXNlck5hbWUuaW5jbHVkZXMoc2VhcmNoU3RyaW5nKTtcbiAgICB9KTtcbiAgfSxcbn07XG4iXX0=
@@ -0,0 +1,279 @@
1
+ import { get } from '@libs-ui/utils';
2
+ import { PATTERN_INSERT } from './template.define';
3
+ const setValue = (el, value) => {
4
+ if (isInputOrTextAreaElement(el)) {
5
+ el.value = value;
6
+ return;
7
+ }
8
+ el.textContent = value;
9
+ };
10
+ export const getValue = (el) => {
11
+ return isInputOrTextAreaElement(el) ? el.value : el.textContent;
12
+ };
13
+ export const insertValue = (el, start, end, text, iframe, noRecursion = false) => {
14
+ if (isTextElement(el)) {
15
+ const val = getValue(el);
16
+ text = noRecursion ? PATTERN_INSERT : text;
17
+ setValue(el, val?.substring(0, start) + text + val?.substring(end, val.length));
18
+ setCaretPosition(el, start + text.length, iframe);
19
+ return;
20
+ }
21
+ if (noRecursion) {
22
+ return;
23
+ }
24
+ return insertValueToContentEditable(start, end, text);
25
+ };
26
+ const insertValueToContentEditable = (start, end, text) => {
27
+ if (!window.getSelection) {
28
+ return;
29
+ }
30
+ const sel = window.getSelection();
31
+ if (!sel || !sel.anchorNode || !sel.getRangeAt || !sel.rangeCount) {
32
+ return;
33
+ }
34
+ let range = sel.getRangeAt(0);
35
+ const anchorNode = sel.anchorNode;
36
+ const numberTextBeforeCursor = (getTextBeforeCursor() || '').length;
37
+ range.setStart(anchorNode, numberTextBeforeCursor - (end - start));
38
+ range.setEnd(anchorNode, numberTextBeforeCursor);
39
+ range.deleteContents();
40
+ // Range.createContextualFragment() would be useful here but is
41
+ // only relatively recently standardized and is not supported in
42
+ // some browsers (IE9, for one)
43
+ const el = document.createElement('SPAN');
44
+ el.innerHTML = text;
45
+ const frag = document.createDocumentFragment();
46
+ let node, lastNode, nodeHandlerEvent;
47
+ while ((node = el.firstChild)) {
48
+ if (get(node, 'getAttribute')) {
49
+ nodeHandlerEvent = node;
50
+ }
51
+ lastNode = frag.appendChild(node);
52
+ }
53
+ range.insertNode(frag);
54
+ // Preserve the selection
55
+ if (lastNode) {
56
+ range = range.cloneRange();
57
+ range.setStartAfter(lastNode);
58
+ range.collapse(true);
59
+ sel.removeAllRanges();
60
+ sel.addRange(range);
61
+ }
62
+ return nodeHandlerEvent;
63
+ };
64
+ export const getTextBeforeCursor = () => {
65
+ const sel = window.getSelection();
66
+ if (!sel || !sel.anchorNode) {
67
+ return undefined;
68
+ }
69
+ const range = sel.getRangeAt(0);
70
+ const anchorNode = sel.anchorNode;
71
+ const rangeNew = document.createRange();
72
+ rangeNew.selectNodeContents(anchorNode);
73
+ rangeNew.setEnd(range.startContainer, range.startOffset);
74
+ const fragNew = rangeNew.cloneContents();
75
+ const elmPrev = document.createElement('SPAN');
76
+ elmPrev.appendChild(fragNew);
77
+ return elmPrev.innerText;
78
+ };
79
+ export const isInputOrTextAreaElement = (el) => {
80
+ return el !== null && (el.nodeName === 'INPUT' || el.nodeName === 'TEXTAREA');
81
+ };
82
+ export const isTextElement = (el) => {
83
+ return el !== null && (el.nodeName === 'INPUT' || el.nodeName === 'TEXTAREA' || el.nodeName === '#text');
84
+ };
85
+ export const setCaretPosition = (el, pos, iframe) => {
86
+ if (isInputOrTextAreaElement(el) && el.selectionStart) {
87
+ el.focus();
88
+ el.setSelectionRange(pos, pos);
89
+ return;
90
+ }
91
+ const range = getDocument(iframe)?.createRange();
92
+ range?.setStart(el, pos);
93
+ range?.collapse(true);
94
+ const sel = getWindowSelection(iframe);
95
+ if (!sel) {
96
+ return;
97
+ }
98
+ sel.removeAllRanges();
99
+ if (range) {
100
+ sel.addRange(range);
101
+ }
102
+ };
103
+ export const getCaretPosition = (el, iframe) => {
104
+ if (isInputOrTextAreaElement(el)) {
105
+ const val = el.value;
106
+ return val.slice(0, el.selectionStart || undefined).length;
107
+ }
108
+ const selObj = getWindowSelection(iframe); //window.getSelection();
109
+ if (selObj && selObj.rangeCount > 0) {
110
+ const selRange = selObj.getRangeAt(0);
111
+ const preCaretRange = selRange.cloneRange();
112
+ preCaretRange.selectNodeContents(el);
113
+ preCaretRange.setEnd(selRange.endContainer, selRange.endOffset);
114
+ const position = preCaretRange.toString().length;
115
+ return position;
116
+ }
117
+ return 0;
118
+ };
119
+ // Based on ment.io functions...
120
+ //
121
+ const getDocument = (iframe) => {
122
+ if (!iframe) {
123
+ return document;
124
+ }
125
+ return iframe.contentWindow?.document;
126
+ };
127
+ export const getWindowSelection = (iframe) => {
128
+ if (!iframe) {
129
+ return window.getSelection();
130
+ }
131
+ return iframe.contentWindow?.getSelection() || null;
132
+ };
133
+ export const getContentEditableCaretCoords = (ctx) => {
134
+ const markerTextChar = '\ufeff';
135
+ const markerId = 'sel_' + new Date().getTime() + '_' + Math.random().toString().substring(2);
136
+ const doc = getDocument(ctx.iframe);
137
+ const sel = getWindowSelection(ctx.iframe);
138
+ if (!sel) {
139
+ return {
140
+ left: 0,
141
+ top: 0,
142
+ bottom: 0,
143
+ };
144
+ }
145
+ const prevRange = sel.getRangeAt(0);
146
+ // create new range and set postion using prevRange
147
+ const range = doc.createRange();
148
+ const anchorNode = sel.anchorNode;
149
+ range.setStart(anchorNode, prevRange.startOffset);
150
+ range.setEnd(anchorNode, prevRange.startOffset);
151
+ range.collapse(false);
152
+ // Create the marker element containing a single invisible character
153
+ // using DOM methods and insert it at the position in the range
154
+ const markerEl = doc.createElement('span');
155
+ markerEl.id = markerId;
156
+ markerEl.appendChild(doc.createTextNode(markerTextChar));
157
+ range.insertNode(markerEl);
158
+ sel.removeAllRanges();
159
+ sel.addRange(prevRange);
160
+ const coordinates = {
161
+ left: 0,
162
+ top: markerEl.offsetHeight,
163
+ bottom: -1,
164
+ };
165
+ localToRelativeCoordinates(ctx, markerEl, coordinates);
166
+ markerEl.parentNode?.removeChild(markerEl);
167
+ const widthScreen = (ctx.windowParent ? window.parent.innerWidth : window.innerWidth) || document.documentElement.clientWidth || document.body.clientWidth;
168
+ if (coordinates.left + 315 > widthScreen) {
169
+ coordinates.left = coordinates.left - 300;
170
+ }
171
+ const heightScreen = (ctx.windowParent ? window.parent.innerHeight : window.innerHeight) || document.documentElement.clientHeight || document.body.clientHeight;
172
+ if (coordinates.top + 190 > heightScreen) {
173
+ coordinates.bottom = heightScreen - coordinates.top + 15;
174
+ coordinates.top = -1;
175
+ }
176
+ return coordinates;
177
+ };
178
+ const localToRelativeCoordinates = (ctx, element, coordinates) => {
179
+ let obj = element;
180
+ let iframe = ctx ? ctx.iframe : null;
181
+ while (obj) {
182
+ if (ctx.parent !== null && ctx.parent === obj) {
183
+ break;
184
+ }
185
+ coordinates.left += obj.offsetLeft + obj.clientLeft;
186
+ coordinates.top += obj.offsetTop + obj.clientTop;
187
+ obj = obj.offsetParent;
188
+ if (!obj && iframe) {
189
+ obj = iframe;
190
+ iframe = null;
191
+ }
192
+ }
193
+ obj = element;
194
+ iframe = ctx ? ctx.iframe : null;
195
+ while ((obj !== getDocument(undefined)?.body || ctx.windowParent) && obj !== null) {
196
+ if (ctx.parent !== null && ctx.parent === obj) {
197
+ break;
198
+ }
199
+ if (obj.scrollTop && obj.scrollTop > 0) {
200
+ coordinates.top -= obj.scrollTop;
201
+ }
202
+ if (obj.scrollLeft && obj.scrollLeft > 0) {
203
+ coordinates.left -= obj.scrollLeft;
204
+ }
205
+ obj = ctx.windowParent ? obj.offsetParent : obj.parentNode;
206
+ if (!obj && iframe) {
207
+ obj = iframe;
208
+ iframe = null;
209
+ }
210
+ }
211
+ };
212
+ const setEndOfContentEditable = (contentEditableElement) => {
213
+ if (document.createRange) {
214
+ const range = document.createRange(); //Create a range (a range is a like the selection but invisible)
215
+ const selection = window.getSelection(); //get the selection object (allows you to change selection)
216
+ range.selectNodeContents(contentEditableElement); //Select the entire contents of the element with the range
217
+ range.collapse(false); //collapse the range to the end point. false means collapse to end rather than the start
218
+ selection?.removeAllRanges(); //remove any selections already made
219
+ selection?.addRange(range); //make the range you have just created the visible selection
220
+ }
221
+ return;
222
+ };
223
+ export const insertTextAtCaret = (element, text) => {
224
+ if (window.getSelection) {
225
+ if (!elementContainsSelection(element)) {
226
+ setEndOfContentEditable(element);
227
+ insertTextAtCaret(element, text);
228
+ return;
229
+ }
230
+ const sel = window.getSelection();
231
+ if (sel?.getRangeAt && sel.rangeCount) {
232
+ let range = sel.getRangeAt(0);
233
+ const el = document.createElement('SPAN');
234
+ range.deleteContents();
235
+ el.innerHTML = text;
236
+ const frag = document.createDocumentFragment();
237
+ let node;
238
+ let lastNode;
239
+ while ((node = el.firstChild)) {
240
+ lastNode = frag.appendChild(node);
241
+ }
242
+ range.insertNode(frag);
243
+ if (lastNode) {
244
+ range = range.cloneRange();
245
+ range.setStartAfter(lastNode);
246
+ range.collapse(true);
247
+ sel.removeAllRanges();
248
+ sel.addRange(range);
249
+ }
250
+ }
251
+ }
252
+ };
253
+ const elementContainsSelection = (el) => {
254
+ if (!window.getSelection) {
255
+ return false;
256
+ }
257
+ const sel = window.getSelection();
258
+ if (sel && sel.rangeCount > 0) {
259
+ for (let i = 0; i < sel.rangeCount; ++i) {
260
+ if (!isOrContains(sel.getRangeAt(i).commonAncestorContainer, el)) {
261
+ return false;
262
+ }
263
+ }
264
+ return true;
265
+ }
266
+ return false;
267
+ };
268
+ const isOrContains = (node, container) => {
269
+ while (node) {
270
+ if (node === container) {
271
+ return true;
272
+ }
273
+ if (node.parentNode) {
274
+ node = node.parentNode;
275
+ }
276
+ }
277
+ return false;
278
+ };
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9kZWZpbmVzL3V0aWxzLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBb0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUN2RCxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFakIsT0FBTztJQUNULENBQUM7SUFDRCxFQUFFLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEVBQUU7SUFDL0MsT0FBTyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLE1BQXlCLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBZ0MsRUFBRTtJQUMxSyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQyxR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VUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFBBVFRFUk5fSU5TRVJUIH0gZnJvbSAnLi90ZW1wbGF0ZS5kZWZpbmUnO1xuXG5jb25zdCBzZXRWYWx1ZSA9IChlbDogSFRNTElucHV0RWxlbWVudCwgdmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSkge1xuICAgIGVsLnZhbHVlID0gdmFsdWU7XG5cbiAgICByZXR1cm47XG4gIH1cbiAgZWwudGV4dENvbnRlbnQgPSB2YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZSA9IChlbDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICByZXR1cm4gaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSA/IGVsLnZhbHVlIDogZWwudGV4dENvbnRlbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0VmFsdWUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQsIG5vUmVjdXJzaW9uID0gZmFsc2UpOiBDaGlsZE5vZGUgfCB1bmRlZmluZWQgfCBudWxsID0+IHtcbiAgaWYgKGlzVGV4dEVsZW1lbnQoZWwpKSB7XG4gICAgY29uc3QgdmFsID0gZ2V0VmFsdWUoZWwpO1xuXG4gICAgdGV4dCA9IG5vUmVjdXJzaW9uID8gUEFUVEVSTl9JTlNFUlQgOiB0ZXh0O1xuICAgIHNldFZhbHVlKGVsLCB2YWw/LnN1YnN0cmluZygwLCBzdGFydCkgKyB0ZXh0ICsgdmFsPy5zdWJzdHJpbmcoZW5kLCB2YWwubGVuZ3RoKSk7XG4gICAgc2V0Q2FyZXRQb3NpdGlvbihlbCwgc3RhcnQgKyB0ZXh0Lmxlbmd0aCwgaWZyYW1lKTtcblxuICAgIHJldHVybjtcbiAgfVxuICBpZiAobm9SZWN1cnNpb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gaW5zZXJ0VmFsdWVUb0NvbnRlbnRFZGl0YWJsZShzdGFydCwgZW5kLCB0ZXh0KTtcbn07XG5cbmNvbnN0IGluc2VydFZhbHVlVG9Db250ZW50RWRpdGFibGUgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IENoaWxkTm9kZSB8IHVuZGVmaW5lZCB8IG51bGwgPT4ge1xuICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gIGlmICghc2VsIHx8ICFzZWwuYW5jaG9yTm9kZSB8fCAhc2VsLmdldFJhbmdlQXQgfHwgIXNlbC5yYW5nZUNvdW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7XG4gIGNvbnN0IG51bWJlclRleHRCZWZvcmVDdXJzb3IgPSAoZ2V0VGV4dEJlZm9yZUN1cnNvcigpIHx8ICcnKS5sZW5ndGg7XG5cbiAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgbnVtYmVyVGV4dEJlZm9yZUN1cnNvciAtIChlbmQgLSBzdGFydCkpO1xuICByYW5nZS5zZXRFbmQoYW5jaG9yTm9kZSwgbnVtYmVyVGV4dEJlZm9yZUN1cnNvcik7XG4gIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFJhbmdlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCgpIHdvdWxkIGJlIHVzZWZ1bCBoZXJlIGJ1dCBpc1xuICAvLyBvbmx5IHJlbGF0aXZlbHkgcmVjZW50bHkgc3RhbmRhcmRpemVkIGFuZCBpcyBub3Qgc3VwcG9ydGVkIGluXG4gIC8vIHNvbWUgYnJvd3NlcnMgKElFOSwgZm9yIG9uZSlcbiAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7XG5cbiAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgY29uc3QgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgbGV0IG5vZGUsIGxhc3ROb2RlLCBub2RlSGFuZGxlckV2ZW50O1xuXG4gIHdoaWxlICgobm9kZSA9IGVsLmZpcnN0Q2hpbGQpKSB7XG4gICAgaWYgKGdldChub2RlLCAnZ2V0QXR0cmlidXRlJykpIHtcbiAgICAgIG5vZGVIYW5kbGVyRXZlbnQgPSBub2RlO1xuICAgIH1cblxuICAgIGxhc3ROb2RlID0gZnJhZy5hcHBlbmRDaGlsZChub2RlKTtcbiAgfVxuICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gIC8vIFByZXNlcnZlIHRoZSBzZWxlY3Rpb25cbiAgaWYgKGxhc3ROb2RlKSB7XG4gICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihsYXN0Tm9kZSk7XG4gICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gIH1cblxuICByZXR1cm4gbm9kZUhhbmRsZXJFdmVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0QmVmb3JlQ3Vyc29yID0gKCkgPT4ge1xuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKCFzZWwgfHwgIXNlbC5hbmNob3JOb2RlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7XG4gIGNvbnN0IHJhbmdlTmV3ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblxuICByYW5nZU5ldy5zZWxlY3ROb2RlQ29udGVudHMoYW5jaG9yTm9kZSk7XG4gIHJhbmdlTmV3LnNldEVuZChyYW5nZS5zdGFydENvbnRhaW5lciwgcmFuZ2Uuc3RhcnRPZmZzZXQpO1xuXG4gIGNvbnN0IGZyYWdOZXcgPSByYW5nZU5ldy5jbG9uZUNvbnRlbnRzKCk7XG4gIGNvbnN0IGVsbVByZXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7XG5cbiAgZWxtUHJldi5hcHBlbmRDaGlsZChmcmFnTmV3KTtcblxuICByZXR1cm4gZWxtUHJldi5pbm5lclRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZWwgIT09IG51bGwgJiYgKGVsLm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGVsLm5vZGVOYW1lID09PSAnVEVYVEFSRUEnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1RleHRFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZWwgIT09IG51bGwgJiYgKGVsLm5vZGVOYW1lID09PSAnSU5QVVQnIHx8IGVsLm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8IGVsLm5vZGVOYW1lID09PSAnI3RleHQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDYXJldFBvc2l0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50LCBwb3M6IG51bWJlciwgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSAmJiBlbC5zZWxlY3Rpb25TdGFydCkge1xuICAgIGVsLmZvY3VzKCk7XG4gICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJhbmdlID0gZ2V0RG9jdW1lbnQoaWZyYW1lKT8uY3JlYXRlUmFuZ2UoKTtcblxuICByYW5nZT8uc2V0U3RhcnQoZWwsIHBvcyk7XG4gIHJhbmdlPy5jb2xsYXBzZSh0cnVlKTtcbiAgY29uc3Qgc2VsID0gZ2V0V2luZG93U2VsZWN0aW9uKGlmcmFtZSk7XG5cbiAgaWYgKCFzZWwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICBpZiAocmFuZ2UpIHtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2FyZXRQb3NpdGlvbiA9IChlbDogSFRNTElucHV0RWxlbWVudCwgaWZyYW1lPzogSFRNTElGcmFtZUVsZW1lbnQpOiBudW1iZXIgPT4ge1xuICBpZiAoaXNJbnB1dE9yVGV4dEFyZWFFbGVtZW50KGVsKSkge1xuICAgIGNvbnN0IHZhbCA9IGVsLnZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbC5zbGljZSgwLCBlbC5zZWxlY3Rpb25TdGFydCB8fCB1bmRlZmluZWQpLmxlbmd0aDtcbiAgfVxuICBjb25zdCBzZWxPYmogPSBnZXRXaW5kb3dTZWxlY3Rpb24oaWZyYW1lKTsgLy93aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbE9iaiAmJiBzZWxPYmoucmFuZ2VDb3VudCA+IDApIHtcbiAgICBjb25zdCBzZWxSYW5nZSA9IHNlbE9iai5nZXRSYW5nZUF0KDApO1xuICAgIGNvbnN0IHByZUNhcmV0UmFuZ2UgPSBzZWxSYW5nZS5jbG9uZVJhbmdlKCk7XG5cbiAgICBwcmVDYXJldFJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbCk7XG4gICAgcHJlQ2FyZXRSYW5nZS5zZXRFbmQoc2VsUmFuZ2UuZW5kQ29udGFpbmVyLCBzZWxSYW5nZS5lbmRPZmZzZXQpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gcHJlQ2FyZXRSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbi8vIEJhc2VkIG9uIG1lbnQuaW8gZnVuY3Rpb25zLi4uXG4vL1xuXG5jb25zdCBnZXREb2N1bWVudCA9IChpZnJhbWU/OiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICBpZiAoIWlmcmFtZSkge1xuICAgIHJldHVybiBkb2N1bWVudDtcbiAgfVxuXG4gIHJldHVybiBpZnJhbWUuY29udGVudFdpbmRvdz8uZG9jdW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0V2luZG93U2VsZWN0aW9uID0gKGlmcmFtZT86IEhUTUxJRnJhbWVFbGVtZW50KTogU2VsZWN0aW9uIHwgbnVsbCA9PiB7XG4gIGlmICghaWZyYW1lKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHJldHVybiBpZnJhbWUuY29udGVudFdpbmRvdz8uZ2V0U2VsZWN0aW9uKCkgfHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50RWRpdGFibGVDYXJldENvb3JkcyA9IChjdHg6IHsgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZDsgcGFyZW50OiBFbGVtZW50IHwgbnVsbDsgd2luZG93UGFyZW50PzogYm9vbGVhbiB9KSA9PiB7XG4gIGNvbnN0IG1hcmtlclRleHRDaGFyID0gJ1xcdWZlZmYnO1xuICBjb25zdCBtYXJrZXJJZCA9ICdzZWxfJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnN1YnN0cmluZygyKTtcbiAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoY3R4LmlmcmFtZSkgYXMgRG9jdW1lbnQ7XG4gIGNvbnN0IHNlbCA9IGdldFdpbmRvd1NlbGVjdGlvbihjdHguaWZyYW1lKSBhcyBTZWxlY3Rpb247XG5cbiAgaWYgKCFzZWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICB9O1xuICB9XG4gIGNvbnN0IHByZXZSYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuXG4gIC8vIGNyZWF0ZSBuZXcgcmFuZ2UgYW5kIHNldCBwb3N0aW9uIHVzaW5nIHByZXZSYW5nZVxuICBjb25zdCByYW5nZSA9IGRvYy5jcmVhdGVSYW5nZSgpO1xuICBjb25zdCBhbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGUgYXMgTm9kZTtcbiAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgcHJldlJhbmdlLnN0YXJ0T2Zmc2V0KTtcbiAgcmFuZ2Uuc2V0RW5kKGFuY2hvck5vZGUsIHByZXZSYW5nZS5zdGFydE9mZnNldCk7XG4gIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcblxuICAvLyBDcmVhdGUgdGhlIG1hcmtlciBlbGVtZW50IGNvbnRhaW5pbmcgYSBzaW5nbGUgaW52aXNpYmxlIGNoYXJhY3RlclxuICAvLyB1c2luZyBET00gbWV0aG9kcyBhbmQgaW5zZXJ0IGl0IGF0IHRoZSBwb3NpdGlvbiBpbiB0aGUgcmFuZ2VcbiAgY29uc3QgbWFya2VyRWwgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gIG1hcmtlckVsLmlkID0gbWFya2VySWQ7XG4gIG1hcmtlckVsLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZShtYXJrZXJUZXh0Q2hhcikpO1xuICByYW5nZS5pbnNlcnROb2RlKG1hcmtlckVsKTtcbiAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWwuYWRkUmFuZ2UocHJldlJhbmdlKTtcblxuICBjb25zdCBjb29yZGluYXRlcyA9IHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogbWFya2VyRWwub2Zmc2V0SGVpZ2h0LFxuICAgIGJvdHRvbTogLTEsXG4gIH07XG5cbiAgbG9jYWxUb1JlbGF0aXZlQ29vcmRpbmF0ZXMoY3R4LCBtYXJrZXJFbCwgY29vcmRpbmF0ZXMpO1xuICBtYXJrZXJFbC5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChtYXJrZXJFbCk7XG4gIGNvbnN0IHdpZHRoU2NyZWVuID0gKGN0eC53aW5kb3dQYXJlbnQgPyB3aW5kb3cucGFyZW50LmlubmVyV2lkdGggOiB3aW5kb3cuaW5uZXJXaWR0aCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XG5cbiAgaWYgKGNvb3JkaW5hdGVzLmxlZnQgKyAzMTUgPiB3aWR0aFNjcmVlbikge1xuICAgIGNvb3JkaW5hdGVzLmxlZnQgPSBjb29yZGluYXRlcy5sZWZ0IC0gMzAwO1xuICB9XG4gIGNvbnN0IGhlaWdodFNjcmVlbiA9IChjdHgud2luZG93UGFyZW50ID8gd2luZG93LnBhcmVudC5pbm5lckhlaWdodCA6IHdpbmRvdy5pbm5lckhlaWdodCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDtcblxuICBpZiAoY29vcmRpbmF0ZXMudG9wICsgMTkwID4gaGVpZ2h0U2NyZWVuKSB7XG4gICAgY29vcmRpbmF0ZXMuYm90dG9tID0gaGVpZ2h0U2NyZWVuIC0gY29vcmRpbmF0ZXMudG9wICsgMTU7XG4gICAgY29vcmRpbmF0ZXMudG9wID0gLTE7XG4gIH1cblxuICByZXR1cm4gY29vcmRpbmF0ZXM7XG59O1xuXG5jb25zdCBsb2NhbFRvUmVsYXRpdmVDb29yZGluYXRlcyA9IChjdHg6IHsgaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZDsgcGFyZW50OiBFbGVtZW50IHwgbnVsbDsgd2luZG93UGFyZW50PzogYm9vbGVhbiB9LCBlbGVtZW50OiBFbGVtZW50LCBjb29yZGluYXRlczogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyOyBib3R0b206IG51bWJlciB9KSA9PiB7XG4gIGxldCBvYmogPSA8SFRNTEVsZW1lbnQ+ZWxlbWVudDtcbiAgbGV0IGlmcmFtZSA9IGN0eCA/IGN0eC5pZnJhbWUgOiBudWxsO1xuXG4gIHdoaWxlIChvYmopIHtcbiAgICBpZiAoY3R4LnBhcmVudCAhPT0gbnVsbCAmJiBjdHgucGFyZW50ID09PSBvYmopIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb29yZGluYXRlcy5sZWZ0ICs9IG9iai5vZmZzZXRMZWZ0ICsgb2JqLmNsaWVudExlZnQ7XG4gICAgY29vcmRpbmF0ZXMudG9wICs9IG9iai5vZmZzZXRUb3AgKyBvYmouY2xpZW50VG9wO1xuICAgIG9iaiA9IDxIVE1MRWxlbWVudD5vYmoub2Zmc2V0UGFyZW50O1xuICAgIGlmICghb2JqICYmIGlmcmFtZSkge1xuICAgICAgb2JqID0gaWZyYW1lO1xuICAgICAgaWZyYW1lID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgb2JqID0gPEhUTUxFbGVtZW50PmVsZW1lbnQ7XG4gIGlmcmFtZSA9IGN0eCA/IGN0eC5pZnJhbWUgOiBudWxsO1xuICB3aGlsZSAoKG9iaiAhPT0gZ2V0RG9jdW1lbnQodW5kZWZpbmVkKT8uYm9keSB8fCBjdHgud2luZG93UGFyZW50KSAmJiBvYmogIT09IG51bGwpIHtcbiAgICBpZiAoY3R4LnBhcmVudCAhPT0gbnVsbCAmJiBjdHgucGFyZW50ID09PSBvYmopIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAob2JqLnNjcm9sbFRvcCAmJiBvYmouc2Nyb2xsVG9wID4gMCkge1xuICAgICAgY29vcmRpbmF0ZXMudG9wIC09IG9iai5zY3JvbGxUb3A7XG4gICAgfVxuICAgIGlmIChvYmouc2Nyb2xsTGVmdCAmJiBvYmouc2Nyb2xsTGVmdCA+IDApIHtcbiAgICAgIGNvb3JkaW5hdGVzLmxlZnQgLT0gb2JqLnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIG9iaiA9IGN0eC53aW5kb3dQYXJlbnQgPyA8SFRNTEVsZW1lbnQ+b2JqLm9mZnNldFBhcmVudCA6IDxIVE1MRWxlbWVudD5vYmoucGFyZW50Tm9kZTtcbiAgICBpZiAoIW9iaiAmJiBpZnJhbWUpIHtcbiAgICAgIG9iaiA9IGlmcmFtZTtcbiAgICAgIGlmcmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBzZXRFbmRPZkNvbnRlbnRFZGl0YWJsZSA9IChjb250ZW50RWRpdGFibGVFbGVtZW50OiBOb2RlKSA9PiB7XG4gIGlmIChkb2N1bWVudC5jcmVhdGVSYW5nZSkge1xuICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsgLy9DcmVhdGUgYSByYW5nZSAoYSByYW5nZSBpcyBhIGxpa2UgdGhlIHNlbGVjdGlvbiBidXQgaW52aXNpYmxlKVxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsgLy9nZXQgdGhlIHNlbGVjdGlvbiBvYmplY3QgKGFsbG93cyB5b3UgdG8gY2hhbmdlIHNlbGVjdGlvbilcblxuICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhjb250ZW50RWRpdGFibGVFbGVtZW50KTsgLy9TZWxlY3QgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZWxlbWVudCB3aXRoIHRoZSByYW5nZVxuICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsgLy9jb2xsYXBzZSB0aGUgcmFuZ2UgdG8gdGhlIGVuZCBwb2ludC4gZmFsc2UgbWVhbnMgY29sbGFwc2UgdG8gZW5kIHJhdGhlciB0aGFuIHRoZSBzdGFydFxuICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7IC8vcmVtb3ZlIGFueSBzZWxlY3Rpb25zIGFscmVhZHkgbWFkZVxuICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpOyAvL21ha2UgdGhlIHJhbmdlIHlvdSBoYXZlIGp1c3QgY3JlYXRlZCB0aGUgdmlzaWJsZSBzZWxlY3Rpb25cbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUZXh0QXRDYXJldCA9IChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCB0ZXh0OiBzdHJpbmcpID0+IHtcbiAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICBpZiAoIWVsZW1lbnRDb250YWluc1NlbGVjdGlvbihlbGVtZW50KSkge1xuICAgICAgc2V0RW5kT2ZDb250ZW50RWRpdGFibGUoZWxlbWVudCk7XG4gICAgICBpbnNlcnRUZXh0QXRDYXJldChlbGVtZW50LCB0ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsPy5nZXRSYW5nZUF0ICYmIHNlbC5yYW5nZUNvdW50KSB7XG4gICAgICBsZXQgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnU1BBTicpO1xuXG4gICAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgICAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgICAgIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBsZXQgbm9kZTogTm9kZSB8IG51bGw7XG4gICAgICBsZXQgbGFzdE5vZGUhOiBOb2RlO1xuXG4gICAgICB3aGlsZSAoKG5vZGUgPSBlbC5maXJzdENoaWxkKSkge1xuICAgICAgICBsYXN0Tm9kZSA9IGZyYWcuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICB9XG4gICAgICByYW5nZS5pbnNlcnROb2RlKGZyYWcpO1xuXG4gICAgICBpZiAobGFzdE5vZGUpIHtcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIobGFzdE5vZGUpO1xuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWxlbWVudENvbnRhaW5zU2VsZWN0aW9uID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKHNlbCAmJiBzZWwucmFuZ2VDb3VudCA+IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbC5yYW5nZUNvdW50OyArK2kpIHtcbiAgICAgIGlmICghaXNPckNvbnRhaW5zKHNlbC5nZXRSYW5nZUF0KGkpLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBlbCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNPckNvbnRhaW5zID0gKG5vZGU6IE5vZGUsIGNvbnRhaW5lcjogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlID09PSBjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './mention.directive';
2
+ export * from './interfaces/mention.interface';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWVudGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL21lbnRpb24uaW50ZXJmYWNlJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL21lbnRpb24vc3JjL2ludGVyZmFjZXMvbWVudGlvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElNZW50aW9uQ29uZmlnIGV4dGVuZHMgSU1lbnRpb25JdGVtIHtcbiAgZGlzYWJsZVN0eWxlPzogYm9vbGVhbjtcbiAgaWZyYW1lPzogc3RyaW5nO1xuICBtZW50aW9uPzogQXJyYXk8SU1lbnRpb25JdGVtPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWVudGlvbkl0ZW0ge1xuICB0cmlnZ2VyQ2hhcj86IHN0cmluZztcblxuICAvLyBvcHRpb24gdG8gc3BlY2lmeSB0aGUgZmllbGQgaW4gdGhlIG9iamVjdHMgdG8gYmUgdXNlZCBhcyB0aGUgaXRlbSBsYWJlbFxuICBsYWJlbEtleT86IHN0cmluZztcblxuICAvLyBvcHRpb24gdG8gbGltaXQgdGhlIG51bWJlciBvZiBpdGVtcyBzaG93biBpbiB0aGUgcG9wLXVwIG1lbnVcbiAgZGlzYWJsZVNvcnQ/OiBib29sZWFuO1xuXG4gIC8vIG9wdGlvbiB0byBkaXNhYmxlIGludGVybmFsIGZpbHRlcmluZy4gY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgZnVsbCBsaXN0IHJldHVybmVkXG4gIC8vIGZyb20gYW4gYXN5bmMgb3BlcmF0aW9uXG4gIGRpc2FibGVTZWFyY2g/OiBib29sZWFuO1xuXG4gIC8vIGRpc3BsYXkgbWVudSBhYm92ZSB0ZXh0IGluc3RlYWQgb2YgYmVsb3dcbiAgZHJvcFVwPzogYm9vbGVhbjtcblxuICAvLyB3aGV0aGVyIHRvIGFsbG93IHNwYWNlIHdoaWxlIG1lbnRpb25pbmcgb3Igbm90XG4gIGFsbG93U3BhY2U/OiBib29sZWFuO1xuICBsaW1pdFNwYWNlU2VhcmNoUXVlcnk/OiBudW1iZXI7XG5cbiAgLy8gb3B0aW9uIHRvIGluY2x1ZGUgdGhlIHRyaWdnZXIgY2hhciBpbiB0aGUgc2VhcmNoVGVybSBldmVudFxuICByZXR1cm5UcmlnZ2VyPzogYm9vbGVhbjtcblxuICAvLyBvcHRpb25hbCBmdW5jdGlvbiB0byBmb3JtYXQgdGhlIHNlbGVjdGVkIGl0ZW0gYmVmb3JlIGluc2VydGluZyB0aGUgdGV4dFxuICBtZW50aW9uU2VsZWN0PzogKGl0ZW06IHVua25vd24sIHRyaWdnZXJDaGFyPzogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbiAgLy8gb3B0aW9uYWwgZnVuY3Rpb24gdG8gY3VzdG9taXplIHRoZSBzZWFyY2ggaW1wbGVtZW50YXRpb25cbiAgbWVudGlvbkZpbHRlcj86IChzZWFyY2hTdHJpbmc6IHN0cmluZywgaXRlbXM/OiBBcnJheTx1bmtub3duPikgPT4gQXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgbWVudGlvbkV2ZW50TmFtZT86ICdjbGljaycgfCAnbW91c2VlbnRlcic7XG4gIG1lbnRpb25BY3Rpb25CeUV2ZW50PzogKGl0ZW06IHVua25vd24sIHRyaWdnZXJDaGFycz86IHN0cmluZykgPT4gdm9pZDtcbiAgaXRlbXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4gIHpJbmRleD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZUluc2VydCB7XG4gIGVsZW1lbnRTcGFuOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgaXRlbT86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHRyaWdnZXJDaGFyPzogc3RyaW5nO1xuICBtYW51YWxBZGQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNZW50aW9uSW5zZXJ0IHtcbiAgZGF0YToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZmVJZDogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGxlbmd0aEtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNZW50aW9uRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBhZGRNZW50aW9uOiAoaW5wdXRFdmVudDogYm9vbGVhbikgPT4gdm9pZDtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLWlucHV0cy1tZW50aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9tZW50aW9uL3NyYy9saWJzLXVpLWNvbXBvbmVudHMtaW5wdXRzLW1lbnRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=