@projectcor/maia-components 2.11.41 → 2.11.42-0

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.
Files changed (81) hide show
  1. package/lib/App.js +22 -11
  2. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +38 -0
  3. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +184 -0
  4. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +39 -0
  5. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +432 -0
  6. package/lib/components/atoms/ContextMentionChip/index.js +4 -0
  7. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +225 -0
  8. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +6 -0
  9. package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
  10. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +282 -0
  11. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +148 -0
  12. package/lib/components/atoms/ContextMentionItem/index.js +2 -0
  13. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +160 -0
  14. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +79 -0
  15. package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
  16. package/lib/components/atoms/EntitySelector/EntitySelector.js +47 -3
  17. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +3 -3
  18. package/lib/components/atoms/MAIAInput/MAIAInput.js +246 -321
  19. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +269 -0
  20. package/lib/components/atoms/MAIAInput/styles.js +75 -46
  21. package/lib/components/atoms/icons/NotionIcon.js +36 -0
  22. package/lib/components/atoms/icons/SubtaskIcon.js +36 -0
  23. package/lib/components/atoms/icons/index.js +2 -1
  24. package/lib/components/index.js +2 -1
  25. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +8 -4
  26. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +31 -3
  27. package/lib/components/molecules/ChatAIMessages/newStyles.js +5 -2
  28. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -6
  29. package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -4
  30. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +68 -0
  31. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
  32. package/lib/components/molecules/ContextMentionInput/index.js +2 -0
  33. package/lib/components/molecules/Sidebar/Sidebar.js +9 -5
  34. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +6 -2
  35. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +5 -2
  36. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +6 -3
  37. package/lib/constants/config.js +3 -1
  38. package/lib/constants/taskLinkIcon.js +6 -0
  39. package/lib/context/cor-user.js +1 -1
  40. package/lib/dev/DevContextMentionInput.js +65 -0
  41. package/lib/dev/Providers.js +11 -6
  42. package/lib/hooks/useCaretPosition.js +35 -0
  43. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  44. package/lib/hooks/useChatManager/useChatManager.js +21 -11
  45. package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
  46. package/lib/hooks/useChatMessages/useChatMessages.js +30 -14
  47. package/lib/hooks/useClientSearch.js +3 -2
  48. package/lib/hooks/useContextMentions.js +270 -0
  49. package/lib/hooks/useEntitySearch.js +1097 -0
  50. package/lib/hooks/useEvent.js +6 -1
  51. package/lib/hooks/useMentionAllowedTypes.js +103 -0
  52. package/lib/hooks/useMentionPopover.js +334 -0
  53. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
  54. package/lib/hooks/useProjectSearch.js +3 -2
  55. package/lib/hooks/useRecentClientsSearch.js +3 -2
  56. package/lib/hooks/useTaskPanel.js +3 -10
  57. package/lib/hooks/useTextOverflowEllipsisTooltip.js +34 -0
  58. package/lib/lang/br/index.js +24 -1
  59. package/lib/lang/en/index.js +24 -1
  60. package/lib/lang/es/index.js +24 -1
  61. package/lib/lang/fr/index.js +23 -1
  62. package/lib/services/maia/Chats/getChatMessages.js +29 -4
  63. package/lib/services/maia/Orchestrator/orchestrator.js +8 -5
  64. package/lib/services/maia/RecentProjects/getRecentProjects.js +12 -4
  65. package/lib/services/maia/RecentTasks/getRecentTasks.js +54 -0
  66. package/lib/services/maia/RecentTasks/index.js +6 -0
  67. package/lib/services/maia/RecentUsers/getRecentUsers.js +59 -0
  68. package/lib/services/maia/RecentUsers/index.js +6 -0
  69. package/lib/services/query/entitySearchQuery.js +18 -0
  70. package/lib/services/query/usersDirectoryQuery.js +19 -0
  71. package/lib/services/utils/mapChatMessages.js +12 -5
  72. package/lib/types/Chat.js +1 -1
  73. package/lib/types/agent.js +1 -1
  74. package/lib/types/contextMention.js +37 -0
  75. package/lib/utils/contextMentionIcons.js +115 -0
  76. package/lib/utils/contextMentionLabel.js +4 -0
  77. package/lib/utils/contextMentionTypeLabel.js +17 -0
  78. package/lib/utils/maiaStreamdownRehypePlugins.js +27 -0
  79. package/lib/utils/openTaskInCorPanel.js +18 -0
  80. package/lib/utils/renderContextMentions.js +355 -0
  81. package/package.json +2 -1
