@projectcor/maia-components 2.11.36-3 → 2.11.36-5
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 +24 -11
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +28 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +84 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +123 -0
- package/lib/components/atoms/ContextMentionChip/index.js +4 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +85 -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 +188 -0
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +98 -0
- package/lib/components/atoms/ContextMentionItem/index.js +2 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +131 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +63 -0
- package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.js +61 -191
- package/lib/components/atoms/icons/NotionIcon.js +36 -0
- package/lib/components/atoms/icons/RocketIcon.js +35 -0
- package/lib/components/atoms/icons/index.js +3 -1
- package/lib/components/index.js +2 -1
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +483 -0
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +238 -0
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +437 -0
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +3 -0
- 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/AbmSkillsSection.styles.js +80 -0
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +31 -3
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/index.js +2 -2
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -1
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +8 -4
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +21 -2
- package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -2
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +16 -6
- package/lib/components/molecules/ChatAIModal/constants.js +6 -2
- package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -4
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +55 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
- package/lib/components/molecules/ContextMentionInput/index.js +2 -0
- package/lib/components/molecules/SchedulesPage/SchedulesPage.js +63 -44
- package/lib/components/molecules/Sidebar/Sidebar.js +26 -9
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +5 -1
- package/lib/components/molecules/SkillsPage/SkillsPage.js +747 -0
- package/lib/components/molecules/SkillsPage/index.js +2 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +186 -47
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +5 -2
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +6 -3
- package/lib/constants/taskLinkIcon.js +6 -0
- package/lib/dev/DevAbmAgentModal.js +114 -0
- package/lib/dev/DevContextMentionInput.js +65 -0
- package/lib/dev/Providers.js +11 -6
- package/lib/dev/mocks/abmModalMocks.js +200 -0
- 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/useContextMentions.js +204 -0
- package/lib/hooks/useEntitySearch.js +405 -0
- package/lib/hooks/useEvent.js +5 -1
- package/lib/hooks/useMentionAllowedTypes.js +81 -0
- package/lib/hooks/useMentionPopover.js +284 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
- package/lib/lang/br/index.js +139 -1
- package/lib/lang/en/index.js +139 -1
- package/lib/lang/es/index.js +139 -1
- package/lib/lang/fr/index.js +147 -9
- package/lib/services/maia/Agents/connectors.js +88 -0
- package/lib/services/maia/Agents/skills.js +164 -0
- 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/query/entitySearchQuery.js +16 -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/agentModal.js +1 -1
- package/lib/types/agentSkill.js +2 -0
- package/lib/types/contextMention.js +37 -0
- package/lib/utils/contextMentionIcons.js +117 -0
- package/lib/utils/contextMentionLabel.js +4 -0
- package/lib/utils/contextMentionTypeLabel.js +17 -0
- package/lib/utils/renderContextMentions.js +216 -0
- package/package.json +1 -1
- package/lib/components/molecules/AbmSection/AbmActionsSection.js +0 -136
- package/lib/components/molecules/AbmSection/AbmActionsSection.styles.js +0 -74
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
|
+
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; }
|
|
6
|
+
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; }
|
|
7
|
+
import { useLazyQuery } from '@apollo/client';
|
|
8
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
9
|
+
// eslint-disable-next-line import/no-cycle
|
|
10
|
+
import maia from '../services/maia';
|
|
11
|
+
import { SEARCH_ENTITIES } from '../services/query/entitySearchQuery';
|
|
12
|
+
import { SEARCH_CLIENTS } from '../services/query/ClientSearchQuery';
|
|
13
|
+
import { USERS_DIRECTORY } from '../services/query/usersDirectoryQuery';
|
|
14
|
+
import { useDebounce } from './useDebounce';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Restringe los resultados al `clientId`/`projectId` del agente activo.
|
|
18
|
+
* Cuando el agente está scopeado a un client/project, tanto los recents como
|
|
19
|
+
* el search deben filtrar por ese contexto. Si el backend no entiende algún
|
|
20
|
+
* campo lo ignora y se cae al comportamiento global.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
var BASE_FILTERS_BY_TYPE = {
|
|
24
|
+
project: {
|
|
25
|
+
project: 'true',
|
|
26
|
+
archived: 'all'
|
|
27
|
+
},
|
|
28
|
+
task: {
|
|
29
|
+
task: 'true'
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
var buildFiltersForType = function buildFiltersForType(type, scope) {
|
|
33
|
+
var base = BASE_FILTERS_BY_TYPE[type];
|
|
34
|
+
var extra = {};
|
|
35
|
+
if ((scope === null || scope === void 0 ? void 0 : scope.clientId) !== undefined && (scope === null || scope === void 0 ? void 0 : scope.clientId) !== null && scope.clientId !== '') {
|
|
36
|
+
extra.clientId = String(scope.clientId);
|
|
37
|
+
}
|
|
38
|
+
// Project tab nunca filtra por projectId (rompe la lista). Tasks sí.
|
|
39
|
+
if (type !== 'project' && (scope === null || scope === void 0 ? void 0 : scope.projectId) !== undefined && (scope === null || scope === void 0 ? void 0 : scope.projectId) !== null && scope.projectId !== '') {
|
|
40
|
+
extra.projectId = String(scope.projectId);
|
|
41
|
+
}
|
|
42
|
+
return JSON.stringify(_objectSpread(_objectSpread({}, base), extra));
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Filtros para usersDirectory. El backend espera un JSON string con
|
|
47
|
+
* withPosition, withTeams y searchInput. Le agregamos clientId/projectId
|
|
48
|
+
* del scope en caso de que el backend los aproveche para filtrar por
|
|
49
|
+
* contexto (si no los entiende los ignora).
|
|
50
|
+
*/
|
|
51
|
+
var buildUsersDirectoryFilters = function buildUsersDirectoryFilters(q, scope) {
|
|
52
|
+
var base = {
|
|
53
|
+
withPosition: true,
|
|
54
|
+
withTeams: true,
|
|
55
|
+
searchInput: q
|
|
56
|
+
};
|
|
57
|
+
if ((scope === null || scope === void 0 ? void 0 : scope.clientId) !== undefined && (scope === null || scope === void 0 ? void 0 : scope.clientId) !== null && scope.clientId !== '') {
|
|
58
|
+
base.clientId = String(scope.clientId);
|
|
59
|
+
}
|
|
60
|
+
if ((scope === null || scope === void 0 ? void 0 : scope.projectId) !== undefined && (scope === null || scope === void 0 ? void 0 : scope.projectId) !== null && scope.projectId !== '') {
|
|
61
|
+
base.projectId = String(scope.projectId);
|
|
62
|
+
}
|
|
63
|
+
return JSON.stringify(base);
|
|
64
|
+
};
|
|
65
|
+
var highlightRange = function highlightRange(text, searchValue) {
|
|
66
|
+
if (!searchValue) return undefined;
|
|
67
|
+
var idx = text.toLowerCase().indexOf(searchValue.toLowerCase());
|
|
68
|
+
if (idx < 0) return undefined;
|
|
69
|
+
return {
|
|
70
|
+
start: idx,
|
|
71
|
+
length: searchValue.length
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
var mapClientToItem = function mapClientToItem(c, searchValue) {
|
|
75
|
+
var _c$totalProyectos, _c$totalProyectos2;
|
|
76
|
+
return {
|
|
77
|
+
id: c.id,
|
|
78
|
+
type: 'client',
|
|
79
|
+
primary: c.name,
|
|
80
|
+
primaryHighlight: highlightRange(c.name, searchValue),
|
|
81
|
+
breadcrumb: {
|
|
82
|
+
count: (_c$totalProyectos = c.totalProyectos) !== null && _c$totalProyectos !== void 0 ? _c$totalProyectos : undefined,
|
|
83
|
+
countLabel: 'projects'
|
|
84
|
+
},
|
|
85
|
+
raw: {
|
|
86
|
+
id: c.id,
|
|
87
|
+
name: c.name,
|
|
88
|
+
totalProyectos: (_c$totalProyectos2 = c.totalProyectos) !== null && _c$totalProyectos2 !== void 0 ? _c$totalProyectos2 : null
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
var mapUserToItem = function mapUserToItem(u, searchValue) {
|
|
93
|
+
var _u$firstName, _u$lastName, _u$picture, _u$positionName, _u$email;
|
|
94
|
+
var fullName = "".concat((_u$firstName = u.firstName) !== null && _u$firstName !== void 0 ? _u$firstName : '', " ").concat((_u$lastName = u.lastName) !== null && _u$lastName !== void 0 ? _u$lastName : '').trim();
|
|
95
|
+
var primary = fullName || u.email || String(u.id);
|
|
96
|
+
return {
|
|
97
|
+
id: u.id,
|
|
98
|
+
type: 'user',
|
|
99
|
+
primary: primary,
|
|
100
|
+
primaryHighlight: highlightRange(primary, searchValue),
|
|
101
|
+
raw: {
|
|
102
|
+
id: u.id,
|
|
103
|
+
name: primary,
|
|
104
|
+
picture: (_u$picture = u.picture) !== null && _u$picture !== void 0 ? _u$picture : null,
|
|
105
|
+
positionName: (_u$positionName = u.positionName) !== null && _u$positionName !== void 0 ? _u$positionName : null,
|
|
106
|
+
email: (_u$email = u.email) !== null && _u$email !== void 0 ? _u$email : null
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
var mapSearchToItem = function mapSearchToItem(r, type, searchValue) {
|
|
111
|
+
var _r$projectName, _r$clientId, _r$clientName, _r$projectName2, _r$feeId;
|
|
112
|
+
var primary = r.title || r.projectName || '';
|
|
113
|
+
var parent;
|
|
114
|
+
if (type === 'project') parent = r.clientName;else if (type === 'task') parent = undefined;else parent = (_r$projectName = r.projectName) !== null && _r$projectName !== void 0 ? _r$projectName : r.clientName;
|
|
115
|
+
return {
|
|
116
|
+
id: r.id,
|
|
117
|
+
type: type,
|
|
118
|
+
primary: primary,
|
|
119
|
+
primaryHighlight: highlightRange(primary, searchValue),
|
|
120
|
+
breadcrumb: parent ? {
|
|
121
|
+
parent: parent
|
|
122
|
+
} : undefined,
|
|
123
|
+
raw: {
|
|
124
|
+
id: r.id,
|
|
125
|
+
name: primary,
|
|
126
|
+
clientId: (_r$clientId = r.clientId) !== null && _r$clientId !== void 0 ? _r$clientId : null,
|
|
127
|
+
clientName: (_r$clientName = r.clientName) !== null && _r$clientName !== void 0 ? _r$clientName : null,
|
|
128
|
+
projectName: (_r$projectName2 = r.projectName) !== null && _r$projectName2 !== void 0 ? _r$projectName2 : null,
|
|
129
|
+
feeId: (_r$feeId = r.feeId) !== null && _r$feeId !== void 0 ? _r$feeId : null
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
var formatMcpPrimaryLabel = function formatMcpPrimaryLabel(slug) {
|
|
134
|
+
return slug.replace(/_/g, ' ').replace(/\b\w/g, function (_char) {
|
|
135
|
+
return _char.toUpperCase();
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
var mapMcpSlugsToItems = function mapMcpSlugsToItems(slugs, searchValue) {
|
|
139
|
+
var q = searchValue.trim().toLowerCase();
|
|
140
|
+
var filtered = slugs;
|
|
141
|
+
if (q) {
|
|
142
|
+
filtered = slugs.filter(function (s) {
|
|
143
|
+
var primary = formatMcpPrimaryLabel(s);
|
|
144
|
+
return s.toLowerCase().includes(q) || primary.toLowerCase().includes(q);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return filtered.map(function (slug) {
|
|
148
|
+
var primary = formatMcpPrimaryLabel(slug);
|
|
149
|
+
return {
|
|
150
|
+
id: slug,
|
|
151
|
+
type: 'mcp',
|
|
152
|
+
primary: primary,
|
|
153
|
+
primaryHighlight: highlightRange(primary, searchValue),
|
|
154
|
+
raw: {
|
|
155
|
+
id: slug,
|
|
156
|
+
name: primary
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
162
|
+
var _scope$mcpSlugs;
|
|
163
|
+
var _useState = useState(''),
|
|
164
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
165
|
+
searchValue = _useState2[0],
|
|
166
|
+
setSearchValue = _useState2[1];
|
|
167
|
+
var debouncedSearchValue = useDebounce(searchValue, 400);
|
|
168
|
+
var _useState3 = useState([]),
|
|
169
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
170
|
+
items = _useState4[0],
|
|
171
|
+
setItems = _useState4[1];
|
|
172
|
+
var _useState5 = useState(false),
|
|
173
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
174
|
+
loading = _useState6[0],
|
|
175
|
+
setLoading = _useState6[1];
|
|
176
|
+
var _useState7 = useState(false),
|
|
177
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
178
|
+
error = _useState8[0],
|
|
179
|
+
setError = _useState8[1];
|
|
180
|
+
var mcpSlugsKey = ((_scope$mcpSlugs = scope === null || scope === void 0 ? void 0 : scope.mcpSlugs) !== null && _scope$mcpSlugs !== void 0 ? _scope$mcpSlugs : []).join('|');
|
|
181
|
+
|
|
182
|
+
// Estabilizamos el scope para no disparar fetchs por cambios de identidad de objeto.
|
|
183
|
+
var stableScope = useMemo(function () {
|
|
184
|
+
var _scope$clientId, _scope$projectId, _scope$mcpSlugs2;
|
|
185
|
+
return {
|
|
186
|
+
clientId: (_scope$clientId = scope === null || scope === void 0 ? void 0 : scope.clientId) !== null && _scope$clientId !== void 0 ? _scope$clientId : null,
|
|
187
|
+
projectId: (_scope$projectId = scope === null || scope === void 0 ? void 0 : scope.projectId) !== null && _scope$projectId !== void 0 ? _scope$projectId : null,
|
|
188
|
+
mcpSlugs: (_scope$mcpSlugs2 = scope === null || scope === void 0 ? void 0 : scope.mcpSlugs) !== null && _scope$mcpSlugs2 !== void 0 ? _scope$mcpSlugs2 : []
|
|
189
|
+
};
|
|
190
|
+
}, [scope === null || scope === void 0 ? void 0 : scope.clientId, scope === null || scope === void 0 ? void 0 : scope.projectId, mcpSlugsKey]);
|
|
191
|
+
|
|
192
|
+
// --- Search: project | task (GraphQL: search) ---
|
|
193
|
+
var _useLazyQuery = useLazyQuery(SEARCH_ENTITIES, {
|
|
194
|
+
variables: {
|
|
195
|
+
limit: 20
|
|
196
|
+
},
|
|
197
|
+
fetchPolicy: 'network-only'
|
|
198
|
+
}),
|
|
199
|
+
_useLazyQuery2 = _slicedToArray(_useLazyQuery, 2),
|
|
200
|
+
fetchSearchEntities = _useLazyQuery2[0],
|
|
201
|
+
_useLazyQuery2$ = _useLazyQuery2[1],
|
|
202
|
+
searchData = _useLazyQuery2$.data,
|
|
203
|
+
searchLoading = _useLazyQuery2$.loading,
|
|
204
|
+
searchError = _useLazyQuery2$.error;
|
|
205
|
+
|
|
206
|
+
// --- Search: client (GraphQL) ---
|
|
207
|
+
var _useLazyQuery3 = useLazyQuery(SEARCH_CLIENTS, {
|
|
208
|
+
fetchPolicy: 'network-only'
|
|
209
|
+
}),
|
|
210
|
+
_useLazyQuery4 = _slicedToArray(_useLazyQuery3, 2),
|
|
211
|
+
fetchSearchClients = _useLazyQuery4[0],
|
|
212
|
+
_useLazyQuery4$ = _useLazyQuery4[1],
|
|
213
|
+
clientsData = _useLazyQuery4$.data,
|
|
214
|
+
clientsLoading = _useLazyQuery4$.loading,
|
|
215
|
+
clientsError = _useLazyQuery4$.error;
|
|
216
|
+
|
|
217
|
+
// --- Search: user (GraphQL: usersDirectory) ---
|
|
218
|
+
var _useLazyQuery5 = useLazyQuery(USERS_DIRECTORY, {
|
|
219
|
+
fetchPolicy: 'network-only'
|
|
220
|
+
}),
|
|
221
|
+
_useLazyQuery6 = _slicedToArray(_useLazyQuery5, 2),
|
|
222
|
+
fetchUsersDirectory = _useLazyQuery6[0],
|
|
223
|
+
_useLazyQuery6$ = _useLazyQuery6[1],
|
|
224
|
+
usersData = _useLazyQuery6$.data,
|
|
225
|
+
usersLoading = _useLazyQuery6$.loading,
|
|
226
|
+
usersError = _useLazyQuery6$.error;
|
|
227
|
+
var fetchRecent = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
228
|
+
var _stableScope$mcpSlugs, slugs, data, mapped, _data, _mapped, _t;
|
|
229
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
230
|
+
while (1) switch (_context.prev = _context.next) {
|
|
231
|
+
case 0:
|
|
232
|
+
if (!(type === 'mcp')) {
|
|
233
|
+
_context.next = 1;
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
slugs = (_stableScope$mcpSlugs = stableScope.mcpSlugs) !== null && _stableScope$mcpSlugs !== void 0 ? _stableScope$mcpSlugs : [];
|
|
237
|
+
setLoading(false);
|
|
238
|
+
setError(false);
|
|
239
|
+
setItems(mapMcpSlugsToItems(slugs, ''));
|
|
240
|
+
return _context.abrupt("return");
|
|
241
|
+
case 1:
|
|
242
|
+
setLoading(true);
|
|
243
|
+
setError(false);
|
|
244
|
+
_context.prev = 2;
|
|
245
|
+
if (!(type === 'client')) {
|
|
246
|
+
_context.next = 4;
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
_context.next = 3;
|
|
250
|
+
return maia.RecentClients.getRecentClients();
|
|
251
|
+
case 3:
|
|
252
|
+
data = _context.sent;
|
|
253
|
+
mapped = (data !== null && data !== void 0 ? data : []).map(function (c) {
|
|
254
|
+
return mapClientToItem(c, '');
|
|
255
|
+
});
|
|
256
|
+
setItems(mapped);
|
|
257
|
+
_context.next = 7;
|
|
258
|
+
break;
|
|
259
|
+
case 4:
|
|
260
|
+
if (!(type === 'project')) {
|
|
261
|
+
_context.next = 6;
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
_context.next = 5;
|
|
265
|
+
return maia.RecentProjects.getRecentProjects(stableScope.clientId ? {
|
|
266
|
+
clientId: stableScope.clientId
|
|
267
|
+
} : undefined);
|
|
268
|
+
case 5:
|
|
269
|
+
_data = _context.sent;
|
|
270
|
+
_mapped = (Array.isArray(_data) ? _data : []).map(function (p) {
|
|
271
|
+
return mapSearchToItem({
|
|
272
|
+
id: p.id,
|
|
273
|
+
title: p.title,
|
|
274
|
+
type: 'project',
|
|
275
|
+
clientId: p.clientId,
|
|
276
|
+
feeId: p.feeId,
|
|
277
|
+
clientName: p.clientName
|
|
278
|
+
}, 'project', '');
|
|
279
|
+
});
|
|
280
|
+
setItems(_mapped);
|
|
281
|
+
_context.next = 7;
|
|
282
|
+
break;
|
|
283
|
+
case 6:
|
|
284
|
+
// tasks y users no tienen endpoint de recents: arrancamos vacío
|
|
285
|
+
setItems([]);
|
|
286
|
+
case 7:
|
|
287
|
+
_context.next = 9;
|
|
288
|
+
break;
|
|
289
|
+
case 8:
|
|
290
|
+
_context.prev = 8;
|
|
291
|
+
_t = _context["catch"](2);
|
|
292
|
+
setError(true);
|
|
293
|
+
setItems([]);
|
|
294
|
+
case 9:
|
|
295
|
+
_context.prev = 9;
|
|
296
|
+
setLoading(false);
|
|
297
|
+
return _context.finish(9);
|
|
298
|
+
case 10:
|
|
299
|
+
case "end":
|
|
300
|
+
return _context.stop();
|
|
301
|
+
}
|
|
302
|
+
}, _callee, null, [[2, 8, 9, 10]]);
|
|
303
|
+
})), [type, stableScope]);
|
|
304
|
+
|
|
305
|
+
// Disparar search al cambiar debounced value
|
|
306
|
+
useEffect(function () {
|
|
307
|
+
var q = debouncedSearchValue.trim();
|
|
308
|
+
if (type === 'mcp') {
|
|
309
|
+
var _stableScope$mcpSlugs2;
|
|
310
|
+
var slugs = (_stableScope$mcpSlugs2 = stableScope.mcpSlugs) !== null && _stableScope$mcpSlugs2 !== void 0 ? _stableScope$mcpSlugs2 : [];
|
|
311
|
+
setLoading(false);
|
|
312
|
+
setError(false);
|
|
313
|
+
setItems(mapMcpSlugsToItems(slugs, q));
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
if (!q) return;
|
|
317
|
+
if (type === 'client') {
|
|
318
|
+
fetchSearchClients({
|
|
319
|
+
variables: {
|
|
320
|
+
filter: {
|
|
321
|
+
name: q
|
|
322
|
+
},
|
|
323
|
+
page: 1,
|
|
324
|
+
perPage: 20
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
} else if (type === 'user') {
|
|
328
|
+
fetchUsersDirectory({
|
|
329
|
+
variables: {
|
|
330
|
+
filters: buildUsersDirectoryFilters(q, stableScope),
|
|
331
|
+
page: 1
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
} else {
|
|
335
|
+
fetchSearchEntities({
|
|
336
|
+
variables: {
|
|
337
|
+
q: q,
|
|
338
|
+
filters: buildFiltersForType(type, stableScope)
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
}, [debouncedSearchValue, type, stableScope, fetchSearchEntities, fetchSearchClients, fetchUsersDirectory]);
|
|
343
|
+
|
|
344
|
+
// Sincronizar resultados de search
|
|
345
|
+
useEffect(function () {
|
|
346
|
+
if (type === 'mcp') return;
|
|
347
|
+
var q = debouncedSearchValue.trim();
|
|
348
|
+
if (!q) return;
|
|
349
|
+
if (type === 'client') {
|
|
350
|
+
var _clientsData$clients;
|
|
351
|
+
setLoading(clientsLoading);
|
|
352
|
+
if (clientsError) {
|
|
353
|
+
setError(true);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
if (clientsData !== null && clientsData !== void 0 && (_clientsData$clients = clientsData.clients) !== null && _clientsData$clients !== void 0 && _clientsData$clients.data) {
|
|
357
|
+
setItems(clientsData.clients.data.map(function (c) {
|
|
358
|
+
return mapClientToItem(c, q);
|
|
359
|
+
}));
|
|
360
|
+
setError(false);
|
|
361
|
+
}
|
|
362
|
+
} else if (type === 'user') {
|
|
363
|
+
var _usersData$usersDirec;
|
|
364
|
+
setLoading(usersLoading);
|
|
365
|
+
if (usersError) {
|
|
366
|
+
setError(true);
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
if (usersData !== null && usersData !== void 0 && (_usersData$usersDirec = usersData.usersDirectory) !== null && _usersData$usersDirec !== void 0 && _usersData$usersDirec.data) {
|
|
370
|
+
setItems(usersData.usersDirectory.data.map(function (u) {
|
|
371
|
+
return mapUserToItem(u, q);
|
|
372
|
+
}));
|
|
373
|
+
setError(false);
|
|
374
|
+
}
|
|
375
|
+
} else {
|
|
376
|
+
setLoading(searchLoading);
|
|
377
|
+
if (searchError) {
|
|
378
|
+
setError(true);
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
if (searchData !== null && searchData !== void 0 && searchData.search) {
|
|
382
|
+
setItems(searchData.search.map(function (r) {
|
|
383
|
+
return mapSearchToItem(r, type, q);
|
|
384
|
+
}));
|
|
385
|
+
setError(false);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}, [searchData, clientsData, usersData, searchLoading, clientsLoading, usersLoading, searchError, clientsError, usersError, debouncedSearchValue, type]);
|
|
389
|
+
|
|
390
|
+
// Cuando se limpia el search, volver a recents
|
|
391
|
+
useEffect(function () {
|
|
392
|
+
if (!debouncedSearchValue.trim()) {
|
|
393
|
+
fetchRecent();
|
|
394
|
+
}
|
|
395
|
+
}, [debouncedSearchValue, fetchRecent]);
|
|
396
|
+
return {
|
|
397
|
+
items: items,
|
|
398
|
+
loading: loading,
|
|
399
|
+
error: error,
|
|
400
|
+
searchValue: searchValue,
|
|
401
|
+
updateSearchValue: setSearchValue,
|
|
402
|
+
fetchRecent: fetchRecent
|
|
403
|
+
};
|
|
404
|
+
};
|
|
405
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsIm1haWEiLCJTRUFSQ0hfRU5USVRJRVMiLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsInVzZURlYm91bmNlIiwiQkFTRV9GSUxURVJTX0JZX1RZUEUiLCJwcm9qZWN0IiwiYXJjaGl2ZWQiLCJ0YXNrIiwiYnVpbGRGaWx0ZXJzRm9yVHlwZSIsInR5cGUiLCJzY29wZSIsImJhc2UiLCJleHRyYSIsImNsaWVudElkIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwicHJvamVjdElkIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9vYmplY3RTcHJlYWQiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsInEiLCJ3aXRoUG9zaXRpb24iLCJ3aXRoVGVhbXMiLCJzZWFyY2hJbnB1dCIsImhpZ2hsaWdodFJhbmdlIiwidGV4dCIsInNlYXJjaFZhbHVlIiwiaWR4IiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwic3RhcnQiLCJsZW5ndGgiLCJtYXBDbGllbnRUb0l0ZW0iLCJjIiwiX2MkdG90YWxQcm95ZWN0b3MiLCJfYyR0b3RhbFByb3llY3RvczIiLCJpZCIsInByaW1hcnkiLCJuYW1lIiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJjb3VudCIsInRvdGFsUHJveWVjdG9zIiwiY291bnRMYWJlbCIsInJhdyIsIm1hcFVzZXJUb0l0ZW0iLCJ1IiwiX3UkZmlyc3ROYW1lIiwiX3UkbGFzdE5hbWUiLCJfdSRwaWN0dXJlIiwiX3UkcG9zaXRpb25OYW1lIiwiX3UkZW1haWwiLCJmdWxsTmFtZSIsImNvbmNhdCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwidHJpbSIsImVtYWlsIiwicGljdHVyZSIsInBvc2l0aW9uTmFtZSIsIm1hcFNlYXJjaFRvSXRlbSIsInIiLCJfciRwcm9qZWN0TmFtZSIsIl9yJGNsaWVudElkIiwiX3IkY2xpZW50TmFtZSIsIl9yJHByb2plY3ROYW1lMiIsIl9yJGZlZUlkIiwidGl0bGUiLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsImNsaWVudE5hbWUiLCJmZWVJZCIsImZvcm1hdE1jcFByaW1hcnlMYWJlbCIsInNsdWciLCJyZXBsYWNlIiwiY2hhciIsInRvVXBwZXJDYXNlIiwibWFwTWNwU2x1Z3NUb0l0ZW1zIiwic2x1Z3MiLCJmaWx0ZXJlZCIsImZpbHRlciIsInMiLCJpbmNsdWRlcyIsIm1hcCIsInVzZUVudGl0eVNlYXJjaCIsIl9zY29wZSRtY3BTbHVncyIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldFNlYXJjaFZhbHVlIiwiZGVib3VuY2VkU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIml0ZW1zIiwic2V0SXRlbXMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlcnJvciIsInNldEVycm9yIiwibWNwU2x1Z3NLZXkiLCJtY3BTbHVncyIsImpvaW4iLCJzdGFibGVTY29wZSIsIl9zY29wZSRjbGllbnRJZCIsIl9zY29wZSRwcm9qZWN0SWQiLCJfc2NvcGUkbWNwU2x1Z3MyIiwiX3VzZUxhenlRdWVyeSIsInZhcmlhYmxlcyIsImxpbWl0IiwiZmV0Y2hQb2xpY3kiLCJfdXNlTGF6eVF1ZXJ5MiIsImZldGNoU2VhcmNoRW50aXRpZXMiLCJfdXNlTGF6eVF1ZXJ5MiQiLCJzZWFyY2hEYXRhIiwiZGF0YSIsInNlYXJjaExvYWRpbmciLCJzZWFyY2hFcnJvciIsIl91c2VMYXp5UXVlcnkzIiwiX3VzZUxhenlRdWVyeTQiLCJmZXRjaFNlYXJjaENsaWVudHMiLCJfdXNlTGF6eVF1ZXJ5NCQiLCJjbGllbnRzRGF0YSIsImNsaWVudHNMb2FkaW5nIiwiY2xpZW50c0Vycm9yIiwiX3VzZUxhenlRdWVyeTUiLCJfdXNlTGF6eVF1ZXJ5NiIsImZldGNoVXNlcnNEaXJlY3RvcnkiLCJfdXNlTGF6eVF1ZXJ5NiQiLCJ1c2Vyc0RhdGEiLCJ1c2Vyc0xvYWRpbmciLCJ1c2Vyc0Vycm9yIiwiZmV0Y2hSZWNlbnQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9zdGFibGVTY29wZSRtY3BTbHVncyIsIm1hcHBlZCIsIl9kYXRhIiwiX21hcHBlZCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJhYnJ1cHQiLCJSZWNlbnRDbGllbnRzIiwiZ2V0UmVjZW50Q2xpZW50cyIsInNlbnQiLCJSZWNlbnRQcm9qZWN0cyIsImdldFJlY2VudFByb2plY3RzIiwiQXJyYXkiLCJpc0FycmF5IiwicCIsImZpbmlzaCIsInN0b3AiLCJfc3RhYmxlU2NvcGUkbWNwU2x1Z3MyIiwicGFnZSIsInBlclBhZ2UiLCJmaWx0ZXJzIiwiX2NsaWVudHNEYXRhJGNsaWVudHMiLCJjbGllbnRzIiwiX3VzZXJzRGF0YSR1c2Vyc0RpcmVjIiwidXNlcnNEaXJlY3RvcnkiLCJzZWFyY2giLCJ1cGRhdGVTZWFyY2hWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VFbnRpdHlTZWFyY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTGF6eVF1ZXJ5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IG1haWEgZnJvbSAnLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IFNFQVJDSF9FTlRJVElFUyB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L2VudGl0eVNlYXJjaFF1ZXJ5J1xuaW1wb3J0IHsgU0VBUkNIX0NMSUVOVFMgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS9DbGllbnRTZWFyY2hRdWVyeSdcbmltcG9ydCB7IFVTRVJTX0RJUkVDVE9SWSB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L3VzZXJzRGlyZWN0b3J5UXVlcnknXG5pbXBvcnQgeyB1c2VEZWJvdW5jZSB9IGZyb20gJy4vdXNlRGVib3VuY2UnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbnR5cGUgUmF3U2VhcmNoUmVzdWx0ID0ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIHRpdGxlOiBzdHJpbmdcbiAgdHlwZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlciB8IHN0cmluZyB8IG51bGxcbiAgZmVlSWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGNsaWVudE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIHByb2plY3ROYW1lPzogc3RyaW5nIHwgbnVsbFxufVxuXG50eXBlIFJhd0NsaWVudCA9IHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgdG90YWxQcm95ZWN0b3M/OiBudW1iZXIgfCBudWxsXG59XG5cbnR5cGUgUmF3RGlyZWN0b3J5VXNlciA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICBmaXJzdE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGxhc3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBlbWFpbD86IHN0cmluZyB8IG51bGxcbiAgcGljdHVyZT86IHN0cmluZyB8IG51bGxcbiAgcG9zaXRpb25OYW1lPzogc3RyaW5nIHwgbnVsbFxufVxuXG50eXBlIFNlYXJjaEVudGl0aWVzRGF0YSA9IHsgc2VhcmNoOiBSYXdTZWFyY2hSZXN1bHRbXSB8IG51bGwgfVxudHlwZSBTZWFyY2hDbGllbnRzRGF0YSA9IHtcbiAgY2xpZW50czoge1xuICAgIGRhdGE6IFJhd0NsaWVudFtdXG4gIH0gfCBudWxsXG59XG50eXBlIFVzZXJzRGlyZWN0b3J5RGF0YSA9IHtcbiAgdXNlcnNEaXJlY3Rvcnk6IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBkYXRhOiBSYXdEaXJlY3RvcnlVc2VyW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbi8qKlxuICogUmVzdHJpbmdlIGxvcyByZXN1bHRhZG9zIGFsIGBjbGllbnRJZGAvYHByb2plY3RJZGAgZGVsIGFnZW50ZSBhY3Rpdm8uXG4gKiBDdWFuZG8gZWwgYWdlbnRlIGVzdMOhIHNjb3BlYWRvIGEgdW4gY2xpZW50L3Byb2plY3QsIHRhbnRvIGxvcyByZWNlbnRzIGNvbW9cbiAqIGVsIHNlYXJjaCBkZWJlbiBmaWx0cmFyIHBvciBlc2UgY29udGV4dG8uIFNpIGVsIGJhY2tlbmQgbm8gZW50aWVuZGUgYWxnw7puXG4gKiBjYW1wbyBsbyBpZ25vcmEgeSBzZSBjYWUgYWwgY29tcG9ydGFtaWVudG8gZ2xvYmFsLlxuICovXG5leHBvcnQgdHlwZSBFbnRpdHlTZWFyY2hTY29wZSA9IHtcbiAgY2xpZW50SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHByb2plY3RJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgLyoqIFNsdWdzIGRlbCBjb25lY3RvciBNQ1AgZGVsIGFnZW50ZSAobGlzdGFkbyBsb2NhbCwgc2luIEdyYXBoUUwpLiAqL1xuICBtY3BTbHVncz86IHN0cmluZ1tdXG59XG5cbnR5cGUgU2VhcmNoRmlsdGVyYWJsZVR5cGUgPSAncHJvamVjdCcgfCAndGFzaydcblxuY29uc3QgQkFTRV9GSUxURVJTX0JZX1RZUEU6IFJlY29yZDxTZWFyY2hGaWx0ZXJhYmxlVHlwZSwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gIHByb2plY3Q6IHsgcHJvamVjdDogJ3RydWUnLCBhcmNoaXZlZDogJ2FsbCcgfSxcbiAgdGFzazogeyB0YXNrOiAndHJ1ZScgfSxcbn1cblxuY29uc3QgYnVpbGRGaWx0ZXJzRm9yVHlwZSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSwgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGJhc2UgPSBCQVNFX0ZJTFRFUlNfQllfVFlQRVt0eXBlXVxuICBjb25zdCBleHRyYTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gIGlmIChzY29wZT8uY2xpZW50SWQgIT09IHVuZGVmaW5lZCAmJiBzY29wZT8uY2xpZW50SWQgIT09IG51bGwgJiYgc2NvcGUuY2xpZW50SWQgIT09ICcnKSB7XG4gICAgZXh0cmEuY2xpZW50SWQgPSBTdHJpbmcoc2NvcGUuY2xpZW50SWQpXG4gIH1cbiAgLy8gUHJvamVjdCB0YWIgbnVuY2EgZmlsdHJhIHBvciBwcm9qZWN0SWQgKHJvbXBlIGxhIGxpc3RhKS4gVGFza3Mgc8OtLlxuICBpZiAodHlwZSAhPT0gJ3Byb2plY3QnICYmIHNjb3BlPy5wcm9qZWN0SWQgIT09IHVuZGVmaW5lZCAmJiBzY29wZT8ucHJvamVjdElkICE9PSBudWxsICYmIHNjb3BlLnByb2plY3RJZCAhPT0gJycpIHtcbiAgICBleHRyYS5wcm9qZWN0SWQgPSBTdHJpbmcoc2NvcGUucHJvamVjdElkKVxuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7IC4uLmJhc2UsIC4uLmV4dHJhIH0pXG59XG5cbi8qKlxuICogRmlsdHJvcyBwYXJhIHVzZXJzRGlyZWN0b3J5LiBFbCBiYWNrZW5kIGVzcGVyYSB1biBKU09OIHN0cmluZyBjb25cbiAqIHdpdGhQb3NpdGlvbiwgd2l0aFRlYW1zIHkgc2VhcmNoSW5wdXQuIExlIGFncmVnYW1vcyBjbGllbnRJZC9wcm9qZWN0SWRcbiAqIGRlbCBzY29wZSBlbiBjYXNvIGRlIHF1ZSBlbCBiYWNrZW5kIGxvcyBhcHJvdmVjaGUgcGFyYSBmaWx0cmFyIHBvclxuICogY29udGV4dG8gKHNpIG5vIGxvcyBlbnRpZW5kZSBsb3MgaWdub3JhKS5cbiAqL1xuY29uc3QgYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMgPSAocTogc3RyaW5nLCBzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKTogc3RyaW5nID0+IHtcbiAgY29uc3QgYmFzZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgd2l0aFBvc2l0aW9uOiB0cnVlLFxuICAgIHdpdGhUZWFtczogdHJ1ZSxcbiAgICBzZWFyY2hJbnB1dDogcSxcbiAgfVxuICBpZiAoc2NvcGU/LmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc2NvcGU/LmNsaWVudElkICE9PSBudWxsICYmIHNjb3BlLmNsaWVudElkICE9PSAnJykge1xuICAgIGJhc2UuY2xpZW50SWQgPSBTdHJpbmcoc2NvcGUuY2xpZW50SWQpXG4gIH1cbiAgaWYgKHNjb3BlPy5wcm9qZWN0SWQgIT09IHVuZGVmaW5lZCAmJiBzY29wZT8ucHJvamVjdElkICE9PSBudWxsICYmIHNjb3BlLnByb2plY3RJZCAhPT0gJycpIHtcbiAgICBiYXNlLnByb2plY3RJZCA9IFN0cmluZyhzY29wZS5wcm9qZWN0SWQpXG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJhc2UpXG59XG5cbmNvbnN0IGhpZ2hsaWdodFJhbmdlID0gKHRleHQ6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoIXNlYXJjaFZhbHVlKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGlkeCA9IHRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gIGlmIChpZHggPCAwKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiB7IHN0YXJ0OiBpZHgsIGxlbmd0aDogc2VhcmNoVmFsdWUubGVuZ3RoIH1cbn1cblxuY29uc3QgbWFwQ2xpZW50VG9JdGVtID0gKGM6IFJhd0NsaWVudCwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbSA9PiAoe1xuICBpZDogYy5pZCxcbiAgdHlwZTogJ2NsaWVudCcsXG4gIHByaW1hcnk6IGMubmFtZSxcbiAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UoYy5uYW1lLCBzZWFyY2hWYWx1ZSksXG4gIGJyZWFkY3J1bWI6IHtcbiAgICBjb3VudDogYy50b3RhbFByb3llY3RvcyA/PyB1bmRlZmluZWQsXG4gICAgY291bnRMYWJlbDogJ3Byb2plY3RzJyxcbiAgfSxcbiAgcmF3OiB7XG4gICAgaWQ6IGMuaWQsXG4gICAgbmFtZTogYy5uYW1lLFxuICAgIHRvdGFsUHJveWVjdG9zOiBjLnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gIH0sXG59KVxuXG5jb25zdCBtYXBVc2VyVG9JdGVtID0gKHU6IFJhd0RpcmVjdG9yeVVzZXIsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke3UuZmlyc3ROYW1lID8/ICcnfSAke3UubGFzdE5hbWUgPz8gJyd9YC50cmltKClcbiAgY29uc3QgcHJpbWFyeSA9IGZ1bGxOYW1lIHx8IHUuZW1haWwgfHwgU3RyaW5nKHUuaWQpXG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdS5pZCxcbiAgICB0eXBlOiAndXNlcicsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgcmF3OiB7XG4gICAgICBpZDogdS5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwaWN0dXJlOiB1LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgIHBvc2l0aW9uTmFtZTogdS5wb3NpdGlvbk5hbWUgPz8gbnVsbCxcbiAgICAgIGVtYWlsOiB1LmVtYWlsID8/IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBtYXBTZWFyY2hUb0l0ZW0gPSAocjogUmF3U2VhcmNoUmVzdWx0LCB0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbSA9PiB7XG4gIGNvbnN0IHByaW1hcnkgPSByLnRpdGxlIHx8IHIucHJvamVjdE5hbWUgfHwgJydcbiAgbGV0IHBhcmVudDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICBpZiAodHlwZSA9PT0gJ3Byb2plY3QnKSBwYXJlbnQgPSByLmNsaWVudE5hbWVcbiAgZWxzZSBpZiAodHlwZSA9PT0gJ3Rhc2snKSBwYXJlbnQgPSB1bmRlZmluZWRcbiAgZWxzZSBwYXJlbnQgPSByLnByb2plY3ROYW1lID8/IHIuY2xpZW50TmFtZVxuXG4gIHJldHVybiB7XG4gICAgaWQ6IHIuaWQsXG4gICAgdHlwZSxcbiAgICBwcmltYXJ5LFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKHByaW1hcnksIHNlYXJjaFZhbHVlKSxcbiAgICBicmVhZGNydW1iOiBwYXJlbnQgPyB7IHBhcmVudCB9IDogdW5kZWZpbmVkLFxuICAgIHJhdzoge1xuICAgICAgaWQ6IHIuaWQsXG4gICAgICBuYW1lOiBwcmltYXJ5LFxuICAgICAgY2xpZW50SWQ6IHIuY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgIGNsaWVudE5hbWU6IHIuY2xpZW50TmFtZSA/PyBudWxsLFxuICAgICAgcHJvamVjdE5hbWU6IHIucHJvamVjdE5hbWUgPz8gbnVsbCxcbiAgICAgIGZlZUlkOiByLmZlZUlkID8/IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBmb3JtYXRNY3BQcmltYXJ5TGFiZWwgPSAoc2x1Zzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNsdWcucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcYlxcdy9nLCBjaGFyID0+IGNoYXIudG9VcHBlckNhc2UoKSlcblxuY29uc3QgbWFwTWNwU2x1Z3NUb0l0ZW1zID0gKHNsdWdzOiBzdHJpbmdbXSwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbVtdID0+IHtcbiAgY29uc3QgcSA9IHNlYXJjaFZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gIGxldCBmaWx0ZXJlZCA9IHNsdWdzXG4gIGlmIChxKSB7XG4gICAgZmlsdGVyZWQgPSBzbHVncy5maWx0ZXIocyA9PiB7XG4gICAgICBjb25zdCBwcmltYXJ5ID0gZm9ybWF0TWNwUHJpbWFyeUxhYmVsKHMpXG4gICAgICByZXR1cm4gcy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpIHx8IHByaW1hcnkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKVxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIGZpbHRlcmVkLm1hcChzbHVnID0+IHtcbiAgICBjb25zdCBwcmltYXJ5ID0gZm9ybWF0TWNwUHJpbWFyeUxhYmVsKHNsdWcpXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzbHVnLFxuICAgICAgdHlwZTogJ21jcCcgYXMgY29uc3QsXG4gICAgICBwcmltYXJ5LFxuICAgICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgICAgcmF3OiB7XG4gICAgICAgIGlkOiBzbHVnLFxuICAgICAgICBuYW1lOiBwcmltYXJ5LFxuICAgICAgfSxcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VFbnRpdHlTZWFyY2ggPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpID0+IHtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgZGVib3VuY2VkU2VhcmNoVmFsdWUgPSB1c2VEZWJvdW5jZShzZWFyY2hWYWx1ZSwgNDAwKVxuXG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8Q29udGV4dE1lbnRpb25JdGVtW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBtY3BTbHVnc0tleSA9IChzY29wZT8ubWNwU2x1Z3MgPz8gW10pLmpvaW4oJ3wnKVxuXG4gIC8vIEVzdGFiaWxpemFtb3MgZWwgc2NvcGUgcGFyYSBubyBkaXNwYXJhciBmZXRjaHMgcG9yIGNhbWJpb3MgZGUgaWRlbnRpZGFkIGRlIG9iamV0by5cbiAgY29uc3Qgc3RhYmxlU2NvcGUgPSB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoe1xuICAgICAgY2xpZW50SWQ6IHNjb3BlPy5jbGllbnRJZCA/PyBudWxsLFxuICAgICAgcHJvamVjdElkOiBzY29wZT8ucHJvamVjdElkID8/IG51bGwsXG4gICAgICBtY3BTbHVnczogc2NvcGU/Lm1jcFNsdWdzID8/IFtdLFxuICAgIH0pLFxuICAgIFtzY29wZT8uY2xpZW50SWQsIHNjb3BlPy5wcm9qZWN0SWQsIG1jcFNsdWdzS2V5XVxuICApXG5cbiAgLy8gLS0tIFNlYXJjaDogcHJvamVjdCB8IHRhc2sgKEdyYXBoUUw6IHNlYXJjaCkgLS0tXG4gIGNvbnN0IFtmZXRjaFNlYXJjaEVudGl0aWVzLCB7IGRhdGE6IHNlYXJjaERhdGEsIGxvYWRpbmc6IHNlYXJjaExvYWRpbmcsIGVycm9yOiBzZWFyY2hFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaEVudGl0aWVzRGF0YT4oU0VBUkNIX0VOVElUSUVTLCB7XG4gICAgICB2YXJpYWJsZXM6IHsgbGltaXQ6IDIwIH0sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgfSlcblxuICAvLyAtLS0gU2VhcmNoOiBjbGllbnQgKEdyYXBoUUwpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hDbGllbnRzLCB7IGRhdGE6IGNsaWVudHNEYXRhLCBsb2FkaW5nOiBjbGllbnRzTG9hZGluZywgZXJyb3I6IGNsaWVudHNFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaENsaWVudHNEYXRhPihTRUFSQ0hfQ0xJRU5UUywge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogdXNlciAoR3JhcGhRTDogdXNlcnNEaXJlY3RvcnkpIC0tLVxuICBjb25zdCBbZmV0Y2hVc2Vyc0RpcmVjdG9yeSwgeyBkYXRhOiB1c2Vyc0RhdGEsIGxvYWRpbmc6IHVzZXJzTG9hZGluZywgZXJyb3I6IHVzZXJzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxVc2Vyc0RpcmVjdG9yeURhdGE+KFVTRVJTX0RJUkVDVE9SWSwge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgY29uc3QgZmV0Y2hSZWNlbnQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsICcnKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICBzZXRFcnJvcihmYWxzZSlcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBtYWlhLlJlY2VudENsaWVudHMuZ2V0UmVjZW50Q2xpZW50cygpXG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IChkYXRhID8/IFtdKS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgJycpKVxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgbWFpYS5SZWNlbnRQcm9qZWN0cy5nZXRSZWNlbnRQcm9qZWN0cyhcbiAgICAgICAgICBzdGFibGVTY29wZS5jbGllbnRJZCA/IHsgY2xpZW50SWQ6IHN0YWJsZVNjb3BlLmNsaWVudElkIH0gOiB1bmRlZmluZWRcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBtYXBwZWQgPSAoQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXSkubWFwKHAgPT5cbiAgICAgICAgICBtYXBTZWFyY2hUb0l0ZW0oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgICAgICAgICAgdHlwZTogJ3Byb2plY3QnLFxuICAgICAgICAgICAgICBjbGllbnRJZDogcC5jbGllbnRJZCxcbiAgICAgICAgICAgICAgZmVlSWQ6IHAuZmVlSWQsXG4gICAgICAgICAgICAgIGNsaWVudE5hbWU6IHAuY2xpZW50TmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAncHJvamVjdCcsXG4gICAgICAgICAgICAnJ1xuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0YXNrcyB5IHVzZXJzIG5vIHRpZW5lbiBlbmRwb2ludCBkZSByZWNlbnRzOiBhcnJhbmNhbW9zIHZhY8Otb1xuICAgICAgICBzZXRJdGVtcyhbXSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICBzZXRJdGVtcyhbXSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH0sIFt0eXBlLCBzdGFibGVTY29wZV0pXG5cbiAgLy8gRGlzcGFyYXIgc2VhcmNoIGFsIGNhbWJpYXIgZGVib3VuY2VkIHZhbHVlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuXG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsIHEpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFxKSByZXR1cm5cblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgZmV0Y2hTZWFyY2hDbGllbnRzKHtcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgZmlsdGVyOiB7IG5hbWU6IHEgfSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd1c2VyJykge1xuICAgICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcnM6IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzKHEsIHN0YWJsZVNjb3BlKSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgZmV0Y2hTZWFyY2hFbnRpdGllcyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIHEsXG4gICAgICAgICAgZmlsdGVyczogYnVpbGRGaWx0ZXJzRm9yVHlwZSh0eXBlLCBzdGFibGVTY29wZSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCB0eXBlLCBzdGFibGVTY29wZSwgZmV0Y2hTZWFyY2hFbnRpdGllcywgZmV0Y2hTZWFyY2hDbGllbnRzLCBmZXRjaFVzZXJzRGlyZWN0b3J5XSlcblxuICAvLyBTaW5jcm9uaXphciByZXN1bHRhZG9zIGRlIHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlID09PSAnbWNwJykgcmV0dXJuXG5cbiAgICBjb25zdCBxID0gZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpXG4gICAgaWYgKCFxKSByZXR1cm5cblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0TG9hZGluZyhjbGllbnRzTG9hZGluZylcbiAgICAgIGlmIChjbGllbnRzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50c0RhdGE/LmNsaWVudHM/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXMoY2xpZW50c0RhdGEuY2xpZW50cy5kYXRhLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCBxKSkpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICBzZXRMb2FkaW5nKHVzZXJzTG9hZGluZylcbiAgICAgIGlmICh1c2Vyc0Vycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHVzZXJzRGF0YT8udXNlcnNEaXJlY3Rvcnk/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXModXNlcnNEYXRhLnVzZXJzRGlyZWN0b3J5LmRhdGEubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCBxKSkpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRMb2FkaW5nKHNlYXJjaExvYWRpbmcpXG4gICAgICBpZiAoc2VhcmNoRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoc2VhcmNoRGF0YT8uc2VhcmNoKSB7XG4gICAgICAgIHNldEl0ZW1zKHNlYXJjaERhdGEuc2VhcmNoLm1hcChyID0+IG1hcFNlYXJjaFRvSXRlbShyLCB0eXBlLCBxKSkpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHNlYXJjaERhdGEsXG4gICAgY2xpZW50c0RhdGEsXG4gICAgdXNlcnNEYXRhLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgY2xpZW50c0xvYWRpbmcsXG4gICAgdXNlcnNMb2FkaW5nLFxuICAgIHNlYXJjaEVycm9yLFxuICAgIGNsaWVudHNFcnJvcixcbiAgICB1c2Vyc0Vycm9yLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIHR5cGUsXG4gIF0pXG5cbiAgLy8gQ3VhbmRvIHNlIGxpbXBpYSBlbCBzZWFyY2gsIHZvbHZlciBhIHJlY2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgZmV0Y2hSZWNlbnQoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCBmZXRjaFJlY2VudF0pXG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlOiBzZXRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFJlY2VudCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxZQUFZLFFBQVEsZ0JBQWdCO0FBQzdDLFNBQVNDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2pFO0FBQ0EsT0FBT0MsSUFBSSxNQUFNLGtCQUFrQjtBQUNuQyxTQUFTQyxlQUFlLFFBQVEscUNBQXFDO0FBQ3JFLFNBQVNDLGNBQWMsUUFBUSxxQ0FBcUM7QUFDcEUsU0FBU0MsZUFBZSxRQUFRLHVDQUF1QztBQUN2RSxTQUFTQyxXQUFXLFFBQVEsZUFBZTs7QUF5QzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFVQSxJQUFNQyxvQkFBMEUsR0FBRztFQUNqRkMsT0FBTyxFQUFFO0lBQUVBLE9BQU8sRUFBRSxNQUFNO0lBQUVDLFFBQVEsRUFBRTtFQUFNLENBQUM7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
|
package/lib/hooks/useEvent.js
CHANGED
|
@@ -35,6 +35,10 @@ var CHAT_AI_EVENTS = {
|
|
|
35
35
|
aiChatAgentSelect: 'AI_CHAT_AGENTE_SELECTED',
|
|
36
36
|
aiChatSearchContextOpen: 'AI_CHAT_SEARCH_CONTEXT_OPEN',
|
|
37
37
|
aiChatSearchContextSelectResult: 'AI_CHAT_SEARCH_CONTEXT_SELECT_RESULT',
|
|
38
|
+
aiChatMentionOpen: 'AI_CHAT_MENTION_OPEN',
|
|
39
|
+
aiChatMentionTypeSwitch: 'AI_CHAT_MENTION_TYPE_SWITCH',
|
|
40
|
+
aiChatMentionSelect: 'AI_CHAT_MENTION_SELECT',
|
|
41
|
+
aiChatMentionRemove: 'AI_CHAT_MENTION_REMOVE',
|
|
38
42
|
aiChatBreadcrumbChange: 'AI_CHAT_BREADCRUMB_CHANGE',
|
|
39
43
|
aiChatFavorite: 'AI_CHAT_FAVORITE',
|
|
40
44
|
aiChatTools: 'AI_CHAT_TOOLS',
|
|
@@ -74,4 +78,4 @@ export var useEvent = function useEvent() {
|
|
|
74
78
|
}, []);
|
|
75
79
|
return triggerEvent;
|
|
76
80
|
};
|
|
77
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsImRpc3BhdGNoQW1wbGl0dWRlIiwidXNlVXNlciIsIlBST0pFQ1RfUkVTVU1FX0VWRU5UUyIsInByb2plY3RSZXN1bWVPcGVuIiwicHJvamVjdFJlc3VtZU9wZW5Db25maWd1cmUiLCJwcm9qZWN0UmVzdW1lQ29uZmlnQ2hhbmdlIiwicHJvamVjdFJlc3VtZUdlbmVyYXRlIiwicHJvamVjdFJlc3VtZUNsb3NlIiwicHJvamVjdFJlc3VtZUV4cGFuZCIsInByb2plY3RSZXN1bWVCYWNrVGVtcGxhdGVzIiwicHJvamVjdFJlc3VtZUZlZWRiYWNrIiwicHJvamVjdFJlc3VtZUNvcHkiLCJwcm9qZWN0UmVzdW1lR2VuZXJhdGlvbkNvbXBsZXRlIiwiQ0hBVF9BSV9FVkVOVFMiLCJwbUFpT3BlbiIsInBtQWlGcmVxdWVudFF1ZXN0aW9uIiwicG1BaVR5cGVkVGV4dCIsInBtQWlTZW5kUXVlc3Rpb24iLCJwbUFpT3BlbkNoYXRIaXN0b3J5IiwicG1BaU5ld0NvbnZlcnNhdGlvbiIsInBtQWlPcGVuQ29udmVyc2F0aW9uIiwicG1BaU9wZW5NZW51IiwicG1BaU1lbnVEZWxldGUiLCJwbUFpTWVudUVkaXQiLCJwbUFpQmFja0J1dHRvbiIsImFpQ2hhdEZhcSIsImFpQ2hhdFNlbmQiLCJhaUNoYXRSZXNwb25zZSIsImFpQ2hhdE9wZW5BZ2VudFNlbGVjdCIsImFpQ2hhdEFnZW50U2VsZWN0IiwiYWlDaGF0U2VhcmNoQ29udGV4dE9wZW4iLCJhaUNoYXRTZWFyY2hDb250ZXh0U2VsZWN0UmVzdWx0IiwiYWlDaGF0TWVudGlvbk9wZW4iLCJhaUNoYXRNZW50aW9uVHlwZVN3aXRjaCIsImFpQ2hhdE1lbnRpb25TZWxlY3QiLCJhaUNoYXRNZW50aW9uUmVtb3ZlIiwiYWlDaGF0QnJlYWRjcnVtYkNoYW5nZSIsImFpQ2hhdEZhdm9yaXRlIiwiYWlDaGF0VG9vbHMiLCJhaUNoYXRTdG9wUmVzcG9uc2UiLCJhaUNoYXRTZWxlY3RGQVEiLCJhaUNoYXRIaXRsIiwiYWlDaGF0SGl0bE9wdGlvbiIsImFpQ2hhdE1wT3BlbiIsImFpQ2hhdE1wU2VsZWN0QWdlbnQiLCJhaUNoYXRTdWdnZXN0ZWRBbnN3ZXIiLCJhaUNoYXRPcGVuVmlld09wdGlvbnMiLCJhaUNoYXRTZWxlY3RWaWV3T3B0aW9ucyIsImFpQ2hhdERyYWdnYWJsZSIsIkFCTV9BR0VOVF9FVkVOVFMiLCJvcGVuTW9kYWwiLCJjYW5jZWxNb2RhbCIsInRhYlNlY3Rpb24iLCJhZGRGaWxlIiwiY29uZmlybUFjdGlvbiIsImFjY2Vzc2liaWxpdHlUeXBlIiwiYWNjZXNzaWJpbGl0eVNlbGVjdENsaWVudCIsInNlbGVjdE1vZGVsIiwiY2hvb3NlTW9kZWwiLCJFVkVOVFMiLCJfb2JqZWN0U3ByZWFkIiwidXNlRXZlbnQiLCJfdXNlVXNlciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ1c2VySWQiLCJpZCIsInRyaWdnZXJFdmVudCIsImV2ZW50TmFtZSIsImFyZ3MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlRXZlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBkaXNwYXRjaEFtcGxpdHVkZSBmcm9tICdAcHJvamVjdGNvci9jb3ItY29tbW9ucy9saWIvdXRpbHMvZGlzcGF0Y2hBbXBsaXR1ZGUnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vY29udGV4dC9jb3ItdXNlcidcblxuY29uc3QgUFJPSkVDVF9SRVNVTUVfRVZFTlRTID0ge1xuICBwcm9qZWN0UmVzdW1lT3BlbjogJ1BST0pFQ1RfUkVTVU1FX09QRU4nLFxuICBwcm9qZWN0UmVzdW1lT3BlbkNvbmZpZ3VyZTogJ1BST0pFQ1RfUkVTVU1FX09QRU5fQ09ORklHVVJFJyxcbiAgcHJvamVjdFJlc3VtZUNvbmZpZ0NoYW5nZTogJ1BST0pFQ1RfUkVTVU1FX0NPTkZJR19DSEFOR0UnLFxuICBwcm9qZWN0UmVzdW1lR2VuZXJhdGU6ICdQUk9KRUNUX1JFU1VNRV9HRU5FUkFURScsXG4gIHByb2plY3RSZXN1bWVDbG9zZTogJ1BST0pFQ1RfUkVTVU1FX0NMT1NFJyxcbiAgcHJvamVjdFJlc3VtZUV4cGFuZDogJ1BST0pFQ1RfUkVTVU1FX0VYUEFORCcsXG4gIHByb2plY3RSZXN1bWVCYWNrVGVtcGxhdGVzOiAnUFJPSkVDVF9SRVNVTUVfQkFDS19URU1QTEFURVMnLFxuICBwcm9qZWN0UmVzdW1lRmVlZGJhY2s6ICdQUk9KRUNUX1JFU1VNRV9GRUVEQkFDSycsXG4gIHByb2plY3RSZXN1bWVDb3B5OiAnUFJPSkVDVF9SRVNVTUVfQ09QWScsXG4gIHByb2plY3RSZXN1bWVHZW5lcmF0aW9uQ29tcGxldGU6ICdQUk9KRUNUX1JFU1VNRV9HRU5FUkFUSU9OX0NPTVBMRVRFJyxcbn1cblxuY29uc3QgQ0hBVF9BSV9FVkVOVFMgPSB7XG4gIHBtQWlPcGVuOiAnUE1fQUlfT1BFTicsXG4gIHBtQWlGcmVxdWVudFF1ZXN0aW9uOiAnUE1fQUlfRlJFUVVFTlRfUVVFU1RJT04nLFxuICBwbUFpVHlwZWRUZXh0OiAnQUlfQ0hBVF9UWVBFRCcsXG4gIHBtQWlTZW5kUXVlc3Rpb246ICdQTV9BSV9TRU5EX1FVRVNUSU9OJyxcbiAgcG1BaU9wZW5DaGF0SGlzdG9yeTogJ1BNX0FJX09QRU5fQ0hBVF9ISVNUT1JZJyxcbiAgcG1BaU5ld0NvbnZlcnNhdGlvbjogJ1BNX0FJX05FV19DT05WRVJTQVRJT04nLFxuICBwbUFpT3BlbkNvbnZlcnNhdGlvbjogJ1BNX0FJX09QRU5fQ09OVkVSU0FUSU9OJyxcbiAgcG1BaU9wZW5NZW51OiAnUE1fQUlfT1BFTl9NRU5VJyxcbiAgcG1BaU1lbnVEZWxldGU6ICdQTV9BSV9NRU5VX0RFTEVURScsXG4gIHBtQWlNZW51RWRpdDogJ1BNX0FJX01FTlVfRURJVCcsXG4gIHBtQWlCYWNrQnV0dG9uOiAnUE1fQUlfQkFDS19CVVRUT04nLFxuICBhaUNoYXRGYXE6ICdBSV9DSEFUX0ZBUScsXG4gIGFpQ2hhdFNlbmQ6ICdBSV9DSEFUX1NFTkQnLFxuICBhaUNoYXRSZXNwb25zZTogJ0FJX0NIQVRfUkVTUE9OU0UnLFxuICBhaUNoYXRPcGVuQWdlbnRTZWxlY3Q6ICdBSV9DSEFUX09QRU5fQUdFTlRFX1NFTEVDVCcsXG4gIGFpQ2hhdEFnZW50U2VsZWN0OiAnQUlfQ0hBVF9BR0VOVEVfU0VMRUNURUQnLFxuICBhaUNoYXRTZWFyY2hDb250ZXh0T3BlbjogJ0FJX0NIQVRfU0VBUkNIX0NPTlRFWFRfT1BFTicsXG4gIGFpQ2hhdFNlYXJjaENvbnRleHRTZWxlY3RSZXN1bHQ6ICdBSV9DSEFUX1NFQVJDSF9DT05URVhUX1NFTEVDVF9SRVNVTFQnLFxuICBhaUNoYXRNZW50aW9uT3BlbjogJ0FJX0NIQVRfTUVOVElPTl9PUEVOJyxcbiAgYWlDaGF0TWVudGlvblR5cGVTd2l0Y2g6ICdBSV9DSEFUX01FTlRJT05fVFlQRV9TV0lUQ0gnLFxuICBhaUNoYXRNZW50aW9uU2VsZWN0OiAnQUlfQ0hBVF9NRU5USU9OX1NFTEVDVCcsXG4gIGFpQ2hhdE1lbnRpb25SZW1vdmU6ICdBSV9DSEFUX01FTlRJT05fUkVNT1ZFJyxcbiAgYWlDaGF0QnJlYWRjcnVtYkNoYW5nZTogJ0FJX0NIQVRfQlJFQURDUlVNQl9DSEFOR0UnLFxuICBhaUNoYXRGYXZvcml0ZTogJ0FJX0NIQVRfRkFWT1JJVEUnLFxuICBhaUNoYXRUb29sczogJ0FJX0NIQVRfVE9PTFMnLFxuICBhaUNoYXRTdG9wUmVzcG9uc2U6ICdBSV9DSEFUX1NUT1BfUkVTUE9OU0UnLFxuICBhaUNoYXRTZWxlY3RGQVE6ICdBSV9DSEFUX1NFTEVDVF9GQVEnLFxuICBhaUNoYXRIaXRsOiAnQUlfQ0hBVF9ISVRMJyxcbiAgYWlDaGF0SGl0bE9wdGlvbjogJ0FJX0NIQVRfSElUTF9PUFRJT04nLFxuICBhaUNoYXRNcE9wZW46ICdBSV9DSEFUX01QX09QRU4nLFxuICBhaUNoYXRNcFNlbGVjdEFnZW50OiAnQUlfQ0hBVF9NUF9TRUxFQ1RfQUdFTlQnLFxuICBhaUNoYXRTdWdnZXN0ZWRBbnN3ZXI6ICdBSV9DSEFUX1NVR0dFU1RFRF9BTlNXRVInLFxuICBhaUNoYXRPcGVuVmlld09wdGlvbnM6ICdBSV9DSEFUX09QRU5fVklFV19PUFRJT05TJyxcbiAgYWlDaGF0U2VsZWN0Vmlld09wdGlvbnM6ICdBSV9DSEFUX1NFTEVDVF9WSUVXX09QVElPTlMnLFxuICBhaUNoYXREcmFnZ2FibGU6ICdBSV9DSEFUX0RSQUdHQUJMRScsXG59XG5cbmNvbnN0IEFCTV9BR0VOVF9FVkVOVFMgPSB7XG4gIG9wZW5Nb2RhbDogJ0FJX0NIQVRfQUJNX0FDQ0VTUycsXG4gIGNhbmNlbE1vZGFsOiAnQUlfQ0hBVF9BQk1fQ0FOQ0VMJyxcbiAgdGFiU2VjdGlvbjogJ0FJX0NIQVRfQUJNX1NFQ1RJT04nLFxuICBhZGRGaWxlOiAnQUlfQ0hBVF9BQk1fU0VDVElPTicsXG4gIGNvbmZpcm1BY3Rpb246ICdBSV9DSEFUX0FCTV9DT05GSVJNJyxcbiAgZGVsZXRlOiAnQUlfQ0hBVF9BQk1fREVMRVRFX0FHRU5UJyxcbiAgYWNjZXNzaWJpbGl0eVR5cGU6ICdBSV9DSEFUX0FCTV9BQ0NFU1NJQklMSVRZX1RZUEUnLFxuICBhY2Nlc3NpYmlsaXR5U2VsZWN0Q2xpZW50OiAnQUlfQ0hBVF9BQk1fQUNDRVNTSUJJTElUWV9TRUxFQ1RfQ0xJRU5UJyxcbiAgc2VsZWN0TW9kZWw6ICdBSV9DSEFUX0FCTV9TRUxFQ1RfTU9ERUwnLFxuICBjaG9vc2VNb2RlbDogJ0FJX0NIQVRfQUJNX0NIT09TRV9NT0RFTCcsXG59XG5leHBvcnQgY29uc3QgRVZFTlRTID0ge1xuICAuLi5QUk9KRUNUX1JFU1VNRV9FVkVOVFMsXG4gIC4uLkNIQVRfQUlfRVZFTlRTLFxuICAuLi5BQk1fQUdFTlRfRVZFTlRTLFxufVxuXG5leHBvcnQgdHlwZSBFdmVudE5hbWUgPSAodHlwZW9mIEVWRU5UUylba2V5b2YgdHlwZW9mIEVWRU5UU11cblxuZXhwb3J0IGNvbnN0IHVzZUV2ZW50ID0gKCkgPT4ge1xuICBjb25zdCB7IGNvbXBhbnlfaWQ6IGNvbXBhbnlJZCwgaWQ6IHVzZXJJZCB9ID0gdXNlVXNlcigpXG5cbiAgY29uc3QgdHJpZ2dlckV2ZW50ID0gdXNlQ2FsbGJhY2soPEV2ZW50QXJncz4oZXZlbnROYW1lOiBFdmVudE5hbWUsIGFyZ3M/OiBFdmVudEFyZ3MpID0+IHtcbiAgICBkaXNwYXRjaEFtcGxpdHVkZShldmVudE5hbWUsIGNvbXBhbnlJZCwge1xuICAgICAgY29tcGFueUlkLFxuICAgICAgdXNlcklkLFxuICAgICAgLi4uYXJncyxcbiAgICB9KVxuICB9LCBbXSlcblxuICByZXR1cm4gdHJpZ2dlckV2ZW50XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLFdBQVcsUUFBUSxPQUFPO0FBQ25DLE9BQU9DLGlCQUFpQixNQUFNLHFEQUFxRDtBQUNuRixTQUFTQyxPQUFPLFFBQVEscUJBQXFCO0FBRTdDLElBQU1DLHFCQUFxQixHQUFHO0VBQzVCQyxpQkFBaUIsRUFBRSxxQkFBcUI7RUFDeENDLDBCQUEwQixFQUFFLCtCQUErQjtFQUMzREMseUJBQXlCLEVBQUUsOEJBQThCO0VBQ3pEQyxxQkFBcUIsRUFBRSx5QkFBeUI7RUFDaERDLGtCQUFrQixFQUFFLHNCQUFzQjtFQUMxQ0MsbUJBQW1CLEVBQUUsdUJBQXVCO0VBQzVDQywwQkFBMEIsRUFBRSwrQkFBK0I7RUFDM0RDLHFCQUFxQixFQUFFLHlCQUF5QjtFQUNoREMsaUJBQWlCLEVBQUUscUJBQXFCO0VBQ3hDQywrQkFBK0IsRUFBRTtBQUNuQyxDQUFDO0FBRUQsSUFBTUMsY0FBYyxHQUFHO0VBQ3JCQyxRQUFRLEVBQUUsWUFBWTtFQUN0QkMsb0JBQW9CLEVBQUUseUJBQXlCO0VBQy9DQyxhQUFhLEVBQUUsZUFBZTtFQUM5QkMsZ0JBQWdCLEVBQUUscUJBQXFCO0VBQ3ZDQyxtQkFBbUIsRUFBRSx5QkFBeUI7RUFDOUNDLG1CQUFtQixFQUFFLHdCQUF3QjtFQUM3Q0Msb0JBQW9CLEVBQUUseUJBQXlCO0VBQy9DQyxZQUFZLEVBQUUsaUJBQWlCO0VBQy9CQyxjQUFjLEVBQUUsbUJBQW1CO0VBQ25DQyxZQUFZLEVBQUUsaUJBQWlCO0VBQy9CQyxjQUFjLEVBQUUsbUJBQW1CO0VBQ25DQyxTQUFTLEVBQUUsYUFBYTtFQUN4QkMsVUFBVSxFQUFFLGNBQWM7RUFDMUJDLGNBQWMsRUFBRSxrQkFBa0I7RUFDbENDLHFCQUFxQixFQUFFLDRCQUE0QjtFQUNuREMsaUJBQWlCLEVBQUUseUJBQXlCO0VBQzVDQyx1QkFBdUIsRUFBRSw2QkFBNkI7RUFDdERDLCtCQUErQixFQUFFLHNDQUFzQztFQUN2RUMsaUJBQWlCLEVBQUUsc0JBQXNCO0VBQ3pDQyx1QkFBdUIsRUFBRSw2QkFBNkI7RUFDdERDLG1CQUFtQixFQUFFLHdCQUF3QjtFQUM3Q0MsbUJBQW1CLEVBQUUsd0JBQXdCO0VBQzdDQyxzQkFBc0IsRUFBRSwyQkFBMkI7RUFDbkRDLGNBQWMsRUFBRSxrQkFBa0I7RUFDbENDLFdBQVcsRUFBRSxlQUFlO0VBQzVCQyxrQkFBa0IsRUFBRSx1QkFBdUI7RUFDM0NDLGVBQWUsRUFBRSxvQkFBb0I7RUFDckNDLFVBQVUsRUFBRSxjQUFjO0VBQzFCQyxnQkFBZ0IsRUFBRSxxQkFBcUI7RUFDdkNDLFlBQVksRUFBRSxpQkFBaUI7RUFDL0JDLG1CQUFtQixFQUFFLHlCQUF5QjtFQUM5Q0MscUJBQXFCLEVBQUUsMEJBQTBCO0VBQ2pEQyxxQkFBcUIsRUFBRSwyQkFBMkI7RUFDbERDLHVCQUF1QixFQUFFLDZCQUE2QjtFQUN0REMsZUFBZSxFQUFFO0FBQ25CLENBQUM7QUFFRCxJQUFNQyxnQkFBZ0IsR0FBRztFQUN2QkMsU0FBUyxFQUFFLG9CQUFvQjtFQUMvQkMsV0FBVyxFQUFFLG9CQUFvQjtFQUNqQ0MsVUFBVSxFQUFFLHFCQUFxQjtFQUNqQ0MsT0FBTyxFQUFFLHFCQUFxQjtFQUM5QkMsYUFBYSxFQUFFLHFCQUFxQjtFQUNwQyxVQUFRLDBCQUEwQjtFQUNsQ0MsaUJBQWlCLEVBQUUsZ0NBQWdDO0VBQ25EQyx5QkFBeUIsRUFBRSx5Q0FBeUM7RUFDcEVDLFdBQVcsRUFBRSwwQkFBMEI7RUFDdkNDLFdBQVcsRUFBRTtBQUNmLENBQUM7QUFDRCxPQUFPLElBQU1DLE1BQU0sR0FBQUMsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDZDFELHFCQUFxQixHQUNyQlcsY0FBYyxHQUNkb0MsZ0JBQWdCLENBQ3BCO0FBSUQsT0FBTyxJQUFNWSxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBQSxFQUFTO0VBQzVCLElBQUFDLFFBQUEsR0FBOEM3RCxPQUFPLENBQUMsQ0FBQztJQUFuQzhELFNBQVMsR0FBQUQsUUFBQSxDQUFyQkUsVUFBVTtJQUFpQkMsTUFBTSxHQUFBSCxRQUFBLENBQVZJLEVBQUU7RUFFakMsSUFBTUMsWUFBWSxHQUFHcEUsV0FBVyxDQUFDLFVBQVlxRSxTQUFvQixFQUFFQyxJQUFnQixFQUFLO0lBQ3RGckUsaUJBQWlCLENBQUNvRSxTQUFTLEVBQUVMLFNBQVMsRUFBQUgsYUFBQTtNQUNwQ0csU0FBUyxFQUFUQSxTQUFTO01BQ1RFLE1BQU0sRUFBTkE7SUFBTSxHQUNISSxJQUFJLENBQ1IsQ0FBQztFQUNKLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixPQUFPRixZQUFZO0FBQ3JCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { useGlobalContext } from '../context/global-context';
|
|
4
|
+
var ALL_TYPES = ['client', 'project', 'task', 'user'];
|
|
5
|
+
var COR_READ_SLUG_TO_TYPE = {
|
|
6
|
+
clients_read: 'client',
|
|
7
|
+
client_read: 'client',
|
|
8
|
+
projects_read: 'project',
|
|
9
|
+
project_read: 'project',
|
|
10
|
+
tasks_read: 'task',
|
|
11
|
+
task_read: 'task'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Deriva del agent activo qué tabs del context mention deben estar disponibles.
|
|
16
|
+
*
|
|
17
|
+
* Reglas actuales (hasta que exista agent.actions):
|
|
18
|
+
* - agent.entity === 'project' → [task, user] (ya está en contexto de un project)
|
|
19
|
+
* - agent.entity === 'client' → [project, task, user] (ya está en contexto de un client)
|
|
20
|
+
* - agent.entity === 'global' → todas
|
|
21
|
+
* - agent.type === 'custom' → todas (hasta habilitar agent.actions por agente)
|
|
22
|
+
* - sin agent → todas
|
|
23
|
+
*
|
|
24
|
+
* El `override` (prop `enabledTypes` del componente consumidor) siempre gana.
|
|
25
|
+
*/
|
|
26
|
+
export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
|
|
27
|
+
var _useGlobalContext = useGlobalContext(),
|
|
28
|
+
agent = _useGlobalContext.agent;
|
|
29
|
+
return useMemo(function () {
|
|
30
|
+
var _agent$connectors, _corConnector$slugs, _agent$connectors$fin, _agent$connectors2, _allowedTypes$;
|
|
31
|
+
if (override && override.length > 0) {
|
|
32
|
+
var defaultType = override[0];
|
|
33
|
+
return {
|
|
34
|
+
allowedTypes: override,
|
|
35
|
+
defaultType: defaultType
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var allowedTypes = ALL_TYPES;
|
|
39
|
+
if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'project') {
|
|
40
|
+
allowedTypes = ['task', 'user'];
|
|
41
|
+
} else if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'client') {
|
|
42
|
+
allowedTypes = ['project', 'task', 'user'];
|
|
43
|
+
}
|
|
44
|
+
var corConnector = agent === null || agent === void 0 || (_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.find(function (connector) {
|
|
45
|
+
return connector.group === 'COR';
|
|
46
|
+
});
|
|
47
|
+
var allowedByConnectors = new Set(((_corConnector$slugs = corConnector === null || corConnector === void 0 ? void 0 : corConnector.slugs) !== null && _corConnector$slugs !== void 0 ? _corConnector$slugs : []).map(function (slug) {
|
|
48
|
+
return COR_READ_SLUG_TO_TYPE[slug];
|
|
49
|
+
}).filter(function (type) {
|
|
50
|
+
return !!type;
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
// Si el agente trae conectores COR, habilitar client/project/task solo cuando existe *_read.
|
|
54
|
+
// El tipo "user" mantiene su comportamiento actual (según entity) porque no depende de estos slugs.
|
|
55
|
+
if (corConnector) {
|
|
56
|
+
allowedTypes = allowedTypes.filter(function (type) {
|
|
57
|
+
return type === 'user' || allowedByConnectors.has(type);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// `user` sólo se habilita junto con `task`.
|
|
62
|
+
if (!allowedTypes.includes('task')) {
|
|
63
|
+
allowedTypes = allowedTypes.filter(function (type) {
|
|
64
|
+
return type !== 'user';
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
var mcpSlugs = (_agent$connectors$fin = agent === null || agent === void 0 || (_agent$connectors2 = agent.connectors) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.find(function (connector) {
|
|
68
|
+
return connector.group === 'MCP';
|
|
69
|
+
})) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.slugs) === null || _agent$connectors2 === void 0 ? void 0 : _agent$connectors2.filter(function (slug) {
|
|
70
|
+
return typeof slug === 'string' && slug.trim().length > 0;
|
|
71
|
+
})) !== null && _agent$connectors$fin !== void 0 ? _agent$connectors$fin : [];
|
|
72
|
+
if (mcpSlugs.length > 0) {
|
|
73
|
+
allowedTypes = [].concat(_toConsumableArray(allowedTypes), ['mcp']);
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
allowedTypes: allowedTypes,
|
|
77
|
+
defaultType: (_allowedTypes$ = allowedTypes[0]) !== null && _allowedTypes$ !== void 0 ? _allowedTypes$ : 'user'
|
|
78
|
+
};
|
|
79
|
+
}, [agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.connectors, override]);
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsIkFMTF9UWVBFUyIsIkNPUl9SRUFEX1NMVUdfVE9fVFlQRSIsImNsaWVudHNfcmVhZCIsImNsaWVudF9yZWFkIiwicHJvamVjdHNfcmVhZCIsInByb2plY3RfcmVhZCIsInRhc2tzX3JlYWQiLCJ0YXNrX3JlYWQiLCJ1c2VNZW50aW9uQWxsb3dlZFR5cGVzIiwib3ZlcnJpZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50IiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfY29yQ29ubmVjdG9yJHNsdWdzIiwiX2FnZW50JGNvbm5lY3RvcnMkZmluIiwiX2FnZW50JGNvbm5lY3RvcnMyIiwiX2FsbG93ZWRUeXBlcyQiLCJsZW5ndGgiLCJkZWZhdWx0VHlwZSIsImFsbG93ZWRUeXBlcyIsImVudGl0eSIsImNvckNvbm5lY3RvciIsImNvbm5lY3RvcnMiLCJmaW5kIiwiY29ubmVjdG9yIiwiZ3JvdXAiLCJhbGxvd2VkQnlDb25uZWN0b3JzIiwiU2V0Iiwic2x1Z3MiLCJtYXAiLCJzbHVnIiwiZmlsdGVyIiwidHlwZSIsImhhcyIsImluY2x1ZGVzIiwibWNwU2x1Z3MiLCJ0cmltIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5jb25zdCBBTExfVFlQRVM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snLCAndXNlciddXG5cbmNvbnN0IENPUl9SRUFEX1NMVUdfVE9fVFlQRTogUmVjb3JkPHN0cmluZywgRXh0cmFjdDxDb250ZXh0RW50aXR5VHlwZSwgJ2NsaWVudCcgfCAncHJvamVjdCcgfCAndGFzayc+PiA9IHtcbiAgY2xpZW50c19yZWFkOiAnY2xpZW50JyxcbiAgY2xpZW50X3JlYWQ6ICdjbGllbnQnLFxuICBwcm9qZWN0c19yZWFkOiAncHJvamVjdCcsXG4gIHByb2plY3RfcmVhZDogJ3Byb2plY3QnLFxuICB0YXNrc19yZWFkOiAndGFzaycsXG4gIHRhc2tfcmVhZDogJ3Rhc2snLFxufVxuXG4vKipcbiAqIERlcml2YSBkZWwgYWdlbnQgYWN0aXZvIHF1w6kgdGFicyBkZWwgY29udGV4dCBtZW50aW9uIGRlYmVuIGVzdGFyIGRpc3BvbmlibGVzLlxuICpcbiAqIFJlZ2xhcyBhY3R1YWxlcyAoaGFzdGEgcXVlIGV4aXN0YSBhZ2VudC5hY3Rpb25zKTpcbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdwcm9qZWN0JyDihpIgW3Rhc2ssIHVzZXJdICAgICAgICAgICAgKHlhIGVzdMOhIGVuIGNvbnRleHRvIGRlIHVuIHByb2plY3QpXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAnY2xpZW50JyAg4oaSIFtwcm9qZWN0LCB0YXNrLCB1c2VyXSAgICh5YSBlc3TDoSBlbiBjb250ZXh0byBkZSB1biBjbGllbnQpXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAnZ2xvYmFsJyAg4oaSIHRvZGFzXG4gKiAgIC0gYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgICAg4oaSIHRvZGFzIChoYXN0YSBoYWJpbGl0YXIgYWdlbnQuYWN0aW9ucyBwb3IgYWdlbnRlKVxuICogICAtIHNpbiBhZ2VudCAgICAgICAgICAgICAgICAgIOKGkiB0b2Rhc1xuICpcbiAqIEVsIGBvdmVycmlkZWAgKHByb3AgYGVuYWJsZWRUeXBlc2AgZGVsIGNvbXBvbmVudGUgY29uc3VtaWRvcikgc2llbXByZSBnYW5hLlxuICovXG5leHBvcnQgY29uc3QgdXNlTWVudGlvbkFsbG93ZWRUeXBlcyA9IChvdmVycmlkZT86IENvbnRleHRFbnRpdHlUeXBlW10pID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChvdmVycmlkZSAmJiBvdmVycmlkZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZWZhdWx0VHlwZSA9IG92ZXJyaWRlWzBdXG4gICAgICByZXR1cm4geyBhbGxvd2VkVHlwZXM6IG92ZXJyaWRlLCBkZWZhdWx0VHlwZSB9XG4gICAgfVxuXG4gICAgbGV0IGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSA9IEFMTF9UWVBFU1xuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWyd0YXNrJywgJ3VzZXInXVxuICAgIH0gZWxzZSBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IFsncHJvamVjdCcsICd0YXNrJywgJ3VzZXInXVxuICAgIH1cblxuICAgIGNvbnN0IGNvckNvbm5lY3RvciA9IGFnZW50Py5jb25uZWN0b3JzPy5maW5kKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuZ3JvdXAgPT09ICdDT1InKVxuICAgIGNvbnN0IGFsbG93ZWRCeUNvbm5lY3RvcnMgPSBuZXcgU2V0PENvbnRleHRFbnRpdHlUeXBlPihcbiAgICAgIChjb3JDb25uZWN0b3I/LnNsdWdzID8/IFtdKVxuICAgICAgICAubWFwKHNsdWcgPT4gQ09SX1JFQURfU0xVR19UT19UWVBFW3NsdWddKVxuICAgICAgICAuZmlsdGVyKCh0eXBlKTogdHlwZSBpcyBFeHRyYWN0PENvbnRleHRFbnRpdHlUeXBlLCAnY2xpZW50JyB8ICdwcm9qZWN0JyB8ICd0YXNrJz4gPT4gISF0eXBlKVxuICAgIClcblxuICAgIC8vIFNpIGVsIGFnZW50ZSB0cmFlIGNvbmVjdG9yZXMgQ09SLCBoYWJpbGl0YXIgY2xpZW50L3Byb2plY3QvdGFzayBzb2xvIGN1YW5kbyBleGlzdGUgKl9yZWFkLlxuICAgIC8vIEVsIHRpcG8gXCJ1c2VyXCIgbWFudGllbmUgc3UgY29tcG9ydGFtaWVudG8gYWN0dWFsIChzZWfDum4gZW50aXR5KSBwb3JxdWUgbm8gZGVwZW5kZSBkZSBlc3RvcyBzbHVncy5cbiAgICBpZiAoY29yQ29ubmVjdG9yKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBhbGxvd2VkVHlwZXMuZmlsdGVyKHR5cGUgPT4gdHlwZSA9PT0gJ3VzZXInIHx8IGFsbG93ZWRCeUNvbm5lY3RvcnMuaGFzKHR5cGUpKVxuICAgIH1cblxuICAgIC8vIGB1c2VyYCBzw7NsbyBzZSBoYWJpbGl0YSBqdW50byBjb24gYHRhc2tgLlxuICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKCd0YXNrJykpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IGFsbG93ZWRUeXBlcy5maWx0ZXIodHlwZSA9PiB0eXBlICE9PSAndXNlcicpXG4gICAgfVxuXG4gICAgY29uc3QgbWNwU2x1Z3MgPVxuICAgICAgYWdlbnQ/LmNvbm5lY3RvcnNcbiAgICAgICAgPy5maW5kKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuZ3JvdXAgPT09ICdNQ1AnKVxuICAgICAgICA/LnNsdWdzPy5maWx0ZXIoKHNsdWcpOiBzbHVnIGlzIHN0cmluZyA9PiB0eXBlb2Ygc2x1ZyA9PT0gJ3N0cmluZycgJiYgc2x1Zy50cmltKCkubGVuZ3RoID4gMCkgPz8gW11cbiAgICBpZiAobWNwU2x1Z3MubGVuZ3RoID4gMCkge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWy4uLmFsbG93ZWRUeXBlcywgJ21jcCddXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbG93ZWRUeXBlcyxcbiAgICAgIGRlZmF1bHRUeXBlOiBhbGxvd2VkVHlwZXNbMF0gPz8gJ3VzZXInLFxuICAgIH1cbiAgfSwgW2FnZW50Py5lbnRpdHksIGFnZW50Py5jb25uZWN0b3JzLCBvdmVycmlkZV0pXG59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
|