@projectcor/maia-components 2.11.36-7 → 2.11.37-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 +11 -24
- package/lib/components/atoms/Chip/Chip.js +35 -31
- package/lib/components/atoms/MAIAInput/MAIAInput.js +436 -126
- package/lib/components/atoms/MAIAInput/styles.js +61 -43
- package/lib/components/atoms/icons/index.js +1 -3
- package/lib/components/index.js +1 -2
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/index.js +1 -2
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -13
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +4 -8
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +2 -21
- package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -2
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +89 -91
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
- package/lib/components/molecules/ChatAIModal/constants.js +2 -10
- package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -6
- package/lib/components/molecules/Sidebar/Sidebar.js +31 -68
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -6
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +50 -247
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +3 -13
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +3 -6
- package/lib/dev/Providers.js +6 -11
- package/lib/hooks/useAgentModel/useCreateAgent.js +10 -11
- package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -12
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +11 -21
- package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
- package/lib/hooks/useChatMessages/useChatMessages.js +14 -30
- package/lib/hooks/useEvent.js +2 -5
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +4 -6
- package/lib/lang/br/index.js +5 -266
- package/lib/lang/en/index.js +5 -266
- package/lib/lang/es/index.js +5 -266
- package/lib/lang/fr/index.js +6 -268
- package/lib/services/maia/Agents/createAgent.js +1 -1
- package/lib/services/maia/Agents/getAgentById.js +2 -3
- package/lib/services/maia/Agents/updateAgent.js +1 -1
- package/lib/services/maia/Chats/getChatMessages.js +4 -29
- package/lib/services/maia/Orchestrator/orchestrator.js +9 -11
- package/lib/services/maia/RecentProjects/getRecentProjects.js +4 -12
- package/lib/services/utils/mapChatMessages.js +5 -12
- package/lib/types/Chat.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/types/agentModal.js +1 -1
- package/lib/utils/hitlAnalytics.js +6 -1
- package/package.json +1 -1
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +0 -28
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +0 -84
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +0 -123
- package/lib/components/atoms/ContextMentionChip/index.js +0 -4
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +0 -85
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +0 -6
- package/lib/components/atoms/ContextMentionEditor/index.js +0 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +0 -188
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +0 -98
- package/lib/components/atoms/ContextMentionItem/index.js +0 -2
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +0 -131
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +0 -63
- package/lib/components/atoms/ContextMentionPopover/index.js +0 -3
- package/lib/components/atoms/icons/NotionIcon.js +0 -36
- package/lib/components/atoms/icons/RocketIcon.js +0 -31
- package/lib/components/atoms/icons/WrenchIcon.js +0 -42
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +0 -510
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +0 -234
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +0 -437
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +0 -3
- package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +0 -80
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +0 -2
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +0 -722
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +0 -165
- package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +0 -2
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +0 -55
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +0 -6
- package/lib/components/molecules/ContextMentionInput/index.js +0 -2
- package/lib/components/molecules/SchedulesPage/SchedulesPage.js +0 -610
- package/lib/components/molecules/SchedulesPage/index.js +0 -2
- package/lib/components/molecules/SkillsPage/SkillsPage.js +0 -708
- package/lib/components/molecules/SkillsPage/index.js +0 -2
- package/lib/components/molecules/maiaSectionModalStyles.js +0 -91
- package/lib/components/molecules/maiaSectionUiTokens.js +0 -31
- package/lib/constants/taskLinkIcon.js +0 -6
- package/lib/dev/DevAbmAgentModal.js +0 -114
- package/lib/dev/DevContextMentionInput.js +0 -65
- package/lib/dev/mocks/abmModalMocks.js +0 -193
- package/lib/hooks/useCaretPosition.js +0 -35
- package/lib/hooks/useContextMentions.js +0 -204
- package/lib/hooks/useEntitySearch.js +0 -405
- package/lib/hooks/useMentionAllowedTypes.js +0 -86
- package/lib/hooks/useMentionPopover.js +0 -284
- package/lib/services/maia/Agents/connectors.js +0 -110
- package/lib/services/maia/Agents/skills.js +0 -164
- package/lib/services/maia/Schedules/createSchedule.js +0 -39
- package/lib/services/maia/Schedules/deleteSchedule.js +0 -36
- package/lib/services/maia/Schedules/getMySchedules.js +0 -55
- package/lib/services/maia/Schedules/getSchedules.js +0 -58
- package/lib/services/maia/Schedules/index.js +0 -5
- package/lib/services/query/entitySearchQuery.js +0 -16
- package/lib/services/query/usersDirectoryQuery.js +0 -19
- package/lib/types/agentSkill.js +0 -2
- package/lib/types/attachment.js +0 -2
- package/lib/types/contextMention.js +0 -37
- package/lib/utils/contextMentionIcons.js +0 -115
- package/lib/utils/contextMentionLabel.js +0 -4
- package/lib/utils/contextMentionTypeLabel.js +0 -17
- package/lib/utils/renderContextMentions.js +0 -216
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* Devuelve el rect del caret actual dentro de un contenedor contenteditable.
|
|
4
|
-
* Si no hay selección válida, retorna null.
|
|
5
|
-
*/
|
|
6
|
-
export var useCaretPosition = function useCaretPosition() {
|
|
7
|
-
return useCallback(function () {
|
|
8
|
-
var selection = window.getSelection();
|
|
9
|
-
if (!selection || selection.rangeCount === 0) return null;
|
|
10
|
-
var range = selection.getRangeAt(0).cloneRange();
|
|
11
|
-
range.collapse(true);
|
|
12
|
-
var rects = range.getClientRects();
|
|
13
|
-
var rect = null;
|
|
14
|
-
if (rects.length > 0) {
|
|
15
|
-
rect = rects.item(0);
|
|
16
|
-
} else {
|
|
17
|
-
var _span$parentNode;
|
|
18
|
-
// Fallback: insertar un span vacío para medir
|
|
19
|
-
var span = document.createElement('span');
|
|
20
|
-
span.textContent = "\u200B";
|
|
21
|
-
range.insertNode(span);
|
|
22
|
-
rect = span.getBoundingClientRect();
|
|
23
|
-
(_span$parentNode = span.parentNode) === null || _span$parentNode === void 0 || _span$parentNode.removeChild(span);
|
|
24
|
-
}
|
|
25
|
-
if (!rect) return null;
|
|
26
|
-
return {
|
|
27
|
-
top: rect.top,
|
|
28
|
-
left: rect.left,
|
|
29
|
-
bottom: rect.bottom,
|
|
30
|
-
right: rect.right,
|
|
31
|
-
height: rect.height
|
|
32
|
-
};
|
|
33
|
-
}, []);
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUNhcmV0UG9zaXRpb24iLCJzZWxlY3Rpb24iLCJ3aW5kb3ciLCJnZXRTZWxlY3Rpb24iLCJyYW5nZUNvdW50IiwicmFuZ2UiLCJnZXRSYW5nZUF0IiwiY2xvbmVSYW5nZSIsImNvbGxhcHNlIiwicmVjdHMiLCJnZXRDbGllbnRSZWN0cyIsInJlY3QiLCJsZW5ndGgiLCJpdGVtIiwiX3NwYW4kcGFyZW50Tm9kZSIsInNwYW4iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsImluc2VydE5vZGUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJoZWlnaHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQ2FyZXRQb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgdHlwZSBDYXJldFJlY3QgPSB7XG4gIHRvcDogbnVtYmVyXG4gIGxlZnQ6IG51bWJlclxuICBib3R0b206IG51bWJlclxuICByaWdodDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG59XG5cbi8qKlxuICogRGV2dWVsdmUgZWwgcmVjdCBkZWwgY2FyZXQgYWN0dWFsIGRlbnRybyBkZSB1biBjb250ZW5lZG9yIGNvbnRlbnRlZGl0YWJsZS5cbiAqIFNpIG5vIGhheSBzZWxlY2Npw7NuIHbDoWxpZGEsIHJldG9ybmEgbnVsbC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUNhcmV0UG9zaXRpb24gPSAoKSA9PiB7XG4gIHJldHVybiB1c2VDYWxsYmFjaygoKTogQ2FyZXRSZWN0IHwgbnVsbCA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHJldHVybiBudWxsXG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKClcbiAgICByYW5nZS5jb2xsYXBzZSh0cnVlKVxuXG4gICAgY29uc3QgcmVjdHMgPSByYW5nZS5nZXRDbGllbnRSZWN0cygpXG4gICAgbGV0IHJlY3Q6IERPTVJlY3QgfCBudWxsID0gbnVsbFxuICAgIGlmIChyZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICByZWN0ID0gcmVjdHMuaXRlbSgwKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGYWxsYmFjazogaW5zZXJ0YXIgdW4gc3BhbiB2YWPDrW8gcGFyYSBtZWRpclxuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICAgICAgc3Bhbi50ZXh0Q29udGVudCA9ICdcXHUyMDBiJ1xuICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShzcGFuKVxuICAgICAgcmVjdCA9IHNwYW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIHNwYW4ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoc3BhbilcbiAgICB9XG5cbiAgICBpZiAoIXJlY3QpIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4ge1xuICAgICAgdG9wOiByZWN0LnRvcCxcbiAgICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgICByaWdodDogcmVjdC5yaWdodCxcbiAgICAgIGhlaWdodDogcmVjdC5oZWlnaHQsXG4gICAgfVxuICB9LCBbXSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsV0FBVyxRQUFRLE9BQU87QUFVbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUEsRUFBUztFQUNwQyxPQUFPRCxXQUFXLENBQUMsWUFBd0I7SUFDekMsSUFBTUUsU0FBUyxHQUFHQyxNQUFNLENBQUNDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQ0YsU0FBUyxJQUFJQSxTQUFTLENBQUNHLFVBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJO0lBQ3pELElBQU1DLEtBQUssR0FBR0osU0FBUyxDQUFDSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xERixLQUFLLENBQUNHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFFcEIsSUFBTUMsS0FBSyxHQUFHSixLQUFLLENBQUNLLGNBQWMsQ0FBQyxDQUFDO0lBQ3BDLElBQUlDLElBQW9CLEdBQUcsSUFBSTtJQUMvQixJQUFJRixLQUFLLENBQUNHLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDcEJELElBQUksR0FBR0YsS0FBSyxDQUFDSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUMsTUFBTTtNQUFBLElBQUFDLGdCQUFBO01BQ0w7TUFDQSxJQUFNQyxJQUFJLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLE1BQU0sQ0FBQztNQUMzQ0YsSUFBSSxDQUFDRyxXQUFXLEdBQUcsUUFBUTtNQUMzQmIsS0FBSyxDQUFDYyxVQUFVLENBQUNKLElBQUksQ0FBQztNQUN0QkosSUFBSSxHQUFHSSxJQUFJLENBQUNLLHFCQUFxQixDQUFDLENBQUM7TUFDbkMsQ0FBQU4sZ0JBQUEsR0FBQUMsSUFBSSxDQUFDTSxVQUFVLGNBQUFQLGdCQUFBLGVBQWZBLGdCQUFBLENBQWlCUSxXQUFXLENBQUNQLElBQUksQ0FBQztJQUNwQztJQUVBLElBQUksQ0FBQ0osSUFBSSxFQUFFLE9BQU8sSUFBSTtJQUV0QixPQUFPO01BQ0xZLEdBQUcsRUFBRVosSUFBSSxDQUFDWSxHQUFHO01BQ2JDLElBQUksRUFBRWIsSUFBSSxDQUFDYSxJQUFJO01BQ2ZDLE1BQU0sRUFBRWQsSUFBSSxDQUFDYyxNQUFNO01BQ25CQyxLQUFLLEVBQUVmLElBQUksQ0FBQ2UsS0FBSztNQUNqQkMsTUFBTSxFQUFFaEIsSUFBSSxDQUFDZ0I7SUFDZixDQUFDO0VBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNSLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
import { useCallback, useRef, useState } from 'react';
|
|
3
|
-
import { serializeMention } from '../utils/renderContextMentions';
|
|
4
|
-
/**
|
|
5
|
-
* Lógica pura de un editor contenteditable con soporte de @-mentions:
|
|
6
|
-
* - detecta cuándo el usuario escribió `@` y captura el query hasta que
|
|
7
|
-
* escriba espacio/enter o borre el `@`
|
|
8
|
-
* - expone insertMention() para reemplazar `@query` por un chip atómico
|
|
9
|
-
* - expone getPlainText() y getMentions() para serializar
|
|
10
|
-
*
|
|
11
|
-
* Este hook NO renderiza nada — lo usa ContextMentionEditor.
|
|
12
|
-
*/
|
|
13
|
-
export var useContextMentions = function useContextMentions() {
|
|
14
|
-
var editorRef = useRef(null);
|
|
15
|
-
var _useState = useState({
|
|
16
|
-
active: false,
|
|
17
|
-
query: '',
|
|
18
|
-
anchor: null
|
|
19
|
-
}),
|
|
20
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
21
|
-
trigger = _useState2[0],
|
|
22
|
-
setTrigger = _useState2[1];
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Inspecciona la selección actual. Si el caret está dentro de un nodo de texto
|
|
26
|
-
* y hay un `@` antes del caret sin espacios ni newlines hasta él, devuelve el trigger.
|
|
27
|
-
*/
|
|
28
|
-
var detectTrigger = useCallback(function () {
|
|
29
|
-
var selection = window.getSelection();
|
|
30
|
-
if (!selection || selection.rangeCount === 0 || !editorRef.current) {
|
|
31
|
-
return {
|
|
32
|
-
active: false,
|
|
33
|
-
query: '',
|
|
34
|
-
anchor: null
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
var range = selection.getRangeAt(0);
|
|
38
|
-
if (!editorRef.current.contains(range.startContainer)) {
|
|
39
|
-
return {
|
|
40
|
-
active: false,
|
|
41
|
-
query: '',
|
|
42
|
-
anchor: null
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
var node = range.startContainer;
|
|
46
|
-
if (node.nodeType !== Node.TEXT_NODE) {
|
|
47
|
-
return {
|
|
48
|
-
active: false,
|
|
49
|
-
query: '',
|
|
50
|
-
anchor: null
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
var text = node.data;
|
|
54
|
-
var caret = range.startOffset;
|
|
55
|
-
var before = text.slice(0, caret);
|
|
56
|
-
// buscar `@` más reciente que no esté precedido por caracter alfanumérico
|
|
57
|
-
var atIdx = before.lastIndexOf('@');
|
|
58
|
-
if (atIdx < 0) return {
|
|
59
|
-
active: false,
|
|
60
|
-
query: '',
|
|
61
|
-
anchor: null
|
|
62
|
-
};
|
|
63
|
-
var prev = atIdx > 0 ? before.charAt(atIdx - 1) : '';
|
|
64
|
-
var isBoundary = !prev || /[\s([{]/.test(prev);
|
|
65
|
-
if (!isBoundary) return {
|
|
66
|
-
active: false,
|
|
67
|
-
query: '',
|
|
68
|
-
anchor: null
|
|
69
|
-
};
|
|
70
|
-
var query = before.slice(atIdx + 1);
|
|
71
|
-
if (/\s/.test(query)) return {
|
|
72
|
-
active: false,
|
|
73
|
-
query: '',
|
|
74
|
-
anchor: null
|
|
75
|
-
};
|
|
76
|
-
return {
|
|
77
|
-
active: true,
|
|
78
|
-
query: query,
|
|
79
|
-
anchor: {
|
|
80
|
-
node: node,
|
|
81
|
-
offset: atIdx
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
}, []);
|
|
85
|
-
var updateTrigger = useCallback(function () {
|
|
86
|
-
var next = detectTrigger();
|
|
87
|
-
setTrigger(next);
|
|
88
|
-
return next;
|
|
89
|
-
}, [detectTrigger]);
|
|
90
|
-
var closeTrigger = useCallback(function () {
|
|
91
|
-
setTrigger({
|
|
92
|
-
active: false,
|
|
93
|
-
query: '',
|
|
94
|
-
anchor: null
|
|
95
|
-
});
|
|
96
|
-
}, []);
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Reemplaza el `@query` pendiente por un chip atómico con la mention.
|
|
100
|
-
* Requiere que el caller provea el DOM del chip (se inserta tal cual).
|
|
101
|
-
*/
|
|
102
|
-
var replaceTriggerWithChip = useCallback(function (chipNode, mention) {
|
|
103
|
-
var current = detectTrigger();
|
|
104
|
-
if (!current.active || !current.anchor) return;
|
|
105
|
-
var _current$anchor = current.anchor,
|
|
106
|
-
node = _current$anchor.node,
|
|
107
|
-
offset = _current$anchor.offset;
|
|
108
|
-
var textNode = node;
|
|
109
|
-
var full = textNode.data;
|
|
110
|
-
var queryLen = 1 + current.query.length; // '@' + query
|
|
111
|
-
var after = full.slice(offset + queryLen);
|
|
112
|
-
|
|
113
|
-
// Truncar el texto hasta antes del `@`
|
|
114
|
-
// eslint-disable-next-line no-param-reassign
|
|
115
|
-
textNode.data = full.slice(0, offset);
|
|
116
|
-
|
|
117
|
-
// Insertar el chip justo después del nodo de texto
|
|
118
|
-
chipNode.setAttribute('data-mention', 'true');
|
|
119
|
-
chipNode.setAttribute('data-mention-id', String(mention.id));
|
|
120
|
-
chipNode.setAttribute('data-mention-type', mention.type);
|
|
121
|
-
chipNode.setAttribute('data-mention-label', mention.label);
|
|
122
|
-
chipNode.setAttribute('contenteditable', 'false');
|
|
123
|
-
var parent = textNode.parentNode;
|
|
124
|
-
if (!parent) return;
|
|
125
|
-
var spaceNode = document.createTextNode("\xA0".concat(after));
|
|
126
|
-
parent.insertBefore(chipNode, textNode.nextSibling);
|
|
127
|
-
parent.insertBefore(spaceNode, chipNode.nextSibling);
|
|
128
|
-
|
|
129
|
-
// Reposicionar caret después del chip (antes del espacio non-breaking)
|
|
130
|
-
var selection = window.getSelection();
|
|
131
|
-
if (selection) {
|
|
132
|
-
var range = document.createRange();
|
|
133
|
-
range.setStart(spaceNode, 1);
|
|
134
|
-
range.collapse(true);
|
|
135
|
-
selection.removeAllRanges();
|
|
136
|
-
selection.addRange(range);
|
|
137
|
-
}
|
|
138
|
-
closeTrigger();
|
|
139
|
-
}, [detectTrigger, closeTrigger]);
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Serializa el contenido: texto plano + lista de mentions en orden de aparición.
|
|
143
|
-
*/
|
|
144
|
-
var serialize = useCallback(function () {
|
|
145
|
-
var el = editorRef.current;
|
|
146
|
-
if (!el) return {
|
|
147
|
-
text: '',
|
|
148
|
-
mentions: []
|
|
149
|
-
};
|
|
150
|
-
var mentions = [];
|
|
151
|
-
var text = '';
|
|
152
|
-
var _walk = function walk(node) {
|
|
153
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
154
|
-
text += node.data;
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
158
|
-
var _elNode$dataset;
|
|
159
|
-
var elNode = node;
|
|
160
|
-
if (((_elNode$dataset = elNode.dataset) === null || _elNode$dataset === void 0 ? void 0 : _elNode$dataset.mention) === 'true') {
|
|
161
|
-
var _elNode$dataset$menti, _ref, _ref2, _elNode$dataset$menti2;
|
|
162
|
-
var mention = {
|
|
163
|
-
id: (_elNode$dataset$menti = elNode.dataset.mentionId) !== null && _elNode$dataset$menti !== void 0 ? _elNode$dataset$menti : '',
|
|
164
|
-
type: (_ref = elNode.dataset.mentionType) !== null && _ref !== void 0 ? _ref : 'user',
|
|
165
|
-
label: (_ref2 = (_elNode$dataset$menti2 = elNode.dataset.mentionLabel) !== null && _elNode$dataset$menti2 !== void 0 ? _elNode$dataset$menti2 : elNode.textContent) !== null && _ref2 !== void 0 ? _ref2 : ''
|
|
166
|
-
};
|
|
167
|
-
mentions.push(mention);
|
|
168
|
-
text += serializeMention(mention);
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
if (elNode.tagName === 'BR') {
|
|
172
|
-
text += '\n';
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
elNode.childNodes.forEach(_walk);
|
|
176
|
-
if (elNode.tagName === 'DIV' || elNode.tagName === 'P') text += '\n';
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
el.childNodes.forEach(_walk);
|
|
180
|
-
return {
|
|
181
|
-
text: text.replace(/\n+$/, ''),
|
|
182
|
-
mentions: mentions
|
|
183
|
-
};
|
|
184
|
-
}, []);
|
|
185
|
-
var clear = useCallback(function () {
|
|
186
|
-
if (editorRef.current) editorRef.current.innerHTML = '';
|
|
187
|
-
closeTrigger();
|
|
188
|
-
}, [closeTrigger]);
|
|
189
|
-
var focus = useCallback(function () {
|
|
190
|
-
var _editorRef$current;
|
|
191
|
-
(_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 || _editorRef$current.focus();
|
|
192
|
-
}, []);
|
|
193
|
-
return {
|
|
194
|
-
editorRef: editorRef,
|
|
195
|
-
trigger: trigger,
|
|
196
|
-
updateTrigger: updateTrigger,
|
|
197
|
-
closeTrigger: closeTrigger,
|
|
198
|
-
replaceTriggerWithChip: replaceTriggerWithChip,
|
|
199
|
-
serialize: serialize,
|
|
200
|
-
clear: clear,
|
|
201
|
-
focus: focus
|
|
202
|
-
};
|
|
203
|
-
};
|
|
204
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZVN0YXRlIiwic2VyaWFsaXplTWVudGlvbiIsInVzZUNvbnRleHRNZW50aW9ucyIsImVkaXRvclJlZiIsIl91c2VTdGF0ZSIsImFjdGl2ZSIsInF1ZXJ5IiwiYW5jaG9yIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidHJpZ2dlciIsInNldFRyaWdnZXIiLCJkZXRlY3RUcmlnZ2VyIiwic2VsZWN0aW9uIiwid2luZG93IiwiZ2V0U2VsZWN0aW9uIiwicmFuZ2VDb3VudCIsImN1cnJlbnQiLCJyYW5nZSIsImdldFJhbmdlQXQiLCJjb250YWlucyIsInN0YXJ0Q29udGFpbmVyIiwibm9kZSIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsInRleHQiLCJkYXRhIiwiY2FyZXQiLCJzdGFydE9mZnNldCIsImJlZm9yZSIsInNsaWNlIiwiYXRJZHgiLCJsYXN0SW5kZXhPZiIsInByZXYiLCJjaGFyQXQiLCJpc0JvdW5kYXJ5IiwidGVzdCIsIm9mZnNldCIsInVwZGF0ZVRyaWdnZXIiLCJuZXh0IiwiY2xvc2VUcmlnZ2VyIiwicmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCIsImNoaXBOb2RlIiwibWVudGlvbiIsIl9jdXJyZW50JGFuY2hvciIsInRleHROb2RlIiwiZnVsbCIsInF1ZXJ5TGVuIiwibGVuZ3RoIiwiYWZ0ZXIiLCJzZXRBdHRyaWJ1dGUiLCJTdHJpbmciLCJpZCIsInR5cGUiLCJsYWJlbCIsInBhcmVudCIsInBhcmVudE5vZGUiLCJzcGFjZU5vZGUiLCJkb2N1bWVudCIsImNyZWF0ZVRleHROb2RlIiwiY29uY2F0IiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0IiwiY29sbGFwc2UiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInNlcmlhbGl6ZSIsImVsIiwibWVudGlvbnMiLCJ3YWxrIiwiRUxFTUVOVF9OT0RFIiwiX2VsTm9kZSRkYXRhc2V0IiwiZWxOb2RlIiwiZGF0YXNldCIsIl9lbE5vZGUkZGF0YXNldCRtZW50aSIsIl9yZWYiLCJfcmVmMiIsIl9lbE5vZGUkZGF0YXNldCRtZW50aTIiLCJtZW50aW9uSWQiLCJtZW50aW9uVHlwZSIsIm1lbnRpb25MYWJlbCIsInRleHRDb250ZW50IiwicHVzaCIsInRhZ05hbWUiLCJjaGlsZE5vZGVzIiwiZm9yRWFjaCIsInJlcGxhY2UiLCJjbGVhciIsImlubmVySFRNTCIsImZvY3VzIiwiX2VkaXRvclJlZiRjdXJyZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUNvbnRleHRNZW50aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IHNlcmlhbGl6ZU1lbnRpb24gfSBmcm9tICcuLi91dGlscy9yZW5kZXJDb250ZXh0TWVudGlvbnMnXG5cbmV4cG9ydCB0eXBlIE1lbnRpb25UcmlnZ2VyU3RhdGUgPSB7XG4gIGFjdGl2ZTogYm9vbGVhblxuICBxdWVyeTogc3RyaW5nXG4gIC8qKiBQb3NpY2nDs24gZGVsIGBAYCBkZW50cm8gZGVsIG5vZG8gZGUgdGV4dG8gKHVzYWRhIHBhcmEgcmVlbXBsYXpvKSAqL1xuICBhbmNob3I6IHsgbm9kZTogTm9kZTsgb2Zmc2V0OiBudW1iZXIgfSB8IG51bGxcbn1cblxuLyoqXG4gKiBMw7NnaWNhIHB1cmEgZGUgdW4gZWRpdG9yIGNvbnRlbnRlZGl0YWJsZSBjb24gc29wb3J0ZSBkZSBALW1lbnRpb25zOlxuICogICAtIGRldGVjdGEgY3XDoW5kbyBlbCB1c3VhcmlvIGVzY3JpYmnDsyBgQGAgeSBjYXB0dXJhIGVsIHF1ZXJ5IGhhc3RhIHF1ZVxuICogICAgIGVzY3JpYmEgZXNwYWNpby9lbnRlciBvIGJvcnJlIGVsIGBAYFxuICogICAtIGV4cG9uZSBpbnNlcnRNZW50aW9uKCkgcGFyYSByZWVtcGxhemFyIGBAcXVlcnlgIHBvciB1biBjaGlwIGF0w7NtaWNvXG4gKiAgIC0gZXhwb25lIGdldFBsYWluVGV4dCgpIHkgZ2V0TWVudGlvbnMoKSBwYXJhIHNlcmlhbGl6YXJcbiAqXG4gKiBFc3RlIGhvb2sgTk8gcmVuZGVyaXphIG5hZGEg4oCUIGxvIHVzYSBDb250ZXh0TWVudGlvbkVkaXRvci5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUNvbnRleHRNZW50aW9ucyA9ICgpID0+IHtcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3RyaWdnZXIsIHNldFRyaWdnZXJdID0gdXNlU3RhdGU8TWVudGlvblRyaWdnZXJTdGF0ZT4oeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9KVxuXG4gIC8qKlxuICAgKiBJbnNwZWNjaW9uYSBsYSBzZWxlY2Npw7NuIGFjdHVhbC4gU2kgZWwgY2FyZXQgZXN0w6EgZGVudHJvIGRlIHVuIG5vZG8gZGUgdGV4dG9cbiAgICogeSBoYXkgdW4gYEBgIGFudGVzIGRlbCBjYXJldCBzaW4gZXNwYWNpb3MgbmkgbmV3bGluZXMgaGFzdGEgw6lsLCBkZXZ1ZWx2ZSBlbCB0cmlnZ2VyLlxuICAgKi9cbiAgY29uc3QgZGV0ZWN0VHJpZ2dlciA9IHVzZUNhbGxiYWNrKCgpOiBNZW50aW9uVHJpZ2dlclN0YXRlID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCB8fCAhZWRpdG9yUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgICB9XG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKVxuICAgIGlmICghZWRpdG9yUmVmLmN1cnJlbnQuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpKSB7XG4gICAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gICAgfVxuICAgIGNvbnN0IG5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lclxuICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICAgIGNvbnN0IGNhcmV0ID0gcmFuZ2Uuc3RhcnRPZmZzZXRcbiAgICBjb25zdCBiZWZvcmUgPSB0ZXh0LnNsaWNlKDAsIGNhcmV0KVxuICAgIC8vIGJ1c2NhciBgQGAgbcOhcyByZWNpZW50ZSBxdWUgbm8gZXN0w6kgcHJlY2VkaWRvIHBvciBjYXJhY3RlciBhbGZhbnVtw6lyaWNvXG4gICAgY29uc3QgYXRJZHggPSBiZWZvcmUubGFzdEluZGV4T2YoJ0AnKVxuICAgIGlmIChhdElkeCA8IDApIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgICBjb25zdCBwcmV2ID0gYXRJZHggPiAwID8gYmVmb3JlLmNoYXJBdChhdElkeCAtIDEpIDogJydcbiAgICBjb25zdCBpc0JvdW5kYXJ5ID0gIXByZXYgfHwgL1tcXHMoW3tdLy50ZXN0KHByZXYpXG4gICAgaWYgKCFpc0JvdW5kYXJ5KSByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gICAgY29uc3QgcXVlcnkgPSBiZWZvcmUuc2xpY2UoYXRJZHggKyAxKVxuICAgIGlmICgvXFxzLy50ZXN0KHF1ZXJ5KSkgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICAgIHJldHVybiB7IGFjdGl2ZTogdHJ1ZSwgcXVlcnksIGFuY2hvcjogeyBub2RlLCBvZmZzZXQ6IGF0SWR4IH0gfVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICBzZXRUcmlnZ2VyKG5leHQpXG4gICAgcmV0dXJuIG5leHRcbiAgfSwgW2RldGVjdFRyaWdnZXJdKVxuXG4gIGNvbnN0IGNsb3NlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRUcmlnZ2VyKHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfSlcbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIFJlZW1wbGF6YSBlbCBgQHF1ZXJ5YCBwZW5kaWVudGUgcG9yIHVuIGNoaXAgYXTDs21pY28gY29uIGxhIG1lbnRpb24uXG4gICAqIFJlcXVpZXJlIHF1ZSBlbCBjYWxsZXIgcHJvdmVhIGVsIERPTSBkZWwgY2hpcCAoc2UgaW5zZXJ0YSB0YWwgY3VhbCkuXG4gICAqL1xuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhDaGlwID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoaXBOb2RlOiBIVE1MRWxlbWVudCwgbWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICAgIGlmICghY3VycmVudC5hY3RpdmUgfHwgIWN1cnJlbnQuYW5jaG9yKSByZXR1cm5cblxuICAgICAgY29uc3QgeyBub2RlLCBvZmZzZXQgfSA9IGN1cnJlbnQuYW5jaG9yXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IHF1ZXJ5TGVuID0gMSArIGN1cnJlbnQucXVlcnkubGVuZ3RoIC8vICdAJyArIHF1ZXJ5XG4gICAgICBjb25zdCBhZnRlciA9IGZ1bGwuc2xpY2Uob2Zmc2V0ICsgcXVlcnlMZW4pXG5cbiAgICAgIC8vIFRydW5jYXIgZWwgdGV4dG8gaGFzdGEgYW50ZXMgZGVsIGBAYFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICB0ZXh0Tm9kZS5kYXRhID0gZnVsbC5zbGljZSgwLCBvZmZzZXQpXG5cbiAgICAgIC8vIEluc2VydGFyIGVsIGNoaXAganVzdG8gZGVzcHXDqXMgZGVsIG5vZG8gZGUgdGV4dG9cbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uJywgJ3RydWUnKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24taWQnLCBTdHJpbmcobWVudGlvbi5pZCkpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi10eXBlJywgbWVudGlvbi50eXBlKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tbGFiZWwnLCBtZW50aW9uLmxhYmVsKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKVxuXG4gICAgICBjb25zdCBwYXJlbnQgPSB0ZXh0Tm9kZS5wYXJlbnROb2RlXG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHNwYWNlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGBcXHUwMGEwJHthZnRlcn1gKVxuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShjaGlwTm9kZSwgdGV4dE5vZGUubmV4dFNpYmxpbmcpXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYWNlTm9kZSwgY2hpcE5vZGUubmV4dFNpYmxpbmcpXG5cbiAgICAgIC8vIFJlcG9zaWNpb25hciBjYXJldCBkZXNwdcOpcyBkZWwgY2hpcCAoYW50ZXMgZGVsIGVzcGFjaW8gbm9uLWJyZWFraW5nKVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICByYW5nZS5zZXRTdGFydChzcGFjZU5vZGUsIDEpXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgICB9XG5cbiAgICAgIGNsb3NlVHJpZ2dlcigpXG4gICAgfSxcbiAgICBbZGV0ZWN0VHJpZ2dlciwgY2xvc2VUcmlnZ2VyXVxuICApXG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6YSBlbCBjb250ZW5pZG86IHRleHRvIHBsYW5vICsgbGlzdGEgZGUgbWVudGlvbnMgZW4gb3JkZW4gZGUgYXBhcmljacOzbi5cbiAgICovXG4gIGNvbnN0IHNlcmlhbGl6ZSA9IHVzZUNhbGxiYWNrKCgpOiB7IHRleHQ6IHN0cmluZzsgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW10gfSA9PiB7XG4gICAgY29uc3QgZWwgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgIGlmICghZWwpIHJldHVybiB7IHRleHQ6ICcnLCBtZW50aW9uczogW10gfVxuICAgIGNvbnN0IG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdID0gW11cbiAgICBsZXQgdGV4dCA9ICcnXG5cbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICB0ZXh0ICs9IChub2RlIGFzIFRleHQpLmRhdGFcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgY29uc3QgZWxOb2RlID0gbm9kZSBhcyBIVE1MRWxlbWVudFxuICAgICAgICBpZiAoZWxOb2RlLmRhdGFzZXQ/Lm1lbnRpb24gPT09ICd0cnVlJykge1xuICAgICAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICAgICAgaWQ6IGVsTm9kZS5kYXRhc2V0Lm1lbnRpb25JZCA/PyAnJyxcbiAgICAgICAgICAgIHR5cGU6IChlbE5vZGUuZGF0YXNldC5tZW50aW9uVHlwZSBhcyBDb250ZXh0TWVudGlvblsndHlwZSddKSA/PyAndXNlcicsXG4gICAgICAgICAgICBsYWJlbDogZWxOb2RlLmRhdGFzZXQubWVudGlvbkxhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudCA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgbWVudGlvbnMucHVzaChtZW50aW9uKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplTWVudGlvbihtZW50aW9uKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0JSJykge1xuICAgICAgICAgIHRleHQgKz0gJ1xcbidcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBlbE5vZGUuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspXG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0RJVicgfHwgZWxOb2RlLnRhZ05hbWUgPT09ICdQJykgdGV4dCArPSAnXFxuJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsLmNoaWxkTm9kZXMuZm9yRWFjaCh3YWxrKVxuICAgIHJldHVybiB7IHRleHQ6IHRleHQucmVwbGFjZSgvXFxuKyQvLCAnJyksIG1lbnRpb25zIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgY2xlYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSBlZGl0b3JSZWYuY3VycmVudC5pbm5lckhUTUwgPSAnJ1xuICAgIGNsb3NlVHJpZ2dlcigpXG4gIH0sIFtjbG9zZVRyaWdnZXJdKVxuXG4gIGNvbnN0IGZvY3VzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gIH0sIFtdKVxuXG4gIHJldHVybiB7XG4gICAgZWRpdG9yUmVmLFxuICAgIHRyaWdnZXIsXG4gICAgdXBkYXRlVHJpZ2dlcixcbiAgICBjbG9zZVRyaWdnZXIsXG4gICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCxcbiAgICBzZXJpYWxpemUsXG4gICAgY2xlYXIsXG4gICAgZm9jdXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUVyRCxTQUFTQyxnQkFBZ0IsUUFBUSxnQ0FBZ0M7QUFTakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBLEVBQVM7RUFDdEMsSUFBTUMsU0FBUyxHQUFHSixNQUFNLENBQXdCLElBQUksQ0FBQztFQUNyRCxJQUFBSyxTQUFBLEdBQThCSixRQUFRLENBQXNCO01BQUVLLE1BQU0sRUFBRSxLQUFLO01BQUVDLEtBQUssRUFBRSxFQUFFO01BQUVDLE1BQU0sRUFBRTtJQUFLLENBQUMsQ0FBQztJQUFBQyxVQUFBLEdBQUFDLGNBQUEsQ0FBQUwsU0FBQTtJQUFoR00sT0FBTyxHQUFBRixVQUFBO0lBQUVHLFVBQVUsR0FBQUgsVUFBQTs7RUFFMUI7QUFDRjtBQUNBO0FBQ0E7RUFDRSxJQUFNSSxhQUFhLEdBQUdkLFdBQVcsQ0FBQyxZQUEyQjtJQUMzRCxJQUFNZSxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDRixTQUFTLElBQUlBLFNBQVMsQ0FBQ0csVUFBVSxLQUFLLENBQUMsSUFBSSxDQUFDYixTQUFTLENBQUNjLE9BQU8sRUFBRTtNQUNsRSxPQUFPO1FBQUVaLE1BQU0sRUFBRSxL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
|