@projectcor/maia-components 2.11.41 → 2.11.42-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +432 -0
- package/lib/components/atoms/ContextMentionChip/index.js +4 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +225 -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 +148 -0
- package/lib/components/atoms/ContextMentionItem/index.js +2 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +160 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +79 -0
- package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
- package/lib/components/atoms/EntitySelector/EntitySelector.js +47 -3
- package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +3 -3
- package/lib/components/atoms/MAIAInput/MAIAInput.js +246 -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 +1097 -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/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 +355 -0
- package/package.json +2 -1
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import styled, { css } from 'styled-components';
|
|
3
|
+
import { CONTEXT_MENTION_CHIP_CLASS } from '../types/contextMention';
|
|
4
|
+
import { MENTION_CHIP_COLORS, MENTION_CHIP_NON_TASK_HOVER_BG } from '../components/atoms/ContextMentionChip/ContextMentionChip.styles';
|
|
5
|
+
import { VIOLET_IA_COLORS } from '../styles/config';
|
|
6
|
+
import { SCTaskLink } from '../components/molecules/ChatAIMessages/newStyles';
|
|
7
|
+
import { getContextMentionIcon } from './contextMentionIcons';
|
|
8
|
+
import { normalizeContextMentionLabel } from './contextMentionLabel';
|
|
9
|
+
import { openTaskInCorPanel } from './openTaskInCorPanel';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Formato del marcador que viaja en el texto del mensaje:
|
|
13
|
+
* [[mention:<type>:<id>|<label>]]
|
|
14
|
+
*
|
|
15
|
+
* El editor lo emite cuando serializa el contenteditable, el backend lo
|
|
16
|
+
* persiste tal cual y al renderizar se transforma en un link markdown con
|
|
17
|
+
* un protocolo propio que `CustomLink` intercepta y dibuja como span
|
|
18
|
+
* estilado.
|
|
19
|
+
*
|
|
20
|
+
* Por separado, la metadata `context_message` lleva los valores limpios
|
|
21
|
+
* (id + name) para que el backend pueda interpretar las entidades sin
|
|
22
|
+
* tener que parsear el texto.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Label puede contener `]` (ej: "[Educate]Blog Post ..."), por eso
|
|
26
|
+
* se captura de forma lazy hasta el cierre real `]]`.
|
|
27
|
+
*/
|
|
28
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
29
|
+
export var MENTION_MARKER_REGEX = /\[\[mention:(client|project|task|user|mcp):([^|\]]+)\|([\s\S]*?)\]\]/g;
|
|
30
|
+
export var MAIA_MENTION_PROTOCOL = 'maia-mention://';
|
|
31
|
+
var INCOMPLETE_MENTION_MARKER_REGEX = /\[\[mention:[\s\S]*$/;
|
|
32
|
+
var ALLOWED_TYPES = ['client', 'project', 'task', 'user', 'mcp'];
|
|
33
|
+
var parseMentionProtocolHref = function parseMentionProtocolHref(href) {
|
|
34
|
+
var rest = href.slice(MAIA_MENTION_PROTOCOL.length);
|
|
35
|
+
var slashIdx = rest.indexOf('/');
|
|
36
|
+
var rawType = slashIdx >= 0 ? rest.slice(0, slashIdx) : rest;
|
|
37
|
+
var rawId = slashIdx >= 0 ? rest.slice(slashIdx + 1) : '';
|
|
38
|
+
var id = '';
|
|
39
|
+
try {
|
|
40
|
+
id = rawId ? decodeURIComponent(rawId) : '';
|
|
41
|
+
} catch (_unused) {
|
|
42
|
+
id = rawId;
|
|
43
|
+
}
|
|
44
|
+
var type = ALLOWED_TYPES.includes(rawType) ? rawType : 'user';
|
|
45
|
+
return {
|
|
46
|
+
type: type,
|
|
47
|
+
id: id
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/** Genera el marcador para un mention dado. Lo usa el editor al serializar. */
|
|
52
|
+
export var serializeMention = function serializeMention(mention) {
|
|
53
|
+
return "[[mention:".concat(mention.type, ":").concat(mention.id, "|").concat(mention.label, "]]");
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Convierte cada `[[mention:...]]` en un link markdown con protocolo propio
|
|
58
|
+
* para que Streamdown lo emita como `<a>` y `CustomLink` lo intercepte.
|
|
59
|
+
*/
|
|
60
|
+
export var transformMentionMarkers = function transformMentionMarkers(text) {
|
|
61
|
+
if (!text) return text;
|
|
62
|
+
return text.replace(MENTION_MARKER_REGEX, function (_m, type, id, label) {
|
|
63
|
+
var safeLabel = String(label).replace(/[\\\]]/g, '\\$&');
|
|
64
|
+
return "[".concat(safeLabel, "](").concat(MAIA_MENTION_PROTOCOL).concat(type, "/").concat(encodeURIComponent(String(id)), ")");
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
var mentionChildrenToLabel = function mentionChildrenToLabel(children) {
|
|
68
|
+
if (typeof children === 'string') return normalizeContextMentionLabel(children);
|
|
69
|
+
if (children == null || children === false) return '';
|
|
70
|
+
if (Array.isArray(children)) {
|
|
71
|
+
return normalizeContextMentionLabel(children.map(function (c) {
|
|
72
|
+
return typeof c === 'string' ? c : '';
|
|
73
|
+
}).join(''));
|
|
74
|
+
}
|
|
75
|
+
return normalizeContextMentionLabel(String(children));
|
|
76
|
+
};
|
|
77
|
+
var splitLabelFirstWord = function splitLabelFirstWord(label) {
|
|
78
|
+
var normalized = normalizeContextMentionLabel(label).trim();
|
|
79
|
+
if (!normalized) return {
|
|
80
|
+
firstWord: '',
|
|
81
|
+
rest: ''
|
|
82
|
+
};
|
|
83
|
+
var firstWhitespaceIdx = normalized.search(/\s/);
|
|
84
|
+
if (firstWhitespaceIdx < 0) return {
|
|
85
|
+
firstWord: normalized,
|
|
86
|
+
rest: ''
|
|
87
|
+
};
|
|
88
|
+
return {
|
|
89
|
+
firstWord: normalized.slice(0, firstWhitespaceIdx),
|
|
90
|
+
rest: normalized.slice(firstWhitespaceIdx)
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
var inlineMentionHoverCss = function inlineMentionHoverCss(type, isClickable) {
|
|
94
|
+
var bg = type === 'project' ? VIOLET_IA_COLORS[100] : MENTION_CHIP_NON_TASK_HOVER_BG;
|
|
95
|
+
return css(["background:", ";opacity:", ";"], bg, isClickable ? 0.95 : 1);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/** Span inline estilado (menciones no-task en chat). */
|
|
99
|
+
var SCInlineMention = styled.span.withConfig({
|
|
100
|
+
displayName: "renderContextMentions__SCInlineMention",
|
|
101
|
+
componentId: "sc-f3uz3m-0"
|
|
102
|
+
})(["display:inline;padding:2px 4px;margin:0 1px;border-radius:4px;font-family:var(--cor-typography-font-family,'Work Sans');font-weight:500;font-size:inherit;line-height:inherit;background:", ";color:", ";white-space:normal;overflow-wrap:break-word;word-break:break-word;cursor:", ";text-decoration:none;box-sizing:border-box;&:hover{", "}"], function (_ref) {
|
|
103
|
+
var _MENTION_CHIP_COLORS$;
|
|
104
|
+
var $type = _ref.$type;
|
|
105
|
+
return ((_MENTION_CHIP_COLORS$ = MENTION_CHIP_COLORS[$type]) !== null && _MENTION_CHIP_COLORS$ !== void 0 ? _MENTION_CHIP_COLORS$ : MENTION_CHIP_COLORS.user).bg;
|
|
106
|
+
}, function (_ref2) {
|
|
107
|
+
var _MENTION_CHIP_COLORS$2;
|
|
108
|
+
var $type = _ref2.$type;
|
|
109
|
+
return ((_MENTION_CHIP_COLORS$2 = MENTION_CHIP_COLORS[$type]) !== null && _MENTION_CHIP_COLORS$2 !== void 0 ? _MENTION_CHIP_COLORS$2 : MENTION_CHIP_COLORS.user).fg;
|
|
110
|
+
}, function (_ref3) {
|
|
111
|
+
var $isClickable = _ref3.$isClickable;
|
|
112
|
+
return $isClickable ? 'pointer' : 'default';
|
|
113
|
+
}, function (_ref4) {
|
|
114
|
+
var $type = _ref4.$type,
|
|
115
|
+
$isClickable = _ref4.$isClickable;
|
|
116
|
+
return inlineMentionHoverCss($type, $isClickable);
|
|
117
|
+
});
|
|
118
|
+
var SCInlineMentionIcon = styled.span.withConfig({
|
|
119
|
+
displayName: "renderContextMentions__SCInlineMentionIcon",
|
|
120
|
+
componentId: "sc-f3uz3m-1"
|
|
121
|
+
})(["display:inline-block;vertical-align:middle;margin-right:2px;line-height:1;width:", ";height:", ";"], function (_ref5) {
|
|
122
|
+
var $task = _ref5.$task;
|
|
123
|
+
return $task ? '16px' : '14px';
|
|
124
|
+
}, function (_ref6) {
|
|
125
|
+
var $task = _ref6.$task;
|
|
126
|
+
return $task ? '16px' : '14px';
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Si el href corresponde al protocolo de mention, devuelve un nodo estilado por tipo.
|
|
131
|
+
* Las tareas usan `<a>` como los enlaces de tarea del agente (`.has-task-links`).
|
|
132
|
+
*/
|
|
133
|
+
export var renderMentionLink = function renderMentionLink(href, children) {
|
|
134
|
+
if (!href || !href.startsWith(MAIA_MENTION_PROTOCOL)) return null;
|
|
135
|
+
var _parseMentionProtocol = parseMentionProtocolHref(href),
|
|
136
|
+
type = _parseMentionProtocol.type,
|
|
137
|
+
id = _parseMentionProtocol.id;
|
|
138
|
+
var label = mentionChildrenToLabel(children);
|
|
139
|
+
var isTask = type === 'task';
|
|
140
|
+
var iconSize = isTask ? 16 : 14;
|
|
141
|
+
var taskUrl = "/tasks/".concat(id, "/detail");
|
|
142
|
+
var handleTaskClick = function handleTaskClick(e) {
|
|
143
|
+
if (e.metaKey || e.ctrlKey) return;
|
|
144
|
+
e.preventDefault();
|
|
145
|
+
e.stopPropagation();
|
|
146
|
+
openTaskInCorPanel(id, 'detail');
|
|
147
|
+
};
|
|
148
|
+
var handleTaskKeyDown = function handleTaskKeyDown(e) {
|
|
149
|
+
if (e.key !== 'Enter' && e.key !== ' ') return;
|
|
150
|
+
e.preventDefault();
|
|
151
|
+
openTaskInCorPanel(id, 'detail');
|
|
152
|
+
};
|
|
153
|
+
if (isTask) {
|
|
154
|
+
return /*#__PURE__*/_jsx(SCTaskLink, {
|
|
155
|
+
href: taskUrl,
|
|
156
|
+
className: CONTEXT_MENTION_CHIP_CLASS,
|
|
157
|
+
"data-mention-type": type,
|
|
158
|
+
"data-mention-surface": "chat",
|
|
159
|
+
onClick: handleTaskClick,
|
|
160
|
+
onKeyDown: handleTaskKeyDown,
|
|
161
|
+
children: label
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
var isProject = type === 'project';
|
|
165
|
+
var projectUrl = isProject ? "/projects/".concat(id, "/dashboard") : null;
|
|
166
|
+
var showIcon = !isProject;
|
|
167
|
+
var _splitLabelFirstWord = splitLabelFirstWord(label),
|
|
168
|
+
firstWord = _splitLabelFirstWord.firstWord,
|
|
169
|
+
rest = _splitLabelFirstWord.rest;
|
|
170
|
+
var handleProjectClick = function handleProjectClick(e) {
|
|
171
|
+
if (!projectUrl) return;
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
e.stopPropagation();
|
|
174
|
+
window.open(projectUrl, '_blank');
|
|
175
|
+
};
|
|
176
|
+
return /*#__PURE__*/_jsxs(SCInlineMention, {
|
|
177
|
+
$type: type,
|
|
178
|
+
$isClickable: isProject,
|
|
179
|
+
className: CONTEXT_MENTION_CHIP_CLASS,
|
|
180
|
+
"data-mention-type": type,
|
|
181
|
+
"data-mention-surface": "chat",
|
|
182
|
+
onClick: isProject ? handleProjectClick : undefined,
|
|
183
|
+
role: isProject ? 'button' : undefined,
|
|
184
|
+
tabIndex: isProject ? 0 : undefined,
|
|
185
|
+
children: [showIcon ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
186
|
+
children: [/*#__PURE__*/_jsxs("span", {
|
|
187
|
+
style: {
|
|
188
|
+
display: 'inline-flex',
|
|
189
|
+
alignItems: 'center',
|
|
190
|
+
whiteSpace: 'nowrap',
|
|
191
|
+
maxWidth: '100%'
|
|
192
|
+
},
|
|
193
|
+
children: [/*#__PURE__*/_jsx(SCInlineMentionIcon, {
|
|
194
|
+
$task: isTask,
|
|
195
|
+
children: getContextMentionIcon(type, MENTION_CHIP_COLORS[type].fg, id, iconSize)
|
|
196
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
197
|
+
style: {
|
|
198
|
+
whiteSpace: 'nowrap'
|
|
199
|
+
},
|
|
200
|
+
children: firstWord
|
|
201
|
+
})]
|
|
202
|
+
}), rest ? /*#__PURE__*/_jsx("span", {
|
|
203
|
+
children: rest
|
|
204
|
+
}) : null]
|
|
205
|
+
}) : null, !showIcon ? label : null]
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
/** Quita los markers del texto, dejando solo `label`. Útil para fallback plano. */
|
|
210
|
+
export var stripMentionMarkers = function stripMentionMarkers(text) {
|
|
211
|
+
return text.replace(MENTION_MARKER_REGEX, function (_m, _type, _id, label) {
|
|
212
|
+
return normalizeContextMentionLabel(String(label));
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Títulos de conversación (p. ej. `last_question` derivado del primer mensaje) pueden
|
|
218
|
+
* incluir el texto serializado `[[mention:type:id|label]]`. Para sidebar y listados,
|
|
219
|
+
* reemplaza cada bloque por `label` en texto plano, sin el marcador crudo.
|
|
220
|
+
*/
|
|
221
|
+
export var formatChatListTitleMentions = function formatChatListTitleMentions(text) {
|
|
222
|
+
if (text == null || text === '') return text !== null && text !== void 0 ? text : '';
|
|
223
|
+
var withoutCompleteMarkers = text.replace(MENTION_MARKER_REGEX, function (_m, _type, _id, label) {
|
|
224
|
+
return normalizeContextMentionLabel(String(label).trim());
|
|
225
|
+
});
|
|
226
|
+
return withoutCompleteMarkers.replace(INCOMPLETE_MENTION_MARKER_REGEX, '').trim();
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
/** Genera la URL de navegación para un mention según su tipo. */
|
|
230
|
+
var getMentionUrl = function getMentionUrl(type, id) {
|
|
231
|
+
switch (type) {
|
|
232
|
+
case 'client':
|
|
233
|
+
return "/clients/".concat(id);
|
|
234
|
+
case 'project':
|
|
235
|
+
return "/projects/".concat(id, "/dashboard");
|
|
236
|
+
case 'task':
|
|
237
|
+
return "/tasks/".concat(id, "/detail");
|
|
238
|
+
case 'user':
|
|
239
|
+
return null;
|
|
240
|
+
// Los users no son clickeables
|
|
241
|
+
case 'mcp':
|
|
242
|
+
return null;
|
|
243
|
+
default:
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
var MentionChip = function MentionChip(_ref7) {
|
|
248
|
+
var type = _ref7.type,
|
|
249
|
+
id = _ref7.id,
|
|
250
|
+
label = _ref7.label;
|
|
251
|
+
var normalizedLabel = normalizeContextMentionLabel(label);
|
|
252
|
+
var url = getMentionUrl(type, id);
|
|
253
|
+
var isClickable = !!url;
|
|
254
|
+
var isTask = type === 'task';
|
|
255
|
+
var isProject = type === 'project';
|
|
256
|
+
var showIcon = !isProject;
|
|
257
|
+
var iconSize = isTask ? 16 : 14;
|
|
258
|
+
var _splitLabelFirstWord2 = splitLabelFirstWord(normalizedLabel),
|
|
259
|
+
firstWord = _splitLabelFirstWord2.firstWord,
|
|
260
|
+
rest = _splitLabelFirstWord2.rest;
|
|
261
|
+
var handleClick = function handleClick(e) {
|
|
262
|
+
if (!isClickable || !url) return;
|
|
263
|
+
if (type === 'task') {
|
|
264
|
+
if (e.metaKey || e.ctrlKey) return;
|
|
265
|
+
e.preventDefault();
|
|
266
|
+
e.stopPropagation();
|
|
267
|
+
openTaskInCorPanel(id, 'detail');
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
e.preventDefault();
|
|
271
|
+
window.open(url, '_blank');
|
|
272
|
+
};
|
|
273
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
274
|
+
if (!isClickable || type !== 'task') return;
|
|
275
|
+
if (e.key !== 'Enter' && e.key !== ' ') return;
|
|
276
|
+
e.preventDefault();
|
|
277
|
+
openTaskInCorPanel(id, 'detail');
|
|
278
|
+
};
|
|
279
|
+
if (type === 'task') {
|
|
280
|
+
return /*#__PURE__*/_jsx(SCTaskLink, {
|
|
281
|
+
href: url !== null && url !== void 0 ? url : '#',
|
|
282
|
+
className: CONTEXT_MENTION_CHIP_CLASS,
|
|
283
|
+
"data-mention-type": "task",
|
|
284
|
+
"data-mention-surface": "chat",
|
|
285
|
+
onClick: handleClick,
|
|
286
|
+
onKeyDown: handleKeyDown,
|
|
287
|
+
children: normalizedLabel
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
return /*#__PURE__*/_jsxs(SCInlineMention, {
|
|
291
|
+
$type: type,
|
|
292
|
+
$isClickable: isClickable,
|
|
293
|
+
className: CONTEXT_MENTION_CHIP_CLASS,
|
|
294
|
+
"data-mention-type": type,
|
|
295
|
+
"data-mention-surface": "chat",
|
|
296
|
+
onClick: isClickable ? handleClick : undefined,
|
|
297
|
+
role: isClickable ? 'button' : undefined,
|
|
298
|
+
tabIndex: isClickable ? 0 : undefined,
|
|
299
|
+
children: [showIcon ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
300
|
+
children: [/*#__PURE__*/_jsxs("span", {
|
|
301
|
+
style: {
|
|
302
|
+
display: 'inline-flex',
|
|
303
|
+
alignItems: 'center',
|
|
304
|
+
whiteSpace: 'nowrap',
|
|
305
|
+
maxWidth: '100%'
|
|
306
|
+
},
|
|
307
|
+
children: [/*#__PURE__*/_jsx(SCInlineMentionIcon, {
|
|
308
|
+
$task: isTask,
|
|
309
|
+
children: getContextMentionIcon(type, MENTION_CHIP_COLORS[type].fg, id, iconSize)
|
|
310
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
311
|
+
style: {
|
|
312
|
+
whiteSpace: 'nowrap'
|
|
313
|
+
},
|
|
314
|
+
children: firstWord
|
|
315
|
+
})]
|
|
316
|
+
}), rest ? /*#__PURE__*/_jsx("span", {
|
|
317
|
+
children: rest
|
|
318
|
+
}) : null]
|
|
319
|
+
}) : null, !showIcon ? normalizedLabel : null]
|
|
320
|
+
});
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Splitea el texto por markers y devuelve un array de ReactNodes:
|
|
325
|
+
* texto plano + spans estilados para cada mention. Renderiza directamente
|
|
326
|
+
* sin pasar por Streamdown (no soporta markdown en este modo).
|
|
327
|
+
*/
|
|
328
|
+
export var renderTextWithMentions = function renderTextWithMentions(text) {
|
|
329
|
+
if (!text) return [text];
|
|
330
|
+
var out = [];
|
|
331
|
+
var lastIdx = 0;
|
|
332
|
+
MENTION_MARKER_REGEX.lastIndex = 0;
|
|
333
|
+
var match = MENTION_MARKER_REGEX.exec(text);
|
|
334
|
+
var keyIdx = 0;
|
|
335
|
+
while (match) {
|
|
336
|
+
if (match.index > lastIdx) out.push(text.slice(lastIdx, match.index));
|
|
337
|
+
var _match = match,
|
|
338
|
+
_match2 = _slicedToArray(_match, 4),
|
|
339
|
+
rawType = _match2[1],
|
|
340
|
+
id = _match2[2],
|
|
341
|
+
label = _match2[3];
|
|
342
|
+
var type = ALLOWED_TYPES.includes(rawType) ? rawType : 'user';
|
|
343
|
+
out.push(/*#__PURE__*/_jsx(MentionChip, {
|
|
344
|
+
type: type,
|
|
345
|
+
id: id,
|
|
346
|
+
label: label
|
|
347
|
+
}, "mention-".concat(keyIdx, "-").concat(match.index)));
|
|
348
|
+
lastIdx = match.index + match[0].length;
|
|
349
|
+
keyIdx += 1;
|
|
350
|
+
match = MENTION_MARKER_REGEX.exec(text);
|
|
351
|
+
}
|
|
352
|
+
if (lastIdx < text.length) out.push(text.slice(lastIdx));
|
|
353
|
+
return out;
|
|
354
|
+
};
|
|
355
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJWSU9MRVRfSUFfQ09MT1JTIiwiU0NUYXNrTGluayIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJNRU5USU9OX01BUktFUl9SRUdFWCIsIk1BSUFfTUVOVElPTl9QUk9UT0NPTCIsIklOQ09NUExFVEVfTUVOVElPTl9NQVJLRVJfUkVHRVgiLCJBTExPV0VEX1RZUEVTIiwicGFyc2VNZW50aW9uUHJvdG9jb2xIcmVmIiwiaHJlZiIsInJlc3QiLCJzbGljZSIsImxlbmd0aCIsInNsYXNoSWR4IiwiaW5kZXhPZiIsInJhd1R5cGUiLCJyYXdJZCIsImlkIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiX3VudXNlZCIsInR5cGUiLCJpbmNsdWRlcyIsInNlcmlhbGl6ZU1lbnRpb24iLCJtZW50aW9uIiwiY29uY2F0IiwibGFiZWwiLCJ0cmFuc2Zvcm1NZW50aW9uTWFya2VycyIsInRleHQiLCJyZXBsYWNlIiwiX20iLCJzYWZlTGFiZWwiLCJTdHJpbmciLCJlbmNvZGVVUklDb21wb25lbnQiLCJtZW50aW9uQ2hpbGRyZW5Ub0xhYmVsIiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJjIiwiam9pbiIsInNwbGl0TGFiZWxGaXJzdFdvcmQiLCJub3JtYWxpemVkIiwidHJpbSIsImZpcnN0V29yZCIsImZpcnN0V2hpdGVzcGFjZUlkeCIsInNlYXJjaCIsImlubGluZU1lbnRpb25Ib3ZlckNzcyIsImlzQ2xpY2thYmxlIiwiYmciLCJTQ0lubGluZU1lbnRpb24iLCJzcGFuIiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJfcmVmIiwiX01FTlRJT05fQ0hJUF9DT0xPUlMkIiwiJHR5cGUiLCJ1c2VyIiwiX3JlZjIiLCJfTUVOVElPTl9DSElQX0NPTE9SUyQyIiwiZmciLCJfcmVmMyIsIiRpc0NsaWNrYWJsZSIsIl9yZWY0IiwiU0NJbmxpbmVNZW50aW9uSWNvbiIsIl9yZWY1IiwiJHRhc2siLCJfcmVmNiIsInJlbmRlck1lbnRpb25MaW5rIiwic3RhcnRzV2l0aCIsIl9wYXJzZU1lbnRpb25Qcm90b2NvbCIsImlzVGFzayIsImljb25TaXplIiwidGFza1VybCIsImhhbmRsZVRhc2tDbGljayIsImUiLCJtZXRhS2V5IiwiY3RybEtleSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlVGFza0tleURvd24iLCJrZXkiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25LZXlEb3duIiwiaXNQcm9qZWN0IiwicHJvamVjdFVybCIsInNob3dJY29uIiwiX3NwbGl0TGFiZWxGaXJzdFdvcmQiLCJoYW5kbGVQcm9qZWN0Q2xpY2siLCJ3aW5kb3ciLCJvcGVuIiwidW5kZWZpbmVkIiwicm9sZSIsInRhYkluZGV4Iiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsIndoaXRlU3BhY2UiLCJtYXhXaWR0aCIsInN0cmlwTWVudGlvbk1hcmtlcnMiLCJfdHlwZSIsIl9pZCIsImZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyIsIndpdGhvdXRDb21wbGV0ZU1hcmtlcnMiLCJnZXRNZW50aW9uVXJsIiwiTWVudGlvbkNoaXAiLCJfcmVmNyIsIm5vcm1hbGl6ZWRMYWJlbCIsInVybCIsIl9zcGxpdExhYmVsRmlyc3RXb3JkMiIsImhhbmRsZUNsaWNrIiwiaGFuZGxlS2V5RG93biIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJvdXQiLCJsYXN0SWR4IiwibGFzdEluZGV4IiwibWF0Y2giLCJleGVjIiwia2V5SWR4IiwiaW5kZXgiLCJwdXNoIiwiX21hdGNoIiwiX21hdGNoMiIsIl9zbGljZWRUb0FycmF5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3ROb2RlLCBSZWFjdEVsZW1lbnQsIE1vdXNlRXZlbnQsIEtleWJvYXJkRXZlbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBzdHlsZWQsIHsgY3NzIH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24sIENPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQge1xuICBNRU5USU9OX0NISVBfQ09MT1JTLFxuICBNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkcsXG59IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25DaGlwL0NvbnRleHRNZW50aW9uQ2hpcC5zdHlsZXMnXG5pbXBvcnQgeyBWSU9MRVRfSUFfQ09MT1JTIH0gZnJvbSAnLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7IFNDVGFza0xpbmsgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9uZXdTdHlsZXMnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsIH0gZnJvbSAnLi9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi9vcGVuVGFza0luQ29yUGFuZWwnXG5cbi8qKlxuICogRm9ybWF0byBkZWwgbWFyY2Fkb3IgcXVlIHZpYWphIGVuIGVsIHRleHRvIGRlbCBtZW5zYWplOlxuICogICBbW21lbnRpb246PHR5cGU+OjxpZD58PGxhYmVsPl1dXG4gKlxuICogRWwgZWRpdG9yIGxvIGVtaXRlIGN1YW5kbyBzZXJpYWxpemEgZWwgY29udGVudGVkaXRhYmxlLCBlbCBiYWNrZW5kIGxvXG4gKiBwZXJzaXN0ZSB0YWwgY3VhbCB5IGFsIHJlbmRlcml6YXIgc2UgdHJhbnNmb3JtYSBlbiB1biBsaW5rIG1hcmtkb3duIGNvblxuICogdW4gcHJvdG9jb2xvIHByb3BpbyBxdWUgYEN1c3RvbUxpbmtgIGludGVyY2VwdGEgeSBkaWJ1amEgY29tbyBzcGFuXG4gKiBlc3RpbGFkby5cbiAqXG4gKiBQb3Igc2VwYXJhZG8sIGxhIG1ldGFkYXRhIGBjb250ZXh0X21lc3NhZ2VgIGxsZXZhIGxvcyB2YWxvcmVzIGxpbXBpb3NcbiAqIChpZCArIG5hbWUpIHBhcmEgcXVlIGVsIGJhY2tlbmQgcHVlZGEgaW50ZXJwcmV0YXIgbGFzIGVudGlkYWRlcyBzaW5cbiAqIHRlbmVyIHF1ZSBwYXJzZWFyIGVsIHRleHRvLlxuICovXG4vKipcbiAqIExhYmVsIHB1ZWRlIGNvbnRlbmVyIGBdYCAoZWo6IFwiW0VkdWNhdGVdQmxvZyBQb3N0IC4uLlwiKSwgcG9yIGVzb1xuICogc2UgY2FwdHVyYSBkZSBmb3JtYSBsYXp5IGhhc3RhIGVsIGNpZXJyZSByZWFsIGBdXWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOihjbGllbnR8cHJvamVjdHx0YXNrfHVzZXJ8bWNwKTooW158XFxdXSspXFx8KFtcXHNcXFNdKj8pXFxdXFxdL2dcbmV4cG9ydCBjb25zdCBNQUlBX01FTlRJT05fUFJPVE9DT0wgPSAnbWFpYS1tZW50aW9uOi8vJ1xuY29uc3QgSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOltcXHNcXFNdKiQvXG5cbmNvbnN0IEFMTE9XRURfVFlQRVM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snLCAndXNlcicsICdtY3AnXVxuXG5jb25zdCBwYXJzZU1lbnRpb25Qcm90b2NvbEhyZWYgPSAoaHJlZjogc3RyaW5nKTogeyB0eXBlOiBDb250ZXh0RW50aXR5VHlwZTsgaWQ6IHN0cmluZyB9ID0+IHtcbiAgY29uc3QgcmVzdCA9IGhyZWYuc2xpY2UoTUFJQV9NRU5USU9OX1BST1RPQ09MLmxlbmd0aClcbiAgY29uc3Qgc2xhc2hJZHggPSByZXN0LmluZGV4T2YoJy8nKVxuICBjb25zdCByYXdUeXBlID0gc2xhc2hJZHggPj0gMCA/IHJlc3Quc2xpY2UoMCwgc2xhc2hJZHgpIDogcmVzdFxuICBjb25zdCByYXdJZCA9IHNsYXNoSWR4ID49IDAgPyByZXN0LnNsaWNlKHNsYXNoSWR4ICsgMSkgOiAnJ1xuICBsZXQgaWQgPSAnJ1xuICB0cnkge1xuICAgIGlkID0gcmF3SWQgPyBkZWNvZGVVUklDb21wb25lbnQocmF3SWQpIDogJydcbiAgfSBjYXRjaCB7XG4gICAgaWQgPSByYXdJZFxuICB9XG4gIGNvbnN0IHR5cGUgPSBBTExPV0VEX1RZUEVTLmluY2x1ZGVzKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpID8gKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpIDogJ3VzZXInXG4gIHJldHVybiB7IHR5cGUsIGlkIH1cbn1cblxuLyoqIEdlbmVyYSBlbCBtYXJjYWRvciBwYXJhIHVuIG1lbnRpb24gZGFkby4gTG8gdXNhIGVsIGVkaXRvciBhbCBzZXJpYWxpemFyLiAqL1xuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZU1lbnRpb24gPSAobWVudGlvbjogQ29udGV4dE1lbnRpb24pOiBzdHJpbmcgPT5cbiAgYFtbbWVudGlvbjoke21lbnRpb24udHlwZX06JHttZW50aW9uLmlkfXwke21lbnRpb24ubGFiZWx9XV1gXG5cbi8qKlxuICogQ29udmllcnRlIGNhZGEgYFtbbWVudGlvbjouLi5dXWAgZW4gdW4gbGluayBtYXJrZG93biBjb24gcHJvdG9jb2xvIHByb3Bpb1xuICogcGFyYSBxdWUgU3RyZWFtZG93biBsbyBlbWl0YSBjb21vIGA8YT5gIHkgYEN1c3RvbUxpbmtgIGxvIGludGVyY2VwdGUuXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1NZW50aW9uTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIXRleHQpIHJldHVybiB0ZXh0XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoTUVOVElPTl9NQVJLRVJfUkVHRVgsIChfbSwgdHlwZSwgaWQsIGxhYmVsKSA9PiB7XG4gICAgY29uc3Qgc2FmZUxhYmVsID0gU3RyaW5nKGxhYmVsKS5yZXBsYWNlKC9bXFxcXFxcXV0vZywgJ1xcXFwkJicpXG4gICAgcmV0dXJuIGBbJHtzYWZlTGFiZWx9XSgke01BSUFfTUVOVElPTl9QUk9UT0NPTH0ke3R5cGV9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhpZCkpfSlgXG4gIH0pXG59XG5cbmNvbnN0IG1lbnRpb25DaGlsZHJlblRvTGFiZWwgPSAoY2hpbGRyZW46IFJlYWN0Tm9kZSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnKSByZXR1cm4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChjaGlsZHJlbilcbiAgaWYgKGNoaWxkcmVuID09IG51bGwgfHwgY2hpbGRyZW4gPT09IGZhbHNlKSByZXR1cm4gJydcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoY2hpbGRyZW4ubWFwKGMgPT4gKHR5cGVvZiBjID09PSAnc3RyaW5nJyA/IGMgOiAnJykpLmpvaW4oJycpKVxuICB9XG4gIHJldHVybiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKFN0cmluZyhjaGlsZHJlbikpXG59XG5cbmNvbnN0IHNwbGl0TGFiZWxGaXJzdFdvcmQgPSAobGFiZWw6IHN0cmluZyk6IHsgZmlyc3RXb3JkOiBzdHJpbmc7IHJlc3Q6IHN0cmluZyB9ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobGFiZWwpLnRyaW0oKVxuICBpZiAoIW5vcm1hbGl6ZWQpIHJldHVybiB7IGZpcnN0V29yZDogJycsIHJlc3Q6ICcnIH1cbiAgY29uc3QgZmlyc3RXaGl0ZXNwYWNlSWR4ID0gbm9ybWFsaXplZC5zZWFyY2goL1xccy8pXG4gIGlmIChmaXJzdFdoaXRlc3BhY2VJZHggPCAwKSByZXR1cm4geyBmaXJzdFdvcmQ6IG5vcm1hbGl6ZWQsIHJlc3Q6ICcnIH1cbiAgcmV0dXJuIHtcbiAgICBmaXJzdFdvcmQ6IG5vcm1hbGl6ZWQuc2xpY2UoMCwgZmlyc3RXaGl0ZXNwYWNlSWR4KSxcbiAgICByZXN0OiBub3JtYWxpemVkLnNsaWNlKGZpcnN0V2hpdGVzcGFjZUlkeCksXG4gIH1cbn1cblxuY29uc3QgaW5saW5lTWVudGlvbkhvdmVyQ3NzID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpc0NsaWNrYWJsZT86IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgYmcgPSB0eXBlID09PSAncHJvamVjdCcgPyBWSU9MRVRfSUFfQ09MT1JTWzEwMF0gOiBNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkdcbiAgcmV0dXJuIGNzc2BcbiAgICBiYWNrZ3JvdW5kOiAke2JnfTtcbiAgICBvcGFjaXR5OiAke2lzQ2xpY2thYmxlID8gMC45NSA6IDF9O1xuICBgXG59XG5cbi8qKiBTcGFuIGlubGluZSBlc3RpbGFkbyAobWVuY2lvbmVzIG5vLXRhc2sgZW4gY2hhdCkuICovXG5jb25zdCBTQ0lubGluZU1lbnRpb24gPSBzdHlsZWQuc3Bhbjx7ICR0eXBlOiBDb250ZXh0RW50aXR5VHlwZTsgJGlzQ2xpY2thYmxlPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogaW5saW5lO1xuICBwYWRkaW5nOiAycHggNHB4O1xuICBtYXJnaW46IDAgMXB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kOiAkeyh7ICR0eXBlIH0pID0+IChNRU5USU9OX0NISVBfQ09MT1JTWyR0eXBlXSA/PyBNRU5USU9OX0NISVBfQ09MT1JTLnVzZXIpLmJnfTtcbiAgY29sb3I6ICR7KHsgJHR5cGUgfSkgPT4gKE1FTlRJT05fQ0hJUF9DT0xPUlNbJHR5cGVdID8/IE1FTlRJT05fQ0hJUF9DT0xPUlMudXNlcikuZmd9O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBjdXJzb3I6ICR7KHsgJGlzQ2xpY2thYmxlIH0pID0+ICgkaXNDbGlja2FibGUgPyAncG9pbnRlcicgOiAnZGVmYXVsdCcpfTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICY6aG92ZXIge1xuICAgICR7KHsgJHR5cGUsICRpc0NsaWNrYWJsZSB9KSA9PiBpbmxpbmVNZW50aW9uSG92ZXJDc3MoJHR5cGUsICRpc0NsaWNrYWJsZSl9XG4gIH1cbmBcblxuY29uc3QgU0NJbmxpbmVNZW50aW9uSWNvbiA9IHN0eWxlZC5zcGFuPHsgJHRhc2s/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbi1yaWdodDogMnB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgd2lkdGg6ICR7KHsgJHRhc2sgfSkgPT4gKCR0YXNrID8gJzE2cHgnIDogJzE0cHgnKX07XG4gIGhlaWdodDogJHsoeyAkdGFzayB9KSA9PiAoJHRhc2sgPyAnMTZweCcgOiAnMTRweCcpfTtcbmBcblxuLyoqXG4gKiBTaSBlbCBocmVmIGNvcnJlc3BvbmRlIGFsIHByb3RvY29sbyBkZSBtZW50aW9uLCBkZXZ1ZWx2ZSB1biBub2RvIGVzdGlsYWRvIHBvciB0aXBvLlxuICogTGFzIHRhcmVhcyB1c2FuIGA8YT5gIGNvbW8gbG9zIGVubGFjZXMgZGUgdGFyZWEgZGVsIGFnZW50ZSAoYC5oYXMtdGFzay1saW5rc2ApLlxuICovXG5leHBvcnQgY29uc3QgcmVuZGVyTWVudGlvbkxpbmsgPSAoaHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaGlsZHJlbjogUmVhY3ROb2RlKTogUmVhY3ROb2RlIHwgbnVsbCA9PiB7XG4gIGlmICghaHJlZiB8fCAhaHJlZi5zdGFydHNXaXRoKE1BSUFfTUVOVElPTl9QUk9UT0NPTCkpIHJldHVybiBudWxsXG4gIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHBhcnNlTWVudGlvblByb3RvY29sSHJlZihocmVmKVxuICBjb25zdCBsYWJlbCA9IG1lbnRpb25DaGlsZHJlblRvTGFiZWwoY2hpbGRyZW4pXG4gIGNvbnN0IGlzVGFzayA9IHR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgdGFza1VybCA9IGAvdGFza3MvJHtpZH0vZGV0YWlsYFxuXG4gIGNvbnN0IGhhbmRsZVRhc2tDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRhc2tLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ICE9PSAnRW50ZXInICYmIGUua2V5ICE9PSAnICcpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBpZiAoaXNUYXNrKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1Rhc2tMaW5rXG4gICAgICAgIGhyZWY9e3Rhc2tVcmx9XG4gICAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVUYXNrQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlVGFza0tleURvd259XG4gICAgICA+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICBjb25zdCBpc1Byb2plY3QgPSB0eXBlID09PSAncHJvamVjdCdcbiAgY29uc3QgcHJvamVjdFVybCA9IGlzUHJvamVjdCA/IGAvcHJvamVjdHMvJHtpZH0vZGFzaGJvYXJkYCA6IG51bGxcbiAgY29uc3Qgc2hvd0ljb24gPSAhaXNQcm9qZWN0XG4gIGNvbnN0IHsgZmlyc3RXb3JkLCByZXN0IH0gPSBzcGxpdExhYmVsRmlyc3RXb3JkKGxhYmVsKVxuXG4gIGNvbnN0IGhhbmRsZVByb2plY3RDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICBpZiAoIXByb2plY3RVcmwpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB3aW5kb3cub3Blbihwcm9qZWN0VXJsLCAnX2JsYW5rJylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDSW5saW5lTWVudGlvblxuICAgICAgJHR5cGU9e3R5cGV9XG4gICAgICAkaXNDbGlja2FibGU9e2lzUHJvamVjdH1cbiAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICBkYXRhLW1lbnRpb24tdHlwZT17dHlwZX1cbiAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICBvbkNsaWNrPXtpc1Byb2plY3QgPyBoYW5kbGVQcm9qZWN0Q2xpY2sgOiB1bmRlZmluZWR9XG4gICAgICByb2xlPXtpc1Byb2plY3QgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZH1cbiAgICAgIHRhYkluZGV4PXtpc1Byb2plY3QgPyAwIDogdW5kZWZpbmVkfVxuICAgID5cbiAgICAgIHtzaG93SWNvbiA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgd2hpdGVTcGFjZTogJ25vd3JhcCcsIG1heFdpZHRoOiAnMTAwJScgfX0+XG4gICAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uSWNvbiAkdGFzaz17aXNUYXNrfT5cbiAgICAgICAgICAgICAge2dldENvbnRleHRNZW50aW9uSWNvbih0eXBlLCBNRU5USU9OX0NISVBfQ09MT1JTW3R5cGVdLmZnLCBpZCwgaWNvblNpemUpfVxuICAgICAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uPlxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgd2hpdGVTcGFjZTogJ25vd3JhcCcgfX0+e2ZpcnN0V29yZH08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtyZXN0ID8gPHNwYW4+e3Jlc3R9PC9zcGFuPiA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7IXNob3dJY29uID8gbGFiZWwgOiBudWxsfVxuICAgIDwvU0NJbmxpbmVNZW50aW9uPlxuICApXG59XG5cbi8qKiBRdWl0YSBsb3MgbWFya2VycyBkZWwgdGV4dG8sIGRlamFuZG8gc29sbyBgbGFiZWxgLiDDmnRpbCBwYXJhIGZhbGxiYWNrIHBsYW5vLiAqL1xuZXhwb3J0IGNvbnN0IHN0cmlwTWVudGlvbk1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+XG4gIHRleHQucmVwbGFjZShNRU5USU9OX01BUktFUl9SRUdFWCwgKF9tLCBfdHlwZSwgX2lkLCBsYWJlbCkgPT4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcobGFiZWwpKSlcblxuLyoqXG4gKiBUw610dWxvcyBkZSBjb252ZXJzYWNpw7NuIChwLiBlai4gYGxhc3RfcXVlc3Rpb25gIGRlcml2YWRvIGRlbCBwcmltZXIgbWVuc2FqZSkgcHVlZGVuXG4gKiBpbmNsdWlyIGVsIHRleHRvIHNlcmlhbGl6YWRvIGBbW21lbnRpb246dHlwZTppZHxsYWJlbF1dYC4gUGFyYSBzaWRlYmFyIHkgbGlzdGFkb3MsXG4gKiByZWVtcGxhemEgY2FkYSBibG9xdWUgcG9yIGBsYWJlbGAgZW4gdGV4dG8gcGxhbm8sIHNpbiBlbCBtYXJjYWRvciBjcnVkby5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyA9ICh0ZXh0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nID0+IHtcbiAgaWYgKHRleHQgPT0gbnVsbCB8fCB0ZXh0ID09PSAnJykgcmV0dXJuIHRleHQgPz8gJydcbiAgY29uc3Qgd2l0aG91dENvbXBsZXRlTWFya2VycyA9IHRleHQucmVwbGFjZShNRU5USU9OX01BUktFUl9SRUdFWCwgKF9tLCBfdHlwZSwgX2lkLCBsYWJlbCkgPT5cbiAgICBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKFN0cmluZyhsYWJlbCkudHJpbSgpKVxuICApXG4gIHJldHVybiB3aXRob3V0Q29tcGxldGVNYXJrZXJzLnJlcGxhY2UoSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCwgJycpLnRyaW0oKVxufVxuXG4vKiogR2VuZXJhIGxhIFVSTCBkZSBuYXZlZ2FjacOzbiBwYXJhIHVuIG1lbnRpb24gc2Vnw7puIHN1IHRpcG8uICovXG5jb25zdCBnZXRNZW50aW9uVXJsID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpZDogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICByZXR1cm4gYC9jbGllbnRzLyR7aWR9YFxuICAgIGNhc2UgJ3Byb2plY3QnOlxuICAgICAgcmV0dXJuIGAvcHJvamVjdHMvJHtpZH0vZGFzaGJvYXJkYFxuICAgIGNhc2UgJ3Rhc2snOlxuICAgICAgcmV0dXJuIGAvdGFza3MvJHtpZH0vZGV0YWlsYFxuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuIG51bGwgLy8gTG9zIHVzZXJzIG5vIHNvbiBjbGlja2VhYmxlc1xuICAgIGNhc2UgJ21jcCc6XG4gICAgICByZXR1cm4gbnVsbFxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IE1lbnRpb25DaGlwID0gKHsgdHlwZSwgaWQsIGxhYmVsIH06IHsgdHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGxhYmVsKVxuICBjb25zdCB1cmwgPSBnZXRNZW50aW9uVXJsKHR5cGUsIGlkKVxuICBjb25zdCBpc0NsaWNrYWJsZSA9ICEhdXJsXG4gIGNvbnN0IGlzVGFzayA9IHR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpc1Byb2plY3QgPSB0eXBlID09PSAncHJvamVjdCdcbiAgY29uc3Qgc2hvd0ljb24gPSAhaXNQcm9qZWN0XG4gIGNvbnN0IGljb25TaXplID0gaXNUYXNrID8gMTYgOiAxNFxuICBjb25zdCB7IGZpcnN0V29yZCwgcmVzdCB9ID0gc3BsaXRMYWJlbEZpcnN0V29yZChub3JtYWxpemVkTGFiZWwpXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudCB8IEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzQ2xpY2thYmxlIHx8ICF1cmwpIHJldHVyblxuICAgIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChlOiBLZXlib2FyZEV2ZW50PEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNDbGlja2FibGUgfHwgdHlwZSAhPT0gJ3Rhc2snKSByZXR1cm5cbiAgICBpZiAoZS5rZXkgIT09ICdFbnRlcicgJiYgZS5rZXkgIT09ICcgJykgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNDVGFza0xpbmtcbiAgICAgICAgaHJlZj17dXJsID8/ICcjJ31cbiAgICAgICAgY2xhc3NOYW1lPXtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31cbiAgICAgICAgZGF0YS1tZW50aW9uLXR5cGU9XCJ0YXNrXCJcbiAgICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgID5cbiAgICAgICAge25vcm1hbGl6ZWRMYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0lubGluZU1lbnRpb25cbiAgICAgICR0eXBlPXt0eXBlfVxuICAgICAgJGlzQ2xpY2thYmxlPXtpc0NsaWNrYWJsZX1cbiAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICBkYXRhLW1lbnRpb24tdHlwZT17dHlwZX1cbiAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICBvbkNsaWNrPXtpc0NsaWNrYWJsZSA/IGhhbmRsZUNsaWNrIDogdW5kZWZpbmVkfVxuICAgICAgcm9sZT17aXNDbGlja2FibGUgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZH1cbiAgICAgIHRhYkluZGV4PXtpc0NsaWNrYWJsZSA/IDAgOiB1bmRlZmluZWR9XG4gICAgPlxuICAgICAge3Nob3dJY29uID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCB3aGl0ZVNwYWNlOiAnbm93cmFwJywgbWF4V2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25JY29uICR0YXNrPXtpc1Rhc2t9PlxuICAgICAgICAgICAgICB7Z2V0Q29udGV4dE1lbnRpb25JY29uKHR5cGUsIE1FTlRJT05fQ0hJUF9DT0xPUlNbdHlwZV0uZmcsIGlkLCBpY29uU2l6ZSl9XG4gICAgICAgICAgICA8L1NDSW5saW5lTWVudGlvbkljb24+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyB3aGl0ZVNwYWNlOiAnbm93cmFwJyB9fT57Zmlyc3RXb3JkfTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge3Jlc3QgPyA8c3Bhbj57cmVzdH08L3NwYW4+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHshc2hvd0ljb24gPyBub3JtYWxpemVkTGFiZWwgOiBudWxsfVxuICAgIDwvU0NJbmxpbmVNZW50aW9uPlxuICApXG59XG5cbi8qKlxuICogU3BsaXRlYSBlbCB0ZXh0byBwb3IgbWFya2VycyB5IGRldnVlbHZlIHVuIGFycmF5IGRlIFJlYWN0Tm9kZXM6XG4gKiB0ZXh0byBwbGFubyArIHNwYW5zIGVzdGlsYWRvcyBwYXJhIGNhZGEgbWVudGlvbi4gUmVuZGVyaXphIGRpcmVjdGFtZW50ZVxuICogc2luIHBhc2FyIHBvciBTdHJlYW1kb3duIChubyBzb3BvcnRhIG1hcmtkb3duIGVuIGVzdGUgbW9kbykuXG4gKi9cbmV4cG9ydCBjb25zdCByZW5kZXJUZXh0V2l0aE1lbnRpb25zID0gKHRleHQ6IHN0cmluZyk6IEFycmF5PHN0cmluZyB8IFJlYWN0RWxlbWVudD4gPT4ge1xuICBpZiAoIXRleHQpIHJldHVybiBbdGV4dF1cbiAgY29uc3Qgb3V0OiBBcnJheTxzdHJpbmcgfCBSZWFjdEVsZW1lbnQ+ID0gW11cbiAgbGV0IGxhc3RJZHggPSAwXG4gIE1FTlRJT05fTUFSS0VSX1JFR0VYLmxhc3RJbmRleCA9IDBcbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gTUVOVElPTl9NQVJLRVJfUkVHRVguZXhlYyh0ZXh0KVxuICBsZXQga2V5SWR4ID0gMFxuICB3aGlsZSAobWF0Y2gpIHtcbiAgICBpZiAobWF0Y2guaW5kZXggPiBsYXN0SWR4KSBvdXQucHVzaCh0ZXh0LnNsaWNlKGxhc3RJZHgsIG1hdGNoLmluZGV4KSlcbiAgICBjb25zdCBbLCByYXdUeXBlLCBpZCwgbGFiZWxdID0gbWF0Y2hcbiAgICBjb25zdCB0eXBlID0gQUxMT1dFRF9UWVBFUy5pbmNsdWRlcyhyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA/IChyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA6ICd1c2VyJ1xuXG4gICAgb3V0LnB1c2goPE1lbnRpb25DaGlwIGtleT17YG1lbnRpb24tJHtrZXlJZHh9LSR7bWF0Y2guaW5kZXh9YH0gdHlwZT17dHlwZX0gaWQ9e2lkfSBsYWJlbD17bGFiZWx9IC8+KVxuXG4gICAgbGFzdElkeCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXG4gICAga2V5SWR4ICs9IDFcbiAgICBtYXRjaCA9IE1FTlRJT05fTUFSS0VSX1JFR0VYLmV4ZWModGV4dClcbiAgfVxuICBpZiAobGFzdElkeCA8IHRleHQubGVuZ3RoKSBvdXQucHVzaCh0ZXh0LnNsaWNlKGxhc3RJZHgpKVxuICByZXR1cm4gb3V0XG59XG4iXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsUUFBUSxtQkFBbUI7QUFDL0MsU0FBNENDLDBCQUEwQixRQUFRLHlCQUF5QjtBQUN2RyxTQUNFQyxtQkFBbUIsRUFDbkJDLDhCQUE4QixRQUN6QixrRUFBa0U7QUFDekUsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLFVBQVUsUUFBUSxrREFBa0Q7QUFDN0UsU0FBU0MscUJBQXFCLFFBQVEsdUJBQXVCO0FBQzdELFNBQVNDLDRCQUE0QixRQUFRLHVCQUF1QjtBQUNwRSxTQUFTQyxrQkFBa0IsUUFBUSxzQkFBc0I7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQTtBQUlBLE9BQU8sSUFBTUMsb0JBQW9CLEdBQUcsdUVBQXVFO0FBQzNHLE9BQU8sSUFBTUMscUJBQXFCLEdBQUcsaUJBQWlCO0FBQ3RELElBQU1DLCtCQUErQixHQUFHLHNCQUFzQjtBQUU5RCxJQUFNQyxhQUFrQyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztBQUV2RixJQUFNQyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJQyxJQUFZLEVBQThDO0VBQzFGLElBQU1DLElB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@projectcor/maia-components",
|
|
3
|
-
"version": "2.11.
|
|
3
|
+
"version": "2.11.42-1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"repository": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@streamdown/code": "^1.0.1",
|
|
40
|
+
"rehype-sanitize": "^6.0.0",
|
|
40
41
|
"react-file-viewer": "^1.2.1",
|
|
41
42
|
"streamdown": "^2.1.0",
|
|
42
43
|
"xlsx": "^0.18.5",
|