@@ -0,0 +1,432 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import { createElement } from 'react';
5
+ import { flushSync } from 'react-dom';
6
+ import { createRoot } from 'react-dom/client';
7
+ import i18n from '../../../lang';
8
+ import { CONTEXT_MENTION_CHIP_CLASS } from '../../../types/contextMention';
9
+ import { getContextMentionIcon } from '../../../utils/contextMentionIcons';
10
+ import { normalizeContextMentionLabel } from '../../../utils/contextMentionLabel';
11
+ import { openTaskInCorPanel } from '../../../utils/openTaskInCorPanel';
12
+ import { applyMentionChipStyles, MENTION_CHIP_COLORS } from './ContextMentionChip.styles';
13
+ var EDITABLE_NON_TASK_LABEL_STYLE = {
14
+ display: 'inline',
15
+ lineHeight: '20px',
16
+ alignSelf: 'baseline',
17
+ minWidth: 0,
18
+ maxWidth: '100%',
19
+ whiteSpace: 'normal',
20
+ overflowWrap: 'break-word',
21
+ wordBreak: 'break-word'
22
+ };
23
+
24
+ /** Texto de tarea: sin borde inferior; el aspecto de enlace lo da el CSS global (::before + color). */
25
+ var EDITABLE_TASK_LABEL_STYLE = {
26
+ display: 'inline',
27
+ fontSize: '14px',
28
+ lineHeight: '20px',
29
+ fontWeight: '600',
30
+ color: 'inherit',
31
+ minWidth: 0,
32
+ maxWidth: '100%',
33
+ whiteSpace: 'normal',
34
+ overflowWrap: 'break-word',
35
+ wordBreak: 'break-word'
36
+ };
37
+ var createEditableMentionLabelEl = function createEditableMentionLabelEl(isTask, mentionLabel) {
38
+ if (!isTask) {
39
+ return /*#__PURE__*/createElement('span', {
40
+ style: EDITABLE_NON_TASK_LABEL_STYLE
41
+ }, mentionLabel);
42
+ }
43
+ return /*#__PURE__*/createElement('span', {
44
+ style: EDITABLE_TASK_LABEL_STYLE
45
+ }, mentionLabel);
46
+ };
47
+ var splitLabelFirstWord = function splitLabelFirstWord(label) {
48
+ var normalized = label.trim();
49
+ if (!normalized) return {
50
+ firstWord: '',
51
+ rest: ''
52
+ };
53
+ var firstWhitespaceIdx = normalized.search(/\s/);
54
+ if (firstWhitespaceIdx < 0) return {
55
+ firstWord: normalized,
56
+ rest: ''
57
+ };
58
+ return {
59
+ firstWord: normalized.slice(0, firstWhitespaceIdx),
60
+ rest: normalized.slice(firstWhitespaceIdx)
61
+ };
62
+ };
63
+ var EditableMentionChip = function EditableMentionChip(_ref) {
64
+ var mention = _ref.mention;
65
+ var mentionLabel = normalizeContextMentionLabel(mention.label);
66
+ var iconColor = MENTION_CHIP_COLORS[mention.type].fg;
67
+ var isTask = mention.type === 'task';
68
+ var isProject = mention.type === 'project';
69
+ var iconSize = isTask ? 16 : 14;
70
+ var labelEl = createEditableMentionLabelEl(isTask, mentionLabel);
71
+ var outerStyle = {
72
+ position: 'relative',
73
+ display: 'inline',
74
+ lineHeight: '20px',
75
+ boxSizing: 'border-box',
76
+ verticalAlign: 'baseline',
77
+ maxWidth: '100%'
78
+ };
79
+ if (isTask || isProject) {
80
+ return /*#__PURE__*/createElement('span', {
81
+ style: outerStyle
82
+ }, labelEl);
83
+ }
84
+ var _splitLabelFirstWord = splitLabelFirstWord(mentionLabel),
85
+ firstWord = _splitLabelFirstWord.firstWord,
86
+ rest = _splitLabelFirstWord.rest;
87
+ var leadingStyle = {
88
+ display: 'inline-flex',
89
+ alignItems: 'center',
90
+ whiteSpace: 'nowrap',
91
+ maxWidth: '100%'
92
+ };
93
+ var leadingWordStyle = _objectSpread(_objectSpread({}, EDITABLE_NON_TASK_LABEL_STYLE), {}, {
94
+ display: 'inline',
95
+ whiteSpace: 'nowrap'
96
+ });
97
+ var restStyle = _objectSpread(_objectSpread({}, EDITABLE_NON_TASK_LABEL_STYLE), {}, {
98
+ display: 'inline'
99
+ });
100
+ return /*#__PURE__*/createElement('span', {
101
+ style: outerStyle
102
+ }, /*#__PURE__*/createElement('span', {
103
+ style: leadingStyle
104
+ }, /*#__PURE__*/createElement('span', {
105
+ style: {
106
+ display: 'inline-block',
107
+ verticalAlign: 'middle',
108
+ marginRight: '2px',
109
+ lineHeight: '1',
110
+ width: '14px'
111
+ }
112
+ }, getContextMentionIcon(mention.type, iconColor, mention.id, iconSize)), /*#__PURE__*/createElement('span', {
113
+ style: leadingWordStyle
114
+ }, firstWord)), rest ? /*#__PURE__*/createElement('span', {
115
+ style: restStyle
116
+ }, rest) : null);
117
+ };
118
+ var initialsFromName = function initialsFromName(name) {
119
+ var _parts$2;
120
+ var trimmed = name.trim();
121
+ if (!trimmed) return '?';
122
+ var parts = trimmed.split(/\s+/).filter(Boolean);
123
+ if (parts.length >= 2) {
124
+ var _parts$0$charAt, _parts$, _parts$charAt, _parts;
125
+ var first = (_parts$0$charAt = (_parts$ = parts[0]) === null || _parts$ === void 0 ? void 0 : _parts$.charAt(0)) !== null && _parts$0$charAt !== void 0 ? _parts$0$charAt : '';
126
+ var last = (_parts$charAt = (_parts = parts[parts.length - 1]) === null || _parts === void 0 ? void 0 : _parts.charAt(0)) !== null && _parts$charAt !== void 0 ? _parts$charAt : '';
127
+ return "".concat(first).concat(last).toUpperCase();
128
+ }
129
+ var single = (_parts$2 = parts[0]) !== null && _parts$2 !== void 0 ? _parts$2 : '';
130
+ return single.length >= 2 ? single.slice(0, 2).toUpperCase() : (single.charAt(0) || '?').toUpperCase();
131
+ };
132
+ var TOOLTIP_FONT = "var(--cor-typography-font-family, 'Work Sans')";
133
+ var TOOLTIP_SECONDARY_COLOR = 'var(--Text-Secondary-Dark, #666)';
134
+ var TOOLTIP_SECONDARY_STYLE = {
135
+ fontFamily: TOOLTIP_FONT,
136
+ fontSize: '14px',
137
+ fontWeight: '400',
138
+ lineHeight: '20px',
139
+ color: TOOLTIP_SECONDARY_COLOR
140
+ };
141
+ var normalizeTrimmedString = function normalizeTrimmedString(value) {
142
+ if (typeof value !== 'string') return '';
143
+ return value.trim();
144
+ };
145
+
146
+ /** Ancho mínimo del tooltip (incl. padding horizontal 8+8). */
147
+ var USER_TOOLTIP_MIN_WIDTH_PX = 292;
148
+ /** Padding horizontal total del tooltip. */
149
+ var USER_TOOLTIP_PAD_X_PX = 16;
150
+ /** Avatar 24px + gap 8px respecto a la columna de texto. */
151
+ var USER_TOOLTIP_AVATAR_GAP_PX = 32;
152
+ /**
153
+ * Ancho máximo de la fila nombre | posición: mismo hueco que con tooltip fijo 292px,
154
+ * para que solo el email ensanche el contenedor.
155
+ */
156
+ var USER_TOOLTIP_NAME_ROW_MAX_PX = USER_TOOLTIP_MIN_WIDTH_PX - USER_TOOLTIP_PAD_X_PX - USER_TOOLTIP_AVATAR_GAP_PX;
157
+ /**
158
+ * Tope de ancho del nombre en la fila: por debajo del máximo de fila para que el ellipsis
159
+ * del nombre aparezca antes y quede más espacio visible para posición/cargo.
160
+ */
161
+ var USER_TOOLTIP_NAME_MAX_WIDTH_PX = Math.floor(USER_TOOLTIP_NAME_ROW_MAX_PX * 0.42);
162
+ var createUserTooltipEl = function createUserTooltipEl(mention) {
163
+ var label = mention.label,
164
+ metadata = mention.metadata;
165
+ var picture = typeof (metadata === null || metadata === void 0 ? void 0 : metadata.picture) === 'string' ? metadata.picture : null;
166
+ var positionName = normalizeTrimmedString(metadata === null || metadata === void 0 ? void 0 : metadata.positionName);
167
+ var positionLine = positionName || i18n.t('contextMention.userNoPosition', {
168
+ defaultValue: 'Sin posición'
169
+ });
170
+ var email = normalizeTrimmedString(metadata === null || metadata === void 0 ? void 0 : metadata.email);
171
+ /** Misma fuente que `ContextMentionItem` (avatar): nombre de query, no el label del chip (ej. "Yo"). */
172
+ var metadataName = normalizeTrimmedString(metadata === null || metadata === void 0 ? void 0 : metadata.name);
173
+ var nameForInitials = (metadataName || normalizeTrimmedString(label) || '?').trim();
174
+ var tooltip = document.createElement('div');
175
+ Object.assign(tooltip.style, {
176
+ position: 'fixed',
177
+ zIndex: '9999',
178
+ minWidth: "".concat(USER_TOOLTIP_MIN_WIDTH_PX, "px"),
179
+ width: 'max-content',
180
+ maxWidth: 'min(560px, calc(100vw - 24px))',
181
+ padding: '12px 8px',
182
+ display: 'flex',
183
+ flexDirection: 'column',
184
+ alignItems: 'flex-start',
185
+ borderRadius: '4px',
186
+ border: '1px solid var(--Color-Light-Gray, #E0E0E0)',
187
+ background: '#FFF',
188
+ boxShadow: '0 1px 4px 0 rgba(0,0,0,0.08), 0 1px 4px 0 rgba(0,0,0,0.04)',
189
+ boxSizing: 'border-box',
190
+ pointerEvents: 'none',
191
+ overflow: 'hidden'
192
+ });
193
+ var row = document.createElement('div');
194
+ Object.assign(row.style, {
195
+ display: 'flex',
196
+ alignItems: 'center',
197
+ gap: '8px',
198
+ width: 'max-content',
199
+ maxWidth: '100%',
200
+ minWidth: '0'
201
+ });
202
+
203
+ // Avatar circular (foto o iniciales)
204
+ var avatarWrap = document.createElement('div');
205
+ Object.assign(avatarWrap.style, {
206
+ width: '24px',
207
+ height: '24px',
208
+ minWidth: '24px',
209
+ borderRadius: '24px',
210
+ overflow: 'hidden',
211
+ display: 'flex',
212
+ alignItems: 'center',
213
+ justifyContent: 'center',
214
+ /** Mismo fondo que `SCMUserAvatarFallback` en la fila de usuario del modal. */
215
+ background: 'var(--cor-color-grey-200, #e0e0e0)',
216
+ flexShrink: '0'
217
+ });
218
+ var initials = initialsFromName(nameForInitials);
219
+ var createInitialsFallback = function createInitialsFallback() {
220
+ var fb = document.createElement('span');
221
+ fb.textContent = initials;
222
+ Object.assign(fb.style, {
223
+ fontSize: '10px',
224
+ fontWeight: '600',
225
+ /** Mismo color que `SCMUserAvatarFallback` en la fila de usuario del modal. */
226
+ color: 'var(--cor-color-text-secondary, #666)',
227
+ lineHeight: '1',
228
+ fontFamily: TOOLTIP_FONT
229
+ });
230
+ return fb;
231
+ };
232
+ if (picture) {
233
+ var img = document.createElement('img');
234
+ img.src = picture;
235
+ img.alt = '';
236
+ img.draggable = false;
237
+ Object.assign(img.style, {
238
+ width: '24px',
239
+ height: '24px',
240
+ objectFit: 'cover',
241
+ display: 'block',
242
+ borderRadius: '24px'
243
+ });
244
+ img.onerror = function () {
245
+ img.remove();
246
+ avatarWrap.appendChild(createInitialsFallback());
247
+ };
248
+ avatarWrap.appendChild(img);
249
+ } else {
250
+ avatarWrap.appendChild(createInitialsFallback());
251
+ }
252
+
253
+ // Columna de info: ancho = max(fila nombre, email); sin forzar 244px si el contenido es más corto.
254
+ var infoCol = document.createElement('div');
255
+ Object.assign(infoCol.style, {
256
+ display: 'flex',
257
+ flexDirection: 'column',
258
+ justifyContent: 'center',
259
+ alignItems: 'flex-start',
260
+ gap: '2px',
261
+ minWidth: '0',
262
+ width: 'max-content',
263
+ maxWidth: '100%'
264
+ });
265
+
266
+ // Fila: nombre | posición — max-content para no dejar hueco entre nombre corto y el pipe (evitar flex 50/50).
267
+ var nameRow = document.createElement('div');
268
+ Object.assign(nameRow.style, {
269
+ display: 'flex',
270
+ alignItems: 'flex-start',
271
+ gap: '4px',
272
+ minWidth: '0',
273
+ width: 'max-content',
274
+ maxWidth: "".concat(USER_TOOLTIP_NAME_ROW_MAX_PX, "px")
275
+ });
276
+ var nameSpan = document.createElement('span');
277
+ nameSpan.textContent = label;
278
+ Object.assign(nameSpan.style, {
279
+ flex: '0 1 auto',
280
+ minWidth: '0',
281
+ maxWidth: "".concat(USER_TOOLTIP_NAME_MAX_WIDTH_PX, "px"),
282
+ overflow: 'hidden',
283
+ textOverflow: 'ellipsis',
284
+ whiteSpace: 'nowrap',
285
+ color: 'var(--Text-Primary-Dark, #20201F)',
286
+ fontFamily: TOOLTIP_FONT,
287
+ fontSize: '14px',
288
+ fontWeight: '500',
289
+ lineHeight: '130%'
290
+ });
291
+ nameRow.appendChild(nameSpan);
292
+ var sep = document.createElement('span');
293
+ sep.textContent = '|';
294
+ Object.assign(sep.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
295
+ flexShrink: '0'
296
+ }));
297
+ nameRow.appendChild(sep);
298
+ var posSpan = document.createElement('span');
299
+ posSpan.textContent = positionLine;
300
+ Object.assign(posSpan.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
301
+ flex: '0 1 auto',
302
+ minWidth: '0',
303
+ overflow: 'hidden',
304
+ textOverflow: 'ellipsis',
305
+ whiteSpace: 'nowrap'
306
+ }));
307
+ nameRow.appendChild(posSpan);
308
+ infoCol.appendChild(nameRow);
309
+ if (email) {
310
+ var emailSpan = document.createElement('span');
311
+ emailSpan.textContent = email;
312
+ Object.assign(emailSpan.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
313
+ whiteSpace: 'nowrap',
314
+ maxWidth: '100%',
315
+ overflow: 'hidden',
316
+ textOverflow: 'ellipsis'
317
+ }));
318
+ infoCol.appendChild(emailSpan);
319
+ }
320
+ row.appendChild(avatarWrap);
321
+ row.appendChild(infoCol);
322
+ tooltip.appendChild(row);
323
+ return tooltip;
324
+ };
325
+
326
+ /**
327
+ * Crea un `<span>` atómico listo para insertarse dentro del contenteditable
328
+ * del `ContextMentionEditor`. Se marca con los `data-mention*` necesarios para
329
+ * que `useContextMentions.serialize()` pueda volver a extraer la mention.
330
+ *
331
+ * Comparte los estilos con el componente `ContextMentionChip` via
332
+ * `applyMentionChipStyles`, asegurando una única fuente de verdad visual.
333
+ */
334
+ export var buildChipElement = function buildChipElement(mention) {
335
+ var chip = document.createElement('span');
336
+ chip.setAttribute('contenteditable', 'false');
337
+ chip.setAttribute('data-mention-chip', 'true');
338
+ chip.className = CONTEXT_MENTION_CHIP_CLASS;
339
+ chip.setAttribute('data-mention-type', mention.type);
340
+ chip.setAttribute('data-mention-surface', 'editor');
341
+ applyMentionChipStyles(chip, mention.type);
342
+ var isTask = mention.type === 'task';
343
+ var common = {
344
+ boxSizing: 'border-box',
345
+ verticalAlign: 'baseline',
346
+ overflow: 'visible',
347
+ maxWidth: '100%'
348
+ };
349
+ if (isTask) {
350
+ Object.assign(chip.style, common, {
351
+ lineHeight: '20px',
352
+ height: 'auto',
353
+ minHeight: 'auto',
354
+ maxHeight: 'none'
355
+ });
356
+ } else {
357
+ Object.assign(chip.style, common, {
358
+ lineHeight: '20px',
359
+ height: 'auto',
360
+ minHeight: 'auto',
361
+ maxHeight: 'none'
362
+ });
363
+ }
364
+ var mountNode = document.createElement('span');
365
+ mountNode.style.display = 'inline';
366
+ mountNode.style.maxWidth = '100%';
367
+ mountNode.style.verticalAlign = 'baseline';
368
+ mountNode.style.boxSizing = 'border-box';
369
+ chip.appendChild(mountNode);
370
+ var root = createRoot(mountNode);
371
+ flushSync(function () {
372
+ root.render(/*#__PURE__*/createElement(EditableMentionChip, {
373
+ mention: mention
374
+ }));
375
+ });
376
+ if (mention.type === 'task') {
377
+ chip.style.cursor = 'pointer';
378
+ chip.onclick = function (e) {
379
+ e.preventDefault();
380
+ e.stopPropagation();
381
+ openTaskInCorPanel(mention.id, 'detail');
382
+ };
383
+ } else if (mention.type === 'project') {
384
+ chip.style.cursor = 'pointer';
385
+ chip.onclick = function (e) {
386
+ e.preventDefault();
387
+ e.stopPropagation();
388
+ window.open("/projects/".concat(mention.id, "/dashboard"), '_blank');
389
+ };
390
+ } else if (mention.type === 'user') {
391
+ var tooltipEl = null;
392
+ var chipRemovedObserver = null;
393
+ var removeUserTooltip = function removeUserTooltip() {
394
+ var _chipRemovedObserver;
395
+ (_chipRemovedObserver = chipRemovedObserver) === null || _chipRemovedObserver === void 0 || _chipRemovedObserver.disconnect();
396
+ chipRemovedObserver = null;
397
+ if (tooltipEl) {
398
+ tooltipEl.remove();
399
+ tooltipEl = null;
400
+ }
401
+ };
402
+
403
+ /** Si el chip se borra del editor (Backspace, etc.) no siempre hay `mouseleave`; cerrar el tooltip. */
404
+ var watchChipRemovedFromDom = function watchChipRemovedFromDom() {
405
+ var _chipRemovedObserver2;
406
+ var parent = chip.parentNode;
407
+ if (!parent) return;
408
+ (_chipRemovedObserver2 = chipRemovedObserver) === null || _chipRemovedObserver2 === void 0 || _chipRemovedObserver2.disconnect();
409
+ chipRemovedObserver = new MutationObserver(function () {
410
+ if (!chip.isConnected) removeUserTooltip();
411
+ });
412
+ chipRemovedObserver.observe(parent, {
413
+ childList: true,
414
+ subtree: true
415
+ });
416
+ };
417
+ chip.addEventListener('mouseenter', function () {
418
+ if (tooltipEl) return;
419
+ tooltipEl = createUserTooltipEl(mention);
420
+ var rect = chip.getBoundingClientRect();
421
+ var left = Math.max(8, Math.min(window.innerWidth - 300, rect.left));
422
+ tooltipEl.style.top = "".concat(rect.top, "px");
423
+ tooltipEl.style.left = "".concat(left, "px");
424
+ tooltipEl.style.transform = 'translateY(calc(-100% - 4px))';
425
+ document.body.appendChild(tooltipEl);
426
+ watchChipRemovedFromDom();
427
+ });
428
+ chip.addEventListener('mouseleave', removeUserTooltip);
429
+ }
430
+ return chip;
431
+ };
432
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVFbGVtZW50IiwiZmx1c2hTeW5jIiwiY3JlYXRlUm9vdCIsImkxOG4iLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJhcHBseU1lbnRpb25DaGlwU3R5bGVzIiwiTUVOVElPTl9DSElQX0NPTE9SUyIsIkVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFIiwiZGlzcGxheSIsImxpbmVIZWlnaHQiLCJhbGlnblNlbGYiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwid2hpdGVTcGFjZSIsIm92ZXJmbG93V3JhcCIsIndvcmRCcmVhayIsIkVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEUiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJjb2xvciIsImNyZWF0ZUVkaXRhYmxlTWVudGlvbkxhYmVsRWwiLCJpc1Rhc2siLCJtZW50aW9uTGFiZWwiLCJzdHlsZSIsInNwbGl0TGFiZWxGaXJzdFdvcmQiLCJsYWJlbCIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwiZmlyc3RXb3JkIiwicmVzdCIsImZpcnN0V2hpdGVzcGFjZUlkeCIsInNlYXJjaCIsInNsaWNlIiwiRWRpdGFibGVNZW50aW9uQ2hpcCIsIl9yZWYiLCJtZW50aW9uIiwiaWNvbkNvbG9yIiwidHlwZSIsImZnIiwiaXNQcm9qZWN0IiwiaWNvblNpemUiLCJsYWJlbEVsIiwib3V0ZXJTdHlsZSIsInBvc2l0aW9uIiwiYm94U2l6aW5nIiwidmVydGljYWxBbGlnbiIsIl9zcGxpdExhYmVsRmlyc3RXb3JkIiwibGVhZGluZ1N0eWxlIiwiYWxpZ25JdGVtcyIsImxlYWRpbmdXb3JkU3R5bGUiLCJfb2JqZWN0U3ByZWFkIiwicmVzdFN0eWxlIiwibWFyZ2luUmlnaHQiLCJ3aWR0aCIsImlkIiwiaW5pdGlhbHNGcm9tTmFtZSIsIm5hbWUiLCJfcGFydHMkMiIsInRyaW1tZWQiLCJwYXJ0cyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImxlbmd0aCIsIl9wYXJ0cyQwJGNoYXJBdCIsIl9wYXJ0cyQiLCJfcGFydHMkY2hhckF0IiwiX3BhcnRzIiwiZmlyc3QiLCJjaGFyQXQiLCJsYXN0IiwiY29uY2F0IiwidG9VcHBlckNhc2UiLCJzaW5nbGUiLCJUT09MVElQX0ZPTlQiLCJUT09MVElQX1NFQ09OREFSWV9DT0xPUiIsIlRPT0xUSVBfU0VDT05EQVJZX1NUWUxFIiwiZm9udEZhbWlseSIsIm5vcm1hbGl6ZVRyaW1tZWRTdHJpbmciLCJ2YWx1ZSIsIlVTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFgiLCJVU0VSX1RPT0xUSVBfUEFEX1hfUFgiLCJVU0VSX1RPT0xUSVBfQVZBVEFSX0dBUF9QWCIsIlVTRVJfVE9PTFRJUF9OQU1FX1JPV19NQVhfUFgiLCJVU0VSX1RPT0xUSVBfTkFNRV9NQVhfV0lEVEhfUFgiLCJNYXRoIiwiZmxvb3IiLCJjcmVhdGVVc2VyVG9vbHRpcEVsIiwibWV0YWRhdGEiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwicG9zaXRpb25MaW5lIiwidCIsImRlZmF1bHRWYWx1ZSIsImVtYWlsIiwibWV0YWRhdGFOYW1lIiwibmFtZUZvckluaXRpYWxzIiwidG9vbHRpcCIsImRvY3VtZW50IiwiT2JqZWN0IiwiYXNzaWduIiwiekluZGV4IiwicGFkZGluZyIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJiYWNrZ3JvdW5kIiwiYm94U2hhZG93IiwicG9pbnRlckV2ZW50cyIsIm92ZXJmbG93Iiwicm93IiwiZ2FwIiwiYXZhdGFyV3JhcCIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiZmxleFNocmluayIsImluaXRpYWxzIiwiY3JlYXRlSW5pdGlhbHNGYWxsYmFjayIsImZiIiwidGV4dENvbnRlbnQiLCJpbWciLCJzcmMiLCJhbHQiLCJkcmFnZ2FibGUiLCJvYmplY3RGaXQiLCJvbmVycm9yIiwicmVtb3ZlIiwiYXBwZW5kQ2hpbGQiLCJpbmZvQ29sIiwibmFtZVJvdyIsIm5hbWVTcGFuIiwiZmxleCIsInRleHRPdmVyZmxvdyIsInNlcCIsInBvc1NwYW4iLCJlbWFpbFNwYW4iLCJidWlsZENoaXBFbGVtZW50IiwiY2hpcCIsInNldEF0dHJpYnV0ZSIsImNsYXNzTmFtZSIsImNvbW1vbiIsIm1pbkhlaWdodCIsIm1heEhlaWdodCIsIm1vdW50Tm9kZSIsInJvb3QiLCJyZW5kZXIiLCJjdXJzb3IiLCJvbmNsaWNrIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwid2luZG93Iiwib3BlbiIsInRvb2x0aXBFbCIsImNoaXBSZW1vdmVkT2JzZXJ2ZXIiLCJyZW1vdmVVc2VyVG9vbHRpcCIsIl9jaGlwUmVtb3ZlZE9ic2VydmVyIiwiZGlzY29ubmVjdCIsIndhdGNoQ2hpcFJlbW92ZWRGcm9tRG9tIiwiX2NoaXBSZW1vdmVkT2JzZXJ2ZXIyIiwicGFyZW50IiwicGFyZW50Tm9kZSIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJpc0Nvbm5lY3RlZCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwibWF4IiwibWluIiwiaW5uZXJXaWR0aCIsInRvcCIsInRyYW5zZm9ybSIsImJvZHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkNoaXAvYnVpbGRDaGlwRWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB0eXBlIENTU1Byb3BlcnRpZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IGNyZWF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50J1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vbGFuZydcbmltcG9ydCB7IENPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTLCBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZ2V0Q29udGV4dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb3BlblRhc2tJbkNvclBhbmVsJ1xuaW1wb3J0IHsgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcywgTUVOVElPTl9DSElQX0NPTE9SUyB9IGZyb20gJy4vQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcblxuY29uc3QgRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGFsaWduU2VsZjogJ2Jhc2VsaW5lJyxcbiAgbWluV2lkdGg6IDAsXG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIHdoaXRlU3BhY2U6ICdub3JtYWwnLFxuICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59XG5cbi8qKiBUZXh0byBkZSB0YXJlYTogc2luIGJvcmRlIGluZmVyaW9yOyBlbCBhc3BlY3RvIGRlIGVubGFjZSBsbyBkYSBlbCBDU1MgZ2xvYmFsICg6OmJlZm9yZSArIGNvbG9yKS4gKi9cbmNvbnN0IEVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBmb250U2l6ZTogJzE0cHgnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICBjb2xvcjogJ2luaGVyaXQnLFxuICBtaW5XaWR0aDogMCxcbiAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIG92ZXJmbG93V3JhcDogJ2JyZWFrLXdvcmQnLFxuICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbn1cblxuY29uc3QgY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbCA9IChpc1Rhc2s6IGJvb2xlYW4sIG1lbnRpb25MYWJlbDogc3RyaW5nKSA9PiB7XG4gIGlmICghaXNUYXNrKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBFRElUQUJMRV9OT05fVEFTS19MQUJFTF9TVFlMRSB9LCBtZW50aW9uTGFiZWwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBFRElUQUJMRV9UQVNLX0xBQkVMX1NUWUxFIH0sIG1lbnRpb25MYWJlbClcbn1cblxuY29uc3Qgc3BsaXRMYWJlbEZpcnN0V29yZCA9IChsYWJlbDogc3RyaW5nKTogeyBmaXJzdFdvcmQ6IHN0cmluZzsgcmVzdDogc3RyaW5nIH0gPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbGFiZWwudHJpbSgpXG4gIGlmICghbm9ybWFsaXplZCkgcmV0dXJuIHsgZmlyc3RXb3JkOiAnJywgcmVzdDogJycgfVxuICBjb25zdCBmaXJzdFdoaXRlc3BhY2VJZHggPSBub3JtYWxpemVkLnNlYXJjaCgvXFxzLylcbiAgaWYgKGZpcnN0V2hpdGVzcGFjZUlkeCA8IDApIHJldHVybiB7IGZpcnN0V29yZDogbm9ybWFsaXplZCwgcmVzdDogJycgfVxuICByZXR1cm4ge1xuICAgIGZpcnN0V29yZDogbm9ybWFsaXplZC5zbGljZSgwLCBmaXJzdFdoaXRlc3BhY2VJZHgpLFxuICAgIHJlc3Q6IG5vcm1hbGl6ZWQuc2xpY2UoZmlyc3RXaGl0ZXNwYWNlSWR4KSxcbiAgfVxufVxuXG50eXBlIEVkaXRhYmxlTWVudGlvbkNoaXBQcm9wcyA9IHtcbiAgbWVudGlvbjogQ29udGV4dE1lbnRpb25cbn1cblxuY29uc3QgRWRpdGFibGVNZW50aW9uQ2hpcCA9ICh7IG1lbnRpb24gfTogRWRpdGFibGVNZW50aW9uQ2hpcFByb3BzKSA9PiB7XG4gIGNvbnN0IG1lbnRpb25MYWJlbCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobWVudGlvbi5sYWJlbClcbiAgY29uc3QgaWNvbkNvbG9yID0gTUVOVElPTl9DSElQX0NPTE9SU1ttZW50aW9uLnR5cGVdLmZnXG4gIGNvbnN0IGlzVGFzayA9IG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGlzUHJvamVjdCA9IG1lbnRpb24udHlwZSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IGljb25TaXplID0gaXNUYXNrID8gMTYgOiAxNFxuICBjb25zdCBsYWJlbEVsID0gY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbChpc1Rhc2ssIG1lbnRpb25MYWJlbClcblxuICBjb25zdCBvdXRlclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUnLFxuICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gIH1cblxuICBpZiAoaXNUYXNrIHx8IGlzUHJvamVjdCkge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogb3V0ZXJTdHlsZSB9LCBsYWJlbEVsKVxuICB9XG5cbiAgY29uc3QgeyBmaXJzdFdvcmQsIHJlc3QgfSA9IHNwbGl0TGFiZWxGaXJzdFdvcmQobWVudGlvbkxhYmVsKVxuICBjb25zdCBsZWFkaW5nU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICB9XG4gIGNvbnN0IGxlYWRpbmdXb3JkU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgLi4uRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEUsXG4gICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIH1cbiAgY29uc3QgcmVzdFN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIC4uLkVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUnLFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgJ3NwYW4nLFxuICAgIHsgc3R5bGU6IG91dGVyU3R5bGUgfSxcbiAgICBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3NwYW4nLFxuICAgICAgeyBzdHlsZTogbGVhZGluZ1N0eWxlIH0sXG4gICAgICBjcmVhdGVFbGVtZW50KFxuICAgICAgICAnc3BhbicsXG4gICAgICAgIHtcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAnMnB4JyxcbiAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICcxJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTRweCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q29udGV4dE1lbnRpb25JY29uKG1lbnRpb24udHlwZSwgaWNvbkNvbG9yLCBtZW50aW9uLmlkLCBpY29uU2l6ZSlcbiAgICAgICksXG4gICAgICBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogbGVhZGluZ1dvcmRTdHlsZSB9LCBmaXJzdFdvcmQpXG4gICAgKSxcbiAgICByZXN0ID8gY3JlYXRlRWxlbWVudCgnc3BhbicsIHsgc3R5bGU6IHJlc3RTdHlsZSB9LCByZXN0KSA6IG51bGxcbiAgKVxufVxuXG5jb25zdCBpbml0aWFsc0Zyb21OYW1lID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBuYW1lLnRyaW0oKVxuICBpZiAoIXRyaW1tZWQpIHJldHVybiAnPydcbiAgY29uc3QgcGFydHMgPSB0cmltbWVkLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pXG4gIGlmIChwYXJ0cy5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGZpcnN0ID0gcGFydHNbMF0/LmNoYXJBdCgwKSA/PyAnJ1xuICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXT8uY2hhckF0KDApID8/ICcnXG4gICAgcmV0dXJuIGAke2ZpcnN0fSR7bGFzdH1gLnRvVXBwZXJDYXNlKClcbiAgfVxuICBjb25zdCBzaW5nbGUgPSBwYXJ0c1swXSA/PyAnJ1xuICByZXR1cm4gc2luZ2xlLmxlbmd0aCA+PSAyID8gc2luZ2xlLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKCkgOiAoc2luZ2xlLmNoYXJBdCgwKSB8fCAnPycpLnRvVXBwZXJDYXNlKClcbn1cblxuY29uc3QgVE9PTFRJUF9GT05UID0gYHZhcigtLWNvci10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAnV29yayBTYW5zJylgXG5jb25zdCBUT09MVElQX1NFQ09OREFSWV9DT0xPUiA9ICd2YXIoLS1UZXh0LVNlY29uZGFyeS1EYXJrLCAjNjY2KSdcbmNvbnN0IFRPT0xUSVBfU0VDT05EQVJZX1NUWUxFID0ge1xuICBmb250RmFtaWx5OiBUT09MVElQX0ZPTlQsXG4gIGZvbnRTaXplOiAnMTRweCcsXG4gIGZvbnRXZWlnaHQ6ICc0MDAnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGNvbG9yOiBUT09MVElQX1NFQ09OREFSWV9DT0xPUixcbn1cblxuY29uc3Qgbm9ybWFsaXplVHJpbW1lZFN0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gJydcbiAgcmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKiogQW5jaG8gbcOtbmltbyBkZWwgdG9vbHRpcCAoaW5jbC4gcGFkZGluZyBob3Jpem9udGFsIDgrOCkuICovXG5jb25zdCBVU0VSX1RPT0xUSVBfTUlOX1dJRFRIX1BYID0gMjkyXG4vKiogUGFkZGluZyBob3Jpem9udGFsIHRvdGFsIGRlbCB0b29sdGlwLiAqL1xuY29uc3QgVVNFUl9UT09MVElQX1BBRF9YX1BYID0gMTZcbi8qKiBBdmF0YXIgMjRweCArIGdhcCA4cHggcmVzcGVjdG8gYSBsYSBjb2x1bW5hIGRlIHRleHRvLiAqL1xuY29uc3QgVVNFUl9UT09MVElQX0FWQVRBUl9HQVBfUFggPSAzMlxuLyoqXG4gKiBBbmNobyBtw6F4aW1vIGRlIGxhIGZpbGEgbm9tYnJlIHwgcG9zaWNpw7NuOiBtaXNtbyBodWVjbyBxdWUgY29uIHRvb2x0aXAgZmlqbyAyOTJweCxcbiAqIHBhcmEgcXVlIHNvbG8gZWwgZW1haWwgZW5zYW5jaGUgZWwgY29udGVuZWRvci5cbiAqL1xuY29uc3QgVVNFUl9UT09MVElQX05BTUVfUk9XX01BWF9QWCA9IFVTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFggLSBVU0VSX1RPT0xUSVBfUEFEX1hfUFggLSBVU0VSX1RPT0xUSVBfQVZBVEFSX0dBUF9QWFxuLyoqXG4gKiBUb3BlIGRlIGFuY2hvIGRlbCBub21icmUgZW4gbGEgZmlsYTogcG9yIGRlYmFqbyBkZWwgbcOheGltbyBkZSBmaWxhIHBhcmEgcXVlIGVsIGVsbGlwc2lzXG4gKiBkZWwgbm9tYnJlIGFwYXJlemNhIGFudGVzIHkgcXVlZGUgbcOhcyBlc3BhY2lvIHZpc2libGUgcGFyYSBwb3NpY2nDs24vY2FyZ28uXG4gKi9cbmNvbnN0IFVTRVJfVE9PTFRJUF9OQU1FX01BWF9XSURUSF9QWCA9IE1hdGguZmxvb3IoVVNFUl9UT09MVElQX05BTUVfUk9XX01BWF9QWCAqIDAuNDIpXG5cbmNvbnN0IGNyZWF0ZVVzZXJUb29sdGlwRWwgPSAobWVudGlvbjogQ29udGV4dE1lbnRpb24pOiBIVE1MRWxlbWVudCA9PiB7XG4gIGNvbnN0IHsgbGFiZWwsIG1ldGFkYXRhIH0gPSBtZW50aW9uXG4gIGNvbnN0IHBpY3R1cmUgPSB0eXBlb2YgbWV0YWRhdGE/LnBpY3R1cmUgPT09ICdzdHJpbmcnID8gbWV0YWRhdGEucGljdHVyZSA6IG51bGxcbiAgY29uc3QgcG9zaXRpb25OYW1lID0gbm9ybWFsaXplVHJpbW1lZFN0cmluZyhtZXRhZGF0YT8ucG9zaXRpb25OYW1lKVxuICBjb25zdCBwb3NpdGlvbkxpbmUgPVxuICAgIHBvc2l0aW9uTmFtZSB8fFxuICAgIGkxOG4udCgnY29udGV4dE1lbnRpb24udXNlck5vUG9zaXRpb24nLCB7XG4gICAgICBkZWZhdWx0VmFsdWU6ICdTaW4gcG9zaWNpw7NuJyxcbiAgICB9KVxuICBjb25zdCBlbWFpbCA9IG5vcm1hbGl6ZVRyaW1tZWRTdHJpbmcobWV0YWRhdGE/LmVtYWlsKVxuICAvKiogTWlzbWEgZnVlbnRlIHF1ZSBgQ29udGV4dE1lbnRpb25JdGVtYCAoYXZhdGFyKTogbm9tYnJlIGRlIHF1ZXJ5LCBubyBlbCBsYWJlbCBkZWwgY2hpcCAoZWouIFwiWW9cIikuICovXG4gIGNvbnN0IG1ldGFkYXRhTmFtZSA9IG5vcm1hbGl6ZVRyaW1tZWRTdHJpbmcobWV0YWRhdGE/Lm5hbWUpXG4gIGNvbnN0IG5hbWVGb3JJbml0aWFscyA9IChtZXRhZGF0YU5hbWUgfHwgbm9ybWFsaXplVHJpbW1lZFN0cmluZyhsYWJlbCkgfHwgJz8nKS50cmltKClcblxuICBjb25zdCB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbih0b29sdGlwLnN0eWxlLCB7XG4gICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgekluZGV4OiAnOTk5OScsXG4gICAgbWluV2lkdGg6IGAke1VTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFh9cHhgLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiAnbWluKDU2MHB4LCBjYWxjKDEwMHZ3IC0gMjRweCkpJyxcbiAgICBwYWRkaW5nOiAnMTJweCA4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tQ29sb3ItTGlnaHQtR3JheSwgI0UwRTBFMCknLFxuICAgIGJhY2tncm91bmQ6ICcjRkZGJyxcbiAgICBib3hTaGFkb3c6ICcwIDFweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpLCAwIDFweCA0cHggMCByZ2JhKDAsMCwwLDAuMDQpJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB9KVxuXG4gIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24ocm93LnN0eWxlLCB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogJzhweCcsXG4gICAgd2lkdGg6ICdtYXgtY29udGVudCcsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICB9KVxuXG4gIC8vIEF2YXRhciBjaXJjdWxhciAoZm90byBvIGluaWNpYWxlcylcbiAgY29uc3QgYXZhdGFyV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24oYXZhdGFyV3JhcC5zdHlsZSwge1xuICAgIHdpZHRoOiAnMjRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgbWluV2lkdGg6ICcyNHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICcyNHB4JyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAvKiogTWlzbW8gZm9uZG8gcXVlIGBTQ01Vc2VyQXZhdGFyRmFsbGJhY2tgIGVuIGxhIGZpbGEgZGUgdXN1YXJpbyBkZWwgbW9kYWwuICovXG4gICAgYmFja2dyb3VuZDogJ3ZhcigtLWNvci1jb2xvci1ncmV5LTIwMCwgI2UwZTBlMCknLFxuICAgIGZsZXhTaHJpbms6ICcwJyxcbiAgfSlcblxuICBjb25zdCBpbml0aWFscyA9IGluaXRpYWxzRnJvbU5hbWUobmFtZUZvckluaXRpYWxzKVxuXG4gIGNvbnN0IGNyZWF0ZUluaXRpYWxzRmFsbGJhY2sgPSAoKTogSFRNTEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGZiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gICAgZmIudGV4dENvbnRlbnQgPSBpbml0aWFsc1xuICAgIE9iamVjdC5hc3NpZ24oZmIuc3R5bGUsIHtcbiAgICAgIGZvbnRTaXplOiAnMTBweCcsXG4gICAgICBmb250V2VpZ2h0OiAnNjAwJyxcbiAgICAgIC8qKiBNaXNtbyBjb2xvciBxdWUgYFNDTVVzZXJBdmF0YXJGYWxsYmFja2AgZW4gbGEgZmlsYSBkZSB1c3VhcmlvIGRlbCBtb2RhbC4gKi9cbiAgICAgIGNvbG9yOiAndmFyKC0tY29yLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNjY2KScsXG4gICAgICBsaW5lSGVpZ2h0OiAnMScsXG4gICAgICBmb250RmFtaWx5OiBUT09MVElQX0ZPTlQsXG4gICAgfSlcbiAgICByZXR1cm4gZmJcbiAgfVxuXG4gIGlmIChwaWN0dXJlKSB7XG4gICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJylcbiAgICBpbWcuc3JjID0gcGljdHVyZVxuICAgIGltZy5hbHQgPSAnJ1xuICAgIGltZy5kcmFnZ2FibGUgPSBmYWxzZVxuICAgIE9iamVjdC5hc3NpZ24oaW1nLnN0eWxlLCB7XG4gICAgICB3aWR0aDogJzI0cHgnLFxuICAgICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgICBvYmplY3RGaXQ6ICdjb3ZlcicsXG4gICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMjRweCcsXG4gICAgfSlcbiAgICBpbWcub25lcnJvciA9ICgpID0+IHtcbiAgICAgIGltZy5yZW1vdmUoKVxuICAgICAgYXZhdGFyV3JhcC5hcHBlbmRDaGlsZChjcmVhdGVJbml0aWFsc0ZhbGxiYWNrKCkpXG4gICAgfVxuICAgIGF2YXRhcldyYXAuYXBwZW5kQ2hpbGQoaW1nKVxuICB9IGVsc2Uge1xuICAgIGF2YXRhcldyYXAuYXBwZW5kQ2hpbGQoY3JlYXRlSW5pdGlhbHNGYWxsYmFjaygpKVxuICB9XG5cbiAgLy8gQ29sdW1uYSBkZSBpbmZvOiBhbmNobyA9IG1heChmaWxhIG5vbWJyZSwgZW1haWwpOyBzaW4gZm9yemFyIDI0NHB4IHNpIGVsIGNvbnRlbmlkbyBlcyBtw6FzIGNvcnRvLlxuICBjb25zdCBpbmZvQ29sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbihpbmZvQ29sLnN0eWxlLCB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgZ2FwOiAnMnB4JyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gIH0pXG5cbiAgLy8gRmlsYTogbm9tYnJlIHwgcG9zaWNpw7NuIOKAlCBtYXgtY29udGVudCBwYXJhIG5vIGRlamFyIGh1ZWNvIGVudHJlIG5vbWJyZSBjb3J0byB5IGVsIHBpcGUgKGV2aXRhciBmbGV4IDUwLzUwKS5cbiAgY29uc3QgbmFtZVJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24obmFtZVJvdy5zdHlsZSwge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgZ2FwOiAnNHB4JyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiBgJHtVU0VSX1RPT0xUSVBfTkFNRV9ST1dfTUFYX1BYfXB4YCxcbiAgfSlcblxuICBjb25zdCBuYW1lU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBuYW1lU3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsXG4gIE9iamVjdC5hc3NpZ24obmFtZVNwYW4uc3R5bGUsIHtcbiAgICBmbGV4OiAnMCAxIGF1dG8nLFxuICAgIG1pbldpZHRoOiAnMCcsXG4gICAgbWF4V2lkdGg6IGAke1VTRVJfVE9PTFRJUF9OQU1FX01BWF9XSURUSF9QWH1weGAsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBjb2xvcjogJ3ZhcigtLVRleHQtUHJpbWFyeS1EYXJrLCAjMjAyMDFGKScsXG4gICAgZm9udEZhbWlseTogVE9PTFRJUF9GT05ULFxuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgZm9udFdlaWdodDogJzUwMCcsXG4gICAgbGluZUhlaWdodDogJzEzMCUnLFxuICB9KVxuICBuYW1lUm93LmFwcGVuZENoaWxkKG5hbWVTcGFuKVxuXG4gIGNvbnN0IHNlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBzZXAudGV4dENvbnRlbnQgPSAnfCdcbiAgT2JqZWN0LmFzc2lnbihzZXAuc3R5bGUsIHsgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsIGZsZXhTaHJpbms6ICcwJyB9KVxuICBuYW1lUm93LmFwcGVuZENoaWxkKHNlcClcblxuICBjb25zdCBwb3NTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gIHBvc1NwYW4udGV4dENvbnRlbnQgPSBwb3NpdGlvbkxpbmVcbiAgT2JqZWN0LmFzc2lnbihwb3NTcGFuLnN0eWxlLCB7XG4gICAgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsXG4gICAgZmxleDogJzAgMSBhdXRvJyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIH0pXG4gIG5hbWVSb3cuYXBwZW5kQ2hpbGQocG9zU3BhbilcblxuICBpbmZvQ29sLmFwcGVuZENoaWxkKG5hbWVSb3cpXG5cbiAgaWYgKGVtYWlsKSB7XG4gICAgY29uc3QgZW1haWxTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gICAgZW1haWxTcGFuLnRleHRDb250ZW50ID0gZW1haWxcbiAgICBPYmplY3QuYXNzaWduKGVtYWlsU3Bhbi5zdHlsZSwge1xuICAgICAgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsXG4gICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgfSlcbiAgICBpbmZvQ29sLmFwcGVuZENoaWxkKGVtYWlsU3BhbilcbiAgfVxuXG4gIHJvdy5hcHBlbmRDaGlsZChhdmF0YXJXcmFwKVxuICByb3cuYXBwZW5kQ2hpbGQoaW5mb0NvbClcbiAgdG9vbHRpcC5hcHBlbmRDaGlsZChyb3cpXG5cbiAgcmV0dXJuIHRvb2x0aXBcbn1cblxuLyoqXG4gKiBDcmVhIHVuIGA8c3Bhbj5gIGF0w7NtaWNvIGxpc3RvIHBhcmEgaW5zZXJ0YXJzZSBkZW50cm8gZGVsIGNvbnRlbnRlZGl0YWJsZVxuICogZGVsIGBDb250ZXh0TWVudGlvbkVkaXRvcmAuIFNlIG1hcmNhIGNvbiBsb3MgYGRhdGEtbWVudGlvbipgIG5lY2VzYXJpb3MgcGFyYVxuICogcXVlIGB1c2VDb250ZXh0TWVudGlvbnMuc2VyaWFsaXplKClgIHB1ZWRhIHZvbHZlciBhIGV4dHJhZXIgbGEgbWVudGlvbi5cbiAqXG4gKiBDb21wYXJ0ZSBsb3MgZXN0aWxvcyBjb24gZWwgY29tcG9uZW50ZSBgQ29udGV4dE1lbnRpb25DaGlwYCB2aWFcbiAqIGBhcHBseU1lbnRpb25DaGlwU3R5bGVzYCwgYXNlZ3VyYW5kbyB1bmEgw7puaWNhIGZ1ZW50ZSBkZSB2ZXJkYWQgdmlzdWFsLlxuICovXG5leHBvcnQgY29uc3QgYnVpbGRDaGlwRWxlbWVudCA9IChtZW50aW9uOiBDb250ZXh0TWVudGlvbik6IEhUTUxTcGFuRWxlbWVudCA9PiB7XG4gIGNvbnN0IGNoaXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tY2hpcCcsICd0cnVlJylcbiAgY2hpcC5jbGFzc05hbWUgPSBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU1xuICBjaGlwLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tc3VyZmFjZScsICdlZGl0b3InKVxuICBhcHBseU1lbnRpb25DaGlwU3R5bGVzKGNoaXAsIG1lbnRpb24udHlwZSlcbiAgY29uc3QgaXNUYXNrID0gbWVudGlvbi50eXBlID09PSAndGFzaydcbiAgY29uc3QgY29tbW9uID0ge1xuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHZlcnRpY2FsQWxpZ246ICdiYXNlbGluZScsXG4gICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICB9IGFzIGNvbnN0XG4gIGlmIChpc1Rhc2spIHtcbiAgICBPYmplY3QuYXNzaWduKGNoaXAuc3R5bGUsIGNvbW1vbiwge1xuICAgICAgbGluZUhlaWdodDogJzIwcHgnLFxuICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICBtaW5IZWlnaHQ6ICdhdXRvJyxcbiAgICAgIG1heEhlaWdodDogJ25vbmUnLFxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmFzc2lnbihjaGlwLnN0eWxlLCBjb21tb24sIHtcbiAgICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgbWluSGVpZ2h0OiAnYXV0bycsXG4gICAgICBtYXhIZWlnaHQ6ICdub25lJyxcbiAgICB9KVxuICB9XG4gIGNvbnN0IG1vdW50Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBtb3VudE5vZGUuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnXG4gIG1vdW50Tm9kZS5zdHlsZS5tYXhXaWR0aCA9ICcxMDAlJ1xuICBtb3VudE5vZGUuc3R5bGUudmVydGljYWxBbGlnbiA9ICdiYXNlbGluZSdcbiAgbW91bnROb2RlLnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94J1xuICBjaGlwLmFwcGVuZENoaWxkKG1vdW50Tm9kZSlcbiAgY29uc3Qgcm9vdCA9IGNyZWF0ZVJvb3QobW91bnROb2RlKVxuXG4gIGZsdXNoU3luYygoKSA9PiB7XG4gICAgcm9vdC5yZW5kZXIoY3JlYXRlRWxlbWVudChFZGl0YWJsZU1lbnRpb25DaGlwLCB7IG1lbnRpb24gfSkpXG4gIH0pXG5cbiAgaWYgKG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgY2hpcC5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcidcbiAgICBjaGlwLm9uY2xpY2sgPSBlID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgb3BlblRhc2tJbkNvclBhbmVsKG1lbnRpb24uaWQsICdkZXRhaWwnKVxuICAgIH1cbiAgfSBlbHNlIGlmIChtZW50aW9uLnR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgIGNoaXAuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInXG4gICAgY2hpcC5vbmNsaWNrID0gZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHdpbmRvdy5vcGVuKGAvcHJvamVjdHMvJHttZW50aW9uLmlkfS9kYXNoYm9hcmRgLCAnX2JsYW5rJylcbiAgICB9XG4gIH0gZWxzZSBpZiAobWVudGlvbi50eXBlID09PSAndXNlcicpIHtcbiAgICBsZXQgdG9vbHRpcEVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsXG4gICAgbGV0IGNoaXBSZW1vdmVkT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbFxuXG4gICAgY29uc3QgcmVtb3ZlVXNlclRvb2x0aXAgPSAoKSA9PiB7XG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyPy5kaXNjb25uZWN0KClcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIgPSBudWxsXG4gICAgICBpZiAodG9vbHRpcEVsKSB7XG4gICAgICAgIHRvb2x0aXBFbC5yZW1vdmUoKVxuICAgICAgICB0b29sdGlwRWwgPSBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNpIGVsIGNoaXAgc2UgYm9ycmEgZGVsIGVkaXRvciAoQmFja3NwYWNlLCBldGMuKSBubyBzaWVtcHJlIGhheSBgbW91c2VsZWF2ZWA7IGNlcnJhciBlbCB0b29sdGlwLiAqL1xuICAgIGNvbnN0IHdhdGNoQ2hpcFJlbW92ZWRGcm9tRG9tID0gKCkgPT4ge1xuICAgICAgY29uc3QgcGFyZW50ID0gY2hpcC5wYXJlbnROb2RlXG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuXG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyPy5kaXNjb25uZWN0KClcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIGlmICghY2hpcC5pc0Nvbm5lY3RlZCkgcmVtb3ZlVXNlclRvb2x0aXAoKVxuICAgICAgfSlcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnQsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgY2hpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgaWYgKHRvb2x0aXBFbCkgcmV0dXJuXG4gICAgICB0b29sdGlwRWwgPSBjcmVhdGVVc2VyVG9vbHRpcEVsKG1lbnRpb24pXG4gICAgICBjb25zdCByZWN0ID0gY2hpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHdpbmRvdy5pbm5lcldpZHRoIC0gMzAwLCByZWN0LmxlZnQpKVxuICAgICAgdG9vbHRpcEVsLnN0eWxlLnRvcCA9IGAke3JlY3QudG9wfXB4YFxuICAgICAgdG9vbHRpcEVsLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YFxuICAgICAgdG9vbHRpcEVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSA0cHgpKSdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9vbHRpcEVsKVxuICAgICAgd2F0Y2hDaGlwUmVtb3ZlZEZyb21Eb20oKVxuICAgIH0pXG5cbiAgICBjaGlwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCByZW1vdmVVc2VyVG9vbHRpcClcbiAgfVxuXG4gIHJldHVybiBjaGlwXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLGFBQWEsUUFBNEIsT0FBTztBQUN6RCxTQUFTQyxTQUFT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
@@ -0,0 +1,4 @@
1
+ export { ContextMentionChip } from './ContextMentionChip';
2
+ export { buildChipElement } from './buildChipElement';
3
+ export { MENTION_CHIP_COLORS, applyMentionChipStyles, ContextMentionChipGlobalStyles, MENTION_CHIP_NON_TASK_HOVER_BG, MENTION_CHIP_TASK_HOVER_BG } from './ContextMentionChip.styles';
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudGlvbkNoaXAiLCJidWlsZENoaXBFbGVtZW50IiwiTUVOVElPTl9DSElQX0NPTE9SUyIsImFwcGx5TWVudGlvbkNoaXBTdHlsZXMiLCJDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJNRU5USU9OX0NISVBfVEFTS19IT1ZFUl9CRyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDb250ZXh0TWVudGlvbkNoaXAgfSBmcm9tICcuL0NvbnRleHRNZW50aW9uQ2hpcCdcbmV4cG9ydCB7IGJ1aWxkQ2hpcEVsZW1lbnQgfSBmcm9tICcuL2J1aWxkQ2hpcEVsZW1lbnQnXG5leHBvcnQge1xuICBNRU5USU9OX0NISVBfQ09MT1JTLFxuICBhcHBseU1lbnRpb25DaGlwU3R5bGVzLFxuICBDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMsXG4gIE1FTlRJT05fQ0hJUF9OT05fVEFTS19IT1ZFUl9CRyxcbiAgTUVOVElPTl9DSElQX1RBU0tfSE9WRVJfQkcsXG59IGZyb20gJy4vQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esa0JBQWtCLFFBQVEsc0JBQXNCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUNFQyxtQkFBbUIsRUFDbkJDLHNCQUFzQixFQUN0QkMsOEJBQThCLEVBQzlCQyw4QkFBOEIsRUFDOUJDLDBCQUEwQixRQUNyQiw2QkFBNkIiLCJpZ25vcmVMaXN0IjpbXX0=