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