@projectcor/maia-components 2.11.40 → 2.11.41-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.
- 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 +390 -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 +8 -6
- 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/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/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 +1010 -0
- package/lib/hooks/useEvent.js +6 -1
- package/lib/hooks/useMentionAllowedTypes.js +103 -0
- package/lib/hooks/useMentionPopover.js +333 -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/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,390 @@
|
|
|
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
|
+
|
|
104
|
+
/** Ancho mínimo del tooltip (incl. padding horizontal 8+8). */
|
|
105
|
+
var USER_TOOLTIP_MIN_WIDTH_PX = 292;
|
|
106
|
+
/** Padding horizontal total del tooltip. */
|
|
107
|
+
var USER_TOOLTIP_PAD_X_PX = 16;
|
|
108
|
+
/** Avatar 24px + gap 8px respecto a la columna de texto. */
|
|
109
|
+
var USER_TOOLTIP_AVATAR_GAP_PX = 32;
|
|
110
|
+
/**
|
|
111
|
+
* Ancho máximo de la fila nombre | posición: mismo hueco que con tooltip fijo 292px,
|
|
112
|
+
* para que solo el email ensanche el contenedor.
|
|
113
|
+
*/
|
|
114
|
+
var USER_TOOLTIP_NAME_ROW_MAX_PX = USER_TOOLTIP_MIN_WIDTH_PX - USER_TOOLTIP_PAD_X_PX - USER_TOOLTIP_AVATAR_GAP_PX;
|
|
115
|
+
/**
|
|
116
|
+
* Tope de ancho del nombre en la fila: por debajo del máximo de fila para que el ellipsis
|
|
117
|
+
* del nombre aparezca antes y quede más espacio visible para posición/cargo.
|
|
118
|
+
*/
|
|
119
|
+
var USER_TOOLTIP_NAME_MAX_WIDTH_PX = Math.floor(USER_TOOLTIP_NAME_ROW_MAX_PX * 0.42);
|
|
120
|
+
var createUserTooltipEl = function createUserTooltipEl(mention) {
|
|
121
|
+
var _metadata$picture, _metadata$positionNam, _metadata$positionNam2, _metadata$email$trim, _metadata$email, _metadata$name;
|
|
122
|
+
var label = mention.label,
|
|
123
|
+
metadata = mention.metadata;
|
|
124
|
+
var picture = (_metadata$picture = metadata === null || metadata === void 0 ? void 0 : metadata.picture) !== null && _metadata$picture !== void 0 ? _metadata$picture : null;
|
|
125
|
+
var positionName = (_metadata$positionNam = metadata === null || metadata === void 0 || (_metadata$positionNam2 = metadata.positionName) === null || _metadata$positionNam2 === void 0 ? void 0 : _metadata$positionNam2.trim()) !== null && _metadata$positionNam !== void 0 ? _metadata$positionNam : '';
|
|
126
|
+
var positionLine = positionName || i18n.t('contextMention.userNoPosition', {
|
|
127
|
+
defaultValue: 'Sin posición'
|
|
128
|
+
});
|
|
129
|
+
var email = (_metadata$email$trim = metadata === null || metadata === void 0 || (_metadata$email = metadata.email) === null || _metadata$email === void 0 ? void 0 : _metadata$email.trim()) !== null && _metadata$email$trim !== void 0 ? _metadata$email$trim : '';
|
|
130
|
+
/** Misma fuente que `ContextMentionItem` (avatar): nombre de query, no el label del chip (ej. "Yo"). */
|
|
131
|
+
var nameForInitials = (metadata !== null && metadata !== void 0 && (_metadata$name = metadata.name) !== null && _metadata$name !== void 0 && _metadata$name.trim() ? metadata.name : label).trim();
|
|
132
|
+
var tooltip = document.createElement('div');
|
|
133
|
+
Object.assign(tooltip.style, {
|
|
134
|
+
position: 'fixed',
|
|
135
|
+
zIndex: '9999',
|
|
136
|
+
minWidth: "".concat(USER_TOOLTIP_MIN_WIDTH_PX, "px"),
|
|
137
|
+
width: 'max-content',
|
|
138
|
+
maxWidth: 'min(560px, calc(100vw - 24px))',
|
|
139
|
+
padding: '12px 8px',
|
|
140
|
+
display: 'flex',
|
|
141
|
+
flexDirection: 'column',
|
|
142
|
+
alignItems: 'flex-start',
|
|
143
|
+
borderRadius: '4px',
|
|
144
|
+
border: '1px solid var(--Color-Light-Gray, #E0E0E0)',
|
|
145
|
+
background: '#FFF',
|
|
146
|
+
boxShadow: '0 1px 4px 0 rgba(0,0,0,0.08), 0 1px 4px 0 rgba(0,0,0,0.04)',
|
|
147
|
+
boxSizing: 'border-box',
|
|
148
|
+
pointerEvents: 'none',
|
|
149
|
+
overflow: 'hidden'
|
|
150
|
+
});
|
|
151
|
+
var row = document.createElement('div');
|
|
152
|
+
Object.assign(row.style, {
|
|
153
|
+
display: 'flex',
|
|
154
|
+
alignItems: 'center',
|
|
155
|
+
gap: '8px',
|
|
156
|
+
width: 'max-content',
|
|
157
|
+
maxWidth: '100%',
|
|
158
|
+
minWidth: '0'
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
// Avatar circular (foto o iniciales)
|
|
162
|
+
var avatarWrap = document.createElement('div');
|
|
163
|
+
Object.assign(avatarWrap.style, {
|
|
164
|
+
width: '24px',
|
|
165
|
+
height: '24px',
|
|
166
|
+
minWidth: '24px',
|
|
167
|
+
borderRadius: '24px',
|
|
168
|
+
overflow: 'hidden',
|
|
169
|
+
display: 'flex',
|
|
170
|
+
alignItems: 'center',
|
|
171
|
+
justifyContent: 'center',
|
|
172
|
+
/** Mismo fondo que `SCMUserAvatarFallback` en la fila de usuario del modal. */
|
|
173
|
+
background: 'var(--cor-color-grey-200, #e0e0e0)',
|
|
174
|
+
flexShrink: '0'
|
|
175
|
+
});
|
|
176
|
+
var initials = initialsFromName(nameForInitials);
|
|
177
|
+
var createInitialsFallback = function createInitialsFallback() {
|
|
178
|
+
var fb = document.createElement('span');
|
|
179
|
+
fb.textContent = initials;
|
|
180
|
+
Object.assign(fb.style, {
|
|
181
|
+
fontSize: '10px',
|
|
182
|
+
fontWeight: '600',
|
|
183
|
+
/** Mismo color que `SCMUserAvatarFallback` en la fila de usuario del modal. */
|
|
184
|
+
color: 'var(--cor-color-text-secondary, #666)',
|
|
185
|
+
lineHeight: '1',
|
|
186
|
+
fontFamily: TOOLTIP_FONT
|
|
187
|
+
});
|
|
188
|
+
return fb;
|
|
189
|
+
};
|
|
190
|
+
if (picture) {
|
|
191
|
+
var img = document.createElement('img');
|
|
192
|
+
img.src = picture;
|
|
193
|
+
img.alt = '';
|
|
194
|
+
img.draggable = false;
|
|
195
|
+
Object.assign(img.style, {
|
|
196
|
+
width: '24px',
|
|
197
|
+
height: '24px',
|
|
198
|
+
objectFit: 'cover',
|
|
199
|
+
display: 'block',
|
|
200
|
+
borderRadius: '24px'
|
|
201
|
+
});
|
|
202
|
+
img.onerror = function () {
|
|
203
|
+
img.remove();
|
|
204
|
+
avatarWrap.appendChild(createInitialsFallback());
|
|
205
|
+
};
|
|
206
|
+
avatarWrap.appendChild(img);
|
|
207
|
+
} else {
|
|
208
|
+
avatarWrap.appendChild(createInitialsFallback());
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Columna de info: ancho = max(fila nombre, email); sin forzar 244px si el contenido es más corto.
|
|
212
|
+
var infoCol = document.createElement('div');
|
|
213
|
+
Object.assign(infoCol.style, {
|
|
214
|
+
display: 'flex',
|
|
215
|
+
flexDirection: 'column',
|
|
216
|
+
justifyContent: 'center',
|
|
217
|
+
alignItems: 'flex-start',
|
|
218
|
+
gap: '2px',
|
|
219
|
+
minWidth: '0',
|
|
220
|
+
width: 'max-content',
|
|
221
|
+
maxWidth: '100%'
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
// Fila: nombre | posición — max-content para no dejar hueco entre nombre corto y el pipe (evitar flex 50/50).
|
|
225
|
+
var nameRow = document.createElement('div');
|
|
226
|
+
Object.assign(nameRow.style, {
|
|
227
|
+
display: 'flex',
|
|
228
|
+
alignItems: 'flex-start',
|
|
229
|
+
gap: '4px',
|
|
230
|
+
minWidth: '0',
|
|
231
|
+
width: 'max-content',
|
|
232
|
+
maxWidth: "".concat(USER_TOOLTIP_NAME_ROW_MAX_PX, "px")
|
|
233
|
+
});
|
|
234
|
+
var nameSpan = document.createElement('span');
|
|
235
|
+
nameSpan.textContent = label;
|
|
236
|
+
Object.assign(nameSpan.style, {
|
|
237
|
+
flex: '0 1 auto',
|
|
238
|
+
minWidth: '0',
|
|
239
|
+
maxWidth: "".concat(USER_TOOLTIP_NAME_MAX_WIDTH_PX, "px"),
|
|
240
|
+
overflow: 'hidden',
|
|
241
|
+
textOverflow: 'ellipsis',
|
|
242
|
+
whiteSpace: 'nowrap',
|
|
243
|
+
color: 'var(--Text-Primary-Dark, #20201F)',
|
|
244
|
+
fontFamily: TOOLTIP_FONT,
|
|
245
|
+
fontSize: '14px',
|
|
246
|
+
fontWeight: '500',
|
|
247
|
+
lineHeight: '130%'
|
|
248
|
+
});
|
|
249
|
+
nameRow.appendChild(nameSpan);
|
|
250
|
+
var sep = document.createElement('span');
|
|
251
|
+
sep.textContent = '|';
|
|
252
|
+
Object.assign(sep.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
|
|
253
|
+
flexShrink: '0'
|
|
254
|
+
}));
|
|
255
|
+
nameRow.appendChild(sep);
|
|
256
|
+
var posSpan = document.createElement('span');
|
|
257
|
+
posSpan.textContent = positionLine;
|
|
258
|
+
Object.assign(posSpan.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
|
|
259
|
+
flex: '0 1 auto',
|
|
260
|
+
minWidth: '0',
|
|
261
|
+
overflow: 'hidden',
|
|
262
|
+
textOverflow: 'ellipsis',
|
|
263
|
+
whiteSpace: 'nowrap'
|
|
264
|
+
}));
|
|
265
|
+
nameRow.appendChild(posSpan);
|
|
266
|
+
infoCol.appendChild(nameRow);
|
|
267
|
+
if (email) {
|
|
268
|
+
var emailSpan = document.createElement('span');
|
|
269
|
+
emailSpan.textContent = email;
|
|
270
|
+
Object.assign(emailSpan.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
|
|
271
|
+
whiteSpace: 'nowrap',
|
|
272
|
+
maxWidth: '100%',
|
|
273
|
+
overflow: 'hidden',
|
|
274
|
+
textOverflow: 'ellipsis'
|
|
275
|
+
}));
|
|
276
|
+
infoCol.appendChild(emailSpan);
|
|
277
|
+
}
|
|
278
|
+
row.appendChild(avatarWrap);
|
|
279
|
+
row.appendChild(infoCol);
|
|
280
|
+
tooltip.appendChild(row);
|
|
281
|
+
return tooltip;
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Crea un `<span>` atómico listo para insertarse dentro del contenteditable
|
|
286
|
+
* del `ContextMentionEditor`. Se marca con los `data-mention*` necesarios para
|
|
287
|
+
* que `useContextMentions.serialize()` pueda volver a extraer la mention.
|
|
288
|
+
*
|
|
289
|
+
* Comparte los estilos con el componente `ContextMentionChip` via
|
|
290
|
+
* `applyMentionChipStyles`, asegurando una única fuente de verdad visual.
|
|
291
|
+
*/
|
|
292
|
+
export var buildChipElement = function buildChipElement(mention) {
|
|
293
|
+
var chip = document.createElement('span');
|
|
294
|
+
chip.setAttribute('contenteditable', 'false');
|
|
295
|
+
chip.setAttribute('data-mention-chip', 'true');
|
|
296
|
+
chip.className = CONTEXT_MENTION_CHIP_CLASS;
|
|
297
|
+
chip.setAttribute('data-mention-type', mention.type);
|
|
298
|
+
chip.setAttribute('data-mention-surface', 'editor');
|
|
299
|
+
applyMentionChipStyles(chip, mention.type);
|
|
300
|
+
var isTask = mention.type === 'task';
|
|
301
|
+
var common = {
|
|
302
|
+
boxSizing: 'border-box',
|
|
303
|
+
verticalAlign: 'baseline',
|
|
304
|
+
overflow: 'visible',
|
|
305
|
+
maxWidth: '100%'
|
|
306
|
+
};
|
|
307
|
+
if (isTask) {
|
|
308
|
+
Object.assign(chip.style, common, {
|
|
309
|
+
lineHeight: '20px',
|
|
310
|
+
height: 'auto',
|
|
311
|
+
minHeight: 'auto',
|
|
312
|
+
maxHeight: 'none'
|
|
313
|
+
});
|
|
314
|
+
} else {
|
|
315
|
+
Object.assign(chip.style, common, {
|
|
316
|
+
lineHeight: '20px',
|
|
317
|
+
height: 'auto',
|
|
318
|
+
minHeight: 'auto',
|
|
319
|
+
maxHeight: 'none'
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
var mountNode = document.createElement('span');
|
|
323
|
+
mountNode.style.display = 'inline';
|
|
324
|
+
mountNode.style.maxWidth = '100%';
|
|
325
|
+
mountNode.style.verticalAlign = 'baseline';
|
|
326
|
+
mountNode.style.boxSizing = 'border-box';
|
|
327
|
+
chip.appendChild(mountNode);
|
|
328
|
+
var root = createRoot(mountNode);
|
|
329
|
+
flushSync(function () {
|
|
330
|
+
root.render(/*#__PURE__*/createElement(EditableMentionChip, {
|
|
331
|
+
mention: mention
|
|
332
|
+
}));
|
|
333
|
+
});
|
|
334
|
+
if (mention.type === 'task') {
|
|
335
|
+
chip.style.cursor = 'pointer';
|
|
336
|
+
chip.onclick = function (e) {
|
|
337
|
+
e.preventDefault();
|
|
338
|
+
e.stopPropagation();
|
|
339
|
+
openTaskInCorPanel(mention.id, 'detail');
|
|
340
|
+
};
|
|
341
|
+
} else if (mention.type === 'project') {
|
|
342
|
+
chip.style.cursor = 'pointer';
|
|
343
|
+
chip.onclick = function (e) {
|
|
344
|
+
e.preventDefault();
|
|
345
|
+
e.stopPropagation();
|
|
346
|
+
window.open("/project/".concat(mention.id, "/dashboard"), '_blank');
|
|
347
|
+
};
|
|
348
|
+
} else if (mention.type === 'user') {
|
|
349
|
+
var tooltipEl = null;
|
|
350
|
+
var chipRemovedObserver = null;
|
|
351
|
+
var removeUserTooltip = function removeUserTooltip() {
|
|
352
|
+
var _chipRemovedObserver;
|
|
353
|
+
(_chipRemovedObserver = chipRemovedObserver) === null || _chipRemovedObserver === void 0 || _chipRemovedObserver.disconnect();
|
|
354
|
+
chipRemovedObserver = null;
|
|
355
|
+
if (tooltipEl) {
|
|
356
|
+
tooltipEl.remove();
|
|
357
|
+
tooltipEl = null;
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
/** Si el chip se borra del editor (Backspace, etc.) no siempre hay `mouseleave`; cerrar el tooltip. */
|
|
362
|
+
var watchChipRemovedFromDom = function watchChipRemovedFromDom() {
|
|
363
|
+
var _chipRemovedObserver2;
|
|
364
|
+
var parent = chip.parentNode;
|
|
365
|
+
if (!parent) return;
|
|
366
|
+
(_chipRemovedObserver2 = chipRemovedObserver) === null || _chipRemovedObserver2 === void 0 || _chipRemovedObserver2.disconnect();
|
|
367
|
+
chipRemovedObserver = new MutationObserver(function () {
|
|
368
|
+
if (!chip.isConnected) removeUserTooltip();
|
|
369
|
+
});
|
|
370
|
+
chipRemovedObserver.observe(parent, {
|
|
371
|
+
childList: true,
|
|
372
|
+
subtree: true
|
|
373
|
+
});
|
|
374
|
+
};
|
|
375
|
+
chip.addEventListener('mouseenter', function () {
|
|
376
|
+
if (tooltipEl) return;
|
|
377
|
+
tooltipEl = createUserTooltipEl(mention);
|
|
378
|
+
var rect = chip.getBoundingClientRect();
|
|
379
|
+
var left = Math.max(8, Math.min(window.innerWidth - 300, rect.left));
|
|
380
|
+
tooltipEl.style.top = "".concat(rect.top, "px");
|
|
381
|
+
tooltipEl.style.left = "".concat(left, "px");
|
|
382
|
+
tooltipEl.style.transform = 'translateY(calc(-100% - 4px))';
|
|
383
|
+
document.body.appendChild(tooltipEl);
|
|
384
|
+
watchChipRemovedFromDom();
|
|
385
|
+
});
|
|
386
|
+
chip.addEventListener('mouseleave', removeUserTooltip);
|
|
387
|
+
}
|
|
388
|
+
return chip;
|
|
389
|
+
};
|
|
390
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVFbGVtZW50IiwiZmx1c2hTeW5jIiwiY3JlYXRlUm9vdCIsImkxOG4iLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJhcHBseU1lbnRpb25DaGlwU3R5bGVzIiwiTUVOVElPTl9DSElQX0NPTE9SUyIsIkVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFIiwiZGlzcGxheSIsImxpbmVIZWlnaHQiLCJhbGlnblNlbGYiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwid2hpdGVTcGFjZSIsIm92ZXJmbG93V3JhcCIsIndvcmRCcmVhayIsIkVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEUiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJjb2xvciIsImNyZWF0ZUVkaXRhYmxlTWVudGlvbkxhYmVsRWwiLCJpc1Rhc2siLCJtZW50aW9uTGFiZWwiLCJzdHlsZSIsIkVkaXRhYmxlTWVudGlvbkNoaXAiLCJfcmVmIiwibWVudGlvbiIsImxhYmVsIiwiaWNvbkNvbG9yIiwidHlwZSIsImZnIiwiaXNQcm9qZWN0IiwiaWNvblNpemUiLCJsYWJlbEVsIiwib3V0ZXJTdHlsZSIsInBvc2l0aW9uIiwiYm94U2l6aW5nIiwidmVydGljYWxBbGlnbiIsIm1hcmdpblJpZ2h0Iiwid2lkdGgiLCJpZCIsImluaXRpYWxzRnJvbU5hbWUiLCJuYW1lIiwiX3BhcnRzJDIiLCJ0cmltbWVkIiwidHJpbSIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwibGVuZ3RoIiwiX3BhcnRzJDAkY2hhckF0IiwiX3BhcnRzJCIsIl9wYXJ0cyRjaGFyQXQiLCJfcGFydHMiLCJmaXJzdCIsImNoYXJBdCIsImxhc3QiLCJjb25jYXQiLCJ0b1VwcGVyQ2FzZSIsInNpbmdsZSIsInNsaWNlIiwiVE9PTFRJUF9GT05UIiwiVE9PTFRJUF9TRUNPTkRBUllfQ09MT1IiLCJUT09MVElQX1NFQ09OREFSWV9TVFlMRSIsImZvbnRGYW1pbHkiLCJVU0VSX1RPT0xUSVBfTUlOX1dJRFRIX1BYIiwiVVNFUl9UT09MVElQX1BBRF9YX1BYIiwiVVNFUl9UT09MVElQX0FWQVRBUl9HQVBfUFgiLCJVU0VSX1RPT0xUSVBfTkFNRV9ST1dfTUFYX1BYIiwiVVNFUl9UT09MVElQX05BTUVfTUFYX1dJRFRIX1BYIiwiTWF0aCIsImZsb29yIiwiY3JlYXRlVXNlclRvb2x0aXBFbCIsIl9tZXRhZGF0YSRwaWN0dXJlIiwiX21ldGFkYXRhJHBvc2l0aW9uTmFtIiwiX21ldGFkYXRhJHBvc2l0aW9uTmFtMiIsIl9tZXRhZGF0YSRlbWFpbCR0cmltIiwiX21ldGFkYXRhJGVtYWlsIiwiX21ldGFkYXRhJG5hbWUiLCJtZXRhZGF0YSIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ0IiwiZGVmYXVsdFZhbHVlIiwiZW1haWwiLCJuYW1lRm9ySW5pdGlhbHMiLCJ0b29sdGlwIiwiZG9jdW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJ6SW5kZXgiLCJwYWRkaW5nIiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJiYWNrZ3JvdW5kIiwiYm94U2hhZG93IiwicG9pbnRlckV2ZW50cyIsIm92ZXJmbG93Iiwicm93IiwiZ2FwIiwiYXZhdGFyV3JhcCIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiZmxleFNocmluayIsImluaXRpYWxzIiwiY3JlYXRlSW5pdGlhbHNGYWxsYmFjayIsImZiIiwidGV4dENvbnRlbnQiLCJpbWciLCJzcmMiLCJhbHQiLCJkcmFnZ2FibGUiLCJvYmplY3RGaXQiLCJvbmVycm9yIiwicmVtb3ZlIiwiYXBwZW5kQ2hpbGQiLCJpbmZvQ29sIiwibmFtZVJvdyIsIm5hbWVTcGFuIiwiZmxleCIsInRleHRPdmVyZmxvdyIsInNlcCIsIl9vYmplY3RTcHJlYWQiLCJwb3NTcGFuIiwiZW1haWxTcGFuIiwiYnVpbGRDaGlwRWxlbWVudCIsImNoaXAiLCJzZXRBdHRyaWJ1dGUiLCJjbGFzc05hbWUiLCJjb21tb24iLCJtaW5IZWlnaHQiLCJtYXhIZWlnaHQiLCJtb3VudE5vZGUiLCJyb290IiwicmVuZGVyIiwiY3Vyc29yIiwib25jbGljayIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIndpbmRvdyIsIm9wZW4iLCJ0b29sdGlwRWwiLCJjaGlwUmVtb3ZlZE9ic2VydmVyIiwicmVtb3ZlVXNlclRvb2x0aXAiLCJfY2hpcFJlbW92ZWRPYnNlcnZlciIsImRpc2Nvbm5lY3QiLCJ3YXRjaENoaXBSZW1vdmVkRnJvbURvbSIsIl9jaGlwUmVtb3ZlZE9ic2VydmVyMiIsInBhcmVudCIsInBhcmVudE5vZGUiLCJNdXRhdGlvbk9ic2VydmVyIiwiaXNDb25uZWN0ZWQiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsIm1heCIsIm1pbiIsImlubmVyV2lkdGgiLCJ0b3AiLCJ0cmFuc2Zvcm0iLCJib2R5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25DaGlwL2J1aWxkQ2hpcEVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdHlwZSBDU1NQcm9wZXJ0aWVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmbHVzaFN5bmMgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBjcmVhdGVSb290IH0gZnJvbSAncmVhY3QtZG9tL2NsaWVudCdcbmltcG9ydCBpMThuIGZyb20gJy4uLy4uLy4uL2xhbmcnXG5pbXBvcnQgeyBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUywgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGdldENvbnRleHRNZW50aW9uSWNvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25MYWJlbCdcbmltcG9ydCB7IG9wZW5UYXNrSW5Db3JQYW5lbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29wZW5UYXNrSW5Db3JQYW5lbCdcbmltcG9ydCB7IGFwcGx5TWVudGlvbkNoaXBTdHlsZXMsIE1FTlRJT05fQ0hJUF9DT0xPUlMgfSBmcm9tICcuL0NvbnRleHRNZW50aW9uQ2hpcC5zdHlsZXMnXG5cbmNvbnN0IEVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFOiBDU1NQcm9wZXJ0aWVzID0ge1xuICBkaXNwbGF5OiAnaW5saW5lJyxcbiAgbGluZUhlaWdodDogJzIwcHgnLFxuICBhbGlnblNlbGY6ICdiYXNlbGluZScsXG4gIG1pbldpZHRoOiAwLFxuICBtYXhXaWR0aDogJzEwMCUnLFxuICB3aGl0ZVNwYWNlOiAnbm9ybWFsJyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxufVxuXG4vKiogVGV4dG8gZGUgdGFyZWE6IHNpbiBib3JkZSBpbmZlcmlvcjsgZWwgYXNwZWN0byBkZSBlbmxhY2UgbG8gZGEgZWwgQ1NTIGdsb2JhbCAoOjpiZWZvcmUgKyBjb2xvcikuICovXG5jb25zdCBFRElUQUJMRV9UQVNLX0xBQkVMX1NUWUxFOiBDU1NQcm9wZXJ0aWVzID0ge1xuICBkaXNwbGF5OiAnaW5saW5lJyxcbiAgZm9udFNpemU6ICcxNHB4JyxcbiAgbGluZUhlaWdodDogJzIwcHgnLFxuICBmb250V2VpZ2h0OiAnNjAwJyxcbiAgY29sb3I6ICdpbmhlcml0JyxcbiAgbWluV2lkdGg6IDAsXG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIHdoaXRlU3BhY2U6ICdub3JtYWwnLFxuICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59XG5cbmNvbnN0IGNyZWF0ZUVkaXRhYmxlTWVudGlvbkxhYmVsRWwgPSAoaXNUYXNrOiBib29sZWFuLCBtZW50aW9uTGFiZWw6IHN0cmluZykgPT4ge1xuICBpZiAoIWlzVGFzaykge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEUgfSwgbWVudGlvbkxhYmVsKVxuICB9XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogRURJVEFCTEVfVEFTS19MQUJFTF9TVFlMRSB9LCBtZW50aW9uTGFiZWwpXG59XG5cbnR5cGUgRWRpdGFibGVNZW50aW9uQ2hpcFByb3BzID0ge1xuICBtZW50aW9uOiBDb250ZXh0TWVudGlvblxufVxuXG5jb25zdCBFZGl0YWJsZU1lbnRpb25DaGlwID0gKHsgbWVudGlvbiB9OiBFZGl0YWJsZU1lbnRpb25DaGlwUHJvcHMpID0+IHtcbiAgY29uc3QgbWVudGlvbkxhYmVsID0gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChtZW50aW9uLmxhYmVsKVxuICBjb25zdCBpY29uQ29sb3IgPSBNRU5USU9OX0NISVBfQ09MT1JTW21lbnRpb24udHlwZV0uZmdcbiAgY29uc3QgaXNUYXNrID0gbWVudGlvbi50eXBlID09PSAndGFzaydcbiAgY29uc3QgaXNQcm9qZWN0ID0gbWVudGlvbi50eXBlID09PSAncHJvamVjdCdcbiAgY29uc3QgaWNvblNpemUgPSBpc1Rhc2sgPyAxNiA6IDE0XG4gIGNvbnN0IGxhYmVsRWwgPSBjcmVhdGVFZGl0YWJsZU1lbnRpb25MYWJlbEVsKGlzVGFzaywgbWVudGlvbkxhYmVsKVxuXG4gIGNvbnN0IG91dGVyU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgbGluZUhlaWdodDogJzIwcHgnLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHZlcnRpY2FsQWxpZ246ICdiYXNlbGluZScsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgfVxuXG4gIGlmIChpc1Rhc2sgfHwgaXNQcm9qZWN0KSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBvdXRlclN0eWxlIH0sIGxhYmVsRWwpXG4gIH1cblxuICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAnc3BhbicsXG4gICAgeyBzdHlsZTogb3V0ZXJTdHlsZSB9LFxuICAgIGNyZWF0ZUVsZW1lbnQoXG4gICAgICAnc3BhbicsXG4gICAgICB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gICAgICAgICAgbWFyZ2luUmlnaHQ6ICcycHgnLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6ICcxJyxcbiAgICAgICAgICB3aWR0aDogJzE0cHgnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGdldENvbnRleHRNZW50aW9uSWNvbihtZW50aW9uLnR5cGUsIGljb25Db2xvciwgbWVudGlvbi5pZCwgaWNvblNpemUpXG4gICAgKSxcbiAgICBsYWJlbEVsXG4gIClcbn1cblxuY29uc3QgaW5pdGlhbHNGcm9tTmFtZSA9IChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0cmltbWVkID0gbmFtZS50cmltKClcbiAgaWYgKCF0cmltbWVkKSByZXR1cm4gJz8nXG4gIGNvbnN0IHBhcnRzID0gdHJpbW1lZC5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKVxuICBpZiAocGFydHMubGVuZ3RoID49IDIpIHtcbiAgICBjb25zdCBmaXJzdCA9IHBhcnRzWzBdPy5jaGFyQXQoMCkgPz8gJydcbiAgICBjb25zdCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0/LmNoYXJBdCgwKSA/PyAnJ1xuICAgIHJldHVybiBgJHtmaXJzdH0ke2xhc3R9YC50b1VwcGVyQ2FzZSgpXG4gIH1cbiAgY29uc3Qgc2luZ2xlID0gcGFydHNbMF0gPz8gJydcbiAgcmV0dXJuIHNpbmdsZS5sZW5ndGggPj0gMiA/IHNpbmdsZS5zbGljZSgwLCAyKS50b1VwcGVyQ2FzZSgpIDogKHNpbmdsZS5jaGFyQXQoMCkgfHwgJz8nKS50b1VwcGVyQ2FzZSgpXG59XG5cbmNvbnN0IFRPT0xUSVBfRk9OVCA9IGB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpYFxuY29uc3QgVE9PTFRJUF9TRUNPTkRBUllfQ09MT1IgPSAndmFyKC0tVGV4dC1TZWNvbmRhcnktRGFyaywgIzY2NiknXG5jb25zdCBUT09MVElQX1NFQ09OREFSWV9TVFlMRSA9IHtcbiAgZm9udEZhbWlseTogVE9PTFRJUF9GT05ULFxuICBmb250U2l6ZTogJzE0cHgnLFxuICBmb250V2VpZ2h0OiAnNDAwJyxcbiAgbGluZUhlaWdodDogJzIwcHgnLFxuICBjb2xvcjogVE9PTFRJUF9TRUNPTkRBUllfQ09MT1IsXG59XG5cbi8qKiBBbmNobyBtw61uaW1vIGRlbCB0b29sdGlwIChpbmNsLiBwYWRkaW5nIGhvcml6b250YWwgOCs4KS4gKi9cbmNvbnN0IFVTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFggPSAyOTJcbi8qKiBQYWRkaW5nIGhvcml6b250YWwgdG90YWwgZGVsIHRvb2x0aXAuICovXG5jb25zdCBVU0VSX1RPT0xUSVBfUEFEX1hfUFggPSAxNlxuLyoqIEF2YXRhciAyNHB4ICsgZ2FwIDhweCByZXNwZWN0byBhIGxhIGNvbHVtbmEgZGUgdGV4dG8uICovXG5jb25zdCBVU0VSX1RPT0xUSVBfQVZBVEFSX0dBUF9QWCA9IDMyXG4vKipcbiAqIEFuY2hvIG3DoXhpbW8gZGUgbGEgZmlsYSBub21icmUgfCBwb3NpY2nDs246IG1pc21vIGh1ZWNvIHF1ZSBjb24gdG9vbHRpcCBmaWpvIDI5MnB4LFxuICogcGFyYSBxdWUgc29sbyBlbCBlbWFpbCBlbnNhbmNoZSBlbCBjb250ZW5lZG9yLlxuICovXG5jb25zdCBVU0VSX1RPT0xUSVBfTkFNRV9ST1dfTUFYX1BYID0gVVNFUl9UT09MVElQX01JTl9XSURUSF9QWCAtIFVTRVJfVE9PTFRJUF9QQURfWF9QWCAtIFVTRVJfVE9PTFRJUF9BVkFUQVJfR0FQX1BYXG4vKipcbiAqIFRvcGUgZGUgYW5jaG8gZGVsIG5vbWJyZSBlbiBsYSBmaWxhOiBwb3IgZGViYWpvIGRlbCBtw6F4aW1vIGRlIGZpbGEgcGFyYSBxdWUgZWwgZWxsaXBzaXNcbiAqIGRlbCBub21icmUgYXBhcmV6Y2EgYW50ZXMgeSBxdWVkZSBtw6FzIGVzcGFjaW8gdmlzaWJsZSBwYXJhIHBvc2ljacOzbi9jYXJnby5cbiAqL1xuY29uc3QgVVNFUl9UT09MVElQX05BTUVfTUFYX1dJRFRIX1BYID0gTWF0aC5mbG9vcihVU0VSX1RPT0xUSVBfTkFNRV9ST1dfTUFYX1BYICogMC40MilcblxuY29uc3QgY3JlYXRlVXNlclRvb2x0aXBFbCA9IChtZW50aW9uOiBDb250ZXh0TWVudGlvbik6IEhUTUxFbGVtZW50ID0+IHtcbiAgY29uc3QgeyBsYWJlbCwgbWV0YWRhdGEgfSA9IG1lbnRpb25cbiAgY29uc3QgcGljdHVyZSA9IG1ldGFkYXRhPy5waWN0dXJlID8/IG51bGxcbiAgY29uc3QgcG9zaXRpb25OYW1lID0gbWV0YWRhdGE/LnBvc2l0aW9uTmFtZT8udHJpbSgpID8/ICcnXG4gIGNvbnN0IHBvc2l0aW9uTGluZSA9XG4gICAgcG9zaXRpb25OYW1lIHx8XG4gICAgaTE4bi50KCdjb250ZXh0TWVudGlvbi51c2VyTm9Qb3NpdGlvbicsIHtcbiAgICAgIGRlZmF1bHRWYWx1ZTogJ1NpbiBwb3NpY2nDs24nLFxuICAgIH0pXG4gIGNvbnN0IGVtYWlsID0gbWV0YWRhdGE/LmVtYWlsPy50cmltKCkgPz8gJydcbiAgLyoqIE1pc21hIGZ1ZW50ZSBxdWUgYENvbnRleHRNZW50aW9uSXRlbWAgKGF2YXRhcik6IG5vbWJyZSBkZSBxdWVyeSwgbm8gZWwgbGFiZWwgZGVsIGNoaXAgKGVqLiBcIllvXCIpLiAqL1xuICBjb25zdCBuYW1lRm9ySW5pdGlhbHMgPSAobWV0YWRhdGE/Lm5hbWU/LnRyaW0oKSA/IG1ldGFkYXRhLm5hbWUgOiBsYWJlbCkudHJpbSgpXG5cbiAgY29uc3QgdG9vbHRpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24odG9vbHRpcC5zdHlsZSwge1xuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgIHpJbmRleDogJzk5OTknLFxuICAgIG1pbldpZHRoOiBgJHtVU0VSX1RPT0xUSVBfTUlOX1dJRFRIX1BYfXB4YCxcbiAgICB3aWR0aDogJ21heC1jb250ZW50JyxcbiAgICBtYXhXaWR0aDogJ21pbig1NjBweCwgY2FsYygxMDB2dyAtIDI0cHgpKScsXG4gICAgcGFkZGluZzogJzEycHggOHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgYWxpZ25JdGVtczogJ2ZsZXgtc3RhcnQnLFxuICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkIHZhcigtLUNvbG9yLUxpZ2h0LUdyYXksICNFMEUwRTApJyxcbiAgICBiYWNrZ3JvdW5kOiAnI0ZGRicsXG4gICAgYm94U2hhZG93OiAnMCAxcHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KSwgMCAxcHggNHB4IDAgcmdiYSgwLDAsMCwwLjA0KScsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgfSlcblxuICBjb25zdCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICBPYmplY3QuYXNzaWduKHJvdy5zdHlsZSwge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBnYXA6ICc4cHgnLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgbWluV2lkdGg6ICcwJyxcbiAgfSlcblxuICAvLyBBdmF0YXIgY2lyY3VsYXIgKGZvdG8gbyBpbmljaWFsZXMpXG4gIGNvbnN0IGF2YXRhcldyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICBPYmplY3QuYXNzaWduKGF2YXRhcldyYXAuc3R5bGUsIHtcbiAgICB3aWR0aDogJzI0cHgnLFxuICAgIGhlaWdodDogJzI0cHgnLFxuICAgIG1pbldpZHRoOiAnMjRweCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnMjRweCcsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgLyoqIE1pc21vIGZvbmRvIHF1ZSBgU0NNVXNlckF2YXRhckZhbGxiYWNrYCBlbiBsYSBmaWxhIGRlIHVzdWFyaW8gZGVsIG1vZGFsLiAqL1xuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1jb3ItY29sb3ItZ3JleS0yMDAsICNlMGUwZTApJyxcbiAgICBmbGV4U2hyaW5rOiAnMCcsXG4gIH0pXG5cbiAgY29uc3QgaW5pdGlhbHMgPSBpbml0aWFsc0Zyb21OYW1lKG5hbWVGb3JJbml0aWFscylcblxuICBjb25zdCBjcmVhdGVJbml0aWFsc0ZhbGxiYWNrID0gKCk6IEhUTUxFbGVtZW50ID0+IHtcbiAgICBjb25zdCBmYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICAgIGZiLnRleHRDb250ZW50ID0gaW5pdGlhbHNcbiAgICBPYmplY3QuYXNzaWduKGZiLnN0eWxlLCB7XG4gICAgICBmb250U2l6ZTogJzEwcHgnLFxuICAgICAgZm9udFdlaWdodDogJzYwMCcsXG4gICAgICAvKiogTWlzbW8gY29sb3IgcXVlIGBTQ01Vc2VyQXZhdGFyRmFsbGJhY2tgIGVuIGxhIGZpbGEgZGUgdXN1YXJpbyBkZWwgbW9kYWwuICovXG4gICAgICBjb2xvcjogJ3ZhcigtLWNvci1jb2xvci10ZXh0LXNlY29uZGFyeSwgIzY2NiknLFxuICAgICAgbGluZUhlaWdodDogJzEnLFxuICAgICAgZm9udEZhbWlseTogVE9PTFRJUF9GT05ULFxuICAgIH0pXG4gICAgcmV0dXJuIGZiXG4gIH1cblxuICBpZiAocGljdHVyZSkge1xuICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpXG4gICAgaW1nLnNyYyA9IHBpY3R1cmVcbiAgICBpbWcuYWx0ID0gJydcbiAgICBpbWcuZHJhZ2dhYmxlID0gZmFsc2VcbiAgICBPYmplY3QuYXNzaWduKGltZy5zdHlsZSwge1xuICAgICAgd2lkdGg6ICcyNHB4JyxcbiAgICAgIGhlaWdodDogJzI0cHgnLFxuICAgICAgb2JqZWN0Rml0OiAnY292ZXInLFxuICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzI0cHgnLFxuICAgIH0pXG4gICAgaW1nLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICBpbWcucmVtb3ZlKClcbiAgICAgIGF2YXRhcldyYXAuYXBwZW5kQ2hpbGQoY3JlYXRlSW5pdGlhbHNGYWxsYmFjaygpKVxuICAgIH1cbiAgICBhdmF0YXJXcmFwLmFwcGVuZENoaWxkKGltZylcbiAgfSBlbHNlIHtcbiAgICBhdmF0YXJXcmFwLmFwcGVuZENoaWxkKGNyZWF0ZUluaXRpYWxzRmFsbGJhY2soKSlcbiAgfVxuXG4gIC8vIENvbHVtbmEgZGUgaW5mbzogYW5jaG8gPSBtYXgoZmlsYSBub21icmUsIGVtYWlsKTsgc2luIGZvcnphciAyNDRweCBzaSBlbCBjb250ZW5pZG8gZXMgbcOhcyBjb3J0by5cbiAgY29uc3QgaW5mb0NvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24oaW5mb0NvbC5zdHlsZSwge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgYWxpZ25JdGVtczogJ2ZsZXgtc3RhcnQnLFxuICAgIGdhcDogJzJweCcsXG4gICAgbWluV2lkdGg6ICcwJyxcbiAgICB3aWR0aDogJ21heC1jb250ZW50JyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICB9KVxuXG4gIC8vIEZpbGE6IG5vbWJyZSB8IHBvc2ljacOzbiDigJQgbWF4LWNvbnRlbnQgcGFyYSBubyBkZWphciBodWVjbyBlbnRyZSBub21icmUgY29ydG8geSBlbCBwaXBlIChldml0YXIgZmxleCA1MC81MCkuXG4gIGNvbnN0IG5hbWVSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICBPYmplY3QuYXNzaWduKG5hbWVSb3cuc3R5bGUsIHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2ZsZXgtc3RhcnQnLFxuICAgIGdhcDogJzRweCcsXG4gICAgbWluV2lkdGg6ICcwJyxcbiAgICB3aWR0aDogJ21heC1jb250ZW50JyxcbiAgICBtYXhXaWR0aDogYCR7VVNFUl9UT09MVElQX05BTUVfUk9XX01BWF9QWH1weGAsXG4gIH0pXG5cbiAgY29uc3QgbmFtZVNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgbmFtZVNwYW4udGV4dENvbnRlbnQgPSBsYWJlbFxuICBPYmplY3QuYXNzaWduKG5hbWVTcGFuLnN0eWxlLCB7XG4gICAgZmxleDogJzAgMSBhdXRvJyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIG1heFdpZHRoOiBgJHtVU0VSX1RPT0xUSVBfTkFNRV9NQVhfV0lEVEhfUFh9cHhgLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgY29sb3I6ICd2YXIoLS1UZXh0LVByaW1hcnktRGFyaywgIzIwMjAxRiknLFxuICAgIGZvbnRGYW1pbHk6IFRPT0xUSVBfRk9OVCxcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGZvbnRXZWlnaHQ6ICc1MDAnLFxuICAgIGxpbmVIZWlnaHQ6ICcxMzAlJyxcbiAgfSlcbiAgbmFtZVJvdy5hcHBlbmRDaGlsZChuYW1lU3BhbilcblxuICBjb25zdCBzZXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgc2VwLnRleHRDb250ZW50ID0gJ3wnXG4gIE9iamVjdC5hc3NpZ24oc2VwLnN0eWxlLCB7IC4uLlRPT0xUSVBfU0VDT05EQVJZX1NUWUxFLCBmbGV4U2hyaW5rOiAnMCcgfSlcbiAgbmFtZVJvdy5hcHBlbmRDaGlsZChzZXApXG5cbiAgY29uc3QgcG9zU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBwb3NTcGFuLnRleHRDb250ZW50ID0gcG9zaXRpb25MaW5lXG4gIE9iamVjdC5hc3NpZ24ocG9zU3Bhbi5zdHlsZSwge1xuICAgIC4uLlRPT0xUSVBfU0VDT05EQVJZX1NUWUxFLFxuICAgIGZsZXg6ICcwIDEgYXV0bycsXG4gICAgbWluV2lkdGg6ICcwJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICB9KVxuICBuYW1lUm93LmFwcGVuZENoaWxkKHBvc1NwYW4pXG5cbiAgaW5mb0NvbC5hcHBlbmRDaGlsZChuYW1lUm93KVxuXG4gIGlmIChlbWFpbCkge1xuICAgIGNvbnN0IGVtYWlsU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICAgIGVtYWlsU3Bhbi50ZXh0Q29udGVudCA9IGVtYWlsXG4gICAgT2JqZWN0LmFzc2lnbihlbWFpbFNwYW4uc3R5bGUsIHtcbiAgICAgIC4uLlRPT0xUSVBfU0VDT05EQVJZX1NUWUxFLFxuICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIH0pXG4gICAgaW5mb0NvbC5hcHBlbmRDaGlsZChlbWFpbFNwYW4pXG4gIH1cblxuICByb3cuYXBwZW5kQ2hpbGQoYXZhdGFyV3JhcClcbiAgcm93LmFwcGVuZENoaWxkKGluZm9Db2wpXG4gIHRvb2x0aXAuYXBwZW5kQ2hpbGQocm93KVxuXG4gIHJldHVybiB0b29sdGlwXG59XG5cbi8qKlxuICogQ3JlYSB1biBgPHNwYW4+YCBhdMOzbWljbyBsaXN0byBwYXJhIGluc2VydGFyc2UgZGVudHJvIGRlbCBjb250ZW50ZWRpdGFibGVcbiAqIGRlbCBgQ29udGV4dE1lbnRpb25FZGl0b3JgLiBTZSBtYXJjYSBjb24gbG9zIGBkYXRhLW1lbnRpb24qYCBuZWNlc2FyaW9zIHBhcmFcbiAqIHF1ZSBgdXNlQ29udGV4dE1lbnRpb25zLnNlcmlhbGl6ZSgpYCBwdWVkYSB2b2x2ZXIgYSBleHRyYWVyIGxhIG1lbnRpb24uXG4gKlxuICogQ29tcGFydGUgbG9zIGVzdGlsb3MgY29uIGVsIGNvbXBvbmVudGUgYENvbnRleHRNZW50aW9uQ2hpcGAgdmlhXG4gKiBgYXBwbHlNZW50aW9uQ2hpcFN0eWxlc2AsIGFzZWd1cmFuZG8gdW5hIMO6bmljYSBmdWVudGUgZGUgdmVyZGFkIHZpc3VhbC5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkQ2hpcEVsZW1lbnQgPSAobWVudGlvbjogQ29udGV4dE1lbnRpb24pOiBIVE1MU3BhbkVsZW1lbnQgPT4ge1xuICBjb25zdCBjaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKVxuICBjaGlwLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLWNoaXAnLCAndHJ1ZScpXG4gIGNoaXAuY2xhc3NOYW1lID0gQ09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1NcbiAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi10eXBlJywgbWVudGlvbi50eXBlKVxuICBjaGlwLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXN1cmZhY2UnLCAnZWRpdG9yJylcbiAgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcyhjaGlwLCBtZW50aW9uLnR5cGUpXG4gIGNvbnN0IGlzVGFzayA9IG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGNvbW1vbiA9IHtcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUnLFxuICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgfSBhcyBjb25zdFxuICBpZiAoaXNUYXNrKSB7XG4gICAgT2JqZWN0LmFzc2lnbihjaGlwLnN0eWxlLCBjb21tb24sIHtcbiAgICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgbWluSGVpZ2h0OiAnYXV0bycsXG4gICAgICBtYXhIZWlnaHQ6ICdub25lJyxcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIE9iamVjdC5hc3NpZ24oY2hpcC5zdHlsZSwgY29tbW9uLCB7XG4gICAgICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gICAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAgIG1pbkhlaWdodDogJ2F1dG8nLFxuICAgICAgbWF4SGVpZ2h0OiAnbm9uZScsXG4gICAgfSlcbiAgfVxuICBjb25zdCBtb3VudE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgbW91bnROb2RlLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJ1xuICBtb3VudE5vZGUuc3R5bGUubWF4V2lkdGggPSAnMTAwJSdcbiAgbW91bnROb2RlLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAnYmFzZWxpbmUnXG4gIG1vdW50Tm9kZS5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCdcbiAgY2hpcC5hcHBlbmRDaGlsZChtb3VudE5vZGUpXG4gIGNvbnN0IHJvb3QgPSBjcmVhdGVSb290KG1vdW50Tm9kZSlcblxuICBmbHVzaFN5bmMoKCkgPT4ge1xuICAgIHJvb3QucmVuZGVyKGNyZWF0ZUVsZW1lbnQoRWRpdGFibGVNZW50aW9uQ2hpcCwgeyBtZW50aW9uIH0pKVxuICB9KVxuXG4gIGlmIChtZW50aW9uLnR5cGUgPT09ICd0YXNrJykge1xuICAgIGNoaXAuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInXG4gICAgY2hpcC5vbmNsaWNrID0gZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIG9wZW5UYXNrSW5Db3JQYW5lbChtZW50aW9uLmlkLCAnZGV0YWlsJylcbiAgICB9XG4gIH0gZWxzZSBpZiAobWVudGlvbi50eXBlID09PSAncHJvamVjdCcpIHtcbiAgICBjaGlwLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJ1xuICAgIGNoaXAub25jbGljayA9IGUgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICB3aW5kb3cub3BlbihgL3Byb2plY3QvJHttZW50aW9uLmlkfS9kYXNoYm9hcmRgLCAnX2JsYW5rJylcbiAgICB9XG4gIH0gZWxzZSBpZiAobWVudGlvbi50eXBlID09PSAndXNlcicpIHtcbiAgICBsZXQgdG9vbHRpcEVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsXG4gICAgbGV0IGNoaXBSZW1vdmVkT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbFxuXG4gICAgY29uc3QgcmVtb3ZlVXNlclRvb2x0aXAgPSAoKSA9PiB7XG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyPy5kaXNjb25uZWN0KClcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIgPSBudWxsXG4gICAgICBpZiAodG9vbHRpcEVsKSB7XG4gICAgICAgIHRvb2x0aXBFbC5yZW1vdmUoKVxuICAgICAgICB0b29sdGlwRWwgPSBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNpIGVsIGNoaXAgc2UgYm9ycmEgZGVsIGVkaXRvciAoQmFja3NwYWNlLCBldGMuKSBubyBzaWVtcHJlIGhheSBgbW91c2VsZWF2ZWA7IGNlcnJhciBlbCB0b29sdGlwLiAqL1xuICAgIGNvbnN0IHdhdGNoQ2hpcFJlbW92ZWRGcm9tRG9tID0gKCkgPT4ge1xuICAgICAgY29uc3QgcGFyZW50ID0gY2hpcC5wYXJlbnROb2RlXG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuXG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyPy5kaXNjb25uZWN0KClcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIGlmICghY2hpcC5pc0Nvbm5lY3RlZCkgcmVtb3ZlVXNlclRvb2x0aXAoKVxuICAgICAgfSlcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnQsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgY2hpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgaWYgKHRvb2x0aXBFbCkgcmV0dXJuXG4gICAgICB0b29sdGlwRWwgPSBjcmVhdGVVc2VyVG9vbHRpcEVsKG1lbnRpb24pXG4gICAgICBjb25zdCByZWN0ID0gY2hpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHdpbmRvdy5pbm5lcldpZHRoIC0gMzAwLCByZWN0LmxlZnQpKVxuICAgICAgdG9vbHRpcEVsLnN0eWxlLnRvcCA9IGAke3JlY3QudG9wfXB4YFxuICAgICAgdG9vbHRpcEVsLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YFxuICAgICAgdG9vbHRpcEVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSA0cHgpKSdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9vbHRpcEVsKVxuICAgICAgd2F0Y2hDaGlwUmVtb3ZlZEZyb21Eb20oKVxuICAgIH0pXG5cbiAgICBjaGlwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCByZW1vdmVVc2VyVG9vbHRpcClcbiAgfVxuXG4gIHJldHVybiBjaGlwXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLGFBQWEsUUFBNEIsT0FBTztBQUN6RCxTQUFTQyxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTQyxVQUFVLFFBQVEsa0JBQWtCO0FBQzdDLE9BQU9DLElBQUksTUFBTSxlQUFlO0FBQ2hDLFNBQVNDLDBCQUEwQixRQUF3QiwrQkFBK0I7QUFDMUYsU0FBU0MscUJBQXFCLFFBQVEsb0NBQW9DO0FBQzFFLFNBQVNDLDRCQUE0QixRQUFRLG9DQUFvQztBQUNqRixTQUFTQyxrQkFBa0IsUUFBUSxtQ0FBbUM7QUFDdEUsU0FBU0Msc0JBQXNCLEVBQUVDLG1CQUFtQixRQUFRLDZCQUE2QjtBQUV6RixJQUFNQyw2QkFBNEMsR0FBRztFQUNuREMsT0FBTyxFQUFFLFFBQVE7RUFDakJDLFVBQVUsRUFBRSxNQUFNO0VBQ2xCQyxTQUFTLEVBQUUsVUFBVTtFQUNyQkMsUUFBUSxFQUFFLENBQUM7RUFDWEMsUUFBUSxFQUFFLE1BQU07RUFDaEJDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCQyxZQUFZLEVBQUUsWUFBWTtFQUMxQkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQzs7QUFFRDtBQUNBLElBQU1DLHlCQUF3QyxHQUFHO0VBQy9DUixPQUFPLEVBQUUsUUFBUTtFQUNqQlMsUUFBUSxFQUFFLE1BQU07RUFDaEJSLFVBQVUsRUFBRSxNQUFNO0VBQ2xCUyxVQUFVLEVBQUUsS0FBSztFQUNq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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=
|